@raegent/earshot 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +1072 -196
- package/dist/main.js.map +13 -9
- package/package.json +1 -1
package/dist/main.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../core/src/context/agents-md.ts", "../../providers/src/auth.ts", "../../providers/src/paths.ts", "../../providers/src/catalog/supported.ts", "../../providers/src/catalog/index.ts", "../../providers/src/registry.ts", "../../providers/src/wire/adapters.ts", "../../providers/src/errors.ts", "../../providers/src/wire/ai-sdk-prompt.ts", "../../providers/src/wire/ai-sdk.ts", "../../providers/src/wire/ollama.ts", "../../providers/src/builtin.ts", "../../providers/src/oauth/loopback.ts", "../../providers/src/oauth/openrouter.ts", "../../providers/src/oauth/pkce.ts", "../../core/src/context/shapers.ts", "../../core/src/context/compaction.ts", "../../core/src/context/system-prompt.ts", "../../core/src/memory/store.ts", "../../core/src/model.ts", "../../core/src/tools/fs-paths.ts", "../../core/src/tools/glob-match.ts", "../../core/src/permissions/rules.ts", "../../core/src/permissions/engine.ts", "../../core/src/permissions/settings.ts", "../../core/src/plan/index.ts", "../../core/src/scope/contract.ts", "../../core/src/skills/discover.ts", "../../core/src/skills/frontmatter.ts", "../../core/src/tools/types.ts", "../../core/src/tools/schema.ts", "../../core/src/tools/ask-user.ts", "../../core/src/tools/bash.ts", "../../core/src/tools/exec.ts", "../../core/src/tools/shell.ts", "../../core/src/tools/declare-scope.ts", "../../core/src/tools/edit.ts", "../../core/src/tools/diff.ts", "../../core/src/tools/glob.ts", "../../core/src/tools/walk.ts", "../../core/src/tools/grep.ts", "../../core/src/tools/ls.ts", "../../core/src/tools/read.ts", "../../core/src/tools/task.ts", "../../core/src/tools/todo.ts", "../../core/src/tools/web-fetch.ts", "../../core/src/tools/write.ts", "../../core/src/tools/jobs.ts", "../../core/src/tools/skill.ts", "../../core/src/tools/tool-search.ts", "../../core/src/tools/index.ts", "../../core/src/verify/detect.ts", "../../core/src/verify/run.ts", "../../core/src/agent.ts", "../../core/src/hooks/config.ts", "../../core/src/hooks/run.ts", "../../core/src/hooks/runner.ts", "../../core/src/memory/detect.ts", "../../core/src/undo/shadow-git.ts", "../../core/src/session/store.ts", "../../core/src/version.ts", "../../core/src/session/repair.ts", "../../core/src/session/create.ts", "../src/args.ts", "../../acp/src/events.ts", "../../acp/src/server.ts", "../src/extensions/index.ts", "../../mcp/src/client.ts", "../../mcp/src/config.ts", "../../mcp/src/tool.ts", "../../mcp/src/manager.ts", "../src/extensions/modules.ts", "../src/commands/acp.ts", "../src/commands/auth.ts", "../src/commands/doctor.ts", "../src/commands/extensions.ts", "../src/budget.ts", "../src/image.ts", "../src/output.ts", "../src/commands/headless.ts", "../../tui/src/app.tsx", "../../tui/src/components/
|
|
3
|
+
"sources": ["../../core/src/context/agents-md.ts", "../../providers/src/auth.ts", "../../providers/src/paths.ts", "../../providers/src/catalog/supported.ts", "../../providers/src/catalog/index.ts", "../../providers/src/registry.ts", "../../providers/src/wire/adapters.ts", "../../providers/src/errors.ts", "../../providers/src/wire/ai-sdk-prompt.ts", "../../providers/src/wire/ai-sdk.ts", "../../providers/src/wire/ollama.ts", "../../providers/src/builtin.ts", "../../providers/src/oauth/loopback.ts", "../../providers/src/oauth/openrouter.ts", "../../providers/src/oauth/pkce.ts", "../../core/src/context/shapers.ts", "../../core/src/context/compaction.ts", "../../core/src/context/system-prompt.ts", "../../core/src/memory/store.ts", "../../core/src/model.ts", "../../core/src/tools/fs-paths.ts", "../../core/src/tools/glob-match.ts", "../../core/src/permissions/rules.ts", "../../core/src/permissions/engine.ts", "../../core/src/permissions/settings.ts", "../../core/src/plan/index.ts", "../../core/src/scope/contract.ts", "../../core/src/skills/discover.ts", "../../core/src/skills/frontmatter.ts", "../../core/src/tools/types.ts", "../../core/src/tools/schema.ts", "../../core/src/tools/ask-user.ts", "../../core/src/tools/bash.ts", "../../core/src/tools/exec.ts", "../../core/src/tools/shell.ts", "../../core/src/tools/declare-scope.ts", "../../core/src/tools/edit.ts", "../../core/src/tools/diff.ts", "../../core/src/tools/glob.ts", "../../core/src/tools/walk.ts", "../../core/src/tools/grep.ts", "../../core/src/tools/ls.ts", "../../core/src/tools/read.ts", "../../core/src/tools/task.ts", "../../core/src/tools/todo.ts", "../../core/src/tools/web-fetch.ts", "../../core/src/tools/write.ts", "../../core/src/tools/jobs.ts", "../../core/src/tools/skill.ts", "../../core/src/tools/tool-search.ts", "../../core/src/tools/index.ts", "../../core/src/verify/detect.ts", "../../core/src/verify/run.ts", "../../core/src/agent.ts", "../../core/src/hooks/config.ts", "../../core/src/hooks/run.ts", "../../core/src/hooks/runner.ts", "../../core/src/memory/detect.ts", "../../core/src/undo/shadow-git.ts", "../../core/src/session/store.ts", "../../core/src/version.ts", "../../core/src/session/repair.ts", "../../core/src/session/create.ts", "../src/args.ts", "../../acp/src/events.ts", "../../acp/src/server.ts", "../src/extensions/index.ts", "../../mcp/src/client.ts", "../../mcp/src/config.ts", "../../mcp/src/tool.ts", "../../mcp/src/manager.ts", "../src/extensions/modules.ts", "../src/commands/acp.ts", "../src/commands/auth.ts", "../src/commands/doctor.ts", "../src/commands/extensions.ts", "../src/budget.ts", "../src/image.ts", "../src/output.ts", "../src/commands/headless.ts", "../../tui/src/app.tsx", "../../tui/src/commands.ts", "../../tui/src/components/command-menu.tsx", "../../tui/src/theme.ts", "../../tui/src/components/markdown.tsx", "../../tui/src/components/memory-capture.tsx", "../../tui/src/components/permission.tsx", "../../tui/src/components/diff.tsx", "../../tui/src/components/question.tsx", "../../tui/src/components/text-input.tsx", "../../tui/src/components/status.tsx", "../../tui/src/components/tool-block.tsx", "../../tui/src/onboarding.tsx", "../../tui/src/run.tsx", "../src/onboard.ts", "../src/commands/interactive.ts", "../src/commands/mcp.ts", "../src/commands/models.ts", "../src/index.ts", "../src/main.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { readFile, stat } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { dirname, join, parse, relative, sep } from 'node:path';\nimport { configDir } from '@earshot/providers';\n\n/** Checked in each directory, in order. The first that exists in a directory wins. */\nexport const MEMORY_FILENAMES = ['AGENTS.md', 'CLAUDE.md'];\n\nexport interface MemoryFile {\n path: string;\n content: string;\n /** `user` for the one in the config directory, `project` for the rest. */\n scope: 'user' | 'project';\n}\n\nasync function readIfPresent(path: string): Promise<string | undefined> {\n const info = await stat(path).catch(() => undefined);\n if (!info?.isFile()) return undefined;\n const content = await readFile(path, 'utf8').catch(() => undefined);\n return content?.trim() === '' ? undefined : content;\n}\n\nasync function readDirectory(dir: string): Promise<{ path: string; content: string } | undefined> {\n for (const name of MEMORY_FILENAMES) {\n const path = join(dir, name);\n const content = await readIfPresent(path);\n // AGENTS.md wins over CLAUDE.md in the same directory rather than both being\n // loaded: a project that has both almost always has one as a pointer to the\n // other, and concatenating them duplicates every instruction.\n if (content !== undefined) return { path, content };\n }\n return undefined;\n}\n\n/** Where the walk upward stops: a repository root, or the filesystem root. */\nasync function isBoundary(dir: string): Promise<boolean> {\n return (await stat(join(dir, '.git')).catch(() => undefined)) !== undefined;\n}\n\n/**\n * Collects instruction files from the config directory and from every directory\n * between the repository root and `cwd`.\n *\n * Ordered outermost-first so the nearest file is read last. Nothing here resolves\n * a conflict between two files: they are concatenated, and a model reading two\n * instructions on the same subject takes the later one. Making \"nearest wins\"\n * mechanical would mean parsing prose, which is not something to get subtly wrong.\n */\nexport async function loadMemoryFiles(cwd: string): Promise<MemoryFile[]> {\n const files: MemoryFile[] = [];\n\n const global = await readDirectory(configDir());\n if (global) files.push({ ...global, scope: 'user' });\n\n const chain: string[] = [];\n let dir = cwd;\n const home = homedir();\n const { root } = parse(cwd);\n\n while (true) {\n chain.push(dir);\n if (await isBoundary(dir)) break;\n // Never walks past the home directory: above it the files belong to other\n // projects, or to no project at all.\n if (dir === root || dir === home) break;\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n\n for (const directory of chain.reverse()) {\n const found = await readDirectory(directory);\n if (found) files.push({ ...found, scope: 'project' });\n }\n return files;\n}\n\n/** Renders loaded files into the system prompt, each labelled with its path. */\nexport function renderMemory(files: MemoryFile[], cwd: string): string {\n if (files.length === 0) return '';\n const sections = files.map((file) => {\n const label = file.scope === 'user' ? file.path : displayRelative(cwd, file.path);\n return `<memory path=\"${label}\">\\n${file.content.trim()}\\n</memory>`;\n });\n return (\n 'Instructions from the user and this project. They take precedence over your ' +\n 'defaults. Where two conflict, the later one is nearer to the working directory ' +\n `and wins.\\n\\n${sections.join('\\n\\n')}`\n );\n}\n\nfunction displayRelative(cwd: string, path: string): string {\n const rel = relative(cwd, path);\n return rel.startsWith('..') ? path : rel.split(sep).join('/');\n}\n",
|
|
6
6
|
"import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport { authFile } from './paths.ts';\nimport type { AuthSpec, Credentials, Provider } from './types.ts';\n\ntype AuthFileShape = { version: 1; providers: Record<string, Credentials> };\n\n/**\n * Credential store. On-disk file is 0600 and written atomically; OAuth refreshes\n * take a lock file so two concurrent earshot processes cannot clobber each other.\n */\nexport class AuthStore {\n #path: string;\n #cache: AuthFileShape | undefined;\n\n constructor(path = authFile()) {\n this.#path = path;\n }\n\n async #load(): Promise<AuthFileShape> {\n if (this.#cache) return this.#cache;\n try {\n const raw = await readFile(this.#path, 'utf8');\n const parsed = JSON.parse(raw) as AuthFileShape;\n this.#cache = parsed.providers ? parsed : { version: 1, providers: {} };\n } catch {\n this.#cache = { version: 1, providers: {} };\n }\n return this.#cache;\n }\n\n async get(providerId: string): Promise<Credentials | undefined> {\n return (await this.#load()).providers[providerId];\n }\n\n async set(providerId: string, creds: Credentials): Promise<void> {\n const data = await this.#load();\n data.providers[providerId] = creds;\n await this.#flush(data);\n }\n\n async remove(providerId: string): Promise<void> {\n const data = await this.#load();\n delete data.providers[providerId];\n await this.#flush(data);\n }\n\n async #flush(data: AuthFileShape): Promise<void> {\n await mkdir(dirname(this.#path), { recursive: true, mode: 0o700 });\n const tmp = `${this.#path}.${process.pid}.tmp`;\n await writeFile(tmp, `${JSON.stringify(data, null, 2)}\\n`, { mode: 0o600 });\n await rename(tmp, this.#path);\n this.#cache = data;\n }\n}\n\nexport interface ResolveAuthOptions {\n /** From `--api-key` or equivalent; highest precedence. */\n cliApiKey?: string;\n env?: NodeJS.ProcessEnv;\n store?: AuthStore;\n}\n\n/**\n * Resolution order (plan §Auth resolution):\n * CLI flag -> env var -> auth.json -> provider-native ambient credentials.\n */\nexport async function resolveCredentials(\n provider: Provider,\n opts: ResolveAuthOptions = {},\n): Promise<Credentials | undefined> {\n const env = opts.env ?? process.env;\n if (opts.cliApiKey) return { type: 'api-key', apiKey: opts.cliApiKey };\n\n for (const name of envVarsOf(provider.auth)) {\n const value = env[name];\n if (value) return { type: 'api-key', apiKey: value };\n }\n\n const stored = await (opts.store ?? new AuthStore()).get(provider.id);\n if (stored) return stored;\n\n if (provider.auth.kind === 'ambient' || provider.auth.kind === 'none') {\n return { type: 'ambient' };\n }\n return undefined;\n}\n\nfunction envVarsOf(auth: AuthSpec): string[] {\n return 'envVars' in auth && auth.envVars ? auth.envVars : [];\n}\n",
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
"import type { ToolDefinition } from '@earshot/providers';\nimport { askUserTool } from './ask-user.ts';\nimport { bashOutputTool, bashTool } from './bash.ts';\nimport { declareScopeTool } from './declare-scope.ts';\nimport { editTool, multiEditTool } from './edit.ts';\nimport { globTool } from './glob.ts';\nimport { grepTool } from './grep.ts';\nimport { lsTool } from './ls.ts';\nimport { readTool } from './read.ts';\nimport { taskTool } from './task.ts';\nimport { todoTool } from './todo.ts';\nimport type { Tool } from './types.ts';\nimport { webFetchTool } from './web-fetch.ts';\nimport { writeTool } from './write.ts';\n\nexport * from './diff.ts';\nexport { applyEdits } from './edit.ts';\nexport * from './exec.ts';\nexport * from './fs-paths.ts';\nexport * from './glob-match.ts';\nexport * from './jobs.ts';\nexport * from './schema.ts';\nexport * from './shell.ts';\nexport { skillTool } from './skill.ts';\nexport * from './task.ts';\nexport * from './todo.ts';\nexport * from './tool-search.ts';\nexport * from './types.ts';\nexport * from './walk.ts';\nexport { htmlToText } from './web-fetch.ts';\n\n/**\n * Order matters only for how the model reads the list, and reading tools first is\n * the order we want it to work in: look before you change anything.\n */\nexport const BUILTIN_TOOLS: Tool<never>[] = [\n readTool,\n lsTool,\n globTool,\n grepTool,\n editTool,\n multiEditTool,\n writeTool,\n bashTool,\n bashOutputTool,\n webFetchTool,\n askUserTool,\n todoTool,\n declareScopeTool,\n taskTool,\n] as unknown as Tool<never>[];\n\nexport class ToolRegistry {\n private readonly tools = new Map<string, Tool<never>>();\n\n constructor(tools: Iterable<Tool<never>> = BUILTIN_TOOLS) {\n for (const tool of tools) this.add(tool);\n }\n\n add(tool: Tool<never>): void {\n if (this.tools.has(tool.name)) throw new Error(`duplicate tool \"${tool.name}\"`);\n this.tools.set(tool.name, tool);\n }\n\n get(name: string): Tool<never> | undefined {\n return this.tools.get(name);\n }\n\n list(): Tool<never>[] {\n return [...this.tools.values()];\n }\n\n /** Only the tools a given permission mode allows are offered to the model. */\n definitions(filter?: (tool: Tool<never>) => boolean): ToolDefinition[] {\n return this.list()\n .filter((tool) => filter?.(tool) ?? true)\n .map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n }));\n }\n}\n",
|
|
56
56
|
"import { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { MEMORY_FILENAMES } from '../context/agents-md.ts';\n\nexport interface VerifyCommand {\n command: string;\n /** Where it came from, so the user can see why this command and not another. */\n source: string;\n}\n\n/**\n * Finds the command that proves the change works.\n *\n * Declaration beats detection: a project that says how it is tested is telling\n * the truth about itself, while a `test` script can be a placeholder that exits\n * zero. Nothing is invented - if none of these turn anything up, verification\n * simply does not run and the agent has to say so rather than claim it passed.\n */\nexport async function detectTestCommand(cwd: string): Promise<VerifyCommand | undefined> {\n return (\n (await fromSettings(cwd)) ??\n (await fromInstructions(cwd)) ??\n (await fromPackageJson(cwd)) ??\n (await fromMakefile(cwd))\n );\n}\n\nasync function fromSettings(cwd: string): Promise<VerifyCommand | undefined> {\n for (const name of ['settings.local.json', 'settings.json']) {\n const path = join(cwd, '.earshot', name);\n const raw = await readFile(path, 'utf8').catch(() => undefined);\n if (raw === undefined) continue;\n try {\n const parsed = JSON.parse(raw) as { verify?: { test?: string } };\n const command = parsed.verify?.test;\n if (typeof command === 'string' && command.trim() !== '') {\n return { command: command.trim(), source: `.earshot/${name}` };\n }\n } catch {\n // A settings file that does not parse is reported elsewhere; here it just\n // means no declared command.\n }\n }\n return undefined;\n}\n\n/** `- \\`bun test\\` - test suite`, the shape AGENTS.md documents commands in. */\nconst INSTRUCTION_LINE = /^\\s*[-*]?\\s*`([^`]+)`\\s*[-–:]\\s*(.*)$/;\n\nasync function fromInstructions(cwd: string): Promise<VerifyCommand | undefined> {\n for (const name of MEMORY_FILENAMES) {\n const raw = await readFile(join(cwd, name), 'utf8').catch(() => undefined);\n if (raw === undefined) continue;\n for (const line of raw.split('\\n')) {\n const match = INSTRUCTION_LINE.exec(line);\n const command = match?.[1]?.trim();\n const description = match?.[2] ?? '';\n if (!command || !/\\btests?\\b|\\btest suite\\b/i.test(description)) continue;\n // \"`bun test` - test suite\", not \"`bun run lint` - biome\".\n if (!/\\btests?\\b/i.test(command)) continue;\n return { command, source: name };\n }\n }\n return undefined;\n}\n\nasync function fromPackageJson(cwd: string): Promise<VerifyCommand | undefined> {\n const raw = await readFile(join(cwd, 'package.json'), 'utf8').catch(() => undefined);\n if (raw === undefined) return undefined;\n try {\n const parsed = JSON.parse(raw) as { scripts?: Record<string, string> };\n const script = parsed.scripts?.test;\n if (typeof script !== 'string' || script.trim() === '') return undefined;\n // The npm-init default, which exits 1 and proves nothing.\n if (/no test specified/i.test(script)) return undefined;\n return { command: 'npm test', source: 'package.json' };\n } catch {\n return undefined;\n }\n}\n\nasync function fromMakefile(cwd: string): Promise<VerifyCommand | undefined> {\n const raw = await readFile(join(cwd, 'Makefile'), 'utf8').catch(() => undefined);\n if (raw === undefined) return undefined;\n return /^test\\s*:/m.test(raw) ? { command: 'make test', source: 'Makefile' } : undefined;\n}\n",
|
|
57
57
|
"import { exec } from '../tools/exec.ts';\nimport { resolveShell } from '../tools/shell.ts';\n\nexport interface VerificationResult {\n command: string;\n source: string;\n exitCode: number | null;\n /** Combined output, verbatim. Never summarised - that is the whole point. */\n output: string;\n timedOut: boolean;\n}\n\n/**\n * Runs the project's own test command and returns exactly what it printed.\n *\n * The output is reported rather than characterised. \"Tests pass\" from an agent\n * that did not run them is the single most expensive thing this harness can say,\n * and a summary of the output is where that claim hides.\n */\nexport async function runVerification(\n command: string,\n source: string,\n options: { cwd: string; env?: NodeJS.ProcessEnv; signal?: AbortSignal; timeoutMs?: number },\n): Promise<VerificationResult> {\n // resolveShell throws on Windows without Git Bash. That is a reportable\n // outcome here, not a crash: the turn still happened, and the agent has to say\n // the change is unverified rather than dying at the end of it.\n const result = await (async () => {\n const shell = resolveShell(options.env ?? process.env);\n return exec(shell.file, [...shell.args, command], {\n cwd: options.cwd,\n ...(options.env ? { env: options.env } : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n timeoutMs: options.timeoutMs ?? 300_000,\n });\n })().catch((error: Error) => ({\n stdout: '',\n stderr: `could not run ${command}: ${error.message}`,\n code: null,\n signal: null,\n timedOut: false,\n }));\n\n return {\n command,\n source,\n exitCode: result.code,\n output: [result.stdout, result.stderr]\n .filter((part) => part.trim() !== '')\n .join('\\n')\n .trim(),\n timedOut: result.timedOut,\n };\n}\n",
|
|
58
|
-
"import type {\n EarshotError,\n ImagePart,\n Message,\n ProviderRegistry,\n TextPart,\n ToolCallPart,\n ToolDefinition,\n ToolResultOutput,\n ToolResultPart,\n Usage,\n} from '@earshot/providers';\n\nexport type UserPromptPart = TextPart | ImagePart;\nexport type UserPrompt = string | UserPromptPart[];\n\nimport {\n type CompactionPolicy,\n compact,\n DEFAULT_SHAPER_OPTIONS,\n estimateTokens,\n type ShaperOptions,\n SUMMARY_PROMPT,\n shapeMessages,\n shouldCompact,\n} from './context/index.ts';\nimport type { HookEvent } from './hooks/config.ts';\nimport type { HookOutcome } from './hooks/run.ts';\nimport type { HookRunner } from './hooks/runner.ts';\nimport type { ResolvedModel } from './model.ts';\nimport { streamModel, turnCost } from './model.ts';\nimport {\n decide,\n type PermissionMode,\n type PermissionPrompt,\n ruleFromChoice,\n} from './permissions/engine.ts';\nimport type { Rule } from './permissions/rules.ts';\nimport { persistRule } from './permissions/settings.ts';\nimport { renderPlan } from './plan/index.ts';\nimport { type ScopeConcern, ScopeContract, type ScopeOptions } from './scope/index.ts';\nimport { narrow } from './skills/discover.ts';\nimport { BUILTIN_TOOLS, ToolRegistry } from './tools/index.ts';\nimport { BackgroundJobs } from './tools/jobs.ts';\nimport { DEFAULT_SUBAGENT_TOOLS } from './tools/task.ts';\nimport { MemoryTodoStore } from './tools/todo.ts';\nimport { toolSearchTool } from './tools/tool-search.ts';\nimport {\n type PermissionRequest,\n type SubagentRequest,\n type SubagentResult,\n type Tool,\n type ToolContext,\n ToolInputError,\n type ToolResult,\n} from './tools/types.ts';\nimport type { ShadowGit, SnapshotFile } from './undo/shadow-git.ts';\nimport { detectTestCommand, runVerification, type VerificationResult } from './verify/index.ts';\n\n/** Everything the TUI and the headless renderer need to show a turn. */\nexport type AgentEvent =\n | { type: 'model_start'; model: string }\n | { type: 'text_delta'; text: string }\n | { type: 'reasoning_delta'; text: string }\n | { type: 'message'; message: Message }\n | { type: 'tool_start'; call: ToolCallPart }\n | { type: 'tool_end'; toolCallId: string; toolName: string; result: ToolResult }\n | { type: 'permission'; request: PermissionRequest; reason: string }\n | { type: 'usage'; usage: Usage; costUsd: number }\n | { type: 'compacted'; replaced: number; summary: string }\n | { type: 'scope_concern'; concern: ScopeConcern; accepted: boolean }\n | { type: 'verification'; result: VerificationResult }\n | { type: 'hook'; event: HookEvent; blocked?: string; problems: string[] }\n | { type: 'subagent'; description: string; steps: number; costUsd: number }\n /**\n * The one-line \"why\" in front of a tool batch. Emitted for every batch,\n * including one the model gave no reason for - a missing intent line is\n * itself worth seeing, and reporting nothing would hide it.\n */\n | { type: 'intent'; text: string | undefined; calls: number }\n /**\n * The session budget was reached. Emitted whether the user then raises it or\n * stops: a run that quietly spent past its limit and a run that was allowed\n * to should not look the same in a transcript.\n */\n | { type: 'budget'; spentUsd: number; limitUsd: number; raisedTo?: number }\n | { type: 'turn_end'; reason: 'stop' | 'aborted' | 'max_steps' | 'error' | 'budget' }\n | { type: 'error'; error: EarshotError };\n\nexport interface AgentOptions {\n registry: ProviderRegistry;\n model: ResolvedModel;\n cwd: string;\n system: string;\n mode: PermissionMode;\n rules: Rule[];\n /** Called when a call needs approval. Without one, every ask becomes a denial. */\n prompt?: PermissionPrompt;\n /** Called by the `ask_user` tool. Without one, the tool reports it cannot ask. */\n ask?: (question: string, options?: string[]) => Promise<string>;\n tools?: Tool<never>[];\n /** Guards against a model that loops on tools forever. */\n maxSteps?: number;\n env?: NodeJS.ProcessEnv;\n /** Called with every message appended to history, for session persistence. */\n onMessage?: (message: Message) => void | Promise<void>;\n /** Snapshot store for undo. Absent means this session keeps no undo history. */\n shadow?: ShadowGit;\n /** Overrides for the context shapers. */\n shapers?: Partial<ShaperOptions>;\n compaction?: Partial<CompactionPolicy>;\n /**\n * Called when compaction has written a summary, so the session can append a\n * `summary` entry. The entry records what was summarised; it removes nothing.\n */\n onCompaction?: (summary: string, historyCut: number) => void | Promise<void>;\n /** Overrides for the scope guard. */\n scope?: Partial<ScopeOptions>;\n /**\n * Running the project's tests after a turn that changed files, and reporting\n * what they printed. `enabled: false` turns it off; `command` overrides\n * detection.\n */\n verify?: { enabled?: boolean; command?: string; timeoutMs?: number };\n /** User-configured hooks. Absent means nothing is hooked and nothing is run. */\n hooks?: HookRunner;\n /**\n * Shared rather than constructed, so a subagent is held to the same scope the\n * parent declared. A subagent with a scope of its own would be a hole straight\n * through the contract: the parent says which files it will touch, and then\n * spawns something that never agreed to it.\n */\n scopeContract?: ScopeContract;\n /** Set on a subagent. Its cost lands on the parent's total, not beside it. */\n onCost?: (costUsd: number) => void;\n /**\n * Session budget in USD. Checked before each model call rather than after:\n * stopping once the money is gone is not a budget, it is a receipt.\n */\n maxCostUsd?: number;\n /**\n * Asked when the budget is reached. Returns a new, higher limit to continue\n * with, or undefined to stop. Absent means stop - a headless run must not\n * block forever waiting for a terminal that is not there.\n */\n confirmBudget?: (spentUsd: number, limitUsd: number) => Promise<number | undefined>;\n /** Steps a subagent this agent spawns may take. */\n subagentMaxSteps?: number;\n}\n\nconst DEFAULT_MAX_STEPS = 100;\n\n/**\n * The agent loop.\n *\n * History is a single flat list and is only ever appended to. That is not a\n * simplification: Anthropic rejects a request whose history contains edited\n * thinking blocks, so any feature that looks like rewriting the past (compaction,\n * rewind) has to be expressed as new entries instead. Every other provider is\n * treated as if it had the same rule, so there is one code path rather than two.\n */\nexport class Agent {\n readonly history: Message[] = [];\n readonly todos = new MemoryTodoStore();\n readonly scope: ScopeContract;\n readonly jobs = new BackgroundJobs();\n\n private readonly tools: ToolRegistry;\n private readonly readFiles = new Set<string>();\n /** Messages typed while a turn is running, injected at the next model call. */\n private readonly queued: Message[] = [];\n private rules: Rule[];\n private mode: PermissionMode;\n private totalCostUsd = 0;\n private maxCostUsd: number | undefined;\n /**\n * Mutable so a memory captured mid-session applies from the next call rather\n * than from the next session - a preference the user has to restart to see\n * honoured reads as one that was ignored.\n */\n private systemPrompt: string;\n /**\n * The approved plan, kept beside the system prompt rather than merged into\n * it: the prompt is rebuilt whenever a memory changes, and a plan folded into\n * that string would be lost the next time it was.\n */\n private plan: string | undefined;\n /** Pre-change hashes for the batch currently executing. */\n private batchSnapshot: SnapshotFile[] = [];\n /** Events raised while a call ran, drained by the batch loop that owns it. */\n private readonly pending: AgentEvent[] = [];\n /**\n * Where the live request starts, and what stands in for everything before it.\n * Compaction cannot shorten `history` - that would rewrite the past - so it\n * records a cut and a preamble, and the request is rebuilt from those.\n */\n private compactedAt = 0;\n private compactionPreamble: Message | undefined;\n /** Tokens in the last request actually sent, for the status line. */\n private lastRequestTokens = 0;\n /** Whether anything has been changed since the last end-of-turn check. */\n private mutatedSinceCheck = false;\n private checksThisTurn = 0;\n /**\n * Installed after construction by the TUI, which cannot supply them earlier:\n * both resolve against React state that does not exist until the app mounts.\n */\n private promptFn: PermissionPrompt | undefined;\n private askFn: ((question: string, options?: string[]) => Promise<string>) | undefined;\n /**\n * Set by a skill that declares `allowed-tools`, and cleared at the start of\n * every turn: a narrowing that outlived the task it was written for would\n * silently remove tools from work the skill knows nothing about.\n */\n private toolRestriction: string[] | undefined;\n /**\n * Deferred tools `tool_search` has surfaced. Session-scoped rather than\n * per-turn: a tool the model went looking for in one turn is exactly the tool\n * the follow-up turn needs, and making it search again would be theatre.\n */\n private readonly surfacedTools = new Set<string>();\n\n constructor(private readonly options: AgentOptions) {\n this.tools = new ToolRegistry(options.tools ?? (BUILTIN_TOOLS as Tool<never>[]));\n if (this.tools.list().some((tool) => tool.deferred)) {\n this.tools.add(\n toolSearchTool({\n all: () => this.tools.list().filter((tool) => tool.deferred),\n surface: (name) => {\n this.surfacedTools.add(name);\n },\n surfaced: (name) => this.surfacedTools.has(name),\n }) as unknown as Tool<never>,\n );\n }\n this.scope = options.scopeContract ?? new ScopeContract(options.cwd, options.scope ?? {});\n this.rules = [...options.rules];\n this.mode = options.mode;\n this.promptFn = options.prompt;\n this.askFn = options.ask;\n this.systemPrompt = options.system;\n this.maxCostUsd = options.maxCostUsd;\n }\n\n get budgetUsd(): number | undefined {\n return this.maxCostUsd;\n }\n\n /** Undefined removes the budget. Used by `/cost` and by the overrun prompt. */\n setBudget(maxCostUsd: number | undefined): void {\n this.maxCostUsd = maxCostUsd;\n }\n\n /** Replaces the approval callback. Passing undefined turns every ask into a denial. */\n setPrompt(prompt: PermissionPrompt | undefined): void {\n this.promptFn = prompt;\n }\n\n setAsk(ask: ((question: string, options?: string[]) => Promise<string>) | undefined): void {\n this.askFn = ask;\n }\n\n get cwd(): string {\n return this.options.cwd;\n }\n\n get system(): string {\n return this.systemPrompt;\n }\n\n setSystem(system: string): void {\n this.systemPrompt = system;\n }\n\n /** Pins an approved plan for the rest of the run. Undefined clears it. */\n setPlan(plan: string | undefined): void {\n this.plan = plan?.trim() === '' ? undefined : plan;\n }\n\n get pinnedPlan(): string | undefined {\n return this.plan;\n }\n\n /** What is actually sent as the system prompt: the prompt plus any plan. */\n private get effectiveSystem(): string {\n return this.plan === undefined\n ? this.systemPrompt\n : `${this.systemPrompt}\\n\\n${renderPlan(this.plan)}`;\n }\n\n get permissionMode(): PermissionMode {\n return this.mode;\n }\n\n setPermissionMode(mode: PermissionMode): void {\n this.mode = mode;\n }\n\n get costUsd(): number {\n return this.totalCostUsd;\n }\n\n /**\n * Adds to this session's spend. A subagent calls its parent's, so one session\n * has one number: a budget that a subagent could spend outside would not be a\n * budget.\n */\n private addCost(costUsd: number): void {\n this.totalCostUsd += costUsd;\n this.options.onCost?.(costUsd);\n }\n\n /** Estimated tokens in the last request, and the window they have to fit in. */\n get contextUse(): { tokens: number; window: number } {\n return { tokens: this.lastRequestTokens, window: this.options.model.model.contextWindow ?? 0 };\n }\n\n /** Files read or written this session, in the order they were first touched. */\n get touchedFiles(): string[] {\n return [...this.readFiles];\n }\n\n /**\n * Queues a message to be delivered at the next model call rather than\n * interrupting. This is what steering is: the user redirects the work without\n * cancelling the turn and losing everything the model has already done.\n */\n steer(text: string): void {\n this.queued.push({ role: 'user', content: [{ type: 'text', text }] });\n }\n\n get pendingSteers(): number {\n return this.queued.length;\n }\n\n /**\n * Replaces the in-memory history, for `/rewind` and `/fork`.\n *\n * The transcript on disk is untouched: rewinding points the next append at an\n * earlier entry and the abandoned branch stays in the file. What changes is\n * only which messages the next request is built from - and the compaction\n * state resets with them, since a summary of messages that are no longer in\n * the history would describe work the model can no longer see.\n */\n replaceHistory(messages: Message[]): void {\n this.history.length = 0;\n this.history.push(...messages);\n this.compactedAt = 0;\n this.compactionPreamble = undefined;\n }\n\n /** Ends the session's background processes. Safe to call more than once. */\n dispose(): void {\n this.jobs.killAll();\n }\n\n async *runTurn(prompt: UserPrompt, signal: AbortSignal): AsyncGenerator<AgentEvent> {\n // The budget is per turn; the declaration outlives one, because a follow-up\n // like \"now do the same for the other file\" is the same piece of work.\n this.scope.beginTurn();\n this.options.hooks?.beginTurn();\n this.toolRestriction = undefined;\n this.mutatedSinceCheck = false;\n this.checksThisTurn = 0;\n\n const promptText = userPromptText(prompt);\n const promptParts: UserPromptPart[] =\n typeof prompt === 'string'\n ? [{ type: 'text', text: prompt }]\n : prompt.map((part) => ({ ...part }));\n if (\n promptParts.some((part) => part.type === 'image') &&\n !this.options.model.model.capabilities.vision\n ) {\n yield {\n type: 'error',\n error: {\n kind: 'invalid_request',\n message: `${this.options.model.model.name} does not support image input`,\n retryable: false,\n },\n };\n yield { type: 'turn_end', reason: 'error' };\n return;\n }\n\n const submitted = await this.options.hooks?.userPromptSubmit(promptText, signal);\n if (submitted) {\n yield hookEvent('UserPromptSubmit', submitted);\n if (submitted.decision === 'deny') {\n // The prompt is not appended at all. A blocked prompt that still entered\n // history would come back on the next request as something the user\n // asked for and the agent ignored.\n yield { type: 'turn_end', reason: 'stop' };\n return;\n }\n }\n\n const context = submitted?.context ?? [];\n const content: UserPromptPart[] =\n context.length > 0 && promptParts.length === 1 && promptParts[0]?.type === 'text'\n ? [\n {\n type: 'text',\n text: `${promptParts[0].text}\\n\\n<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`,\n },\n ]\n : [\n ...promptParts,\n ...(context.length\n ? [\n {\n type: 'text' as const,\n text: `<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`,\n },\n ]\n : []),\n ];\n await this.append({\n role: 'user',\n content,\n });\n\n const maxSteps = this.options.maxSteps ?? DEFAULT_MAX_STEPS;\n const modelName = `${this.options.model.provider.id}/${this.options.model.model.id}`;\n\n for (let step = 0; step < maxSteps; step++) {\n if (signal.aborted) {\n yield { type: 'turn_end', reason: 'aborted' };\n return;\n }\n\n // Steering messages land here, between one model call and the next, which\n // is the only point where history can grow without contradicting a tool\n // call the model is still waiting on a result for.\n while (this.queued.length > 0) {\n await this.append(this.queued.shift() as Message);\n }\n\n const overrun = await this.checkBudget();\n if (overrun) {\n yield overrun.event;\n if (overrun.stop) {\n yield { type: 'turn_end', reason: 'budget' };\n return;\n }\n }\n\n for await (const event of this.prepareRequest(signal)) yield event;\n const messages = this.requestMessages();\n this.lastRequestTokens = estimateTokens(messages, this.effectiveSystem);\n\n yield { type: 'model_start', model: modelName };\n\n let assistant: Message | undefined;\n let failed: EarshotError | undefined;\n\n for await (const event of streamModel(this.options.registry, this.options.model, {\n system: this.effectiveSystem,\n messages,\n tools: this.offeredTools(),\n abortSignal: signal,\n })) {\n switch (event.type) {\n case 'text_delta':\n yield { type: 'text_delta', text: event.text };\n break;\n case 'reasoning_delta':\n yield { type: 'reasoning_delta', text: event.text };\n break;\n case 'finish': {\n assistant = event.message;\n const costUsd = turnCost(this.options.model.model, event.usage);\n this.addCost(costUsd);\n yield { type: 'usage', usage: event.usage, costUsd };\n break;\n }\n case 'error':\n failed = event.error;\n break;\n default:\n break;\n }\n }\n\n if (failed) {\n yield { type: 'error', error: failed };\n yield { type: 'turn_end', reason: failed.kind === 'abort' ? 'aborted' : 'error' };\n return;\n }\n if (!assistant) {\n yield { type: 'turn_end', reason: signal.aborted ? 'aborted' : 'error' };\n return;\n }\n\n // Appended verbatim, including providerMetadata: an assistant message that\n // is not replayed exactly is what breaks the next request on providers that\n // sign or encrypt their reasoning.\n await this.append(assistant);\n yield { type: 'message', message: assistant };\n\n const calls = assistant.content.filter(\n (part): part is ToolCallPart => part.type === 'tool_call',\n );\n if (calls.length === 0) {\n const check = await this.selfCheck(signal);\n if (!check) {\n const stop = await this.options.hooks?.stop(signal);\n if (stop) {\n yield hookEvent('Stop', stop);\n if (stop.decision === 'deny') {\n await this.append({\n role: 'user',\n content: [\n {\n type: 'text',\n text:\n `<hook>\\nA Stop hook asked you to keep going: ${\n stop.reason ?? 'no reason given'\n }\\nThis message is from the harness, not the user. If you believe the ` +\n `work is finished, say so and stop.\\n</hook>`,\n },\n ],\n });\n continue;\n }\n }\n yield { type: 'turn_end', reason: 'stop' };\n return;\n }\n if (check.verification) yield { type: 'verification', result: check.verification };\n await this.append(check.message);\n continue;\n }\n\n yield { type: 'intent', text: intentOf(assistant), calls: calls.length };\n\n const results: ToolResultPart[] = [];\n this.batchSnapshot = [];\n for await (const event of this.runCalls(calls, results, signal)) yield event;\n await this.commitSnapshot(calls);\n\n // Results are appended in the order the model emitted the calls, not the\n // order they finished, so a replayed transcript is deterministic even\n // though read-only calls ran concurrently.\n await this.append({ role: 'tool', content: results });\n\n if (signal.aborted) {\n yield { type: 'turn_end', reason: 'aborted' };\n return;\n }\n }\n\n yield { type: 'turn_end', reason: 'max_steps' };\n }\n\n /**\n * Whether this session may make another model call.\n *\n * The check is before the call, so the limit is a decision point rather than\n * a post-mortem. Raising it is the user's, and only ever upwards: a callback\n * that answers with a limit already spent would loop.\n */\n private async checkBudget(): Promise<{ event: AgentEvent; stop: boolean } | undefined> {\n const limitUsd = this.maxCostUsd;\n if (limitUsd === undefined || this.totalCostUsd < limitUsd) return undefined;\n\n const spentUsd = this.totalCostUsd;\n const raisedTo = await (this.options.confirmBudget ?? defaultBudgetPrompt(this.askFn))(\n spentUsd,\n limitUsd,\n );\n if (raisedTo === undefined || !Number.isFinite(raisedTo) || raisedTo <= spentUsd) {\n return { event: { type: 'budget', spentUsd, limitUsd }, stop: true };\n }\n this.maxCostUsd = raisedTo;\n return { event: { type: 'budget', spentUsd, limitUsd, raisedTo }, stop: false };\n }\n\n /**\n * The tools this call offers the model. A skill's `allowed-tools` is applied\n * as an intersection with what the session already has, never as a union, so a\n * skill file cannot hand itself a tool the user's settings withheld.\n */\n private offeredTools(): ToolDefinition[] {\n const all = this.tools.definitions(\n (tool) => !tool.deferred || this.surfacedTools.has(tool.name),\n );\n if (!this.toolRestriction) return all;\n const kept = new Set(\n narrow(\n all.map((tool) => tool.name),\n this.toolRestriction,\n ),\n );\n return all.filter((tool) => kept.has(tool.name));\n }\n\n /**\n * Read-only calls run concurrently; anything that mutates runs one at a time.\n * Two edits to the same file in one batch would otherwise race, and the second\n * would be applied against content the first had already replaced.\n */\n private async *runCalls(\n calls: ToolCallPart[],\n into: ToolResultPart[],\n signal: AbortSignal,\n ): AsyncGenerator<AgentEvent> {\n const parallel: Array<{ index: number; promise: Promise<ToolResultPart> }> = [];\n const slots = new Array<ToolResultPart | undefined>(calls.length);\n\n for (const [index, call] of calls.entries()) {\n const tool = this.tools.get(call.toolName);\n if (tool?.readOnly) {\n yield { type: 'tool_start', call };\n parallel.push({ index, promise: this.runOne(tool, call, signal) });\n }\n }\n\n for (const [index, call] of calls.entries()) {\n const tool = this.tools.get(call.toolName);\n if (tool?.readOnly) continue;\n if (signal.aborted) break;\n yield { type: 'tool_start', call };\n const part = await this.runOne(tool, call, signal);\n slots[index] = part;\n while (this.pending.length > 0) yield this.pending.shift() as AgentEvent;\n yield {\n type: 'tool_end',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n result: asResult(part),\n };\n }\n\n for (const { index, promise } of parallel) {\n const part = await promise;\n slots[index] = part;\n while (this.pending.length > 0) yield this.pending.shift() as AgentEvent;\n const call = calls[index] as ToolCallPart;\n yield {\n type: 'tool_end',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n result: asResult(part),\n };\n }\n\n // Every call gets a result, including ones skipped by an abort: a provider\n // rejects an assistant tool call that has no matching result on the next turn.\n for (const [index, call] of calls.entries()) {\n into.push(slots[index] ?? errorPart(call, 'interrupted before this tool ran'));\n }\n }\n\n private async runOne(\n tool: Tool<never> | undefined,\n call: ToolCallPart,\n signal: AbortSignal,\n ): Promise<ToolResultPart> {\n if (!tool) return errorPart(call, `no tool named \"${call.toolName}\"`);\n\n let input: never;\n try {\n input = tool.parse(call.input) as never;\n } catch (error) {\n return errorPart(call, (error as Error).message);\n }\n\n const ctx = this.context(signal);\n\n // Hooks run before the gate, and can only make the answer stricter: a deny\n // stops the call, an ask turns an allow into a prompt, and an approve is\n // read, reported and ignored.\n const before = await this.options.hooks?.preToolUse(call.toolName, input, signal);\n if (before) {\n this.pending.push(hookEvent('PreToolUse', before));\n if (before.decision === 'deny') {\n return errorPart(call, before.reason ?? `a PreToolUse hook blocked ${call.toolName}`);\n }\n }\n\n let request: PermissionRequest | undefined;\n try {\n request = tool.permission?.(input, ctx);\n } catch (error) {\n // A permission() that throws is usually a bad path or a `find` that does not\n // match - a model error, reported as one, before the user is ever prompted.\n return errorPart(call, (error as Error).message);\n }\n\n let decision = decide(tool, request, {\n mode: this.mode,\n rules: this.rules,\n cwd: this.options.cwd,\n });\n\n if (decision.outcome === 'deny') return errorPart(call, decision.reason);\n\n // A hook asking for confirmation is honoured even for a read-only tool, which\n // has no PermissionRequest of its own; one is built from the call so the\n // prompt still shows what is actually about to happen.\n if (before?.decision === 'ask' && decision.outcome === 'allow') {\n const asked = request ?? {\n tool: call.toolName,\n target: call.toolName,\n title: call.toolName,\n detail: `${call.toolName}(${JSON.stringify(call.input, null, 2)})`,\n };\n decision = {\n outcome: 'ask',\n reason: before.reason ?? 'a PreToolUse hook asked for confirmation',\n request: asked,\n };\n }\n\n if (decision.outcome === 'ask') {\n const prompt = this.promptFn;\n if (!prompt) {\n return errorPart(\n call,\n `${decision.reason}, and this session cannot prompt for approval. Ask the user ` +\n 'to re-run with a permission mode or rule that allows it.',\n );\n }\n const choice = await prompt(decision.request, decision.reason);\n if (choice.kind === 'deny') {\n return errorPart(call, choice.message ?? 'the user declined this action');\n }\n if (choice.kind === 'allow-always') {\n const rule = ruleFromChoice(decision.request, choice.scope);\n this.rules = [...this.rules, rule];\n if (choice.scope !== 'session') {\n await persistRule(rule, choice.scope, this.options.cwd).catch(() => undefined);\n }\n }\n }\n\n if (request) {\n const concern = this.scope.check(request);\n if (concern) {\n const accepted = await this.confirmScope(concern, request);\n this.pending.push({ type: 'scope_concern', concern, accepted });\n if (!accepted) {\n return errorPart(\n call,\n `${concern.summary} The user did not approve going outside the declared scope. ` +\n 'Do the part that is in scope, and tell them what you left out and why.',\n );\n }\n }\n // Counted after approval, so the running total is what was actually done.\n this.scope.record(request);\n this.mutatedSinceCheck = true;\n }\n\n // Hashed here, immediately before the change and after approval, so the\n // recorded contents are what was on disk when the tool ran.\n await this.captureWrites(request?.writes ?? []);\n\n try {\n const result = await tool.execute(input, ctx);\n const after = await this.options.hooks?.postToolUse(\n call.toolName,\n input,\n result.output,\n signal,\n );\n if (after) this.pending.push(hookEvent('PostToolUse', after));\n return {\n type: 'tool_result',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n output: withHookContext(result.output, after?.context ?? []),\n ...(result.isError ? { isError: true } : {}),\n };\n } catch (error) {\n // A failing tool is data for the model, not a crash: it is expected to read\n // the message and try something else.\n const message =\n error instanceof ToolInputError\n ? error.message\n : `${call.toolName} failed: ${(error as Error).message}`;\n return errorPart(call, message);\n }\n }\n\n /**\n * Asks before doing something the turn did not say it would do.\n *\n * The prompt carries the real diff or command, exactly as an ordinary\n * permission prompt does - a scope prompt that summarised the change would\n * hide the thing the user is being asked to judge. \"Always\" widens the scope\n * for this session only; unlike a permission choice it persists no rule,\n * because the next task will have a different scope.\n */\n private async confirmScope(concern: ScopeConcern, request: PermissionRequest): Promise<boolean> {\n const prompt = this.promptFn;\n if (!prompt) return false;\n const choice = await prompt(\n {\n tool: 'Scope',\n target: request.target,\n title: `outside the declared scope: ${request.title}`,\n detail: `${concern.summary}\\n\\n${request.detail}`,\n ...(request.writes ? { writes: request.writes } : {}),\n },\n concern.summary,\n );\n if (choice.kind === 'deny') return false;\n if (choice.kind === 'allow-always') {\n this.scope.widen(concern, concern.kind === 'out-of-scope-file' ? concern.path : undefined);\n }\n return true;\n }\n\n /**\n * The end-of-turn check: run the project's tests, and make the model compare\n * what was asked for with what changed before it answers.\n *\n * It runs only on a turn that changed something, and at most twice, so a\n * model that keeps editing after a failure still terminates. The output is\n * handed over verbatim - a summary of it is exactly where \"tests pass\" from an\n * agent that never ran them hides.\n */\n private async selfCheck(\n signal: AbortSignal,\n ): Promise<{ message: Message; verification?: VerificationResult } | undefined> {\n if (!this.mutatedSinceCheck || this.checksThisTurn >= 2 || signal.aborted) return undefined;\n this.mutatedSinceCheck = false;\n this.checksThisTurn++;\n\n const configured = this.options.verify;\n const detected =\n configured?.enabled === false\n ? undefined\n : configured?.command\n ? { command: configured.command, source: 'configuration' }\n : await detectTestCommand(this.options.cwd);\n\n const verification = detected\n ? await runVerification(detected.command, detected.source, {\n cwd: this.options.cwd,\n env: this.options.env ?? process.env,\n signal,\n ...(configured?.timeoutMs !== undefined ? { timeoutMs: configured.timeoutMs } : {}),\n })\n : undefined;\n\n const evidence = verification\n ? `\\`${verification.command}\\` (from ${verification.source}) exited ` +\n `${verification.timedOut ? 'after timing out' : String(verification.exitCode)}. Its ` +\n `output, verbatim:\\n\\n${verification.output || '(no output)'}`\n : 'No test command was detected for this project, so nothing was verified. Say that ' +\n 'plainly rather than implying the change works.';\n\n return {\n message: {\n role: 'user',\n content: [\n {\n type: 'text',\n text:\n `<self-check>\\nThis turn changed files. Before you answer, compare the original ` +\n `request with what actually changed, and report anything you skipped, narrowed, ` +\n `left unverified or that is failing. Four of five things done is that report, ` +\n `not \"done\".\\n\\n${evidence}\\n\\nIf something is failing, fix it or say what is ` +\n `failing and why - do not describe the run as passing. This message is from the ` +\n `harness, not the user; answer them, not it.\\n</self-check>`,\n },\n ],\n },\n ...(verification ? { verification } : {}),\n };\n }\n\n /** Records pre-change contents for paths not already captured in this batch. */\n private async captureWrites(paths: string[]): Promise<void> {\n const shadow = this.options.shadow;\n if (!shadow) return;\n for (const path of paths) {\n if (this.batchSnapshot.some((file) => file.path === path)) continue;\n this.batchSnapshot.push({ path, before: await shadow.hashFile(path) });\n }\n }\n\n /**\n * Writes one snapshot record per tool batch. Per-batch rather than per-call so\n * undo restores a coherent unit: a `multi_edit` across three files, or an edit\n * plus the command that formatted it, is one step back rather than three.\n */\n private async commitSnapshot(calls: ToolCallPart[]): Promise<void> {\n const shadow = this.options.shadow;\n if (!shadow || this.batchSnapshot.length === 0) return;\n const label = calls.map((call) => call.toolName).join(', ');\n await shadow.record(this.batchSnapshot, label).catch(() => undefined);\n this.batchSnapshot = [];\n }\n\n /**\n * The messages for one request: the live tail of history, any compaction\n * preamble in front of it, then the cheap shapers. A copy, never the live\n * array - an adapter that reads messages lazily would otherwise see entries\n * appended after the request was made.\n */\n private requestMessages(): Message[] {\n const tail = this.history.slice(this.compactedAt);\n const base = this.compactionPreamble ? [this.compactionPreamble, ...tail] : tail;\n return shapeMessages(base, { ...DEFAULT_SHAPER_OPTIONS, ...this.options.shapers });\n }\n\n /** Compacts if the shaped request would still be too large for the window. */\n private async *prepareRequest(signal: AbortSignal): AsyncGenerator<AgentEvent> {\n const window = this.options.model.model.contextWindow ?? 0;\n const policy = { threshold: 0.8, keepRecentMessages: 8, ...this.options.compaction };\n const shaped = this.requestMessages();\n if (!shouldCompact(shaped, this.effectiveSystem, window, policy)) return;\n\n const result = await compact({\n messages: shaped,\n system: this.effectiveSystem,\n contextWindow: window,\n policy,\n todos: this.todos\n .list()\n .filter((todo) => todo.status !== 'done')\n .map((todo) => todo.text),\n filesTouched: this.touchedFiles,\n summarize: (messages) => this.summarise(messages, signal),\n }).catch(() => undefined);\n if (!result) return;\n\n // The cut is expressed against the shaped array, which has the same length\n // and order as the tail it was built from, minus the preamble.\n const offset = this.compactionPreamble ? 1 : 0;\n this.compactedAt += Math.max(0, result.replaced - offset);\n this.compactionPreamble = result.messages[0];\n this.lastRequestTokens = estimateTokens(this.requestMessages(), this.effectiveSystem);\n // The cut is reported as a history index, not as a count of shaped\n // messages: the session layer maps it back to the entry ids the summary\n // stands in for, and those are indexed by history position.\n await this.options.onCompaction?.(result.summary, this.compactedAt);\n yield { type: 'compacted', replaced: result.replaced, summary: result.summary };\n }\n\n /** One extra model call, with no tools: the summary that compaction stands on. */\n private async summarise(messages: Message[], signal: AbortSignal): Promise<string> {\n let text = '';\n for await (const event of streamModel(this.options.registry, this.options.model, {\n system: SUMMARY_PROMPT,\n messages: [...messages, { role: 'user', content: [{ type: 'text', text: SUMMARY_PROMPT }] }],\n abortSignal: signal,\n })) {\n if (event.type === 'text_delta') text += event.text;\n if (event.type === 'finish') {\n for (const part of event.message.content) {\n if (part.type === 'text' && text === '') text = part.text;\n }\n }\n if (event.type === 'error') throw new Error(event.error.message);\n }\n if (text.trim() === '') throw new Error('the model returned an empty summary');\n return text;\n }\n\n private context(signal: AbortSignal): ToolContext {\n return {\n cwd: this.options.cwd,\n signal,\n todos: this.todos,\n jobs: this.jobs,\n scope: this.scope,\n env: this.options.env ?? process.env,\n ask: async (question, choices) => {\n const ask = this.askFn;\n if (!ask) {\n throw new ToolInputError(\n 'this session cannot ask the user a question; decide with the information you have ' +\n 'and state the assumption you made',\n );\n }\n return ask(question, choices);\n },\n restrictTools: (names) => {\n this.toolRestriction = names;\n },\n // Absent on a subagent, so nesting stops at one level: an agent that could\n // spawn agents that spawn agents has no bound anyone can reason about.\n ...(this.options.onCost\n ? {}\n : { runSubagent: (request, sub) => this.subagent(request, sub) }),\n markRead: (path) => {\n this.readFiles.add(path);\n },\n hasRead: (path) => this.readFiles.has(path),\n };\n }\n\n /**\n * Runs a nested agent and returns its answer.\n *\n * What it inherits is the whole design. Permission mode and rules, so nothing\n * it does escapes the gate. The parent's ScopeContract object, so a file\n * nobody declared still prompts. The parent's cost total, so one session has\n * one number. What it does not inherit is context: it starts empty and is\n * given the prompt, which is the point - and it hands back an answer, not a\n * transcript, so the parent's window holds the conclusion rather than the\n * work.\n */\n private async subagent(request: SubagentRequest, signal: AbortSignal): Promise<SubagentResult> {\n const allowed = new Set(request.tools?.length ? request.tools : DEFAULT_SUBAGENT_TOOLS);\n // Intersection, never a union: a subagent cannot be handed a tool the parent\n // session does not have, whoever named it.\n const tools = this.tools\n .list()\n .filter((tool) => allowed.has(tool.name) && tool.name !== 'task');\n\n // The parent's persistence callbacks are dropped rather than passed on: a\n // subagent's messages are not the session's transcript, and writing them\n // there would replay them on the next resume as if the user had said them.\n const { onMessage: _persist, onCompaction: _summarised, ...inherited } = this.options;\n\n const child = new Agent({\n ...inherited,\n system:\n // The plan travels with it: a subagent working outside the plan the user\n // approved is the same hole as one working outside the declared scope.\n `${this.effectiveSystem}\\n\\n<subagent>\\nYou are running as a subagent for one ` +\n `self-contained task: ${request.description}. You cannot see the conversation that ` +\n 'sent you here, and only your final message is returned - so answer in full, and ' +\n 'say plainly what you could not find or could not do rather than implying success.' +\n '\\n</subagent>',\n tools,\n scopeContract: this.scope,\n onCost: (costUsd) => this.addCost(costUsd),\n maxSteps: this.options.subagentMaxSteps ?? 30,\n });\n child.setPrompt(this.promptFn);\n child.setAsk(this.askFn);\n\n let text = '';\n let steps = 0;\n let stoppedBecause: SubagentResult['stoppedBecause'];\n const before = this.totalCostUsd;\n\n for await (const event of child.runTurn(request.prompt, signal)) {\n if (event.type === 'model_start') steps++;\n if (event.type === 'message') {\n const said = event.message.content\n .filter((part) => part.type === 'text')\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join('');\n if (said.trim() !== '') text = said;\n }\n if (event.type === 'turn_end' && event.reason !== 'stop') stoppedBecause = event.reason;\n if (event.type === 'error') stoppedBecause = 'error';\n // Prompts and scope questions the subagent raised are the user's to see.\n if (event.type === 'permission' || event.type === 'scope_concern' || event.type === 'hook') {\n this.pending.push(event);\n }\n }\n child.dispose();\n\n const costUsd = this.totalCostUsd - before;\n this.pending.push({ type: 'subagent', description: request.description, steps, costUsd });\n return { text: text.trim(), steps, costUsd, ...(stoppedBecause ? { stoppedBecause } : {}) };\n }\n\n private async append(message: Message): Promise<void> {\n this.history.push(message);\n await this.options.onMessage?.(message);\n }\n}\n\n/**\n * The line the model said before reaching for a tool.\n *\n * The first line of the text it emitted alongside the calls, not all of it: the\n * point of the intent line is that one line of output is enough to catch a wrong\n * turn, and a paragraph is not one line.\n */\nfunction intentOf(assistant: Message): string | undefined {\n const said = assistant.content\n .filter((part) => part.type === 'text')\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join(' ')\n .trim();\n if (said === '') return undefined;\n return said\n .split(/\\r?\\n/)\n .find((line) => line.trim() !== '')\n ?.trim();\n}\n\nfunction hookEvent(event: HookEvent, outcome: HookOutcome): AgentEvent {\n return {\n type: 'hook',\n event,\n ...(outcome.decision === 'deny' && outcome.reason ? { blocked: outcome.reason } : {}),\n problems: outcome.problems,\n };\n}\n\n/**\n * A PostToolUse hook's output, attached to the result the model reads. Appended\n * rather than substituted: the tool's own output is what actually happened, and\n * a hook commenting on it must not be able to replace it.\n */\nfunction withHookContext(output: ToolResultOutput, context: string[]): ToolResultOutput {\n if (context.length === 0) return output;\n const note = `<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`;\n if (output.type === 'text') return { type: 'text', value: `${output.value}\\n\\n${note}` };\n return {\n type: 'content',\n value: [\n ...(output.type === 'content'\n ? output.value\n : [{ type: 'text' as const, text: JSON.stringify(output.value) }]),\n { type: 'text', text: note },\n ],\n };\n}\n\nfunction errorPart(call: ToolCallPart, message: string): ToolResultPart {\n return {\n type: 'tool_result',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n output: { type: 'text', value: message },\n isError: true,\n };\n}\n\nfunction asResult(part: ToolResultPart): ToolResult {\n return { output: part.output, ...(part.isError ? { isError: true } : {}) };\n}\n\n/**\n * The budget question, asked through whatever the session uses to ask the user\n * anything else. A session with no way to ask - headless, or a subagent - stops\n * rather than blocking on a terminal that is not there.\n */\nfunction defaultBudgetPrompt(\n ask: ((question: string, options?: string[]) => Promise<string>) | undefined,\n): (spentUsd: number, limitUsd: number) => Promise<number | undefined> {\n if (!ask) return async () => undefined;\n return async (spentUsd, limitUsd) => {\n const answer = await ask(\n `This session has spent $${spentUsd.toFixed(2)} against a $${limitUsd.toFixed(2)} budget. ` +\n 'Continue?',\n ['Stop here', `Raise the budget to $${(limitUsd * 2).toFixed(2)}`, 'Remove the budget'],\n );\n if (answer.startsWith('Raise')) return limitUsd * 2;\n if (answer.startsWith('Remove')) return Number.MAX_SAFE_INTEGER;\n return undefined;\n };\n}\n\nfunction userPromptText(prompt: UserPrompt): string {\n if (typeof prompt === 'string') return prompt;\n return prompt\n .map((part) => (part.type === 'text' ? part.text : `[${part.mediaType} image]`))\n .join('\\n\\n');\n}\n",
|
|
58
|
+
"import type {\n EarshotError,\n ImagePart,\n Message,\n ProviderRegistry,\n TextPart,\n ToolCallPart,\n ToolDefinition,\n ToolResultOutput,\n ToolResultPart,\n Usage,\n} from '@earshot/providers';\n\nexport type UserPromptPart = TextPart | ImagePart;\nexport type UserPrompt = string | UserPromptPart[];\n\nimport {\n type CompactionPolicy,\n compact,\n DEFAULT_SHAPER_OPTIONS,\n estimateTokens,\n type ShaperOptions,\n SUMMARY_PROMPT,\n shapeMessages,\n shouldCompact,\n} from './context/index.ts';\nimport type { HookEvent } from './hooks/config.ts';\nimport type { HookOutcome } from './hooks/run.ts';\nimport type { HookRunner } from './hooks/runner.ts';\nimport type { ResolvedModel } from './model.ts';\nimport { resolveModel, streamModel, turnCost } from './model.ts';\nimport {\n decide,\n type PermissionMode,\n type PermissionPrompt,\n ruleFromChoice,\n} from './permissions/engine.ts';\nimport type { Rule } from './permissions/rules.ts';\nimport { persistRule } from './permissions/settings.ts';\nimport { renderPlan } from './plan/index.ts';\nimport { type ScopeConcern, ScopeContract, type ScopeOptions } from './scope/index.ts';\nimport { narrow } from './skills/discover.ts';\nimport { BUILTIN_TOOLS, ToolRegistry } from './tools/index.ts';\nimport { BackgroundJobs } from './tools/jobs.ts';\nimport { DEFAULT_SUBAGENT_TOOLS } from './tools/task.ts';\nimport { MemoryTodoStore } from './tools/todo.ts';\nimport { toolSearchTool } from './tools/tool-search.ts';\nimport {\n type PermissionRequest,\n type SubagentRequest,\n type SubagentResult,\n type Tool,\n type ToolContext,\n ToolInputError,\n type ToolResult,\n} from './tools/types.ts';\nimport type { ShadowGit, SnapshotFile } from './undo/shadow-git.ts';\nimport { detectTestCommand, runVerification, type VerificationResult } from './verify/index.ts';\n\n/** Everything the TUI and the headless renderer need to show a turn. */\nexport type AgentEvent =\n | { type: 'model_start'; model: string }\n | { type: 'text_delta'; text: string }\n | { type: 'reasoning_delta'; text: string }\n | { type: 'message'; message: Message }\n | { type: 'tool_start'; call: ToolCallPart }\n | { type: 'tool_end'; toolCallId: string; toolName: string; result: ToolResult }\n | { type: 'permission'; request: PermissionRequest; reason: string }\n | { type: 'usage'; usage: Usage; costUsd: number }\n | { type: 'compacted'; replaced: number; summary: string }\n | { type: 'scope_concern'; concern: ScopeConcern; accepted: boolean }\n | { type: 'verification'; result: VerificationResult }\n | { type: 'hook'; event: HookEvent; blocked?: string; problems: string[] }\n | { type: 'subagent'; description: string; steps: number; costUsd: number }\n /**\n * The one-line \"why\" in front of a tool batch. Emitted for every batch,\n * including one the model gave no reason for - a missing intent line is\n * itself worth seeing, and reporting nothing would hide it.\n */\n | { type: 'intent'; text: string | undefined; calls: number }\n /**\n * The session budget was reached. Emitted whether the user then raises it or\n * stops: a run that quietly spent past its limit and a run that was allowed\n * to should not look the same in a transcript.\n */\n | { type: 'budget'; spentUsd: number; limitUsd: number; raisedTo?: number }\n | { type: 'turn_end'; reason: 'stop' | 'aborted' | 'max_steps' | 'error' | 'budget' }\n | { type: 'error'; error: EarshotError };\n\nexport interface AgentOptions {\n registry: ProviderRegistry;\n model: ResolvedModel;\n cwd: string;\n system: string;\n mode: PermissionMode;\n rules: Rule[];\n /** Called when a call needs approval. Without one, every ask becomes a denial. */\n prompt?: PermissionPrompt;\n /** Called by the `ask_user` tool. Without one, the tool reports it cannot ask. */\n ask?: (question: string, options?: string[]) => Promise<string>;\n tools?: Tool<never>[];\n /** Guards against a model that loops on tools forever. */\n maxSteps?: number;\n env?: NodeJS.ProcessEnv;\n /** Called with every message appended to history, for session persistence. */\n onMessage?: (message: Message) => void | Promise<void>;\n /** Snapshot store for undo. Absent means this session keeps no undo history. */\n shadow?: ShadowGit;\n /** Overrides for the context shapers. */\n shapers?: Partial<ShaperOptions>;\n compaction?: Partial<CompactionPolicy>;\n /**\n * Called when compaction has written a summary, so the session can append a\n * `summary` entry. The entry records what was summarised; it removes nothing.\n */\n onCompaction?: (summary: string, historyCut: number) => void | Promise<void>;\n /** Overrides for the scope guard. */\n scope?: Partial<ScopeOptions>;\n /**\n * Running the project's tests after a turn that changed files, and reporting\n * what they printed. `enabled: false` turns it off; `command` overrides\n * detection.\n */\n verify?: { enabled?: boolean; command?: string; timeoutMs?: number };\n /** User-configured hooks. Absent means nothing is hooked and nothing is run. */\n hooks?: HookRunner;\n /**\n * Shared rather than constructed, so a subagent is held to the same scope the\n * parent declared. A subagent with a scope of its own would be a hole straight\n * through the contract: the parent says which files it will touch, and then\n * spawns something that never agreed to it.\n */\n scopeContract?: ScopeContract;\n /** Set on a subagent. Its cost lands on the parent's total, not beside it. */\n onCost?: (costUsd: number) => void;\n /**\n * Session budget in USD. Checked before each model call rather than after:\n * stopping once the money is gone is not a budget, it is a receipt.\n */\n maxCostUsd?: number;\n /**\n * Asked when the budget is reached. Returns a new, higher limit to continue\n * with, or undefined to stop. Absent means stop - a headless run must not\n * block forever waiting for a terminal that is not there.\n */\n confirmBudget?: (spentUsd: number, limitUsd: number) => Promise<number | undefined>;\n /** Steps a subagent this agent spawns may take. */\n subagentMaxSteps?: number;\n}\n\nconst DEFAULT_MAX_STEPS = 100;\n\n/**\n * The agent loop.\n *\n * History is a single flat list and is only ever appended to. That is not a\n * simplification: Anthropic rejects a request whose history contains edited\n * thinking blocks, so any feature that looks like rewriting the past (compaction,\n * rewind) has to be expressed as new entries instead. Every other provider is\n * treated as if it had the same rule, so there is one code path rather than two.\n */\nexport class Agent {\n readonly history: Message[] = [];\n readonly todos = new MemoryTodoStore();\n readonly scope: ScopeContract;\n readonly jobs = new BackgroundJobs();\n\n private readonly tools: ToolRegistry;\n private readonly readFiles = new Set<string>();\n /** Messages typed while a turn is running, injected at the next model call. */\n private readonly queued: Message[] = [];\n private rules: Rule[];\n /** Mutable because `/model` swaps it; `options.model` is only the initial one. */\n private resolved: ResolvedModel;\n private mode: PermissionMode;\n private totalCostUsd = 0;\n private maxCostUsd: number | undefined;\n /**\n * Mutable so a memory captured mid-session applies from the next call rather\n * than from the next session - a preference the user has to restart to see\n * honoured reads as one that was ignored.\n */\n private systemPrompt: string;\n /**\n * The approved plan, kept beside the system prompt rather than merged into\n * it: the prompt is rebuilt whenever a memory changes, and a plan folded into\n * that string would be lost the next time it was.\n */\n private plan: string | undefined;\n /** Pre-change hashes for the batch currently executing. */\n private batchSnapshot: SnapshotFile[] = [];\n /** Events raised while a call ran, drained by the batch loop that owns it. */\n private readonly pending: AgentEvent[] = [];\n /**\n * Where the live request starts, and what stands in for everything before it.\n * Compaction cannot shorten `history` - that would rewrite the past - so it\n * records a cut and a preamble, and the request is rebuilt from those.\n */\n private compactedAt = 0;\n private compactionPreamble: Message | undefined;\n /** Tokens in the last request actually sent, for the status line. */\n private lastRequestTokens = 0;\n /** Whether anything has been changed since the last end-of-turn check. */\n private mutatedSinceCheck = false;\n private checksThisTurn = 0;\n /**\n * Installed after construction by the TUI, which cannot supply them earlier:\n * both resolve against React state that does not exist until the app mounts.\n */\n private promptFn: PermissionPrompt | undefined;\n private askFn: ((question: string, options?: string[]) => Promise<string>) | undefined;\n /**\n * Set by a skill that declares `allowed-tools`, and cleared at the start of\n * every turn: a narrowing that outlived the task it was written for would\n * silently remove tools from work the skill knows nothing about.\n */\n private toolRestriction: string[] | undefined;\n /**\n * Deferred tools `tool_search` has surfaced. Session-scoped rather than\n * per-turn: a tool the model went looking for in one turn is exactly the tool\n * the follow-up turn needs, and making it search again would be theatre.\n */\n private readonly surfacedTools = new Set<string>();\n\n constructor(private readonly options: AgentOptions) {\n this.tools = new ToolRegistry(options.tools ?? (BUILTIN_TOOLS as Tool<never>[]));\n if (this.tools.list().some((tool) => tool.deferred)) {\n this.tools.add(\n toolSearchTool({\n all: () => this.tools.list().filter((tool) => tool.deferred),\n surface: (name) => {\n this.surfacedTools.add(name);\n },\n surfaced: (name) => this.surfacedTools.has(name),\n }) as unknown as Tool<never>,\n );\n }\n this.scope = options.scopeContract ?? new ScopeContract(options.cwd, options.scope ?? {});\n this.rules = [...options.rules];\n this.mode = options.mode;\n this.promptFn = options.prompt;\n this.askFn = options.ask;\n this.systemPrompt = options.system;\n this.maxCostUsd = options.maxCostUsd;\n this.resolved = options.model;\n }\n\n /** The model this session is currently calling. */\n get model(): ResolvedModel {\n return this.resolved;\n }\n\n /**\n * Switches model mid-session.\n *\n * Resolved through the same `resolveModel` the CLI uses, so a reference with\n * no credentials fails here with `MissingCredentialsError` and the session\n * keeps the model it had - a half-applied switch would leave the agent\n * pricing one model's tokens against another's rates.\n */\n async changeModel(ref: string): Promise<ResolvedModel> {\n const resolved = await resolveModel(this.options.registry, ref);\n this.resolved = resolved;\n return resolved;\n }\n\n /**\n * The permission rules in force, newest first. A copy: a caller that could\n * push onto this array would be adding rules without going through the gate.\n */\n get permissionRules(): readonly Rule[] {\n return [...this.rules];\n }\n\n get budgetUsd(): number | undefined {\n return this.maxCostUsd;\n }\n\n /** Undefined removes the budget. Used by `/cost` and by the overrun prompt. */\n setBudget(maxCostUsd: number | undefined): void {\n this.maxCostUsd = maxCostUsd;\n }\n\n /** Replaces the approval callback. Passing undefined turns every ask into a denial. */\n setPrompt(prompt: PermissionPrompt | undefined): void {\n this.promptFn = prompt;\n }\n\n setAsk(ask: ((question: string, options?: string[]) => Promise<string>) | undefined): void {\n this.askFn = ask;\n }\n\n get cwd(): string {\n return this.options.cwd;\n }\n\n get system(): string {\n return this.systemPrompt;\n }\n\n setSystem(system: string): void {\n this.systemPrompt = system;\n }\n\n /** Pins an approved plan for the rest of the run. Undefined clears it. */\n setPlan(plan: string | undefined): void {\n this.plan = plan?.trim() === '' ? undefined : plan;\n }\n\n get pinnedPlan(): string | undefined {\n return this.plan;\n }\n\n /** What is actually sent as the system prompt: the prompt plus any plan. */\n private get effectiveSystem(): string {\n return this.plan === undefined\n ? this.systemPrompt\n : `${this.systemPrompt}\\n\\n${renderPlan(this.plan)}`;\n }\n\n get permissionMode(): PermissionMode {\n return this.mode;\n }\n\n setPermissionMode(mode: PermissionMode): void {\n this.mode = mode;\n }\n\n get costUsd(): number {\n return this.totalCostUsd;\n }\n\n /**\n * Adds to this session's spend. A subagent calls its parent's, so one session\n * has one number: a budget that a subagent could spend outside would not be a\n * budget.\n */\n private addCost(costUsd: number): void {\n this.totalCostUsd += costUsd;\n this.options.onCost?.(costUsd);\n }\n\n /** Estimated tokens in the last request, and the window they have to fit in. */\n get contextUse(): { tokens: number; window: number } {\n return { tokens: this.lastRequestTokens, window: this.resolved.model.contextWindow ?? 0 };\n }\n\n /** Files read or written this session, in the order they were first touched. */\n get touchedFiles(): string[] {\n return [...this.readFiles];\n }\n\n /**\n * Queues a message to be delivered at the next model call rather than\n * interrupting. This is what steering is: the user redirects the work without\n * cancelling the turn and losing everything the model has already done.\n */\n steer(text: string): void {\n this.queued.push({ role: 'user', content: [{ type: 'text', text }] });\n }\n\n get pendingSteers(): number {\n return this.queued.length;\n }\n\n /**\n * Replaces the in-memory history, for `/rewind` and `/fork`.\n *\n * The transcript on disk is untouched: rewinding points the next append at an\n * earlier entry and the abandoned branch stays in the file. What changes is\n * only which messages the next request is built from - and the compaction\n * state resets with them, since a summary of messages that are no longer in\n * the history would describe work the model can no longer see.\n */\n replaceHistory(messages: Message[]): void {\n this.history.length = 0;\n this.history.push(...messages);\n this.compactedAt = 0;\n this.compactionPreamble = undefined;\n }\n\n /** Ends the session's background processes. Safe to call more than once. */\n dispose(): void {\n this.jobs.killAll();\n }\n\n async *runTurn(prompt: UserPrompt, signal: AbortSignal): AsyncGenerator<AgentEvent> {\n // The budget is per turn; the declaration outlives one, because a follow-up\n // like \"now do the same for the other file\" is the same piece of work.\n this.scope.beginTurn();\n this.options.hooks?.beginTurn();\n this.toolRestriction = undefined;\n this.mutatedSinceCheck = false;\n this.checksThisTurn = 0;\n\n const promptText = userPromptText(prompt);\n const promptParts: UserPromptPart[] =\n typeof prompt === 'string'\n ? [{ type: 'text', text: prompt }]\n : prompt.map((part) => ({ ...part }));\n if (\n promptParts.some((part) => part.type === 'image') &&\n !this.resolved.model.capabilities.vision\n ) {\n yield {\n type: 'error',\n error: {\n kind: 'invalid_request',\n message: `${this.resolved.model.name} does not support image input`,\n retryable: false,\n },\n };\n yield { type: 'turn_end', reason: 'error' };\n return;\n }\n\n const submitted = await this.options.hooks?.userPromptSubmit(promptText, signal);\n if (submitted) {\n yield hookEvent('UserPromptSubmit', submitted);\n if (submitted.decision === 'deny') {\n // The prompt is not appended at all. A blocked prompt that still entered\n // history would come back on the next request as something the user\n // asked for and the agent ignored.\n yield { type: 'turn_end', reason: 'stop' };\n return;\n }\n }\n\n const context = submitted?.context ?? [];\n const content: UserPromptPart[] =\n context.length > 0 && promptParts.length === 1 && promptParts[0]?.type === 'text'\n ? [\n {\n type: 'text',\n text: `${promptParts[0].text}\\n\\n<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`,\n },\n ]\n : [\n ...promptParts,\n ...(context.length\n ? [\n {\n type: 'text' as const,\n text: `<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`,\n },\n ]\n : []),\n ];\n await this.append({\n role: 'user',\n content,\n });\n\n const maxSteps = this.options.maxSteps ?? DEFAULT_MAX_STEPS;\n const modelName = `${this.resolved.provider.id}/${this.resolved.model.id}`;\n\n for (let step = 0; step < maxSteps; step++) {\n if (signal.aborted) {\n yield { type: 'turn_end', reason: 'aborted' };\n return;\n }\n\n // Steering messages land here, between one model call and the next, which\n // is the only point where history can grow without contradicting a tool\n // call the model is still waiting on a result for.\n while (this.queued.length > 0) {\n await this.append(this.queued.shift() as Message);\n }\n\n const overrun = await this.checkBudget();\n if (overrun) {\n yield overrun.event;\n if (overrun.stop) {\n yield { type: 'turn_end', reason: 'budget' };\n return;\n }\n }\n\n for await (const event of this.prepareRequest(signal)) yield event;\n const messages = this.requestMessages();\n this.lastRequestTokens = estimateTokens(messages, this.effectiveSystem);\n\n yield { type: 'model_start', model: modelName };\n\n let assistant: Message | undefined;\n let failed: EarshotError | undefined;\n\n for await (const event of streamModel(this.options.registry, this.resolved, {\n system: this.effectiveSystem,\n messages,\n tools: this.offeredTools(),\n abortSignal: signal,\n })) {\n switch (event.type) {\n case 'text_delta':\n yield { type: 'text_delta', text: event.text };\n break;\n case 'reasoning_delta':\n yield { type: 'reasoning_delta', text: event.text };\n break;\n case 'finish': {\n assistant = event.message;\n const costUsd = turnCost(this.resolved.model, event.usage);\n this.addCost(costUsd);\n yield { type: 'usage', usage: event.usage, costUsd };\n break;\n }\n case 'error':\n failed = event.error;\n break;\n default:\n break;\n }\n }\n\n if (failed) {\n yield { type: 'error', error: failed };\n yield { type: 'turn_end', reason: failed.kind === 'abort' ? 'aborted' : 'error' };\n return;\n }\n if (!assistant) {\n yield { type: 'turn_end', reason: signal.aborted ? 'aborted' : 'error' };\n return;\n }\n\n // Appended verbatim, including providerMetadata: an assistant message that\n // is not replayed exactly is what breaks the next request on providers that\n // sign or encrypt their reasoning.\n await this.append(assistant);\n yield { type: 'message', message: assistant };\n\n const calls = assistant.content.filter(\n (part): part is ToolCallPart => part.type === 'tool_call',\n );\n if (calls.length === 0) {\n const check = await this.selfCheck(signal);\n if (!check) {\n const stop = await this.options.hooks?.stop(signal);\n if (stop) {\n yield hookEvent('Stop', stop);\n if (stop.decision === 'deny') {\n await this.append({\n role: 'user',\n content: [\n {\n type: 'text',\n text:\n `<hook>\\nA Stop hook asked you to keep going: ${\n stop.reason ?? 'no reason given'\n }\\nThis message is from the harness, not the user. If you believe the ` +\n `work is finished, say so and stop.\\n</hook>`,\n },\n ],\n });\n continue;\n }\n }\n yield { type: 'turn_end', reason: 'stop' };\n return;\n }\n if (check.verification) yield { type: 'verification', result: check.verification };\n await this.append(check.message);\n continue;\n }\n\n yield { type: 'intent', text: intentOf(assistant), calls: calls.length };\n\n const results: ToolResultPart[] = [];\n this.batchSnapshot = [];\n for await (const event of this.runCalls(calls, results, signal)) yield event;\n await this.commitSnapshot(calls);\n\n // Results are appended in the order the model emitted the calls, not the\n // order they finished, so a replayed transcript is deterministic even\n // though read-only calls ran concurrently.\n await this.append({ role: 'tool', content: results });\n\n if (signal.aborted) {\n yield { type: 'turn_end', reason: 'aborted' };\n return;\n }\n }\n\n yield { type: 'turn_end', reason: 'max_steps' };\n }\n\n /**\n * Whether this session may make another model call.\n *\n * The check is before the call, so the limit is a decision point rather than\n * a post-mortem. Raising it is the user's, and only ever upwards: a callback\n * that answers with a limit already spent would loop.\n */\n private async checkBudget(): Promise<{ event: AgentEvent; stop: boolean } | undefined> {\n const limitUsd = this.maxCostUsd;\n if (limitUsd === undefined || this.totalCostUsd < limitUsd) return undefined;\n\n const spentUsd = this.totalCostUsd;\n const raisedTo = await (this.options.confirmBudget ?? defaultBudgetPrompt(this.askFn))(\n spentUsd,\n limitUsd,\n );\n if (raisedTo === undefined || !Number.isFinite(raisedTo) || raisedTo <= spentUsd) {\n return { event: { type: 'budget', spentUsd, limitUsd }, stop: true };\n }\n this.maxCostUsd = raisedTo;\n return { event: { type: 'budget', spentUsd, limitUsd, raisedTo }, stop: false };\n }\n\n /**\n * The tools this call offers the model. A skill's `allowed-tools` is applied\n * as an intersection with what the session already has, never as a union, so a\n * skill file cannot hand itself a tool the user's settings withheld.\n */\n private offeredTools(): ToolDefinition[] {\n const all = this.tools.definitions(\n (tool) => !tool.deferred || this.surfacedTools.has(tool.name),\n );\n if (!this.toolRestriction) return all;\n const kept = new Set(\n narrow(\n all.map((tool) => tool.name),\n this.toolRestriction,\n ),\n );\n return all.filter((tool) => kept.has(tool.name));\n }\n\n /**\n * Read-only calls run concurrently; anything that mutates runs one at a time.\n * Two edits to the same file in one batch would otherwise race, and the second\n * would be applied against content the first had already replaced.\n */\n private async *runCalls(\n calls: ToolCallPart[],\n into: ToolResultPart[],\n signal: AbortSignal,\n ): AsyncGenerator<AgentEvent> {\n const parallel: Array<{ index: number; promise: Promise<ToolResultPart> }> = [];\n const slots = new Array<ToolResultPart | undefined>(calls.length);\n\n for (const [index, call] of calls.entries()) {\n const tool = this.tools.get(call.toolName);\n if (tool?.readOnly) {\n yield { type: 'tool_start', call };\n parallel.push({ index, promise: this.runOne(tool, call, signal) });\n }\n }\n\n for (const [index, call] of calls.entries()) {\n const tool = this.tools.get(call.toolName);\n if (tool?.readOnly) continue;\n if (signal.aborted) break;\n yield { type: 'tool_start', call };\n const part = await this.runOne(tool, call, signal);\n slots[index] = part;\n while (this.pending.length > 0) yield this.pending.shift() as AgentEvent;\n yield {\n type: 'tool_end',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n result: asResult(part),\n };\n }\n\n for (const { index, promise } of parallel) {\n const part = await promise;\n slots[index] = part;\n while (this.pending.length > 0) yield this.pending.shift() as AgentEvent;\n const call = calls[index] as ToolCallPart;\n yield {\n type: 'tool_end',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n result: asResult(part),\n };\n }\n\n // Every call gets a result, including ones skipped by an abort: a provider\n // rejects an assistant tool call that has no matching result on the next turn.\n for (const [index, call] of calls.entries()) {\n into.push(slots[index] ?? errorPart(call, 'interrupted before this tool ran'));\n }\n }\n\n private async runOne(\n tool: Tool<never> | undefined,\n call: ToolCallPart,\n signal: AbortSignal,\n ): Promise<ToolResultPart> {\n if (!tool) return errorPart(call, `no tool named \"${call.toolName}\"`);\n\n let input: never;\n try {\n input = tool.parse(call.input) as never;\n } catch (error) {\n return errorPart(call, (error as Error).message);\n }\n\n const ctx = this.context(signal);\n\n // Hooks run before the gate, and can only make the answer stricter: a deny\n // stops the call, an ask turns an allow into a prompt, and an approve is\n // read, reported and ignored.\n const before = await this.options.hooks?.preToolUse(call.toolName, input, signal);\n if (before) {\n this.pending.push(hookEvent('PreToolUse', before));\n if (before.decision === 'deny') {\n return errorPart(call, before.reason ?? `a PreToolUse hook blocked ${call.toolName}`);\n }\n }\n\n let request: PermissionRequest | undefined;\n try {\n request = tool.permission?.(input, ctx);\n } catch (error) {\n // A permission() that throws is usually a bad path or a `find` that does not\n // match - a model error, reported as one, before the user is ever prompted.\n return errorPart(call, (error as Error).message);\n }\n\n let decision = decide(tool, request, {\n mode: this.mode,\n rules: this.rules,\n cwd: this.options.cwd,\n });\n\n if (decision.outcome === 'deny') return errorPart(call, decision.reason);\n\n // A hook asking for confirmation is honoured even for a read-only tool, which\n // has no PermissionRequest of its own; one is built from the call so the\n // prompt still shows what is actually about to happen.\n if (before?.decision === 'ask' && decision.outcome === 'allow') {\n const asked = request ?? {\n tool: call.toolName,\n target: call.toolName,\n title: call.toolName,\n detail: `${call.toolName}(${JSON.stringify(call.input, null, 2)})`,\n };\n decision = {\n outcome: 'ask',\n reason: before.reason ?? 'a PreToolUse hook asked for confirmation',\n request: asked,\n };\n }\n\n if (decision.outcome === 'ask') {\n const prompt = this.promptFn;\n if (!prompt) {\n return errorPart(\n call,\n `${decision.reason}, and this session cannot prompt for approval. Ask the user ` +\n 'to re-run with a permission mode or rule that allows it.',\n );\n }\n const choice = await prompt(decision.request, decision.reason);\n if (choice.kind === 'deny') {\n return errorPart(call, choice.message ?? 'the user declined this action');\n }\n if (choice.kind === 'allow-always') {\n const rule = ruleFromChoice(decision.request, choice.scope);\n this.rules = [...this.rules, rule];\n if (choice.scope !== 'session') {\n await persistRule(rule, choice.scope, this.options.cwd).catch(() => undefined);\n }\n }\n }\n\n if (request) {\n const concern = this.scope.check(request);\n if (concern) {\n const accepted = await this.confirmScope(concern, request);\n this.pending.push({ type: 'scope_concern', concern, accepted });\n if (!accepted) {\n return errorPart(\n call,\n `${concern.summary} The user did not approve going outside the declared scope. ` +\n 'Do the part that is in scope, and tell them what you left out and why.',\n );\n }\n }\n // Counted after approval, so the running total is what was actually done.\n this.scope.record(request);\n this.mutatedSinceCheck = true;\n }\n\n // Hashed here, immediately before the change and after approval, so the\n // recorded contents are what was on disk when the tool ran.\n await this.captureWrites(request?.writes ?? []);\n\n try {\n const result = await tool.execute(input, ctx);\n const after = await this.options.hooks?.postToolUse(\n call.toolName,\n input,\n result.output,\n signal,\n );\n if (after) this.pending.push(hookEvent('PostToolUse', after));\n return {\n type: 'tool_result',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n output: withHookContext(result.output, after?.context ?? []),\n ...(result.isError ? { isError: true } : {}),\n };\n } catch (error) {\n // A failing tool is data for the model, not a crash: it is expected to read\n // the message and try something else.\n const message =\n error instanceof ToolInputError\n ? error.message\n : `${call.toolName} failed: ${(error as Error).message}`;\n return errorPart(call, message);\n }\n }\n\n /**\n * Asks before doing something the turn did not say it would do.\n *\n * The prompt carries the real diff or command, exactly as an ordinary\n * permission prompt does - a scope prompt that summarised the change would\n * hide the thing the user is being asked to judge. \"Always\" widens the scope\n * for this session only; unlike a permission choice it persists no rule,\n * because the next task will have a different scope.\n */\n private async confirmScope(concern: ScopeConcern, request: PermissionRequest): Promise<boolean> {\n const prompt = this.promptFn;\n if (!prompt) return false;\n const choice = await prompt(\n {\n tool: 'Scope',\n target: request.target,\n title: `outside the declared scope: ${request.title}`,\n detail: `${concern.summary}\\n\\n${request.detail}`,\n ...(request.writes ? { writes: request.writes } : {}),\n },\n concern.summary,\n );\n if (choice.kind === 'deny') return false;\n if (choice.kind === 'allow-always') {\n this.scope.widen(concern, concern.kind === 'out-of-scope-file' ? concern.path : undefined);\n }\n return true;\n }\n\n /**\n * The end-of-turn check: run the project's tests, and make the model compare\n * what was asked for with what changed before it answers.\n *\n * It runs only on a turn that changed something, and at most twice, so a\n * model that keeps editing after a failure still terminates. The output is\n * handed over verbatim - a summary of it is exactly where \"tests pass\" from an\n * agent that never ran them hides.\n */\n private async selfCheck(\n signal: AbortSignal,\n ): Promise<{ message: Message; verification?: VerificationResult } | undefined> {\n if (!this.mutatedSinceCheck || this.checksThisTurn >= 2 || signal.aborted) return undefined;\n this.mutatedSinceCheck = false;\n this.checksThisTurn++;\n\n const configured = this.options.verify;\n const detected =\n configured?.enabled === false\n ? undefined\n : configured?.command\n ? { command: configured.command, source: 'configuration' }\n : await detectTestCommand(this.options.cwd);\n\n const verification = detected\n ? await runVerification(detected.command, detected.source, {\n cwd: this.options.cwd,\n env: this.options.env ?? process.env,\n signal,\n ...(configured?.timeoutMs !== undefined ? { timeoutMs: configured.timeoutMs } : {}),\n })\n : undefined;\n\n const evidence = verification\n ? `\\`${verification.command}\\` (from ${verification.source}) exited ` +\n `${verification.timedOut ? 'after timing out' : String(verification.exitCode)}. Its ` +\n `output, verbatim:\\n\\n${verification.output || '(no output)'}`\n : 'No test command was detected for this project, so nothing was verified. Say that ' +\n 'plainly rather than implying the change works.';\n\n return {\n message: {\n role: 'user',\n content: [\n {\n type: 'text',\n text:\n `<self-check>\\nThis turn changed files. Before you answer, compare the original ` +\n `request with what actually changed, and report anything you skipped, narrowed, ` +\n `left unverified or that is failing. Four of five things done is that report, ` +\n `not \"done\".\\n\\n${evidence}\\n\\nIf something is failing, fix it or say what is ` +\n `failing and why - do not describe the run as passing. This message is from the ` +\n `harness, not the user; answer them, not it.\\n</self-check>`,\n },\n ],\n },\n ...(verification ? { verification } : {}),\n };\n }\n\n /** Records pre-change contents for paths not already captured in this batch. */\n private async captureWrites(paths: string[]): Promise<void> {\n const shadow = this.options.shadow;\n if (!shadow) return;\n for (const path of paths) {\n if (this.batchSnapshot.some((file) => file.path === path)) continue;\n this.batchSnapshot.push({ path, before: await shadow.hashFile(path) });\n }\n }\n\n /**\n * Writes one snapshot record per tool batch. Per-batch rather than per-call so\n * undo restores a coherent unit: a `multi_edit` across three files, or an edit\n * plus the command that formatted it, is one step back rather than three.\n */\n private async commitSnapshot(calls: ToolCallPart[]): Promise<void> {\n const shadow = this.options.shadow;\n if (!shadow || this.batchSnapshot.length === 0) return;\n const label = calls.map((call) => call.toolName).join(', ');\n await shadow.record(this.batchSnapshot, label).catch(() => undefined);\n this.batchSnapshot = [];\n }\n\n /**\n * The messages for one request: the live tail of history, any compaction\n * preamble in front of it, then the cheap shapers. A copy, never the live\n * array - an adapter that reads messages lazily would otherwise see entries\n * appended after the request was made.\n */\n private requestMessages(): Message[] {\n const tail = this.history.slice(this.compactedAt);\n const base = this.compactionPreamble ? [this.compactionPreamble, ...tail] : tail;\n return shapeMessages(base, { ...DEFAULT_SHAPER_OPTIONS, ...this.options.shapers });\n }\n\n /** Compacts if the shaped request would still be too large for the window. */\n private async *prepareRequest(signal: AbortSignal): AsyncGenerator<AgentEvent> {\n const window = this.resolved.model.contextWindow ?? 0;\n const policy = { threshold: 0.8, keepRecentMessages: 8, ...this.options.compaction };\n const shaped = this.requestMessages();\n if (!shouldCompact(shaped, this.effectiveSystem, window, policy)) return;\n yield* this.runCompaction(signal);\n }\n\n /**\n * Compacts now, whatever the window is at.\n *\n * `/compact` is the same operation the 80% threshold performs, asked for\n * early - before a long tool result pushes the session over on its own. It\n * appends, like every other compaction: nothing in history is rewritten.\n */\n async *compactNow(signal: AbortSignal): AsyncGenerator<AgentEvent> {\n yield* this.runCompaction(signal);\n }\n\n private async *runCompaction(signal: AbortSignal): AsyncGenerator<AgentEvent> {\n const window = this.resolved.model.contextWindow ?? 0;\n const policy = { threshold: 0.8, keepRecentMessages: 8, ...this.options.compaction };\n const shaped = this.requestMessages();\n\n const result = await compact({\n messages: shaped,\n system: this.effectiveSystem,\n contextWindow: window,\n policy,\n todos: this.todos\n .list()\n .filter((todo) => todo.status !== 'done')\n .map((todo) => todo.text),\n filesTouched: this.touchedFiles,\n summarize: (messages) => this.summarise(messages, signal),\n }).catch(() => undefined);\n if (!result) return;\n\n // The cut is expressed against the shaped array, which has the same length\n // and order as the tail it was built from, minus the preamble.\n const offset = this.compactionPreamble ? 1 : 0;\n this.compactedAt += Math.max(0, result.replaced - offset);\n this.compactionPreamble = result.messages[0];\n this.lastRequestTokens = estimateTokens(this.requestMessages(), this.effectiveSystem);\n // The cut is reported as a history index, not as a count of shaped\n // messages: the session layer maps it back to the entry ids the summary\n // stands in for, and those are indexed by history position.\n await this.options.onCompaction?.(result.summary, this.compactedAt);\n yield { type: 'compacted', replaced: result.replaced, summary: result.summary };\n }\n\n /** One extra model call, with no tools: the summary that compaction stands on. */\n private async summarise(messages: Message[], signal: AbortSignal): Promise<string> {\n let text = '';\n for await (const event of streamModel(this.options.registry, this.resolved, {\n system: SUMMARY_PROMPT,\n messages: [...messages, { role: 'user', content: [{ type: 'text', text: SUMMARY_PROMPT }] }],\n abortSignal: signal,\n })) {\n if (event.type === 'text_delta') text += event.text;\n if (event.type === 'finish') {\n for (const part of event.message.content) {\n if (part.type === 'text' && text === '') text = part.text;\n }\n }\n if (event.type === 'error') throw new Error(event.error.message);\n }\n if (text.trim() === '') throw new Error('the model returned an empty summary');\n return text;\n }\n\n private context(signal: AbortSignal): ToolContext {\n return {\n cwd: this.options.cwd,\n signal,\n todos: this.todos,\n jobs: this.jobs,\n scope: this.scope,\n env: this.options.env ?? process.env,\n ask: async (question, choices) => {\n const ask = this.askFn;\n if (!ask) {\n throw new ToolInputError(\n 'this session cannot ask the user a question; decide with the information you have ' +\n 'and state the assumption you made',\n );\n }\n return ask(question, choices);\n },\n restrictTools: (names) => {\n this.toolRestriction = names;\n },\n // Absent on a subagent, so nesting stops at one level: an agent that could\n // spawn agents that spawn agents has no bound anyone can reason about.\n ...(this.options.onCost\n ? {}\n : { runSubagent: (request, sub) => this.subagent(request, sub) }),\n markRead: (path) => {\n this.readFiles.add(path);\n },\n hasRead: (path) => this.readFiles.has(path),\n };\n }\n\n /**\n * Runs a nested agent and returns its answer.\n *\n * What it inherits is the whole design. Permission mode and rules, so nothing\n * it does escapes the gate. The parent's ScopeContract object, so a file\n * nobody declared still prompts. The parent's cost total, so one session has\n * one number. What it does not inherit is context: it starts empty and is\n * given the prompt, which is the point - and it hands back an answer, not a\n * transcript, so the parent's window holds the conclusion rather than the\n * work.\n */\n private async subagent(request: SubagentRequest, signal: AbortSignal): Promise<SubagentResult> {\n const allowed = new Set(request.tools?.length ? request.tools : DEFAULT_SUBAGENT_TOOLS);\n // Intersection, never a union: a subagent cannot be handed a tool the parent\n // session does not have, whoever named it.\n const tools = this.tools\n .list()\n .filter((tool) => allowed.has(tool.name) && tool.name !== 'task');\n\n // The parent's persistence callbacks are dropped rather than passed on: a\n // subagent's messages are not the session's transcript, and writing them\n // there would replay them on the next resume as if the user had said them.\n const { onMessage: _persist, onCompaction: _summarised, ...inherited } = this.options;\n\n const child = new Agent({\n ...inherited,\n system:\n // The plan travels with it: a subagent working outside the plan the user\n // approved is the same hole as one working outside the declared scope.\n `${this.effectiveSystem}\\n\\n<subagent>\\nYou are running as a subagent for one ` +\n `self-contained task: ${request.description}. You cannot see the conversation that ` +\n 'sent you here, and only your final message is returned - so answer in full, and ' +\n 'say plainly what you could not find or could not do rather than implying success.' +\n '\\n</subagent>',\n tools,\n scopeContract: this.scope,\n onCost: (costUsd) => this.addCost(costUsd),\n maxSteps: this.options.subagentMaxSteps ?? 30,\n });\n child.setPrompt(this.promptFn);\n child.setAsk(this.askFn);\n\n let text = '';\n let steps = 0;\n let stoppedBecause: SubagentResult['stoppedBecause'];\n const before = this.totalCostUsd;\n\n for await (const event of child.runTurn(request.prompt, signal)) {\n if (event.type === 'model_start') steps++;\n if (event.type === 'message') {\n const said = event.message.content\n .filter((part) => part.type === 'text')\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join('');\n if (said.trim() !== '') text = said;\n }\n if (event.type === 'turn_end' && event.reason !== 'stop') stoppedBecause = event.reason;\n if (event.type === 'error') stoppedBecause = 'error';\n // Prompts and scope questions the subagent raised are the user's to see.\n if (event.type === 'permission' || event.type === 'scope_concern' || event.type === 'hook') {\n this.pending.push(event);\n }\n }\n child.dispose();\n\n const costUsd = this.totalCostUsd - before;\n this.pending.push({ type: 'subagent', description: request.description, steps, costUsd });\n return { text: text.trim(), steps, costUsd, ...(stoppedBecause ? { stoppedBecause } : {}) };\n }\n\n private async append(message: Message): Promise<void> {\n this.history.push(message);\n await this.options.onMessage?.(message);\n }\n}\n\n/**\n * The line the model said before reaching for a tool.\n *\n * The first line of the text it emitted alongside the calls, not all of it: the\n * point of the intent line is that one line of output is enough to catch a wrong\n * turn, and a paragraph is not one line.\n */\nfunction intentOf(assistant: Message): string | undefined {\n const said = assistant.content\n .filter((part) => part.type === 'text')\n .map((part) => (part.type === 'text' ? part.text : ''))\n .join(' ')\n .trim();\n if (said === '') return undefined;\n return said\n .split(/\\r?\\n/)\n .find((line) => line.trim() !== '')\n ?.trim();\n}\n\nfunction hookEvent(event: HookEvent, outcome: HookOutcome): AgentEvent {\n return {\n type: 'hook',\n event,\n ...(outcome.decision === 'deny' && outcome.reason ? { blocked: outcome.reason } : {}),\n problems: outcome.problems,\n };\n}\n\n/**\n * A PostToolUse hook's output, attached to the result the model reads. Appended\n * rather than substituted: the tool's own output is what actually happened, and\n * a hook commenting on it must not be able to replace it.\n */\nfunction withHookContext(output: ToolResultOutput, context: string[]): ToolResultOutput {\n if (context.length === 0) return output;\n const note = `<hook-context>\\n${context.join('\\n\\n')}\\n</hook-context>`;\n if (output.type === 'text') return { type: 'text', value: `${output.value}\\n\\n${note}` };\n return {\n type: 'content',\n value: [\n ...(output.type === 'content'\n ? output.value\n : [{ type: 'text' as const, text: JSON.stringify(output.value) }]),\n { type: 'text', text: note },\n ],\n };\n}\n\nfunction errorPart(call: ToolCallPart, message: string): ToolResultPart {\n return {\n type: 'tool_result',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n output: { type: 'text', value: message },\n isError: true,\n };\n}\n\nfunction asResult(part: ToolResultPart): ToolResult {\n return { output: part.output, ...(part.isError ? { isError: true } : {}) };\n}\n\n/**\n * The budget question, asked through whatever the session uses to ask the user\n * anything else. A session with no way to ask - headless, or a subagent - stops\n * rather than blocking on a terminal that is not there.\n */\nfunction defaultBudgetPrompt(\n ask: ((question: string, options?: string[]) => Promise<string>) | undefined,\n): (spentUsd: number, limitUsd: number) => Promise<number | undefined> {\n if (!ask) return async () => undefined;\n return async (spentUsd, limitUsd) => {\n const answer = await ask(\n `This session has spent $${spentUsd.toFixed(2)} against a $${limitUsd.toFixed(2)} budget. ` +\n 'Continue?',\n ['Stop here', `Raise the budget to $${(limitUsd * 2).toFixed(2)}`, 'Remove the budget'],\n );\n if (answer.startsWith('Raise')) return limitUsd * 2;\n if (answer.startsWith('Remove')) return Number.MAX_SAFE_INTEGER;\n return undefined;\n };\n}\n\nfunction userPromptText(prompt: UserPrompt): string {\n if (typeof prompt === 'string') return prompt;\n return prompt\n .map((part) => (part.type === 'text' ? part.text : `[${part.mediaType} image]`))\n .join('\\n\\n');\n}\n",
|
|
59
59
|
"import { readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { configDir } from '@earshot/providers';\nimport type { RuleScope } from '../permissions/rules.ts';\nimport { LOCAL_SETTINGS, PROJECT_SETTINGS } from '../permissions/settings.ts';\n\n/**\n * The events a hook can be attached to.\n *\n * Deliberately a closed set matching Claude Code's names, so hooks people\n * already have keep working. Events earshot has no equivalent for are not\n * invented here; a hook attached to one is reported rather than silently never\n * firing.\n */\nexport const HOOK_EVENTS = [\n 'SessionStart',\n 'UserPromptSubmit',\n 'PreToolUse',\n 'PostToolUse',\n 'Stop',\n 'SessionEnd',\n] as const;\n\nexport type HookEvent = (typeof HOOK_EVENTS)[number];\n\nexport interface HookDefinition {\n event: HookEvent;\n /** Tool-name pattern for the tool events; absent means every tool. */\n matcher?: string;\n command: string;\n timeoutMs: number;\n /** Which settings file it came from, for explaining what ran. */\n scope: RuleScope;\n}\n\nexport interface LoadedHooks {\n hooks: HookDefinition[];\n problems: string[];\n}\n\nexport const DEFAULT_HOOK_TIMEOUT_MS = 60_000;\n\ninterface SettingsShape {\n hooks?: Record<string, unknown>;\n}\n\nfunction settingsPath(scope: RuleScope, cwd: string): string {\n if (scope === 'global') return join(configDir(), 'settings.json');\n if (scope === 'project') return join(cwd, PROJECT_SETTINGS);\n return join(cwd, LOCAL_SETTINGS);\n}\n\n/**\n * Hooks from every scope, concatenated rather than overriding one another - the\n * same rule permission rules follow, and for the same reason: a project's\n * checked-in settings must not be able to remove a hook the user set globally.\n */\nexport async function loadHooks(cwd: string): Promise<LoadedHooks> {\n const hooks: HookDefinition[] = [];\n const problems: string[] = [];\n\n for (const scope of ['global', 'project', 'local'] as RuleScope[]) {\n const path = settingsPath(scope, cwd);\n const raw = await readFile(path, 'utf8').catch(() => undefined);\n if (raw === undefined) continue;\n\n let file: SettingsShape;\n try {\n file = JSON.parse(raw) as SettingsShape;\n } catch {\n // The permission loader reports the same file; saying it twice is noise.\n continue;\n }\n\n for (const [event, groups] of Object.entries(file.hooks ?? {})) {\n if (!(HOOK_EVENTS as readonly string[]).includes(event)) {\n problems.push(`${path}: earshot has no \"${event}\" hook event, so it will never fire`);\n continue;\n }\n if (!Array.isArray(groups)) {\n problems.push(`${path}: \"hooks.${event}\" must be a list`);\n continue;\n }\n for (const group of groups) {\n hooks.push(...parseGroup(group, event as HookEvent, scope, path, problems));\n }\n }\n }\n\n return { hooks, problems };\n}\n\nfunction parseGroup(\n group: unknown,\n event: HookEvent,\n scope: RuleScope,\n path: string,\n problems: string[],\n): HookDefinition[] {\n if (typeof group !== 'object' || group === null) {\n problems.push(`${path}: a \"${event}\" entry is not an object`);\n return [];\n }\n const entry = group as { matcher?: unknown; hooks?: unknown };\n const matcher =\n typeof entry.matcher === 'string' && entry.matcher !== '' ? entry.matcher : undefined;\n if (!Array.isArray(entry.hooks)) {\n problems.push(`${path}: a \"${event}\" entry has no \"hooks\" list`);\n return [];\n }\n\n const out: HookDefinition[] = [];\n for (const hook of entry.hooks) {\n if (typeof hook !== 'object' || hook === null) continue;\n const item = hook as { type?: unknown; command?: unknown; timeout?: unknown };\n if (item.type !== undefined && item.type !== 'command') {\n problems.push(`${path}: only \"command\" hooks are supported, not \"${String(item.type)}\"`);\n continue;\n }\n if (typeof item.command !== 'string' || item.command.trim() === '') {\n problems.push(`${path}: a \"${event}\" hook has no command`);\n continue;\n }\n out.push({\n event,\n ...(matcher !== undefined ? { matcher } : {}),\n command: item.command,\n // Claude Code's field is seconds; a hook config people already have must\n // not become a sixty-times-longer timeout here.\n timeoutMs:\n typeof item.timeout === 'number' && item.timeout > 0\n ? item.timeout * 1000\n : DEFAULT_HOOK_TIMEOUT_MS,\n scope,\n });\n }\n return out;\n}\n",
|
|
60
60
|
"import { exec } from '../tools/exec.ts';\nimport { resolveShell } from '../tools/shell.ts';\nimport type { HookDefinition, HookEvent } from './config.ts';\n\n/** The JSON a hook reads on stdin. Field names match Claude Code's. */\nexport interface HookInput {\n session_id: string;\n transcript_path?: string;\n cwd: string;\n hook_event_name: HookEvent;\n tool_name?: string;\n tool_input?: unknown;\n tool_response?: unknown;\n prompt?: string;\n stop_hook_active?: boolean;\n}\n\nexport interface HookOutcome {\n /**\n * What the hooks decided. `deny` blocks; `ask` forces a prompt even where a\n * rule would allow. There is no `allow`: see `applyJson`.\n */\n decision?: 'deny' | 'ask';\n reason?: string;\n /** Text to put in front of the model. */\n context: string[];\n /** Shown to the user. A hook that failed is reported, never obeyed. */\n problems: string[];\n /** A hook asked the session to stop. */\n stop?: string;\n}\n\nexport const MAX_HOOK_OUTPUT_CHARS = 10_000;\n\nconst EMPTY: HookOutcome = { context: [], problems: [] };\n\nexport function matches(hook: HookDefinition, toolName: string | undefined): boolean {\n if (hook.matcher === undefined || hook.matcher === '*') return true;\n if (toolName === undefined) return false;\n try {\n return new RegExp(`^(?:${hook.matcher})$`).test(toolName);\n } catch {\n // A matcher that is not a regex is treated as a literal name rather than\n // matching everything, which is the failure that would silently run a hook\n // on every tool the agent has.\n return hook.matcher === toolName;\n }\n}\n\nexport interface RunOptions {\n cwd: string;\n env: NodeJS.ProcessEnv;\n signal?: AbortSignal;\n}\n\n/**\n * Runs every hook attached to an event and folds their answers into one.\n *\n * Hooks run concurrently: they are independent, and a chain of them run in\n * series would put the sum of their timeouts in front of every tool call. A\n * hook that fails, times out, or prints something unparseable contributes a\n * problem and nothing else - the only things that can stop a tool are an\n * explicit block and exit code 2.\n */\nexport async function runHooks(\n hooks: HookDefinition[],\n input: HookInput,\n options: RunOptions,\n): Promise<HookOutcome> {\n if (hooks.length === 0) return EMPTY;\n\n const shell = resolveShell(options.env);\n const payload = JSON.stringify(input);\n const outcome: HookOutcome = { context: [], problems: [] };\n\n const results = await Promise.all(\n hooks.map(async (hook) => {\n try {\n const result = await exec(shell.file, [...shell.args, hook.command], {\n cwd: options.cwd,\n env: options.env,\n timeoutMs: hook.timeoutMs,\n stdin: payload,\n ...(options.signal ? { signal: options.signal } : {}),\n });\n return { hook, result };\n } catch (error) {\n return { hook, failure: (error as Error).message };\n }\n }),\n );\n\n for (const entry of results) {\n const label = `hook ${entry.hook.event} (${entry.hook.scope}): ${entry.hook.command}`;\n if ('failure' in entry) {\n outcome.problems.push(`${label} could not run: ${entry.failure}`);\n continue;\n }\n const { result } = entry;\n if (result.timedOut) {\n outcome.problems.push(`${label} timed out and was killed; it did not block anything`);\n continue;\n }\n\n // Exit 2 is the blocking convention. stderr is the reason, because that is\n // where a script that means to explain itself writes.\n if (result.code === 2) {\n outcome.decision = 'deny';\n outcome.reason = cap(result.stderr.trim() || `${label} blocked this`);\n continue;\n }\n if (result.code !== 0) {\n outcome.problems.push(\n `${label} exited ${result.code ?? 'on a signal'}: ${cap(result.stderr.trim(), 500)}`,\n );\n continue;\n }\n\n applyJson(entry.hook, result.stdout, outcome);\n }\n\n return outcome;\n}\n\n/**\n * Reads a hook's stdout.\n *\n * The deliberate deviation from Claude Code is here: a hook may deny, and it may\n * downgrade an allow to a prompt, but it may never grant. `\"decision\": \"approve\"`\n * and `permissionDecision: \"allow\"` are read and ignored, with a line saying so.\n * A hook command lives in a settings file, including a project's checked-in one,\n * so a hook that could approve would be a repository granting itself permissions\n * the user never gave - which is the thing deny-first exists to prevent.\n */\nfunction applyJson(hook: HookDefinition, stdout: string, outcome: HookOutcome): void {\n const text = stdout.trim();\n if (text === '') return;\n\n let json: Record<string, unknown> | undefined;\n if (text.startsWith('{')) {\n try {\n const parsed = JSON.parse(text) as unknown;\n if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {\n json = parsed as Record<string, unknown>;\n }\n } catch {\n // Left undefined: unparseable output is treated as the plain text below\n // rather than as a failure, since a hook printing a log line is normal.\n }\n }\n\n if (!json) {\n outcome.context.push(cap(text));\n return;\n }\n\n const specific = (json.hookSpecificOutput ?? {}) as Record<string, unknown>;\n const granted = json.decision === 'approve' || specific.permissionDecision === 'allow';\n if (granted) {\n outcome.problems.push(\n `${hook.command} tried to approve a call; hooks in earshot can block or ask, ` +\n 'never grant, so the decision was left to the permission rules',\n );\n }\n\n const blocked = json.decision === 'block' || specific.permissionDecision === 'deny';\n const asked = specific.permissionDecision === 'ask';\n if (blocked) {\n outcome.decision = 'deny';\n outcome.reason = cap(\n String(json.reason ?? specific.permissionDecisionReason ?? `${hook.command} blocked this`),\n );\n } else if (asked && outcome.decision !== 'deny') {\n outcome.decision = 'ask';\n outcome.reason ??= cap(String(specific.permissionDecisionReason ?? `${hook.command} asked`));\n }\n\n if (json.continue === false) {\n outcome.stop = cap(String(json.stopReason ?? `${hook.command} stopped the session`), 500);\n }\n if (typeof specific.additionalContext === 'string') {\n outcome.context.push(cap(specific.additionalContext));\n }\n if (typeof json.systemMessage === 'string') {\n outcome.problems.push(cap(json.systemMessage, 500));\n }\n}\n\nfunction cap(value: string, limit = MAX_HOOK_OUTPUT_CHARS): string {\n return value.length <= limit ? value : `${value.slice(0, limit)}\\n[... truncated by earshot ...]`;\n}\n",
|
|
61
61
|
"import type { HookDefinition, HookEvent } from './config.ts';\nimport { type HookInput, type HookOutcome, matches, runHooks } from './run.ts';\n\nexport interface HookRunnerOptions {\n cwd: string;\n env: NodeJS.ProcessEnv;\n sessionId: string;\n transcriptPath?: string;\n}\n\nconst NOTHING: HookOutcome = { context: [], problems: [] };\n\n/**\n * The agent's view of hooks: one call per event, and an outcome that says what\n * to do.\n *\n * What each event may do is the contract, and it is not symmetric:\n *\n * - `PreToolUse` may block a call or force a prompt for it. It may not approve\n * one - see `applyJson` in run.ts for why.\n * - `UserPromptSubmit` may block the prompt, and may add context to it.\n * - `PostToolUse` may only observe and add context: the tool has already run,\n * and a hook pretending otherwise would be lying to the model about the state\n * of the world.\n * - `Stop` may ask for one more model call, once per turn, so a hook cannot loop\n * the agent forever.\n * - `SessionStart` and `SessionEnd` observe.\n */\nexport class HookRunner {\n private stopBlocked = false;\n\n constructor(\n private readonly hooks: HookDefinition[],\n private readonly options: HookRunnerOptions,\n ) {}\n\n get isEmpty(): boolean {\n return this.hooks.length === 0;\n }\n\n /** True when any hook is attached to this event, so callers can skip the work. */\n has(event: HookEvent): boolean {\n return this.hooks.some((hook) => hook.event === event);\n }\n\n beginTurn(): void {\n this.stopBlocked = false;\n }\n\n async preToolUse(toolName: string, input: unknown, signal?: AbortSignal): Promise<HookOutcome> {\n return this.run('PreToolUse', toolName, { tool_name: toolName, tool_input: input }, signal);\n }\n\n async postToolUse(\n toolName: string,\n input: unknown,\n response: unknown,\n signal?: AbortSignal,\n ): Promise<HookOutcome> {\n const outcome = await this.run(\n 'PostToolUse',\n toolName,\n { tool_name: toolName, tool_input: input, tool_response: response },\n signal,\n );\n // A PostToolUse block is downgraded to context: the call already happened,\n // and reporting it as blocked would tell the model something untrue.\n if (outcome.decision === 'deny') {\n const { decision: _blocked, reason: _reason, ...rest } = outcome;\n return {\n ...rest,\n context: [...outcome.context, outcome.reason ?? 'a hook objected to this result'],\n };\n }\n return outcome;\n }\n\n async userPromptSubmit(prompt: string, signal?: AbortSignal): Promise<HookOutcome> {\n return this.run('UserPromptSubmit', undefined, { prompt }, signal);\n }\n\n /**\n * Asks whether the turn may end. Answered at most once per turn: a hook that\n * could block every stop would keep the agent running - and spending - with no\n * way for the user to get a word in.\n */\n async stop(signal?: AbortSignal): Promise<HookOutcome> {\n if (this.stopBlocked) return NOTHING;\n const outcome = await this.run(\n 'Stop',\n undefined,\n { stop_hook_active: this.stopBlocked },\n signal,\n );\n if (outcome.decision === 'deny') this.stopBlocked = true;\n return outcome;\n }\n\n async sessionStart(signal?: AbortSignal): Promise<HookOutcome> {\n return this.run('SessionStart', undefined, {}, signal);\n }\n\n async sessionEnd(): Promise<HookOutcome> {\n return this.run('SessionEnd', undefined, {});\n }\n\n private run(\n event: HookEvent,\n toolName: string | undefined,\n extra: Partial<HookInput>,\n signal?: AbortSignal,\n ): Promise<HookOutcome> {\n const applicable = this.hooks.filter((hook) => hook.event === event && matches(hook, toolName));\n if (applicable.length === 0) return Promise.resolve(NOTHING);\n\n const input: HookInput = {\n session_id: this.options.sessionId,\n ...(this.options.transcriptPath ? { transcript_path: this.options.transcriptPath } : {}),\n cwd: this.options.cwd,\n hook_event_name: event,\n ...extra,\n };\n return runHooks(applicable, input, {\n cwd: this.options.cwd,\n env: this.options.env,\n ...(signal ? { signal } : {}),\n });\n }\n}\n",
|
|
62
62
|
"/**\n * Spots a correction in what the user just typed.\n *\n * Detection only proposes; nothing is remembered without the user pressing a\n * key. That asymmetry is deliberate - a false positive costs one dismissed\n * suggestion, while a silently stored wrong rule follows them into every future\n * session, and they would have no idea it was there.\n */\nexport interface MemoryCandidate {\n /** The rule, as it would be stored. */\n text: string;\n /** The sentence it was taken from, kept verbatim as provenance. */\n source: string;\n}\n\n/** Phrasings that state a standing preference rather than a one-off instruction. */\nconst RULES: RegExp[] = [\n /\\b(?:always|never)\\b[^.!?]*/i,\n /\\b(?:don'?t|do not|stop)\\s+[^.!?]*/i,\n /\\buse\\s+[^.!?]*?\\b(?:not|instead of|rather than)\\b[^.!?]*/i,\n /\\b(?:no more|prefer)\\s+[^.!?]*/i,\n /\\bi (?:already )?told you\\b[^.!?]*/i,\n];\n\n/**\n * Marks the instruction as being about this task, not about how to work in\n * general. \"Don't touch the tests in this PR\" is not a preference.\n */\nconst ONE_OFF =\n /\\b(?:this (?:time|once|file|function|test|case|pr|branch)|for now|just here|right now|in this)\\b/i;\n\nexport function detectPreference(prompt: string): MemoryCandidate | undefined {\n const text = prompt.trim();\n if (text === '' || text.length > 400) return undefined;\n\n for (const sentence of text.split(/(?<=[.!?\\n])\\s+/)) {\n const trimmed = sentence.trim();\n if (trimmed === '' || ONE_OFF.test(trimmed)) continue;\n for (const rule of RULES) {\n const match = rule.exec(trimmed);\n if (!match) continue;\n const captured = match[0].trim().replace(/[,;:]$/, '');\n // Two words is a fragment, not a rule worth carrying into every session.\n if (captured.split(/\\s+/).length < 3) continue;\n return { text: capitalise(captured), source: trimmed };\n }\n }\n return undefined;\n}\n\nfunction capitalise(text: string): string {\n const cleaned = text.replace(/^i (?:already )?told you (?:to |that )?/i, '');\n return cleaned.charAt(0).toUpperCase() + cleaned.slice(1);\n}\n",
|
|
63
63
|
"import { mkdir, readdir, readFile, stat, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { dataDir } from '@earshot/providers';\nimport { projectKey } from '../session/store.ts';\nimport { exec, hasExecutable } from '../tools/exec.ts';\nimport { displayPath } from '../tools/fs-paths.ts';\n\n/**\n * Per-batch snapshots of the files a turn is about to change, stored in a git\n * object database that lives outside the user's repository.\n *\n * The user's own repo is never touched: no commits, no stash, no index changes,\n * no reflog entries. An agent that commits to undo its own work is an agent that\n * has silently rewritten the user's history, and `git log` becomes unreadable.\n * `GIT_DIR` points at our own directory under the data dir instead, and the work\n * tree is the project, so `git hash-object` and `git cat-file` are all we need.\n *\n * Snapshots are of specific files, not of the whole tree: a turn touches a\n * handful of files and hashing the repository per batch would dominate the cost\n * of the batch itself.\n */\nexport interface Snapshot {\n id: string;\n timestamp: string;\n label: string;\n files: SnapshotFile[];\n /**\n * The session that took this snapshot.\n *\n * The store is keyed by working directory, so every session in a project\n * writes into the same one. Without this field `/undo` walked back through\n * whatever was most recent in the directory, which after a crash meant\n * reaching into a previous session's batches: a user who resumed and pressed\n * undo reverted work they had never seen this session do.\n *\n * Absent on snapshots written before this field existed. Those cannot be\n * attributed to any session, so they are unreachable rather than being\n * credited to the current one - crediting them would recreate exactly the\n * bug the field exists to close.\n */\n sessionId?: string;\n}\n\nexport interface SnapshotFile {\n /** Absolute path in the work tree. */\n path: string;\n /** Blob hash of the contents before the batch, or null when it did not exist. */\n before: string | null;\n}\n\n/**\n * Blobs are round-tripped as UTF-8 text, which is what every tool in this harness\n * writes. A binary file edited by a shell command would not survive a restore, so\n * snapshots are taken of the paths the file tools declare, not of arbitrary ones.\n */\nconst MAX_RESTORE_BYTES = 64 * 1024 * 1024;\n\nexport function shadowDir(cwd: string): string {\n return join(dataDir(), 'undo', projectKey(cwd));\n}\n\nexport class ShadowGit {\n private constructor(\n readonly gitDir: string,\n readonly cwd: string,\n /** Stamped onto new snapshots and used to filter `list()`. */\n readonly sessionId?: string,\n ) {}\n\n /**\n * Returns `undefined` when git is not installed rather than throwing: undo is\n * a convenience, and an agent that refuses to edit files because it cannot\n * snapshot them is worse than one that edits without an undo history. Callers\n * treat a missing store as \"no snapshots available\".\n */\n static async open(cwd: string, sessionId?: string): Promise<ShadowGit | undefined> {\n if (!(await hasExecutable('git', cwd))) return undefined;\n\n const gitDir = shadowDir(cwd);\n const initialised = await stat(join(gitDir, 'HEAD')).catch(() => undefined);\n if (!initialised) {\n await mkdir(gitDir, { recursive: true });\n const result = await exec('git', ['init', '--bare', '--quiet', gitDir], { cwd });\n if (result.code !== 0) return undefined;\n }\n await mkdir(join(gitDir, 'snapshots'), { recursive: true });\n return new ShadowGit(gitDir, cwd, sessionId);\n }\n\n private run(args: string[], maxBytes?: number) {\n // GIT_DIR and GIT_WORK_TREE are set per invocation rather than by running\n // inside the shadow directory: the object store is bare and elsewhere, while\n // the files being hashed are in the project.\n return exec('git', args, {\n cwd: this.cwd,\n env: { ...process.env, GIT_DIR: this.gitDir, GIT_WORK_TREE: this.cwd },\n ...(maxBytes !== undefined ? { maxBytes } : {}),\n });\n }\n\n /**\n * Stores one file's current contents and returns its blob hash, or null when\n * the file does not exist yet - which is how a creation is recorded.\n */\n async hashFile(path: string): Promise<string | null> {\n const info = await stat(path).catch(() => undefined);\n if (!info?.isFile()) return null;\n const result = await this.run(['hash-object', '-w', '--', path]);\n if (result.code !== 0) return null;\n return result.stdout.trim() || null;\n }\n\n /**\n * Snapshots the given paths as they are now, before a batch modifies them.\n * Must be called before the tools run, which is why the loop hands it the\n * `writes` from each permission request rather than discovering paths after.\n */\n async snapshot(paths: string[], label: string): Promise<Snapshot | undefined> {\n const unique = [...new Set(paths)];\n if (unique.length === 0) return undefined;\n\n const files: SnapshotFile[] = [];\n for (const path of unique) files.push({ path, before: await this.hashFile(path) });\n return this.record(files, label);\n }\n\n /**\n * Writes a snapshot record from hashes captured earlier. The loop hashes each\n * file immediately before the tool that changes it, then records the batch as\n * one unit at the end, so undo restores a whole batch rather than half of one.\n */\n async record(files: SnapshotFile[], label: string): Promise<Snapshot | undefined> {\n if (files.length === 0) return undefined;\n\n const snapshot: Snapshot = {\n id: `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`,\n timestamp: new Date().toISOString(),\n label,\n files,\n ...(this.sessionId !== undefined ? { sessionId: this.sessionId } : {}),\n };\n await writeFile(\n join(this.gitDir, 'snapshots', `${snapshot.id}.json`),\n `${JSON.stringify(snapshot, null, 2)}\\n`,\n 'utf8',\n );\n return snapshot;\n }\n\n /**\n * Snapshots this session may undo, oldest first.\n *\n * Scoped rather than unscoped by default, so the safe reading is the one a\n * caller gets without asking. A store opened without a session id sees\n * nothing: it cannot tell its own batches from another session's, and\n * guessing is what produced the bug.\n */\n async list(): Promise<Snapshot[]> {\n const all = await this.listAll();\n if (this.sessionId === undefined) return [];\n return all.filter((snapshot) => snapshot.sessionId === this.sessionId);\n }\n\n /** Every snapshot in the directory, whichever session wrote it. */\n async listAll(): Promise<Snapshot[]> {\n const dir = join(this.gitDir, 'snapshots');\n const names = await readdir(dir).catch(() => []);\n const snapshots: Snapshot[] = [];\n for (const name of names) {\n if (!name.endsWith('.json')) continue;\n const raw = await readFile(join(dir, name), 'utf8').catch(() => undefined);\n if (raw === undefined) continue;\n try {\n snapshots.push(JSON.parse(raw) as Snapshot);\n } catch {\n // A snapshot written during a crash; the rest are still usable.\n }\n }\n return snapshots.sort((a, b) => a.timestamp.localeCompare(b.timestamp));\n }\n\n /**\n * Reads a stored blob back. The output cap is raised well above the default,\n * which exists to stop a runaway tool from filling the context window - here it\n * would silently truncate the file being restored, which is data loss.\n */\n async contents(hash: string): Promise<string | undefined> {\n const result = await this.run(['cat-file', 'blob', hash], MAX_RESTORE_BYTES);\n return result.code === 0 ? result.stdout : undefined;\n }\n\n /**\n * Restores every file in a snapshot to its recorded contents. A file the batch\n * created is left in place rather than deleted - removing a path on the user's\n * behalf is not something an undo should do silently - and comes back in\n * `wasCreated` so the caller can say which files it did not touch.\n */\n async restore(snapshot: Snapshot): Promise<{ restored: string[]; wasCreated: string[] }> {\n const restored: string[] = [];\n const wasCreated: string[] = [];\n\n for (const file of snapshot.files) {\n if (file.before === null) {\n wasCreated.push(displayPath(this.cwd, file.path));\n continue;\n }\n const content = await this.contents(file.before);\n if (content === undefined) continue;\n await writeFile(file.path, content, 'utf8');\n restored.push(displayPath(this.cwd, file.path));\n }\n return { restored, wasCreated };\n }\n}\n",
|
|
64
64
|
"import { createHash, randomUUID } from 'node:crypto';\nimport { appendFile, mkdir, readdir, readFile, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { Message } from '@earshot/providers';\nimport { sessionsDir } from '@earshot/providers';\n\n/**\n * One line of a session transcript.\n *\n * Entries form a tree rather than a list: each carries its own `id` and the `id`\n * of the entry it follows. A linear session is the degenerate case where every\n * entry has exactly one child. `/fork` and `/rewind` then become navigation -\n * appending a new entry whose parent is somewhere other than the last entry -\n * rather than rewriting the file, which is what keeps the format append-only.\n */\nexport type SessionEntry =\n | {\n type: 'meta';\n id: string;\n parentId: string | null;\n timestamp: string;\n cwd: string;\n model: string;\n version: string;\n /** Set when this session continues another one. */\n forkedFrom?: { sessionId: string; entryId: string };\n }\n | {\n type: 'message';\n id: string;\n parentId: string | null;\n timestamp: string;\n message: Message;\n }\n | {\n type: 'summary';\n id: string;\n parentId: string | null;\n timestamp: string;\n /** Compaction writes a new entry rather than replacing what it summarises. */\n text: string;\n replaces: string[];\n };\n\n/** An entry as supplied by a caller; the store assigns id, parent and timestamp. */\nexport type NewEntry =\n | {\n type: 'meta';\n cwd: string;\n model: string;\n version: string;\n forkedFrom?: { sessionId: string; entryId: string };\n }\n | { type: 'message'; message: Message }\n | { type: 'summary'; text: string; replaces: string[] };\n\nexport interface SessionInfo {\n id: string;\n path: string;\n cwd: string;\n model: string;\n updatedAt: number;\n /** First user message, for showing the user which session is which. */\n preview: string;\n}\n\n/**\n * Sessions are grouped by a hash of the working directory so `--continue` finds\n * the last session for *this* project. The hash is truncated: it disambiguates\n * directories, and a full digest makes the path unreadable for no benefit.\n */\n/**\n * Session ids sort in creation order.\n *\n * A bare UUID does not, and file mtimes tie when two sessions are written in the\n * same millisecond - which makes `--continue` pick an arbitrary one of them. A\n * base36 timestamp plus a per-process counter gives a total order for sessions\n * started by one process, and the timestamp orders the rest.\n */\nlet created = 0;\n\nexport function newSessionId(): string {\n const stamp = Date.now().toString(36).padStart(9, '0');\n const seq = (created++ % 46_656).toString(36).padStart(3, '0');\n return `${stamp}${seq}-${randomUUID().slice(0, 8)}`;\n}\n\nexport function projectKey(cwd: string): string {\n return createHash('sha256').update(cwd).digest('hex').slice(0, 16);\n}\n\nexport function projectDir(cwd: string): string {\n return join(sessionsDir(), projectKey(cwd));\n}\n\n/**\n * Append-only JSONL writer. Every write is an `appendFile` of one line, so an\n * interrupted session leaves a truncated final line rather than a corrupt file,\n * and the reader drops exactly that line.\n */\nexport class SessionStore {\n /**\n * Ids of the message entries written so far, in order. Compaction needs them\n * to say which entries its summary stands in for, and only the store knows\n * the ids - the agent counts messages, not entries.\n */\n readonly messageIds: string[] = [];\n private tail: string | null = null;\n private queue: Promise<void> = Promise.resolve();\n\n private constructor(\n readonly id: string,\n readonly path: string,\n readonly cwd: string,\n ) {}\n\n static async create(\n cwd: string,\n meta: {\n model: string;\n version: string;\n forkedFrom?: { sessionId: string; entryId: string };\n },\n ): Promise<SessionStore> {\n const id = newSessionId();\n const dir = projectDir(cwd);\n await mkdir(dir, { recursive: true });\n\n const store = new SessionStore(id, join(dir, `${id}.jsonl`), cwd);\n await store.append({\n type: 'meta',\n cwd,\n model: meta.model,\n version: meta.version,\n ...(meta.forkedFrom ? { forkedFrom: meta.forkedFrom } : {}),\n });\n return store;\n }\n\n /** Reopens an existing session for appending, continuing from its last entry. */\n static async open(path: string): Promise<SessionStore> {\n const entries = await readEntries(path);\n const meta = entries.find((entry) => entry.type === 'meta');\n if (meta?.type !== 'meta') throw new Error(`${path} has no session header`);\n\n const id =\n path\n .split(/[/\\\\]/)\n .pop()\n ?.replace(/\\.jsonl$/, '') ?? randomUUID();\n const store = new SessionStore(id, path, meta.cwd);\n store.tail = entries.at(-1)?.id ?? null;\n return store;\n }\n\n /**\n * Appends one entry. Writes are serialised through a promise chain: two\n * concurrent appends could otherwise interleave partial lines, and both would\n * claim the same parent.\n */\n append(entry: NewEntry, parentId?: string | null): Promise<string> {\n const id = randomUUID();\n\n this.queue = this.queue.then(async () => {\n // The parent is read inside the queued task, not when append() was called.\n // Reading it eagerly would give every concurrent append the same parent, so\n // twenty writes would land as twenty siblings of one entry rather than as a\n // chain - and replaying the branch would recover only the last of them.\n const line = {\n ...entry,\n id,\n parentId: parentId !== undefined ? parentId : this.tail,\n timestamp: new Date().toISOString(),\n };\n await appendFile(this.path, `${JSON.stringify(line)}\\n`, 'utf8');\n this.tail = id;\n });\n return this.queue.then(() => id);\n }\n\n appendMessage(message: Message): Promise<string> {\n const id = this.append({ type: 'message', message });\n void id.then((value) => this.messageIds.push(value));\n return id;\n }\n\n /**\n * Points the next append at an earlier entry.\n *\n * This is all a rewind is at the storage layer: nothing is removed, and the\n * entries written after it become a second branch of the same file. The old\n * branch stays readable, which is what makes rewinding safe to do casually.\n */\n rewind(entryId: string): void {\n this.tail = entryId;\n }\n\n get tailId(): string | null {\n return this.tail;\n }\n\n /** Resolves once every queued write has landed. */\n flush(): Promise<void> {\n return this.queue;\n }\n}\n\n/**\n * Reads a transcript, skipping unparseable lines rather than failing.\n *\n * A truncated last line is the normal result of a session that was killed\n * mid-write, and refusing to open the file would lose the entire history over\n * one incomplete entry.\n */\nexport async function readEntries(path: string): Promise<SessionEntry[]> {\n const raw = await readFile(path, 'utf8');\n const entries: SessionEntry[] = [];\n for (const line of raw.split('\\n')) {\n if (line.trim() === '') continue;\n try {\n entries.push(JSON.parse(line) as SessionEntry);\n } catch {\n // A partial line: nothing after it can be read either, so stop here.\n break;\n }\n }\n return entries;\n}\n\n/**\n * Walks from `leaf` back to the root, so a forked session replays the branch it\n * actually descends from rather than every entry in the file.\n */\nexport function branchTo(entries: SessionEntry[], leafId?: string): SessionEntry[] {\n const byId = new Map(entries.map((entry) => [entry.id, entry]));\n let cursor = leafId ?? entries.at(-1)?.id;\n const branch: SessionEntry[] = [];\n const seen = new Set<string>();\n\n while (cursor !== undefined && cursor !== null) {\n const entry = byId.get(cursor);\n // A cycle can only come from a corrupted file, but walking one forever is a\n // hang rather than an error, so it is guarded explicitly.\n if (!entry || seen.has(entry.id)) break;\n seen.add(entry.id);\n branch.push(entry);\n cursor = entry.parentId ?? undefined;\n }\n return branch.reverse();\n}\n\n/** The messages of one branch, in order, ready to seed a resumed agent. */\nexport function messagesOf(entries: SessionEntry[]): Message[] {\n return entries\n .filter((entry): entry is SessionEntry & { type: 'message' } => entry.type === 'message')\n .map((entry) => entry.message);\n}\n\nexport async function listSessions(cwd: string): Promise<SessionInfo[]> {\n const dir = projectDir(cwd);\n const names = await readdir(dir).catch(() => []);\n const infos: SessionInfo[] = [];\n\n for (const name of names) {\n if (!name.endsWith('.jsonl')) continue;\n const path = join(dir, name);\n const [info, entries] = await Promise.all([\n stat(path).catch(() => undefined),\n readEntries(path).catch(() => []),\n ]);\n const meta = entries.find((entry) => entry.type === 'meta');\n if (!info || meta?.type !== 'meta') continue;\n\n infos.push({\n id: name.replace(/\\.jsonl$/, ''),\n path,\n cwd: meta.cwd,\n model: meta.model,\n updatedAt: info.mtimeMs,\n preview: firstUserText(entries),\n });\n }\n // Tie-broken by id, which encodes creation order, so two sessions written in\n // the same millisecond still resolve to a stable \"most recent\".\n return infos.sort((a, b) => b.updatedAt - a.updatedAt || b.id.localeCompare(a.id));\n}\n\nexport async function latestSession(cwd: string): Promise<SessionInfo | undefined> {\n return (await listSessions(cwd))[0];\n}\n\nfunction firstUserText(entries: SessionEntry[]): string {\n for (const entry of entries) {\n if (entry.type !== 'message' || entry.message.role !== 'user') continue;\n for (const part of entry.message.content) {\n if (part.type === 'text' && part.text.trim() !== '') {\n return part.text.split('\\n')[0]?.slice(0, 120) ?? '';\n }\n }\n }\n return '(no prompt)';\n}\n",
|
|
65
|
-
"/** Kept in its own module so anything can read it without importing the barrel. */\nexport const VERSION = '0.
|
|
65
|
+
"/** Kept in its own module so anything can read it without importing the barrel. */\nexport const VERSION = '0.2.0';\n",
|
|
66
66
|
"import type { Message, ToolCallPart, ToolResultPart } from '@earshot/providers';\n\n/**\n * Repairing a transcript that a crash left mid-turn.\n *\n * The loop already covers the interruptions it can see: `runCalls` fills every\n * empty slot with an error result before the tool message is appended, so an\n * abort - Ctrl-C, a budget stop, a failed step - never reaches disk half-written.\n * What it cannot cover is the process not surviving to do that. Messages are\n * persisted as they are produced, so between the assistant message carrying the\n * tool calls and the tool message carrying their results there is a window in\n * which a SIGKILL, a power loss or an OOM leaves calls with no answer.\n *\n * That file is not corrupt and reads back fine. It is invalid as a *request*:\n * every tool call must have a result part or the next call fails at the\n * provider, so `--resume` on such a session breaks on the first turn, before\n * the user has done anything. Repair closes that.\n *\n * The repair is an append. History is append-only because Anthropic rejects\n * edited thinking blocks, and because a transcript that rewrites itself cannot\n * be trusted as a record of what happened - so the results synthesised here go\n * into a new entry with a normal parent, visible in `/tree` like any other. The\n * abandoned turn stays on disk exactly as the crash left it.\n */\nconst REPAIR_TEXT =\n 'No result was recorded for this call: earshot exited before the tool finished. ' +\n 'The call may or may not have run, so treat its effect as unknown and check ' +\n 'the current state rather than assuming either outcome.';\n\n/**\n * Tool calls in `messages` that no later message answers.\n *\n * The whole branch is scanned rather than only its last pair, because a result\n * may legitimately arrive in a message well after the call - and because a\n * session resumed twice must not re-repair calls the first repair answered.\n */\nexport function unresolvedToolCalls(messages: Message[]): ToolCallPart[] {\n const answered = new Set<string>();\n const calls: ToolCallPart[] = [];\n\n for (const message of messages) {\n for (const part of message.content) {\n if (part.type === 'tool_call') calls.push(part);\n else if (part.type === 'tool_result') answered.add(part.toolCallId);\n }\n }\n return calls.filter((call) => !answered.has(call.toolCallId));\n}\n\n/**\n * The message that answers `calls`, in the order they were emitted.\n *\n * Results are marked `isError` and say what is not known rather than claiming\n * the call failed: a process killed after a `write` completed leaves the file\n * written, and a repair that reported \"this did not run\" would be a lie the\n * model would then act on.\n */\nexport function repairMessage(calls: ToolCallPart[]): Message {\n const content: ToolResultPart[] = calls.map((call) => ({\n type: 'tool_result',\n toolCallId: call.toolCallId,\n toolName: call.toolName,\n output: { type: 'text', value: REPAIR_TEXT },\n isError: true,\n }));\n return { role: 'tool', content };\n}\n",
|
|
67
67
|
"import { buildRegistry, type ProviderRegistry } from '@earshot/providers';\nimport { Agent, type AgentOptions } from '../agent.ts';\nimport { buildSystemPrompt, type Curiosity } from '../context/system-prompt.ts';\nimport { loadHooks } from '../hooks/config.ts';\nimport { HookRunner } from '../hooks/runner.ts';\nimport { resolveModel } from '../model.ts';\nimport type { PermissionMode, PermissionPrompt } from '../permissions/engine.ts';\nimport { loadSettings } from '../permissions/settings.ts';\nimport {\n discoverExtensions,\n renderSkillIndex,\n type Skill,\n type SlashCommand,\n} from '../skills/discover.ts';\nimport { BUILTIN_TOOLS } from '../tools/index.ts';\nimport { skillTool } from '../tools/skill.ts';\nimport type { Tool } from '../tools/types.ts';\nimport { ShadowGit } from '../undo/shadow-git.ts';\nimport { VERSION } from '../version.ts';\nimport { repairMessage, unresolvedToolCalls } from './repair.ts';\nimport {\n branchTo,\n latestSession,\n messagesOf,\n readEntries,\n type SessionEntry,\n SessionStore,\n} from './store.ts';\n\nexport interface CreateSessionOptions {\n cwd: string;\n /** Model reference; falls back to the configured default. */\n model: string;\n mode?: PermissionMode;\n apiKey?: string;\n registry?: ProviderRegistry;\n prompt?: PermissionPrompt;\n ask?: (question: string, options?: string[]) => Promise<string>;\n /** Resume a specific transcript, or the most recent one for this directory. */\n resume?: { path: string } | { latest: true };\n /** Skips session persistence entirely, for one-shot runs. */\n ephemeral?: boolean;\n /** Disables undo snapshots. */\n noUndo?: boolean;\n maxSteps?: number;\n /** Overrides `curiosity` in settings. */\n curiosity?: Curiosity;\n /** Overrides `maxCostUsd` in settings. Zero or less removes the budget. */\n maxCostUsd?: number;\n /** Asked when the budget is reached; returns a higher limit, or stops. */\n confirmBudget?: (spentUsd: number, limitUsd: number) => Promise<number | undefined>;\n /**\n * Tools contributed from outside core - MCP servers today, subagents next.\n * They are appended to the built-ins and go through the same gate: core knows\n * nothing about where they came from, which is what keeps `packages/mcp`\n * depending on core rather than the other way round.\n */\n extraTools?: Tool<never>[];\n /** Additional problems to surface before the first turn, e.g. a server that failed. */\n problems?: string[];\n /** Torn down with the session, so a spawned server does not outlive it. */\n onDispose?: () => Promise<void> | void;\n /** Skips skill and slash-command discovery, for tests and one-shot runs. */\n noExtensions?: boolean;\n}\n\nexport interface CreatedSession {\n agent: Agent;\n store?: SessionStore;\n /** Settings problems worth showing the user before the first turn. */\n problems: string[];\n /** Number of messages replayed from a resumed transcript. */\n resumed: number;\n /** Discovered skills, for `/skills` and for explaining what is loaded. */\n skills: Skill[];\n /** User-defined slash commands, expanded into prompts by the TUI. */\n commands: SlashCommand[];\n /** Installs the approval callback; the TUI can only build one after it mounts. */\n installPrompt(prompt: PermissionPrompt): void;\n installAsk(ask: (question: string, options?: string[]) => Promise<string>): void;\n /** The current branch of the transcript, oldest first. */\n branch(): Promise<SessionEntry[]>;\n /**\n * Moves the session back to an earlier entry. Nothing is deleted: later\n * entries stay in the file as an abandoned branch.\n */\n rewindTo(entryId: string): Promise<number>;\n /** Continues in a new transcript that records where it branched from. */\n fork(entryId?: string): Promise<string | undefined>;\n /**\n * Reverts the most recent tool batch's file changes. Calling it again steps\n * back another batch; a file the batch created is reported rather than\n * deleted.\n */\n undo(): Promise<{ label: string; restored: string[]; wasCreated: string[] } | undefined>;\n dispose(): Promise<void>;\n}\n\nexport class NoSessionToResumeError extends Error {\n constructor(cwd: string) {\n super(`no previous session for ${cwd}`);\n this.name = 'NoSessionToResumeError';\n }\n}\n\n/**\n * One place that turns flags into a running agent, so the TUI and the headless\n * command cannot drift on which settings are honoured. Everything optional here\n * degrades rather than failing: a missing git binary means no undo, and an\n * unwritable data directory means no transcript, but the turn still runs.\n */\nexport async function createSession(options: CreateSessionOptions): Promise<CreatedSession> {\n const registry = options.registry ?? buildRegistry();\n const settings = await loadSettings(options.cwd);\n const mode = options.mode ?? settings.defaultMode ?? 'ask';\n const curiosity = options.curiosity ?? settings.curiosity ?? 'normal';\n // A flag of zero or less is how the CLI says \"no budget\", which has to beat a\n // settings file that sets one, or a limit would be impossible to turn off.\n const maxCostUsd =\n options.maxCostUsd !== undefined\n ? options.maxCostUsd > 0\n ? options.maxCostUsd\n : undefined\n : settings.maxCostUsd;\n\n const resolved = await resolveModel(registry, options.model, {\n ...(options.apiKey ? { apiKey: options.apiKey } : {}),\n });\n const modelRef = `${resolved.provider.id}/${resolved.model.id}`;\n\n const discovered = options.noExtensions\n ? { skills: [], commands: [], problems: [] }\n : await discoverExtensions(options.cwd);\n\n let store: SessionStore | undefined;\n let replayed: ReturnType<typeof messagesOf> = [];\n const repairProblems: string[] = [];\n\n if (!options.ephemeral) {\n const resumePath = await resolveResumePath(options);\n if (resumePath) {\n const entries = await readEntries(resumePath);\n // Only the branch the transcript actually ends on: a session that was\n // rewound has entries that are no longer part of its history.\n replayed = messagesOf(branchTo(entries));\n store = await SessionStore.open(resumePath).catch(() => undefined);\n\n // A crash between the assistant message and its tool results leaves calls\n // with no answer, which the provider rejects on the next request - so the\n // resumed session would fail before the user typed anything. The results\n // are appended as a new entry; nothing already written is touched.\n const orphaned = unresolvedToolCalls(replayed);\n if (orphaned.length > 0) {\n const repair = repairMessage(orphaned);\n replayed = [...replayed, repair];\n if (store) await store.appendMessage(repair);\n repairProblems.push(\n `repaired an interrupted turn: ${orphaned.length} tool ` +\n `${orphaned.length === 1 ? 'call' : 'calls'} ` +\n `(${orphaned.map((call) => call.toolName).join(', ')}) had no recorded result`,\n );\n }\n }\n store ??= await SessionStore.create(options.cwd, {\n model: modelRef,\n version: VERSION,\n }).catch(() => undefined);\n }\n\n const loadedHooks = options.noExtensions\n ? { hooks: [], problems: [] }\n : await loadHooks(options.cwd);\n const hooks = new HookRunner(loadedHooks.hooks, {\n cwd: options.cwd,\n env: process.env,\n sessionId: store?.id ?? 'ephemeral',\n ...(store ? { transcriptPath: store.path } : {}),\n });\n\n // Built after the session id exists, because a SessionStart hook is told which\n // session it is running for, and its context goes into the prompt it starts.\n const started = hooks.has('SessionStart') ? await hooks.sessionStart() : undefined;\n const system = await buildSystemPrompt({\n cwd: options.cwd,\n mode,\n curiosity,\n model: modelRef,\n skills: renderSkillIndex(discovered.skills),\n ...(started?.context.length\n ? { extra: `<session-start>\\n${started.context.join('\\n\\n')}\\n</session-start>` }\n : {}),\n });\n\n // Scoped to this session: the store is shared by every session in the\n // directory, and an unscoped `/undo` reached into batches the user never saw\n // this session make. An ephemeral run has no id and so has no undo history.\n const shadow = options.noUndo\n ? undefined\n : await ShadowGit.open(options.cwd, store?.id).catch(() => undefined);\n\n // The skill tool only exists when there is something to load: a tool whose\n // every argument is invalid is one the model wastes a call discovering.\n const sessionTools: Tool<never>[] = [\n ...(BUILTIN_TOOLS as Tool<never>[]),\n ...(discovered.skills.length ? [skillTool(discovered.skills) as unknown as Tool<never>] : []),\n ...(options.extraTools ?? []),\n ];\n\n const agentOptions: AgentOptions = {\n registry,\n model: resolved,\n cwd: options.cwd,\n system,\n mode,\n rules: settings.rules,\n ...(options.prompt ? { prompt: options.prompt } : {}),\n ...(options.ask ? { ask: options.ask } : {}),\n ...(options.maxSteps !== undefined ? { maxSteps: options.maxSteps } : {}),\n ...(maxCostUsd !== undefined ? { maxCostUsd } : {}),\n ...(options.confirmBudget ? { confirmBudget: options.confirmBudget } : {}),\n ...(sessionTools.length > BUILTIN_TOOLS.length ? { tools: sessionTools } : {}),\n ...(hooks.isEmpty ? {} : { hooks }),\n ...(shadow ? { shadow } : {}),\n ...(store ? { onMessage: (message) => void store?.appendMessage(message) } : {}),\n ...(store\n ? {\n // Appended, never substituted for what it summarises: the transcript\n // on disk stays complete, so a resumed session can replay the real\n // messages rather than a recollection of them.\n onCompaction: (summary: string, historyCut: number) => {\n void store?.append({\n type: 'summary',\n text: summary,\n replaces: store?.messageIds.slice(0, historyCut) ?? [],\n });\n },\n }\n : {}),\n };\n\n const agent = new Agent(agentOptions);\n // Replayed messages are pushed straight onto history rather than re-appended\n // through the store: they are already in the transcript, and writing them back\n // would duplicate every entry on each resume.\n agent.history.push(...replayed);\n\n const undone = new Set<string>();\n\n const branch = async (): Promise<SessionEntry[]> => {\n if (!store) return [];\n await store.flush();\n return branchTo(await readEntries(store.path), store.tailId ?? undefined);\n };\n\n return {\n agent,\n ...(store ? { store } : {}),\n problems: [\n ...settings.problems,\n ...discovered.problems,\n ...loadedHooks.problems,\n ...(started?.problems ?? []),\n ...repairProblems,\n ...(options.problems ?? []),\n ],\n resumed: replayed.length,\n skills: discovered.skills,\n commands: discovered.commands,\n installPrompt: (prompt) => agent.setPrompt(prompt),\n installAsk: (ask) => agent.setAsk(ask),\n branch,\n async rewindTo(entryId) {\n if (!store) return 0;\n await store.flush();\n const entries = await readEntries(store.path);\n const kept = messagesOf(branchTo(entries, entryId));\n store.rewind(entryId);\n agent.replaceHistory(kept);\n return kept.length;\n },\n async fork(entryId) {\n if (!store) return undefined;\n await store.flush();\n const from = entryId ?? store.tailId;\n const entries = await readEntries(store.path);\n const forked = await SessionStore.create(options.cwd, {\n model: modelRef,\n version: VERSION,\n ...(from ? { forkedFrom: { sessionId: store.id, entryId: from } } : {}),\n }).catch(() => undefined);\n if (!forked) return undefined;\n\n // The branch is replayed into the new file rather than referenced across\n // it: a transcript that cannot be read on its own is one that breaks as\n // soon as the file it points at is deleted.\n const kept = messagesOf(branchTo(entries, from ?? undefined));\n for (const message of kept) await forked.appendMessage(message);\n agent.replaceHistory(kept);\n store = forked;\n return forked.id;\n },\n async undo() {\n if (!shadow) return undefined;\n // Snapshots are not consumed by restoring them, so the ones already used\n // are tracked here; without this, a second /undo replays the first.\n const snapshots = (await shadow.list()).filter((snapshot) => !undone.has(snapshot.id));\n const last = snapshots.at(-1);\n if (!last) return undefined;\n undone.add(last.id);\n const { restored, wasCreated } = await shadow.restore(last);\n return { label: last.label, restored, wasCreated };\n },\n async dispose() {\n agent.dispose();\n // Best effort: a SessionEnd hook that fails must not stop the session from\n // closing, and nothing can act on its answer by this point anyway.\n if (hooks.has('SessionEnd')) await hooks.sessionEnd().catch(() => undefined);\n await store?.flush();\n await options.onDispose?.();\n },\n };\n}\n\n/**\n * Rebuilds the system prompt from what is currently on disk.\n *\n * Called after a memory is captured or deleted, so a preference takes effect on\n * the next model call rather than the next session.\n */\nexport async function refreshSystemPrompt(\n agent: Agent,\n model: string,\n skills: Skill[] = [],\n): Promise<void> {\n agent.setSystem(\n await buildSystemPrompt({\n cwd: agent.cwd,\n mode: agent.permissionMode,\n model,\n // Rebuilt from the same list rather than re-discovered: a skill added mid\n // session is not loaded until the next one, and a prompt that silently\n // gained an entry would be harder to explain than one that did not.\n skills: renderSkillIndex(skills),\n }),\n );\n}\n\nasync function resolveResumePath(options: CreateSessionOptions): Promise<string | undefined> {\n const { resume } = options;\n if (!resume) return undefined;\n if ('path' in resume) return resume.path;\n\n const latest = await latestSession(options.cwd);\n if (!latest) throw new NoSessionToResumeError(options.cwd);\n return latest.path;\n}\n",
|
|
68
68
|
"export interface ParsedArgs {\n command: string | undefined;\n flags: Record<string, string | boolean>;\n positionals: string[];\n}\n\n/** Minimal, dependency-free flag parsing: --key=value, --key value, --bool, -p. */\nexport function parseArgs(argv: string[]): ParsedArgs {\n const flags: Record<string, string | boolean> = {};\n const positionals: string[] = [];\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i] as string;\n if (arg === '--') {\n positionals.push(...argv.slice(i + 1));\n break;\n }\n if (arg.startsWith('--')) {\n const eq = arg.indexOf('=');\n if (eq !== -1) {\n flags[arg.slice(2, eq)] = arg.slice(eq + 1);\n } else {\n const next = argv[i + 1];\n if (next !== undefined && !next.startsWith('-')) {\n flags[arg.slice(2)] = next;\n i++;\n } else {\n flags[arg.slice(2)] = true;\n }\n }\n } else if (arg.startsWith('-') && arg.length > 1) {\n const next = argv[i + 1];\n if (next !== undefined && !next.startsWith('-')) {\n flags[arg.slice(1)] = next;\n i++;\n } else {\n flags[arg.slice(1)] = true;\n }\n } else {\n positionals.push(arg);\n }\n }\n\n const known = new Set(['auth', 'mcp', 'extensions', 'config', 'models', 'acp', 'doctor']);\n const command =\n positionals[0] !== undefined && known.has(positionals[0]) ? positionals[0] : undefined;\n return { command, flags, positionals: command ? positionals.slice(1) : positionals };\n}\n",
|
|
@@ -82,9 +82,11 @@
|
|
|
82
82
|
"import { readFile, stat } from 'node:fs/promises';\nimport { extname, resolve } from 'node:path';\nimport type { ImagePart } from '@earshot/providers';\n\nconst MAX_IMAGE_BYTES = 20 * 1024 * 1024;\nconst MEDIA_TYPES: Record<string, string> = {\n '.gif': 'image/gif',\n '.jpeg': 'image/jpeg',\n '.jpg': 'image/jpeg',\n '.png': 'image/png',\n '.webp': 'image/webp',\n};\n\nexport async function loadImage(input: string, cwd: string): Promise<ImagePart> {\n const remote = input.startsWith('https://');\n const pathname = remote ? new URL(input).pathname : input;\n const mediaType = MEDIA_TYPES[extname(pathname).toLowerCase()];\n if (!mediaType) {\n throw new Error('supported image formats are PNG, JPEG, GIF and WebP');\n }\n if (remote) return { type: 'image', data: input, mediaType };\n if (input.includes('://')) throw new Error('image URLs must use https');\n\n const path = resolve(cwd, input);\n const info = await stat(path);\n if (!info.isFile()) throw new Error(`${path} is not a file`);\n if (info.size > MAX_IMAGE_BYTES) throw new Error(`${path} is larger than 20 MB`);\n return { type: 'image', data: (await readFile(path)).toString('base64'), mediaType };\n}\n",
|
|
83
83
|
"import type { AgentEvent } from '@earshot/core';\n\n/**\n * The version of the headless output contract.\n *\n * What `earshot.v1` promises, and what it does not:\n *\n * - Every object earshot writes to stdout in a JSON format carries this string,\n * so a consumer can tell which contract it is reading without knowing which\n * binary produced it.\n * - Within v1, fields and record types may be **added**. A consumer must ignore\n * records whose `type` it does not know and fields it did not expect. That is\n * the whole compatibility rule, and it is what lets earshot report new things\n * without breaking anything already parsing the stream.\n * - Renaming a field, removing one, or changing what one means requires v2. v2\n * would be requested explicitly - `--output-format json@v2` - and v1 would\n * keep working alongside it, so an upgrade is never the thing that breaks a\n * script.\n *\n * The internal `AgentEvent` union is deliberately not what gets written: it is\n * ours to rename, and a consumer should not be able to notice when we do.\n */\nexport const SCHEMA = 'earshot.v1';\n\nexport type OutputFormat = 'text' | 'json' | 'stream-json';\n\n/** `json`, `stream-json`, and the pinned forms `json@v1` / `stream-json@v1`. */\nexport function parseFormat(value: string): OutputFormat | undefined {\n const [name, version] = value.split('@');\n if (version !== undefined && version !== 'v1') return undefined;\n if (name === 'text' && version === undefined) return 'text';\n if (name === 'json' || name === 'stream-json') return name;\n return undefined;\n}\n\nexport interface ResultRecord {\n schema: string;\n type: 'result';\n /** `success` unless something stopped the turn; `isError` is the short form. */\n subtype: 'success' | 'error' | 'interrupted' | 'max_steps' | 'budget';\n isError: boolean;\n text: string;\n costUsd: number;\n durationMs: number;\n numMessages: number;\n model: string;\n permissionMode: string;\n sessionId?: string;\n error?: { kind: string; message: string };\n}\n\nexport type StreamRecord = { schema: string; type: string } & Record<string, unknown>;\n\n/**\n * One agent event as a stream record.\n *\n * Events with nothing a consumer can act on return undefined rather than an\n * empty record. Text deltas are passed through as they arrive: a program\n * consuming the stream wants the same incremental output a person watching the\n * terminal gets, or there is no reason to stream at all.\n */\nexport function toStreamRecord(event: AgentEvent): StreamRecord | undefined {\n const base = { schema: SCHEMA };\n switch (event.type) {\n case 'model_start':\n return { ...base, type: 'model_start', model: event.model };\n case 'text_delta':\n return { ...base, type: 'text', text: event.text };\n case 'reasoning_delta':\n return { ...base, type: 'reasoning', text: event.text };\n case 'tool_start':\n return {\n ...base,\n type: 'tool_use',\n toolCallId: event.call.toolCallId,\n toolName: event.call.toolName,\n input: event.call.input,\n };\n case 'tool_end':\n return {\n ...base,\n type: 'tool_result',\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n isError: event.result.isError === true,\n output: event.result.output,\n };\n case 'permission':\n return {\n ...base,\n type: 'permission',\n tool: event.request.tool,\n target: event.request.target,\n title: event.request.title,\n reason: event.reason,\n };\n case 'intent':\n return {\n ...base,\n type: 'intent',\n calls: event.calls,\n ...(event.text !== undefined ? { text: event.text } : {}),\n };\n case 'usage':\n return { ...base, type: 'usage', usage: event.usage, costUsd: event.costUsd };\n case 'budget':\n return {\n ...base,\n type: 'budget',\n spentUsd: event.spentUsd,\n limitUsd: event.limitUsd,\n ...(event.raisedTo !== undefined ? { raisedTo: event.raisedTo } : {}),\n };\n case 'compacted':\n return { ...base, type: 'compacted', replaced: event.replaced };\n case 'scope_concern':\n return {\n ...base,\n type: 'scope',\n kind: event.concern.kind,\n summary: event.concern.summary,\n accepted: event.accepted,\n };\n case 'verification':\n return {\n ...base,\n type: 'verification',\n command: event.result.command,\n exitCode: event.result.exitCode,\n output: event.result.output,\n };\n case 'hook':\n return {\n ...base,\n type: 'hook',\n event: event.event,\n ...(event.blocked !== undefined ? { blocked: event.blocked } : {}),\n problems: event.problems,\n };\n case 'subagent':\n return {\n ...base,\n type: 'subagent',\n description: event.description,\n steps: event.steps,\n costUsd: event.costUsd,\n };\n case 'error':\n return {\n ...base,\n type: 'error',\n kind: event.error.kind,\n message: event.error.message,\n retryable: event.error.retryable,\n };\n // `message` and `turn_end` are covered by the records above and by the final\n // result record; emitting the raw assistant message as well would put the\n // same text in the stream twice.\n default:\n return undefined;\n }\n}\n",
|
|
84
84
|
"import {\n type AgentEvent,\n createSession,\n isPermissionMode,\n MissingCredentialsError,\n NoSessionToResumeError,\n type PermissionMode,\n ShellNotFoundError,\n UnknownModelError,\n} from '@earshot/core';\nimport type { ParsedArgs } from '../args.ts';\nimport { parseCuriosity, parseMaxCost } from '../budget.ts';\nimport { startExtensions } from '../extensions/index.ts';\nimport { loadImage } from '../image.ts';\nimport {\n type OutputFormat,\n parseFormat,\n type ResultRecord,\n SCHEMA,\n toStreamRecord,\n} from '../output.ts';\n\nconst DEFAULT_MODEL = 'anthropic/claude-opus-5';\n\n/**\n * `earshot -p \"<prompt>\"` - one non-interactive turn, with tools.\n *\n * Headless runs default to `ask` like everywhere else, which with no terminal to\n * prompt at means mutating tools are refused with an explanation the model can\n * act on. Scripted use passes `--permission-mode`; that is a deliberate choice\n * the caller makes, not a default they fall into.\n */\nexport async function headlessCommand(prompt: string, args: ParsedArgs): Promise<number> {\n const flags = args.flags;\n const requestedFormat =\n typeof flags['output-format'] === 'string' ? flags['output-format'] : 'text';\n const format = parseFormat(requestedFormat);\n if (!format) {\n // Refused rather than falling back to text: a script asking for a format\n // earshot does not have wants to know that, not to be handed prose.\n process.stderr.write(\n `\"${requestedFormat}\" is not an output format. Use text, json or stream-json ` +\n `(optionally pinned as json@v1).\\n`,\n );\n return 2;\n }\n const emit = makeEmitter(format);\n const startedAt = Date.now();\n\n let mode: PermissionMode | undefined;\n const requested = flags['permission-mode'];\n if (typeof requested === 'string') {\n if (!isPermissionMode(requested)) {\n process.stderr.write(`\"${requested}\" is not a permission mode\\n`);\n return 2;\n }\n mode = requested;\n }\n\n const curiosity = parseCuriosity(flags.curiosity);\n if (curiosity === 'invalid') {\n process.stderr.write(`\"${flags.curiosity}\" is not a curiosity level: low, normal or high\\n`);\n return 2;\n }\n const maxCostUsd = parseMaxCost(flags['max-cost']);\n if (maxCostUsd === 'invalid') {\n process.stderr.write(`\"${flags['max-cost']}\" is not an amount in dollars\\n`);\n return 2;\n }\n\n const extensions = await startExtensions(process.cwd());\n\n let session: Awaited<ReturnType<typeof createSession>>;\n try {\n session = await createSession({\n cwd: process.cwd(),\n extraTools: extensions.tools,\n problems: extensions.problems,\n onDispose: () => extensions.close(),\n model: typeof flags.model === 'string' ? flags.model : DEFAULT_MODEL,\n ...(mode ? { mode } : {}),\n ...(typeof flags['api-key'] === 'string' ? { apiKey: flags['api-key'] } : {}),\n ...(curiosity ? { curiosity } : {}),\n ...(maxCostUsd !== undefined ? { maxCostUsd } : {}),\n ...resumeFrom(flags),\n });\n } catch (error) {\n await extensions.close();\n return reportStartupFailure(error);\n }\n\n for (const problem of session.problems) process.stderr.write(`warning: ${problem}\\n`);\n\n const controller = new AbortController();\n // A second interrupt exits rather than waiting: the first asks the turn to\n // stop, and a turn wedged in a subprocess should not trap the user.\n let interrupts = 0;\n const onSigint = () => {\n interrupts += 1;\n if (interrupts === 1) controller.abort();\n else process.exit(130);\n };\n process.on('SIGINT', onSigint);\n\n let exitCode = 0;\n let subtype: ResultRecord['subtype'] = 'success';\n let failure: { kind: string; message: string } | undefined;\n\n try {\n let image: Awaited<ReturnType<typeof loadImage>> | undefined;\n if (typeof flags.image === 'string') {\n try {\n image = await loadImage(flags.image, process.cwd());\n } catch (error) {\n process.stderr.write(`image: ${(error as Error).message}\\n`);\n exitCode = 2;\n subtype = 'error';\n failure = { kind: 'invalid_image', message: (error as Error).message };\n }\n }\n const input = image ? [{ type: 'text' as const, text: prompt }, image] : prompt;\n for await (const event of failure\n ? ([] as AgentEvent[])\n : session.agent.runTurn(input, controller.signal)) {\n emit(event);\n if (event.type === 'error') {\n exitCode = 1;\n subtype = 'error';\n failure = { kind: event.error.kind, message: event.error.message };\n }\n if (event.type === 'turn_end' && event.reason === 'aborted') {\n exitCode = 130;\n subtype = 'interrupted';\n }\n if (event.type === 'turn_end' && event.reason === 'max_steps') {\n exitCode = 1;\n subtype = 'max_steps';\n }\n // Its own exit code: a script that set a ceiling needs to tell \"stopped\n // because it ran out of budget\" from \"stopped because it failed\".\n if (event.type === 'turn_end' && event.reason === 'budget') {\n exitCode = 3;\n subtype = 'budget';\n }\n }\n } finally {\n process.off('SIGINT', onSigint);\n await session.dispose();\n }\n\n if (format === 'text') {\n process.stdout.write('\\n');\n return exitCode;\n }\n\n // The same record ends a stream and stands alone as the whole of `json`, so a\n // consumer that reads only the last line of a stream and one that parses a\n // single object are reading the same thing.\n const result: ResultRecord = {\n schema: SCHEMA,\n type: 'result',\n subtype,\n isError: subtype !== 'success',\n text: emit.text(),\n costUsd: session.agent.costUsd,\n durationMs: Date.now() - startedAt,\n numMessages: session.agent.history.length,\n model: typeof flags.model === 'string' ? flags.model : DEFAULT_MODEL,\n permissionMode: session.agent.permissionMode,\n ...(session.store ? { sessionId: session.store.id } : {}),\n ...(failure ? { error: failure } : {}),\n };\n process.stdout.write(\n format === 'json' ? `${JSON.stringify(result, null, 2)}\\n` : `${JSON.stringify(result)}\\n`,\n );\n\n return exitCode;\n}\n\nfunction resumeFrom(flags: ParsedArgs['flags']) {\n if (typeof flags.resume === 'string') return { resume: { path: flags.resume } } as const;\n if (flags.continue === true || flags.resume === true)\n return { resume: { latest: true } } as const;\n return {};\n}\n\n/**\n * Renders events for one of three consumers: a person reading a terminal, a\n * script parsing one JSON object, or a program reading a JSON stream. All three\n * see tool activity - a headless run that printed only prose would hide the fact\n * that the agent edited files.\n */\nfunction makeEmitter(format: OutputFormat) {\n let text = '';\n\n const emit = (event: AgentEvent): void => {\n if (event.type === 'text_delta') text += event.text;\n\n if (format === 'stream-json') {\n const record = toStreamRecord(event);\n if (record) process.stdout.write(`${JSON.stringify(record)}\\n`);\n return;\n }\n if (format !== 'text') return;\n\n switch (event.type) {\n case 'text_delta':\n process.stdout.write(event.text);\n break;\n case 'tool_start':\n process.stderr.write(`\\n· ${event.call.toolName}\\n`);\n break;\n case 'tool_end':\n if (event.result.isError) {\n process.stderr.write(` ! ${describe(event.result.output)}\\n`);\n }\n break;\n case 'hook':\n // A hook that stopped something is why the run did what it did; leaving\n // it out would make the transcript unexplainable.\n if (event.blocked)\n process.stderr.write(`\\n${event.event} hook blocked: ${event.blocked}\\n`);\n for (const problem of event.problems) process.stderr.write(` ! ${problem}\\n`);\n break;\n case 'subagent':\n process.stderr.write(`\\n· subagent \"${event.description}\" (${event.steps} steps)\\n`);\n break;\n case 'error':\n process.stderr.write(`\\nerror: ${event.error.message}\\n`);\n break;\n case 'turn_end':\n if (event.reason === 'aborted') process.stderr.write('\\ninterrupted\\n');\n if (event.reason === 'max_steps') process.stderr.write('\\nstopped: step limit reached\\n');\n if (event.reason === 'budget') process.stderr.write('\\nstopped: cost budget reached\\n');\n break;\n default:\n break;\n }\n };\n\n emit.text = () => text;\n return emit;\n}\n\nfunction describe(output: { type: string; value: unknown }): string {\n return output.type === 'text' ? (String(output.value).split('\\n')[0] ?? '') : output.type;\n}\n\nfunction reportStartupFailure(error: unknown): number {\n if (error instanceof UnknownModelError) {\n process.stderr.write(`${error.message}\\n\\nrun \\`earshot models\\` to see what is available\\n`);\n return 2;\n }\n if (error instanceof MissingCredentialsError) {\n process.stderr.write(`${error.message}\\n`);\n return 3;\n }\n if (error instanceof NoSessionToResumeError) {\n process.stderr.write(`${error.message}\\n`);\n return 2;\n }\n if (error instanceof ShellNotFoundError) {\n process.stderr.write(`${error.message}\\n`);\n return 4;\n }\n throw error;\n}\n",
|
|
85
|
-
"import type {\n Agent,\n CreatedSession,\n MemoryCandidate,\n MemoryScope,\n PermissionMode,\n PermissionRequest,\n PromptChoice,\n TodoItem,\n UserPrompt,\n} from '@earshot/core';\nimport {\n deleteMemory,\n detectPreference,\n expandCommand,\n isPermissionMode,\n loadMemories,\n openInEditor,\n PERMISSION_MODES,\n PLAN_PROMPT,\n planPath,\n readPlan,\n refreshSystemPrompt,\n saveMemory,\n savePlan,\n} from '@earshot/core';\nimport { Box, Static, Text, useApp, useInput } from 'ink';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { Markdown } from './components/markdown.tsx';\nimport { MemoryCapture } from './components/memory-capture.tsx';\nimport { PermissionPrompt } from './components/permission.tsx';\nimport { QuestionPrompt } from './components/question.tsx';\nimport { StatusLine } from './components/status.tsx';\nimport { TextInput } from './components/text-input.tsx';\nimport { ToolBlock } from './components/tool-block.tsx';\nimport { theme } from './theme.ts';\n\n/**\n * A finished piece of scrollback.\n *\n * Once an item is here it never changes, which is the contract `Static` needs:\n * Ink writes those rows to the terminal once and then leaves them alone, so they\n * become real scrollback the user can select and scroll with their own terminal.\n * Only the live region below is re-rendered, which is what keeps a long session\n * from repainting thousands of rows on every token.\n */\nexport type ScrollItem =\n | { kind: 'user'; id: string; text: string }\n | { kind: 'assistant'; id: string; text: string }\n | { kind: 'tool'; id: string; name: string; title?: string; output?: string; isError?: boolean }\n | { kind: 'notice'; id: string; text: string; color?: string };\n\nexport interface AppProps {\n session: CreatedSession;\n model: string;\n /** Run immediately on start, for `earshot \"do the thing\"`. */\n initialPrompt?: UserPrompt;\n}\n\nlet sequence = 0;\nconst nextId = () => `item_${sequence++}`;\n\nfunction promptLabel(prompt: UserPrompt): string {\n if (typeof prompt === 'string') return prompt;\n return prompt\n .map((part) => (part.type === 'text' ? part.text : `[attached ${part.mediaType} image]`))\n .join('\\n');\n}\n\nexport function App({ session, model, initialPrompt }: AppProps) {\n const { exit } = useApp();\n const agent: Agent = session.agent;\n\n const [items, setItems] = useState<ScrollItem[]>(() =>\n session.problems.map((problem) => ({\n kind: 'notice' as const,\n id: nextId(),\n text: `warning: ${problem}`,\n color: theme.warning,\n })),\n );\n const [live, setLive] = useState('');\n const [runningTool, setRunningTool] = useState<string | undefined>();\n const [input, setInput] = useState('');\n const [busy, setBusy] = useState(false);\n const [mode, setMode] = useState<PermissionMode>(agent.permissionMode);\n const [cost, setCost] = useState(0);\n const [todos, setTodos] = useState<TodoItem[]>([]);\n const [queued, setQueued] = useState(0);\n const [candidate, setCandidate] = useState<MemoryCandidate | undefined>();\n const [context, setContext] = useState(() => agent.contextUse);\n const [compacted, setCompacted] = useState(0);\n\n const [pending, setPending] = useState<\n | { request: PermissionRequest; reason: string; resolve: (choice: PromptChoice) => void }\n | undefined\n >();\n const [question, setQuestion] = useState<\n { question: string; options?: string[]; resolve: (answer: string) => void } | undefined\n >();\n\n const controller = useRef<AbortController | undefined>(undefined);\n const push = useCallback((item: ScrollItem) => setItems((current) => [...current, item]), []);\n\n // The prompt and ask callbacks are installed once and read through refs, so a\n // re-render never leaves the agent holding a stale closure over old state.\n const pendingRef = useRef(setPending);\n pendingRef.current = setPending;\n const questionRef = useRef(setQuestion);\n questionRef.current = setQuestion;\n\n useEffect(() => {\n session.installPrompt(\n (request, reason) =>\n new Promise<PromptChoice>((resolve) => {\n pendingRef.current({ request, reason, resolve });\n }),\n );\n session.installAsk(\n (q, options) =>\n new Promise<string>((resolve) => {\n questionRef.current({ question: q, ...(options ? { options } : {}), resolve });\n }),\n );\n }, [session]);\n\n /** The mode to go back to once a plan is approved or abandoned. */\n const modeBeforePlan = useRef<PermissionMode | undefined>(undefined);\n /** The last thing the model said, which in plan mode is the plan itself. */\n const lastAssistantText = useRef('');\n\n const runTurn = useCallback(\n async (prompt: UserPrompt) => {\n setBusy(true);\n // Cleared per turn: a stale answer read back as this turn's plan is worse\n // than no plan at all.\n lastAssistantText.current = '';\n push({ kind: 'user', id: nextId(), text: promptLabel(prompt) });\n\n const abort = new AbortController();\n controller.current = abort;\n let assistantText = '';\n\n try {\n for await (const event of agent.runTurn(prompt, abort.signal)) {\n switch (event.type) {\n case 'text_delta':\n assistantText += event.text;\n setLive(assistantText);\n break;\n case 'intent':\n // The intent itself is the assistant text already on screen just\n // above the tool block, so only its absence is worth a line: a\n // batch that arrived without a reason is what this exists to show.\n if (event.text === undefined) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `about to run ${event.calls} tool call${\n event.calls === 1 ? '' : 's'\n } without saying why`,\n color: theme.warning,\n });\n }\n break;\n case 'tool_start':\n // The assistant's prose is flushed to scrollback before the tool\n // block, so the two never re-order once the tool finishes.\n if (assistantText.trim() !== '') {\n push({ kind: 'assistant', id: nextId(), text: assistantText.trimEnd() });\n assistantText = '';\n setLive('');\n }\n setRunningTool(event.call.toolName);\n break;\n case 'tool_end': {\n setRunningTool(undefined);\n const output = event.result.output.type === 'text' ? event.result.output.value : '';\n push({\n kind: 'tool',\n id: nextId(),\n name: event.toolName,\n ...(event.result.title ? { title: event.result.title } : {}),\n output,\n ...(event.result.isError ? { isError: true } : {}),\n });\n setTodos(agent.todos.list());\n break;\n }\n case 'usage':\n setCost(agent.costUsd);\n setContext(agent.contextUse);\n break;\n case 'budget':\n push({\n kind: 'notice',\n id: nextId(),\n text:\n event.raisedTo === undefined\n ? `stopped: $${event.spentUsd.toFixed(2)} spent against a ` +\n `$${event.limitUsd.toFixed(2)} budget`\n : `budget raised to $${event.raisedTo.toFixed(2)} after ` +\n `$${event.spentUsd.toFixed(2)} spent`,\n color: theme.warning,\n });\n break;\n case 'verification':\n // Shown to the user as it was shown to the model: the command, the\n // exit code and the output, none of it summarised.\n push({\n kind: 'tool',\n id: nextId(),\n name: event.result.command,\n title: `${event.result.command} - exit ${event.result.exitCode ?? 'killed'}`,\n output: event.result.output,\n ...(event.result.exitCode === 0 ? {} : { isError: true }),\n });\n break;\n case 'subagent':\n push({\n kind: 'notice',\n id: nextId(),\n text: `subagent \"${event.description}\": ${event.steps} step${\n event.steps === 1 ? '' : 's'\n }, $${event.costUsd.toFixed(4)}`,\n });\n break;\n case 'hook':\n // A hook that blocked something is the reason the agent did not do\n // it, so it is said out loud rather than left for the model to\n // paraphrase. Problems are shown too: a hook that failed silently\n // is one the user goes on believing is protecting them.\n if (event.blocked) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `${event.event} hook blocked this: ${event.blocked}`,\n color: theme.warning,\n });\n }\n for (const problem of event.problems) {\n push({ kind: 'notice', id: nextId(), text: problem, color: theme.warning });\n }\n break;\n case 'compacted':\n setCompacted((count) => count + event.replaced);\n push({\n kind: 'notice',\n id: nextId(),\n text: `compacted: ${event.replaced} earlier messages are now a summary`,\n });\n break;\n case 'error':\n push({\n kind: 'notice',\n id: nextId(),\n text: `error: ${event.error.message}`,\n color: theme.danger,\n });\n break;\n case 'turn_end':\n if (event.reason === 'aborted') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'interrupted',\n color: theme.warning,\n });\n }\n if (event.reason === 'max_steps') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'stopped: step limit reached',\n color: theme.warning,\n });\n }\n break;\n default:\n break;\n }\n setQueued(agent.pendingSteers);\n }\n } finally {\n if (assistantText.trim() !== '') {\n lastAssistantText.current = assistantText;\n push({ kind: 'assistant', id: nextId(), text: assistantText.trimEnd() });\n }\n setLive('');\n setRunningTool(undefined);\n setBusy(false);\n setQueued(agent.pendingSteers);\n controller.current = undefined;\n }\n },\n [agent, push],\n );\n\n const started = useRef(false);\n useEffect(() => {\n if (started.current || !initialPrompt) return;\n started.current = true;\n void runTurn(initialPrompt);\n }, [initialPrompt, runTurn]);\n\n /**\n * Lists what is remembered, with the sentence each rule came from. Memory the\n * user cannot inspect is memory they cannot trust, so provenance is shown\n * here rather than hidden in the file.\n */\n const showMemories = useCallback(\n async (argument?: string) => {\n const [verb, ...rest] = (argument ?? '').split(/\\s+/);\n const id = rest.join(' ').trim();\n if (verb === 'forget' && id) {\n const gone = await deleteMemory(id, agent.cwd);\n if (gone) await refreshSystemPrompt(agent, model, session.skills);\n push({\n kind: 'notice',\n id: nextId(),\n text: gone ? `forgot ${id}` : `no memory called \"${id}\"`,\n ...(gone ? {} : { color: theme.warning }),\n });\n return;\n }\n\n const memories = await loadMemories(agent.cwd);\n if (memories.length === 0) {\n push({ kind: 'notice', id: nextId(), text: 'nothing remembered yet' });\n return;\n }\n const lines = memories.map((memory) => {\n const when = memory.created.slice(0, 10);\n const why = memory.source ? `\\n from \"${memory.source}\" on ${when}` : '';\n return ` [${memory.id}] (${memory.scope}) ${memory.text}${why}`;\n });\n push({\n kind: 'notice',\n id: nextId(),\n text: `${lines.join('\\n')}\\n\\n /memory forget <id> removes one`,\n });\n },\n [agent, model, push, session.skills],\n );\n\n const remember = useCallback(\n async (scope: MemoryScope) => {\n if (!candidate) return;\n setCandidate(undefined);\n const saved = await saveMemory({ ...candidate, scope }, agent.cwd).catch(() => undefined);\n if (!saved) {\n push({ kind: 'notice', id: nextId(), text: 'could not save that', color: theme.warning });\n return;\n }\n // Applied from the next model call, not the next session.\n await refreshSystemPrompt(agent, model, session.skills);\n push({\n kind: 'notice',\n id: nextId(),\n text: `remembered [${saved.id}] (${scope}) - /memory to review or forget it`,\n });\n },\n [agent, candidate, model, push, session.skills],\n );\n\n /**\n * `/tree`, `/rewind`, `/fork` and `/undo`.\n *\n * The numbering is over the user's own prompts rather than over every entry:\n * \"go back to before I asked for the refactor\" is how people think about a\n * session, and an entry id is not something anyone can pick out of a list.\n */\n const sessionTree = useCallback(\n async (name: string, argument?: string) => {\n const entries = await session.branch();\n const prompts = entries.filter(\n (entry) =>\n entry.type === 'message' &&\n entry.message.role === 'user' &&\n entry.message.content.some(\n (part) => part.type === 'text' && !part.text.startsWith('<self-check>'),\n ),\n );\n\n if (name === 'tree' || !argument) {\n if (prompts.length === 0) {\n push({ kind: 'notice', id: nextId(), text: 'nothing in this session yet' });\n return;\n }\n const lines = prompts.map((entry, index) => {\n const text =\n entry.type === 'message'\n ? (entry.message.content.find((part) => part.type === 'text')?.text ?? '')\n : '';\n return ` ${index + 1}. ${text.split('\\n')[0]?.slice(0, 70) ?? ''}`;\n });\n push({\n kind: 'notice',\n id: nextId(),\n text: `${lines.join('\\n')}\\n\\n /rewind <n> goes back to one · /fork <n> branches from it`,\n });\n return;\n }\n\n const index = Number.parseInt(argument, 10) - 1;\n const target = prompts[index];\n if (!target) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `no prompt ${argument} in this session - /tree lists them`,\n color: theme.warning,\n });\n return;\n }\n // The entry before the chosen prompt: rewinding \"to\" a prompt means the\n // state the session was in when it was typed, not after it ran.\n const previous = entries[entries.indexOf(target) - 1] ?? target;\n\n if (name === 'rewind') {\n const kept = await session.rewindTo(previous.id);\n push({\n kind: 'notice',\n id: nextId(),\n text: `rewound to before prompt ${index + 1}; ${kept} message${kept === 1 ? '' : 's'} kept. Nothing was deleted - the rest is still in the transcript as another branch.`,\n });\n return;\n }\n\n const forked = await session.fork(previous.id);\n push({\n kind: 'notice',\n id: nextId(),\n text: forked\n ? `forked from prompt ${index + 1} into ${forked}; this session continues there and the original is untouched`\n : 'could not fork this session',\n ...(forked ? {} : { color: theme.warning }),\n });\n },\n [push, session],\n );\n\n const undoLast = useCallback(async () => {\n const result = await session.undo();\n if (!result) {\n push({ kind: 'notice', id: nextId(), text: 'nothing to undo', color: theme.warning });\n return;\n }\n const created = result.wasCreated.length\n ? ` Left in place because the batch created them: ${result.wasCreated.join(', ')}.`\n : '';\n push({\n kind: 'notice',\n id: nextId(),\n text: result.restored.length\n ? `undid ${result.label}: restored ${result.restored.join(', ')}.${created}`\n : `nothing to restore from ${result.label}.${created}`,\n });\n }, [push, session]);\n\n /**\n * `/plan` - draft, edit, approve.\n *\n * The plan is a file, and approving reads it back from disk rather than using\n * what the model wrote. That is the difference between a plan and a prompt:\n * whatever the user changed is what gets pinned, and if they changed nothing\n * it is still their decision that it stands.\n */\n const plan = useCallback(\n async (argument?: string) => {\n const path = planPath(session.store?.id ?? 'scratch');\n const [verb = '', ...rest] = (argument ?? '').split(/\\s+/);\n const task = [verb, ...rest].join(' ').trim();\n\n if (verb === 'show') {\n const text = await readPlan(path);\n push({\n kind: 'notice',\n id: nextId(),\n text: text ? `${path}\\n\\n${text}` : `no plan yet at ${path}`,\n });\n return;\n }\n if (verb === 'edit') {\n const result = await openInEditor(path);\n push({\n kind: 'notice',\n id: nextId(),\n text: result.message,\n ...(result.edited ? {} : { color: theme.warning }),\n });\n return;\n }\n if (verb === 'approve') {\n const text = await readPlan(path);\n if (!text) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `there is no plan at ${path} to approve`,\n color: theme.warning,\n });\n return;\n }\n agent.setPlan(text);\n // Back to whatever the session was in before planning: staying in plan\n // mode after approving one is the one thing the user certainly did not\n // ask for.\n const restored = modeBeforePlan.current ?? 'ask';\n agent.setPermissionMode(restored);\n setMode(restored);\n modeBeforePlan.current = undefined;\n push({\n kind: 'notice',\n id: nextId(),\n text: `plan approved and pinned for this run; permission mode: ${restored}`,\n });\n return;\n }\n if (verb === 'clear') {\n agent.setPlan(undefined);\n push({ kind: 'notice', id: nextId(), text: 'plan unpinned' });\n return;\n }\n if (task === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'usage: /plan <what you want planned>, then /plan edit, /plan approve',\n color: theme.warning,\n });\n return;\n }\n\n modeBeforePlan.current = agent.permissionMode;\n agent.setPermissionMode('plan');\n setMode('plan');\n await runTurn(`${task}\\n\\n${PLAN_PROMPT}`);\n\n // Written from the last thing the model said, which in plan mode is the\n // plan, because every mutating tool was refused.\n const drafted = lastAssistantText.current.trim();\n if (drafted === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'the model produced no plan to write',\n color: theme.warning,\n });\n return;\n }\n await savePlan(path, drafted);\n push({\n kind: 'notice',\n id: nextId(),\n text: `plan written to ${path}\\n/plan edit to change it, /plan approve to pin it`,\n });\n },\n [agent, push, runTurn, session.store],\n );\n\n const handleCommand = useCallback(\n (command: string) => {\n // Split once, keeping the remainder: `split(/\\s+/, 2)` discards everything\n // after the second field, which silently drops the argument of any command\n // that takes more than one word.\n const body = command.slice(1).trim();\n const space = body.search(/\\s/);\n const name = space === -1 ? body : body.slice(0, space);\n const argument = space === -1 ? undefined : body.slice(space + 1).trim();\n\n if (name === 'exit' || name === 'quit') {\n exit();\n return;\n }\n if (name === 'mode') {\n if (argument && isPermissionMode(argument)) {\n agent.setPermissionMode(argument);\n setMode(argument);\n push({ kind: 'notice', id: nextId(), text: `permission mode: ${argument}` });\n } else {\n push({\n kind: 'notice',\n id: nextId(),\n text: `usage: /mode <${PERMISSION_MODES.join('|')}>`,\n color: theme.warning,\n });\n }\n return;\n }\n if (name === 'memory') {\n void showMemories(argument);\n return;\n }\n if (name === 'tree' || name === 'rewind' || name === 'fork') {\n if (busy) {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'finish or interrupt the current turn first (esc)',\n color: theme.warning,\n });\n return;\n }\n void sessionTree(name, argument);\n return;\n }\n if (name === 'undo') {\n void undoLast();\n return;\n }\n if (name === 'plan') {\n if (busy) {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'finish or interrupt the current turn first (esc)',\n color: theme.warning,\n });\n return;\n }\n void plan(argument);\n return;\n }\n if (name === 'skills') {\n push({\n kind: 'notice',\n id: nextId(),\n text: describeExtensions(session),\n });\n return;\n }\n\n // A user-defined command is expanded into a prompt and run as one. It is\n // not a second way to reach the tools: whatever the file asks for goes\n // through the same turn, and the same gate, as anything typed by hand.\n const custom = session.commands.find((entry) => entry.name === name);\n if (custom) {\n const prompt = expandCommand(custom, argument ?? '');\n if (prompt.trim() === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: `/${name} expanded to nothing`,\n color: theme.warning,\n });\n return;\n }\n if (busy) {\n agent.steer(prompt);\n setQueued(agent.pendingSteers);\n push({ kind: 'user', id: nextId(), text: command });\n return;\n }\n void runTurn(prompt);\n return;\n }\n\n push({\n kind: 'notice',\n id: nextId(),\n text: `unknown command \"${name}\"`,\n color: theme.warning,\n });\n },\n [agent, busy, exit, plan, push, runTurn, session, sessionTree, showMemories, undoLast],\n );\n\n const submit = useCallback(\n (text: string) => {\n const trimmed = text.trim();\n setInput('');\n if (trimmed === '') return;\n\n if (trimmed.startsWith('/')) {\n handleCommand(trimmed);\n return;\n }\n // Offered, never stored: a wrong rule saved silently would follow the user\n // into every future session with no sign of where it came from.\n setCandidate(detectPreference(trimmed));\n if (busy) {\n // Steering, not queueing a second turn: the agent injects it at the next\n // model call so the user redirects without losing work in flight.\n agent.steer(trimmed);\n setQueued(agent.pendingSteers);\n push({ kind: 'user', id: nextId(), text: trimmed });\n return;\n }\n void runTurn(trimmed);\n },\n [agent, busy, push, runTurn, handleCommand],\n );\n\n // Input is disabled while a prompt is open so the two do not both consume keys.\n const inputActive = !pending && !question;\n\n useInput(\n (input_, key) => {\n if (key.escape) {\n setCandidate(undefined);\n if (busy) controller.current?.abort();\n return;\n }\n // Bound rather than modal: taking the offer must not stop the user typing.\n if (key.ctrl && candidate && (input_ === 'r' || input_ === 'g')) {\n void remember(input_ === 'r' ? 'project' : 'user');\n }\n },\n { isActive: inputActive },\n );\n\n return (\n <Box flexDirection=\"column\">\n <Static items={items}>{(item) => <ScrollRow key={item.id} item={item} />}</Static>\n\n {live !== '' && (\n <Box marginTop={1}>\n <Markdown text={live} />\n </Box>\n )}\n {runningTool && <ToolBlock name={runningTool} running />}\n\n {pending && (\n <PermissionPrompt\n request={pending.request}\n reason={pending.reason}\n onChoice={(choice) => {\n setPending(undefined);\n pending.resolve(choice);\n }}\n />\n )}\n\n {question && (\n <QuestionPrompt\n question={question.question}\n {...(question.options ? { options: question.options } : {})}\n onAnswer={(answer) => {\n setQuestion(undefined);\n question.resolve(answer);\n }}\n />\n )}\n\n {candidate && inputActive && <MemoryCapture candidate={candidate} />}\n\n {inputActive && (\n <Box marginTop={1}>\n <Text color={theme.user}>{'> '}</Text>\n <TextInput\n value={input}\n onChange={setInput}\n onSubmit={submit}\n placeholder={busy ? 'steer the agent, or esc to interrupt' : 'what should I do?'}\n />\n </Box>\n )}\n\n <StatusLine\n model={model}\n mode={mode}\n costUsd={cost}\n todos={todos}\n busy={busy}\n queued={queued}\n context={context}\n compacted={compacted}\n />\n </Box>\n );\n}\n\nfunction ScrollRow({ item }: { item: ScrollItem }) {\n if (item.kind === 'user') {\n return (\n <Box marginTop={1}>\n <Text color={theme.user}>{'> '}</Text>\n <Text>{item.text}</Text>\n </Box>\n );\n }\n if (item.kind === 'assistant') {\n return (\n <Box marginTop={1}>\n <Markdown text={item.text} />\n </Box>\n );\n }\n if (item.kind === 'tool') {\n return (\n <ToolBlock\n name={item.name}\n {...(item.title ? { title: item.title } : {})}\n {...(item.output ? { output: item.output } : {})}\n {...(item.isError ? { isError: true } : {})}\n />\n );\n }\n return (\n <Box marginTop={1}>\n <Text color={item.color ?? theme.muted}>{item.text}</Text>\n </Box>\n );\n}\n\n/**\n * What `/skills` shows. Skills and commands are listed together because from the\n * user's side they are the same question - what extra behaviour is loaded in\n * this directory, and where did it come from.\n */\nfunction describeExtensions(session: CreatedSession): string {\n const lines: string[] = [];\n if (session.skills.length > 0) {\n lines.push('skills (the agent loads these itself when they fit):');\n for (const skill of session.skills) {\n lines.push(` ${skill.name} [${skill.scope}] ${skill.description}`);\n }\n }\n if (session.commands.length > 0) {\n if (lines.length > 0) lines.push('');\n lines.push('commands you can type:');\n for (const command of session.commands) {\n lines.push(` /${command.name} [${command.scope}] ${command.description}`);\n }\n }\n return lines.length === 0\n ? 'no skills or commands found in .earshot/skills, .earshot/commands or your config directory'\n : lines.join('\\n');\n}\n",
|
|
86
|
-
"
|
|
85
|
+
"import type {\n Agent,\n CreatedSession,\n MemoryCandidate,\n MemoryScope,\n PermissionMode,\n PermissionRequest,\n PromptChoice,\n TodoItem,\n UserPrompt,\n} from '@earshot/core';\nimport {\n deleteMemory,\n detectPreference,\n expandCommand,\n isPermissionMode,\n loadMemories,\n openInEditor,\n PERMISSION_MODES,\n PLAN_PROMPT,\n planPath,\n readPlan,\n refreshSystemPrompt,\n saveMemory,\n savePlan,\n} from '@earshot/core';\nimport { Box, Static, Text, useApp, useInput } from 'ink';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { type CommandName, commandRows, findCommand } from './commands.ts';\nimport { CommandMenu, menuEntries } from './components/command-menu.tsx';\nimport { Markdown } from './components/markdown.tsx';\nimport { MemoryCapture } from './components/memory-capture.tsx';\nimport { PermissionPrompt } from './components/permission.tsx';\nimport { QuestionPrompt } from './components/question.tsx';\nimport { StatusLine } from './components/status.tsx';\nimport { TextInput } from './components/text-input.tsx';\nimport { ToolBlock } from './components/tool-block.tsx';\nimport { theme } from './theme.ts';\n\n/**\n * A finished piece of scrollback.\n *\n * Once an item is here it never changes, which is the contract `Static` needs:\n * Ink writes those rows to the terminal once and then leaves them alone, so they\n * become real scrollback the user can select and scroll with their own terminal.\n * Only the live region below is re-rendered, which is what keeps a long session\n * from repainting thousands of rows on every token.\n */\nexport type ScrollItem =\n | { kind: 'user'; id: string; text: string }\n | { kind: 'assistant'; id: string; text: string }\n | { kind: 'tool'; id: string; name: string; title?: string; output?: string; isError?: boolean }\n | { kind: 'notice'; id: string; text: string; color?: string };\n\nexport interface AppProps {\n session: CreatedSession;\n model: string;\n /** Run immediately on start, for `earshot \"do the thing\"`. */\n initialPrompt?: UserPrompt;\n}\n\nlet sequence = 0;\nconst nextId = () => `item_${sequence++}`;\n\nfunction promptLabel(prompt: UserPrompt): string {\n if (typeof prompt === 'string') return prompt;\n return prompt\n .map((part) => (part.type === 'text' ? part.text : `[attached ${part.mediaType} image]`))\n .join('\\n');\n}\n\nexport function App({ session, model: initialModel, initialPrompt }: AppProps) {\n const { exit } = useApp();\n const agent: Agent = session.agent;\n\n // State rather than the prop alone: `/model` swaps it mid-session, and the\n // status line and the system prompt both have to follow.\n const [model, setModel] = useState(initialModel);\n\n const [items, setItems] = useState<ScrollItem[]>(() =>\n session.problems.map((problem) => ({\n kind: 'notice' as const,\n id: nextId(),\n text: `warning: ${problem}`,\n color: theme.warning,\n })),\n );\n const [live, setLive] = useState('');\n const [runningTool, setRunningTool] = useState<string | undefined>();\n const [input, setInput] = useState('');\n /** Highlighted row of the `/` menu; reset whenever the line changes. */\n const [menuIndex, setMenuIndex] = useState(0);\n const [busy, setBusy] = useState(false);\n const [mode, setMode] = useState<PermissionMode>(agent.permissionMode);\n const [cost, setCost] = useState(0);\n const [todos, setTodos] = useState<TodoItem[]>([]);\n const [queued, setQueued] = useState(0);\n const [candidate, setCandidate] = useState<MemoryCandidate | undefined>();\n const [context, setContext] = useState(() => agent.contextUse);\n const [compacted, setCompacted] = useState(0);\n\n const [pending, setPending] = useState<\n | { request: PermissionRequest; reason: string; resolve: (choice: PromptChoice) => void }\n | undefined\n >();\n const [question, setQuestion] = useState<\n { question: string; options?: string[]; resolve: (answer: string) => void } | undefined\n >();\n\n const controller = useRef<AbortController | undefined>(undefined);\n const push = useCallback((item: ScrollItem) => setItems((current) => [...current, item]), []);\n\n // The prompt and ask callbacks are installed once and read through refs, so a\n // re-render never leaves the agent holding a stale closure over old state.\n const pendingRef = useRef(setPending);\n pendingRef.current = setPending;\n const questionRef = useRef(setQuestion);\n questionRef.current = setQuestion;\n\n useEffect(() => {\n session.installPrompt(\n (request, reason) =>\n new Promise<PromptChoice>((resolve) => {\n pendingRef.current({ request, reason, resolve });\n }),\n );\n session.installAsk(\n (q, options) =>\n new Promise<string>((resolve) => {\n questionRef.current({ question: q, ...(options ? { options } : {}), resolve });\n }),\n );\n }, [session]);\n\n /** The mode to go back to once a plan is approved or abandoned. */\n const modeBeforePlan = useRef<PermissionMode | undefined>(undefined);\n /** The last thing the model said, which in plan mode is the plan itself. */\n const lastAssistantText = useRef('');\n\n const runTurn = useCallback(\n async (prompt: UserPrompt) => {\n setBusy(true);\n // Cleared per turn: a stale answer read back as this turn's plan is worse\n // than no plan at all.\n lastAssistantText.current = '';\n push({ kind: 'user', id: nextId(), text: promptLabel(prompt) });\n\n const abort = new AbortController();\n controller.current = abort;\n let assistantText = '';\n\n try {\n for await (const event of agent.runTurn(prompt, abort.signal)) {\n switch (event.type) {\n case 'text_delta':\n assistantText += event.text;\n setLive(assistantText);\n break;\n case 'intent':\n // The intent itself is the assistant text already on screen just\n // above the tool block, so only its absence is worth a line: a\n // batch that arrived without a reason is what this exists to show.\n if (event.text === undefined) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `about to run ${event.calls} tool call${\n event.calls === 1 ? '' : 's'\n } without saying why`,\n color: theme.warning,\n });\n }\n break;\n case 'tool_start':\n // The assistant's prose is flushed to scrollback before the tool\n // block, so the two never re-order once the tool finishes.\n if (assistantText.trim() !== '') {\n push({ kind: 'assistant', id: nextId(), text: assistantText.trimEnd() });\n assistantText = '';\n setLive('');\n }\n setRunningTool(event.call.toolName);\n break;\n case 'tool_end': {\n setRunningTool(undefined);\n const output = event.result.output.type === 'text' ? event.result.output.value : '';\n push({\n kind: 'tool',\n id: nextId(),\n name: event.toolName,\n ...(event.result.title ? { title: event.result.title } : {}),\n output,\n ...(event.result.isError ? { isError: true } : {}),\n });\n setTodos(agent.todos.list());\n break;\n }\n case 'usage':\n setCost(agent.costUsd);\n setContext(agent.contextUse);\n break;\n case 'budget':\n push({\n kind: 'notice',\n id: nextId(),\n text:\n event.raisedTo === undefined\n ? `stopped: $${event.spentUsd.toFixed(2)} spent against a ` +\n `$${event.limitUsd.toFixed(2)} budget`\n : `budget raised to $${event.raisedTo.toFixed(2)} after ` +\n `$${event.spentUsd.toFixed(2)} spent`,\n color: theme.warning,\n });\n break;\n case 'verification':\n // Shown to the user as it was shown to the model: the command, the\n // exit code and the output, none of it summarised.\n push({\n kind: 'tool',\n id: nextId(),\n name: event.result.command,\n title: `${event.result.command} - exit ${event.result.exitCode ?? 'killed'}`,\n output: event.result.output,\n ...(event.result.exitCode === 0 ? {} : { isError: true }),\n });\n break;\n case 'subagent':\n push({\n kind: 'notice',\n id: nextId(),\n text: `subagent \"${event.description}\": ${event.steps} step${\n event.steps === 1 ? '' : 's'\n }, $${event.costUsd.toFixed(4)}`,\n });\n break;\n case 'hook':\n // A hook that blocked something is the reason the agent did not do\n // it, so it is said out loud rather than left for the model to\n // paraphrase. Problems are shown too: a hook that failed silently\n // is one the user goes on believing is protecting them.\n if (event.blocked) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `${event.event} hook blocked this: ${event.blocked}`,\n color: theme.warning,\n });\n }\n for (const problem of event.problems) {\n push({ kind: 'notice', id: nextId(), text: problem, color: theme.warning });\n }\n break;\n case 'compacted':\n setCompacted((count) => count + event.replaced);\n push({\n kind: 'notice',\n id: nextId(),\n text: `compacted: ${event.replaced} earlier messages are now a summary`,\n });\n break;\n case 'error':\n push({\n kind: 'notice',\n id: nextId(),\n text: `error: ${event.error.message}`,\n color: theme.danger,\n });\n break;\n case 'turn_end':\n if (event.reason === 'aborted') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'interrupted',\n color: theme.warning,\n });\n }\n if (event.reason === 'max_steps') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'stopped: step limit reached',\n color: theme.warning,\n });\n }\n break;\n default:\n break;\n }\n setQueued(agent.pendingSteers);\n }\n } finally {\n if (assistantText.trim() !== '') {\n lastAssistantText.current = assistantText;\n push({ kind: 'assistant', id: nextId(), text: assistantText.trimEnd() });\n }\n setLive('');\n setRunningTool(undefined);\n setBusy(false);\n setQueued(agent.pendingSteers);\n controller.current = undefined;\n }\n },\n [agent, push],\n );\n\n const started = useRef(false);\n useEffect(() => {\n if (started.current || !initialPrompt) return;\n started.current = true;\n void runTurn(initialPrompt);\n }, [initialPrompt, runTurn]);\n\n /**\n * Lists what is remembered, with the sentence each rule came from. Memory the\n * user cannot inspect is memory they cannot trust, so provenance is shown\n * here rather than hidden in the file.\n */\n const showMemories = useCallback(\n async (argument?: string) => {\n const [verb, ...rest] = (argument ?? '').split(/\\s+/);\n const id = rest.join(' ').trim();\n if (verb === 'forget' && id) {\n const gone = await deleteMemory(id, agent.cwd);\n if (gone) await refreshSystemPrompt(agent, model, session.skills);\n push({\n kind: 'notice',\n id: nextId(),\n text: gone ? `forgot ${id}` : `no memory called \"${id}\"`,\n ...(gone ? {} : { color: theme.warning }),\n });\n return;\n }\n\n const memories = await loadMemories(agent.cwd);\n if (memories.length === 0) {\n push({ kind: 'notice', id: nextId(), text: 'nothing remembered yet' });\n return;\n }\n const lines = memories.map((memory) => {\n const when = memory.created.slice(0, 10);\n const why = memory.source ? `\\n from \"${memory.source}\" on ${when}` : '';\n return ` [${memory.id}] (${memory.scope}) ${memory.text}${why}`;\n });\n push({\n kind: 'notice',\n id: nextId(),\n text: `${lines.join('\\n')}\\n\\n /memory forget <id> removes one`,\n });\n },\n [agent, model, push, session.skills],\n );\n\n const remember = useCallback(\n async (scope: MemoryScope) => {\n if (!candidate) return;\n setCandidate(undefined);\n const saved = await saveMemory({ ...candidate, scope }, agent.cwd).catch(() => undefined);\n if (!saved) {\n push({ kind: 'notice', id: nextId(), text: 'could not save that', color: theme.warning });\n return;\n }\n // Applied from the next model call, not the next session.\n await refreshSystemPrompt(agent, model, session.skills);\n push({\n kind: 'notice',\n id: nextId(),\n text: `remembered [${saved.id}] (${scope}) - /memory to review or forget it`,\n });\n },\n [agent, candidate, model, push, session.skills],\n );\n\n /**\n * `/tree`, `/rewind`, `/fork` and `/undo`.\n *\n * The numbering is over the user's own prompts rather than over every entry:\n * \"go back to before I asked for the refactor\" is how people think about a\n * session, and an entry id is not something anyone can pick out of a list.\n */\n const sessionTree = useCallback(\n async (name: string, argument?: string) => {\n const entries = await session.branch();\n const prompts = entries.filter(\n (entry) =>\n entry.type === 'message' &&\n entry.message.role === 'user' &&\n entry.message.content.some(\n (part) => part.type === 'text' && !part.text.startsWith('<self-check>'),\n ),\n );\n\n if (name === 'tree' || !argument) {\n if (prompts.length === 0) {\n push({ kind: 'notice', id: nextId(), text: 'nothing in this session yet' });\n return;\n }\n const lines = prompts.map((entry, index) => {\n const text =\n entry.type === 'message'\n ? (entry.message.content.find((part) => part.type === 'text')?.text ?? '')\n : '';\n return ` ${index + 1}. ${text.split('\\n')[0]?.slice(0, 70) ?? ''}`;\n });\n push({\n kind: 'notice',\n id: nextId(),\n text: `${lines.join('\\n')}\\n\\n /rewind <n> goes back to one · /fork <n> branches from it`,\n });\n return;\n }\n\n const index = Number.parseInt(argument, 10) - 1;\n const target = prompts[index];\n if (!target) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `no prompt ${argument} in this session - /tree lists them`,\n color: theme.warning,\n });\n return;\n }\n // The entry before the chosen prompt: rewinding \"to\" a prompt means the\n // state the session was in when it was typed, not after it ran.\n const previous = entries[entries.indexOf(target) - 1] ?? target;\n\n if (name === 'rewind') {\n const kept = await session.rewindTo(previous.id);\n push({\n kind: 'notice',\n id: nextId(),\n text: `rewound to before prompt ${index + 1}; ${kept} message${kept === 1 ? '' : 's'} kept. Nothing was deleted - the rest is still in the transcript as another branch.`,\n });\n return;\n }\n\n const forked = await session.fork(previous.id);\n push({\n kind: 'notice',\n id: nextId(),\n text: forked\n ? `forked from prompt ${index + 1} into ${forked}; this session continues there and the original is untouched`\n : 'could not fork this session',\n ...(forked ? {} : { color: theme.warning }),\n });\n },\n [push, session],\n );\n\n const undoLast = useCallback(async () => {\n const result = await session.undo();\n if (!result) {\n push({ kind: 'notice', id: nextId(), text: 'nothing to undo', color: theme.warning });\n return;\n }\n const created = result.wasCreated.length\n ? ` Left in place because the batch created them: ${result.wasCreated.join(', ')}.`\n : '';\n push({\n kind: 'notice',\n id: nextId(),\n text: result.restored.length\n ? `undid ${result.label}: restored ${result.restored.join(', ')}.${created}`\n : `nothing to restore from ${result.label}.${created}`,\n });\n }, [push, session]);\n\n /**\n * `/plan` - draft, edit, approve.\n *\n * The plan is a file, and approving reads it back from disk rather than using\n * what the model wrote. That is the difference between a plan and a prompt:\n * whatever the user changed is what gets pinned, and if they changed nothing\n * it is still their decision that it stands.\n */\n const plan = useCallback(\n async (argument?: string) => {\n const path = planPath(session.store?.id ?? 'scratch');\n const [verb = '', ...rest] = (argument ?? '').split(/\\s+/);\n const task = [verb, ...rest].join(' ').trim();\n\n if (verb === 'show') {\n const text = await readPlan(path);\n push({\n kind: 'notice',\n id: nextId(),\n text: text ? `${path}\\n\\n${text}` : `no plan yet at ${path}`,\n });\n return;\n }\n if (verb === 'edit') {\n const result = await openInEditor(path);\n push({\n kind: 'notice',\n id: nextId(),\n text: result.message,\n ...(result.edited ? {} : { color: theme.warning }),\n });\n return;\n }\n if (verb === 'approve') {\n const text = await readPlan(path);\n if (!text) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `there is no plan at ${path} to approve`,\n color: theme.warning,\n });\n return;\n }\n agent.setPlan(text);\n // Back to whatever the session was in before planning: staying in plan\n // mode after approving one is the one thing the user certainly did not\n // ask for.\n const restored = modeBeforePlan.current ?? 'ask';\n agent.setPermissionMode(restored);\n setMode(restored);\n modeBeforePlan.current = undefined;\n push({\n kind: 'notice',\n id: nextId(),\n text: `plan approved and pinned for this run; permission mode: ${restored}`,\n });\n return;\n }\n if (verb === 'clear') {\n agent.setPlan(undefined);\n push({ kind: 'notice', id: nextId(), text: 'plan unpinned' });\n return;\n }\n if (task === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'usage: /plan <what you want planned>, then /plan edit, /plan approve',\n color: theme.warning,\n });\n return;\n }\n\n modeBeforePlan.current = agent.permissionMode;\n agent.setPermissionMode('plan');\n setMode('plan');\n await runTurn(`${task}\\n\\n${PLAN_PROMPT}`);\n\n // Written from the last thing the model said, which in plan mode is the\n // plan, because every mutating tool was refused.\n const drafted = lastAssistantText.current.trim();\n if (drafted === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'the model produced no plan to write',\n color: theme.warning,\n });\n return;\n }\n await savePlan(path, drafted);\n push({\n kind: 'notice',\n id: nextId(),\n text: `plan written to ${path}\\n/plan edit to change it, /plan approve to pin it`,\n });\n },\n [agent, push, runTurn, session.store],\n );\n\n /**\n * `/model` - show what is in use, or switch.\n *\n * The switch goes through the agent, which resolves the reference against the\n * same registry and credential order the CLI uses. A reference with no\n * credentials leaves the session on the model it had: half a switch would\n * price one model's tokens at another's rates.\n */\n const switchModel = useCallback(\n async (ref?: string) => {\n if (!ref) {\n const current = agent.model;\n const price = current.model.cost;\n push({\n kind: 'notice',\n id: nextId(),\n text: [\n ` ${current.provider.id}/${current.model.id}`,\n ` context ${(current.model.contextWindow ?? 0).toLocaleString()} tokens`,\n ` price $${price?.input ?? '?'} in / $${price?.output ?? '?'} out per million`,\n '',\n ' /model <provider/model> switches; `earshot models` lists them',\n ].join('\\n'),\n });\n return;\n }\n try {\n const resolved = await agent.changeModel(ref);\n const next = `${resolved.provider.id}/${resolved.model.id}`;\n setModel(next);\n // The system prompt names the model; leaving the old name in it would\n // tell the new model it is something else.\n await refreshSystemPrompt(agent, next, session.skills);\n push({ kind: 'notice', id: nextId(), text: `model: ${next}` });\n } catch (error) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `${(error as Error).message}`,\n color: theme.warning,\n });\n }\n },\n [agent, push, session.skills],\n );\n\n /** `/compact` - the 80% compaction, asked for early. */\n const compactNow = useCallback(async () => {\n const abort = new AbortController();\n controller.current = abort;\n setBusy(true);\n try {\n let compactedAnything = false;\n for await (const event of agent.compactNow(abort.signal)) {\n if (event.type === 'compacted') {\n compactedAnything = true;\n setCompacted((count) => count + event.replaced);\n push({\n kind: 'notice',\n id: nextId(),\n text: `compacted: ${event.replaced} earlier messages are now a summary`,\n });\n }\n }\n if (!compactedAnything) {\n push({ kind: 'notice', id: nextId(), text: 'nothing to compact yet' });\n }\n } catch (error) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `could not compact: ${(error as Error).message}`,\n color: theme.warning,\n });\n } finally {\n setBusy(false);\n setContext(agent.contextUse);\n controller.current = undefined;\n }\n }, [agent, push]);\n\n /**\n * One handler per registry entry, keyed by name.\n *\n * `Record<CommandName, ...>` is the whole point: a command added to\n * `COMMANDS` with no handler here fails to compile, and a handler for a name\n * the registry does not list fails to compile too. The menu and docs/cli.md\n * read the same registry, so \"listed but not dispatchable\" and \"dispatchable\n * but unlisted\" are both unreachable rather than merely unlikely.\n */\n const handlers: Record<CommandName, (argument?: string) => void> = {\n exit: () => exit(),\n help: () => push({ kind: 'notice', id: nextId(), text: describeCommands(session) }),\n model: (argument) => void switchModel(argument),\n compact: () => void compactNow(),\n context: () => {\n const { tokens, window } = agent.contextUse;\n const percent = window > 0 ? Math.round((tokens / window) * 100) : 0;\n const files = agent.touchedFiles;\n push({\n kind: 'notice',\n id: nextId(),\n text: [\n ` model ${model}`,\n ` context ~${tokens.toLocaleString()} of ${window.toLocaleString()} tokens (${percent}%)`,\n ` dropped ${compacted} earlier message${compacted === 1 ? '' : 's'} replaced by a summary`,\n ` files ${files.length === 0 ? 'none touched yet' : files.join(', ')}`,\n '',\n ' /compact summarises now rather than waiting for 80%',\n ].join('\\n'),\n });\n },\n cost: (argument) => {\n if (argument !== undefined && argument !== '') {\n const amount = Number.parseFloat(argument.replace(/^\\$/, ''));\n if (Number.isNaN(amount)) {\n push({\n kind: 'notice',\n id: nextId(),\n text: `usage: /cost [usd] - \"${argument}\" is not an amount`,\n color: theme.warning,\n });\n return;\n }\n // Zero removes the ceiling, the same way `--max-cost 0` does, so the two\n // ways of setting a budget cannot disagree about how to turn one off.\n agent.setBudget(amount > 0 ? amount : undefined);\n push({\n kind: 'notice',\n id: nextId(),\n text: amount > 0 ? `budget: $${amount.toFixed(2)}` : 'budget removed',\n });\n return;\n }\n const budget = agent.budgetUsd;\n push({\n kind: 'notice',\n id: nextId(),\n text:\n ` spent $${agent.costUsd.toFixed(4)}\\n` +\n ` budget ${budget === undefined ? 'none - /cost <usd> sets one' : `$${budget.toFixed(2)}`}`,\n });\n },\n todo: () => {\n const todos = agent.todos.list();\n push({\n kind: 'notice',\n id: nextId(),\n text:\n todos.length === 0\n ? 'no todos in this session'\n : todos\n .map(\n (todo) =>\n ` ${todo.status === 'done' ? 'x' : todo.status === 'in_progress' ? '>' : ' '} ${todo.text}`,\n )\n .join('\\n'),\n });\n },\n permissions: () => {\n const rules = agent.permissionRules;\n push({\n kind: 'notice',\n id: nextId(),\n text: [\n ` mode ${agent.permissionMode} (/mode changes it)`,\n ...(rules.length === 0\n ? [' rules none configured']\n : [\n ' rules (deny always wins, whatever the mode or scope)',\n ...rules.map(\n (rule) => ` ${rule.effect.padEnd(5)} ${rule.source} [${rule.scope}]`,\n ),\n ]),\n ].join('\\n'),\n });\n },\n init: () => void runTurn(INIT_PROMPT),\n\n mode: (argument) => {\n if (argument && isPermissionMode(argument)) {\n agent.setPermissionMode(argument);\n setMode(argument);\n push({ kind: 'notice', id: nextId(), text: `permission mode: ${argument}` });\n } else {\n push({\n kind: 'notice',\n id: nextId(),\n text: `usage: /mode <${PERMISSION_MODES.join('|')}>`,\n color: theme.warning,\n });\n }\n },\n memory: (argument) => void showMemories(argument),\n tree: (argument) => void sessionTree('tree', argument),\n rewind: (argument) => void sessionTree('rewind', argument),\n fork: (argument) => void sessionTree('fork', argument),\n undo: () => void undoLast(),\n plan: (argument) => void plan(argument),\n skills: () => push({ kind: 'notice', id: nextId(), text: describeExtensions(session) }),\n };\n const handlersRef = useRef(handlers);\n handlersRef.current = handlers;\n\n const handleCommand = useCallback(\n (command: string) => {\n // Split once, keeping the remainder: `split(/\\s+/, 2)` discards everything\n // after the second field, which silently drops the argument of any command\n // that takes more than one word.\n const body = command.slice(1).trim();\n const space = body.search(/\\s/);\n const name = space === -1 ? body : body.slice(0, space);\n const argument = space === -1 ? undefined : body.slice(space + 1).trim();\n\n const spec = findCommand(name);\n if (spec) {\n // Checked once, here, rather than inside each handler that needs it.\n // Three copies of this branch is how `/plan` and `/tree` came to phrase\n // the same refusal differently.\n if (spec.idleOnly && busy) {\n push({\n kind: 'notice',\n id: nextId(),\n text: 'finish or interrupt the current turn first (esc)',\n color: theme.warning,\n });\n return;\n }\n handlersRef.current[spec.name as CommandName](argument);\n return;\n }\n\n // A user-defined command is expanded into a prompt and run as one. It is\n // not a second way to reach the tools: whatever the file asks for goes\n // through the same turn, and the same gate, as anything typed by hand.\n const custom = session.commands.find((entry) => entry.name === name);\n if (custom) {\n const prompt = expandCommand(custom, argument ?? '');\n if (prompt.trim() === '') {\n push({\n kind: 'notice',\n id: nextId(),\n text: `/${name} expanded to nothing`,\n color: theme.warning,\n });\n return;\n }\n if (busy) {\n agent.steer(prompt);\n setQueued(agent.pendingSteers);\n push({ kind: 'user', id: nextId(), text: command });\n return;\n }\n void runTurn(prompt);\n return;\n }\n\n push({\n kind: 'notice',\n id: nextId(),\n text: `unknown command \"${name}\"`,\n color: theme.warning,\n });\n },\n [agent, busy, push, runTurn, session],\n );\n\n const submit = useCallback(\n (text: string) => {\n // Enter is resolved here rather than in the app's `useInput`, because both\n // handlers see the same keystroke and Ink guarantees no order between\n // them: deciding in two places is how a command would get completed and\n // run at once, or run one row off from the one that was highlighted.\n const entry = menuOpenRef.current ? menuEntriesRef.current[selectedRef.current] : undefined;\n if (entry) {\n setInput('');\n setMenuIndex(0);\n handleCommand(entry.insert);\n return;\n }\n\n const trimmed = text.trim();\n setInput('');\n if (trimmed === '') return;\n\n if (trimmed.startsWith('/')) {\n handleCommand(trimmed);\n return;\n }\n // Offered, never stored: a wrong rule saved silently would follow the user\n // into every future session with no sign of where it came from.\n setCandidate(detectPreference(trimmed));\n if (busy) {\n // Steering, not queueing a second turn: the agent injects it at the next\n // model call so the user redirects without losing work in flight.\n agent.steer(trimmed);\n setQueued(agent.pendingSteers);\n push({ kind: 'user', id: nextId(), text: trimmed });\n return;\n }\n void runTurn(trimmed);\n },\n [agent, busy, push, runTurn, handleCommand],\n );\n\n // Input is disabled while a prompt is open so the two do not both consume keys.\n const inputActive = !pending && !question;\n\n // Open while the line is a bare command name being typed. A space means an\n // argument is being written, and the user has already chosen.\n const menuOpen = inputActive && input.startsWith('/') && !input.includes(' ');\n const entries = menuOpen ? menuEntries(input.slice(1), session.commands, busy) : [];\n const selected = Math.min(menuIndex, Math.max(0, entries.length - 1));\n\n // Read by `submit`, which runs from TextInput's own key handler and would\n // otherwise close over the previous render's list.\n const menuOpenRef = useRef(menuOpen);\n menuOpenRef.current = menuOpen;\n const menuEntriesRef = useRef(entries);\n menuEntriesRef.current = entries;\n const selectedRef = useRef(selected);\n selectedRef.current = selected;\n\n useInput(\n (input_, key) => {\n // The menu adds no `useInput` of its own: a second handler would race this\n // one for the same keystroke. It is a pure render of state owned here, and\n // this branch is the only place its keys are interpreted.\n if (menuOpen && entries.length > 0) {\n if (key.upArrow) {\n setMenuIndex((current) => (current <= 0 ? entries.length - 1 : current - 1));\n return;\n }\n if (key.downArrow) {\n setMenuIndex((current) => (current >= entries.length - 1 ? 0 : current + 1));\n return;\n }\n if (key.tab) {\n // Completes without running: choosing a command and committing to it\n // are two decisions, and one of them takes an argument.\n const entry = entries[selected];\n if (entry) setInput(`${entry.insert} `);\n setMenuIndex(0);\n return;\n }\n if (key.escape) {\n // Closes the menu and nothing else. Escape already means \"cancel the\n // turn\", and a menu that quietly took that over would make the one\n // key people rely on mid-turn depend on what is on the line.\n setInput('');\n setMenuIndex(0);\n return;\n }\n }\n if (key.escape) {\n setCandidate(undefined);\n if (busy) controller.current?.abort();\n return;\n }\n // Bound rather than modal: taking the offer must not stop the user typing.\n if (key.ctrl && candidate && (input_ === 'r' || input_ === 'g')) {\n void remember(input_ === 'r' ? 'project' : 'user');\n }\n },\n { isActive: inputActive },\n );\n\n return (\n <Box flexDirection=\"column\">\n <Static items={items}>{(item) => <ScrollRow key={item.id} item={item} />}</Static>\n\n {live !== '' && (\n <Box marginTop={1}>\n <Markdown text={live} />\n </Box>\n )}\n {runningTool && <ToolBlock name={runningTool} running />}\n\n {pending && (\n <PermissionPrompt\n request={pending.request}\n reason={pending.reason}\n onChoice={(choice) => {\n setPending(undefined);\n pending.resolve(choice);\n }}\n />\n )}\n\n {question && (\n <QuestionPrompt\n question={question.question}\n {...(question.options ? { options: question.options } : {})}\n onAnswer={(answer) => {\n setQuestion(undefined);\n question.resolve(answer);\n }}\n />\n )}\n\n {candidate && inputActive && <MemoryCapture candidate={candidate} />}\n\n {menuOpen && <CommandMenu entries={entries} selected={selected} />}\n\n {inputActive && (\n <Box marginTop={1}>\n <Text color={theme.user}>{'> '}</Text>\n <TextInput\n value={input}\n onChange={(value) => {\n setInput(value);\n setMenuIndex(0);\n }}\n onSubmit={submit}\n placeholder={busy ? 'steer the agent, or esc to interrupt' : 'what should I do?'}\n />\n </Box>\n )}\n\n <StatusLine\n model={model}\n mode={mode}\n costUsd={cost}\n todos={todos}\n busy={busy}\n queued={queued}\n context={context}\n compacted={compacted}\n />\n </Box>\n );\n}\n\nfunction ScrollRow({ item }: { item: ScrollItem }) {\n if (item.kind === 'user') {\n return (\n <Box marginTop={1}>\n <Text color={theme.user}>{'> '}</Text>\n <Text>{item.text}</Text>\n </Box>\n );\n }\n if (item.kind === 'assistant') {\n return (\n <Box marginTop={1}>\n <Markdown text={item.text} />\n </Box>\n );\n }\n if (item.kind === 'tool') {\n return (\n <ToolBlock\n name={item.name}\n {...(item.title ? { title: item.title } : {})}\n {...(item.output ? { output: item.output } : {})}\n {...(item.isError ? { isError: true } : {})}\n />\n );\n }\n return (\n <Box marginTop={1}>\n <Text color={item.color ?? theme.muted}>{item.text}</Text>\n </Box>\n );\n}\n\n/**\n * What `/help` shows: the registry, plus whatever this directory contributes.\n *\n * Built from the same list the menu and docs/cli.md read, so `/help` cannot\n * describe a command that does not exist or miss one that does.\n */\nfunction describeCommands(session: CreatedSession): string {\n const lines = commandRows().map((row) => ` ${row.command.padEnd(34)} ${row.summary}`);\n if (session.commands.length > 0) {\n lines.push('', ' commands from this directory:');\n for (const command of session.commands) {\n lines.push(` ${`/${command.name}`.padEnd(34)} ${command.description}`);\n }\n }\n lines.push('', ' type / at the prompt to filter this list and pick one');\n return lines.join('\\n');\n}\n\n/**\n * `/init`. Phrased as a request, not a template: the file is meant to describe\n * what this project actually does, and a model handed a skeleton fills the\n * skeleton in rather than reading the repository.\n */\nconst INIT_PROMPT = `Write an AGENTS.md at the root of this project for a coding agent that has never seen it.\n\nRead enough of the repository first to be accurate. Cover: what the project is, how it is laid out, the commands to build, test and lint it, and the conventions and rules that are not obvious from the code. Prefer rules that prevent a specific failure, and say what the failure is. If an AGENTS.md or CLAUDE.md already exists, improve it in place rather than replacing it.`;\n\n/**\n * What `/skills` shows. Skills and commands are listed together because from the\n * user's side they are the same question - what extra behaviour is loaded in\n * this directory, and where did it come from.\n */\nfunction describeExtensions(session: CreatedSession): string {\n const lines: string[] = [];\n if (session.skills.length > 0) {\n lines.push('skills (the agent loads these itself when they fit):');\n for (const skill of session.skills) {\n lines.push(` ${skill.name} [${skill.scope}] ${skill.description}`);\n }\n }\n if (session.commands.length > 0) {\n if (lines.length > 0) lines.push('');\n lines.push('commands you can type:');\n for (const command of session.commands) {\n lines.push(` /${command.name} [${command.scope}] ${command.description}`);\n }\n }\n return lines.length === 0\n ? 'no skills or commands found in .earshot/skills, .earshot/commands or your config directory'\n : lines.join('\\n');\n}\n",
|
|
86
|
+
"/**\n * The one list of built-in slash commands.\n *\n * Dispatch, the `/` menu and the table in docs/cli.md all read from here. Before\n * this existed the if-chain in app.tsx and the docs table were two hand-written\n * lists free to disagree, and a menu would have been a third: a command could be\n * dispatchable but undocumented, or documented and not dispatchable, with\n * nothing to notice either. The handler table in app.tsx is keyed by\n * `CommandName`, so a missing or extra handler is a compile error, and\n * packages/tui/test/commands.test.ts holds docs/cli.md to the same list.\n *\n * Nothing here knows about user-defined commands from `.earshot/commands`:\n * those are discovered at runtime and reach the menu from `session.commands`.\n */\n\nexport interface CommandVerb {\n readonly name: string;\n /** Argument shape as the user types it. */\n readonly args?: string;\n readonly summary: string;\n}\n\nexport interface CommandSpec {\n readonly name: string;\n /** Other names that dispatch to the same handler. Not menu rows of their own. */\n readonly aliases?: readonly string[];\n /** Argument shape as the user types it, e.g. `<n>`; absent means none. */\n readonly args?: string;\n /**\n * One line, plain prose. This is the menu row and the docs cell, so it carries\n * no markdown: the menu renders into a terminal, not into a page.\n */\n readonly summary: string;\n /**\n * Refuses to run while a turn is in flight. Checked once by the dispatcher\n * rather than re-implemented per command, which is how three copies of the\n * same \"finish or interrupt first\" branch used to drift.\n */\n readonly idleOnly?: boolean;\n readonly verbs?: readonly CommandVerb[];\n}\n\n/**\n * Declared `as const` for the literal names, then re-exported as\n * `readonly CommandSpec[]`: without the widening, an entry that omits `args` or\n * `idleOnly` has no such property at all, and every reader has to narrow before\n * it can ask.\n */\nconst SPECS = [\n {\n name: 'help',\n summary: 'List the commands you can type',\n },\n {\n name: 'model',\n args: '[ref]',\n summary: 'Show the model in use, or switch to another for the rest of the session',\n },\n {\n name: 'mode',\n args: '<plan|ask|accept-edits|auto|yolo>',\n summary: 'Change the permission mode',\n },\n {\n name: 'plan',\n args: '<task>',\n summary: 'Draft a plan in plan mode and write it to a file',\n idleOnly: true,\n verbs: [\n { name: 'edit', summary: 'Open the plan in $VISUAL/$EDITOR, or print its path' },\n { name: 'approve', summary: 'Pin the plan as the file now reads for the rest of the run' },\n { name: 'show', summary: 'Read the plan back' },\n { name: 'clear', summary: 'Unpin the plan' },\n ],\n },\n {\n name: 'compact',\n summary: 'Summarise the session so far and free up the context window',\n idleOnly: true,\n },\n {\n name: 'context',\n summary: 'Show what is in the context window and what compaction has dropped',\n },\n {\n name: 'cost',\n args: '[usd]',\n summary: 'Show what this session has spent, or set the budget ceiling; 0 removes it',\n },\n {\n name: 'todo',\n summary: \"Show the agent's current todo list\",\n },\n {\n name: 'permissions',\n summary: 'Show the permission mode and the rules in force',\n },\n {\n name: 'init',\n summary: 'Write an AGENTS.md describing this project',\n idleOnly: true,\n },\n {\n name: 'skills',\n summary: 'List discovered skills and user-defined commands',\n },\n {\n name: 'memory',\n summary: 'List remembered preferences, each with the sentence it came from',\n verbs: [{ name: 'forget', args: '<id>', summary: 'Delete one remembered preference' }],\n },\n {\n name: 'tree',\n summary: \"List this session's prompts, numbered\",\n idleOnly: true,\n },\n {\n name: 'rewind',\n args: '<n>',\n summary: 'Go back to the state before prompt n; nothing is deleted',\n idleOnly: true,\n },\n {\n name: 'fork',\n args: '<n>',\n summary: 'Branch from prompt n into a new transcript',\n idleOnly: true,\n },\n {\n name: 'undo',\n summary: \"Revert the last tool batch's file changes; again to step back further\",\n },\n {\n name: 'exit',\n aliases: ['quit'],\n summary: 'Quit',\n },\n] as const satisfies readonly CommandSpec[];\n\nexport const COMMANDS: readonly CommandSpec[] = SPECS;\n\nexport type CommandName = (typeof SPECS)[number]['name'];\n\n/** The spec a typed name dispatches to, including via an alias. */\nexport function findCommand(name: string): CommandSpec | undefined {\n return COMMANDS.find(\n (command) =>\n command.name === name || (command.aliases as readonly string[] | undefined)?.includes(name),\n );\n}\n\nexport interface CommandRow {\n /** As typed, e.g. `/plan approve`. */\n readonly command: string;\n readonly summary: string;\n readonly spec: CommandSpec;\n}\n\n/**\n * Every documented and menu-listable form, one row per verb.\n *\n * A verb is a row of its own because `/plan approve` does something a user would\n * never guess from a row that only says `/plan`, and a menu that hides it is a\n * menu that fails at the one job it has.\n */\nexport function commandRows(): CommandRow[] {\n const rows: CommandRow[] = [];\n for (const spec of COMMANDS) {\n rows.push({\n command: spec.args ? `/${spec.name} ${spec.args}` : `/${spec.name}`,\n summary: spec.summary,\n spec,\n });\n for (const verb of spec.verbs ?? []) {\n rows.push({\n command: `/${spec.name} ${verb.name}${verb.args ? ` ${verb.args}` : ''}`,\n summary: verb.summary,\n spec,\n });\n }\n }\n return rows;\n}\n",
|
|
87
|
+
"import type { SlashCommand } from '@earshot/core';\nimport { Box, Text } from 'ink';\nimport { COMMANDS, type CommandSpec, commandRows } from '../commands.ts';\nimport { theme } from '../theme.ts';\n\n/**\n * A summary longer than this is cut.\n *\n * The row is one line by construction: Ink wraps a `Text` that overruns the\n * terminal, and a wrapped row would push the rest of the menu - and the prompt\n * under it - down by an unpredictable number of lines on every keystroke.\n */\nconst SUMMARY_WIDTH = 58;\n\n/** How many rows fit before the list starts hiding a small terminal's scrollback. */\nconst VISIBLE = 10;\n\nexport interface MenuEntry {\n /** What Tab completes into the input, without the argument placeholder. */\n readonly insert: string;\n /** What the row shows, argument placeholder included. */\n readonly label: string;\n readonly summary: string;\n /** User-defined commands are labelled by where they came from. */\n readonly scope?: string;\n readonly disabled?: boolean;\n}\n\n/**\n * The rows for a typed query, built from the registry and the session's\n * user-defined commands.\n *\n * A pure function rather than a hook so the app can index into the same list it\n * renders - a menu whose selection and display are computed separately is a\n * menu that eventually runs the row above the one that was highlighted.\n */\nexport function menuEntries(\n query: string,\n commands: readonly SlashCommand[],\n busy: boolean,\n): MenuEntry[] {\n const entries: MenuEntry[] = [];\n\n for (const spec of ranked(COMMANDS, query)) {\n if (!matches(spec.name, query)) continue;\n const disabled = busy && spec.idleOnly === true;\n // Verbs only once the user has shown interest in that command: a bare `/`\n // listing every sub-verb buries the nine commands under fourteen rows.\n const expanded = query !== '' && spec.name.startsWith(query);\n for (const row of commandRows()) {\n if (row.spec.name !== spec.name) continue;\n const isBase = row.command === (spec.args ? `/${spec.name} ${spec.args}` : `/${spec.name}`);\n if (!isBase && !expanded) continue;\n entries.push({\n insert: insertFor(row.command, spec),\n label: row.command,\n summary: row.summary,\n ...(disabled ? { disabled: true } : {}),\n });\n }\n }\n\n for (const command of ranked(commands, query)) {\n if (!matches(command.name, query)) continue;\n entries.push({\n insert: `/${command.name}`,\n label: `/${command.name}`,\n summary: command.description,\n scope: command.scope,\n });\n }\n\n return entries;\n}\n\n/**\n * The argument placeholder is shown but never inserted: completing `/rewind <n>`\n * into the line would leave the user deleting the placeholder before they can\n * type the number.\n */\nfunction insertFor(command: string, spec: CommandSpec): string {\n const withoutArgs = spec.args ? command.replace(` ${spec.args}`, '') : command;\n return withoutArgs.replace(/\\s<[^>]*>$/, '');\n}\n\n/**\n * An undefined `color` prop is not the same as an absent one under\n * `exactOptionalPropertyTypes`, so the default row passes no colour at all.\n */\nconst clamp = (text: string) =>\n text.length <= SUMMARY_WIDTH ? text : `${text.slice(0, SUMMARY_WIDTH - 1)}…`;\n\nfunction rowColor(entry: MenuEntry, active: boolean): { color?: string } {\n if (entry.disabled) return { color: theme.muted };\n if (active) return { color: theme.user };\n return {};\n}\n\nfunction matches(name: string, query: string): boolean {\n return query === '' || name.includes(query);\n}\n\n/**\n * Prefix matches first, so `/re` puts `/rewind` above `/tree` - the row the\n * user is most likely typing towards is the one Enter would run.\n * Otherwise the registry's own order is kept, which is the order docs/cli.md\n * documents.\n */\nfunction ranked<T extends { readonly name: string }>(items: readonly T[], query: string): T[] {\n if (query === '') return [...items];\n return [\n ...items.filter((item) => item.name.startsWith(query)),\n ...items.filter((item) => !item.name.startsWith(query)),\n ];\n}\n\nexport interface CommandMenuProps {\n entries: readonly MenuEntry[];\n selected: number;\n}\n\n/**\n * Lives in the live region only.\n *\n * Completed turns are in Ink's `Static` and are written to the terminal once;\n * anything that re-renders them would repaint real scrollback the user has\n * already scrolled past. This draws below them and disappears without touching\n * a row above it.\n */\nexport function CommandMenu({ entries, selected }: CommandMenuProps) {\n if (entries.length === 0) {\n return (\n <Box marginTop={1}>\n <Text color={theme.muted}>no command matches</Text>\n </Box>\n );\n }\n\n // The window follows the selection so arrowing past the eighth row scrolls\n // rather than moving a highlight nobody can see.\n const start = Math.min(\n Math.max(0, selected - VISIBLE + 1),\n Math.max(0, entries.length - VISIBLE),\n );\n const shown = entries.slice(start, start + VISIBLE);\n const hidden = entries.length - shown.length;\n\n return (\n <Box flexDirection=\"column\" marginTop={1}>\n {shown.map((entry, index) => {\n const active = start + index === selected;\n return (\n <Box key={entry.label}>\n <Text color={active ? theme.user : theme.muted}>{active ? '› ' : ' '}</Text>\n <Text {...rowColor(entry, active)}>{entry.label.padEnd(34)}</Text>\n <Text color={theme.muted}>\n {clamp(\n `${entry.scope ? `[${entry.scope}] ` : ''}${entry.summary}${\n entry.disabled ? ' (not while a turn is running)' : ''\n }`,\n )}\n </Text>\n </Box>\n );\n })}\n <Box>\n <Text color={theme.muted}>\n {hidden > 0 ? ` ${hidden} more · ` : ' '}↑↓ choose · tab complete · enter run · esc\n close\n </Text>\n </Box>\n </Box>\n );\n}\n",
|
|
87
88
|
"/**\n * Colours are named by role rather than by hue so a future theme can be swapped\n * in one place. Only the sixteen ANSI names are used: a 24-bit palette looks\n * better on the terminals that support it and unreadable on the ones that map it\n * badly, and a coding agent has to be legible on a stranger's machine.\n */\nexport const theme = {\n user: 'cyan',\n assistant: 'white',\n reasoning: 'gray',\n tool: 'blue',\n toolError: 'red',\n added: 'green',\n removed: 'red',\n hunk: 'cyan',\n muted: 'gray',\n warning: 'yellow',\n danger: 'red',\n accent: 'magenta',\n} as const;\n\n/** Mode indicators for the status line, shortest first - the line is one row. */\nexport const MODE_LABEL: Record<string, string> = {\n plan: 'plan',\n ask: 'ask',\n 'accept-edits': 'edits',\n auto: 'auto',\n yolo: 'yolo',\n};\n\nexport const MODE_COLOR: Record<string, string> = {\n plan: theme.accent,\n ask: theme.muted,\n 'accept-edits': theme.added,\n auto: theme.warning,\n yolo: theme.danger,\n};\n",
|
|
89
|
+
"import { Box, Text } from 'ink';\nimport { theme } from '../theme.ts';\n\n/**\n * Renders a model's markdown as styled terminal text.\n *\n * Not a spec-complete parser - just the subset a model actually produces in\n * conversation: headers, bold/italic, inline and fenced code, lists, block\n * quotes and rules. Anything else falls through as plain text rather than\n * failing, since a raw line is still more readable than a crash.\n */\nexport function Markdown({ text }: { text: string }) {\n const blocks = splitBlocks(text);\n return (\n <Box flexDirection=\"column\">\n {blocks.map((block, index) => (\n // Blocks have no identity beyond position: the whole text is replaced\n // wholesale on every render, never reordered in place.\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Block key={index} block={block} />\n ))}\n </Box>\n );\n}\n\ntype ParsedBlock =\n | { kind: 'code'; lang: string; lines: string[] }\n | { kind: 'heading'; level: number; text: string }\n | { kind: 'rule' }\n | { kind: 'list'; ordered: boolean; items: string[] }\n | { kind: 'quote'; lines: string[] }\n | { kind: 'paragraph'; text: string };\n\nfunction splitBlocks(text: string): ParsedBlock[] {\n const lines = text.split('\\n');\n const blocks: ParsedBlock[] = [];\n let index = 0;\n\n while (index < lines.length) {\n const line = lines[index] ?? '';\n\n if (line.trim() === '') {\n index++;\n continue;\n }\n\n const fence = line.match(/^```(\\w*)\\s*$/);\n if (fence) {\n const lang = fence[1] ?? '';\n const codeLines: string[] = [];\n index++;\n while (index < lines.length && !/^```\\s*$/.test(lines[index] ?? '')) {\n codeLines.push(lines[index] ?? '');\n index++;\n }\n index++; // closing fence\n blocks.push({ kind: 'code', lang, lines: codeLines });\n continue;\n }\n\n const heading = line.match(/^(#{1,6})\\s+(.*)$/);\n if (heading) {\n blocks.push({ kind: 'heading', level: heading[1]?.length ?? 1, text: heading[2] ?? '' });\n index++;\n continue;\n }\n\n if (/^(-{3,}|\\*{3,}|_{3,})\\s*$/.test(line.trim())) {\n blocks.push({ kind: 'rule' });\n index++;\n continue;\n }\n\n const listItem = line.match(/^\\s*([-*]|\\d+[.)])\\s+(.*)$/);\n if (listItem) {\n const ordered = /\\d/.test(listItem[1] ?? '');\n const items: string[] = [];\n while (index < lines.length) {\n const match = (lines[index] ?? '').match(/^\\s*(?:[-*]|\\d+[.)])\\s+(.*)$/);\n if (!match) break;\n items.push(match[1] ?? '');\n index++;\n }\n blocks.push({ kind: 'list', ordered, items });\n continue;\n }\n\n if (line.trimStart().startsWith('>')) {\n const quoteLines: string[] = [];\n while (index < lines.length && (lines[index] ?? '').trimStart().startsWith('>')) {\n quoteLines.push((lines[index] ?? '').trimStart().replace(/^>\\s?/, ''));\n index++;\n }\n blocks.push({ kind: 'quote', lines: quoteLines });\n continue;\n }\n\n const paragraphLines: string[] = [];\n while (index < lines.length && (lines[index] ?? '').trim() !== '') {\n const current = lines[index] ?? '';\n if (\n /^```/.test(current) ||\n /^(#{1,6})\\s+/.test(current) ||\n /^\\s*([-*]|\\d+[.)])\\s+/.test(current) ||\n current.trimStart().startsWith('>')\n ) {\n break;\n }\n paragraphLines.push(current);\n index++;\n }\n blocks.push({ kind: 'paragraph', text: paragraphLines.join(' ') });\n }\n\n return blocks;\n}\n\nfunction Block({ block }: { block: ParsedBlock }) {\n switch (block.kind) {\n case 'code':\n return (\n <Box flexDirection=\"column\" marginY={1} paddingLeft={2}>\n {block.lines.map((line, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} color={theme.tool}>\n {line}\n </Text>\n ))}\n </Box>\n );\n case 'heading':\n return (\n <Box marginTop={block.level <= 2 ? 1 : 0}>\n <Text bold underline={block.level === 1} color={theme.assistant}>\n {inlineToText(block.text)}\n </Text>\n </Box>\n );\n case 'rule':\n return <Text color={theme.muted}>{'─'.repeat(40)}</Text>;\n case 'list':\n return (\n <Box flexDirection=\"column\">\n {block.items.map((item, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index}>\n {' '}\n {block.ordered ? `${index + 1}.` : '-'} <Inline text={item} />\n </Text>\n ))}\n </Box>\n );\n case 'quote':\n return (\n <Box flexDirection=\"column\" paddingLeft={1}>\n {block.lines.map((line, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} color={theme.muted} italic>\n │ {inlineToText(line)}\n </Text>\n ))}\n </Box>\n );\n default:\n return (\n <Text>\n <Inline text={block.text} />\n </Text>\n );\n }\n}\n\n/** Strips inline markers for contexts (headings, quotes) that render as one line. */\nfunction inlineToText(text: string): string {\n return text\n .replace(/\\*\\*(.+?)\\*\\*/g, '$1')\n .replace(/__(.+?)__/g, '$1')\n .replace(/\\*(.+?)\\*/g, '$1')\n .replace(/_(.+?)_/g, '$1')\n .replace(/`(.+?)`/g, '$1');\n}\n\n/**\n * Splits one line into bold/italic/code spans and renders each with its own\n * styling, in order - the only way Ink can mix styles within a single line.\n */\nfunction Inline({ text }: { text: string }) {\n const pattern = /(\\*\\*.+?\\*\\*|__.+?__|`.+?`|\\*.+?\\*|_.+?_)/g;\n const parts = text.split(pattern);\n\n return (\n <>\n {parts.map((part, index) => {\n if (part === '') return null;\n if (part.startsWith('**') && part.endsWith('**')) {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} bold>\n {part.slice(2, -2)}\n </Text>\n );\n }\n if (part.startsWith('__') && part.endsWith('__')) {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} bold>\n {part.slice(2, -2)}\n </Text>\n );\n }\n if (part.startsWith('`') && part.endsWith('`')) {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} color={theme.tool}>\n {part.slice(1, -1)}\n </Text>\n );\n }\n if (part.startsWith('*') && part.endsWith('*')) {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} italic>\n {part.slice(1, -1)}\n </Text>\n );\n }\n if (part.startsWith('_') && part.endsWith('_')) {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} italic>\n {part.slice(1, -1)}\n </Text>\n );\n }\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index}>{part}</Text>\n );\n })}\n </>\n );\n}\n",
|
|
88
90
|
"import type { MemoryCandidate } from '@earshot/core';\nimport { Box, Text } from 'ink';\nimport { theme } from '../theme.ts';\n\nexport interface MemoryCaptureProps {\n candidate: MemoryCandidate;\n}\n\n/**\n * A one-line offer, not a modal.\n *\n * Capturing a preference must never interrupt the turn the user just started:\n * a dialog here would make correcting the agent more expensive than letting the\n * mistake stand, which is the opposite of the point. Two keystrokes take it,\n * ignoring it costs nothing, and it disappears with the next prompt.\n */\nexport function MemoryCapture({ candidate }: MemoryCaptureProps) {\n return (\n <Box marginTop={1}>\n <Text color={theme.accent}>remember </Text>\n <Text>“{candidate.text}”</Text>\n <Text color={theme.muted}>? ctrl+r for this project · ctrl+g everywhere</Text>\n </Box>\n );\n}\n",
|
|
89
91
|
"import type { PermissionRequest, PromptChoice } from '@earshot/core';\nimport { Box, Text, useInput } from 'ink';\nimport { useState } from 'react';\nimport { theme } from '../theme.ts';\nimport { DiffView } from './diff.tsx';\n\nexport interface PermissionPromptProps {\n request: PermissionRequest;\n reason: string;\n onChoice: (choice: PromptChoice) => void;\n}\n\ninterface Option {\n label: string;\n choice: PromptChoice;\n color: string;\n}\n\n/**\n * The approval prompt.\n *\n * It renders `request.detail` in full - the actual command, or the actual diff.\n * A prompt that shows a summary is one people learn to approve without reading,\n * which makes the whole gate theatre. Nothing here paraphrases.\n *\n * \"Allow once\" is first and selected by default. The safe choice being the\n * default matters more than the convenient one, and a user who wants the\n * standing rule has to move to it deliberately.\n */\nexport function PermissionPrompt({ request, reason, onChoice }: PermissionPromptProps) {\n const [selected, setSelected] = useState(0);\n\n const options: Option[] = [\n { label: 'Allow once', choice: { kind: 'allow-once' }, color: theme.assistant },\n {\n label: `Always allow ${request.tool}(${truncate(request.target, 40)}) in this project`,\n choice: { kind: 'allow-always', scope: 'project' },\n color: theme.assistant,\n },\n {\n label: 'Deny and tell the agent why',\n choice: { kind: 'deny' },\n color: theme.danger,\n },\n ];\n\n useInput((input, key) => {\n if (key.upArrow || input === 'k') setSelected((n) => (n + options.length - 1) % options.length);\n else if (key.downArrow || input === 'j') setSelected((n) => (n + 1) % options.length);\n else if (key.return) onChoice(options[selected]?.choice ?? { kind: 'deny' });\n // Escape is a denial, not a dismissal: a prompt that can be closed without\n // answering would leave the turn waiting on a promise nothing will resolve.\n else if (key.escape) onChoice({ kind: 'deny', message: 'the user dismissed the prompt' });\n });\n\n const isDiff = request.detail.includes('\\n@@') || request.detail.startsWith('---');\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={theme.warning} paddingX={1}>\n <Text bold color={theme.warning}>\n {request.title}\n </Text>\n <Text color={theme.muted}>{reason}</Text>\n <Box marginY={1} flexDirection=\"column\">\n {isDiff ? <DiffView diff={request.detail} /> : <Text wrap=\"wrap\">{request.detail}</Text>}\n </Box>\n {options.map((option, index) => (\n <Text key={option.label} color={index === selected ? theme.accent : option.color}>\n {index === selected ? '❯ ' : ' '}\n {option.label}\n </Text>\n ))}\n </Box>\n );\n}\n\nfunction truncate(value: string, max: number): string {\n return value.length <= max ? value : `${value.slice(0, max - 1)}…`;\n}\n",
|
|
90
92
|
"import { Box, Text } from 'ink';\nimport { theme } from '../theme.ts';\n\n/** Beyond this a diff is summarised; a 900-line hunk is not read, it is scrolled past. */\nconst MAX_LINES = 60;\n\nexport function DiffView({ diff, maxLines = MAX_LINES }: { diff: string; maxLines?: number }) {\n const lines = diff.split('\\n');\n // The `---`/`+++` header repeats the filename the caller has already shown.\n const body = lines.filter((line) => !line.startsWith('---') && !line.startsWith('+++'));\n const shown = body.slice(0, maxLines);\n const hidden = body.length - shown.length;\n\n return (\n <Box flexDirection=\"column\">\n {shown.map((line, index) => (\n // A diff line has no identity beyond its position, and duplicate lines in\n // one hunk are ordinary. The list is only ever replaced wholesale - never\n // reordered or spliced - so a positional key is the correct one here.\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} color={colorFor(line)} wrap=\"truncate-end\">\n {line === '' ? ' ' : line}\n </Text>\n ))}\n {hidden > 0 && (\n <Text color={theme.muted}>\n {' '}\n ... {hidden} more lines\n </Text>\n )}\n </Box>\n );\n}\n\nfunction colorFor(line: string): string {\n if (line.startsWith('+')) return theme.added;\n if (line.startsWith('-')) return theme.removed;\n if (line.startsWith('@@')) return theme.hunk;\n return theme.muted;\n}\n\n/** One line of counts, for a collapsed edit. */\nexport function diffStat(diff: string): string {\n let added = 0;\n let removed = 0;\n for (const line of diff.split('\\n')) {\n if (line.startsWith('+') && !line.startsWith('+++')) added++;\n if (line.startsWith('-') && !line.startsWith('---')) removed++;\n }\n return `+${added} -${removed}`;\n}\n",
|
|
@@ -92,14 +94,16 @@
|
|
|
92
94
|
"import { Text, useInput } from 'ink';\nimport { useEffect, useRef } from 'react';\nimport { theme } from '../theme.ts';\n\nexport interface TextInputProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit?: (value: string) => void;\n placeholder?: string;\n isActive?: boolean;\n}\n\n/**\n * A single-line controlled input.\n *\n * Hand-written rather than pulled from `ink-text-input`, which has not kept pace\n * with Ink's major versions and would add a dependency for about thirty lines.\n * The cursor is rendered as an inverted character rather than moved with an\n * escape sequence, so nothing here writes cursor-control codes that ConPTY\n * handles differently from a POSIX terminal.\n */\nexport function TextInput({\n value,\n onChange,\n onSubmit,\n placeholder = '',\n isActive = true,\n}: TextInputProps) {\n /**\n * The edit buffer is tracked in a ref as well as in the parent's state.\n *\n * Several keystrokes can arrive in one tick - fast typing, and every paste -\n * and each handler would then read the same pre-render `value` prop, so all\n * but the last character would be silently dropped and a Return arriving in\n * the same tick would submit a stale string. The ref carries the edit forward\n * within a tick; the effect resyncs it whenever the parent changes the value\n * itself, such as clearing the line after a submit.\n */\n const buffer = useRef(value);\n useEffect(() => {\n buffer.current = value;\n }, [value]);\n\n useInput(\n (input, key) => {\n if (key.return) {\n const submitted = buffer.current;\n buffer.current = '';\n onSubmit?.(submitted);\n return;\n }\n if (key.backspace || key.delete) {\n buffer.current = buffer.current.slice(0, -1);\n onChange(buffer.current);\n return;\n }\n // Control sequences arrive as `input` too; only printable text is appended.\n if (key.ctrl || key.meta || key.escape || key.tab) return;\n if (key.upArrow || key.downArrow || key.leftArrow || key.rightArrow) return;\n if (input) {\n buffer.current += input;\n onChange(buffer.current);\n }\n },\n { isActive },\n );\n\n if (value === '') {\n return (\n <Text>\n <Text inverse> </Text>\n <Text color={theme.muted}>{placeholder}</Text>\n </Text>\n );\n }\n\n return (\n <Text>\n {value}\n <Text inverse> </Text>\n </Text>\n );\n}\n",
|
|
93
95
|
"import type { PermissionMode, TodoItem } from '@earshot/core';\nimport { Box, Text } from 'ink';\nimport { MODE_COLOR, MODE_LABEL, theme } from '../theme.ts';\n\nexport interface StatusLineProps {\n model: string;\n mode: PermissionMode;\n costUsd: number;\n todos: TodoItem[];\n busy: boolean;\n queued: number;\n /** Estimated tokens in the last request, and the model's window. */\n context: { tokens: number; window: number };\n /** How many messages compaction has replaced with a summary this session. */\n compacted: number;\n}\n\n/**\n * One row, always present. Everything on it answers a question the user would\n * otherwise have to interrupt to ask: which model is spending their money, how\n * much it has spent, what the agent thinks it is doing, and whether the thing\n * they just typed was received.\n */\nexport function StatusLine({\n model,\n mode,\n costUsd,\n todos,\n busy,\n queued,\n context,\n compacted,\n}: StatusLineProps) {\n const done = todos.filter((todo) => todo.status === 'done').length;\n const current = todos.find((todo) => todo.status === 'in_progress');\n const used = context.window > 0 ? Math.min(100, (context.tokens / context.window) * 100) : 0;\n\n return (\n <Box>\n <Text color={MODE_COLOR[mode] ?? theme.muted}>{MODE_LABEL[mode] ?? mode}</Text>\n <Text color={theme.muted}> · {model}</Text>\n <Text color={theme.muted}> · ${costUsd.toFixed(4)}</Text>\n {context.window > 0 && (\n // Coloured only when it is close enough to matter: a percentage that is\n // always yellow stops being a warning.\n <Text color={used >= 80 ? theme.warning : theme.muted}> · {used.toFixed(0)}% ctx</Text>\n )}\n {compacted > 0 && (\n // What was dropped, not just that something was: a summarised session\n // answers from a recollection, and the user should know which part.\n <Text color={theme.muted}> · {compacted} summarised</Text>\n )}\n {todos.length > 0 && (\n <Text color={theme.muted}>\n {' '}\n · {done}/{todos.length}\n {current ? ` ${truncate(current.text, 40)}` : ''}\n </Text>\n )}\n {busy && <Text color={theme.warning}> · working (esc to interrupt)</Text>}\n {queued > 0 && <Text color={theme.accent}> · {queued} queued</Text>}\n </Box>\n );\n}\n\nfunction truncate(value: string, max: number): string {\n return value.length <= max ? value : `${value.slice(0, max - 1)}…`;\n}\n",
|
|
94
96
|
"import { Box, Text } from 'ink';\nimport { theme } from '../theme.ts';\nimport { DiffView, diffStat } from './diff.tsx';\n\nexport interface ToolBlockProps {\n name: string;\n title?: string;\n output?: string;\n isError?: boolean;\n running?: boolean;\n /** Expanded blocks show full output; collapsed ones show a line of summary. */\n expanded?: boolean;\n}\n\n/** Output beyond this collapses to a count; the full text is in the transcript. */\nconst PREVIEW_LINES = 8;\n\n/**\n * One tool call, collapsed by default.\n *\n * A long tool result pushes the conversation off the screen, and the reason\n * someone is reading a coding agent's scrollback is almost never to re-read the\n * contents of a file it opened. What matters is which tool ran, on what, and\n * whether it failed - so that is what a collapsed block shows, and errors are\n * never collapsed.\n */\nexport function ToolBlock({\n name,\n title,\n output = '',\n isError,\n running,\n expanded,\n}: ToolBlockProps) {\n const marker = running ? '·' : isError ? '✗' : '✓';\n const color = isError ? theme.toolError : theme.tool;\n const isDiff = output.includes('\\n@@') || output.startsWith('---');\n\n const lines = output === '' ? [] : output.split('\\n');\n // An error is always shown in full: it is the one output the user has to read,\n // and it is the thing the model is about to react to.\n const showAll = expanded || isError;\n const shown = showAll ? lines : lines.slice(0, PREVIEW_LINES);\n const hidden = lines.length - shown.length;\n\n return (\n <Box flexDirection=\"column\" marginTop={1}>\n <Text color={color}>\n {marker} <Text bold>{name}</Text>\n {title ? <Text color={theme.muted}> {title}</Text> : null}\n {isDiff && !showAll ? <Text color={theme.muted}> {diffStat(output)}</Text> : null}\n </Text>\n {isDiff && showAll ? (\n <Box marginLeft={2}>\n <DiffView diff={output} />\n </Box>\n ) : (\n shown.map((line, index) => (\n // Output lines have no identity beyond position, and this block is\n // replaced wholesale rather than reordered. See DiffView for the same.\n // biome-ignore lint/suspicious/noArrayIndexKey: position is the identity\n <Text key={index} color={theme.muted} wrap=\"truncate-end\">\n {' '}\n {line}\n </Text>\n ))\n )}\n {hidden > 0 && !isDiff && (\n <Text color={theme.muted}>\n {' '}\n ... {hidden} more lines\n </Text>\n )}\n </Box>\n );\n}\n",
|
|
95
|
-
"import { platform } from 'node:os';\nimport type { CreatedSession, UserPrompt } from '@earshot/core';\nimport { render } from 'ink';\nimport { App } from './app.tsx';\n\nexport interface RunTuiOptions {\n session: CreatedSession;\n model: string;\n initialPrompt?: UserPrompt;\n}\n\n/**\n * Windows renders more slowly and repaints more visibly than a POSIX terminal,\n * so the frame rate is capped rather than left at Ink's default. 30 is not a\n * performance tuning number: above it, ConPTY's repaint of the live region\n * flickers badly enough to be unpleasant to watch during a long turn.\n */\nconst WINDOWS_MAX_FPS = 30;\n\n/**\n * Starts the interactive app.\n *\n * Nothing in this package writes a DA1 (`CSI c`) or DCS terminal query. ConPTY\n * does not answer them and does not fail either: the query is swallowed and the\n * process sits waiting for a reply that never arrives, which presents to the\n * user as earshot hanging for a minute on startup. Any future capability\n * detection has to be feature-flagged off on Windows for the same reason, which\n * is why colour support is assumed from Ink's own detection rather than probed.\n */\nexport async function runTui(options: RunTuiOptions): Promise<number> {\n const isWindows = platform() === 'win32';\n\n const instance = render(\n <App\n session={options.session}\n model={options.model}\n {...(options.initialPrompt ? { initialPrompt: options.initialPrompt } : {})}\n />,\n {\n // Ctrl-C is handled by the app so a running turn can be interrupted without\n // tearing down the terminal mid-render and leaving it in a raw mode.\n exitOnCtrlC: false,\n // Console output from a dependency would otherwise be interleaved into the\n // live region and corrupt the frame Ink believes it has drawn.\n patchConsole: true,\n ...(isWindows ? { maxFps: WINDOWS_MAX_FPS } : {}),\n },\n );\n\n try {\n await instance.waitUntilExit();\n } finally {\n await options.session.dispose();\n }\n return 0;\n}\n",
|
|
96
|
-
"import {
|
|
97
|
+
"import { Box, Text, useApp, useInput } from 'ink';\nimport { useCallback, useRef, useState } from 'react';\nimport { TextInput } from './components/text-input.tsx';\nimport { theme } from './theme.ts';\n\n/**\n * First-run onboarding.\n *\n * What this module is *not* allowed to do, because it is the one screen that\n * handles a secret:\n *\n * - It never writes a credential itself. `store` is the caller's, and the CLI\n * points it at the same `AuthStore` `earshot auth login` uses - a second\n * write path would be a second set of file permissions to get wrong.\n * - It never renders, logs or returns a key. What the user types is held in a\n * ref, drawn as bullets, and handed to `store`; `firstPrompt` is the only\n * text that leaves here.\n * - It never runs without a TTY. The caller checks, because a headless run\n * with no credentials must fail fast rather than block on a prompt nobody\n * can answer.\n *\n * It also knows nothing about the provider registry: everything it needs is\n * passed in, which is what keeps the TUI free of provider-specific code and\n * lets the tests drive the whole flow without a network.\n */\n\nexport interface OnboardingProvider {\n readonly id: string;\n /** How credentials are given: a browser sign-in, or a key. */\n readonly kind: 'oauth' | 'api-key';\n /** Environment variable(s) that would also work, for the hint line. */\n readonly envVars?: readonly string[];\n /** Already configured elsewhere - an env var, or ambient credentials. */\n readonly configured?: string;\n}\n\n/** Why a probe failed, which is the only thing that decides the next screen. */\nexport type ProbeResult =\n | { ok: true }\n | { ok: false; reason: 'rejected'; message: string }\n | { ok: false; reason: 'unreachable'; message: string }\n | { ok: false; reason: 'other'; message: string };\n\nexport interface OnboardingOptions {\n providers: readonly OnboardingProvider[];\n /** The provider the requested model needs, listed first when it is known. */\n wanted?: string;\n /** Stores an api key. The caller's `AuthStore`, never a second one. */\n storeKey(providerId: string, key: string): Promise<void>;\n /** Removes what was stored, so a rejected key is not left to fail again. */\n forgetKey(providerId: string): Promise<void>;\n /** The existing PKCE flow. `onUrl` is shown as well as opened: over SSH there is no browser. */\n signIn(providerId: string, onUrl: (url: string) => void): Promise<void>;\n /** One minimal live call. The only thing that proves a credential works. */\n probe(providerId: string): Promise<ProbeResult>;\n}\n\nexport interface OnboardingResult {\n /** `ready` means credentials are stored and verified. */\n outcome: 'ready' | 'quit';\n providerId?: string;\n /** What the user typed on the last screen, run as the first turn. */\n firstPrompt?: string;\n}\n\ntype Screen =\n | { name: 'choose' }\n | { name: 'key'; provider: OnboardingProvider }\n | { name: 'oauth'; provider: OnboardingProvider; url?: string }\n | { name: 'probing'; provider: OnboardingProvider }\n | { name: 'failed'; provider: OnboardingProvider; result: Extract<ProbeResult, { ok: false }> }\n | { name: 'ready'; provider: OnboardingProvider };\n\nexport interface OnboardingProps extends OnboardingOptions {\n onDone: (result: OnboardingResult) => void;\n}\n\nexport function Onboarding({ onDone, ...rest }: OnboardingProps) {\n const { exit } = useApp();\n // The props object is rebuilt every render (it is a spread), so the\n // callbacks it carries would otherwise force every effect that uses them to\n // be re-declared - and re-lint - on every keystroke. A ref holds the latest\n // without becoming a dependency.\n const options = useRef(rest);\n options.current = rest;\n const [screen, setScreen] = useState<Screen>({ name: 'choose' });\n const [cursor, setCursor] = useState(0);\n const [input, setInput] = useState('');\n const [error, setError] = useState<string | undefined>();\n\n /**\n * The typed key lives here and never in state.\n *\n * State is rendered; a re-render that put the value on screen - or an error\n * message built from it - would print the secret into the user's scrollback,\n * where it would outlive the process.\n */\n const secret = useRef('');\n\n const providers = order(rest.providers, rest.wanted);\n\n const finish = useCallback(\n (result: OnboardingResult) => {\n onDone(result);\n exit();\n },\n [exit, onDone],\n );\n\n const verify = useCallback(async (provider: OnboardingProvider) => {\n setScreen({ name: 'probing', provider });\n const result = await options.current.probe(provider.id);\n if (result.ok) {\n setScreen({ name: 'ready', provider });\n return;\n }\n // A key the provider refused is worse than no key: it fails again on every\n // future launch, from a file the user has no reason to look in.\n if (result.reason === 'rejected') await options.current.forgetKey(provider.id).catch(() => {});\n setScreen({ name: 'failed', provider, result });\n }, []);\n\n const submitKey = useCallback(async () => {\n const provider = screen.name === 'key' ? screen.provider : undefined;\n const key = secret.current;\n secret.current = '';\n setInput('');\n if (!provider) return;\n if (key.trim() === '') {\n setError('a key is needed, or press esc to go back');\n return;\n }\n setError(undefined);\n await options.current.storeKey(provider.id, key.trim());\n await verify(provider);\n }, [screen, verify]);\n\n const startSignIn = useCallback(\n async (provider: OnboardingProvider) => {\n setScreen({ name: 'oauth', provider });\n try {\n await options.current.signIn(provider.id, (url) =>\n setScreen({ name: 'oauth', provider, url }),\n );\n } catch (failure) {\n setScreen({\n name: 'failed',\n provider,\n result: { ok: false, reason: 'other', message: (failure as Error).message },\n });\n return;\n }\n await verify(provider);\n },\n [verify],\n );\n\n const choose = useCallback(\n (provider: OnboardingProvider) => {\n setError(undefined);\n if (provider.kind === 'oauth') void startSignIn(provider);\n else setScreen({ name: 'key', provider });\n },\n [startSignIn],\n );\n\n useInput((key, meta) => {\n if (meta.ctrl && key === 'c') {\n finish({ outcome: 'quit' });\n return;\n }\n if (screen.name === 'choose') {\n if (key === 'q') {\n finish({ outcome: 'quit' });\n return;\n }\n if (meta.upArrow) setCursor((c) => (c <= 0 ? providers.length - 1 : c - 1));\n if (meta.downArrow) setCursor((c) => (c >= providers.length - 1 ? 0 : c + 1));\n if (meta.return) {\n const provider = providers[cursor];\n if (provider) choose(provider);\n }\n return;\n }\n if (screen.name === 'key' && !meta.escape) {\n // Typed here rather than through TextInput, which renders the value it is\n // given: a masked field has to keep the value out of the render entirely.\n if (meta.return) {\n void submitKey();\n return;\n }\n if (meta.backspace || meta.delete) {\n secret.current = secret.current.slice(0, -1);\n setInput(secret.current);\n return;\n }\n if (meta.ctrl || meta.meta || meta.tab) return;\n if (key) {\n secret.current += key;\n setInput(secret.current);\n }\n return;\n }\n if (meta.escape) {\n secret.current = '';\n setInput('');\n setError(undefined);\n setScreen({ name: 'choose' });\n return;\n }\n if (screen.name === 'failed' && key === 'k' && screen.result.reason === 'unreachable') {\n // Keeping an unverified key is allowed on purpose: a network that cannot\n // be reached must not be able to lock someone out of their own setup.\n setScreen({ name: 'ready', provider: screen.provider });\n }\n });\n\n if (screen.name === 'choose') {\n return (\n <Box flexDirection=\"column\">\n <Header />\n {providers.map((provider, index) => (\n <Box key={provider.id}>\n <Text color={index === cursor ? theme.user : theme.muted}>\n {index === cursor ? '› ' : ' '}\n </Text>\n {/* An absent prop, not `undefined`: exactOptionalPropertyTypes. */}\n <Text {...(index === cursor ? { color: theme.user } : {})}>\n {provider.id.padEnd(14)}\n </Text>\n <Text color={theme.muted}>{hint(provider)}</Text>\n </Box>\n ))}\n <Box marginTop={1}>\n <Text color={theme.muted}>↑↓ choose · enter select · q quit</Text>\n </Box>\n {error ? <Text color={theme.warning}>{error}</Text> : null}\n </Box>\n );\n }\n\n if (screen.name === 'key') {\n return (\n <Box flexDirection=\"column\">\n <Header />\n <Text>paste an api key for {screen.provider.id}</Text>\n <Box marginTop={1}>\n <Text color={theme.muted}>\n {screen.provider.envVars?.length\n ? `or set ${screen.provider.envVars.join(' or ')} instead and restart.\\n`\n : ''}\n stored in your config directory, readable only by you, and never printed.\n </Text>\n </Box>\n <Box marginTop={1}>\n <Text color={theme.user}>{'> '}</Text>\n {/* Bullets, not the key: the value is in a ref and never rendered. */}\n <Text>{'•'.repeat(input.length)}</Text>\n <Text inverse> </Text>\n </Box>\n {error ? <Text color={theme.warning}>{error}</Text> : null}\n <Box marginTop={1}>\n <Text color={theme.muted}>enter continue · esc back</Text>\n </Box>\n </Box>\n );\n }\n\n if (screen.name === 'oauth') {\n return (\n <Box flexDirection=\"column\">\n <Header />\n <Text>signing in to {screen.provider.id} in your browser…</Text>\n {screen.url ? (\n <Box marginTop={1} flexDirection=\"column\">\n <Text color={theme.muted}>if it did not open, use this link:</Text>\n <Text>{screen.url}</Text>\n </Box>\n ) : null}\n <Box marginTop={1}>\n <Text color={theme.muted}>esc cancel</Text>\n </Box>\n </Box>\n );\n }\n\n if (screen.name === 'probing') {\n return (\n <Box flexDirection=\"column\">\n <Header />\n <Text color={theme.muted}>checking the credentials with {screen.provider.id}…</Text>\n </Box>\n );\n }\n\n if (screen.name === 'failed') {\n return (\n <Box flexDirection=\"column\">\n <Header />\n <Text color={theme.warning}>\n {screen.result.reason === 'rejected'\n ? `${screen.provider.id} rejected that credential. It has not been kept.`\n : screen.result.reason === 'unreachable'\n ? `could not reach ${screen.provider.id}.`\n : `${screen.provider.id} said:`}\n </Text>\n <Text color={theme.muted}>{screen.result.message}</Text>\n <Box marginTop={1}>\n <Text color={theme.muted}>\n {screen.result.reason === 'unreachable'\n ? 'k keep it anyway and carry on · esc start over · ctrl-c quit'\n : 'esc start over · ctrl-c quit'}\n </Text>\n </Box>\n </Box>\n );\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text color={theme.user}>ready: {screen.provider.id}</Text>\n <Box marginTop={1}>\n <Text color={theme.muted}>what should I do? (enter to start with nothing)</Text>\n </Box>\n <Box>\n <Text color={theme.user}>{'> '}</Text>\n <TextInput\n value={input}\n onChange={setInput}\n onSubmit={(text) =>\n finish({ outcome: 'ready', providerId: screen.provider.id, firstPrompt: text.trim() })\n }\n />\n </Box>\n </Box>\n );\n}\n\nfunction Header() {\n return (\n <Box flexDirection=\"column\" marginBottom={1}>\n <Text>earshot needs a model provider before it can do anything.</Text>\n </Box>\n );\n}\n\nfunction hint(provider: OnboardingProvider): string {\n if (provider.configured) return provider.configured;\n if (provider.kind === 'oauth') return 'sign in with a browser - no key to paste';\n return provider.envVars?.length ? provider.envVars.join(' or ') : 'api key';\n}\n\n/** The provider the requested model needs goes first; it is why we are here. */\nfunction order(\n providers: readonly OnboardingProvider[],\n wanted?: string,\n): readonly OnboardingProvider[] {\n if (!wanted) return providers;\n return [\n ...providers.filter((provider) => provider.id === wanted),\n ...providers.filter((provider) => provider.id !== wanted),\n ];\n}\n",
|
|
98
|
+
"import { platform } from 'node:os';\nimport type { CreatedSession, UserPrompt } from '@earshot/core';\nimport { render } from 'ink';\nimport { App } from './app.tsx';\nimport { Onboarding, type OnboardingOptions, type OnboardingResult } from './onboarding.tsx';\n\nexport interface RunTuiOptions {\n session: CreatedSession;\n model: string;\n initialPrompt?: UserPrompt;\n}\n\n/**\n * Windows renders more slowly and repaints more visibly than a POSIX terminal,\n * so the frame rate is capped rather than left at Ink's default. 30 is not a\n * performance tuning number: above it, ConPTY's repaint of the live region\n * flickers badly enough to be unpleasant to watch during a long turn.\n */\nconst WINDOWS_MAX_FPS = 30;\n\n/**\n * Starts the interactive app.\n *\n * Nothing in this package writes a DA1 (`CSI c`) or DCS terminal query. ConPTY\n * does not answer them and does not fail either: the query is swallowed and the\n * process sits waiting for a reply that never arrives, which presents to the\n * user as earshot hanging for a minute on startup. Any future capability\n * detection has to be feature-flagged off on Windows for the same reason, which\n * is why colour support is assumed from Ink's own detection rather than probed.\n */\nexport async function runTui(options: RunTuiOptions): Promise<number> {\n const isWindows = platform() === 'win32';\n\n const instance = render(\n <App\n session={options.session}\n model={options.model}\n {...(options.initialPrompt ? { initialPrompt: options.initialPrompt } : {})}\n />,\n {\n // Ctrl-C is handled by the app so a running turn can be interrupted without\n // tearing down the terminal mid-render and leaving it in a raw mode.\n exitOnCtrlC: false,\n // Console output from a dependency would otherwise be interleaved into the\n // live region and corrupt the frame Ink believes it has drawn.\n patchConsole: true,\n ...(isWindows ? { maxFps: WINDOWS_MAX_FPS } : {}),\n },\n );\n\n try {\n await instance.waitUntilExit();\n } finally {\n await options.session.dispose();\n }\n return 0;\n}\n\n/**\n * Runs first-run onboarding and resolves with what it decided.\n *\n * Rendered with the same options as the app - Ctrl-C is the component's, not\n * Ink's, so quitting is one code path rather than two. The caller has already\n * established there is a TTY; onboarding must never be reached from a headless\n * or ACP run, where there is nobody to answer it.\n */\nexport async function runOnboarding(options: OnboardingOptions): Promise<OnboardingResult> {\n const isWindows = platform() === 'win32';\n let result: OnboardingResult = { outcome: 'quit' };\n\n const instance = render(\n <Onboarding\n {...options}\n onDone={(decided) => {\n result = decided;\n }}\n />,\n {\n exitOnCtrlC: false,\n patchConsole: true,\n ...(isWindows ? { maxFps: WINDOWS_MAX_FPS } : {}),\n },\n );\n\n await instance.waitUntilExit();\n return result;\n}\n",
|
|
99
|
+
"import { resolveModel, streamModel } from '@earshot/core';\nimport {\n type AuthSpec,\n AuthStore,\n buildRegistry,\n loginToOpenRouter,\n type Provider,\n resolveCredentials,\n} from '@earshot/providers';\nimport type { OnboardingOptions, OnboardingProvider, ProbeResult } from '@earshot/tui';\n\n/**\n * Turns the provider registry and auth store into what `Onboarding` needs.\n *\n * Kept out of packages/tui deliberately: the component takes plain callbacks so\n * it can be driven in tests with no registry and no network, and this is the\n * one place that binds it to the real one.\n */\nexport async function buildOnboardingOptions(wanted?: string): Promise<OnboardingOptions> {\n const registry = buildRegistry();\n const store = new AuthStore();\n\n const providers: OnboardingProvider[] = [];\n for (const provider of registry.list()) {\n if (provider.auth.kind === 'none') continue;\n providers.push(await describe(provider, store));\n }\n // OAuth first: signing in needs nothing typed, which is the easiest way for\n // someone who has never used earshot before to get past this screen.\n providers.sort((a, b) => Number(b.kind === 'oauth') - Number(a.kind === 'oauth'));\n\n return {\n providers,\n ...(wanted ? { wanted } : {}),\n storeKey: (providerId, key) => store.set(providerId, { type: 'api-key', apiKey: key }),\n forgetKey: (providerId) => store.remove(providerId),\n signIn: async (providerId, onUrl) => {\n const credentials = await loginToOpenRouter({ onUrl });\n await store.set(providerId, credentials);\n },\n probe: (providerId) => probe(registry, providerId),\n };\n}\n\nasync function describe(provider: Provider, store: AuthStore): Promise<OnboardingProvider> {\n const configured = await resolveCredentials(provider, { store }).catch(() => undefined);\n return {\n id: provider.id,\n kind: provider.auth.kind === 'oauth' ? 'oauth' : 'api-key',\n ...(envVarsOf(provider.auth).length ? { envVars: envVarsOf(provider.auth) } : {}),\n ...(configured ? { configured: describeConfigured(configured.type) } : {}),\n };\n}\n\nfunction envVarsOf(auth: AuthSpec): string[] {\n return auth.kind === 'api-key' || auth.kind === 'oauth' ? (auth.envVars ?? []) : [];\n}\n\nfunction describeConfigured(kind: 'ambient' | 'oauth' | 'api-key'): string {\n return kind === 'ambient'\n ? 'ambient credentials'\n : kind === 'oauth'\n ? 'signed in'\n : 'api key set';\n}\n\n/**\n * One minimal live call, spending a fraction of a cent to prove the credential\n * actually works. Structural validation (a non-empty string) tells you nothing\n * a provider could not reject a second later on the user's first real turn.\n */\nasync function probe(\n registry: ReturnType<typeof buildRegistry>,\n providerId: string,\n): Promise<ProbeResult> {\n const listed = registry.list().find((provider) => provider.id === providerId);\n if (!listed) return { ok: false, reason: 'other', message: `unknown provider \"${providerId}\"` };\n\n const model = listed.models()[0];\n if (!model) {\n return {\n ok: false,\n reason: 'other',\n message: `${providerId} publishes no models to check against`,\n };\n }\n\n let resolved: Awaited<ReturnType<typeof resolveModel>>;\n try {\n resolved = await resolveModel(registry, `${providerId}/${model.id}`);\n } catch (error) {\n return { ok: false, reason: 'other', message: (error as Error).message };\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 10_000);\n try {\n for await (const event of streamModel(registry, resolved, {\n system: 'Reply with one word.',\n messages: [{ role: 'user', content: [{ type: 'text', text: 'hi' }] }],\n maxOutputTokens: 1,\n abortSignal: controller.signal,\n })) {\n // The first event of any kind proves the request round-tripped; nothing\n // further needs spending.\n controller.abort();\n if (event.type === 'error') {\n return event.error.kind === 'auth'\n ? { ok: false, reason: 'rejected', message: event.error.message }\n : event.error.kind === 'network'\n ? { ok: false, reason: 'unreachable', message: event.error.message }\n : { ok: false, reason: 'other', message: event.error.message };\n }\n return { ok: true };\n }\n return { ok: true };\n } catch (error) {\n const message = (error as Error).message;\n const timedOut = controller.signal.aborted && (error as Error).name === 'AbortError';\n return timedOut\n ? { ok: false, reason: 'unreachable', message: 'timed out waiting for a response' }\n : { ok: false, reason: 'other', message };\n } finally {\n clearTimeout(timeout);\n }\n}\n",
|
|
100
|
+
"import {\n createSession,\n isPermissionMode,\n MissingCredentialsError,\n NoSessionToResumeError,\n type PermissionMode,\n UnknownModelError,\n} from '@earshot/core';\nimport { runOnboarding, runTui } from '@earshot/tui';\nimport type { ParsedArgs } from '../args.ts';\nimport { parseCuriosity, parseMaxCost } from '../budget.ts';\nimport { startExtensions } from '../extensions/index.ts';\nimport { loadImage } from '../image.ts';\nimport { buildOnboardingOptions } from '../onboard.ts';\n\nconst DEFAULT_MODEL = 'anthropic/claude-opus-5';\n\n/**\n * The default command: the interactive TUI.\n *\n * Refuses to start without a TTY rather than rendering into a pipe. Ink would\n * happily draw frames into a redirect and produce a file full of escape\n * sequences; someone piping earshot almost certainly wanted `-p`, and the error\n * says so.\n */\nexport async function interactiveCommand(args: ParsedArgs): Promise<number> {\n const flags = args.flags;\n\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n process.stderr.write(\n 'earshot needs an interactive terminal. For scripted use, run `earshot -p \"<prompt>\"`.\\n',\n );\n return 2;\n }\n\n let mode: PermissionMode | undefined;\n const requested = flags['permission-mode'];\n if (typeof requested === 'string') {\n if (!isPermissionMode(requested)) {\n process.stderr.write(`\"${requested}\" is not a permission mode\\n`);\n return 2;\n }\n mode = requested;\n }\n\n // A bare `earshot \"do the thing\"` starts the TUI with that first turn already\n // running, which is how most sessions actually begin.\n const initialPrompt = args.positionals.join(' ').trim();\n let image: Awaited<ReturnType<typeof loadImage>> | undefined;\n if (typeof flags.image === 'string') {\n try {\n image = await loadImage(flags.image, process.cwd());\n } catch (error) {\n process.stderr.write(`image: ${(error as Error).message}\\n`);\n return 2;\n }\n }\n\n const curiosity = parseCuriosity(flags.curiosity);\n if (curiosity === 'invalid') {\n process.stderr.write(`\"${flags.curiosity}\" is not a curiosity level: low, normal or high\\n`);\n return 2;\n }\n const maxCostUsd = parseMaxCost(flags['max-cost']);\n if (maxCostUsd === 'invalid') {\n process.stderr.write(`\"${flags['max-cost']}\" is not an amount in dollars\\n`);\n return 2;\n }\n\n const extensions = await startExtensions(process.cwd());\n const model = typeof flags.model === 'string' ? flags.model : DEFAULT_MODEL;\n // `--no-onboarding` is for CI and for anyone who wants the old dead-end back.\n const onboardingAllowed = flags['no-onboarding'] !== true;\n\n let firstPrompt = initialPrompt;\n let attempted = false;\n\n for (;;) {\n try {\n const session = await createSession({\n cwd: process.cwd(),\n extraTools: extensions.tools,\n problems: extensions.problems,\n onDispose: () => extensions.close(),\n model,\n ...(mode ? { mode } : {}),\n ...(typeof flags['api-key'] === 'string' ? { apiKey: flags['api-key'] } : {}),\n ...(curiosity ? { curiosity } : {}),\n ...(maxCostUsd !== undefined ? { maxCostUsd } : {}),\n ...resumeFrom(flags),\n });\n\n return await runTui({\n session,\n model,\n ...(firstPrompt !== '' || image\n ? {\n initialPrompt: image\n ? [...(firstPrompt ? [{ type: 'text' as const, text: firstPrompt }] : []), image]\n : firstPrompt,\n }\n : {}),\n });\n } catch (error) {\n if (error instanceof MissingCredentialsError && onboardingAllowed && !attempted) {\n // Only ever offered once: a second `MissingCredentialsError` after\n // onboarding said it stored working credentials means something else is\n // wrong, and looping back into the same screens would hide that.\n attempted = true;\n const result = await runOnboarding(await buildOnboardingOptions(error.provider.id));\n if (result.outcome === 'quit') {\n process.stdout.write(\n 'nothing was stored. run `earshot auth login <provider>` when you are ready.\\n',\n );\n await extensions.close();\n return 0;\n }\n firstPrompt = result.firstPrompt ?? firstPrompt;\n continue;\n }\n // The session never reached dispose(), so anything already spawned is\n // ours to clean up here or it outlives the process that started it.\n await extensions.close();\n if (error instanceof UnknownModelError) {\n process.stderr.write(\n `${error.message}\\n\\nrun \\`earshot models\\` to see what is available\\n`,\n );\n return 2;\n }\n if (error instanceof MissingCredentialsError) {\n process.stderr.write(`${error.message}\\n`);\n return 3;\n }\n if (error instanceof NoSessionToResumeError) {\n process.stderr.write(`${error.message}\\n`);\n return 2;\n }\n throw error;\n }\n }\n}\n\nfunction resumeFrom(flags: ParsedArgs['flags']) {\n if (typeof flags.resume === 'string') return { resume: { path: flags.resume } } as const;\n if (flags.continue === true || flags.resume === true)\n return { resume: { latest: true } } as const;\n return {};\n}\n",
|
|
97
101
|
"import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { LOCAL_SETTINGS, loadMcpConfig, TRUST_NOTE } from '@earshot/mcp';\nimport type { ParsedArgs } from '../args.ts';\n\n/**\n * `earshot mcp list|trust|untrust`.\n *\n * `list` deliberately does not start anything: seeing what is configured should\n * not be the thing that runs it.\n */\nexport async function mcpCommand(args: ParsedArgs): Promise<number> {\n const [action = 'list', name] = args.positionals;\n const cwd = process.cwd();\n\n if (action === 'list') return list(cwd);\n if (action === 'trust' || action === 'untrust') {\n if (!name) {\n process.stderr.write(`usage: earshot mcp ${action} <server>\\n`);\n return 2;\n }\n return setTrust(cwd, name, action === 'trust');\n }\n\n process.stderr.write(`earshot mcp: unknown action \"${action}\"\\n`);\n return 2;\n}\n\nasync function list(cwd: string): Promise<number> {\n const { servers, problems } = await loadMcpConfig(cwd);\n for (const problem of problems) process.stderr.write(`warning: ${problem}\\n`);\n\n if (servers.length === 0) {\n process.stdout.write(\n 'no mcp servers configured\\n\\n' +\n `add one under \"mcpServers\" in ${join('.earshot', 'settings.local.json')}\\n`,\n );\n return 0;\n }\n\n for (const server of servers) {\n const where =\n server.transport.type === 'stdio'\n ? [server.transport.command, ...server.transport.args].join(' ')\n : server.transport.url;\n const state = server.enabled ? '' : ` (not started: ${TRUST_NOTE})`;\n process.stdout.write(`${server.name} [${server.scope}] ${where}${state}\\n`);\n }\n return 0;\n}\n\n/**\n * Trust is recorded in local settings, which are not committed. Writing it to\n * project settings would let a repository trust itself in the next clone.\n */\nasync function setTrust(cwd: string, name: string, trust: boolean): Promise<number> {\n const { servers } = await loadMcpConfig(cwd);\n if (!servers.some((server) => server.name === name)) {\n process.stderr.write(`no mcp server named \"${name}\" is configured\\n`);\n return 2;\n }\n\n const path = join(cwd, LOCAL_SETTINGS);\n const raw = await readFile(path, 'utf8').catch(() => '{}');\n let settings: { mcpTrust?: string[] };\n try {\n settings = JSON.parse(raw) as { mcpTrust?: string[] };\n } catch (error) {\n process.stderr.write(`${path} is not valid JSON: ${(error as Error).message}\\n`);\n return 2;\n }\n\n const current = new Set(settings.mcpTrust ?? []);\n if (trust) current.add(name);\n else current.delete(name);\n\n await mkdir(dirname(path), { recursive: true });\n await writeFile(\n path,\n `${JSON.stringify({ ...settings, mcpTrust: [...current].sort() }, null, 2)}\\n`,\n 'utf8',\n );\n process.stdout.write(`${trust ? 'trusted' : 'no longer trusting'} \"${name}\" (${path})\\n`);\n return 0;\n}\n",
|
|
98
102
|
"import { buildRegistry, fetchCatalog, ModelCatalog } from '@earshot/providers';\nimport type { ParsedArgs } from '../args.ts';\n\n/** `earshot models [filter] [--refresh] [--json]` */\nexport async function modelsCommand(args: ParsedArgs): Promise<number> {\n const catalog = args.flags.refresh ? new ModelCatalog(await fetchCatalog()) : new ModelCatalog();\n const registry = buildRegistry({ catalog });\n\n const filter = args.positionals[0]?.toLowerCase();\n const models = registry\n .models()\n .filter(\n (m) =>\n !filter ||\n m.id.toLowerCase().includes(filter) ||\n m.providerId.toLowerCase().includes(filter) ||\n m.name.toLowerCase().includes(filter),\n );\n\n if (args.flags.json) {\n process.stdout.write(`${JSON.stringify(models, null, 2)}\\n`);\n return 0;\n }\n\n if (models.length === 0) {\n process.stderr.write(`no models match \"${filter}\"\\n`);\n return 1;\n }\n\n const rows = models.map((m) => ({\n ref: `${m.providerId}/${m.id}`,\n context: `${Math.round(m.contextWindow / 1000)}k`,\n price: m.cost ? `$${m.cost.input}/$${m.cost.output}` : '-',\n tags: [\n m.capabilities.reasoning ? 'reasoning' : '',\n m.capabilities.vision ? 'vision' : '',\n m.capabilities.tools ? '' : 'no-tools',\n ]\n .filter(Boolean)\n .join(' '),\n }));\n\n const width = Math.max(...rows.map((r) => r.ref.length));\n const priceWidth = Math.max(...rows.map((r) => r.price.length));\n for (const row of rows) {\n process.stdout.write(\n `${row.ref.padEnd(width)} ${row.context.padStart(6)} ${row.price.padStart(priceWidth)} ${row.tags}\\n`,\n );\n }\n process.stdout.write(\n `\\n${models.length} models across ${new Set(models.map((m) => m.providerId)).size} providers`,\n );\n process.stdout.write(` (catalog ${catalog.generatedAt.slice(0, 10)})\\n`);\n process.stdout.write('prices are USD per million tokens, input/output\\n');\n return 0;\n}\n",
|
|
99
103
|
"import { VERSION } from '@earshot/core';\nimport { parseArgs } from './args.ts';\nimport { acpCommand } from './commands/acp.ts';\nimport { authCommand } from './commands/auth.ts';\nimport { doctorCommand } from './commands/doctor.ts';\nimport { extensionsCommand } from './commands/extensions.ts';\nimport { headlessCommand } from './commands/headless.ts';\nimport { interactiveCommand } from './commands/interactive.ts';\nimport { mcpCommand } from './commands/mcp.ts';\nimport { modelsCommand } from './commands/models.ts';\n\nconst HELP = `earshot ${VERSION} - a terminal coding agent that actually listens\n\nUsage\n earshot start the interactive TUI\n earshot -p \"<prompt>\" headless: print the final response\n earshot auth <cmd> login, list or logout provider credentials\n earshot models [--refresh] list or refresh the model catalog\n earshot mcp <cmd> list, trust or untrust MCP servers\n earshot extensions <cmd> list, trust or untrust in-process extensions\n earshot acp serve editor clients over ACP v1 on stdio\n earshot doctor diagnose the local setup\n\nFlags\n --model <provider/model> model for this session\n --permission-mode <mode> plan | ask | accept-edits | auto | yolo\n --output-format <fmt> text | json | stream-json | json@v1 (with -p)\n --continue resume the most recent session here\n --resume [<path>] resume a specific session transcript\n --api-key <key> credentials for this run only\n --image <path|https-url> attach one PNG, JPEG, GIF or WebP image\n --max-cost <usd> stop and ask before spending past this\n --curiosity <level> low, normal or high: how readily it asks\n --version, -v print the version\n --help, -h print this help\n`;\n\nexport async function main(argv = process.argv.slice(2)): Promise<number> {\n const args = parseArgs(argv);\n const { command, flags } = args;\n\n if (flags.version || flags.v) {\n process.stdout.write(`${VERSION}\\n`);\n return 0;\n }\n if (flags.help || flags.h) {\n process.stdout.write(HELP);\n return 0;\n }\n\n const prompt = typeof flags.p === 'string' ? flags.p : undefined;\n if (prompt) return headlessCommand(prompt, args);\n\n if (command === 'models') return modelsCommand(args);\n if (command === 'mcp') return mcpCommand(args);\n if (command === 'extensions') return extensionsCommand(args);\n if (command === 'auth') return authCommand(args);\n if (command === 'doctor') return doctorCommand(args);\n if (command === 'acp') return acpCommand(args);\n if (command) {\n process.stderr.write(`earshot: \"${command}\" is not implemented yet\\n`);\n return 1;\n }\n\n return interactiveCommand(args);\n}\n",
|
|
100
104
|
"import { main } from './index.ts';\n\nconst code = await main();\nprocess.exitCode = code;\n"
|
|
101
105
|
],
|
|
102
|
-
"mappings": ";AAAA,qBAAS;AACT,oBAAS;AACT,oBAAS,kBAAS;;;ACFlB;AACA;;;ACDA;AACA;AAGO,SAAS,SAAS,GAAW;AAAA,EAClC,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,IAAI;AAAA,IAAK,OAAO;AAAA,EAChB,IAAI,SAAS,MAAM,SAAS;AAAA,IAC1B,OAAO,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,GAAG,WAAW,SAAS,GAAG,SAAS;AAAA,EACrF;AAAA,EACA,OAAO,KAAK,QAAQ,IAAI,mBAAmB,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS;AAAA;AAG3E,SAAS,OAAO,GAAW;AAAA,EAChC,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,IAAI;AAAA,IAAK,OAAO;AAAA,EAChB,IAAI,SAAS,MAAM,SAAS;AAAA,IAC1B,OAAO,KAAK,QAAQ,IAAI,gBAAgB,KAAK,QAAQ,GAAG,WAAW,OAAO,GAAG,SAAS;AAAA,EACxF;AAAA,EACA,OAAO,KAAK,QAAQ,IAAI,iBAAiB,KAAK,QAAQ,GAAG,UAAU,OAAO,GAAG,SAAS;AAAA;AAGjF,IAAM,WAAW,MAAc,KAAK,UAAU,GAAG,WAAW;AAC5D,IAAM,cAAc,MAAc,KAAK,QAAQ,GAAG,UAAU;;;ADZ5D,MAAM,UAAU;AAAA,EACrB;AAAA,EACA;AAAA,EAEA,WAAW,CAAC,OAAO,SAAS,GAAG;AAAA,IAC7B,KAAK,QAAQ;AAAA;AAAA,OAGT,KAAK,GAA2B;AAAA,IACpC,IAAI,KAAK;AAAA,MAAQ,OAAO,KAAK;AAAA,IAC7B,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,SAAS,KAAK,OAAO,MAAM;AAAA,MAC7C,MAAM,SAAS,KAAK,MAAM,GAAG;AAAA,MAC7B,KAAK,SAAS,OAAO,YAAY,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC,EAAE;AAAA,MACtE,MAAM;AAAA,MACN,KAAK,SAAS,EAAE,SAAS,GAAG,WAAW,CAAC,EAAE;AAAA;AAAA,IAE5C,OAAO,KAAK;AAAA;AAAA,OAGR,IAAG,CAAC,YAAsD;AAAA,IAC9D,QAAQ,MAAM,KAAK,MAAM,GAAG,UAAU;AAAA;AAAA,OAGlC,IAAG,CAAC,YAAoB,OAAmC;AAAA,IAC/D,MAAM,OAAO,MAAM,KAAK,MAAM;AAAA,IAC9B,KAAK,UAAU,cAAc;AAAA,IAC7B,MAAM,KAAK,OAAO,IAAI;AAAA;AAAA,OAGlB,OAAM,CAAC,YAAmC;AAAA,IAC9C,MAAM,OAAO,MAAM,KAAK,MAAM;AAAA,IAC9B,OAAO,KAAK,UAAU;AAAA,IACtB,MAAM,KAAK,OAAO,IAAI;AAAA;AAAA,OAGlB,MAAM,CAAC,MAAoC;AAAA,IAC/C,MAAM,MAAM,QAAQ,KAAK,KAAK,GAAG,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AAAA,IACjE,MAAM,MAAM,GAAG,KAAK,SAAS,QAAQ;AAAA,IACrC,MAAM,UAAU,KAAK,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,GAAO,EAAE,MAAM,IAAM,CAAC;AAAA,IAC1E,MAAM,OAAO,KAAK,KAAK,KAAK;AAAA,IAC5B,KAAK,SAAS;AAAA;AAElB;AAaA,eAAsB,kBAAkB,CACtC,UACA,OAA2B,CAAC,GACM;AAAA,EAClC,MAAM,MAAM,KAAK,OAAO,QAAQ;AAAA,EAChC,IAAI,KAAK;AAAA,IAAW,OAAO,EAAE,MAAM,WAAW,QAAQ,KAAK,UAAU;AAAA,EAErE,WAAW,QAAQ,UAAU,SAAS,IAAI,GAAG;AAAA,IAC3C,MAAM,QAAQ,IAAI;AAAA,IAClB,IAAI;AAAA,MAAO,OAAO,EAAE,MAAM,WAAW,QAAQ,MAAM;AAAA,EACrD;AAAA,EAEA,MAAM,SAAS,OAAO,KAAK,SAAS,IAAI,WAAa,IAAI,SAAS,EAAE;AAAA,EACpE,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,IAAI,SAAS,KAAK,SAAS,aAAa,SAAS,KAAK,SAAS,QAAQ;AAAA,IACrE,OAAO,EAAE,MAAM,UAAU;AAAA,EAC3B;AAAA,EACA;AAAA;AAGF,SAAS,SAAS,CAAC,MAA0B;AAAA,EAC3C,OAAO,aAAa,QAAQ,KAAK,UAAU,KAAK,UAAU,CAAC;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
103
|
-
"debugId": "
|
|
106
|
+
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
107
|
+
"debugId": "B062C0361E20E53764756E2164756E21",
|
|
104
108
|
"names": []
|
|
105
109
|
}
|