@greppleai/grip 0.1.4 → 0.1.5

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +1 -1
  3. package/dist/core/auth-storage.d.ts.map +1 -1
  4. package/dist/core/auth-storage.js +3 -1
  5. package/dist/core/auth-storage.js.map +1 -1
  6. package/dist/core/grip-agent.d.ts.map +1 -1
  7. package/dist/core/grip-agent.js +4 -2
  8. package/dist/core/grip-agent.js.map +1 -1
  9. package/dist/core/sandbox/lima.d.ts.map +1 -1
  10. package/dist/core/sandbox/lima.js +6 -6
  11. package/dist/core/sandbox/lima.js.map +1 -1
  12. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  13. package/dist/modes/interactive/components/assistant-message.js +18 -7
  14. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  15. package/dist/modes/interactive/components/model-selector.d.ts +26 -18
  16. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  17. package/dist/modes/interactive/components/model-selector.js +220 -192
  18. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  19. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  20. package/dist/modes/interactive/interactive-mode.js +68 -6
  21. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  22. package/dist/utils/grip-user-agent.d.ts.map +1 -1
  23. package/dist/utils/grip-user-agent.js +1 -1
  24. package/dist/utils/grip-user-agent.js.map +1 -1
  25. package/docs/keybindings.md +3 -1
  26. package/docs/providers.md +3 -1
  27. package/docs/sandbox.md +1 -1
  28. package/docs/usage.md +37 -1
  29. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  30. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  31. package/examples/extensions/sandbox/package.json +1 -1
  32. package/examples/extensions/with-deps/package.json +1 -1
  33. package/npm-shrinkwrap.json +12 -12
  34. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"grip-agent.js","sourceRoot":"","sources":["../../src/core/grip-agent.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { join, posix, resolve, win32 } from \"node:path\";\nimport { Agent, type ThinkingLevel } from \"@greppleai/grip-agent-core\";\nimport {\n\tclampThinkingLevel,\n\ttype ImageContent,\n\ttype Message,\n\ttype Model,\n\trefreshModelCatalog,\n\tstreamSimple,\n\ttype TextContent,\n} from \"@greppleai/grip-ai\";\nimport type { TuiMode } from \"@greppleai/grip-tui\";\nimport chalk from \"chalk\";\nimport { getAgentDir } from \"../config.ts\";\nimport { InteractiveMode } from \"../modes/interactive/interactive-mode.ts\";\nimport { stopThemeWatcher } from \"../modes/interactive/theme/theme.ts\";\nimport { runPrintMode } from \"../modes/print-mode.ts\";\nimport { runRpcMode } from \"../modes/rpc/rpc-mode.ts\";\nimport { stripFrontmatter } from \"../utils/frontmatter.ts\";\nimport { AgentSession, getDefaultActiveToolNames } from \"./agent-session.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport { AuthStorage } from \"./auth-storage.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/runner.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport type {\n\tExtensionForkOptions,\n\tExtensionNewSessionOptions,\n\tExtensionSessionActionResult,\n\tExtensionSwitchSessionOptions,\n\tReplacedSessionContext,\n\tSessionForkPosition,\n\tSessionShutdownReason,\n\tSessionStartEvent,\n\tSessionSwitchReason,\n\tToolDefinition,\n} from \"./extensions/types.ts\";\nimport { freezeLoadedHooks, loadHooks } from \"./hooks/config.ts\";\nimport { canonicalProjectHookCwd, canonicalProjectHookIdentity } from \"./hooks/trust-store.ts\";\nimport type { HookDiagnostic, LoadedHooks } from \"./hooks/types.ts\";\nimport {\n\ttype LoadLspConfigurationResult,\n\ttype LspConfigurationInput,\n\ttype LspConfigurationSourceDiagnostic,\n\tloadLspConfiguration,\n} from \"./lsp/config-loader.ts\";\nimport type { LspConnectionFactoryRegistry } from \"./lsp/transport.ts\";\nimport { convertToLlm } from \"./messages.ts\";\nimport { ModelRegistry } from \"./model-registry.ts\";\nimport { findInitialModel, type ResolveCliModelResult, resolveCliModel, type ScopedModel } from \"./model-resolver.ts\";\nimport { restoreStdout, takeOverStdout } from \"./output-guard.ts\";\nimport { DefaultResourceLoader, type DefaultResourceLoaderOptions, type ResourceLoader } from \"./resource-loader.ts\";\nimport { InMemorySessionManager } from \"./session/in-memory-session-manager.ts\";\nimport { getDefaultSessionDir } from \"./session/jsonl-helpers.ts\";\nimport { LocalSessionManager } from \"./session/local-session-manager.ts\";\nimport type { Session } from \"./session/session.ts\";\nimport type { SessionManager } from \"./session/session-manager.ts\";\nimport type { SessionContext, SessionInfo, SessionListProgress } from \"./session/types.ts\";\nimport { assertSessionCwdExists } from \"./session-cwd.ts\";\nimport { InMemorySettingsStorage, SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport { getSourceBackend } from \"./source-info.ts\";\nimport { isInstallTelemetryEnabled } from \"./telemetry.ts\";\nimport { printTimings, time } from \"./timings.ts\";\nimport {\n\ttype BorrowedToolOperations,\n\tborrowToolOperations,\n\ttype ToolBackendInfo,\n\ttype ToolOperations,\n} from \"./tools/operations.ts\";\nimport type {\n\tSubagentConfigRegistry,\n\tSubagentRunInfo,\n\tSubagentRunner,\n\tSubagentRunOutcome,\n\tSubagentRunRegistry,\n\tSubagentRunRequest,\n} from \"./tools/subagent.ts\";\n\nexport type GripAgentDiagnosticType = \"info\" | \"warning\" | \"error\";\nexport type GripAgentToolExclusionMode = \"all\" | \"builtin\";\n\nexport interface GripAgentDiagnostic {\n\ttype: GripAgentDiagnosticType;\n\tmessage: string;\n\t/** Whether this diagnostic must prevent application startup. Errors are fatal by default. */\n\tfatal?: boolean;\n}\n\nexport function isFatalGripAgentDiagnostic(diagnostic: GripAgentDiagnostic): boolean {\n\treturn diagnostic.type === \"error\" && diagnostic.fatal !== false;\n}\n\nexport interface GripAgentServices {\n\tcwd: string;\n\tagentDir: string;\n\tauthStorage: AuthStorage;\n\tsettingsManager: SettingsManager;\n\tmodelRegistry: ModelRegistry;\n\tresourceLoader: ResourceLoader;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\ninterface HookDiscoveryResolution {\n\tcwd: string;\n\tdiscoverProjectHooks: boolean;\n}\n\ninterface SessionHookResolution {\n\tloadedHooks: LoadedHooks | undefined;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\ninterface SessionModelResolution {\n\tmodel: Model<any> | undefined;\n\tfallbackMessage: string | undefined;\n}\n\ninterface ExtensionRunnerReference {\n\tcurrent?: ExtensionRunner;\n}\n\ninterface BuiltAgentSession {\n\tsession: AgentSession;\n\tservices: GripAgentServices;\n\tbaseDiagnostics: GripAgentDiagnostic[];\n\thookDiagnostics: GripAgentDiagnostic[];\n\tlspDiagnostics: GripAgentDiagnostic[];\n\tmodelFallbackMessage?: string;\n}\n\nfunction formatLspConfigurationDiagnostics(\n\tdiagnostics: readonly LspConfigurationSourceDiagnostic[],\n): GripAgentDiagnostic[] {\n\treturn diagnostics.map((diagnostic) => ({\n\t\ttype: diagnostic.severity,\n\t\t...(diagnostic.severity === \"error\" ? { fatal: false } : {}),\n\t\tmessage: `LSP configuration (${diagnostic.source}) ${diagnostic.path}: ${diagnostic.message}`,\n\t}));\n}\n\nfunction formatHookDiagnostic(diagnostic: HookDiagnostic): GripAgentDiagnostic {\n\tconst source = diagnostic.source ? ` (${diagnostic.source.kind}: ${diagnostic.source.path})` : \"\";\n\treturn {\n\t\ttype: diagnostic.level,\n\t\tfatal: false,\n\t\tmessage: `Hook ${diagnostic.code}${source}: ${diagnostic.message}`,\n\t};\n}\n\nexport interface GripAgentHooksOptions {\n\t/** Disable automatic trusted-user grip and Claude-compatible hook discovery. Default: true. */\n\tenabled?: boolean;\n\t/** Override the home directory used for Claude compatibility discovery; native hooks use the active agentDir. */\n\thome?: string;\n\t/** Host ceiling for HTTP hook destinations. */\n\tallowedHttpHookUrls?: readonly string[];\n\t/** Host ceiling for HTTP hook header environment interpolation. */\n\thttpHookAllowedEnvVars?: readonly string[];\n\t/** Host-injected snapshot; cloned and frozen before use instead of reading settings files. */\n\tsnapshot?: LoadedHooks;\n}\n\nexport interface GripAgentSessionOptions {\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: ScopedModel[];\n\ttools?: string[];\n\t/** Expose configured LSP tools by default; overrides enableLspTools in settings for this session. */\n\tenableLspTools?: boolean;\n\texcludedTools?: string[];\n\t/** Trust project-local subagent presets without an interactive host prompt. */\n\ttrustProjectAgents?: boolean;\n\t/** Explicit host trust grant for project grip and Claude-compatible hooks. Ignored by non-local backends. */\n\ttrustProjectHooks?: boolean;\n\t/** Optional canonical repository identity constraining the project-hook trust grant. */\n\ttrustedProjectHooksIdentity?: string;\n\t/** LSP layers or files supplied by a CLI, SDK, or host. Host scope is the default. */\n\tlsp?: LspConfigurationInput | LspConfigurationInput[];\n\t/** Host-provided factories referenced by LSP transports with type `connection`. */\n\tlspConnectionFactories?: LspConnectionFactoryRegistry;\n\t/** Trust active LSP transports from project settings after applying a host-controlled approval policy. */\n\ttrustProjectLspTransports?: boolean;\n\tnoTools?: GripAgentToolExclusionMode;\n\tcustomTools?: ToolDefinition[];\n\ttoolOperations?: ToolOperations;\n}\n\nexport interface ResolveGripAgentSessionOptionsContext {\n\tservices: GripAgentServices;\n\tsession: Session;\n\tsessionStartEvent?: SessionStartEvent;\n}\n\nexport interface ResolveGripAgentSessionOptionsResult extends GripAgentSessionOptions {\n\tdiagnostics?: GripAgentDiagnostic[];\n}\n\nexport interface CreateGripAgentOptions extends GripAgentSessionOptions {\n\t/** Dispose toolOperations with this top-level GripAgent. Child sessions and subagents always borrow it. */\n\townsToolOperations?: boolean;\n\t/** Runtime mode. Default: embedded SDK usage. */\n\tmode?: GripAgentAppMode;\n\tcwd?: string;\n\tagentDir?: string;\n\t/** Claude-compatible host-local hooks, or false to disable them. */\n\thooks?: false | GripAgentHooksOptions;\n\t/** Session lifecycle/discovery backend. Default: local JSONL sessions for cwd. */\n\tsessionManager?: SessionManager;\n\t/** Shared auth storage reused across runtime recreation. */\n\tauthStorage?: AuthStorage;\n\tsettingsManager?: SettingsManager;\n\tmodelRegistry?: ModelRegistry;\n\textensionFlagValues?: Map<string, boolean | string>;\n\tresourceLoader?: ResourceLoader;\n\tresourceLoaderOptions?: Omit<DefaultResourceLoaderOptions, \"cwd\" | \"agentDir\" | \"settingsManager\">;\n\tresolveSessionOptions?: (\n\t\tcontext: ResolveGripAgentSessionOptionsContext,\n\t) => Promise<ResolveGripAgentSessionOptionsResult> | ResolveGripAgentSessionOptionsResult;\n}\n\nexport interface CreateGripAgentSessionOptions {\n\t/** Initial active conversation state. Default: sessionManager.create(). */\n\tsession?: Session;\n\tsessionStartEvent?: SessionStartEvent;\n}\nexport interface GripAgentSwitchSessionOptions extends ExtensionSwitchSessionOptions {\n\tcwdOverride?: string;\n}\n\nexport interface GripAgentForkResult extends ExtensionSessionActionResult {\n\tselectedText?: string;\n}\n\nexport interface GripAgentStdioOptions {\n\tmode: GripAgentAppMode;\n}\n\ninterface GripAgentResolvedDependencies {\n\tcwd: string;\n\tagentDir: string;\n\tsessionManager: SessionManager;\n\tauthStorage: AuthStorage;\n}\n\ninterface ForkPreparationOptions {\n\tposition: SessionForkPosition;\n}\n\ninterface MutableSubagentRunRegistry extends SubagentRunRegistry {\n\tupsert(run: SubagentRunInfo): void;\n\tget(runId: string): SubagentRunInfo | undefined;\n}\n\ninterface EmbeddedSubagentChildState {\n\tchild: GripAgent;\n\tsession: AgentSession;\n\trun: SubagentRunInfo;\n\ttoolOperations: ToolOperations;\n\tbackendIdentity: string;\n}\n\ninterface EmbeddedSubagentRuntimeState {\n\tnextRunNumber: number;\n\tchildren: Map<string, EmbeddedSubagentChildState>;\n}\n\ninterface EmbeddedSubagentRunnerContext {\n\tservices: GripAgentServices;\n\texcludedTools: string[];\n\tregistry: MutableSubagentRunRegistry;\n\truntime: EmbeddedSubagentRuntimeState;\n}\n\ninterface EmbeddedSubagentRequestContext {\n\tresolvedModel: ResolveCliModelResult | undefined;\n\ttoolOperations: ToolOperations;\n\tbackendInfo: ToolBackendInfo | undefined;\n\tbackendIdentity: string;\n}\n\ntype EmbeddedSubagentRequestResolution =\n\t| { context: EmbeddedSubagentRequestContext; failure?: never }\n\t| { context?: never; failure: SubagentRunOutcome };\n\ninterface PreparedEmbeddedSubagentChild {\n\tchildState: EmbeddedSubagentChildState;\n\trunId: string;\n\tfailure?: never;\n}\n\ntype EmbeddedSubagentChildPreparation =\n\t| PreparedEmbeddedSubagentChild\n\t| { childState?: never; runId?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentChildCreation =\n\t| { childState: EmbeddedSubagentChildState; failure?: never }\n\t| { childState?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentSkillSelection =\n\t| { skills: Skill[]; failure?: never }\n\t| { skills?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentSkillPreload =\n\t| { blocks: string[]; failure?: never }\n\t| { blocks?: never; failure: SubagentRunOutcome };\n\ninterface EmbeddedSubagentOutputState {\n\tlastOutput: string | undefined;\n}\n\nexport type GripAgentAppMode = \"embedded\" | \"interactive\" | \"print\" | \"json\" | \"rpc\";\n\nexport interface RunGripAgentModeOptions {\n\tmode?: GripAgentAppMode;\n\tmigratedProviders?: string[];\n\tinitialMessage?: string;\n\tinitialImages?: ImageContent[];\n\tinitialMessages?: string[];\n\tverbose?: boolean;\n\t/** Startup-only interactive renderer choice. Defaults to the persisted setting. */\n\ttuiMode?: TuiMode;\n\tstartupBenchmark?: boolean;\n}\n\nexport interface GripAgentRuntimeHost {\n\treadonly services: GripAgentServices;\n\treadonly session: AgentSession;\n\treadonly diagnostics: readonly GripAgentDiagnostic[];\n\treadonly modelFallbackMessage: string | undefined;\n\tsetRebindSession(rebindSession?: (session: AgentSession) => Promise<void>): void;\n\tsetBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void;\n\tchangeDirectory(cwd: string): Promise<ExtensionSessionActionResult>;\n\tswitchSession(sessionPath: string, options?: GripAgentSwitchSessionOptions): Promise<ExtensionSessionActionResult>;\n\tnewSession(options?: ExtensionNewSessionOptions): Promise<ExtensionSessionActionResult>;\n\tfork(entryId: string, options?: ExtensionForkOptions): Promise<GripAgentForkResult>;\n\timportFromJsonl(inputPath: string, cwdOverride?: string): Promise<ExtensionSessionActionResult>;\n\tlistSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tlistAllSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tdispose(): Promise<void>;\n}\n\nexport class SessionImportFileNotFoundError extends Error {\n\treadonly filePath: string;\n\n\tconstructor(filePath: string) {\n\t\tsuper(`File not found: ${filePath}`);\n\t\tthis.name = \"SessionImportFileNotFoundError\";\n\t\tthis.filePath = filePath;\n\t}\n}\n\nfunction isSubagentCwdConfined(cwd: string, operations: ToolOperations, backend: ToolBackendInfo | undefined): boolean {\n\tif (backend?.type === \"local\") return true;\n\tif (backend === undefined) return posix.normalize(cwd) === posix.normalize(operations.cwd);\n\tconst pathApi =\n\t\tbackend?.type === \"remote\" && backend.configured && backend.workspace.pathFlavor === \"windows\" ? win32 : posix;\n\tconst relative = pathApi.relative(pathApi.normalize(operations.cwd), pathApi.normalize(cwd));\n\treturn (\n\t\trelative === \"\" ||\n\t\t(relative !== \"..\" && !relative.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(relative))\n\t);\n}\n\nfunction extractUserMessageText(content: string | (TextContent | ImageContent)[]): string {\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\n\treturn content\n\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\");\n}\n\nfunction blockImagesInMessage(message: Message): Message {\n\tif (message.role !== \"user\" && message.role !== \"toolResult\") return message;\n\tconst { content } = message;\n\tif (!Array.isArray(content) || !content.some((part) => part.type === \"image\")) return message;\n\tconst filteredContent = content\n\t\t.map((part) => (part.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : part))\n\t\t.filter(\n\t\t\t(part, index, parts) =>\n\t\t\t\t!(\n\t\t\t\t\tpart.type === \"text\" &&\n\t\t\t\t\tpart.text === \"Image reading is disabled.\" &&\n\t\t\t\t\tindex > 0 &&\n\t\t\t\t\tparts[index - 1].type === \"text\" &&\n\t\t\t\t\t(parts[index - 1] as TextContent).text === \"Image reading is disabled.\"\n\t\t\t\t),\n\t\t);\n\treturn { ...message, content: filteredContent };\n}\n\nfunction asLspInputs(input: LspConfigurationInput | LspConfigurationInput[] | undefined): LspConfigurationInput[] {\n\treturn input === undefined ? [] : Array.isArray(input) ? input : [input];\n}\n\nfunction getAttributionHeaders(\n\tmodel: Model<any>,\n\tsettingsManager: SettingsManager,\n\tsessionId?: string,\n): Record<string, string> | undefined {\n\tif (\n\t\tsessionId &&\n\t\t(model.provider === \"opencode\" || model.provider === \"opencode-go\" || model.baseUrl.includes(\"opencode.ai\"))\n\t) {\n\t\treturn { \"x-opencode-session\": sessionId, \"x-opencode-client\": \"grip\" };\n\t}\n\n\tif (!isInstallTelemetryEnabled(settingsManager)) {\n\t\treturn undefined;\n\t}\n\n\tif (model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\")) {\n\t\treturn {\n\t\t\t\"HTTP-Referer\": \"https://pi.dev\",\n\t\t\t\"X-OpenRouter-Title\": \"grip\",\n\t\t\t\"X-OpenRouter-Categories\": \"cli-agent\",\n\t\t};\n\t}\n\n\tif (\n\t\tmodel.provider === \"cloudflare-workers-ai\" ||\n\t\tmodel.provider === \"cloudflare-ai-gateway\" ||\n\t\tmodel.baseUrl.includes(\"api.cloudflare.com\") ||\n\t\tmodel.baseUrl.includes(\"gateway.ai.cloudflare.com\")\n\t) {\n\t\treturn {\n\t\t\t\"User-Agent\": \"grip-coding-agent\",\n\t\t};\n\t}\n\n\treturn undefined;\n}\n\nfunction applyExtensionFlagValues(\n\tresourceLoader: ResourceLoader,\n\textensionFlagValues: Map<string, boolean | string> | undefined,\n): GripAgentDiagnostic[] {\n\tif (!extensionFlagValues) {\n\t\treturn [];\n\t}\n\n\tconst diagnostics: GripAgentDiagnostic[] = [];\n\tconst extensionsResult = resourceLoader.getExtensions();\n\tconst registeredFlags = new Map<string, { type: \"boolean\" | \"string\" }>();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tfor (const [name, flag] of extension.flags) {\n\t\t\tregisteredFlags.set(name, { type: flag.type });\n\t\t}\n\t}\n\n\tconst unknownFlags: string[] = [];\n\tfor (const [name, value] of extensionFlagValues) {\n\t\tconst flag = registeredFlags.get(name);\n\t\tif (!flag) {\n\t\t\tunknownFlags.push(name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (flag.type === \"boolean\") {\n\t\t\textensionsResult.runtime.flagValues.set(name, true);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\textensionsResult.runtime.flagValues.set(name, value);\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `Extension flag \"--${name}\" requires a value`,\n\t\t});\n\t}\n\n\tif (unknownFlags.length > 0) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `Unknown option${unknownFlags.length === 1 ? \"\" : \"s\"}: ${unknownFlags.map((name) => `--${name}`).join(\", \")}`,\n\t\t});\n\t}\n\n\treturn diagnostics;\n}\n\nasync function runInteractiveAppMode(\n\truntimeHost: GripAgentRuntimeHost,\n\tmodelFallbackMessage: string | undefined,\n\toptions: RunGripAgentModeOptions,\n): Promise<void> {\n\tconst interactiveMode = new InteractiveMode(runtimeHost, {\n\t\tmigratedProviders: options.migratedProviders,\n\t\tmodelFallbackMessage,\n\t\tinitialMessage: options.initialMessage,\n\t\tinitialImages: options.initialImages,\n\t\tinitialMessages: options.initialMessages,\n\t\tverbose: options.verbose,\n\t\ttuiMode: options.tuiMode,\n\t});\n\tif (options.startupBenchmark) {\n\t\tawait interactiveMode.init();\n\t\ttime(\"interactiveMode.init\");\n\t\t// Give the TUI's stdin handler a brief chance to consume terminal query replies\n\t\t// (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.\n\t\tawait new Promise((resolve) => setTimeout(resolve, 150));\n\t\tinteractiveMode.stop();\n\t\tstopThemeWatcher();\n\t\tprintTimings();\n\t\tif (process.stdout.writableLength > 0) {\n\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t}\n\t\tif (process.stderr.writableLength > 0) {\n\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t}\n\t\treturn;\n\t}\n\tprintTimings();\n\tawait interactiveMode.run();\n}\n\n/**\n * Application-level composition root for grip's coding agent runtime.\n *\n * GripAgent owns common app services, the session lifecycle backend, and the\n * current active AgentSession. Conversation behavior stays in AgentSession;\n * session lifecycle/discovery stays in SessionManager implementations.\n */\nexport class GripAgent {\n\tprivate readonly initialCwd: string;\n\treadonly agentDir: string;\n\treadonly sessionManager: SessionManager;\n\treadonly authStorage: AuthStorage;\n\n\tprivate readonly options: CreateGripAgentOptions;\n\tprivate _mode: GripAgentAppMode;\n\tprivate _session?: AgentSession;\n\tprivate _services?: GripAgentServices;\n\tprivate _diagnostics: GripAgentDiagnostic[] = [];\n\tprivate _baseDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _hookConfigurationDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _hookRuntimeDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _lspDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _modelFallbackMessage?: string;\n\tprivate rebindSession?: (session: AgentSession) => Promise<void>;\n\tprivate beforeSessionInvalidate?: () => void;\n\tprivate readonly borrowedToolOperations: BorrowedToolOperations | undefined;\n\tprivate toolOperationsDisposed = false;\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly subagentCleanupCallbacks = new Set<() => Promise<void>>();\n\n\tprivate constructor(options: CreateGripAgentOptions, resolved: GripAgentResolvedDependencies) {\n\t\tthis.options = options;\n\t\tthis.borrowedToolOperations = options.toolOperations ? borrowToolOperations(options.toolOperations) : undefined;\n\t\tthis._mode = options.mode ?? \"embedded\";\n\t\tthis.initialCwd = resolved.cwd;\n\t\tthis.agentDir = resolved.agentDir;\n\t\tthis.sessionManager = resolved.sessionManager;\n\t\tthis.authStorage = resolved.authStorage;\n\t}\n\n\tstatic setupStdio(options: GripAgentStdioOptions): void {\n\t\tif (options.mode !== \"embedded\" && options.mode !== \"interactive\") {\n\t\t\ttakeOverStdout();\n\t\t}\n\t}\n\n\tstatic async create(options: CreateGripAgentOptions = {}): Promise<GripAgent> {\n\t\tconst cwd = options.cwd ?? process.cwd();\n\t\tconst agentDir = options.agentDir ?? getAgentDir();\n\t\tconst sessionManager =\n\t\t\toptions.sessionManager ?? new LocalSessionManager({ cwd, sessionDir: getDefaultSessionDir(cwd, agentDir) });\n\t\tconst authStorage = options.authStorage ?? AuthStorage.create(join(agentDir, \"auth.json\"));\n\t\treturn new GripAgent(options, { cwd, agentDir, sessionManager, authStorage });\n\t}\n\n\tget mode(): GripAgentAppMode {\n\t\treturn this._mode;\n\t}\n\n\tget cwd(): string {\n\t\treturn this._services?.cwd ?? this.initialCwd;\n\t}\n\n\tasync readPipedStdin(): Promise<string | undefined> {\n\t\tif (this._mode === \"embedded\" || this._mode === \"rpc\" || process.stdin.isTTY) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst stdinContent = await new Promise<string | undefined>((resolve) => {\n\t\t\tlet data = \"\";\n\t\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\t\tdata += chunk;\n\t\t\t});\n\t\t\tprocess.stdin.on(\"end\", () => {\n\t\t\t\tresolve(data.trim() || undefined);\n\t\t\t});\n\t\t\tprocess.stdin.resume();\n\t\t});\n\n\t\tif (stdinContent !== undefined && this._mode === \"interactive\") {\n\t\t\tthis._mode = \"print\";\n\t\t}\n\t\treturn stdinContent;\n\t}\n\n\tprivate async createServices(cwd: string): Promise<GripAgentServices> {\n\t\tconst settingsManager = this.options.settingsManager ?? SettingsManager.create(cwd, this.agentDir);\n\t\tif (process.env.GRIP_MODEL_CATALOG_URL) {\n\t\t\tawait refreshModelCatalog().catch(() => undefined);\n\t\t}\n\t\tconst modelRegistry =\n\t\t\tthis.options.modelRegistry ?? ModelRegistry.create(this.authStorage, join(this.agentDir, \"models.json\"));\n\t\tconst resourceLoader =\n\t\t\tthis.options.resourceLoader ??\n\t\t\tnew DefaultResourceLoader({\n\t\t\t\t...(this.options.resourceLoaderOptions ?? {}),\n\t\t\t\tcwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tsettingsManager,\n\t\t\t\ttoolOperations: this.options.resourceLoaderOptions?.toolOperations\n\t\t\t\t\t? borrowToolOperations(this.options.resourceLoaderOptions.toolOperations)\n\t\t\t\t\t: this.borrowedToolOperations,\n\t\t\t});\n\t\tawait resourceLoader.reload();\n\n\t\tconst diagnostics: GripAgentDiagnostic[] = [];\n\t\tconst extensionsResult = resourceLoader.getExtensions();\n\t\tfor (const { name, config, extensionPath } of extensionsResult.runtime.pendingProviderRegistrations) {\n\t\t\ttry {\n\t\t\t\tmodelRegistry.registerProvider(name, config);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `Extension \"${extensionPath}\" error: ${message}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\textensionsResult.runtime.pendingProviderRegistrations = [];\n\t\tdiagnostics.push(...applyExtensionFlagValues(resourceLoader, this.options.extensionFlagValues));\n\n\t\treturn {\n\t\t\tcwd,\n\t\t\tagentDir: this.agentDir,\n\t\t\tauthStorage: this.authStorage,\n\t\t\tsettingsManager,\n\t\t\tmodelRegistry,\n\t\t\tresourceLoader,\n\t\t\tdiagnostics,\n\t\t};\n\t}\n\tprivate createSubagentRunRegistry(): MutableSubagentRunRegistry {\n\t\tconst runs = new Map<string, SubagentRunInfo>();\n\t\treturn {\n\t\t\tlist: () => Array.from(runs.values()).sort((a, b) => a.createdAt.localeCompare(b.createdAt)),\n\t\t\tupsert: (run) => runs.set(run.runId, structuredClone(run)),\n\t\t\tget: (runId) => runs.get(runId),\n\t\t};\n\t}\n\n\tprivate createSubagentConfigRegistry(): SubagentConfigRegistry {\n\t\tconst configs = new Map<string, Parameters<SubagentConfigRegistry[\"upsert\"]>[0]>();\n\t\treturn {\n\t\t\tlist: () => Array.from(configs.values()).sort((a, b) => a.createdAt.localeCompare(b.createdAt)),\n\t\t\tupsert: (config) => configs.set(config.name, structuredClone(config)),\n\t\t\tget: (name) => configs.get(name),\n\t\t};\n\t}\n\n\tprivate resolveEmbeddedSubagentRequest(\n\t\trequest: SubagentRunRequest,\n\t\tservices: GripAgentServices,\n\t): EmbeddedSubagentRequestResolution {\n\t\tconst resolvedModel = request.model\n\t\t\t? resolveCliModel({ cliModel: request.model, modelRegistry: services.modelRegistry })\n\t\t\t: undefined;\n\t\tif (resolvedModel?.error) return { failure: { exitCode: 1, stderr: resolvedModel.error } };\n\t\tconst toolOperations = request.toolOperations;\n\t\tif (!toolOperations) {\n\t\t\treturn { failure: { exitCode: 1, stderr: \"Subagents require explicit workspace tool operations\" } };\n\t\t}\n\t\tconst backendInfo = toolOperations.getBackendInfo?.();\n\t\tif (backendInfo?.type === \"remote\" && !backendInfo.configured) {\n\t\t\treturn { failure: { exitCode: 1, stderr: \"Subagents cannot run with an unconfigured remote backend\" } };\n\t\t}\n\t\tif (!isSubagentCwdConfined(request.cwd, toolOperations, backendInfo)) {\n\t\t\treturn {\n\t\t\t\tfailure: {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: `Sandboxed subagent cwd must stay within the sandbox workspace root: ${toolOperations.cwd}`,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tconst backendIdentity = JSON.stringify(backendInfo ?? { type: \"unknown\", cwd: toolOperations.cwd });\n\t\treturn { context: { resolvedModel, toolOperations, backendInfo, backendIdentity } };\n\t}\n\n\tprivate selectEmbeddedSubagentSkills(\n\t\trequest: SubagentRunRequest,\n\t\tservices: GripAgentServices,\n\t): EmbeddedSubagentSkillSelection {\n\t\tconst requestedSkills = request.skills ?? [];\n\t\tconst loadedSkills = services.resourceLoader.getSkills().skills;\n\t\tconst skillsByName = new Map<string, Skill>();\n\t\tfor (const skill of loadedSkills) {\n\t\t\tif (!skillsByName.has(skill.name)) skillsByName.set(skill.name, skill);\n\t\t}\n\t\tconst missingSkills: string[] = [];\n\t\tconst skills: Skill[] = [];\n\t\tfor (const name of requestedSkills) {\n\t\t\tconst skill = skillsByName.get(name);\n\t\t\tif (skill) skills.push(skill);\n\t\t\telse missingSkills.push(name);\n\t\t}\n\t\tif (missingSkills.length > 0) {\n\t\t\treturn { failure: { exitCode: 1, stderr: `Unknown subagent skill(s): ${missingSkills.join(\", \")}` } };\n\t\t}\n\t\treturn { skills };\n\t}\n\n\tprivate async loadEmbeddedSubagentSkillContent(\n\t\tskill: Skill,\n\t\ttoolOperations: ToolOperations,\n\t\tbackendInfo: ToolBackendInfo | undefined,\n\t): Promise<string> {\n\t\tif (skill.content !== undefined) return skill.content;\n\t\tif (backendInfo?.type === \"local\") return readFileSync(skill.filePath, \"utf-8\");\n\t\tif (getSourceBackend(skill.sourceInfo) === \"local\") {\n\t\t\tthrow new Error(\"local skill files are unavailable to a sandboxed subagent\");\n\t\t}\n\t\treturn (await toolOperations.readFile(skill.filePath)).toString(\"utf-8\");\n\t}\n\n\tprivate async preloadEmbeddedSubagentSkills(\n\t\tskills: Skill[],\n\t\tcontext: EmbeddedSubagentRequestContext,\n\t): Promise<EmbeddedSubagentSkillPreload> {\n\t\tconst blocks: string[] = [];\n\t\tfor (const skill of skills) {\n\t\t\ttry {\n\t\t\t\tconst content = await this.loadEmbeddedSubagentSkillContent(\n\t\t\t\t\tskill,\n\t\t\t\t\tcontext.toolOperations,\n\t\t\t\t\tcontext.backendInfo,\n\t\t\t\t);\n\t\t\t\tblocks.push(\n\t\t\t\t\t`<preloaded-skill name=\"${skill.name}\" location=\"${skill.filePath}\">\\nReferences are relative to ${skill.baseDir}.\\n\\n${stripFrontmatter(content).trim()}\\n</preloaded-skill>`,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tfailure: {\n\t\t\t\t\t\texitCode: 1,\n\t\t\t\t\t\tstderr: `Failed to preload subagent skill ${skill.name}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn { blocks };\n\t}\n\n\tprivate async createEmbeddedSubagentChild(\n\t\trequest: SubagentRunRequest,\n\t\trequestContext: EmbeddedSubagentRequestContext,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t\trunId: string,\n\t): Promise<EmbeddedSubagentChildCreation> {\n\t\tconst settingsStorage = new InMemorySettingsStorage();\n\t\tsettingsStorage.withLock(\"global\", () =>\n\t\t\tJSON.stringify(runnerContext.services.settingsManager.getGlobalSettings()),\n\t\t);\n\t\tsettingsStorage.withLock(\"project\", () =>\n\t\t\tJSON.stringify(runnerContext.services.settingsManager.getProjectSettings()),\n\t\t);\n\t\tconst settingsManager = SettingsManager.fromStorage(settingsStorage);\n\t\tconst selection = this.selectEmbeddedSubagentSkills(request, runnerContext.services);\n\t\tif (selection.failure) return selection;\n\t\tconst preload = await this.preloadEmbeddedSubagentSkills(selection.skills, requestContext);\n\t\tif (preload.failure) return preload;\n\n\t\tconst childExcludedTools = new Set([\n\t\t\t\"subagent\",\n\t\t\t\"subagent_runs\",\n\t\t\t\"create_subagent\",\n\t\t\t...runnerContext.excludedTools,\n\t\t]);\n\t\tconst requestedTools = request.tools ?? getDefaultActiveToolNames();\n\t\tconst skillTools = selection.skills.flatMap((skill) => skill.tools ?? []);\n\t\tconst tools = Array.from(new Set([...requestedTools, ...skillTools])).filter(\n\t\t\t(name) => !childExcludedTools.has(name),\n\t\t);\n\t\tconst child = await GripAgent.create({\n\t\t\tmode: \"embedded\",\n\t\t\tcwd: request.cwd,\n\t\t\tagentDir: runnerContext.services.agentDir,\n\t\t\tsessionManager: new InMemorySessionManager(request.cwd),\n\t\t\tauthStorage: runnerContext.services.authStorage,\n\t\t\tmodelRegistry: runnerContext.services.modelRegistry,\n\t\t\tsettingsManager,\n\t\t\tmodel: requestContext.resolvedModel?.model,\n\t\t\tthinkingLevel: requestContext.resolvedModel?.thinkingLevel,\n\t\t\ttools,\n\t\t\texcludedTools: Array.from(childExcludedTools),\n\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\tresourceLoaderOptions: {\n\t\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\t\tnoExtensions: true,\n\t\t\t\tnoSkills: true,\n\t\t\t\tnoRules: true,\n\t\t\t\tnoPromptTemplates: true,\n\t\t\t\tnoThemes: true,\n\t\t\t\tnoContextFiles: true,\n\t\t\t\tsystemPrompt: \"\",\n\t\t\t\tappendSystemPrompt: [],\n\t\t\t\tsystemPromptOverride: () => undefined,\n\t\t\t\tappendSystemPromptOverride: () => [request.systemPrompt, ...preload.blocks],\n\t\t\t},\n\t\t});\n\t\tconst session = await child.createAgentSession();\n\t\tconst now = new Date().toISOString();\n\t\tconst run: SubagentRunInfo = {\n\t\t\trunId,\n\t\t\tsessionReference: session.sessionReference,\n\t\t\tstatus: \"running\",\n\t\t\tagent: request.agent,\n\t\t\ttask: request.task,\n\t\t\tcwd: request.cwd,\n\t\t\tmodel: request.model,\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tconst childState: EmbeddedSubagentChildState = {\n\t\t\tchild,\n\t\t\tsession,\n\t\t\trun,\n\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\tbackendIdentity: requestContext.backendIdentity,\n\t\t};\n\t\trunnerContext.runtime.children.set(runId, childState);\n\t\trunnerContext.registry.upsert(run);\n\t\treturn { childState };\n\t}\n\n\tprivate async prepareEmbeddedSubagentChild(\n\t\trequest: SubagentRunRequest,\n\t\trequestContext: EmbeddedSubagentRequestContext,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t): Promise<EmbeddedSubagentChildPreparation> {\n\t\tconst continuedRunId = request.continueSession;\n\t\tconst childState = continuedRunId ? runnerContext.runtime.children.get(continuedRunId) : undefined;\n\t\tif (request.continueSession && !childState) {\n\t\t\treturn { failure: { exitCode: 1, stderr: `Unknown subagent run id: ${request.continueSession}` } };\n\t\t}\n\t\tif (\n\t\t\tchildState &&\n\t\t\t(childState.toolOperations !== requestContext.toolOperations ||\n\t\t\t\tchildState.backendIdentity !== requestContext.backendIdentity)\n\t\t) {\n\t\t\tawait childState.child.dispose();\n\t\t\trunnerContext.runtime.children.delete(childState.run.runId);\n\t\t\tchildState.run = { ...childState.run, status: \"failed\", updatedAt: new Date().toISOString() };\n\t\t\trunnerContext.registry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\tfailure: {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: \"The parent workspace backend changed; start a new subagent instead of continuing this run\",\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (!childState) {\n\t\t\tconst runId = `subagent:${runnerContext.runtime.nextRunNumber++}`;\n\t\t\tconst creation = await this.createEmbeddedSubagentChild(request, requestContext, runnerContext, runId);\n\t\t\tif (creation.failure) return creation;\n\t\t\treturn { childState: creation.childState, runId };\n\t\t}\n\t\tchildState.run = {\n\t\t\t...childState.run,\n\t\t\tstatus: \"running\",\n\t\t\ttask: request.task,\n\t\t\tupdatedAt: new Date().toISOString(),\n\t\t};\n\t\trunnerContext.registry.upsert(childState.run);\n\t\treturn { childState, runId: childState.run.runId };\n\t}\n\n\tprivate subscribeToEmbeddedSubagentRun(\n\t\tchildState: EmbeddedSubagentChildState,\n\t\trequest: SubagentRunRequest,\n\t\toutput: EmbeddedSubagentOutputState,\n\t\tregistry: MutableSubagentRunRegistry,\n\t): () => void {\n\t\treturn childState.session.subscribe((event) => {\n\t\t\tif (event.type !== \"message_end\") return;\n\t\t\tif (event.message.role === \"assistant\" || event.message.role === \"toolResult\") {\n\t\t\t\trequest.onMessage(event.message as Message);\n\t\t\t}\n\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\toutput.lastOutput =\n\t\t\t\tevent.message.content\n\t\t\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t.join(\"\\n\") || output.lastOutput;\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tlastOutput: output.lastOutput,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t});\n\t}\n\n\tprivate async executeEmbeddedSubagentRun(\n\t\trequest: SubagentRunRequest,\n\t\tpreparation: PreparedEmbeddedSubagentChild,\n\t\tregistry: MutableSubagentRunRegistry,\n\t): Promise<SubagentRunOutcome> {\n\t\tconst { childState, runId } = preparation;\n\t\tconst session = childState.session;\n\t\tconst output: EmbeddedSubagentOutputState = { lastOutput: childState.run.lastOutput };\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tconst abort = (): void => {\n\t\t\tvoid session.abort();\n\t\t};\n\t\ttry {\n\t\t\tunsubscribe = this.subscribeToEmbeddedSubagentRun(childState, request, output, registry);\n\t\t\tif (request.signal?.aborted) {\n\t\t\t\treturn {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: \"Subagent was aborted\",\n\t\t\t\t\trunId,\n\t\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t\t};\n\t\t\t}\n\t\t\trequest.signal?.addEventListener(\"abort\", abort, { once: true });\n\t\t\tawait session.prompt(request.prompt);\n\t\t\tconst status = request.signal?.aborted ? \"failed\" : \"completed\";\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tstatus,\n\t\t\t\tlastOutput: output.lastOutput,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\texitCode: request.signal?.aborted ? 1 : 0,\n\t\t\t\tstderr: \"\",\n\t\t\t\trunId,\n\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\texitCode: 1,\n\t\t\t\tstderr: error instanceof Error ? error.message : String(error),\n\t\t\t\trunId,\n\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t};\n\t\t} finally {\n\t\t\trequest.signal?.removeEventListener(\"abort\", abort);\n\t\t\tunsubscribe?.();\n\t\t}\n\t}\n\n\tprivate async runEmbeddedSubagent(\n\t\trequest: SubagentRunRequest,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t): Promise<SubagentRunOutcome> {\n\t\tconst resolution = this.resolveEmbeddedSubagentRequest(request, runnerContext.services);\n\t\tif (resolution.failure) return resolution.failure;\n\t\tconst preparation = await this.prepareEmbeddedSubagentChild(request, resolution.context, runnerContext);\n\t\tif (preparation.failure) return preparation.failure;\n\t\treturn this.executeEmbeddedSubagentRun(request, preparation, runnerContext.registry);\n\t}\n\n\tprivate createEmbeddedSubagentRunner(\n\t\tservices: GripAgentServices,\n\t\texcludedTools: string[],\n\t\tregistry: MutableSubagentRunRegistry,\n\t): SubagentRunner {\n\t\tconst runtime: EmbeddedSubagentRuntimeState = { nextRunNumber: 1, children: new Map() };\n\t\tconst runnerContext: EmbeddedSubagentRunnerContext = { services, excludedTools, registry, runtime };\n\t\tconst cleanup = async (): Promise<void> => {\n\t\t\tfor (const { child } of runtime.children.values()) await child.dispose();\n\t\t\truntime.children.clear();\n\t\t};\n\t\tthis.subagentCleanupCallbacks.add(cleanup);\n\t\treturn (request) => this.runEmbeddedSubagent(request, runnerContext);\n\t}\n\n\tprivate shouldDiscoverProjectHooks(resolvedOptions: ResolveGripAgentSessionOptionsResult): boolean {\n\t\tconst hookOperations = resolvedOptions.toolOperations ?? this.borrowedToolOperations;\n\t\tconst customHookOperationsSupplied =\n\t\t\tresolvedOptions.toolOperations !== undefined || this.borrowedToolOperations !== undefined;\n\t\tconst hookBackend = hookOperations?.getBackendInfo?.();\n\t\tconst trustProjectHooks = resolvedOptions.trustProjectHooks ?? this.options.trustProjectHooks;\n\t\treturn trustProjectHooks === true && (!customHookOperationsSupplied || hookBackend?.type === \"local\");\n\t}\n\n\tprivate resolveHookDiscovery(\n\t\tservices: GripAgentServices,\n\t\tresolvedOptions: ResolveGripAgentSessionOptionsResult,\n\t\tdiagnostics: GripAgentDiagnostic[],\n\t\tdiscoverProjectHooks: boolean,\n\t): HookDiscoveryResolution {\n\t\tconst trustedIdentity = resolvedOptions.trustedProjectHooksIdentity ?? this.options.trustedProjectHooksIdentity;\n\t\tlet cwd = services.cwd;\n\t\tif (!discoverProjectHooks) return { cwd, discoverProjectHooks };\n\t\ttry {\n\t\t\tcwd = canonicalProjectHookCwd(services.cwd);\n\t\t\tif (trustedIdentity && canonicalProjectHookIdentity(cwd) !== trustedIdentity) {\n\t\t\t\tdiscoverProjectHooks = false;\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: \"Project hook trust identity changed before hook loading; project hooks were not loaded\",\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tdiscoverProjectHooks = false;\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\",\n\t\t\t\tmessage: `Unable to canonicalize project hooks path; project hooks were not loaded: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t});\n\t\t}\n\t\treturn { cwd, discoverProjectHooks };\n\t}\n\n\tprivate async loadSessionHooks(\n\t\tservices: GripAgentServices,\n\t\tresolvedOptions: ResolveGripAgentSessionOptionsResult,\n\t\tdiscoverProjectHooks: boolean,\n\t): Promise<SessionHookResolution> {\n\t\tconst diagnostics: GripAgentDiagnostic[] = [];\n\t\tconst hookOptions = this.options.hooks;\n\t\tconst discovery = this.resolveHookDiscovery(services, resolvedOptions, diagnostics, discoverProjectHooks);\n\t\tif (hookOptions === false || hookOptions?.enabled === false) {\n\t\t\treturn { loadedHooks: undefined, diagnostics };\n\t\t}\n\t\tconst loadedHooks = hookOptions?.snapshot\n\t\t\t? freezeLoadedHooks(hookOptions.snapshot)\n\t\t\t: await loadHooks({\n\t\t\t\t\tcwd: discovery.cwd,\n\t\t\t\t\thome: hookOptions?.home,\n\t\t\t\t\tagentDir: services.agentDir,\n\t\t\t\t\tsources: discovery.discoverProjectHooks ? [\"user\", \"project\", \"local\"] : [\"user\"],\n\t\t\t\t});\n\t\tdiagnostics.push(...loadedHooks.diagnostics.map(formatHookDiagnostic));\n\t\treturn { loadedHooks, diagnostics };\n\t}\n\n\tprivate mergeSessionOptions(resolvedOptions: ResolveGripAgentSessionOptionsResult): GripAgentSessionOptions {\n\t\treturn {\n\t\t\tmodel: resolvedOptions.model ?? this.options.model,\n\t\t\tthinkingLevel: resolvedOptions.thinkingLevel ?? this.options.thinkingLevel,\n\t\t\tscopedModels: resolvedOptions.scopedModels ?? this.options.scopedModels,\n\t\t\ttools: resolvedOptions.tools ?? this.options.tools,\n\t\t\tenableLspTools: resolvedOptions.enableLspTools ?? this.options.enableLspTools,\n\t\t\texcludedTools: resolvedOptions.excludedTools ?? this.options.excludedTools,\n\t\t\tnoTools: resolvedOptions.noTools ?? this.options.noTools,\n\t\t\tcustomTools: resolvedOptions.customTools ?? this.options.customTools,\n\t\t\ttoolOperations: resolvedOptions.toolOperations\n\t\t\t\t? borrowToolOperations(resolvedOptions.toolOperations)\n\t\t\t\t: this.borrowedToolOperations,\n\t\t\ttrustProjectAgents: resolvedOptions.trustProjectAgents ?? this.options.trustProjectAgents,\n\t\t\ttrustProjectHooks: resolvedOptions.trustProjectHooks ?? this.options.trustProjectHooks,\n\t\t\ttrustProjectLspTransports: resolvedOptions.trustProjectLspTransports ?? this.options.trustProjectLspTransports,\n\t\t\tlspConnectionFactories: resolvedOptions.lspConnectionFactories ?? this.options.lspConnectionFactories,\n\t\t};\n\t}\n\n\tprivate resolveSessionLspConfiguration(\n\t\tservices: GripAgentServices,\n\t\tsessionOptions: GripAgentSessionOptions,\n\t\tinputs: LspConfigurationInput[],\n\t): Promise<LoadLspConfigurationResult> {\n\t\tif (sessionOptions.toolOperations?.getBackendInfo?.().type === \"remote\") {\n\t\t\treturn Promise.resolve({ configuration: { enabled: false, servers: [] }, diagnostics: [] });\n\t\t}\n\t\treturn loadLspConfiguration({\n\t\t\tsettingsManager: services.settingsManager,\n\t\t\tcwd: services.cwd,\n\t\t\tagentDir: services.agentDir,\n\t\t\tinputs,\n\t\t\ttrustProjectLspTransports: sessionOptions.trustProjectLspTransports,\n\t\t});\n\t}\n\n\tprivate async resolveSessionModel(\n\t\tservices: GripAgentServices,\n\t\tsessionOptions: GripAgentSessionOptions,\n\t\texistingSession: SessionContext,\n\t): Promise<SessionModelResolution> {\n\t\tlet model = sessionOptions.model;\n\t\tlet fallbackMessage: string | undefined;\n\t\tif (model) model = services.modelRegistry.find(model.provider, model.id) ?? model;\n\t\tif (!model && existingSession.messages.length > 0 && existingSession.model) {\n\t\t\tconst restoredModel = services.modelRegistry.find(\n\t\t\t\texistingSession.model.provider,\n\t\t\t\texistingSession.model.modelId,\n\t\t\t);\n\t\t\tif (restoredModel && services.modelRegistry.hasConfiguredAuth(restoredModel)) model = restoredModel;\n\t\t\tif (!model)\n\t\t\t\tfallbackMessage = `Could not restore model ${existingSession.model.provider}/${existingSession.model.modelId}`;\n\t\t}\n\t\tif (model) return { model, fallbackMessage };\n\t\tconst result = await findInitialModel({\n\t\t\tscopedModels: [],\n\t\t\tisContinuing: existingSession.messages.length > 0,\n\t\t\tdefaultProvider: services.settingsManager.getDefaultProvider(),\n\t\t\tdefaultModelId: services.settingsManager.getDefaultModel(),\n\t\t\tdefaultThinkingLevel: services.settingsManager.getDefaultThinkingLevel(),\n\t\t\tmodelRegistry: services.modelRegistry,\n\t\t});\n\t\tmodel = result.model;\n\t\tif (!model) fallbackMessage = formatNoModelsAvailableMessage();\n\t\telse if (fallbackMessage) fallbackMessage += `. Using ${model.provider}/${model.id}`;\n\t\treturn { model, fallbackMessage };\n\t}\n\n\tprivate resolveSessionThinkingLevel(\n\t\tservices: GripAgentServices,\n\t\tactiveSession: Session,\n\t\texistingSession: SessionContext,\n\t\tconfiguredLevel: ThinkingLevel | undefined,\n\t\tmodel: Model<any> | undefined,\n\t): ThinkingLevel {\n\t\tconst hasExistingSession = existingSession.messages.length > 0;\n\t\tconst hasThinkingEntry = activeSession.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\t\tlet thinkingLevel = configuredLevel;\n\t\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\t\tthinkingLevel = hasThinkingEntry\n\t\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t\t: (services.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t\t}\n\t\tthinkingLevel ??= services.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t\treturn model ? (clampThinkingLevel(model, thinkingLevel) as ThinkingLevel) : \"off\";\n\t}\n\n\tprivate createCoreAgent(\n\t\tservices: GripAgentServices,\n\t\tactiveSession: Session,\n\t\tmodel: Model<any> | undefined,\n\t\tthinkingLevel: ThinkingLevel,\n\t\textensionRunnerRef: ExtensionRunnerReference,\n\t): Agent {\n\t\treturn new Agent({\n\t\t\tinitialState: { systemPrompt: \"\", model, thinkingLevel, tools: [] },\n\t\t\tconvertToLlm: (messages) => {\n\t\t\t\tconst converted = convertToLlm(messages);\n\t\t\t\treturn services.settingsManager.getBlockImages() ? converted.map(blockImagesInMessage) : converted;\n\t\t\t},\n\t\t\tstreamFn: async (streamModel, context, options) => {\n\t\t\t\tconst auth = await services.modelRegistry.getApiKeyAndHeaders(streamModel);\n\t\t\t\tif (!auth.ok) throw new Error(auth.error);\n\t\t\t\tconst providerRetrySettings = services.settingsManager.getProviderRetrySettings();\n\t\t\t\tconst timeoutMs =\n\t\t\t\t\toptions?.timeoutMs ??\n\t\t\t\t\tproviderRetrySettings.timeoutMs ??\n\t\t\t\t\t(streamModel.api === \"openai-codex-responses\"\n\t\t\t\t\t\t? services.settingsManager.getHttpIdleTimeoutMs()\n\t\t\t\t\t\t: undefined);\n\t\t\t\tconst websocketConnectTimeoutMs =\n\t\t\t\t\toptions?.websocketConnectTimeoutMs ?? services.settingsManager.getWebSocketConnectTimeoutMs();\n\t\t\t\tconst attributionHeaders = getAttributionHeaders(streamModel, services.settingsManager, options?.sessionId);\n\t\t\t\tlet headers =\n\t\t\t\t\tattributionHeaders || auth.headers || options?.headers\n\t\t\t\t\t\t? { ...attributionHeaders, ...auth.headers, ...options?.headers }\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\tif (runner?.hasHandlers(\"before_provider_headers\")) {\n\t\t\t\t\theaders = await runner.emitBeforeProviderHeaders(headers ?? {});\n\t\t\t\t}\n\t\t\t\treturn streamSimple(streamModel, context, {\n\t\t\t\t\t...options,\n\t\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\t\tmaxRetries: options?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: options?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\t\theaders,\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPayload: async (payload) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\treturn runner?.hasHandlers(\"before_provider_request\") ? runner.emitBeforeProviderRequest(payload) : payload;\n\t\t\t},\n\t\t\tonResponse: async (response) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\tif (!runner?.hasHandlers(\"after_provider_response\")) return;\n\t\t\t\tawait runner.emit({ type: \"after_provider_response\", status: response.status, headers: response.headers });\n\t\t\t},\n\t\t\tsessionId: activeSession.getSessionId(),\n\t\t\ttransformContext: async (messages) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\treturn runner ? runner.emitContext(messages) : messages;\n\t\t\t},\n\t\t\tsteeringMode: services.settingsManager.getSteeringMode(),\n\t\t\tfollowUpMode: services.settingsManager.getFollowUpMode(),\n\t\t\ttransport: services.settingsManager.getTransport(),\n\t\t\tthinkingBudgets: services.settingsManager.getThinkingBudgets(),\n\t\t\tmaxRetryDelayMs: services.settingsManager.getProviderRetrySettings().maxRetryDelayMs,\n\t\t});\n\t}\n\n\tprivate async buildAgentSession(\n\t\tactiveSession: Session,\n\t\tsessionStartEvent?: SessionStartEvent,\n\t): Promise<BuiltAgentSession> {\n\t\tconst services = await this.createServices(activeSession.getCwd());\n\t\tconst diagnostics: GripAgentDiagnostic[] = [\n\t\t\t...services.diagnostics,\n\t\t\t...services.resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\ttype: \"error\" as const,\n\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t})),\n\t\t];\n\t\tconst resolvedOptions =\n\t\t\t(await this.options.resolveSessionOptions?.({ services, session: activeSession, sessionStartEvent })) ?? {};\n\t\tdiagnostics.push(...(resolvedOptions.diagnostics ?? []));\n\t\tconst discoverProjectHooks = this.shouldDiscoverProjectHooks(resolvedOptions);\n\t\tconst hookResolution = await this.loadSessionHooks(services, resolvedOptions, discoverProjectHooks);\n\t\tconst sessionOptions = this.mergeSessionOptions(resolvedOptions);\n\t\tconst lspInputs = [...asLspInputs(this.options.lsp), ...asLspInputs(resolvedOptions.lsp)];\n\t\tconst resolveSessionLspConfiguration = () =>\n\t\t\tthis.resolveSessionLspConfiguration(services, sessionOptions, lspInputs);\n\t\tconst lspResult = await resolveSessionLspConfiguration();\n\t\tconst lspDiagnostics = formatLspConfigurationDiagnostics(lspResult.diagnostics);\n\t\tconst baseDiagnostics = [...diagnostics];\n\n\t\tconst existingSession = activeSession.buildSessionContext();\n\t\tconst hasExistingSession = existingSession.messages.length > 0;\n\t\tconst hasThinkingEntry = activeSession.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\t\tconst modelResolution = await this.resolveSessionModel(services, sessionOptions, existingSession);\n\t\tconst { model } = modelResolution;\n\t\tconst thinkingLevel = this.resolveSessionThinkingLevel(\n\t\t\tservices,\n\t\t\tactiveSession,\n\t\t\texistingSession,\n\t\t\tsessionOptions.thinkingLevel,\n\t\t\tmodel,\n\t\t);\n\n\t\tconst defaultActiveToolNames = getDefaultActiveToolNames(\n\t\t\tservices.settingsManager.getEnableSubagents(),\n\t\t\tsessionOptions.enableLspTools ?? services.settingsManager.getEnableLspTools(),\n\t\t);\n\t\tconst allowedToolNames = sessionOptions.tools ?? (sessionOptions.noTools === \"all\" ? [] : undefined);\n\t\tconst initialActiveToolNames = [\n\t\t\t...(sessionOptions.tools ?? (sessionOptions.noTools ? [] : defaultActiveToolNames)),\n\t\t];\n\t\tconst extensionRunnerRef: ExtensionRunnerReference = {};\n\t\tconst agent = this.createCoreAgent(services, activeSession, model, thinkingLevel, extensionRunnerRef);\n\n\t\tif (hasExistingSession) {\n\t\t\tagent.state.messages = existingSession.messages;\n\t\t\tif (!hasThinkingEntry) activeSession.appendThinkingLevelChange(thinkingLevel);\n\t\t} else {\n\t\t\tif (model) activeSession.appendModelChange(model.provider, model.id);\n\t\t\tactiveSession.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\n\t\tconst subagentRunRegistry = this.createSubagentRunRegistry();\n\t\tconst subagentConfigRegistry = this.createSubagentConfigRegistry();\n\t\tconst hookOptions = this.options.hooks;\n\t\treturn {\n\t\t\tsession: new AgentSession({\n\t\t\t\tagent,\n\t\t\t\tsession: activeSession,\n\t\t\t\tsettingsManager: services.settingsManager,\n\t\t\t\tcwd: services.cwd,\n\t\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\t\tresourceLoader: services.resourceLoader,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t\ttoolOperations: sessionOptions.toolOperations,\n\t\t\t\tmodelRegistry: services.modelRegistry,\n\t\t\t\tinitialActiveToolNames,\n\t\t\t\tenableLspTools: sessionOptions.enableLspTools,\n\t\t\t\texcludedToolNames: sessionOptions.excludedTools,\n\t\t\t\tallowedToolNames,\n\t\t\t\tsubagentRunner: this.createEmbeddedSubagentRunner(\n\t\t\t\t\tservices,\n\t\t\t\t\tsessionOptions.excludedTools ?? [],\n\t\t\t\t\tsubagentRunRegistry,\n\t\t\t\t),\n\t\t\t\tsubagentRunRegistry,\n\t\t\t\tsubagentConfigRegistry,\n\t\t\t\ttrustProjectAgents: sessionOptions.trustProjectAgents,\n\t\t\t\tlspConfiguration: lspResult.configuration,\n\t\t\t\tlspConnectionFactories: sessionOptions.lspConnectionFactories,\n\t\t\t\tresolveLspConfiguration: resolveSessionLspConfiguration,\n\t\t\t\tonLspConfigurationDiagnostics: (nextDiagnostics) => {\n\t\t\t\t\tthis.setLspConfigurationDiagnostics(nextDiagnostics);\n\t\t\t\t},\n\t\t\t\textensionRunnerRef,\n\t\t\t\tsessionStartEvent,\n\t\t\t\tloadedHooks: hookResolution.loadedHooks,\n\t\t\t\tresolveHooks: async () => {\n\t\t\t\t\tconst nextResolution = await this.loadSessionHooks(services, resolvedOptions, discoverProjectHooks);\n\t\t\t\t\tthis.setHookConfigurationDiagnostics(nextResolution.diagnostics);\n\t\t\t\t\treturn nextResolution.loadedHooks;\n\t\t\t\t},\n\t\t\t\thookRunOptions: hookOptions\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tallowedHttpHookUrls: hookOptions.allowedHttpHookUrls,\n\t\t\t\t\t\t\thttpHookAllowedEnvVars: hookOptions.httpHookAllowedEnvVars,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t\tonHookDiagnostic: (diagnostic) => this.addHookDiagnostic(diagnostic),\n\t\t\t}),\n\t\t\tservices,\n\t\t\tbaseDiagnostics,\n\t\t\thookDiagnostics: hookResolution.diagnostics,\n\t\t\tlspDiagnostics,\n\t\t\tmodelFallbackMessage: modelResolution.fallbackMessage,\n\t\t};\n\t}\n\n\tprivate apply(result: BuiltAgentSession): void {\n\t\tthis._session = result.session;\n\t\tthis._services = result.services;\n\t\tthis._baseDiagnostics = result.baseDiagnostics;\n\t\tthis._hookConfigurationDiagnostics = result.hookDiagnostics;\n\t\tthis._hookRuntimeDiagnostics = [];\n\t\tthis._lspDiagnostics = result.lspDiagnostics;\n\t\tthis.refreshDiagnostics();\n\t\tthis._modelFallbackMessage = result.modelFallbackMessage;\n\t}\n\n\tprivate refreshDiagnostics(): void {\n\t\tthis._diagnostics = [\n\t\t\t...this._baseDiagnostics,\n\t\t\t...this._hookConfigurationDiagnostics,\n\t\t\t...this._hookRuntimeDiagnostics,\n\t\t\t...this._lspDiagnostics,\n\t\t];\n\t}\n\n\tprivate setLspConfigurationDiagnostics(diagnostics: readonly LspConfigurationSourceDiagnostic[]): void {\n\t\tthis._lspDiagnostics = formatLspConfigurationDiagnostics(diagnostics);\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate setHookConfigurationDiagnostics(diagnostics: readonly GripAgentDiagnostic[]): void {\n\t\tthis._hookConfigurationDiagnostics = [...diagnostics];\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate addHookDiagnostic(diagnostic: HookDiagnostic): void {\n\t\tthis._hookRuntimeDiagnostics.push(formatHookDiagnostic(diagnostic));\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate shouldValidateSessionCwdOnHost(): boolean {\n\t\tconst backendInfo = this.borrowedToolOperations?.getBackendInfo?.();\n\t\treturn backendInfo === undefined || backendInfo.type === \"local\";\n\t}\n\n\tasync createAgentSession(options: CreateGripAgentSessionOptions = {}): Promise<AgentSession> {\n\t\tconst initialSession = options.session ?? (await this.sessionManager.create());\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(initialSession, initialSession.getCwd());\n\t\t}\n\t\tthis.apply(await this.buildAgentSession(initialSession, options.sessionStartEvent));\n\t\treturn this.session;\n\t}\n\n\tget runtime(): GripAgent {\n\t\tif (!this._session) {\n\t\t\tthrow new Error(\"GripAgent session has not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this;\n\t}\n\n\tget services(): GripAgentServices {\n\t\tif (!this._services) {\n\t\t\tthrow new Error(\"GripAgent services have not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this._services;\n\t}\n\n\tget session(): AgentSession {\n\t\tif (!this._session) {\n\t\t\tthrow new Error(\"GripAgent session has not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this._session;\n\t}\n\n\tget modelFallbackMessage(): string | undefined {\n\t\treturn this._modelFallbackMessage;\n\t}\n\n\tget settingsManager(): SettingsManager {\n\t\treturn this.services.settingsManager;\n\t}\n\n\tget modelRegistry(): ModelRegistry {\n\t\treturn this.services.modelRegistry;\n\t}\n\n\tget resourceLoader(): ResourceLoader {\n\t\treturn this.services.resourceLoader;\n\t}\n\n\tget diagnostics(): readonly GripAgentDiagnostic[] {\n\t\treturn this._diagnostics;\n\t}\n\n\tget currentCwd(): string {\n\t\treturn this.services.cwd;\n\t}\n\n\tsetRebindSession(rebindSession?: (session: AgentSession) => Promise<void>): void {\n\t\tthis.rebindSession = rebindSession;\n\t}\n\n\tsetBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void {\n\t\tthis.beforeSessionInvalidate = beforeSessionInvalidate;\n\t}\n\n\tprivate async emitBeforeSwitch(\n\t\treason: SessionSwitchReason,\n\t\ttargetSessionReference?: string,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst runner = this.session.extensionRunner;\n\t\tif (!runner.hasHandlers(\"session_before_switch\")) {\n\t\t\treturn { cancelled: false };\n\t\t}\n\n\t\tconst result = await runner.emit({\n\t\t\ttype: \"session_before_switch\",\n\t\t\treason,\n\t\t\ttargetSessionReference,\n\t\t\ttargetSessionFile: targetSessionReference,\n\t\t});\n\t\treturn { cancelled: result?.cancel === true };\n\t}\n\n\tprivate async emitBeforeFork(\n\t\tentryId: string,\n\t\toptions: ForkPreparationOptions,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst runner = this.session.extensionRunner;\n\t\tif (!runner.hasHandlers(\"session_before_fork\")) {\n\t\t\treturn { cancelled: false };\n\t\t}\n\n\t\tconst result = await runner.emit({\n\t\t\ttype: \"session_before_fork\",\n\t\t\tentryId,\n\t\t\t...options,\n\t\t});\n\t\treturn { cancelled: result?.cancel === true };\n\t}\n\n\tprivate async flushSession(session: AgentSession): Promise<void> {\n\t\tconst flushPendingSync = (session.session as { flushPendingSync?: () => Promise<void> }).flushPendingSync;\n\t\tif (flushPendingSync) {\n\t\t\tawait flushPendingSync.call(session.session);\n\t\t}\n\t}\n\n\tprivate async replaceCurrentSession(\n\t\tresult: BuiltAgentSession,\n\t\treason: SessionShutdownReason,\n\t\ttargetSessionReference: string | undefined,\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>,\n\t): Promise<void> {\n\t\tconst previousSession = this.session;\n\t\ttry {\n\t\t\tawait previousSession.emitHookSessionEnd(\n\t\t\t\treason === \"new\" ? \"clear\" : reason === \"resume\" ? \"resume\" : \"other\",\n\t\t\t);\n\t\t\tawait emitSessionShutdownEvent(previousSession.extensionRunner, {\n\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\treason,\n\t\t\t\ttargetSessionReference,\n\t\t\t\ttargetSessionFile: targetSessionReference,\n\t\t\t});\n\t\t\tawait this.flushSession(previousSession);\n\t\t\tthis.beforeSessionInvalidate?.();\n\t\t} catch (error) {\n\t\t\tawait result.session.dispose();\n\t\t\tthrow error;\n\t\t}\n\t\tawait previousSession.dispose();\n\t\tthis.apply(result);\n\t\tawait this.finishSessionReplacement(withSession);\n\t}\n\n\tprivate async finishSessionReplacement(withSession?: (ctx: ReplacedSessionContext) => Promise<void>): Promise<void> {\n\t\tif (this.rebindSession) {\n\t\t\tawait this.rebindSession(this.session);\n\t\t}\n\t\tif (withSession) {\n\t\t\tawait withSession(this.session.createReplacedSessionContext());\n\t\t}\n\t}\n\n\tasync switchSession(\n\t\tsessionPath: string,\n\t\toptions?: GripAgentSwitchSessionOptions,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"resume\", sessionPath);\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.openReference(sessionPath, { cwdOverride: options?.cwdOverride });\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(nextSession, this.services.cwd);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"resume\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"resume\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false };\n\t}\n\n\tasync changeDirectory(cwd: string): Promise<ExtensionSessionActionResult> {\n\t\tif (!existsSync(cwd) || !statSync(cwd).isDirectory()) {\n\t\t\tthrow new Error(`Directory does not exist: ${cwd}`);\n\t\t}\n\n\t\tconst currentSession = this.session;\n\t\tconst persistedSession = currentSession.session;\n\t\tconst previousCwd = persistedSession.getCwd();\n\t\tconst sessionReference = currentSession.sessionReference;\n\t\tawait this.flushSession(currentSession);\n\t\tpersistedSession.setCwd(cwd);\n\n\t\tlet result: BuiltAgentSession;\n\t\ttry {\n\t\t\tresult = await this.buildAgentSession(persistedSession, {\n\t\t\t\ttype: \"session_start\",\n\t\t\t\treason: \"resume\",\n\t\t\t\tpreviousSessionReference: sessionReference,\n\t\t\t\tpreviousSessionFile: sessionReference,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tpersistedSession.setCwd(previousCwd);\n\t\t\tthrow error;\n\t\t}\n\t\ttry {\n\t\t\tawait this.replaceCurrentSession(result, \"resume\", sessionReference);\n\t\t} catch (error) {\n\t\t\tif (this._session === currentSession) persistedSession.setCwd(previousCwd);\n\t\t\tthrow error;\n\t\t}\n\t\treturn { cancelled: false };\n\t}\n\n\tasync newSession(options?: ExtensionNewSessionOptions): Promise<ExtensionSessionActionResult> {\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"new\");\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.create({\n\t\t\tid: options?.id,\n\t\t\tparentSession: options?.parentSession,\n\t\t});\n\n\t\tif (options?.setup) {\n\t\t\tawait options.setup(nextSession);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"new\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"new\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false };\n\t}\n\n\tasync fork(entryId: string, options?: ExtensionForkOptions): Promise<GripAgentForkResult> {\n\t\tconst position = options?.position ?? \"before\";\n\t\tconst beforeResult = await this.emitBeforeFork(entryId, { position });\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn { cancelled: true };\n\t\t}\n\t\tlet targetLeafId: string | null;\n\t\tlet selectedText: string | undefined;\n\n\t\tconst activeAgentSession = this.session;\n\t\tconst selectedEntry = activeAgentSession.session.getEntry(entryId);\n\t\tif (!selectedEntry) {\n\t\t\tthrow new Error(\"Invalid entry ID for forking\");\n\t\t}\n\n\t\tif (position === \"at\") {\n\t\t\ttargetLeafId = selectedEntry.id;\n\t\t} else {\n\t\t\tif (selectedEntry.type !== \"message\" || selectedEntry.message.role !== \"user\") {\n\t\t\t\tthrow new Error(\"Invalid entry ID for forking\");\n\t\t\t}\n\t\t\ttargetLeafId = selectedEntry.parentId;\n\t\t\tselectedText = extractUserMessageText(selectedEntry.message.content);\n\t\t}\n\n\t\tconst previousSessionReference = activeAgentSession.sessionReference;\n\t\tconst activeSession = activeAgentSession.session;\n\t\tlet nextSession: Session;\n\t\ttry {\n\t\t\tnextSession = await activeSession.forkSubSession(targetLeafId);\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof Error && error.message === \"Session manager unavailable\")) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tnextSession = await this.sessionManager.forkSession(activeSession, targetLeafId);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"fork\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"fork\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false, selectedText };\n\t}\n\n\tasync importFromJsonl(inputPath: string, cwdOverride?: string): Promise<ExtensionSessionActionResult> {\n\t\tconst resolvedPath = resolve(inputPath);\n\t\tif (!existsSync(resolvedPath)) {\n\t\t\tthrow new SessionImportFileNotFoundError(resolvedPath);\n\t\t}\n\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"resume\", resolvedPath);\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.importJsonl(resolvedPath, { cwdOverride: cwdOverride });\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(nextSession, this.services.cwd);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"resume\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"resume\", nextSession.getSessionReference());\n\t\treturn { cancelled: false };\n\t}\n\tasync runMode(options: RunGripAgentModeOptions = {}): Promise<void> {\n\t\tconst mode = options.mode ?? this._mode;\n\t\tif (mode === \"embedded\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (mode !== \"interactive\" && !this.session.model) {\n\t\t\tconsole.error(chalk.red(formatNoModelsAvailableMessage()));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tif (options.startupBenchmark && mode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(\"Error: GRIP_STARTUP_BENCHMARK only supports interactive mode\"));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tif (mode === \"rpc\") {\n\t\t\tprintTimings();\n\t\t\tawait runRpcMode(this);\n\t\t\treturn;\n\t\t}\n\n\t\tif (mode === \"interactive\") {\n\t\t\tawait runInteractiveAppMode(this, this.modelFallbackMessage, options);\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(this, {\n\t\t\tmode: mode === \"json\" ? \"json\" : \"text\",\n\t\t\tmessages: options.initialMessages,\n\t\t\tinitialMessage: options.initialMessage,\n\t\t\tinitialImages: options.initialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t}\n\n\tcreateSession(): Session | Promise<Session> {\n\t\treturn this.sessionManager.create();\n\t}\n\n\topenSessionReference(reference: string): Session | Promise<Session> {\n\t\treturn this.sessionManager.openReference(reference);\n\t}\n\n\tcontinueRecentSession(): Session | Promise<Session> {\n\t\treturn this.sessionManager.continueRecent();\n\t}\n\n\tforkSessionFrom(reference: string): Session | Promise<Session> {\n\t\treturn this.sessionManager.forkFrom(reference);\n\t}\n\n\tasync listSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]> {\n\t\treturn this.sessionManager.list(onProgress);\n\t}\n\n\tasync listAllSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]> {\n\t\treturn this.sessionManager.listAll(onProgress);\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= this.disposeRuntime();\n\t\treturn this.disposePromise;\n\t}\n\n\tprivate async disposeRuntime(): Promise<void> {\n\t\ttry {\n\t\t\tif (this._session) {\n\t\t\t\tawait this.session.emitHookSessionEnd(\"prompt_input_exit\");\n\t\t\t\tawait emitSessionShutdownEvent(this.session.extensionRunner, {\n\t\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\t\treason: \"quit\",\n\t\t\t\t});\n\t\t\t\tawait this.flushSession(this.session);\n\t\t\t\tthis.beforeSessionInvalidate?.();\n\t\t\t\tawait this.session.dispose();\n\t\t\t\tthis._session = undefined;\n\t\t\t}\n\t\t} finally {\n\t\t\tif (this.options.ownsToolOperations && !this.toolOperationsDisposed) {\n\t\t\t\tthis.toolOperationsDisposed = true;\n\t\t\t\tawait this.options.toolOperations?.dispose?.();\n\t\t\t}\n\t\t\tfor (const cleanup of this.subagentCleanupCallbacks) await cleanup();\n\t\t\tthis.subagentCleanupCallbacks.clear();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"grip-agent.js","sourceRoot":"","sources":["../../src/core/grip-agent.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { join, posix, resolve, win32 } from \"node:path\";\nimport { Agent, type ThinkingLevel } from \"@greppleai/grip-agent-core\";\nimport {\n\tclampThinkingLevel,\n\ttype ImageContent,\n\ttype Message,\n\ttype Model,\n\trefreshModelCatalog,\n\tstreamSimple,\n\ttype TextContent,\n} from \"@greppleai/grip-ai\";\nimport type { TuiMode } from \"@greppleai/grip-tui\";\nimport chalk from \"chalk\";\nimport { getAgentDir, VERSION } from \"../config.ts\";\nimport { InteractiveMode } from \"../modes/interactive/interactive-mode.ts\";\nimport { stopThemeWatcher } from \"../modes/interactive/theme/theme.ts\";\nimport { runPrintMode } from \"../modes/print-mode.ts\";\nimport { runRpcMode } from \"../modes/rpc/rpc-mode.ts\";\nimport { stripFrontmatter } from \"../utils/frontmatter.ts\";\nimport { getGripUserAgent } from \"../utils/grip-user-agent.ts\";\nimport { AgentSession, getDefaultActiveToolNames } from \"./agent-session.ts\";\nimport { formatNoModelsAvailableMessage } from \"./auth-guidance.ts\";\nimport { AuthStorage } from \"./auth-storage.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ExtensionRunner } from \"./extensions/runner.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport type {\n\tExtensionForkOptions,\n\tExtensionNewSessionOptions,\n\tExtensionSessionActionResult,\n\tExtensionSwitchSessionOptions,\n\tReplacedSessionContext,\n\tSessionForkPosition,\n\tSessionShutdownReason,\n\tSessionStartEvent,\n\tSessionSwitchReason,\n\tToolDefinition,\n} from \"./extensions/types.ts\";\nimport { freezeLoadedHooks, loadHooks } from \"./hooks/config.ts\";\nimport { canonicalProjectHookCwd, canonicalProjectHookIdentity } from \"./hooks/trust-store.ts\";\nimport type { HookDiagnostic, LoadedHooks } from \"./hooks/types.ts\";\nimport {\n\ttype LoadLspConfigurationResult,\n\ttype LspConfigurationInput,\n\ttype LspConfigurationSourceDiagnostic,\n\tloadLspConfiguration,\n} from \"./lsp/config-loader.ts\";\nimport type { LspConnectionFactoryRegistry } from \"./lsp/transport.ts\";\nimport { convertToLlm } from \"./messages.ts\";\nimport { ModelRegistry } from \"./model-registry.ts\";\nimport { findInitialModel, type ResolveCliModelResult, resolveCliModel, type ScopedModel } from \"./model-resolver.ts\";\nimport { restoreStdout, takeOverStdout } from \"./output-guard.ts\";\nimport { DefaultResourceLoader, type DefaultResourceLoaderOptions, type ResourceLoader } from \"./resource-loader.ts\";\nimport { InMemorySessionManager } from \"./session/in-memory-session-manager.ts\";\nimport { getDefaultSessionDir } from \"./session/jsonl-helpers.ts\";\nimport { LocalSessionManager } from \"./session/local-session-manager.ts\";\nimport type { Session } from \"./session/session.ts\";\nimport type { SessionManager } from \"./session/session-manager.ts\";\nimport type { SessionContext, SessionInfo, SessionListProgress } from \"./session/types.ts\";\nimport { assertSessionCwdExists } from \"./session-cwd.ts\";\nimport { InMemorySettingsStorage, SettingsManager } from \"./settings-manager.ts\";\nimport type { Skill } from \"./skills.ts\";\nimport { getSourceBackend } from \"./source-info.ts\";\nimport { isInstallTelemetryEnabled } from \"./telemetry.ts\";\nimport { printTimings, time } from \"./timings.ts\";\nimport {\n\ttype BorrowedToolOperations,\n\tborrowToolOperations,\n\ttype ToolBackendInfo,\n\ttype ToolOperations,\n} from \"./tools/operations.ts\";\nimport type {\n\tSubagentConfigRegistry,\n\tSubagentRunInfo,\n\tSubagentRunner,\n\tSubagentRunOutcome,\n\tSubagentRunRegistry,\n\tSubagentRunRequest,\n} from \"./tools/subagent.ts\";\n\nexport type GripAgentDiagnosticType = \"info\" | \"warning\" | \"error\";\nexport type GripAgentToolExclusionMode = \"all\" | \"builtin\";\n\nexport interface GripAgentDiagnostic {\n\ttype: GripAgentDiagnosticType;\n\tmessage: string;\n\t/** Whether this diagnostic must prevent application startup. Errors are fatal by default. */\n\tfatal?: boolean;\n}\n\nexport function isFatalGripAgentDiagnostic(diagnostic: GripAgentDiagnostic): boolean {\n\treturn diagnostic.type === \"error\" && diagnostic.fatal !== false;\n}\n\nexport interface GripAgentServices {\n\tcwd: string;\n\tagentDir: string;\n\tauthStorage: AuthStorage;\n\tsettingsManager: SettingsManager;\n\tmodelRegistry: ModelRegistry;\n\tresourceLoader: ResourceLoader;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\ninterface HookDiscoveryResolution {\n\tcwd: string;\n\tdiscoverProjectHooks: boolean;\n}\n\ninterface SessionHookResolution {\n\tloadedHooks: LoadedHooks | undefined;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\ninterface SessionModelResolution {\n\tmodel: Model<any> | undefined;\n\tfallbackMessage: string | undefined;\n}\n\ninterface ExtensionRunnerReference {\n\tcurrent?: ExtensionRunner;\n}\n\ninterface BuiltAgentSession {\n\tsession: AgentSession;\n\tservices: GripAgentServices;\n\tbaseDiagnostics: GripAgentDiagnostic[];\n\thookDiagnostics: GripAgentDiagnostic[];\n\tlspDiagnostics: GripAgentDiagnostic[];\n\tmodelFallbackMessage?: string;\n}\n\nfunction formatLspConfigurationDiagnostics(\n\tdiagnostics: readonly LspConfigurationSourceDiagnostic[],\n): GripAgentDiagnostic[] {\n\treturn diagnostics.map((diagnostic) => ({\n\t\ttype: diagnostic.severity,\n\t\t...(diagnostic.severity === \"error\" ? { fatal: false } : {}),\n\t\tmessage: `LSP configuration (${diagnostic.source}) ${diagnostic.path}: ${diagnostic.message}`,\n\t}));\n}\n\nfunction formatHookDiagnostic(diagnostic: HookDiagnostic): GripAgentDiagnostic {\n\tconst source = diagnostic.source ? ` (${diagnostic.source.kind}: ${diagnostic.source.path})` : \"\";\n\treturn {\n\t\ttype: diagnostic.level,\n\t\tfatal: false,\n\t\tmessage: `Hook ${diagnostic.code}${source}: ${diagnostic.message}`,\n\t};\n}\n\nexport interface GripAgentHooksOptions {\n\t/** Disable automatic trusted-user grip and Claude-compatible hook discovery. Default: true. */\n\tenabled?: boolean;\n\t/** Override the home directory used for Claude compatibility discovery; native hooks use the active agentDir. */\n\thome?: string;\n\t/** Host ceiling for HTTP hook destinations. */\n\tallowedHttpHookUrls?: readonly string[];\n\t/** Host ceiling for HTTP hook header environment interpolation. */\n\thttpHookAllowedEnvVars?: readonly string[];\n\t/** Host-injected snapshot; cloned and frozen before use instead of reading settings files. */\n\tsnapshot?: LoadedHooks;\n}\n\nexport interface GripAgentSessionOptions {\n\tmodel?: Model<any>;\n\tthinkingLevel?: ThinkingLevel;\n\tscopedModels?: ScopedModel[];\n\ttools?: string[];\n\t/** Expose configured LSP tools by default; overrides enableLspTools in settings for this session. */\n\tenableLspTools?: boolean;\n\texcludedTools?: string[];\n\t/** Trust project-local subagent presets without an interactive host prompt. */\n\ttrustProjectAgents?: boolean;\n\t/** Explicit host trust grant for project grip and Claude-compatible hooks. Ignored by non-local backends. */\n\ttrustProjectHooks?: boolean;\n\t/** Optional canonical repository identity constraining the project-hook trust grant. */\n\ttrustedProjectHooksIdentity?: string;\n\t/** LSP layers or files supplied by a CLI, SDK, or host. Host scope is the default. */\n\tlsp?: LspConfigurationInput | LspConfigurationInput[];\n\t/** Host-provided factories referenced by LSP transports with type `connection`. */\n\tlspConnectionFactories?: LspConnectionFactoryRegistry;\n\t/** Trust active LSP transports from project settings after applying a host-controlled approval policy. */\n\ttrustProjectLspTransports?: boolean;\n\tnoTools?: GripAgentToolExclusionMode;\n\tcustomTools?: ToolDefinition[];\n\ttoolOperations?: ToolOperations;\n}\n\nexport interface ResolveGripAgentSessionOptionsContext {\n\tservices: GripAgentServices;\n\tsession: Session;\n\tsessionStartEvent?: SessionStartEvent;\n}\n\nexport interface ResolveGripAgentSessionOptionsResult extends GripAgentSessionOptions {\n\tdiagnostics?: GripAgentDiagnostic[];\n}\n\nexport interface CreateGripAgentOptions extends GripAgentSessionOptions {\n\t/** Dispose toolOperations with this top-level GripAgent. Child sessions and subagents always borrow it. */\n\townsToolOperations?: boolean;\n\t/** Runtime mode. Default: embedded SDK usage. */\n\tmode?: GripAgentAppMode;\n\tcwd?: string;\n\tagentDir?: string;\n\t/** Claude-compatible host-local hooks, or false to disable them. */\n\thooks?: false | GripAgentHooksOptions;\n\t/** Session lifecycle/discovery backend. Default: local JSONL sessions for cwd. */\n\tsessionManager?: SessionManager;\n\t/** Shared auth storage reused across runtime recreation. */\n\tauthStorage?: AuthStorage;\n\tsettingsManager?: SettingsManager;\n\tmodelRegistry?: ModelRegistry;\n\textensionFlagValues?: Map<string, boolean | string>;\n\tresourceLoader?: ResourceLoader;\n\tresourceLoaderOptions?: Omit<DefaultResourceLoaderOptions, \"cwd\" | \"agentDir\" | \"settingsManager\">;\n\tresolveSessionOptions?: (\n\t\tcontext: ResolveGripAgentSessionOptionsContext,\n\t) => Promise<ResolveGripAgentSessionOptionsResult> | ResolveGripAgentSessionOptionsResult;\n}\n\nexport interface CreateGripAgentSessionOptions {\n\t/** Initial active conversation state. Default: sessionManager.create(). */\n\tsession?: Session;\n\tsessionStartEvent?: SessionStartEvent;\n}\nexport interface GripAgentSwitchSessionOptions extends ExtensionSwitchSessionOptions {\n\tcwdOverride?: string;\n}\n\nexport interface GripAgentForkResult extends ExtensionSessionActionResult {\n\tselectedText?: string;\n}\n\nexport interface GripAgentStdioOptions {\n\tmode: GripAgentAppMode;\n}\n\ninterface GripAgentResolvedDependencies {\n\tcwd: string;\n\tagentDir: string;\n\tsessionManager: SessionManager;\n\tauthStorage: AuthStorage;\n}\n\ninterface ForkPreparationOptions {\n\tposition: SessionForkPosition;\n}\n\ninterface MutableSubagentRunRegistry extends SubagentRunRegistry {\n\tupsert(run: SubagentRunInfo): void;\n\tget(runId: string): SubagentRunInfo | undefined;\n}\n\ninterface EmbeddedSubagentChildState {\n\tchild: GripAgent;\n\tsession: AgentSession;\n\trun: SubagentRunInfo;\n\ttoolOperations: ToolOperations;\n\tbackendIdentity: string;\n}\n\ninterface EmbeddedSubagentRuntimeState {\n\tnextRunNumber: number;\n\tchildren: Map<string, EmbeddedSubagentChildState>;\n}\n\ninterface EmbeddedSubagentRunnerContext {\n\tservices: GripAgentServices;\n\texcludedTools: string[];\n\tregistry: MutableSubagentRunRegistry;\n\truntime: EmbeddedSubagentRuntimeState;\n}\n\ninterface EmbeddedSubagentRequestContext {\n\tresolvedModel: ResolveCliModelResult | undefined;\n\ttoolOperations: ToolOperations;\n\tbackendInfo: ToolBackendInfo | undefined;\n\tbackendIdentity: string;\n}\n\ntype EmbeddedSubagentRequestResolution =\n\t| { context: EmbeddedSubagentRequestContext; failure?: never }\n\t| { context?: never; failure: SubagentRunOutcome };\n\ninterface PreparedEmbeddedSubagentChild {\n\tchildState: EmbeddedSubagentChildState;\n\trunId: string;\n\tfailure?: never;\n}\n\ntype EmbeddedSubagentChildPreparation =\n\t| PreparedEmbeddedSubagentChild\n\t| { childState?: never; runId?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentChildCreation =\n\t| { childState: EmbeddedSubagentChildState; failure?: never }\n\t| { childState?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentSkillSelection =\n\t| { skills: Skill[]; failure?: never }\n\t| { skills?: never; failure: SubagentRunOutcome };\n\ntype EmbeddedSubagentSkillPreload =\n\t| { blocks: string[]; failure?: never }\n\t| { blocks?: never; failure: SubagentRunOutcome };\n\ninterface EmbeddedSubagentOutputState {\n\tlastOutput: string | undefined;\n}\n\nexport type GripAgentAppMode = \"embedded\" | \"interactive\" | \"print\" | \"json\" | \"rpc\";\n\nexport interface RunGripAgentModeOptions {\n\tmode?: GripAgentAppMode;\n\tmigratedProviders?: string[];\n\tinitialMessage?: string;\n\tinitialImages?: ImageContent[];\n\tinitialMessages?: string[];\n\tverbose?: boolean;\n\t/** Startup-only interactive renderer choice. Defaults to the persisted setting. */\n\ttuiMode?: TuiMode;\n\tstartupBenchmark?: boolean;\n}\n\nexport interface GripAgentRuntimeHost {\n\treadonly services: GripAgentServices;\n\treadonly session: AgentSession;\n\treadonly diagnostics: readonly GripAgentDiagnostic[];\n\treadonly modelFallbackMessage: string | undefined;\n\tsetRebindSession(rebindSession?: (session: AgentSession) => Promise<void>): void;\n\tsetBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void;\n\tchangeDirectory(cwd: string): Promise<ExtensionSessionActionResult>;\n\tswitchSession(sessionPath: string, options?: GripAgentSwitchSessionOptions): Promise<ExtensionSessionActionResult>;\n\tnewSession(options?: ExtensionNewSessionOptions): Promise<ExtensionSessionActionResult>;\n\tfork(entryId: string, options?: ExtensionForkOptions): Promise<GripAgentForkResult>;\n\timportFromJsonl(inputPath: string, cwdOverride?: string): Promise<ExtensionSessionActionResult>;\n\tlistSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tlistAllSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]>;\n\tdispose(): Promise<void>;\n}\n\nexport class SessionImportFileNotFoundError extends Error {\n\treadonly filePath: string;\n\n\tconstructor(filePath: string) {\n\t\tsuper(`File not found: ${filePath}`);\n\t\tthis.name = \"SessionImportFileNotFoundError\";\n\t\tthis.filePath = filePath;\n\t}\n}\n\nfunction isSubagentCwdConfined(cwd: string, operations: ToolOperations, backend: ToolBackendInfo | undefined): boolean {\n\tif (backend?.type === \"local\") return true;\n\tif (backend === undefined) return posix.normalize(cwd) === posix.normalize(operations.cwd);\n\tconst pathApi =\n\t\tbackend?.type === \"remote\" && backend.configured && backend.workspace.pathFlavor === \"windows\" ? win32 : posix;\n\tconst relative = pathApi.relative(pathApi.normalize(operations.cwd), pathApi.normalize(cwd));\n\treturn (\n\t\trelative === \"\" ||\n\t\t(relative !== \"..\" && !relative.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(relative))\n\t);\n}\n\nfunction extractUserMessageText(content: string | (TextContent | ImageContent)[]): string {\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\n\treturn content\n\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\");\n}\n\nfunction blockImagesInMessage(message: Message): Message {\n\tif (message.role !== \"user\" && message.role !== \"toolResult\") return message;\n\tconst { content } = message;\n\tif (!Array.isArray(content) || !content.some((part) => part.type === \"image\")) return message;\n\tconst filteredContent = content\n\t\t.map((part) => (part.type === \"image\" ? { type: \"text\" as const, text: \"Image reading is disabled.\" } : part))\n\t\t.filter(\n\t\t\t(part, index, parts) =>\n\t\t\t\t!(\n\t\t\t\t\tpart.type === \"text\" &&\n\t\t\t\t\tpart.text === \"Image reading is disabled.\" &&\n\t\t\t\t\tindex > 0 &&\n\t\t\t\t\tparts[index - 1].type === \"text\" &&\n\t\t\t\t\t(parts[index - 1] as TextContent).text === \"Image reading is disabled.\"\n\t\t\t\t),\n\t\t);\n\treturn { ...message, content: filteredContent };\n}\n\nfunction asLspInputs(input: LspConfigurationInput | LspConfigurationInput[] | undefined): LspConfigurationInput[] {\n\treturn input === undefined ? [] : Array.isArray(input) ? input : [input];\n}\n\nfunction getAttributionHeaders(\n\tmodel: Model<any>,\n\tsettingsManager: SettingsManager,\n\tsessionId?: string,\n): Record<string, string> | undefined {\n\tif (\n\t\tsessionId &&\n\t\t(model.provider === \"opencode\" || model.provider === \"opencode-go\" || model.baseUrl.includes(\"opencode.ai\"))\n\t) {\n\t\treturn { \"x-opencode-session\": sessionId, \"x-opencode-client\": \"grip\" };\n\t}\n\n\tif (!isInstallTelemetryEnabled(settingsManager)) {\n\t\treturn undefined;\n\t}\n\n\tif (model.provider === \"openrouter\" || model.baseUrl.includes(\"openrouter.ai\")) {\n\t\treturn {\n\t\t\t\"HTTP-Referer\": \"https://github.com/greppleai/grip\",\n\t\t\t\"User-Agent\": getGripUserAgent(VERSION),\n\t\t\t\"X-OpenRouter-Title\": \"grip\",\n\t\t\t\"X-OpenRouter-Categories\": \"cli-agent\",\n\t\t};\n\t}\n\n\tif (\n\t\tmodel.provider === \"cloudflare-workers-ai\" ||\n\t\tmodel.provider === \"cloudflare-ai-gateway\" ||\n\t\tmodel.baseUrl.includes(\"api.cloudflare.com\") ||\n\t\tmodel.baseUrl.includes(\"gateway.ai.cloudflare.com\")\n\t) {\n\t\treturn {\n\t\t\t\"User-Agent\": \"grip-coding-agent\",\n\t\t};\n\t}\n\n\treturn undefined;\n}\n\nfunction applyExtensionFlagValues(\n\tresourceLoader: ResourceLoader,\n\textensionFlagValues: Map<string, boolean | string> | undefined,\n): GripAgentDiagnostic[] {\n\tif (!extensionFlagValues) {\n\t\treturn [];\n\t}\n\n\tconst diagnostics: GripAgentDiagnostic[] = [];\n\tconst extensionsResult = resourceLoader.getExtensions();\n\tconst registeredFlags = new Map<string, { type: \"boolean\" | \"string\" }>();\n\tfor (const extension of extensionsResult.extensions) {\n\t\tfor (const [name, flag] of extension.flags) {\n\t\t\tregisteredFlags.set(name, { type: flag.type });\n\t\t}\n\t}\n\n\tconst unknownFlags: string[] = [];\n\tfor (const [name, value] of extensionFlagValues) {\n\t\tconst flag = registeredFlags.get(name);\n\t\tif (!flag) {\n\t\t\tunknownFlags.push(name);\n\t\t\tcontinue;\n\t\t}\n\t\tif (flag.type === \"boolean\") {\n\t\t\textensionsResult.runtime.flagValues.set(name, true);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof value === \"string\") {\n\t\t\textensionsResult.runtime.flagValues.set(name, value);\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `Extension flag \"--${name}\" requires a value`,\n\t\t});\n\t}\n\n\tif (unknownFlags.length > 0) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"error\",\n\t\t\tmessage: `Unknown option${unknownFlags.length === 1 ? \"\" : \"s\"}: ${unknownFlags.map((name) => `--${name}`).join(\", \")}`,\n\t\t});\n\t}\n\n\treturn diagnostics;\n}\n\nasync function runInteractiveAppMode(\n\truntimeHost: GripAgentRuntimeHost,\n\tmodelFallbackMessage: string | undefined,\n\toptions: RunGripAgentModeOptions,\n): Promise<void> {\n\tconst interactiveMode = new InteractiveMode(runtimeHost, {\n\t\tmigratedProviders: options.migratedProviders,\n\t\tmodelFallbackMessage,\n\t\tinitialMessage: options.initialMessage,\n\t\tinitialImages: options.initialImages,\n\t\tinitialMessages: options.initialMessages,\n\t\tverbose: options.verbose,\n\t\ttuiMode: options.tuiMode,\n\t});\n\tif (options.startupBenchmark) {\n\t\tawait interactiveMode.init();\n\t\ttime(\"interactiveMode.init\");\n\t\t// Give the TUI's stdin handler a brief chance to consume terminal query replies\n\t\t// (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.\n\t\tawait new Promise((resolve) => setTimeout(resolve, 150));\n\t\tinteractiveMode.stop();\n\t\tstopThemeWatcher();\n\t\tprintTimings();\n\t\tif (process.stdout.writableLength > 0) {\n\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t}\n\t\tif (process.stderr.writableLength > 0) {\n\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t}\n\t\treturn;\n\t}\n\tprintTimings();\n\tawait interactiveMode.run();\n}\n\n/**\n * Application-level composition root for grip's coding agent runtime.\n *\n * GripAgent owns common app services, the session lifecycle backend, and the\n * current active AgentSession. Conversation behavior stays in AgentSession;\n * session lifecycle/discovery stays in SessionManager implementations.\n */\nexport class GripAgent {\n\tprivate readonly initialCwd: string;\n\treadonly agentDir: string;\n\treadonly sessionManager: SessionManager;\n\treadonly authStorage: AuthStorage;\n\n\tprivate readonly options: CreateGripAgentOptions;\n\tprivate _mode: GripAgentAppMode;\n\tprivate _session?: AgentSession;\n\tprivate _services?: GripAgentServices;\n\tprivate _diagnostics: GripAgentDiagnostic[] = [];\n\tprivate _baseDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _hookConfigurationDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _hookRuntimeDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _lspDiagnostics: GripAgentDiagnostic[] = [];\n\tprivate _modelFallbackMessage?: string;\n\tprivate rebindSession?: (session: AgentSession) => Promise<void>;\n\tprivate beforeSessionInvalidate?: () => void;\n\tprivate readonly borrowedToolOperations: BorrowedToolOperations | undefined;\n\tprivate toolOperationsDisposed = false;\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly subagentCleanupCallbacks = new Set<() => Promise<void>>();\n\n\tprivate constructor(options: CreateGripAgentOptions, resolved: GripAgentResolvedDependencies) {\n\t\tthis.options = options;\n\t\tthis.borrowedToolOperations = options.toolOperations ? borrowToolOperations(options.toolOperations) : undefined;\n\t\tthis._mode = options.mode ?? \"embedded\";\n\t\tthis.initialCwd = resolved.cwd;\n\t\tthis.agentDir = resolved.agentDir;\n\t\tthis.sessionManager = resolved.sessionManager;\n\t\tthis.authStorage = resolved.authStorage;\n\t}\n\n\tstatic setupStdio(options: GripAgentStdioOptions): void {\n\t\tif (options.mode !== \"embedded\" && options.mode !== \"interactive\") {\n\t\t\ttakeOverStdout();\n\t\t}\n\t}\n\n\tstatic async create(options: CreateGripAgentOptions = {}): Promise<GripAgent> {\n\t\tconst cwd = options.cwd ?? process.cwd();\n\t\tconst agentDir = options.agentDir ?? getAgentDir();\n\t\tconst sessionManager =\n\t\t\toptions.sessionManager ?? new LocalSessionManager({ cwd, sessionDir: getDefaultSessionDir(cwd, agentDir) });\n\t\tconst authStorage = options.authStorage ?? AuthStorage.create(join(agentDir, \"auth.json\"));\n\t\treturn new GripAgent(options, { cwd, agentDir, sessionManager, authStorage });\n\t}\n\n\tget mode(): GripAgentAppMode {\n\t\treturn this._mode;\n\t}\n\n\tget cwd(): string {\n\t\treturn this._services?.cwd ?? this.initialCwd;\n\t}\n\n\tasync readPipedStdin(): Promise<string | undefined> {\n\t\tif (this._mode === \"embedded\" || this._mode === \"rpc\" || process.stdin.isTTY) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst stdinContent = await new Promise<string | undefined>((resolve) => {\n\t\t\tlet data = \"\";\n\t\t\tprocess.stdin.setEncoding(\"utf8\");\n\t\t\tprocess.stdin.on(\"data\", (chunk) => {\n\t\t\t\tdata += chunk;\n\t\t\t});\n\t\t\tprocess.stdin.on(\"end\", () => {\n\t\t\t\tresolve(data.trim() || undefined);\n\t\t\t});\n\t\t\tprocess.stdin.resume();\n\t\t});\n\n\t\tif (stdinContent !== undefined && this._mode === \"interactive\") {\n\t\t\tthis._mode = \"print\";\n\t\t}\n\t\treturn stdinContent;\n\t}\n\n\tprivate async createServices(cwd: string): Promise<GripAgentServices> {\n\t\tconst settingsManager = this.options.settingsManager ?? SettingsManager.create(cwd, this.agentDir);\n\t\tif (process.env.GRIP_MODEL_CATALOG_URL) {\n\t\t\tawait refreshModelCatalog().catch(() => undefined);\n\t\t}\n\t\tconst modelRegistry =\n\t\t\tthis.options.modelRegistry ?? ModelRegistry.create(this.authStorage, join(this.agentDir, \"models.json\"));\n\t\tconst resourceLoader =\n\t\t\tthis.options.resourceLoader ??\n\t\t\tnew DefaultResourceLoader({\n\t\t\t\t...(this.options.resourceLoaderOptions ?? {}),\n\t\t\t\tcwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tsettingsManager,\n\t\t\t\ttoolOperations: this.options.resourceLoaderOptions?.toolOperations\n\t\t\t\t\t? borrowToolOperations(this.options.resourceLoaderOptions.toolOperations)\n\t\t\t\t\t: this.borrowedToolOperations,\n\t\t\t});\n\t\tawait resourceLoader.reload();\n\n\t\tconst diagnostics: GripAgentDiagnostic[] = [];\n\t\tconst extensionsResult = resourceLoader.getExtensions();\n\t\tfor (const { name, config, extensionPath } of extensionsResult.runtime.pendingProviderRegistrations) {\n\t\t\ttry {\n\t\t\t\tmodelRegistry.registerProvider(name, config);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: `Extension \"${extensionPath}\" error: ${message}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\textensionsResult.runtime.pendingProviderRegistrations = [];\n\t\tdiagnostics.push(...applyExtensionFlagValues(resourceLoader, this.options.extensionFlagValues));\n\n\t\treturn {\n\t\t\tcwd,\n\t\t\tagentDir: this.agentDir,\n\t\t\tauthStorage: this.authStorage,\n\t\t\tsettingsManager,\n\t\t\tmodelRegistry,\n\t\t\tresourceLoader,\n\t\t\tdiagnostics,\n\t\t};\n\t}\n\tprivate createSubagentRunRegistry(): MutableSubagentRunRegistry {\n\t\tconst runs = new Map<string, SubagentRunInfo>();\n\t\treturn {\n\t\t\tlist: () => Array.from(runs.values()).sort((a, b) => a.createdAt.localeCompare(b.createdAt)),\n\t\t\tupsert: (run) => runs.set(run.runId, structuredClone(run)),\n\t\t\tget: (runId) => runs.get(runId),\n\t\t};\n\t}\n\n\tprivate createSubagentConfigRegistry(): SubagentConfigRegistry {\n\t\tconst configs = new Map<string, Parameters<SubagentConfigRegistry[\"upsert\"]>[0]>();\n\t\treturn {\n\t\t\tlist: () => Array.from(configs.values()).sort((a, b) => a.createdAt.localeCompare(b.createdAt)),\n\t\t\tupsert: (config) => configs.set(config.name, structuredClone(config)),\n\t\t\tget: (name) => configs.get(name),\n\t\t};\n\t}\n\n\tprivate resolveEmbeddedSubagentRequest(\n\t\trequest: SubagentRunRequest,\n\t\tservices: GripAgentServices,\n\t): EmbeddedSubagentRequestResolution {\n\t\tconst resolvedModel = request.model\n\t\t\t? resolveCliModel({ cliModel: request.model, modelRegistry: services.modelRegistry })\n\t\t\t: undefined;\n\t\tif (resolvedModel?.error) return { failure: { exitCode: 1, stderr: resolvedModel.error } };\n\t\tconst toolOperations = request.toolOperations;\n\t\tif (!toolOperations) {\n\t\t\treturn { failure: { exitCode: 1, stderr: \"Subagents require explicit workspace tool operations\" } };\n\t\t}\n\t\tconst backendInfo = toolOperations.getBackendInfo?.();\n\t\tif (backendInfo?.type === \"remote\" && !backendInfo.configured) {\n\t\t\treturn { failure: { exitCode: 1, stderr: \"Subagents cannot run with an unconfigured remote backend\" } };\n\t\t}\n\t\tif (!isSubagentCwdConfined(request.cwd, toolOperations, backendInfo)) {\n\t\t\treturn {\n\t\t\t\tfailure: {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: `Sandboxed subagent cwd must stay within the sandbox workspace root: ${toolOperations.cwd}`,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tconst backendIdentity = JSON.stringify(backendInfo ?? { type: \"unknown\", cwd: toolOperations.cwd });\n\t\treturn { context: { resolvedModel, toolOperations, backendInfo, backendIdentity } };\n\t}\n\n\tprivate selectEmbeddedSubagentSkills(\n\t\trequest: SubagentRunRequest,\n\t\tservices: GripAgentServices,\n\t): EmbeddedSubagentSkillSelection {\n\t\tconst requestedSkills = request.skills ?? [];\n\t\tconst loadedSkills = services.resourceLoader.getSkills().skills;\n\t\tconst skillsByName = new Map<string, Skill>();\n\t\tfor (const skill of loadedSkills) {\n\t\t\tif (!skillsByName.has(skill.name)) skillsByName.set(skill.name, skill);\n\t\t}\n\t\tconst missingSkills: string[] = [];\n\t\tconst skills: Skill[] = [];\n\t\tfor (const name of requestedSkills) {\n\t\t\tconst skill = skillsByName.get(name);\n\t\t\tif (skill) skills.push(skill);\n\t\t\telse missingSkills.push(name);\n\t\t}\n\t\tif (missingSkills.length > 0) {\n\t\t\treturn { failure: { exitCode: 1, stderr: `Unknown subagent skill(s): ${missingSkills.join(\", \")}` } };\n\t\t}\n\t\treturn { skills };\n\t}\n\n\tprivate async loadEmbeddedSubagentSkillContent(\n\t\tskill: Skill,\n\t\ttoolOperations: ToolOperations,\n\t\tbackendInfo: ToolBackendInfo | undefined,\n\t): Promise<string> {\n\t\tif (skill.content !== undefined) return skill.content;\n\t\tif (backendInfo?.type === \"local\") return readFileSync(skill.filePath, \"utf-8\");\n\t\tif (getSourceBackend(skill.sourceInfo) === \"local\") {\n\t\t\tthrow new Error(\"local skill files are unavailable to a sandboxed subagent\");\n\t\t}\n\t\treturn (await toolOperations.readFile(skill.filePath)).toString(\"utf-8\");\n\t}\n\n\tprivate async preloadEmbeddedSubagentSkills(\n\t\tskills: Skill[],\n\t\tcontext: EmbeddedSubagentRequestContext,\n\t): Promise<EmbeddedSubagentSkillPreload> {\n\t\tconst blocks: string[] = [];\n\t\tfor (const skill of skills) {\n\t\t\ttry {\n\t\t\t\tconst content = await this.loadEmbeddedSubagentSkillContent(\n\t\t\t\t\tskill,\n\t\t\t\t\tcontext.toolOperations,\n\t\t\t\t\tcontext.backendInfo,\n\t\t\t\t);\n\t\t\t\tblocks.push(\n\t\t\t\t\t`<preloaded-skill name=\"${skill.name}\" location=\"${skill.filePath}\">\\nReferences are relative to ${skill.baseDir}.\\n\\n${stripFrontmatter(content).trim()}\\n</preloaded-skill>`,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tfailure: {\n\t\t\t\t\t\texitCode: 1,\n\t\t\t\t\t\tstderr: `Failed to preload subagent skill ${skill.name}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn { blocks };\n\t}\n\n\tprivate async createEmbeddedSubagentChild(\n\t\trequest: SubagentRunRequest,\n\t\trequestContext: EmbeddedSubagentRequestContext,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t\trunId: string,\n\t): Promise<EmbeddedSubagentChildCreation> {\n\t\tconst settingsStorage = new InMemorySettingsStorage();\n\t\tsettingsStorage.withLock(\"global\", () =>\n\t\t\tJSON.stringify(runnerContext.services.settingsManager.getGlobalSettings()),\n\t\t);\n\t\tsettingsStorage.withLock(\"project\", () =>\n\t\t\tJSON.stringify(runnerContext.services.settingsManager.getProjectSettings()),\n\t\t);\n\t\tconst settingsManager = SettingsManager.fromStorage(settingsStorage);\n\t\tconst selection = this.selectEmbeddedSubagentSkills(request, runnerContext.services);\n\t\tif (selection.failure) return selection;\n\t\tconst preload = await this.preloadEmbeddedSubagentSkills(selection.skills, requestContext);\n\t\tif (preload.failure) return preload;\n\n\t\tconst childExcludedTools = new Set([\n\t\t\t\"subagent\",\n\t\t\t\"subagent_runs\",\n\t\t\t\"create_subagent\",\n\t\t\t...runnerContext.excludedTools,\n\t\t]);\n\t\tconst requestedTools = request.tools ?? getDefaultActiveToolNames();\n\t\tconst skillTools = selection.skills.flatMap((skill) => skill.tools ?? []);\n\t\tconst tools = Array.from(new Set([...requestedTools, ...skillTools])).filter(\n\t\t\t(name) => !childExcludedTools.has(name),\n\t\t);\n\t\tconst child = await GripAgent.create({\n\t\t\tmode: \"embedded\",\n\t\t\tcwd: request.cwd,\n\t\t\tagentDir: runnerContext.services.agentDir,\n\t\t\tsessionManager: new InMemorySessionManager(request.cwd),\n\t\t\tauthStorage: runnerContext.services.authStorage,\n\t\t\tmodelRegistry: runnerContext.services.modelRegistry,\n\t\t\tsettingsManager,\n\t\t\tmodel: requestContext.resolvedModel?.model,\n\t\t\tthinkingLevel: requestContext.resolvedModel?.thinkingLevel,\n\t\t\ttools,\n\t\t\texcludedTools: Array.from(childExcludedTools),\n\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\tresourceLoaderOptions: {\n\t\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\t\tnoExtensions: true,\n\t\t\t\tnoSkills: true,\n\t\t\t\tnoRules: true,\n\t\t\t\tnoPromptTemplates: true,\n\t\t\t\tnoThemes: true,\n\t\t\t\tnoContextFiles: true,\n\t\t\t\tsystemPrompt: \"\",\n\t\t\t\tappendSystemPrompt: [],\n\t\t\t\tsystemPromptOverride: () => undefined,\n\t\t\t\tappendSystemPromptOverride: () => [request.systemPrompt, ...preload.blocks],\n\t\t\t},\n\t\t});\n\t\tconst session = await child.createAgentSession();\n\t\tconst now = new Date().toISOString();\n\t\tconst run: SubagentRunInfo = {\n\t\t\trunId,\n\t\t\tsessionReference: session.sessionReference,\n\t\t\tstatus: \"running\",\n\t\t\tagent: request.agent,\n\t\t\ttask: request.task,\n\t\t\tcwd: request.cwd,\n\t\t\tmodel: request.model,\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tconst childState: EmbeddedSubagentChildState = {\n\t\t\tchild,\n\t\t\tsession,\n\t\t\trun,\n\t\t\ttoolOperations: requestContext.toolOperations,\n\t\t\tbackendIdentity: requestContext.backendIdentity,\n\t\t};\n\t\trunnerContext.runtime.children.set(runId, childState);\n\t\trunnerContext.registry.upsert(run);\n\t\treturn { childState };\n\t}\n\n\tprivate async prepareEmbeddedSubagentChild(\n\t\trequest: SubagentRunRequest,\n\t\trequestContext: EmbeddedSubagentRequestContext,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t): Promise<EmbeddedSubagentChildPreparation> {\n\t\tconst continuedRunId = request.continueSession;\n\t\tconst childState = continuedRunId ? runnerContext.runtime.children.get(continuedRunId) : undefined;\n\t\tif (request.continueSession && !childState) {\n\t\t\treturn { failure: { exitCode: 1, stderr: `Unknown subagent run id: ${request.continueSession}` } };\n\t\t}\n\t\tif (\n\t\t\tchildState &&\n\t\t\t(childState.toolOperations !== requestContext.toolOperations ||\n\t\t\t\tchildState.backendIdentity !== requestContext.backendIdentity)\n\t\t) {\n\t\t\tawait childState.child.dispose();\n\t\t\trunnerContext.runtime.children.delete(childState.run.runId);\n\t\t\tchildState.run = { ...childState.run, status: \"failed\", updatedAt: new Date().toISOString() };\n\t\t\trunnerContext.registry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\tfailure: {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: \"The parent workspace backend changed; start a new subagent instead of continuing this run\",\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (!childState) {\n\t\t\tconst runId = `subagent:${runnerContext.runtime.nextRunNumber++}`;\n\t\t\tconst creation = await this.createEmbeddedSubagentChild(request, requestContext, runnerContext, runId);\n\t\t\tif (creation.failure) return creation;\n\t\t\treturn { childState: creation.childState, runId };\n\t\t}\n\t\tchildState.run = {\n\t\t\t...childState.run,\n\t\t\tstatus: \"running\",\n\t\t\ttask: request.task,\n\t\t\tupdatedAt: new Date().toISOString(),\n\t\t};\n\t\trunnerContext.registry.upsert(childState.run);\n\t\treturn { childState, runId: childState.run.runId };\n\t}\n\n\tprivate subscribeToEmbeddedSubagentRun(\n\t\tchildState: EmbeddedSubagentChildState,\n\t\trequest: SubagentRunRequest,\n\t\toutput: EmbeddedSubagentOutputState,\n\t\tregistry: MutableSubagentRunRegistry,\n\t): () => void {\n\t\treturn childState.session.subscribe((event) => {\n\t\t\tif (event.type !== \"message_end\") return;\n\t\t\tif (event.message.role === \"assistant\" || event.message.role === \"toolResult\") {\n\t\t\t\trequest.onMessage(event.message as Message);\n\t\t\t}\n\t\t\tif (event.message.role !== \"assistant\") return;\n\t\t\toutput.lastOutput =\n\t\t\t\tevent.message.content\n\t\t\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t\t\t.map((part) => part.text)\n\t\t\t\t\t.join(\"\\n\") || output.lastOutput;\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tlastOutput: output.lastOutput,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t});\n\t}\n\n\tprivate async executeEmbeddedSubagentRun(\n\t\trequest: SubagentRunRequest,\n\t\tpreparation: PreparedEmbeddedSubagentChild,\n\t\tregistry: MutableSubagentRunRegistry,\n\t): Promise<SubagentRunOutcome> {\n\t\tconst { childState, runId } = preparation;\n\t\tconst session = childState.session;\n\t\tconst output: EmbeddedSubagentOutputState = { lastOutput: childState.run.lastOutput };\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tconst abort = (): void => {\n\t\t\tvoid session.abort();\n\t\t};\n\t\ttry {\n\t\t\tunsubscribe = this.subscribeToEmbeddedSubagentRun(childState, request, output, registry);\n\t\t\tif (request.signal?.aborted) {\n\t\t\t\treturn {\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\tstderr: \"Subagent was aborted\",\n\t\t\t\t\trunId,\n\t\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t\t};\n\t\t\t}\n\t\t\trequest.signal?.addEventListener(\"abort\", abort, { once: true });\n\t\t\tawait session.prompt(request.prompt);\n\t\t\tconst status = request.signal?.aborted ? \"failed\" : \"completed\";\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tstatus,\n\t\t\t\tlastOutput: output.lastOutput,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\texitCode: request.signal?.aborted ? 1 : 0,\n\t\t\t\tstderr: \"\",\n\t\t\t\trunId,\n\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tchildState.run = {\n\t\t\t\t...childState.run,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t};\n\t\t\tregistry.upsert(childState.run);\n\t\t\treturn {\n\t\t\t\texitCode: 1,\n\t\t\t\tstderr: error instanceof Error ? error.message : String(error),\n\t\t\t\trunId,\n\t\t\t\tsessionReference: session.sessionReference,\n\t\t\t};\n\t\t} finally {\n\t\t\trequest.signal?.removeEventListener(\"abort\", abort);\n\t\t\tunsubscribe?.();\n\t\t}\n\t}\n\n\tprivate async runEmbeddedSubagent(\n\t\trequest: SubagentRunRequest,\n\t\trunnerContext: EmbeddedSubagentRunnerContext,\n\t): Promise<SubagentRunOutcome> {\n\t\tconst resolution = this.resolveEmbeddedSubagentRequest(request, runnerContext.services);\n\t\tif (resolution.failure) return resolution.failure;\n\t\tconst preparation = await this.prepareEmbeddedSubagentChild(request, resolution.context, runnerContext);\n\t\tif (preparation.failure) return preparation.failure;\n\t\treturn this.executeEmbeddedSubagentRun(request, preparation, runnerContext.registry);\n\t}\n\n\tprivate createEmbeddedSubagentRunner(\n\t\tservices: GripAgentServices,\n\t\texcludedTools: string[],\n\t\tregistry: MutableSubagentRunRegistry,\n\t): SubagentRunner {\n\t\tconst runtime: EmbeddedSubagentRuntimeState = { nextRunNumber: 1, children: new Map() };\n\t\tconst runnerContext: EmbeddedSubagentRunnerContext = { services, excludedTools, registry, runtime };\n\t\tconst cleanup = async (): Promise<void> => {\n\t\t\tfor (const { child } of runtime.children.values()) await child.dispose();\n\t\t\truntime.children.clear();\n\t\t};\n\t\tthis.subagentCleanupCallbacks.add(cleanup);\n\t\treturn (request) => this.runEmbeddedSubagent(request, runnerContext);\n\t}\n\n\tprivate shouldDiscoverProjectHooks(resolvedOptions: ResolveGripAgentSessionOptionsResult): boolean {\n\t\tconst hookOperations = resolvedOptions.toolOperations ?? this.borrowedToolOperations;\n\t\tconst customHookOperationsSupplied =\n\t\t\tresolvedOptions.toolOperations !== undefined || this.borrowedToolOperations !== undefined;\n\t\tconst hookBackend = hookOperations?.getBackendInfo?.();\n\t\tconst trustProjectHooks = resolvedOptions.trustProjectHooks ?? this.options.trustProjectHooks;\n\t\treturn trustProjectHooks === true && (!customHookOperationsSupplied || hookBackend?.type === \"local\");\n\t}\n\n\tprivate resolveHookDiscovery(\n\t\tservices: GripAgentServices,\n\t\tresolvedOptions: ResolveGripAgentSessionOptionsResult,\n\t\tdiagnostics: GripAgentDiagnostic[],\n\t\tdiscoverProjectHooks: boolean,\n\t): HookDiscoveryResolution {\n\t\tconst trustedIdentity = resolvedOptions.trustedProjectHooksIdentity ?? this.options.trustedProjectHooksIdentity;\n\t\tlet cwd = services.cwd;\n\t\tif (!discoverProjectHooks) return { cwd, discoverProjectHooks };\n\t\ttry {\n\t\t\tcwd = canonicalProjectHookCwd(services.cwd);\n\t\t\tif (trustedIdentity && canonicalProjectHookIdentity(cwd) !== trustedIdentity) {\n\t\t\t\tdiscoverProjectHooks = false;\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: \"Project hook trust identity changed before hook loading; project hooks were not loaded\",\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tdiscoverProjectHooks = false;\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\",\n\t\t\t\tmessage: `Unable to canonicalize project hooks path; project hooks were not loaded: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t});\n\t\t}\n\t\treturn { cwd, discoverProjectHooks };\n\t}\n\n\tprivate async loadSessionHooks(\n\t\tservices: GripAgentServices,\n\t\tresolvedOptions: ResolveGripAgentSessionOptionsResult,\n\t\tdiscoverProjectHooks: boolean,\n\t): Promise<SessionHookResolution> {\n\t\tconst diagnostics: GripAgentDiagnostic[] = [];\n\t\tconst hookOptions = this.options.hooks;\n\t\tconst discovery = this.resolveHookDiscovery(services, resolvedOptions, diagnostics, discoverProjectHooks);\n\t\tif (hookOptions === false || hookOptions?.enabled === false) {\n\t\t\treturn { loadedHooks: undefined, diagnostics };\n\t\t}\n\t\tconst loadedHooks = hookOptions?.snapshot\n\t\t\t? freezeLoadedHooks(hookOptions.snapshot)\n\t\t\t: await loadHooks({\n\t\t\t\t\tcwd: discovery.cwd,\n\t\t\t\t\thome: hookOptions?.home,\n\t\t\t\t\tagentDir: services.agentDir,\n\t\t\t\t\tsources: discovery.discoverProjectHooks ? [\"user\", \"project\", \"local\"] : [\"user\"],\n\t\t\t\t});\n\t\tdiagnostics.push(...loadedHooks.diagnostics.map(formatHookDiagnostic));\n\t\treturn { loadedHooks, diagnostics };\n\t}\n\n\tprivate mergeSessionOptions(resolvedOptions: ResolveGripAgentSessionOptionsResult): GripAgentSessionOptions {\n\t\treturn {\n\t\t\tmodel: resolvedOptions.model ?? this.options.model,\n\t\t\tthinkingLevel: resolvedOptions.thinkingLevel ?? this.options.thinkingLevel,\n\t\t\tscopedModels: resolvedOptions.scopedModels ?? this.options.scopedModels,\n\t\t\ttools: resolvedOptions.tools ?? this.options.tools,\n\t\t\tenableLspTools: resolvedOptions.enableLspTools ?? this.options.enableLspTools,\n\t\t\texcludedTools: resolvedOptions.excludedTools ?? this.options.excludedTools,\n\t\t\tnoTools: resolvedOptions.noTools ?? this.options.noTools,\n\t\t\tcustomTools: resolvedOptions.customTools ?? this.options.customTools,\n\t\t\ttoolOperations: resolvedOptions.toolOperations\n\t\t\t\t? borrowToolOperations(resolvedOptions.toolOperations)\n\t\t\t\t: this.borrowedToolOperations,\n\t\t\ttrustProjectAgents: resolvedOptions.trustProjectAgents ?? this.options.trustProjectAgents,\n\t\t\ttrustProjectHooks: resolvedOptions.trustProjectHooks ?? this.options.trustProjectHooks,\n\t\t\ttrustProjectLspTransports: resolvedOptions.trustProjectLspTransports ?? this.options.trustProjectLspTransports,\n\t\t\tlspConnectionFactories: resolvedOptions.lspConnectionFactories ?? this.options.lspConnectionFactories,\n\t\t};\n\t}\n\n\tprivate resolveSessionLspConfiguration(\n\t\tservices: GripAgentServices,\n\t\tsessionOptions: GripAgentSessionOptions,\n\t\tinputs: LspConfigurationInput[],\n\t): Promise<LoadLspConfigurationResult> {\n\t\tif (sessionOptions.toolOperations?.getBackendInfo?.().type === \"remote\") {\n\t\t\treturn Promise.resolve({ configuration: { enabled: false, servers: [] }, diagnostics: [] });\n\t\t}\n\t\treturn loadLspConfiguration({\n\t\t\tsettingsManager: services.settingsManager,\n\t\t\tcwd: services.cwd,\n\t\t\tagentDir: services.agentDir,\n\t\t\tinputs,\n\t\t\ttrustProjectLspTransports: sessionOptions.trustProjectLspTransports,\n\t\t});\n\t}\n\n\tprivate async resolveSessionModel(\n\t\tservices: GripAgentServices,\n\t\tsessionOptions: GripAgentSessionOptions,\n\t\texistingSession: SessionContext,\n\t): Promise<SessionModelResolution> {\n\t\tlet model = sessionOptions.model;\n\t\tlet fallbackMessage: string | undefined;\n\t\tif (model) model = services.modelRegistry.find(model.provider, model.id) ?? model;\n\t\tif (!model && existingSession.messages.length > 0 && existingSession.model) {\n\t\t\tconst restoredModel = services.modelRegistry.find(\n\t\t\t\texistingSession.model.provider,\n\t\t\t\texistingSession.model.modelId,\n\t\t\t);\n\t\t\tif (restoredModel && services.modelRegistry.hasConfiguredAuth(restoredModel)) model = restoredModel;\n\t\t\tif (!model)\n\t\t\t\tfallbackMessage = `Could not restore model ${existingSession.model.provider}/${existingSession.model.modelId}`;\n\t\t}\n\t\tif (model) return { model, fallbackMessage };\n\t\tconst result = await findInitialModel({\n\t\t\tscopedModels: [],\n\t\t\tisContinuing: existingSession.messages.length > 0,\n\t\t\tdefaultProvider: services.settingsManager.getDefaultProvider(),\n\t\t\tdefaultModelId: services.settingsManager.getDefaultModel(),\n\t\t\tdefaultThinkingLevel: services.settingsManager.getDefaultThinkingLevel(),\n\t\t\tmodelRegistry: services.modelRegistry,\n\t\t});\n\t\tmodel = result.model;\n\t\tif (!model) fallbackMessage = formatNoModelsAvailableMessage();\n\t\telse if (fallbackMessage) fallbackMessage += `. Using ${model.provider}/${model.id}`;\n\t\treturn { model, fallbackMessage };\n\t}\n\n\tprivate resolveSessionThinkingLevel(\n\t\tservices: GripAgentServices,\n\t\tactiveSession: Session,\n\t\texistingSession: SessionContext,\n\t\tconfiguredLevel: ThinkingLevel | undefined,\n\t\tmodel: Model<any> | undefined,\n\t): ThinkingLevel {\n\t\tconst hasExistingSession = existingSession.messages.length > 0;\n\t\tconst hasThinkingEntry = activeSession.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\t\tlet thinkingLevel = configuredLevel;\n\t\tif (thinkingLevel === undefined && hasExistingSession) {\n\t\t\tthinkingLevel = hasThinkingEntry\n\t\t\t\t? (existingSession.thinkingLevel as ThinkingLevel)\n\t\t\t\t: (services.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL);\n\t\t}\n\t\tthinkingLevel ??= services.settingsManager.getDefaultThinkingLevel() ?? DEFAULT_THINKING_LEVEL;\n\t\treturn model ? (clampThinkingLevel(model, thinkingLevel) as ThinkingLevel) : \"off\";\n\t}\n\n\tprivate createCoreAgent(\n\t\tservices: GripAgentServices,\n\t\tactiveSession: Session,\n\t\tmodel: Model<any> | undefined,\n\t\tthinkingLevel: ThinkingLevel,\n\t\textensionRunnerRef: ExtensionRunnerReference,\n\t): Agent {\n\t\treturn new Agent({\n\t\t\tinitialState: { systemPrompt: \"\", model, thinkingLevel, tools: [] },\n\t\t\tconvertToLlm: (messages) => {\n\t\t\t\tconst converted = convertToLlm(messages);\n\t\t\t\treturn services.settingsManager.getBlockImages() ? converted.map(blockImagesInMessage) : converted;\n\t\t\t},\n\t\t\tstreamFn: async (streamModel, context, options) => {\n\t\t\t\tconst auth = await services.modelRegistry.getApiKeyAndHeaders(streamModel);\n\t\t\t\tif (!auth.ok) throw new Error(auth.error);\n\t\t\t\tconst providerRetrySettings = services.settingsManager.getProviderRetrySettings();\n\t\t\t\tconst timeoutMs =\n\t\t\t\t\toptions?.timeoutMs ??\n\t\t\t\t\tproviderRetrySettings.timeoutMs ??\n\t\t\t\t\t(streamModel.api === \"openai-codex-responses\"\n\t\t\t\t\t\t? services.settingsManager.getHttpIdleTimeoutMs()\n\t\t\t\t\t\t: undefined);\n\t\t\t\tconst websocketConnectTimeoutMs =\n\t\t\t\t\toptions?.websocketConnectTimeoutMs ?? services.settingsManager.getWebSocketConnectTimeoutMs();\n\t\t\t\tconst attributionHeaders = getAttributionHeaders(streamModel, services.settingsManager, options?.sessionId);\n\t\t\t\tlet headers =\n\t\t\t\t\tattributionHeaders || auth.headers || options?.headers\n\t\t\t\t\t\t? { ...attributionHeaders, ...auth.headers, ...options?.headers }\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\tif (runner?.hasHandlers(\"before_provider_headers\")) {\n\t\t\t\t\theaders = await runner.emitBeforeProviderHeaders(headers ?? {});\n\t\t\t\t}\n\t\t\t\treturn streamSimple(streamModel, context, {\n\t\t\t\t\t...options,\n\t\t\t\t\tapiKey: auth.apiKey,\n\t\t\t\t\ttimeoutMs,\n\t\t\t\t\twebsocketConnectTimeoutMs,\n\t\t\t\t\tmaxRetries: options?.maxRetries ?? providerRetrySettings.maxRetries,\n\t\t\t\t\tmaxRetryDelayMs: options?.maxRetryDelayMs ?? providerRetrySettings.maxRetryDelayMs,\n\t\t\t\t\theaders,\n\t\t\t\t});\n\t\t\t},\n\t\t\tonPayload: async (payload) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\treturn runner?.hasHandlers(\"before_provider_request\") ? runner.emitBeforeProviderRequest(payload) : payload;\n\t\t\t},\n\t\t\tonResponse: async (response) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\tif (!runner?.hasHandlers(\"after_provider_response\")) return;\n\t\t\t\tawait runner.emit({ type: \"after_provider_response\", status: response.status, headers: response.headers });\n\t\t\t},\n\t\t\tsessionId: activeSession.getSessionId(),\n\t\t\ttransformContext: async (messages) => {\n\t\t\t\tconst runner = extensionRunnerRef.current;\n\t\t\t\treturn runner ? runner.emitContext(messages) : messages;\n\t\t\t},\n\t\t\tsteeringMode: services.settingsManager.getSteeringMode(),\n\t\t\tfollowUpMode: services.settingsManager.getFollowUpMode(),\n\t\t\ttransport: services.settingsManager.getTransport(),\n\t\t\tthinkingBudgets: services.settingsManager.getThinkingBudgets(),\n\t\t\tmaxRetryDelayMs: services.settingsManager.getProviderRetrySettings().maxRetryDelayMs,\n\t\t});\n\t}\n\n\tprivate async buildAgentSession(\n\t\tactiveSession: Session,\n\t\tsessionStartEvent?: SessionStartEvent,\n\t): Promise<BuiltAgentSession> {\n\t\tconst services = await this.createServices(activeSession.getCwd());\n\t\tconst diagnostics: GripAgentDiagnostic[] = [\n\t\t\t...services.diagnostics,\n\t\t\t...services.resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\ttype: \"error\" as const,\n\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t})),\n\t\t];\n\t\tconst resolvedOptions =\n\t\t\t(await this.options.resolveSessionOptions?.({ services, session: activeSession, sessionStartEvent })) ?? {};\n\t\tdiagnostics.push(...(resolvedOptions.diagnostics ?? []));\n\t\tconst discoverProjectHooks = this.shouldDiscoverProjectHooks(resolvedOptions);\n\t\tconst hookResolution = await this.loadSessionHooks(services, resolvedOptions, discoverProjectHooks);\n\t\tconst sessionOptions = this.mergeSessionOptions(resolvedOptions);\n\t\tconst lspInputs = [...asLspInputs(this.options.lsp), ...asLspInputs(resolvedOptions.lsp)];\n\t\tconst resolveSessionLspConfiguration = () =>\n\t\t\tthis.resolveSessionLspConfiguration(services, sessionOptions, lspInputs);\n\t\tconst lspResult = await resolveSessionLspConfiguration();\n\t\tconst lspDiagnostics = formatLspConfigurationDiagnostics(lspResult.diagnostics);\n\t\tconst baseDiagnostics = [...diagnostics];\n\n\t\tconst existingSession = activeSession.buildSessionContext();\n\t\tconst hasExistingSession = existingSession.messages.length > 0;\n\t\tconst hasThinkingEntry = activeSession.getBranch().some((entry) => entry.type === \"thinking_level_change\");\n\t\tconst modelResolution = await this.resolveSessionModel(services, sessionOptions, existingSession);\n\t\tconst { model } = modelResolution;\n\t\tconst thinkingLevel = this.resolveSessionThinkingLevel(\n\t\t\tservices,\n\t\t\tactiveSession,\n\t\t\texistingSession,\n\t\t\tsessionOptions.thinkingLevel,\n\t\t\tmodel,\n\t\t);\n\n\t\tconst defaultActiveToolNames = getDefaultActiveToolNames(\n\t\t\tservices.settingsManager.getEnableSubagents(),\n\t\t\tsessionOptions.enableLspTools ?? services.settingsManager.getEnableLspTools(),\n\t\t);\n\t\tconst allowedToolNames = sessionOptions.tools ?? (sessionOptions.noTools === \"all\" ? [] : undefined);\n\t\tconst initialActiveToolNames = [\n\t\t\t...(sessionOptions.tools ?? (sessionOptions.noTools ? [] : defaultActiveToolNames)),\n\t\t];\n\t\tconst extensionRunnerRef: ExtensionRunnerReference = {};\n\t\tconst agent = this.createCoreAgent(services, activeSession, model, thinkingLevel, extensionRunnerRef);\n\n\t\tif (hasExistingSession) {\n\t\t\tagent.state.messages = existingSession.messages;\n\t\t\tif (!hasThinkingEntry) activeSession.appendThinkingLevelChange(thinkingLevel);\n\t\t} else {\n\t\t\tif (model) activeSession.appendModelChange(model.provider, model.id);\n\t\t\tactiveSession.appendThinkingLevelChange(thinkingLevel);\n\t\t}\n\n\t\tconst subagentRunRegistry = this.createSubagentRunRegistry();\n\t\tconst subagentConfigRegistry = this.createSubagentConfigRegistry();\n\t\tconst hookOptions = this.options.hooks;\n\t\treturn {\n\t\t\tsession: new AgentSession({\n\t\t\t\tagent,\n\t\t\t\tsession: activeSession,\n\t\t\t\tsettingsManager: services.settingsManager,\n\t\t\t\tcwd: services.cwd,\n\t\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\t\tresourceLoader: services.resourceLoader,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t\ttoolOperations: sessionOptions.toolOperations,\n\t\t\t\tmodelRegistry: services.modelRegistry,\n\t\t\t\tinitialActiveToolNames,\n\t\t\t\tenableLspTools: sessionOptions.enableLspTools,\n\t\t\t\texcludedToolNames: sessionOptions.excludedTools,\n\t\t\t\tallowedToolNames,\n\t\t\t\tsubagentRunner: this.createEmbeddedSubagentRunner(\n\t\t\t\t\tservices,\n\t\t\t\t\tsessionOptions.excludedTools ?? [],\n\t\t\t\t\tsubagentRunRegistry,\n\t\t\t\t),\n\t\t\t\tsubagentRunRegistry,\n\t\t\t\tsubagentConfigRegistry,\n\t\t\t\ttrustProjectAgents: sessionOptions.trustProjectAgents,\n\t\t\t\tlspConfiguration: lspResult.configuration,\n\t\t\t\tlspConnectionFactories: sessionOptions.lspConnectionFactories,\n\t\t\t\tresolveLspConfiguration: resolveSessionLspConfiguration,\n\t\t\t\tonLspConfigurationDiagnostics: (nextDiagnostics) => {\n\t\t\t\t\tthis.setLspConfigurationDiagnostics(nextDiagnostics);\n\t\t\t\t},\n\t\t\t\textensionRunnerRef,\n\t\t\t\tsessionStartEvent,\n\t\t\t\tloadedHooks: hookResolution.loadedHooks,\n\t\t\t\tresolveHooks: async () => {\n\t\t\t\t\tconst nextResolution = await this.loadSessionHooks(services, resolvedOptions, discoverProjectHooks);\n\t\t\t\t\tthis.setHookConfigurationDiagnostics(nextResolution.diagnostics);\n\t\t\t\t\treturn nextResolution.loadedHooks;\n\t\t\t\t},\n\t\t\t\thookRunOptions: hookOptions\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tallowedHttpHookUrls: hookOptions.allowedHttpHookUrls,\n\t\t\t\t\t\t\thttpHookAllowedEnvVars: hookOptions.httpHookAllowedEnvVars,\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\t\tonHookDiagnostic: (diagnostic) => this.addHookDiagnostic(diagnostic),\n\t\t\t}),\n\t\t\tservices,\n\t\t\tbaseDiagnostics,\n\t\t\thookDiagnostics: hookResolution.diagnostics,\n\t\t\tlspDiagnostics,\n\t\t\tmodelFallbackMessage: modelResolution.fallbackMessage,\n\t\t};\n\t}\n\n\tprivate apply(result: BuiltAgentSession): void {\n\t\tthis._session = result.session;\n\t\tthis._services = result.services;\n\t\tthis._baseDiagnostics = result.baseDiagnostics;\n\t\tthis._hookConfigurationDiagnostics = result.hookDiagnostics;\n\t\tthis._hookRuntimeDiagnostics = [];\n\t\tthis._lspDiagnostics = result.lspDiagnostics;\n\t\tthis.refreshDiagnostics();\n\t\tthis._modelFallbackMessage = result.modelFallbackMessage;\n\t}\n\n\tprivate refreshDiagnostics(): void {\n\t\tthis._diagnostics = [\n\t\t\t...this._baseDiagnostics,\n\t\t\t...this._hookConfigurationDiagnostics,\n\t\t\t...this._hookRuntimeDiagnostics,\n\t\t\t...this._lspDiagnostics,\n\t\t];\n\t}\n\n\tprivate setLspConfigurationDiagnostics(diagnostics: readonly LspConfigurationSourceDiagnostic[]): void {\n\t\tthis._lspDiagnostics = formatLspConfigurationDiagnostics(diagnostics);\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate setHookConfigurationDiagnostics(diagnostics: readonly GripAgentDiagnostic[]): void {\n\t\tthis._hookConfigurationDiagnostics = [...diagnostics];\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate addHookDiagnostic(diagnostic: HookDiagnostic): void {\n\t\tthis._hookRuntimeDiagnostics.push(formatHookDiagnostic(diagnostic));\n\t\tthis.refreshDiagnostics();\n\t}\n\n\tprivate shouldValidateSessionCwdOnHost(): boolean {\n\t\tconst backendInfo = this.borrowedToolOperations?.getBackendInfo?.();\n\t\treturn backendInfo === undefined || backendInfo.type === \"local\";\n\t}\n\n\tasync createAgentSession(options: CreateGripAgentSessionOptions = {}): Promise<AgentSession> {\n\t\tconst initialSession = options.session ?? (await this.sessionManager.create());\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(initialSession, initialSession.getCwd());\n\t\t}\n\t\tthis.apply(await this.buildAgentSession(initialSession, options.sessionStartEvent));\n\t\treturn this.session;\n\t}\n\n\tget runtime(): GripAgent {\n\t\tif (!this._session) {\n\t\t\tthrow new Error(\"GripAgent session has not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this;\n\t}\n\n\tget services(): GripAgentServices {\n\t\tif (!this._services) {\n\t\t\tthrow new Error(\"GripAgent services have not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this._services;\n\t}\n\n\tget session(): AgentSession {\n\t\tif (!this._session) {\n\t\t\tthrow new Error(\"GripAgent session has not been created. Call createAgentSession() first.\");\n\t\t}\n\t\treturn this._session;\n\t}\n\n\tget modelFallbackMessage(): string | undefined {\n\t\treturn this._modelFallbackMessage;\n\t}\n\n\tget settingsManager(): SettingsManager {\n\t\treturn this.services.settingsManager;\n\t}\n\n\tget modelRegistry(): ModelRegistry {\n\t\treturn this.services.modelRegistry;\n\t}\n\n\tget resourceLoader(): ResourceLoader {\n\t\treturn this.services.resourceLoader;\n\t}\n\n\tget diagnostics(): readonly GripAgentDiagnostic[] {\n\t\treturn this._diagnostics;\n\t}\n\n\tget currentCwd(): string {\n\t\treturn this.services.cwd;\n\t}\n\n\tsetRebindSession(rebindSession?: (session: AgentSession) => Promise<void>): void {\n\t\tthis.rebindSession = rebindSession;\n\t}\n\n\tsetBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void {\n\t\tthis.beforeSessionInvalidate = beforeSessionInvalidate;\n\t}\n\n\tprivate async emitBeforeSwitch(\n\t\treason: SessionSwitchReason,\n\t\ttargetSessionReference?: string,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst runner = this.session.extensionRunner;\n\t\tif (!runner.hasHandlers(\"session_before_switch\")) {\n\t\t\treturn { cancelled: false };\n\t\t}\n\n\t\tconst result = await runner.emit({\n\t\t\ttype: \"session_before_switch\",\n\t\t\treason,\n\t\t\ttargetSessionReference,\n\t\t\ttargetSessionFile: targetSessionReference,\n\t\t});\n\t\treturn { cancelled: result?.cancel === true };\n\t}\n\n\tprivate async emitBeforeFork(\n\t\tentryId: string,\n\t\toptions: ForkPreparationOptions,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst runner = this.session.extensionRunner;\n\t\tif (!runner.hasHandlers(\"session_before_fork\")) {\n\t\t\treturn { cancelled: false };\n\t\t}\n\n\t\tconst result = await runner.emit({\n\t\t\ttype: \"session_before_fork\",\n\t\t\tentryId,\n\t\t\t...options,\n\t\t});\n\t\treturn { cancelled: result?.cancel === true };\n\t}\n\n\tprivate async flushSession(session: AgentSession): Promise<void> {\n\t\tconst flushPendingSync = (session.session as { flushPendingSync?: () => Promise<void> }).flushPendingSync;\n\t\tif (flushPendingSync) {\n\t\t\tawait flushPendingSync.call(session.session);\n\t\t}\n\t}\n\n\tprivate async replaceCurrentSession(\n\t\tresult: BuiltAgentSession,\n\t\treason: SessionShutdownReason,\n\t\ttargetSessionReference: string | undefined,\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>,\n\t): Promise<void> {\n\t\tconst previousSession = this.session;\n\t\ttry {\n\t\t\tawait previousSession.emitHookSessionEnd(\n\t\t\t\treason === \"new\" ? \"clear\" : reason === \"resume\" ? \"resume\" : \"other\",\n\t\t\t);\n\t\t\tawait emitSessionShutdownEvent(previousSession.extensionRunner, {\n\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\treason,\n\t\t\t\ttargetSessionReference,\n\t\t\t\ttargetSessionFile: targetSessionReference,\n\t\t\t});\n\t\t\tawait this.flushSession(previousSession);\n\t\t\tthis.beforeSessionInvalidate?.();\n\t\t} catch (error) {\n\t\t\tawait result.session.dispose();\n\t\t\tthrow error;\n\t\t}\n\t\tawait previousSession.dispose();\n\t\tthis.apply(result);\n\t\tawait this.finishSessionReplacement(withSession);\n\t}\n\n\tprivate async finishSessionReplacement(withSession?: (ctx: ReplacedSessionContext) => Promise<void>): Promise<void> {\n\t\tif (this.rebindSession) {\n\t\t\tawait this.rebindSession(this.session);\n\t\t}\n\t\tif (withSession) {\n\t\t\tawait withSession(this.session.createReplacedSessionContext());\n\t\t}\n\t}\n\n\tasync switchSession(\n\t\tsessionPath: string,\n\t\toptions?: GripAgentSwitchSessionOptions,\n\t): Promise<ExtensionSessionActionResult> {\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"resume\", sessionPath);\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.openReference(sessionPath, { cwdOverride: options?.cwdOverride });\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(nextSession, this.services.cwd);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"resume\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"resume\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false };\n\t}\n\n\tasync changeDirectory(cwd: string): Promise<ExtensionSessionActionResult> {\n\t\tif (!existsSync(cwd) || !statSync(cwd).isDirectory()) {\n\t\t\tthrow new Error(`Directory does not exist: ${cwd}`);\n\t\t}\n\n\t\tconst currentSession = this.session;\n\t\tconst persistedSession = currentSession.session;\n\t\tconst previousCwd = persistedSession.getCwd();\n\t\tconst sessionReference = currentSession.sessionReference;\n\t\tawait this.flushSession(currentSession);\n\t\tpersistedSession.setCwd(cwd);\n\n\t\tlet result: BuiltAgentSession;\n\t\ttry {\n\t\t\tresult = await this.buildAgentSession(persistedSession, {\n\t\t\t\ttype: \"session_start\",\n\t\t\t\treason: \"resume\",\n\t\t\t\tpreviousSessionReference: sessionReference,\n\t\t\t\tpreviousSessionFile: sessionReference,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tpersistedSession.setCwd(previousCwd);\n\t\t\tthrow error;\n\t\t}\n\t\ttry {\n\t\t\tawait this.replaceCurrentSession(result, \"resume\", sessionReference);\n\t\t} catch (error) {\n\t\t\tif (this._session === currentSession) persistedSession.setCwd(previousCwd);\n\t\t\tthrow error;\n\t\t}\n\t\treturn { cancelled: false };\n\t}\n\n\tasync newSession(options?: ExtensionNewSessionOptions): Promise<ExtensionSessionActionResult> {\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"new\");\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.create({\n\t\t\tid: options?.id,\n\t\t\tparentSession: options?.parentSession,\n\t\t});\n\n\t\tif (options?.setup) {\n\t\t\tawait options.setup(nextSession);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"new\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"new\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false };\n\t}\n\n\tasync fork(entryId: string, options?: ExtensionForkOptions): Promise<GripAgentForkResult> {\n\t\tconst position = options?.position ?? \"before\";\n\t\tconst beforeResult = await this.emitBeforeFork(entryId, { position });\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn { cancelled: true };\n\t\t}\n\t\tlet targetLeafId: string | null;\n\t\tlet selectedText: string | undefined;\n\n\t\tconst activeAgentSession = this.session;\n\t\tconst selectedEntry = activeAgentSession.session.getEntry(entryId);\n\t\tif (!selectedEntry) {\n\t\t\tthrow new Error(\"Invalid entry ID for forking\");\n\t\t}\n\n\t\tif (position === \"at\") {\n\t\t\ttargetLeafId = selectedEntry.id;\n\t\t} else {\n\t\t\tif (selectedEntry.type !== \"message\" || selectedEntry.message.role !== \"user\") {\n\t\t\t\tthrow new Error(\"Invalid entry ID for forking\");\n\t\t\t}\n\t\t\ttargetLeafId = selectedEntry.parentId;\n\t\t\tselectedText = extractUserMessageText(selectedEntry.message.content);\n\t\t}\n\n\t\tconst previousSessionReference = activeAgentSession.sessionReference;\n\t\tconst activeSession = activeAgentSession.session;\n\t\tlet nextSession: Session;\n\t\ttry {\n\t\t\tnextSession = await activeSession.forkSubSession(targetLeafId);\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof Error && error.message === \"Session manager unavailable\")) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tnextSession = await this.sessionManager.forkSession(activeSession, targetLeafId);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"fork\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"fork\", nextSession.getSessionReference(), options?.withSession);\n\t\treturn { cancelled: false, selectedText };\n\t}\n\n\tasync importFromJsonl(inputPath: string, cwdOverride?: string): Promise<ExtensionSessionActionResult> {\n\t\tconst resolvedPath = resolve(inputPath);\n\t\tif (!existsSync(resolvedPath)) {\n\t\t\tthrow new SessionImportFileNotFoundError(resolvedPath);\n\t\t}\n\n\t\tconst beforeResult = await this.emitBeforeSwitch(\"resume\", resolvedPath);\n\t\tif (beforeResult.cancelled) {\n\t\t\treturn beforeResult;\n\t\t}\n\n\t\tconst previousSessionReference = this.session.sessionReference;\n\t\tconst nextSession = await this.sessionManager.importJsonl(resolvedPath, { cwdOverride: cwdOverride });\n\t\tif (this.shouldValidateSessionCwdOnHost()) {\n\t\t\tassertSessionCwdExists(nextSession, this.services.cwd);\n\t\t}\n\t\tconst result = await this.buildAgentSession(nextSession, {\n\t\t\ttype: \"session_start\",\n\t\t\treason: \"resume\",\n\t\t\tpreviousSessionReference,\n\t\t\tpreviousSessionFile: previousSessionReference,\n\t\t});\n\t\tawait this.replaceCurrentSession(result, \"resume\", nextSession.getSessionReference());\n\t\treturn { cancelled: false };\n\t}\n\tasync runMode(options: RunGripAgentModeOptions = {}): Promise<void> {\n\t\tconst mode = options.mode ?? this._mode;\n\t\tif (mode === \"embedded\") {\n\t\t\treturn;\n\t\t}\n\n\t\tif (mode !== \"interactive\" && !this.session.model) {\n\t\t\tconsole.error(chalk.red(formatNoModelsAvailableMessage()));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tif (options.startupBenchmark && mode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(\"Error: GRIP_STARTUP_BENCHMARK only supports interactive mode\"));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\tif (mode === \"rpc\") {\n\t\t\tprintTimings();\n\t\t\tawait runRpcMode(this);\n\t\t\treturn;\n\t\t}\n\n\t\tif (mode === \"interactive\") {\n\t\t\tawait runInteractiveAppMode(this, this.modelFallbackMessage, options);\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(this, {\n\t\t\tmode: mode === \"json\" ? \"json\" : \"text\",\n\t\t\tmessages: options.initialMessages,\n\t\t\tinitialMessage: options.initialMessage,\n\t\t\tinitialImages: options.initialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t}\n\n\tcreateSession(): Session | Promise<Session> {\n\t\treturn this.sessionManager.create();\n\t}\n\n\topenSessionReference(reference: string): Session | Promise<Session> {\n\t\treturn this.sessionManager.openReference(reference);\n\t}\n\n\tcontinueRecentSession(): Session | Promise<Session> {\n\t\treturn this.sessionManager.continueRecent();\n\t}\n\n\tforkSessionFrom(reference: string): Session | Promise<Session> {\n\t\treturn this.sessionManager.forkFrom(reference);\n\t}\n\n\tasync listSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]> {\n\t\treturn this.sessionManager.list(onProgress);\n\t}\n\n\tasync listAllSessions(onProgress?: SessionListProgress): Promise<SessionInfo[]> {\n\t\treturn this.sessionManager.listAll(onProgress);\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= this.disposeRuntime();\n\t\treturn this.disposePromise;\n\t}\n\n\tprivate async disposeRuntime(): Promise<void> {\n\t\ttry {\n\t\t\tif (this._session) {\n\t\t\t\tawait this.session.emitHookSessionEnd(\"prompt_input_exit\");\n\t\t\t\tawait emitSessionShutdownEvent(this.session.extensionRunner, {\n\t\t\t\t\ttype: \"session_shutdown\",\n\t\t\t\t\treason: \"quit\",\n\t\t\t\t});\n\t\t\t\tawait this.flushSession(this.session);\n\t\t\t\tthis.beforeSessionInvalidate?.();\n\t\t\t\tawait this.session.dispose();\n\t\t\t\tthis._session = undefined;\n\t\t\t}\n\t\t} finally {\n\t\t\tif (this.options.ownsToolOperations && !this.toolOperationsDisposed) {\n\t\t\t\tthis.toolOperationsDisposed = true;\n\t\t\t\tawait this.options.toolOperations?.dispose?.();\n\t\t\t}\n\t\t\tfor (const cleanup of this.subagentCleanupCallbacks) await cleanup();\n\t\t\tthis.subagentCleanupCallbacks.clear();\n\t\t}\n\t}\n}\n"]}