@greppleai/grip 0.1.6 → 0.1.7

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 (76) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/core/agent-session.d.ts +11 -1
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +172 -2
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/compaction/compaction.d.ts.map +1 -1
  11. package/dist/core/compaction/compaction.js +9 -2
  12. package/dist/core/compaction/compaction.js.map +1 -1
  13. package/dist/core/extensions/runner.d.ts +3 -0
  14. package/dist/core/extensions/runner.d.ts.map +1 -1
  15. package/dist/core/extensions/runner.js +22 -0
  16. package/dist/core/extensions/runner.js.map +1 -1
  17. package/dist/core/extensions/types.d.ts +21 -1
  18. package/dist/core/extensions/types.d.ts.map +1 -1
  19. package/dist/core/extensions/types.js.map +1 -1
  20. package/dist/core/instruction-resource-loader.d.ts +1 -0
  21. package/dist/core/instruction-resource-loader.d.ts.map +1 -1
  22. package/dist/core/instruction-resource-loader.js +2 -1
  23. package/dist/core/instruction-resource-loader.js.map +1 -1
  24. package/dist/core/messages.d.ts.map +1 -1
  25. package/dist/core/messages.js +30 -1
  26. package/dist/core/messages.js.map +1 -1
  27. package/dist/core/skills.d.ts.map +1 -1
  28. package/dist/core/skills.js +3 -2
  29. package/dist/core/skills.js.map +1 -1
  30. package/dist/core/system-prompt.d.ts +1 -1
  31. package/dist/core/system-prompt.d.ts.map +1 -1
  32. package/dist/core/system-prompt.js +3 -2
  33. package/dist/core/system-prompt.js.map +1 -1
  34. package/dist/core/tools/bash.d.ts +1 -0
  35. package/dist/core/tools/bash.d.ts.map +1 -1
  36. package/dist/core/tools/bash.js +26 -23
  37. package/dist/core/tools/bash.js.map +1 -1
  38. package/dist/core/tools/operations.d.ts +6 -0
  39. package/dist/core/tools/operations.d.ts.map +1 -1
  40. package/dist/core/tools/operations.js +28 -4
  41. package/dist/core/tools/operations.js.map +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/main.d.ts.map +1 -1
  46. package/dist/main.js +8 -3
  47. package/dist/main.js.map +1 -1
  48. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  49. package/dist/modes/interactive/components/footer.js +7 -1
  50. package/dist/modes/interactive/components/footer.js.map +1 -1
  51. package/dist/modes/interactive/interactive-mode.d.ts +0 -1
  52. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  53. package/dist/modes/interactive/interactive-mode.js +25 -23
  54. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  55. package/dist/package-manager-cli.d.ts.map +1 -1
  56. package/dist/package-manager-cli.js +33 -2
  57. package/dist/package-manager-cli.js.map +1 -1
  58. package/dist/utils/binary-self-update.d.ts +25 -0
  59. package/dist/utils/binary-self-update.d.ts.map +1 -0
  60. package/dist/utils/binary-self-update.js +159 -0
  61. package/dist/utils/binary-self-update.js.map +1 -0
  62. package/dist/utils/directory-completions.d.ts +8 -0
  63. package/dist/utils/directory-completions.d.ts.map +1 -1
  64. package/dist/utils/directory-completions.js +42 -1
  65. package/dist/utils/directory-completions.js.map +1 -1
  66. package/docs/extensions.md +31 -1
  67. package/docs/sandbox.md +2 -2
  68. package/docs/sessions.md +1 -1
  69. package/docs/skills.md +4 -4
  70. package/docs/usage.md +1 -1
  71. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  72. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  73. package/examples/extensions/sandbox/package.json +1 -1
  74. package/examples/extensions/with-deps/package.json +1 -1
  75. package/npm-shrinkwrap.json +12 -12
  76. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/tools/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants, createReadStream, createWriteStream, type Stats, type WriteStream } from \"node:fs\";\nimport {\n\taccess as fsAccess,\n\tmkdir as fsMkdir,\n\treaddir as fsReaddir,\n\treadFile as fsReadFile,\n\tstat as fsStat,\n\twriteFile as fsWriteFile,\n} from \"node:fs/promises\";\nimport { posix, win32 } from \"node:path\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { AgentToolResult, AgentToolUpdateCallback } from \"@greppleai/grip-agent-core\";\nimport WebSocket, { type RawData } from \"ws\";\nimport { DAEMON_WEBSOCKET_PROTOCOL } from \"../../daemon/config.ts\";\nimport { waitForChildProcess } from \"../../utils/child-process.ts\";\nimport { detectSupportedImageMimeTypeFromFile } from \"../../utils/mime.ts\";\nimport {\n\tgetShellConfig,\n\tgetShellEnv,\n\tkillProcessTree,\n\ttrackDetachedChildPid,\n\tuntrackDetachedChildPid,\n} from \"../../utils/shell.ts\";\n\nimport type { PortablePathFlavor } from \"../lsp/portable-path.ts\";\nimport {\n\tDEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n\tdecodeCanonicalBase64,\n\thashRemoteWorkspaceJson,\n\tparseRemoteWorkspaceToolResult,\n\ttype RemoteLspStatus,\n\ttype RemoteWorkspaceClientMessage,\n\ttype RemoteWorkspaceMethod,\n} from \"../remote-workspace-protocol/contract.ts\";\nimport { GuestSharedClientTransport } from \"../remote-workspace-protocol/guest-shared-client.ts\";\nimport {\n\tRemoteWorkspaceClientProtocol,\n\ttype RemoteWorkspaceProtocolCloseReason,\n\tRemoteWorkspaceRequestError,\n} from \"../remote-workspace-protocol/session.ts\";\nimport type { WorkspaceIdentity } from \"../workspace-identity.ts\";\n\nexport type ToolAccessMode = \"exists\" | \"read\" | \"write\" | \"readwrite\";\nexport type WorkspaceToolExecutionTarget = \"local\" | \"remote\" | \"unavailable\";\nexport type RemoteWorkspaceToolExecutionTarget = Exclude<WorkspaceToolExecutionTarget, \"local\">;\ntype RemoteToolTransportProtocol = \"ws\";\n\nexport interface ToolFileStat {\n\tisDirectory: () => boolean;\n\tisFile: () => boolean;\n}\n\nexport interface ToolExecOptions {\n\tcwd?: string;\n\tonData: (data: Buffer) => void;\n\tsignal?: AbortSignal;\n\ttimeout?: number;\n\tenv?: NodeJS.ProcessEnv;\n}\n\nexport interface ToolExecResult {\n\texitCode: number | null;\n}\n\nexport interface ToolMkdirOptions {\n\trecursive?: boolean;\n}\n\nexport interface ToolGlobOptions {\n\tignore: string[];\n\tlimit: number;\n}\n\nexport interface ToolGrepOptions {\n\tpattern: string;\n\tpath: string;\n\tglob?: string;\n\tignoreCase?: boolean;\n\tliteral?: boolean;\n\tlimit: number;\n}\n\nexport interface ToolGrepMatch {\n\tfilePath: string;\n\tlineNumber: number;\n\tlineText?: string;\n}\n\nexport interface ToolGrepResult {\n\tisDirectory: boolean;\n\tmatches: ToolGrepMatch[];\n}\n\nexport type ToolBackendInfo =\n\t| { type: \"local\"; cwd: string }\n\t| { type: \"remote\"; cwd: string; configured: false }\n\t| {\n\t\t\ttype: \"remote\";\n\t\t\tcwd: string;\n\t\t\turl: string;\n\t\t\tprotocol: \"ws\";\n\t\t\tconfigured: true;\n\t\t\tworkspace: WorkspaceIdentity;\n\t };\n\n// grip-ignore noNearIdenticalDataStructures: Remote backend invocations require host-normalized execution options, while public host invocations accept omitted options and apply defaults.\nexport interface WorkspaceToolRemoteInvocation {\n\ttoolCallId: string;\n\targuments: unknown;\n\tsignal?: AbortSignal;\n\tonUpdate?: AgentToolUpdateCallback<unknown>;\n\texecutionOptions: WorkspaceToolExecutionOptions;\n}\n\nexport interface GripSessionEnvironment {\n\tGRIP_SESSION_ID?: string;\n\tGRIP_SESSION_FILE?: string;\n\tGRIP_PROVIDER?: string;\n\tGRIP_MODEL?: string;\n\tGRIP_REASONING_LEVEL?: string;\n}\n\nexport const GRIP_SESSION_ENVIRONMENT_NAMES = Object.freeze([\n\t\"GRIP_SESSION_ID\",\n\t\"GRIP_SESSION_FILE\",\n\t\"GRIP_PROVIDER\",\n\t\"GRIP_MODEL\",\n\t\"GRIP_REASONING_LEVEL\",\n] as const);\n\nexport interface WorkspaceToolExecutionOptions {\n\timageAutoResize?: boolean;\n\tshellCommandPrefix?: string;\n\tsessionEnvironment?: GripSessionEnvironment;\n\t/** Per-invocation guest working directory; the daemon workspace root remains unchanged. */\n\tcwd?: string;\n}\n\ninterface NormalizedRemoteWorkspaceUrl {\n\turl: string;\n\tprotocol: \"ws\";\n}\n\nexport interface DeferredRemoteToolOperationsConnectOptions extends RemoteToolOperationsConnectOptions {\n\texpectedCwd?: string;\n}\n\ntype SharedExpectedRevision = { sha256: string } | { absent: true };\n\nexport type BorrowedToolOperations = Omit<ToolOperations, \"dispose\">;\n\nexport function borrowToolOperations(operations: ToolOperations): BorrowedToolOperations {\n\tconst boundMethods = new Map<PropertyKey, unknown>();\n\treturn new Proxy(operations, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"dispose\") return undefined;\n\t\t\tconst value = Reflect.get(target, property, receiver) as unknown;\n\t\t\tif (typeof value !== \"function\") return value;\n\t\t\tlet bound = boundMethods.get(property);\n\t\t\tif (!bound) {\n\t\t\t\tbound = value.bind(target);\n\t\t\t\tboundMethods.set(property, bound);\n\t\t\t}\n\t\t\treturn bound;\n\t\t},\n\t\thas(target, property) {\n\t\t\treturn property === \"dispose\" ? false : Reflect.has(target, property);\n\t\t},\n\t}) as BorrowedToolOperations;\n}\n\nexport interface ToolOperations {\n\tcwd: string;\n\texec(command: string, options: ToolExecOptions): Promise<ToolExecResult>;\n\taccess(path: string, mode?: ToolAccessMode): Promise<void>;\n\treadFile(path: string): Promise<Buffer>;\n\twriteFile(path: string, content: string | Buffer): Promise<void>;\n\treadResource?(path: string): Promise<Buffer>;\n\tuploadFile?(sourcePath: string, destinationPath: string): Promise<void>;\n\tdownloadFile?(sourcePath: string, destinationPath: string): Promise<void>;\n\tmkdir(path: string, options?: ToolMkdirOptions): Promise<void>;\n\tstat(path: string): Promise<ToolFileStat>;\n\treaddir(path: string): Promise<string[]>;\n\tglob?(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]>;\n\tgrep?(options: ToolGrepOptions): Promise<ToolGrepResult>;\n\tdetectImageMimeType?(path: string): Promise<string | null | undefined>;\n\tgetBackendInfo?(): ToolBackendInfo;\n\tresolveWorkspaceToolExecution?(name: string, parameterSchema: unknown): WorkspaceToolExecutionTarget;\n\texecuteWorkspaceTool?(name: string, invocation: WorkspaceToolRemoteInvocation): Promise<AgentToolResult<unknown>>;\n\tonWorkspaceToolCatalogChanged?(listener: () => void | Promise<void>): () => void;\n\tgetRemoteLspStatus?(): RemoteLspStatus;\n\tdispose?(): Promise<void>;\n}\n\nexport interface LocalToolOperationsOptions {\n\tshellPath?: string;\n}\n\nfunction workspaceRootsEqual(left: string, right: string, pathFlavor: PortablePathFlavor): boolean {\n\tif (pathFlavor === \"windows\") return win32.normalize(left).toLowerCase() === win32.normalize(right).toLowerCase();\n\treturn posix.normalize(left) === posix.normalize(right);\n}\n\nfunction accessModeToFsMode(mode: ToolAccessMode | undefined): number {\n\tswitch (mode) {\n\t\tcase \"read\":\n\t\t\treturn constants.R_OK;\n\t\tcase \"write\":\n\t\t\treturn constants.W_OK;\n\t\tcase \"readwrite\":\n\t\t\treturn constants.R_OK | constants.W_OK;\n\t\tcase \"exists\":\n\t\tcase undefined:\n\t\t\treturn constants.F_OK;\n\t}\n}\n\nconst MAX_TIMEOUT_MS = 2_147_483_647;\nconst MAX_TIMEOUT_SECONDS = MAX_TIMEOUT_MS / 1000;\n\nfunction resolveTimeoutMs(timeout: number | undefined): number | undefined {\n\tif (timeout === undefined) return undefined;\n\tif (!Number.isFinite(timeout) || timeout <= 0) {\n\t\tthrow new Error(\"Invalid timeout: must be a finite number of seconds\");\n\t}\n\n\tconst timeoutMs = timeout * 1000;\n\tif (timeoutMs > MAX_TIMEOUT_MS) {\n\t\tthrow new Error(`Invalid timeout: maximum is ${MAX_TIMEOUT_SECONDS} seconds`);\n\t}\n\treturn timeoutMs;\n}\n\nfunction registerChildProcessAbort(signal: AbortSignal | undefined, child: ChildProcess): () => void {\n\tconst onAbort = (): void => {\n\t\tif (child.pid) killProcessTree(child.pid);\n\t};\n\tif (!signal) return () => undefined;\n\tif (signal.aborted) onAbort();\n\telse signal.addEventListener(\"abort\", onAbort, { once: true });\n\treturn () => signal.removeEventListener(\"abort\", onAbort);\n}\n\nfunction terminateLingeringProcessGroup(child: ChildProcess): void {\n\tif (!child.pid || process.platform === \"win32\") return;\n\ttry {\n\t\tprocess.kill(-child.pid, 0);\n\t\tkillProcessTree(child.pid);\n\t} catch {}\n}\n\nfunction cleanupChildExecution(\n\tchild: ChildProcess,\n\ttimeoutHandle: NodeJS.Timeout | undefined,\n\tremoveAbortListener: () => void,\n): void {\n\tif (child.pid) untrackDetachedChildPid(child.pid);\n\tif (timeoutHandle) clearTimeout(timeoutHandle);\n\tremoveAbortListener();\n}\n\nasync function copyFileStream(sourcePath: string, destinationPath: string): Promise<void> {\n\tawait pipeline(createReadStream(sourcePath), createWriteStream(destinationPath));\n}\n\nfunction writeStreamChunk(stream: WriteStream, chunk: Buffer): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst onError = (error: Error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\treject(error);\n\t\t};\n\t\tstream.once(\"error\", onError);\n\t\tstream.write(chunk, (error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\tif (error) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\nfunction endWriteStream(stream: WriteStream): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst onError = (error: Error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\treject(error);\n\t\t};\n\t\tstream.once(\"error\", onError);\n\t\tstream.end(() => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\nexport class LocalToolOperations implements ToolOperations {\n\tcwd: string;\n\tprivate shellPath: string | undefined;\n\n\tconstructor(cwd: string, options: LocalToolOperationsOptions = {}) {\n\t\tthis.cwd = cwd;\n\t\tthis.shellPath = options.shellPath;\n\t}\n\n\tsetShellPath(shellPath: string | undefined): void {\n\t\tthis.shellPath = shellPath;\n\t}\n\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\tconst timeoutMs = resolveTimeoutMs(options.timeout);\n\t\tconst cwd = options.cwd ?? this.cwd;\n\t\tconst { shell, args } = getShellConfig(this.shellPath);\n\t\ttry {\n\t\t\tawait fsAccess(cwd, constants.F_OK);\n\t\t} catch {\n\t\t\tthrow new Error(`Working directory does not exist: ${cwd}\\nCannot execute bash commands.`);\n\t\t}\n\t\tif (options.signal?.aborted) {\n\t\t\tthrow new Error(\"aborted\");\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst child = spawn(shell, [...args, command], {\n\t\t\t\tcwd,\n\t\t\t\tdetached: process.platform !== \"win32\",\n\t\t\t\tenv: options.env ?? getShellEnv(),\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\t\twindowsHide: true,\n\t\t\t});\n\t\t\tif (child.pid) trackDetachedChildPid(child.pid);\n\t\t\tlet timedOut = false;\n\t\t\tlet timeoutHandle: NodeJS.Timeout | undefined;\n\t\t\tif (timeoutMs !== undefined) {\n\t\t\t\ttimeoutHandle = setTimeout(() => {\n\t\t\t\t\ttimedOut = true;\n\t\t\t\t\tif (child.pid) killProcessTree(child.pid);\n\t\t\t\t}, timeoutMs);\n\t\t\t}\n\t\t\tchild.stdout?.on(\"data\", options.onData);\n\t\t\tchild.stderr?.on(\"data\", options.onData);\n\t\t\tconst removeAbortListener = registerChildProcessAbort(options.signal, child);\n\t\t\twaitForChildProcess(child)\n\t\t\t\t.then((code) => {\n\t\t\t\t\tterminateLingeringProcessGroup(child);\n\t\t\t\t\tcleanupChildExecution(child, timeoutHandle, removeAbortListener);\n\t\t\t\t\tif (options.signal?.aborted) {\n\t\t\t\t\t\treject(new Error(\"aborted\"));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (timedOut) {\n\t\t\t\t\t\treject(new Error(`timeout:${options.timeout}`));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresolve({ exitCode: code });\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tcleanupChildExecution(child, timeoutHandle, removeAbortListener);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait fsAccess(path, accessModeToFsMode(mode));\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\treturn fsReadFile(path);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tawait fsWriteFile(path, content, typeof content === \"string\" ? \"utf-8\" : undefined);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tawait copyFileStream(sourcePath, destinationPath);\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tawait copyFileStream(sourcePath, destinationPath);\n\t}\n\n\tasync mkdir(path: string, options: ToolMkdirOptions = {}): Promise<void> {\n\t\tawait fsMkdir(path, { recursive: options.recursive ?? false });\n\t}\n\n\tasync stat(path: string): Promise<Stats> {\n\t\treturn fsStat(path);\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\treturn fsReaddir(path);\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\treturn detectSupportedImageMimeTypeFromFile(path);\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn { type: \"local\", cwd: this.cwd };\n\t}\n}\n\nexport class DeferredRemoteToolOperations implements ToolOperations {\n\tcwd: string;\n\tprivate readonly expectedCwd: string;\n\tprivate operations: RemoteToolOperations | undefined;\n\tprivate remoteCatalogUnsubscribe: (() => void) | undefined;\n\tprivate readonly catalogListeners = new Set<() => void | Promise<void>>();\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly onDisconnect: ((message: string) => void) | undefined;\n\n\tconstructor(cwd: string, onDisconnect?: (message: string) => void) {\n\t\tthis.cwd = cwd;\n\t\tthis.expectedCwd = cwd;\n\t\tthis.onDisconnect = onDisconnect;\n\t}\n\n\tasync configureRemote(\n\t\turl: string,\n\t\toptions: DeferredRemoteToolOperationsConnectOptions = {},\n\t): Promise<ToolBackendInfo> {\n\t\tconst next = await createRemoteToolOperations(url, { ...options, onDisconnect: this.onDisconnect });\n\t\ttry {\n\t\t\tconst stat = await next.stat(next.cwd);\n\t\t\tif (!stat.isDirectory()) throw new Error(`Remote daemon cwd is not a directory: ${next.cwd}`);\n\t\t\tconst expectedCwd = options.expectedCwd ?? this.expectedCwd;\n\t\t\tif (!workspaceRootsEqual(next.cwd, expectedCwd, next.workspacePathFlavor)) {\n\t\t\t\tthrow new Error(`Remote daemon workspace root mismatch: expected ${expectedCwd}, received ${next.cwd}`);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tawait next.dispose();\n\t\t\tthrow error;\n\t\t}\n\t\tawait this.replaceOperations(next);\n\t\treturn this.getBackendInfo();\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tconst previous = this.operations;\n\t\tthis.remoteCatalogUnsubscribe?.();\n\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\tthis.operations = undefined;\n\t\tawait previous?.dispose?.();\n\t}\n\n\tprivate requireOperations(): RemoteToolOperations {\n\t\tif (!this.operations) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Remote backend is not configured. Configure it over RPC or with /sandbox before using tools.\",\n\t\t\t);\n\t\t}\n\t\treturn this.operations;\n\t}\n\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\treturn this.requireOperations().exec(command, options);\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait this.requireOperations().access(path, mode);\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\treturn this.requireOperations().readFile(path);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tawait this.requireOperations().writeFile(path, content);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tconst operations = this.requireOperations();\n\t\tif (!operations.uploadFile) throw new Error(\"Remote backend does not support file upload\");\n\t\tawait operations.uploadFile(sourcePath, destinationPath);\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tconst operations = this.requireOperations();\n\t\tif (!operations.downloadFile) throw new Error(\"Remote backend does not support file download\");\n\t\tawait operations.downloadFile(sourcePath, destinationPath);\n\t}\n\n\tasync mkdir(path: string, options?: ToolMkdirOptions): Promise<void> {\n\t\tawait this.requireOperations().mkdir(path, options);\n\t}\n\n\tasync stat(path: string): Promise<ToolFileStat> {\n\t\treturn this.requireOperations().stat(path);\n\t}\n\n\tasync resolveWorkspaceDirectory(path: string): Promise<string> {\n\t\treturn this.requireOperations().resolveWorkspaceDirectory(path);\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\treturn this.requireOperations().readdir(path);\n\t}\n\n\tasync glob(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]> {\n\t\treturn this.requireOperations().glob(pattern, cwd, options);\n\t}\n\n\tasync grep(options: ToolGrepOptions): Promise<ToolGrepResult> {\n\t\treturn this.requireOperations().grep(options);\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\treturn this.requireOperations().detectImageMimeType(path);\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn this.operations?.getBackendInfo() ?? { type: \"remote\", cwd: this.cwd, configured: false };\n\t}\n\tisDisconnected(): boolean {\n\t\treturn this.operations?.isDisconnected() ?? false;\n\t}\n\n\tresolveWorkspaceToolExecution(name: string, parameterSchema: unknown): RemoteWorkspaceToolExecutionTarget {\n\t\treturn this.operations ? this.operations.resolveWorkspaceToolExecution(name, parameterSchema) : \"unavailable\";\n\t}\n\n\texecuteWorkspaceTool(name: string, invocation: WorkspaceToolRemoteInvocation): Promise<AgentToolResult<unknown>> {\n\t\treturn this.requireOperations().executeWorkspaceTool(name, {\n\t\t\t...invocation,\n\t\t\texecutionOptions: {\n\t\t\t\t...invocation.executionOptions,\n\t\t\t\t...(this.cwd === this.requireOperations().cwd ? {} : { cwd: this.cwd }),\n\t\t\t},\n\t\t});\n\t}\n\n\tgetRemoteLspStatus(): RemoteLspStatus {\n\t\treturn this.operations?.getRemoteLspStatus() ?? { enabled: false, servers: [] };\n\t}\n\n\tonWorkspaceToolCatalogChanged(listener: () => void | Promise<void>): () => void {\n\t\tthis.catalogListeners.add(listener);\n\t\treturn () => this.catalogListeners.delete(listener);\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= (async () => {\n\t\t\tthis.remoteCatalogUnsubscribe?.();\n\t\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\t\tconst previous = this.operations;\n\t\t\tthis.operations = undefined;\n\t\t\tawait previous?.dispose?.();\n\t\t})();\n\t\treturn this.disposePromise;\n\t}\n\n\tprivate async replaceOperations(next: RemoteToolOperations): Promise<void> {\n\t\tif (this.disposePromise) {\n\t\t\tawait next.dispose?.();\n\t\t\tthrow new Error(\"Deferred remote backend is disposed\");\n\t\t}\n\t\tconst previous = this.operations;\n\t\tthis.remoteCatalogUnsubscribe?.();\n\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\tthis.operations = next;\n\t\tthis.cwd = next.cwd;\n\t\tthis.remoteCatalogUnsubscribe = next.onWorkspaceToolCatalogChanged(() =>\n\t\t\tPromise.all([...this.catalogListeners].map((listener) => listener())).then(() => undefined),\n\t\t);\n\t\tawait previous?.dispose?.();\n\t}\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction requireRecord(value: unknown, label: string): Record<string, unknown> {\n\tif (!isRecord(value)) throw new Error(`Invalid remote workspace ${label}`);\n\treturn value;\n}\n\nfunction requireString(value: unknown, label: string): string {\n\tif (typeof value !== \"string\") throw new Error(`Invalid remote workspace ${label}`);\n\treturn value;\n}\n\nfunction normalizeRemoteUrl(url: string): NormalizedRemoteWorkspaceUrl {\n\tconst parsed = new URL(url);\n\tif (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n\t\tthrow new Error(`--remote supports ws:// and wss:// URLs, got ${parsed.protocol}`);\n\t}\n\tif (parsed.username || parsed.password) throw new Error(\"Remote workspace URLs must not contain credentials\");\n\tif (parsed.hash) throw new Error(\"Remote workspace URLs must not contain fragments\");\n\treturn { url: parsed.toString(), protocol: \"ws\" };\n}\n\nfunction websocketPayload(data: RawData): Uint8Array {\n\tif (Buffer.isBuffer(data)) return Uint8Array.from(data);\n\tif (Array.isArray(data)) return Uint8Array.from(Buffer.concat(data));\n\treturn Uint8Array.from(new Uint8Array(data));\n}\n\nfunction websocketCloseCode(reason: RemoteWorkspaceProtocolCloseReason): number {\n\tswitch (reason.code) {\n\t\tcase \"normal\":\n\t\t\treturn 1000;\n\t\tcase \"protocol_error\":\n\t\t\treturn 1002;\n\t\tcase \"invalid_payload\":\n\t\t\treturn 1007;\n\t\tcase \"policy_violation\":\n\t\t\treturn 1008;\n\t\tcase \"message_too_large\":\n\t\t\treturn 1009;\n\t}\n}\n\nexport interface RemoteToolOperationsConnectOptions {\n\ttoken?: string;\n\thandshakeTimeoutMs?: number;\n\tonDisconnect?: (message: string) => void;\n}\n\nexport class RemoteToolOperations implements ToolOperations {\n\treadonly url: string;\n\treadonly protocol: RemoteToolTransportProtocol;\n\tcwd: string;\n\tworkspacePathFlavor: PortablePathFlavor = \"posix\";\n\tprivate workspaceId = \"\";\n\tprivate readonly socket: WebSocket | GuestSharedClientTransport;\n\tprivate readonly isShared: boolean;\n\tprivate readonly client: RemoteWorkspaceClientProtocol;\n\tprivate readonly localToolSchemas = new Map<string, string>();\n\tprivate readonly catalogListeners = new Set<() => void | Promise<void>>();\n\tprivate remoteLspStatus: RemoteLspStatus = { enabled: false, servers: [] };\n\tprivate disconnected = false;\n\tprivate disposePromise: Promise<void> | undefined;\n\n\tprivate constructor(\n\t\turl: string,\n\t\tprotocol: RemoteToolTransportProtocol,\n\t\tsocket: WebSocket | GuestSharedClientTransport,\n\t\toptions: RemoteToolOperationsConnectOptions,\n\t) {\n\t\tthis.url = url;\n\t\tthis.protocol = protocol;\n\t\tthis.socket = socket;\n\t\tthis.isShared = socket instanceof GuestSharedClientTransport;\n\t\tthis.cwd = \"/\";\n\t\tconst transport =\n\t\t\tsocket instanceof GuestSharedClientTransport\n\t\t\t\t? socket\n\t\t\t\t: {\n\t\t\t\t\t\tsend: (message: RemoteWorkspaceClientMessage): Promise<void> =>\n\t\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tif (socket.readyState !== WebSocket.OPEN) {\n\t\t\t\t\t\t\t\t\treject(new Error(\"Remote workspace connection is not open\"));\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsocket.send(JSON.stringify(message), { binary: false, compress: false }, (error) => {\n\t\t\t\t\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\t\t\t\t\telse resolve();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tclose: (reason: RemoteWorkspaceProtocolCloseReason): Promise<void> => {\n\t\t\t\t\t\t\tif (socket.readyState === WebSocket.CLOSED) return Promise.resolve();\n\t\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\t\tsocket.once(\"close\", () => resolve());\n\t\t\t\t\t\t\t\tsocket.close(websocketCloseCode(reason), reason.message);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\tthis.client = new RemoteWorkspaceClientProtocol(transport, {\n\t\t\trequiredCapabilities: [\"primitive_operations\", \"tool_updates\"],\n\t\t\toptionalCapabilities: this.isShared\n\t\t\t\t? [\"catalog_refresh\", \"artifacts\", \"lsp_status\"]\n\t\t\t\t: [\"catalog_refresh\", \"file_transfer\", \"artifacts\", \"lsp_status\"],\n\t\t\treceiveLimits: DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n\t\t\tlocalToolSchemas: this.localToolSchemas,\n\t\t\thandshakeTimeoutMs: options.handshakeTimeoutMs,\n\t\t\tonDisconnect: (message) => {\n\t\t\t\tthis.disconnected = true;\n\t\t\t\toptions.onDisconnect?.(message);\n\t\t\t},\n\t\t\tonCatalogRefreshed: async () => {\n\t\t\t\tawait this.refreshRemoteLspStatus();\n\t\t\t\tawait Promise.all([...this.catalogListeners].map((listener) => listener()));\n\t\t\t},\n\t\t});\n\t\tif (socket instanceof GuestSharedClientTransport) {\n\t\t\tsocket.bind(this.client);\n\t\t} else {\n\t\t\tsocket.on(\"message\", (data, isBinary) => {\n\t\t\t\tif (isBinary) {\n\t\t\t\t\tvoid this.client.disconnect(\"Remote workspace sent an unexpected binary frame\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvoid this.client.receive(websocketPayload(data)).catch(() => undefined);\n\t\t\t});\n\t\t\tsocket.on(\"close\", () => void this.client.disconnect(\"Remote workspace connection closed\"));\n\t\t\tsocket.on(\"error\", () => void this.client.disconnect(\"Remote workspace connection failed\"));\n\t\t}\n\t}\n\n\tstatic async connect(url: string, options: RemoteToolOperationsConnectOptions = {}): Promise<RemoteToolOperations> {\n\t\tconst normalized = normalizeRemoteUrl(url);\n\t\tconst token = options.token ?? process.env.GRIP_REMOTE_TOKEN;\n\t\tconst socket = await new Promise<WebSocket>((resolve, reject) => {\n\t\t\tconst websocket = new WebSocket(normalized.url, DAEMON_WEBSOCKET_PROTOCOL, {\n\t\t\t\tperMessageDeflate: false,\n\t\t\t\t...(token ? { headers: { authorization: `Bearer ${token}` } } : {}),\n\t\t\t});\n\t\t\tconst cleanup = () => {\n\t\t\t\twebsocket.off(\"open\", onOpen);\n\t\t\t\twebsocket.off(\"error\", onError);\n\t\t\t};\n\t\t\tconst onOpen = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(websocket);\n\t\t\t};\n\t\t\tconst onError = () => {\n\t\t\t\tcleanup();\n\t\t\t\twebsocket.terminate();\n\t\t\t\treject(new Error(`Failed to connect remote workspace: ${normalized.url}`));\n\t\t\t};\n\t\t\twebsocket.once(\"open\", onOpen);\n\t\t\twebsocket.once(\"error\", onError);\n\t\t});\n\t\tconst operations = new RemoteToolOperations(normalized.url, normalized.protocol, socket, options);\n\t\ttry {\n\t\t\tconst handshake = await operations.client.start();\n\t\t\toperations.cwd = handshake.workspace.root;\n\t\t\toperations.workspacePathFlavor = handshake.workspace.pathFlavor;\n\t\t\toperations.workspaceId = handshake.workspace.id;\n\t\t\tawait operations.refreshRemoteLspStatus();\n\t\t\treturn operations;\n\t\t} catch (error) {\n\t\t\tsocket.terminate();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic async connectGuestShared(\n\t\turl: string,\n\t\troot: string,\n\t\ttoken: string,\n\t\toptions: RemoteToolOperationsConnectOptions = {},\n\t): Promise<RemoteToolOperations> {\n\t\tconst socket = await GuestSharedClientTransport.attach(url, root, token);\n\t\tconst operations = new RemoteToolOperations(url, \"ws\", socket, options);\n\t\ttry {\n\t\t\tconst handshake = await operations.client.start();\n\t\t\tif (!workspaceRootsEqual(handshake.workspace.root, root, handshake.workspace.pathFlavor)) {\n\t\t\t\tthrow new Error(\"Guest shared workspace root differs from daemon handshake\");\n\t\t\t}\n\t\t\toperations.cwd = handshake.workspace.root;\n\t\t\toperations.workspacePathFlavor = handshake.workspace.pathFlavor;\n\t\t\toperations.workspaceId = handshake.workspace.id;\n\t\t\tawait operations.refreshRemoteLspStatus();\n\t\t\treturn operations;\n\t\t} catch (error) {\n\t\t\tawait socket.close({ code: \"normal\", message: \"Shared guest attach failed\" });\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tresolveWorkspaceToolExecution(name: string, parameterSchema: unknown): RemoteWorkspaceToolExecutionTarget {\n\t\tconst schemaHash = hashRemoteWorkspaceJson(parameterSchema);\n\t\tconst catalogTool = this.client.handshake?.catalog.tools.find((tool) => tool.name === name);\n\t\tif (!catalogTool) return \"unavailable\";\n\t\tif (catalogTool.schemaHash !== schemaHash) {\n\t\t\tthrow new Error(`Remote tool schema does not match the local canonical definition: ${name}`);\n\t\t}\n\t\tthis.localToolSchemas.set(name, schemaHash);\n\t\tthis.client.setLocalToolSchemas(this.localToolSchemas);\n\t\treturn \"remote\";\n\t}\n\n\tasync executeWorkspaceTool(\n\t\tname: string,\n\t\tinvocation: WorkspaceToolRemoteInvocation,\n\t): Promise<AgentToolResult<unknown>> {\n\t\tconst invoke = async () => {\n\t\t\tawait this.client.waitForCatalogRefresh();\n\t\t\tconst handshake = this.client.handshake;\n\t\t\tif (!handshake) throw new Error(\"Remote workspace protocol handshake is unavailable\");\n\t\t\tconst catalogTool = handshake.catalog.tools.find((tool) => tool.name === name);\n\t\t\tconst schemaHash = this.localToolSchemas.get(name);\n\t\t\tif (!catalogTool || !schemaHash || catalogTool.schemaHash !== schemaHash) {\n\t\t\t\tthrow new Error(`Remote tool is unavailable or has schema drift: ${name}`);\n\t\t\t}\n\t\t\tconst expectedRevision = await this.revisionForTool(name, invocation);\n\t\t\tconst result = requireRecord(\n\t\t\t\tawait this.client.request(\n\t\t\t\t\t\"tool.invoke\",\n\t\t\t\t\t{\n\t\t\t\t\t\tgeneration: handshake.catalog.generation,\n\t\t\t\t\t\tcatalogHash: handshake.catalogHash,\n\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\tschemaHash,\n\t\t\t\t\t\targumentsPrepared: true,\n\t\t\t\t\t\targuments: invocation.arguments,\n\t\t\t\t\t\t...(expectedRevision ? { expectedRevision } : {}),\n\t\t\t\t\t\texecutionOptions: invocation.executionOptions,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tsignal: invocation.signal,\n\t\t\t\t\t\tonUpdate: invocation.onUpdate\n\t\t\t\t\t\t\t? (update) =>\n\t\t\t\t\t\t\t\t\tinvocation.onUpdate!(parseRemoteWorkspaceToolResult(update) as AgentToolResult<unknown>)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\t\"tool result\",\n\t\t\t);\n\t\t\tconst toolResult = result;\n\t\t\tif (!Array.isArray(toolResult.content)) throw new Error(\"Invalid remote workspace tool result content\");\n\t\t\tif (name.startsWith(\"lsp_\")) await this.refreshRemoteLspStatus().catch(() => undefined);\n\t\t\treturn {\n\t\t\t\tcontent: toolResult.content as AgentToolResult<unknown>[\"content\"],\n\t\t\t\tdetails: toolResult.details,\n\t\t\t\t...(typeof toolResult.terminate === \"boolean\" ? { terminate: toolResult.terminate } : {}),\n\t\t\t};\n\t\t};\n\t\ttry {\n\t\t\treturn await invoke();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof RemoteWorkspaceRequestError &&\n\t\t\t\terror.code === \"stale_generation\" &&\n\t\t\t\terror.executionState === \"not_started\"\n\t\t\t) {\n\t\t\t\treturn invoke();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetRemoteLspStatus(): RemoteLspStatus {\n\t\treturn structuredClone(this.remoteLspStatus);\n\t}\n\n\tonWorkspaceToolCatalogChanged(listener: () => void | Promise<void>): () => void {\n\t\tthis.catalogListeners.add(listener);\n\t\treturn () => this.catalogListeners.delete(listener);\n\t}\n\n\tprivate async refreshRemoteLspStatus(): Promise<void> {\n\t\tif (!this.client.handshake?.catalog.operations.includes(\"lsp.status\")) {\n\t\t\tthis.remoteLspStatus = { enabled: false, servers: [] };\n\t\t\treturn;\n\t\t}\n\t\tthis.remoteLspStatus = (await this.client.request(\"lsp.status\", {})) as RemoteLspStatus;\n\t}\n\n\tprivate request(method: RemoteWorkspaceMethod, params: unknown) {\n\t\treturn this.client.request(method, params);\n\t}\n\n\tprivate async revisionForTool(\n\t\tname: string,\n\t\tinvocation: WorkspaceToolRemoteInvocation,\n\t): Promise<SharedExpectedRevision | undefined> {\n\t\tif (!this.isShared || (name !== \"edit\" && name !== \"write\")) return undefined;\n\t\tconst path = requireString(\n\t\t\trequireRecord(invocation.arguments, \"shared mutation arguments\").path,\n\t\t\t\"shared mutation path\",\n\t\t);\n\t\tconst cwd = invocation.executionOptions.cwd;\n\t\tconst target = cwd ? (this.workspacePathFlavor === \"windows\" ? win32 : posix).resolve(cwd, path) : path;\n\t\treturn this.sharedExpectedRevision(target, invocation.signal, name === \"write\");\n\t}\n\n\t/** Observe exact bytes for CAS, or a daemon-confirmed absent target for creation. */\n\tprivate async sharedExpectedRevision(\n\t\tpath: string,\n\t\tsignal?: AbortSignal,\n\t\tallowAbsent = true,\n\t): Promise<SharedExpectedRevision> {\n\t\tlet read: unknown;\n\t\ttry {\n\t\t\tread = await this.client.request(\"workspace.read\", { path }, { signal });\n\t\t} catch (error) {\n\t\t\tif (!allowAbsent) throw error;\n\t\t\t// Do not infer absence from an error message: only a v2 server stat of the\n\t\t\t// same workspace and path may establish the expected-absent precondition.\n\t\t\tconst stat = requireRecord(\n\t\t\t\tawait this.client.request(\"workspace.stat\", { path }, { signal }),\n\t\t\t\t\"shared stat result\",\n\t\t\t);\n\t\t\tif (stat.kind !== \"absent\") throw error;\n\t\t\treturn { absent: true };\n\t\t}\n\t\tconst result = requireRecord(read, \"shared read result\");\n\t\tconst content = decodeCanonicalBase64(\n\t\t\trequireString(result.contentBase64, \"shared read content\"),\n\t\t\tNumber.MAX_SAFE_INTEGER,\n\t\t);\n\t\tconst sha256 = createHash(\"sha256\").update(content).digest(\"hex\");\n\t\tif (result.revision !== sha256) throw new Error(\"Shared daemon did not confirm the observed file revision\");\n\t\treturn { sha256 };\n\t}\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.client.request(\n\t\t\t\t\"workspace.exec\",\n\t\t\t\t{ command, cwd: options.cwd ?? this.cwd },\n\t\t\t\t{\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t\ttimeoutMs: options.timeout === undefined ? undefined : Math.round(options.timeout * 1000),\n\t\t\t\t\tonUpdate: (update) => {\n\t\t\t\t\t\tconst record = requireRecord(update, \"exec update\");\n\t\t\t\t\t\toptions.onData(\n\t\t\t\t\t\t\tdecodeCanonicalBase64(requireString(record.dataBase64, \"exec update data\"), 1024 * 1024),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t),\n\t\t\t\"exec result\",\n\t\t);\n\t\treturn { exitCode: typeof result.exitCode === \"number\" ? result.exitCode : null };\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait this.request(\"workspace.access\", { path, ...(mode ? { mode } : {}) });\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\tconst result = requireRecord(await this.request(\"workspace.read\", { path }), \"read result\");\n\t\treturn decodeCanonicalBase64(requireString(result.contentBase64, \"read content\"), Number.MAX_SAFE_INTEGER);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tconst expectedRevision = this.isShared ? await this.sharedExpectedRevision(path) : undefined;\n\t\tawait this.request(\"workspace.write\", {\n\t\t\tpath,\n\t\t\tcontentBase64: Buffer.from(content).toString(\"base64\"),\n\t\t\t...(expectedRevision ? { expectedRevision } : {}),\n\t\t});\n\t}\n\n\tasync readResource(path: string): Promise<Buffer> {\n\t\tif (!this.client.handshake?.catalog.operations.includes(\"resource.read\")) {\n\t\t\tthrow new Error(\"Remote workspace does not expose resource reads\");\n\t\t}\n\t\tconst result = requireRecord(await this.request(\"resource.read\", { path }), \"resource read result\");\n\t\treturn decodeCanonicalBase64(\n\t\t\trequireString(result.contentBase64, \"resource read content\"),\n\t\t\tNumber.MAX_SAFE_INTEGER,\n\t\t);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tif (this.isShared) throw new Error(\"Shared guest file transfers are unavailable\");\n\t\tconst content = await fsReadFile(sourcePath);\n\t\tconst sha256 = createHash(\"sha256\").update(content).digest(\"hex\");\n\t\tconst handle = this.client.beginRequest(\"transfer.upload\", {\n\t\t\tpath: destinationPath,\n\t\t\tlength: content.byteLength,\n\t\t\tsha256,\n\t\t\toverwrite: true,\n\t\t});\n\t\tconst chunkBytes = this.client.handshake?.limits.maxTransferChunkBytes ?? 64 * 1024;\n\t\tfor (let offset = 0; offset < content.byteLength; offset += chunkBytes) {\n\t\t\tawait handle.sendTransferChunk(content.subarray(offset, Math.min(offset + chunkBytes, content.byteLength)));\n\t\t}\n\t\tawait handle.finishTransfer(content.byteLength, sha256);\n\t\tawait handle.result;\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tif (this.isShared) throw new Error(\"Shared guest file transfers are unavailable\");\n\t\tconst stream = createWriteStream(destinationPath);\n\t\ttry {\n\t\t\tawait this.client.request(\n\t\t\t\t\"transfer.download\",\n\t\t\t\t{ path: sourcePath },\n\t\t\t\t{\n\t\t\t\t\tonTransferChunk: (chunk) => writeStreamChunk(stream, chunk),\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait endWriteStream(stream);\n\t\t} catch (error) {\n\t\t\tstream.destroy();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync mkdir(path: string, options: ToolMkdirOptions = {}): Promise<void> {\n\t\tawait this.request(\"workspace.mkdir\", { path, recursive: options.recursive ?? false });\n\t}\n\n\tasync stat(path: string): Promise<ToolFileStat> {\n\t\tconst result = requireRecord(await this.request(\"workspace.stat\", { path }), \"stat result\");\n\t\tif (result.kind === \"absent\") throw new Error(`Remote workspace path does not exist: ${path}`);\n\t\treturn {\n\t\t\tisDirectory: () => result.kind === \"directory\",\n\t\t\tisFile: () => result.kind === \"file\",\n\t\t};\n\t}\n\n\tasync resolveWorkspaceDirectory(path: string): Promise<string> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.request(\"workspace.stat\", { path, workspaceOnly: true }),\n\t\t\t\"workspace directory result\",\n\t\t);\n\t\tif (result.kind !== \"directory\") throw new Error(`Not a workspace directory: ${path}`);\n\t\treturn requireString(result.canonicalPath, \"workspace directory canonical path\");\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\tconst result = requireRecord(await this.request(\"workspace.readdir\", { path }), \"readdir result\");\n\t\tif (!Array.isArray(result.entries) || !result.entries.every((entry) => typeof entry === \"string\")) {\n\t\t\tthrow new Error(\"Invalid remote workspace readdir entries\");\n\t\t}\n\t\treturn result.entries;\n\t}\n\n\tasync glob(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.request(\"workspace.glob\", { pattern, cwd, ignore: options.ignore, limit: options.limit }),\n\t\t\t\"glob result\",\n\t\t);\n\t\tif (!Array.isArray(result.matches) || !result.matches.every((entry) => typeof entry === \"string\")) {\n\t\t\tthrow new Error(\"Invalid remote workspace glob matches\");\n\t\t}\n\t\treturn result.matches;\n\t}\n\n\tasync grep(options: ToolGrepOptions): Promise<ToolGrepResult> {\n\t\tconst result = requireRecord(await this.request(\"workspace.grep\", options), \"grep result\");\n\t\tif (!Array.isArray(result.matches)) throw new Error(\"Invalid remote workspace grep matches\");\n\t\treturn {\n\t\t\tisDirectory: result.isDirectory === true,\n\t\t\tmatches: result.matches.map((entry) => {\n\t\t\t\tconst match = requireRecord(entry, \"grep match\");\n\t\t\t\treturn {\n\t\t\t\t\tfilePath: requireString(match.filePath, \"grep file path\"),\n\t\t\t\t\tlineNumber: typeof match.lineNumber === \"number\" ? match.lineNumber : 0,\n\t\t\t\t\t...(typeof match.lineText === \"string\" ? { lineText: match.lineText } : {}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\tconst result = requireRecord(await this.request(\"workspace.detect_image_mime\", { path }), \"image MIME result\");\n\t\treturn typeof result.mimeType === \"string\" ? result.mimeType : null;\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\tcwd: this.cwd,\n\t\t\turl: this.url,\n\t\t\tprotocol: this.protocol,\n\t\t\tconfigured: true,\n\t\t\tworkspace: { id: this.workspaceId, root: this.cwd, pathFlavor: this.workspacePathFlavor },\n\t\t};\n\t}\n\tisDisconnected(): boolean {\n\t\treturn this.disconnected;\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= this.client.close().catch(() => {\n\t\t\tif (this.socket instanceof WebSocket) this.socket.terminate();\n\t\t});\n\t\treturn this.disposePromise;\n\t}\n}\n\nexport function createRemoteToolOperations(\n\turl: string,\n\toptions?: RemoteToolOperationsConnectOptions,\n): Promise<RemoteToolOperations> {\n\tif (url.startsWith(\"grip+ws:\")) {\n\t\tconst parsed = new URL(url.replace(/^grip\\+/, \"\"));\n\t\tconst root = parsed.searchParams.get(\"root\");\n\t\tif (!root || !posix.isAbsolute(root) || parsed.searchParams.size !== 1 || !options?.token) {\n\t\t\treturn Promise.reject(new Error(\"Invalid guest shared workspace attachment\"));\n\t\t}\n\t\tparsed.search = \"\";\n\t\treturn RemoteToolOperations.connectGuestShared(parsed.toString(), root, options.token, options);\n\t}\n\treturn RemoteToolOperations.connect(url, options);\n}\n"]}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/core/tools/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { constants, createReadStream, createWriteStream, type Stats, type WriteStream } from \"node:fs\";\nimport {\n\taccess as fsAccess,\n\tmkdir as fsMkdir,\n\treaddir as fsReaddir,\n\treadFile as fsReadFile,\n\trealpath as fsRealpath,\n\tstat as fsStat,\n\twriteFile as fsWriteFile,\n} from \"node:fs/promises\";\nimport { isAbsolute, posix, relative, resolve, sep, win32 } from \"node:path\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { AgentToolResult, AgentToolUpdateCallback } from \"@greppleai/grip-agent-core\";\nimport WebSocket, { type RawData } from \"ws\";\nimport { DAEMON_WEBSOCKET_PROTOCOL } from \"../../daemon/config.ts\";\nimport { waitForChildProcess } from \"../../utils/child-process.ts\";\nimport { detectSupportedImageMimeTypeFromFile } from \"../../utils/mime.ts\";\nimport {\n\tgetShellConfig,\n\tgetShellEnv,\n\tkillProcessTree,\n\ttrackDetachedChildPid,\n\tuntrackDetachedChildPid,\n} from \"../../utils/shell.ts\";\n\nimport type { PortablePathFlavor } from \"../lsp/portable-path.ts\";\nimport {\n\tDEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n\tdecodeCanonicalBase64,\n\thashRemoteWorkspaceJson,\n\tparseRemoteWorkspaceToolResult,\n\ttype RemoteLspStatus,\n\ttype RemoteWorkspaceClientMessage,\n\ttype RemoteWorkspaceMethod,\n} from \"../remote-workspace-protocol/contract.ts\";\nimport { GuestSharedClientTransport } from \"../remote-workspace-protocol/guest-shared-client.ts\";\nimport {\n\tRemoteWorkspaceClientProtocol,\n\ttype RemoteWorkspaceProtocolCloseReason,\n\tRemoteWorkspaceRequestError,\n} from \"../remote-workspace-protocol/session.ts\";\nimport type { WorkspaceIdentity } from \"../workspace-identity.ts\";\n\nexport type ToolAccessMode = \"exists\" | \"read\" | \"write\" | \"readwrite\";\nexport type WorkspaceToolExecutionTarget = \"local\" | \"remote\" | \"unavailable\";\nexport type RemoteWorkspaceToolExecutionTarget = Exclude<WorkspaceToolExecutionTarget, \"local\">;\ntype RemoteToolTransportProtocol = \"ws\";\n\nexport interface ToolFileStat {\n\tisDirectory: () => boolean;\n\tisFile: () => boolean;\n}\n\nexport interface ToolExecOptions {\n\tcwd?: string;\n\tonData: (data: Buffer) => void;\n\tsignal?: AbortSignal;\n\ttimeout?: number;\n\tenv?: NodeJS.ProcessEnv;\n}\n\nexport interface ToolExecResult {\n\texitCode: number | null;\n}\n\nexport interface ToolMkdirOptions {\n\trecursive?: boolean;\n}\n\nexport interface ToolGlobOptions {\n\tignore: string[];\n\tlimit: number;\n}\n\nexport interface ToolGrepOptions {\n\tpattern: string;\n\tpath: string;\n\tglob?: string;\n\tignoreCase?: boolean;\n\tliteral?: boolean;\n\tlimit: number;\n}\n\nexport interface ToolGrepMatch {\n\tfilePath: string;\n\tlineNumber: number;\n\tlineText?: string;\n}\n\nexport interface ToolGrepResult {\n\tisDirectory: boolean;\n\tmatches: ToolGrepMatch[];\n}\n\nexport type ToolBackendInfo =\n\t| { type: \"local\"; cwd: string }\n\t| { type: \"remote\"; cwd: string; configured: false }\n\t| {\n\t\t\ttype: \"remote\";\n\t\t\tcwd: string;\n\t\t\turl: string;\n\t\t\tprotocol: \"ws\";\n\t\t\tconfigured: true;\n\t\t\tworkspace: WorkspaceIdentity;\n\t };\n\n// grip-ignore noNearIdenticalDataStructures: Remote backend invocations require host-normalized execution options, while public host invocations accept omitted options and apply defaults.\nexport interface WorkspaceToolRemoteInvocation {\n\ttoolCallId: string;\n\targuments: unknown;\n\tsignal?: AbortSignal;\n\tonUpdate?: AgentToolUpdateCallback<unknown>;\n\texecutionOptions: WorkspaceToolExecutionOptions;\n}\n\nexport interface GripSessionEnvironment {\n\tGRIP_SESSION_ID?: string;\n\tGRIP_SESSION_FILE?: string;\n\tGRIP_PROVIDER?: string;\n\tGRIP_MODEL?: string;\n\tGRIP_REASONING_LEVEL?: string;\n}\n\nexport const GRIP_SESSION_ENVIRONMENT_NAMES = Object.freeze([\n\t\"GRIP_SESSION_ID\",\n\t\"GRIP_SESSION_FILE\",\n\t\"GRIP_PROVIDER\",\n\t\"GRIP_MODEL\",\n\t\"GRIP_REASONING_LEVEL\",\n] as const);\n\nexport interface WorkspaceToolExecutionOptions {\n\timageAutoResize?: boolean;\n\tshellCommandPrefix?: string;\n\tsessionEnvironment?: GripSessionEnvironment;\n\t/** Per-invocation guest working directory; the daemon workspace root remains unchanged. */\n\tcwd?: string;\n}\n\ninterface NormalizedRemoteWorkspaceUrl {\n\turl: string;\n\tprotocol: \"ws\";\n}\n\nexport interface DeferredRemoteToolOperationsConnectOptions extends RemoteToolOperationsConnectOptions {\n\texpectedCwd?: string;\n\t/** Known host mount source; only supplied for a sandbox started by this Grip process. */\n\thostWorkspaceRoot?: string;\n}\n\ntype SharedExpectedRevision = { sha256: string } | { absent: true };\n\nexport type BorrowedToolOperations = Omit<ToolOperations, \"dispose\">;\n\nexport function borrowToolOperations(operations: ToolOperations): BorrowedToolOperations {\n\tconst boundMethods = new Map<PropertyKey, unknown>();\n\treturn new Proxy(operations, {\n\t\tget(target, property, receiver) {\n\t\t\tif (property === \"dispose\") return undefined;\n\t\t\tconst value = Reflect.get(target, property, receiver) as unknown;\n\t\t\tif (typeof value !== \"function\") return value;\n\t\t\tlet bound = boundMethods.get(property);\n\t\t\tif (!bound) {\n\t\t\t\tbound = value.bind(target);\n\t\t\t\tboundMethods.set(property, bound);\n\t\t\t}\n\t\t\treturn bound;\n\t\t},\n\t\thas(target, property) {\n\t\t\treturn property === \"dispose\" ? false : Reflect.has(target, property);\n\t\t},\n\t}) as BorrowedToolOperations;\n}\n\nexport interface ToolOperations {\n\tcwd: string;\n\texec(command: string, options: ToolExecOptions): Promise<ToolExecResult>;\n\taccess(path: string, mode?: ToolAccessMode): Promise<void>;\n\treadFile(path: string): Promise<Buffer>;\n\twriteFile(path: string, content: string | Buffer): Promise<void>;\n\treadResource?(path: string): Promise<Buffer>;\n\tuploadFile?(sourcePath: string, destinationPath: string): Promise<void>;\n\tdownloadFile?(sourcePath: string, destinationPath: string): Promise<void>;\n\tmkdir(path: string, options?: ToolMkdirOptions): Promise<void>;\n\tstat(path: string): Promise<ToolFileStat>;\n\treaddir(path: string): Promise<string[]>;\n\tglob?(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]>;\n\tgrep?(options: ToolGrepOptions): Promise<ToolGrepResult>;\n\tdetectImageMimeType?(path: string): Promise<string | null | undefined>;\n\t/** Map an existing guest workspace directory to its verified host mount counterpart, when known. */\n\tmapWorkspaceDirectoryToHost?(guestPath: string): Promise<string>;\n\tgetBackendInfo?(): ToolBackendInfo;\n\tresolveWorkspaceToolExecution?(name: string, parameterSchema: unknown): WorkspaceToolExecutionTarget;\n\texecuteWorkspaceTool?(name: string, invocation: WorkspaceToolRemoteInvocation): Promise<AgentToolResult<unknown>>;\n\tonWorkspaceToolCatalogChanged?(listener: () => void | Promise<void>): () => void;\n\tgetRemoteLspStatus?(): RemoteLspStatus;\n\tdispose?(): Promise<void>;\n}\n\nexport interface LocalToolOperationsOptions {\n\tshellPath?: string;\n}\n\nfunction workspaceRootsEqual(left: string, right: string, pathFlavor: PortablePathFlavor): boolean {\n\tif (pathFlavor === \"windows\") return win32.normalize(left).toLowerCase() === win32.normalize(right).toLowerCase();\n\treturn posix.normalize(left) === posix.normalize(right);\n}\n\nfunction accessModeToFsMode(mode: ToolAccessMode | undefined): number {\n\tswitch (mode) {\n\t\tcase \"read\":\n\t\t\treturn constants.R_OK;\n\t\tcase \"write\":\n\t\t\treturn constants.W_OK;\n\t\tcase \"readwrite\":\n\t\t\treturn constants.R_OK | constants.W_OK;\n\t\tcase \"exists\":\n\t\tcase undefined:\n\t\t\treturn constants.F_OK;\n\t}\n}\n\nconst MAX_TIMEOUT_MS = 2_147_483_647;\nconst MAX_TIMEOUT_SECONDS = MAX_TIMEOUT_MS / 1000;\n\nfunction resolveTimeoutMs(timeout: number | undefined): number | undefined {\n\tif (timeout === undefined) return undefined;\n\tif (!Number.isFinite(timeout) || timeout <= 0) {\n\t\tthrow new Error(\"Invalid timeout: must be a finite number of seconds\");\n\t}\n\n\tconst timeoutMs = timeout * 1000;\n\tif (timeoutMs > MAX_TIMEOUT_MS) {\n\t\tthrow new Error(`Invalid timeout: maximum is ${MAX_TIMEOUT_SECONDS} seconds`);\n\t}\n\treturn timeoutMs;\n}\n\nfunction registerChildProcessAbort(signal: AbortSignal | undefined, child: ChildProcess): () => void {\n\tconst onAbort = (): void => {\n\t\tif (child.pid) killProcessTree(child.pid);\n\t};\n\tif (!signal) return () => undefined;\n\tif (signal.aborted) onAbort();\n\telse signal.addEventListener(\"abort\", onAbort, { once: true });\n\treturn () => signal.removeEventListener(\"abort\", onAbort);\n}\n\nfunction terminateLingeringProcessGroup(child: ChildProcess): void {\n\tif (!child.pid || process.platform === \"win32\") return;\n\ttry {\n\t\tprocess.kill(-child.pid, 0);\n\t\tkillProcessTree(child.pid);\n\t} catch {}\n}\n\nfunction cleanupChildExecution(\n\tchild: ChildProcess,\n\ttimeoutHandle: NodeJS.Timeout | undefined,\n\tremoveAbortListener: () => void,\n): void {\n\tif (child.pid) untrackDetachedChildPid(child.pid);\n\tif (timeoutHandle) clearTimeout(timeoutHandle);\n\tremoveAbortListener();\n}\n\nasync function copyFileStream(sourcePath: string, destinationPath: string): Promise<void> {\n\tawait pipeline(createReadStream(sourcePath), createWriteStream(destinationPath));\n}\n\nfunction writeStreamChunk(stream: WriteStream, chunk: Buffer): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst onError = (error: Error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\treject(error);\n\t\t};\n\t\tstream.once(\"error\", onError);\n\t\tstream.write(chunk, (error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\tif (error) {\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\nfunction endWriteStream(stream: WriteStream): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst onError = (error: Error) => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\treject(error);\n\t\t};\n\t\tstream.once(\"error\", onError);\n\t\tstream.end(() => {\n\t\t\tstream.off(\"error\", onError);\n\t\t\tresolve();\n\t\t});\n\t});\n}\n\nexport class LocalToolOperations implements ToolOperations {\n\tcwd: string;\n\tprivate shellPath: string | undefined;\n\n\tconstructor(cwd: string, options: LocalToolOperationsOptions = {}) {\n\t\tthis.cwd = cwd;\n\t\tthis.shellPath = options.shellPath;\n\t}\n\n\tsetShellPath(shellPath: string | undefined): void {\n\t\tthis.shellPath = shellPath;\n\t}\n\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\tconst timeoutMs = resolveTimeoutMs(options.timeout);\n\t\tconst cwd = options.cwd ?? this.cwd;\n\t\tconst { shell, args } = getShellConfig(this.shellPath);\n\t\ttry {\n\t\t\tawait fsAccess(cwd, constants.F_OK);\n\t\t} catch {\n\t\t\tthrow new Error(`Working directory does not exist: ${cwd}\\nCannot execute bash commands.`);\n\t\t}\n\t\tif (options.signal?.aborted) {\n\t\t\tthrow new Error(\"aborted\");\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst child = spawn(shell, [...args, command], {\n\t\t\t\tcwd,\n\t\t\t\tdetached: process.platform !== \"win32\",\n\t\t\t\tenv: options.env ?? getShellEnv(),\n\t\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\t\twindowsHide: true,\n\t\t\t});\n\t\t\tif (child.pid) trackDetachedChildPid(child.pid);\n\t\t\tlet timedOut = false;\n\t\t\tlet timeoutHandle: NodeJS.Timeout | undefined;\n\t\t\tif (timeoutMs !== undefined) {\n\t\t\t\ttimeoutHandle = setTimeout(() => {\n\t\t\t\t\ttimedOut = true;\n\t\t\t\t\tif (child.pid) killProcessTree(child.pid);\n\t\t\t\t}, timeoutMs);\n\t\t\t}\n\t\t\tchild.stdout?.on(\"data\", options.onData);\n\t\t\tchild.stderr?.on(\"data\", options.onData);\n\t\t\tconst removeAbortListener = registerChildProcessAbort(options.signal, child);\n\t\t\twaitForChildProcess(child)\n\t\t\t\t.then((code) => {\n\t\t\t\t\tterminateLingeringProcessGroup(child);\n\t\t\t\t\tcleanupChildExecution(child, timeoutHandle, removeAbortListener);\n\t\t\t\t\tif (options.signal?.aborted) {\n\t\t\t\t\t\treject(new Error(\"aborted\"));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (timedOut) {\n\t\t\t\t\t\treject(new Error(`timeout:${options.timeout}`));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresolve({ exitCode: code });\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tcleanupChildExecution(child, timeoutHandle, removeAbortListener);\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait fsAccess(path, accessModeToFsMode(mode));\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\treturn fsReadFile(path);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tawait fsWriteFile(path, content, typeof content === \"string\" ? \"utf-8\" : undefined);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tawait copyFileStream(sourcePath, destinationPath);\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tawait copyFileStream(sourcePath, destinationPath);\n\t}\n\n\tasync mkdir(path: string, options: ToolMkdirOptions = {}): Promise<void> {\n\t\tawait fsMkdir(path, { recursive: options.recursive ?? false });\n\t}\n\n\tasync stat(path: string): Promise<Stats> {\n\t\treturn fsStat(path);\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\treturn fsReaddir(path);\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\treturn detectSupportedImageMimeTypeFromFile(path);\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn { type: \"local\", cwd: this.cwd };\n\t}\n}\n\nexport class DeferredRemoteToolOperations implements ToolOperations {\n\tcwd: string;\n\tprivate readonly expectedCwd: string;\n\tprivate operations: RemoteToolOperations | undefined;\n\tprivate hostWorkspaceRoot: string | undefined;\n\tprivate remoteCatalogUnsubscribe: (() => void) | undefined;\n\tprivate readonly catalogListeners = new Set<() => void | Promise<void>>();\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly onDisconnect: ((message: string) => void) | undefined;\n\n\tconstructor(cwd: string, onDisconnect?: (message: string) => void) {\n\t\tthis.cwd = cwd;\n\t\tthis.expectedCwd = cwd;\n\t\tthis.onDisconnect = onDisconnect;\n\t}\n\n\tasync configureRemote(\n\t\turl: string,\n\t\toptions: DeferredRemoteToolOperationsConnectOptions = {},\n\t): Promise<ToolBackendInfo> {\n\t\tconst next = await createRemoteToolOperations(url, { ...options, onDisconnect: this.onDisconnect });\n\t\ttry {\n\t\t\tconst stat = await next.stat(next.cwd);\n\t\t\tif (!stat.isDirectory()) throw new Error(`Remote daemon cwd is not a directory: ${next.cwd}`);\n\t\t\tconst expectedCwd = options.expectedCwd ?? this.expectedCwd;\n\t\t\tif (!workspaceRootsEqual(next.cwd, expectedCwd, next.workspacePathFlavor)) {\n\t\t\t\tthrow new Error(`Remote daemon workspace root mismatch: expected ${expectedCwd}, received ${next.cwd}`);\n\t\t\t}\n\t\t\tconst hostRoot = options.hostWorkspaceRoot ? await fsRealpath(options.hostWorkspaceRoot) : undefined;\n\t\t\tawait this.replaceOperations(next);\n\t\t\tthis.hostWorkspaceRoot = hostRoot;\n\t\t\treturn this.getBackendInfo();\n\t\t} catch (error) {\n\t\t\tawait next.dispose();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tconst previous = this.operations;\n\t\tthis.remoteCatalogUnsubscribe?.();\n\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\tthis.operations = undefined;\n\t\tthis.hostWorkspaceRoot = undefined;\n\t\tawait previous?.dispose?.();\n\t}\n\n\tprivate requireOperations(): RemoteToolOperations {\n\t\tif (!this.operations) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Remote backend is not configured. Configure it over RPC or with /sandbox before using tools.\",\n\t\t\t);\n\t\t}\n\t\treturn this.operations;\n\t}\n\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\treturn this.requireOperations().exec(command, options);\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait this.requireOperations().access(path, mode);\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\treturn this.requireOperations().readFile(path);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tawait this.requireOperations().writeFile(path, content);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tconst operations = this.requireOperations();\n\t\tif (!operations.uploadFile) throw new Error(\"Remote backend does not support file upload\");\n\t\tawait operations.uploadFile(sourcePath, destinationPath);\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tconst operations = this.requireOperations();\n\t\tif (!operations.downloadFile) throw new Error(\"Remote backend does not support file download\");\n\t\tawait operations.downloadFile(sourcePath, destinationPath);\n\t}\n\n\tasync mkdir(path: string, options?: ToolMkdirOptions): Promise<void> {\n\t\tawait this.requireOperations().mkdir(path, options);\n\t}\n\n\tasync stat(path: string): Promise<ToolFileStat> {\n\t\treturn this.requireOperations().stat(path);\n\t}\n\n\tasync resolveWorkspaceDirectory(path: string): Promise<string> {\n\t\treturn this.requireOperations().resolveWorkspaceDirectory(path);\n\t}\n\n\tasync mapWorkspaceDirectoryToHost(guestPath: string): Promise<string> {\n\t\tconst remote = this.requireOperations();\n\t\tconst hostRoot = this.hostWorkspaceRoot;\n\t\tif (!hostRoot || remote.workspacePathFlavor !== \"posix\") {\n\t\t\tthrow new Error(\"No verified host mount mapping is available for this sandbox\");\n\t\t}\n\t\tconst canonicalGuest = await remote.resolveWorkspaceDirectory(posix.resolve(this.cwd, guestPath));\n\t\tconst suffix = posix.relative(remote.cwd, canonicalGuest);\n\t\tif (suffix === \"..\" || suffix.startsWith(\"../\") || posix.isAbsolute(suffix)) {\n\t\t\tthrow new Error(\"Guest directory is outside the mounted workspace\");\n\t\t}\n\t\tconst hostPath = await fsRealpath(resolve(hostRoot, suffix));\n\t\tconst hostRelative = relative(hostRoot, hostPath);\n\t\tif (hostRelative === \"..\" || hostRelative.startsWith(`..${sep}`) || isAbsolute(hostRelative)) {\n\t\t\tthrow new Error(\"Host directory escapes the mounted workspace\");\n\t\t}\n\t\tif (!(await fsStat(hostPath)).isDirectory()) throw new Error(\"Host working directory is not a directory\");\n\t\treturn hostPath;\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\treturn this.requireOperations().readdir(path);\n\t}\n\n\tasync glob(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]> {\n\t\treturn this.requireOperations().glob(pattern, cwd, options);\n\t}\n\n\tasync grep(options: ToolGrepOptions): Promise<ToolGrepResult> {\n\t\treturn this.requireOperations().grep(options);\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\treturn this.requireOperations().detectImageMimeType(path);\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn this.operations?.getBackendInfo() ?? { type: \"remote\", cwd: this.cwd, configured: false };\n\t}\n\tisDisconnected(): boolean {\n\t\treturn this.operations?.isDisconnected() ?? false;\n\t}\n\n\tresolveWorkspaceToolExecution(name: string, parameterSchema: unknown): RemoteWorkspaceToolExecutionTarget {\n\t\treturn this.operations ? this.operations.resolveWorkspaceToolExecution(name, parameterSchema) : \"unavailable\";\n\t}\n\n\texecuteWorkspaceTool(name: string, invocation: WorkspaceToolRemoteInvocation): Promise<AgentToolResult<unknown>> {\n\t\treturn this.requireOperations().executeWorkspaceTool(name, {\n\t\t\t...invocation,\n\t\t\texecutionOptions: {\n\t\t\t\t...invocation.executionOptions,\n\t\t\t\t...(this.cwd === this.requireOperations().cwd ? {} : { cwd: this.cwd }),\n\t\t\t},\n\t\t});\n\t}\n\n\tgetRemoteLspStatus(): RemoteLspStatus {\n\t\treturn this.operations?.getRemoteLspStatus() ?? { enabled: false, servers: [] };\n\t}\n\n\tonWorkspaceToolCatalogChanged(listener: () => void | Promise<void>): () => void {\n\t\tthis.catalogListeners.add(listener);\n\t\treturn () => this.catalogListeners.delete(listener);\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= (async () => {\n\t\t\tthis.remoteCatalogUnsubscribe?.();\n\t\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\t\tconst previous = this.operations;\n\t\t\tthis.operations = undefined;\n\t\t\tthis.hostWorkspaceRoot = undefined;\n\t\t\tawait previous?.dispose?.();\n\t\t})();\n\t\treturn this.disposePromise;\n\t}\n\n\tprivate async replaceOperations(next: RemoteToolOperations): Promise<void> {\n\t\tif (this.disposePromise) {\n\t\t\tawait next.dispose?.();\n\t\t\tthrow new Error(\"Deferred remote backend is disposed\");\n\t\t}\n\t\tconst previous = this.operations;\n\t\tthis.remoteCatalogUnsubscribe?.();\n\t\tthis.remoteCatalogUnsubscribe = undefined;\n\t\tthis.operations = next;\n\t\tthis.cwd = next.cwd;\n\t\tthis.remoteCatalogUnsubscribe = next.onWorkspaceToolCatalogChanged(() =>\n\t\t\tPromise.all([...this.catalogListeners].map((listener) => listener())).then(() => undefined),\n\t\t);\n\t\tawait previous?.dispose?.();\n\t}\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction requireRecord(value: unknown, label: string): Record<string, unknown> {\n\tif (!isRecord(value)) throw new Error(`Invalid remote workspace ${label}`);\n\treturn value;\n}\n\nfunction requireString(value: unknown, label: string): string {\n\tif (typeof value !== \"string\") throw new Error(`Invalid remote workspace ${label}`);\n\treturn value;\n}\n\nfunction normalizeRemoteUrl(url: string): NormalizedRemoteWorkspaceUrl {\n\tconst parsed = new URL(url);\n\tif (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n\t\tthrow new Error(`--remote supports ws:// and wss:// URLs, got ${parsed.protocol}`);\n\t}\n\tif (parsed.username || parsed.password) throw new Error(\"Remote workspace URLs must not contain credentials\");\n\tif (parsed.hash) throw new Error(\"Remote workspace URLs must not contain fragments\");\n\treturn { url: parsed.toString(), protocol: \"ws\" };\n}\n\nfunction websocketPayload(data: RawData): Uint8Array {\n\tif (Buffer.isBuffer(data)) return Uint8Array.from(data);\n\tif (Array.isArray(data)) return Uint8Array.from(Buffer.concat(data));\n\treturn Uint8Array.from(new Uint8Array(data));\n}\n\nfunction websocketCloseCode(reason: RemoteWorkspaceProtocolCloseReason): number {\n\tswitch (reason.code) {\n\t\tcase \"normal\":\n\t\t\treturn 1000;\n\t\tcase \"protocol_error\":\n\t\t\treturn 1002;\n\t\tcase \"invalid_payload\":\n\t\t\treturn 1007;\n\t\tcase \"policy_violation\":\n\t\t\treturn 1008;\n\t\tcase \"message_too_large\":\n\t\t\treturn 1009;\n\t}\n}\n\nexport interface RemoteToolOperationsConnectOptions {\n\ttoken?: string;\n\thandshakeTimeoutMs?: number;\n\tonDisconnect?: (message: string) => void;\n}\n\nexport class RemoteToolOperations implements ToolOperations {\n\treadonly url: string;\n\treadonly protocol: RemoteToolTransportProtocol;\n\tcwd: string;\n\tworkspacePathFlavor: PortablePathFlavor = \"posix\";\n\tprivate workspaceId = \"\";\n\tprivate readonly socket: WebSocket | GuestSharedClientTransport;\n\tprivate readonly isShared: boolean;\n\tprivate readonly client: RemoteWorkspaceClientProtocol;\n\tprivate readonly localToolSchemas = new Map<string, string>();\n\tprivate readonly catalogListeners = new Set<() => void | Promise<void>>();\n\tprivate remoteLspStatus: RemoteLspStatus = { enabled: false, servers: [] };\n\tprivate disconnected = false;\n\tprivate disposePromise: Promise<void> | undefined;\n\n\tprivate constructor(\n\t\turl: string,\n\t\tprotocol: RemoteToolTransportProtocol,\n\t\tsocket: WebSocket | GuestSharedClientTransport,\n\t\toptions: RemoteToolOperationsConnectOptions,\n\t) {\n\t\tthis.url = url;\n\t\tthis.protocol = protocol;\n\t\tthis.socket = socket;\n\t\tthis.isShared = socket instanceof GuestSharedClientTransport;\n\t\tthis.cwd = \"/\";\n\t\tconst transport =\n\t\t\tsocket instanceof GuestSharedClientTransport\n\t\t\t\t? socket\n\t\t\t\t: {\n\t\t\t\t\t\tsend: (message: RemoteWorkspaceClientMessage): Promise<void> =>\n\t\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tif (socket.readyState !== WebSocket.OPEN) {\n\t\t\t\t\t\t\t\t\treject(new Error(\"Remote workspace connection is not open\"));\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsocket.send(JSON.stringify(message), { binary: false, compress: false }, (error) => {\n\t\t\t\t\t\t\t\t\tif (error) reject(error);\n\t\t\t\t\t\t\t\t\telse resolve();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tclose: (reason: RemoteWorkspaceProtocolCloseReason): Promise<void> => {\n\t\t\t\t\t\t\tif (socket.readyState === WebSocket.CLOSED) return Promise.resolve();\n\t\t\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\t\t\tsocket.once(\"close\", () => resolve());\n\t\t\t\t\t\t\t\tsocket.close(websocketCloseCode(reason), reason.message);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\tthis.client = new RemoteWorkspaceClientProtocol(transport, {\n\t\t\trequiredCapabilities: [\"primitive_operations\", \"tool_updates\"],\n\t\t\toptionalCapabilities: this.isShared\n\t\t\t\t? [\"catalog_refresh\", \"artifacts\", \"lsp_status\"]\n\t\t\t\t: [\"catalog_refresh\", \"file_transfer\", \"artifacts\", \"lsp_status\"],\n\t\t\treceiveLimits: DEFAULT_REMOTE_WORKSPACE_PROTOCOL_LIMITS,\n\t\t\tlocalToolSchemas: this.localToolSchemas,\n\t\t\thandshakeTimeoutMs: options.handshakeTimeoutMs,\n\t\t\tonDisconnect: (message) => {\n\t\t\t\tthis.disconnected = true;\n\t\t\t\toptions.onDisconnect?.(message);\n\t\t\t},\n\t\t\tonCatalogRefreshed: async () => {\n\t\t\t\tawait this.refreshRemoteLspStatus();\n\t\t\t\tawait Promise.all([...this.catalogListeners].map((listener) => listener()));\n\t\t\t},\n\t\t});\n\t\tif (socket instanceof GuestSharedClientTransport) {\n\t\t\tsocket.bind(this.client);\n\t\t} else {\n\t\t\tsocket.on(\"message\", (data, isBinary) => {\n\t\t\t\tif (isBinary) {\n\t\t\t\t\tvoid this.client.disconnect(\"Remote workspace sent an unexpected binary frame\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvoid this.client.receive(websocketPayload(data)).catch(() => undefined);\n\t\t\t});\n\t\t\tsocket.on(\"close\", () => void this.client.disconnect(\"Remote workspace connection closed\"));\n\t\t\tsocket.on(\"error\", () => void this.client.disconnect(\"Remote workspace connection failed\"));\n\t\t}\n\t}\n\n\tstatic async connect(url: string, options: RemoteToolOperationsConnectOptions = {}): Promise<RemoteToolOperations> {\n\t\tconst normalized = normalizeRemoteUrl(url);\n\t\tconst token = options.token ?? process.env.GRIP_REMOTE_TOKEN;\n\t\tconst socket = await new Promise<WebSocket>((resolve, reject) => {\n\t\t\tconst websocket = new WebSocket(normalized.url, DAEMON_WEBSOCKET_PROTOCOL, {\n\t\t\t\tperMessageDeflate: false,\n\t\t\t\t...(token ? { headers: { authorization: `Bearer ${token}` } } : {}),\n\t\t\t});\n\t\t\tconst cleanup = () => {\n\t\t\t\twebsocket.off(\"open\", onOpen);\n\t\t\t\twebsocket.off(\"error\", onError);\n\t\t\t};\n\t\t\tconst onOpen = () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(websocket);\n\t\t\t};\n\t\t\tconst onError = () => {\n\t\t\t\tcleanup();\n\t\t\t\twebsocket.terminate();\n\t\t\t\treject(new Error(`Failed to connect remote workspace: ${normalized.url}`));\n\t\t\t};\n\t\t\twebsocket.once(\"open\", onOpen);\n\t\t\twebsocket.once(\"error\", onError);\n\t\t});\n\t\tconst operations = new RemoteToolOperations(normalized.url, normalized.protocol, socket, options);\n\t\ttry {\n\t\t\tconst handshake = await operations.client.start();\n\t\t\toperations.cwd = handshake.workspace.root;\n\t\t\toperations.workspacePathFlavor = handshake.workspace.pathFlavor;\n\t\t\toperations.workspaceId = handshake.workspace.id;\n\t\t\tawait operations.refreshRemoteLspStatus();\n\t\t\treturn operations;\n\t\t} catch (error) {\n\t\t\tsocket.terminate();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic async connectGuestShared(\n\t\turl: string,\n\t\troot: string,\n\t\ttoken: string,\n\t\toptions: RemoteToolOperationsConnectOptions = {},\n\t): Promise<RemoteToolOperations> {\n\t\tconst socket = await GuestSharedClientTransport.attach(url, root, token);\n\t\tconst operations = new RemoteToolOperations(url, \"ws\", socket, options);\n\t\ttry {\n\t\t\tconst handshake = await operations.client.start();\n\t\t\tif (!workspaceRootsEqual(handshake.workspace.root, root, handshake.workspace.pathFlavor)) {\n\t\t\t\tthrow new Error(\"Guest shared workspace root differs from daemon handshake\");\n\t\t\t}\n\t\t\toperations.cwd = handshake.workspace.root;\n\t\t\toperations.workspacePathFlavor = handshake.workspace.pathFlavor;\n\t\t\toperations.workspaceId = handshake.workspace.id;\n\t\t\tawait operations.refreshRemoteLspStatus();\n\t\t\treturn operations;\n\t\t} catch (error) {\n\t\t\tawait socket.close({ code: \"normal\", message: \"Shared guest attach failed\" });\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tresolveWorkspaceToolExecution(name: string, parameterSchema: unknown): RemoteWorkspaceToolExecutionTarget {\n\t\tconst schemaHash = hashRemoteWorkspaceJson(parameterSchema);\n\t\tconst catalogTool = this.client.handshake?.catalog.tools.find((tool) => tool.name === name);\n\t\tif (!catalogTool) return \"unavailable\";\n\t\tif (catalogTool.schemaHash !== schemaHash) {\n\t\t\tthrow new Error(`Remote tool schema does not match the local canonical definition: ${name}`);\n\t\t}\n\t\tthis.localToolSchemas.set(name, schemaHash);\n\t\tthis.client.setLocalToolSchemas(this.localToolSchemas);\n\t\treturn \"remote\";\n\t}\n\n\tasync executeWorkspaceTool(\n\t\tname: string,\n\t\tinvocation: WorkspaceToolRemoteInvocation,\n\t): Promise<AgentToolResult<unknown>> {\n\t\tconst invoke = async () => {\n\t\t\tawait this.client.waitForCatalogRefresh();\n\t\t\tconst handshake = this.client.handshake;\n\t\t\tif (!handshake) throw new Error(\"Remote workspace protocol handshake is unavailable\");\n\t\t\tconst catalogTool = handshake.catalog.tools.find((tool) => tool.name === name);\n\t\t\tconst schemaHash = this.localToolSchemas.get(name);\n\t\t\tif (!catalogTool || !schemaHash || catalogTool.schemaHash !== schemaHash) {\n\t\t\t\tthrow new Error(`Remote tool is unavailable or has schema drift: ${name}`);\n\t\t\t}\n\t\t\tconst expectedRevision = await this.revisionForTool(name, invocation);\n\t\t\tconst result = requireRecord(\n\t\t\t\tawait this.client.request(\n\t\t\t\t\t\"tool.invoke\",\n\t\t\t\t\t{\n\t\t\t\t\t\tgeneration: handshake.catalog.generation,\n\t\t\t\t\t\tcatalogHash: handshake.catalogHash,\n\t\t\t\t\t\ttoolName: name,\n\t\t\t\t\t\tschemaHash,\n\t\t\t\t\t\targumentsPrepared: true,\n\t\t\t\t\t\targuments: invocation.arguments,\n\t\t\t\t\t\t...(expectedRevision ? { expectedRevision } : {}),\n\t\t\t\t\t\texecutionOptions: invocation.executionOptions,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tsignal: invocation.signal,\n\t\t\t\t\t\tonUpdate: invocation.onUpdate\n\t\t\t\t\t\t\t? (update) =>\n\t\t\t\t\t\t\t\t\tinvocation.onUpdate!(parseRemoteWorkspaceToolResult(update) as AgentToolResult<unknown>)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t\t\"tool result\",\n\t\t\t);\n\t\t\tconst toolResult = result;\n\t\t\tif (!Array.isArray(toolResult.content)) throw new Error(\"Invalid remote workspace tool result content\");\n\t\t\tif (name.startsWith(\"lsp_\")) await this.refreshRemoteLspStatus().catch(() => undefined);\n\t\t\treturn {\n\t\t\t\tcontent: toolResult.content as AgentToolResult<unknown>[\"content\"],\n\t\t\t\tdetails: toolResult.details,\n\t\t\t\t...(typeof toolResult.terminate === \"boolean\" ? { terminate: toolResult.terminate } : {}),\n\t\t\t};\n\t\t};\n\t\ttry {\n\t\t\treturn await invoke();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof RemoteWorkspaceRequestError &&\n\t\t\t\terror.code === \"stale_generation\" &&\n\t\t\t\terror.executionState === \"not_started\"\n\t\t\t) {\n\t\t\t\treturn invoke();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tgetRemoteLspStatus(): RemoteLspStatus {\n\t\treturn structuredClone(this.remoteLspStatus);\n\t}\n\n\tonWorkspaceToolCatalogChanged(listener: () => void | Promise<void>): () => void {\n\t\tthis.catalogListeners.add(listener);\n\t\treturn () => this.catalogListeners.delete(listener);\n\t}\n\n\tprivate async refreshRemoteLspStatus(): Promise<void> {\n\t\tif (!this.client.handshake?.catalog.operations.includes(\"lsp.status\")) {\n\t\t\tthis.remoteLspStatus = { enabled: false, servers: [] };\n\t\t\treturn;\n\t\t}\n\t\tthis.remoteLspStatus = (await this.client.request(\"lsp.status\", {})) as RemoteLspStatus;\n\t}\n\n\tprivate request(method: RemoteWorkspaceMethod, params: unknown) {\n\t\treturn this.client.request(method, params);\n\t}\n\n\tprivate async revisionForTool(\n\t\tname: string,\n\t\tinvocation: WorkspaceToolRemoteInvocation,\n\t): Promise<SharedExpectedRevision | undefined> {\n\t\tif (!this.isShared || (name !== \"edit\" && name !== \"write\")) return undefined;\n\t\tconst path = requireString(\n\t\t\trequireRecord(invocation.arguments, \"shared mutation arguments\").path,\n\t\t\t\"shared mutation path\",\n\t\t);\n\t\tconst cwd = invocation.executionOptions.cwd;\n\t\tconst target = cwd ? (this.workspacePathFlavor === \"windows\" ? win32 : posix).resolve(cwd, path) : path;\n\t\treturn this.sharedExpectedRevision(target, invocation.signal, name === \"write\");\n\t}\n\n\t/** Observe exact bytes for CAS, or a daemon-confirmed absent target for creation. */\n\tprivate async sharedExpectedRevision(\n\t\tpath: string,\n\t\tsignal?: AbortSignal,\n\t\tallowAbsent = true,\n\t): Promise<SharedExpectedRevision> {\n\t\tlet read: unknown;\n\t\ttry {\n\t\t\tread = await this.client.request(\"workspace.read\", { path }, { signal });\n\t\t} catch (error) {\n\t\t\tif (!allowAbsent) throw error;\n\t\t\t// Do not infer absence from an error message: only a v2 server stat of the\n\t\t\t// same workspace and path may establish the expected-absent precondition.\n\t\t\tconst stat = requireRecord(\n\t\t\t\tawait this.client.request(\"workspace.stat\", { path }, { signal }),\n\t\t\t\t\"shared stat result\",\n\t\t\t);\n\t\t\tif (stat.kind !== \"absent\") throw error;\n\t\t\treturn { absent: true };\n\t\t}\n\t\tconst result = requireRecord(read, \"shared read result\");\n\t\tconst content = decodeCanonicalBase64(\n\t\t\trequireString(result.contentBase64, \"shared read content\"),\n\t\t\tNumber.MAX_SAFE_INTEGER,\n\t\t);\n\t\tconst sha256 = createHash(\"sha256\").update(content).digest(\"hex\");\n\t\tif (result.revision !== sha256) throw new Error(\"Shared daemon did not confirm the observed file revision\");\n\t\treturn { sha256 };\n\t}\n\tasync exec(command: string, options: ToolExecOptions): Promise<ToolExecResult> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.client.request(\n\t\t\t\t\"workspace.exec\",\n\t\t\t\t{ command, cwd: options.cwd ?? this.cwd },\n\t\t\t\t{\n\t\t\t\t\tsignal: options.signal,\n\t\t\t\t\ttimeoutMs: options.timeout === undefined ? undefined : Math.round(options.timeout * 1000),\n\t\t\t\t\tonUpdate: (update) => {\n\t\t\t\t\t\tconst record = requireRecord(update, \"exec update\");\n\t\t\t\t\t\toptions.onData(\n\t\t\t\t\t\t\tdecodeCanonicalBase64(requireString(record.dataBase64, \"exec update data\"), 1024 * 1024),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t),\n\t\t\t\"exec result\",\n\t\t);\n\t\treturn { exitCode: typeof result.exitCode === \"number\" ? result.exitCode : null };\n\t}\n\n\tasync access(path: string, mode?: ToolAccessMode): Promise<void> {\n\t\tawait this.request(\"workspace.access\", { path, ...(mode ? { mode } : {}) });\n\t}\n\n\tasync readFile(path: string): Promise<Buffer> {\n\t\tconst result = requireRecord(await this.request(\"workspace.read\", { path }), \"read result\");\n\t\treturn decodeCanonicalBase64(requireString(result.contentBase64, \"read content\"), Number.MAX_SAFE_INTEGER);\n\t}\n\n\tasync writeFile(path: string, content: string | Buffer): Promise<void> {\n\t\tconst expectedRevision = this.isShared ? await this.sharedExpectedRevision(path) : undefined;\n\t\tawait this.request(\"workspace.write\", {\n\t\t\tpath,\n\t\t\tcontentBase64: Buffer.from(content).toString(\"base64\"),\n\t\t\t...(expectedRevision ? { expectedRevision } : {}),\n\t\t});\n\t}\n\n\tasync readResource(path: string): Promise<Buffer> {\n\t\tif (!this.client.handshake?.catalog.operations.includes(\"resource.read\")) {\n\t\t\tthrow new Error(\"Remote workspace does not expose resource reads\");\n\t\t}\n\t\tconst result = requireRecord(await this.request(\"resource.read\", { path }), \"resource read result\");\n\t\treturn decodeCanonicalBase64(\n\t\t\trequireString(result.contentBase64, \"resource read content\"),\n\t\t\tNumber.MAX_SAFE_INTEGER,\n\t\t);\n\t}\n\n\tasync uploadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tif (this.isShared) throw new Error(\"Shared guest file transfers are unavailable\");\n\t\tconst content = await fsReadFile(sourcePath);\n\t\tconst sha256 = createHash(\"sha256\").update(content).digest(\"hex\");\n\t\tconst handle = this.client.beginRequest(\"transfer.upload\", {\n\t\t\tpath: destinationPath,\n\t\t\tlength: content.byteLength,\n\t\t\tsha256,\n\t\t\toverwrite: true,\n\t\t});\n\t\tconst chunkBytes = this.client.handshake?.limits.maxTransferChunkBytes ?? 64 * 1024;\n\t\tfor (let offset = 0; offset < content.byteLength; offset += chunkBytes) {\n\t\t\tawait handle.sendTransferChunk(content.subarray(offset, Math.min(offset + chunkBytes, content.byteLength)));\n\t\t}\n\t\tawait handle.finishTransfer(content.byteLength, sha256);\n\t\tawait handle.result;\n\t}\n\n\tasync downloadFile(sourcePath: string, destinationPath: string): Promise<void> {\n\t\tif (this.isShared) throw new Error(\"Shared guest file transfers are unavailable\");\n\t\tconst stream = createWriteStream(destinationPath);\n\t\ttry {\n\t\t\tawait this.client.request(\n\t\t\t\t\"transfer.download\",\n\t\t\t\t{ path: sourcePath },\n\t\t\t\t{\n\t\t\t\t\tonTransferChunk: (chunk) => writeStreamChunk(stream, chunk),\n\t\t\t\t},\n\t\t\t);\n\t\t\tawait endWriteStream(stream);\n\t\t} catch (error) {\n\t\t\tstream.destroy();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync mkdir(path: string, options: ToolMkdirOptions = {}): Promise<void> {\n\t\tawait this.request(\"workspace.mkdir\", { path, recursive: options.recursive ?? false });\n\t}\n\n\tasync stat(path: string): Promise<ToolFileStat> {\n\t\tconst result = requireRecord(await this.request(\"workspace.stat\", { path }), \"stat result\");\n\t\tif (result.kind === \"absent\") throw new Error(`Remote workspace path does not exist: ${path}`);\n\t\treturn {\n\t\t\tisDirectory: () => result.kind === \"directory\",\n\t\t\tisFile: () => result.kind === \"file\",\n\t\t};\n\t}\n\n\tasync resolveWorkspaceDirectory(path: string): Promise<string> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.request(\"workspace.stat\", { path, workspaceOnly: true }),\n\t\t\t\"workspace directory result\",\n\t\t);\n\t\tif (result.kind !== \"directory\") throw new Error(`Not a workspace directory: ${path}`);\n\t\treturn requireString(result.canonicalPath, \"workspace directory canonical path\");\n\t}\n\n\tasync readdir(path: string): Promise<string[]> {\n\t\tconst result = requireRecord(await this.request(\"workspace.readdir\", { path }), \"readdir result\");\n\t\tif (!Array.isArray(result.entries) || !result.entries.every((entry) => typeof entry === \"string\")) {\n\t\t\tthrow new Error(\"Invalid remote workspace readdir entries\");\n\t\t}\n\t\treturn result.entries;\n\t}\n\n\tasync glob(pattern: string, cwd: string, options: ToolGlobOptions): Promise<string[]> {\n\t\tconst result = requireRecord(\n\t\t\tawait this.request(\"workspace.glob\", { pattern, cwd, ignore: options.ignore, limit: options.limit }),\n\t\t\t\"glob result\",\n\t\t);\n\t\tif (!Array.isArray(result.matches) || !result.matches.every((entry) => typeof entry === \"string\")) {\n\t\t\tthrow new Error(\"Invalid remote workspace glob matches\");\n\t\t}\n\t\treturn result.matches;\n\t}\n\n\tasync grep(options: ToolGrepOptions): Promise<ToolGrepResult> {\n\t\tconst result = requireRecord(await this.request(\"workspace.grep\", options), \"grep result\");\n\t\tif (!Array.isArray(result.matches)) throw new Error(\"Invalid remote workspace grep matches\");\n\t\treturn {\n\t\t\tisDirectory: result.isDirectory === true,\n\t\t\tmatches: result.matches.map((entry) => {\n\t\t\t\tconst match = requireRecord(entry, \"grep match\");\n\t\t\t\treturn {\n\t\t\t\t\tfilePath: requireString(match.filePath, \"grep file path\"),\n\t\t\t\t\tlineNumber: typeof match.lineNumber === \"number\" ? match.lineNumber : 0,\n\t\t\t\t\t...(typeof match.lineText === \"string\" ? { lineText: match.lineText } : {}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t}\n\n\tasync detectImageMimeType(path: string): Promise<string | null | undefined> {\n\t\tconst result = requireRecord(await this.request(\"workspace.detect_image_mime\", { path }), \"image MIME result\");\n\t\treturn typeof result.mimeType === \"string\" ? result.mimeType : null;\n\t}\n\n\tgetBackendInfo(): ToolBackendInfo {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\tcwd: this.cwd,\n\t\t\turl: this.url,\n\t\t\tprotocol: this.protocol,\n\t\t\tconfigured: true,\n\t\t\tworkspace: { id: this.workspaceId, root: this.cwd, pathFlavor: this.workspacePathFlavor },\n\t\t};\n\t}\n\tisDisconnected(): boolean {\n\t\treturn this.disconnected;\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= this.client.close().catch(() => {\n\t\t\tif (this.socket instanceof WebSocket) this.socket.terminate();\n\t\t});\n\t\treturn this.disposePromise;\n\t}\n}\n\nexport function createRemoteToolOperations(\n\turl: string,\n\toptions?: RemoteToolOperationsConnectOptions,\n): Promise<RemoteToolOperations> {\n\tif (url.startsWith(\"grip+ws:\")) {\n\t\tconst parsed = new URL(url.replace(/^grip\\+/, \"\"));\n\t\tconst root = parsed.searchParams.get(\"root\");\n\t\tif (!root || !posix.isAbsolute(root) || parsed.searchParams.size !== 1 || !options?.token) {\n\t\t\treturn Promise.reject(new Error(\"Invalid guest shared workspace attachment\"));\n\t\t}\n\t\tparsed.search = \"\";\n\t\treturn RemoteToolOperations.connectGuestShared(parsed.toString(), root, options.token, options);\n\t}\n\treturn RemoteToolOperations.connect(url, options);\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { type FileOperations, serializeConversation } from "./core/compaction/ut
8
8
  export { createEventBus, type EventBus, type EventBusController } from "./core/event-bus.ts";
9
9
  export { createExtensionRuntime, discoverAndLoadExtensions } from "./core/extensions/loader.ts";
10
10
  export { ExtensionRunner } from "./core/extensions/runner.ts";
11
- export type { AgentEndEvent, AgentSettledEvent, AgentStartEvent, AgentToolResult, AgentToolUpdateCallback, AppKeybinding, AutocompleteProviderFactory, BashResult, BashToolCallEvent, BeforeAgentStartEvent, BeforeAgentStartEventResult, BeforeProviderHeadersEvent, BeforeProviderRequestEvent, BeforeProviderRequestEventResult, BuildSystemPromptOptions, CompactOptions, ContextEvent, ContextUsage, CustomToolCallEvent, EditToolCallEvent, ExecOptions, ExecResult, Extension, ExtensionActions, ExtensionAPI, ExtensionCommandContext, ExtensionCommandContextActions, ExtensionContext, ExtensionContextActions, ExtensionError, ExtensionEvent, ExtensionFactory, ExtensionFlag, ExtensionHandler, ExtensionNotificationType, ExtensionRuntime, ExtensionShortcut, ExtensionToolBackendExecOptions, ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetOptions, FindToolCallEvent, GrepToolCallEvent, InputEvent, InputEventResult, InputSource, KeybindingsManager, LoadExtensionsResult, LsToolCallEvent, MarkdownTransformContext, MarkdownTransformer, MessageRenderer, MessageRenderOptions, ProviderConfig, ProviderModelConfig, ReadToolCallEvent, RegisteredCommand, RegisteredTool, ResolvedCommand, SessionBeforeCompactEvent, SessionBeforeForkEvent, SessionBeforeSwitchEvent, SessionBeforeTreeEvent, SessionCompactEvent, SessionInfoChangedEvent, SessionShutdownEvent, SessionShutdownReason, SessionStartEvent, SessionTreeEvent, SubagentToolCallEvent, TerminalInputHandler, ToolCallEvent, ToolCallEventResult, ToolDefinition, ToolExecutionMode, ToolInfo, ToolRenderResultOptions, ToolResultEvent, TurnEndEvent, TurnStartEvent, UserBashEvent, UserBashEventResult, WebsearchToolCallEvent, WebsearchToolResultEvent, WidgetPlacement, WorkingIndicatorOptions, WriteToolCallEvent, } from "./core/extensions/types.ts";
11
+ export type { AgentEndEvent, AgentSettledEvent, AgentStartEvent, AgentToolResult, AgentToolUpdateCallback, AppKeybinding, AutocompleteProviderFactory, BashResult, BashToolCallEvent, BeforeAgentStartEvent, BeforeAgentStartEventResult, BeforeProviderHeadersEvent, BeforeProviderRequestEvent, BeforeProviderRequestEventResult, BuildSystemPromptOptions, CompactOptions, ContextEvent, ContextUsage, CustomToolCallEvent, EditToolCallEvent, ExecOptions, ExecResult, Extension, ExtensionActions, ExtensionAPI, ExtensionCommandContext, ExtensionCommandContextActions, ExtensionContext, ExtensionContextActions, ExtensionError, ExtensionEvent, ExtensionFactory, ExtensionFlag, ExtensionHandler, ExtensionHostCommandOptions, ExtensionHostProcessOptions, ExtensionNotificationType, ExtensionRuntime, ExtensionShortcut, ExtensionToolBackendExecOptions, ExtensionUIContext, ExtensionUIDialogOptions, ExtensionWidgetOptions, FindToolCallEvent, GrepToolCallEvent, InputEvent, InputEventResult, InputSource, KeybindingsManager, LoadExtensionsResult, LsToolCallEvent, MarkdownTransformContext, MarkdownTransformer, MessageRenderer, MessageRenderOptions, ProviderConfig, ProviderModelConfig, ReadToolCallEvent, RegisteredCommand, RegisteredTool, ResolvedCommand, SessionBeforeCompactEvent, SessionBeforeForkEvent, SessionBeforeSwitchEvent, SessionBeforeTreeEvent, SessionCompactEvent, SessionInfoChangedEvent, SessionShutdownEvent, SessionShutdownReason, SessionStartEvent, SessionTreeEvent, SubagentToolCallEvent, TerminalInputHandler, ToolCallEvent, ToolCallEventResult, ToolDefinition, ToolExecutionMode, ToolInfo, ToolRenderResultOptions, ToolResultEvent, TurnEndEvent, TurnStartEvent, UserBashEvent, UserBashEventResult, WebsearchToolCallEvent, WebsearchToolResultEvent, WidgetPlacement, WorkingIndicatorOptions, WriteToolCallEvent, } from "./core/extensions/types.ts";
12
12
  export { defineTool, isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isSubagentToolResult, isToolCallEventType, isWebsearchToolResult, isWriteToolResult, } from "./core/extensions/types.ts";
13
13
  export { wrapRegisteredTool, wrapRegisteredTools } from "./core/extensions/wrapper.ts";
14
14
  export type { ReadonlyFooterDataProvider } from "./core/footer-data-provider.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAG1B,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAEN,YAAY,EAaZ,eAAe,GAWf,MAAM,yBAAyB,CAAC;AACjC,0BAA0B;AAC1B,OAAO,EAKN,WAAW,EAEX,sBAAsB,EACtB,0BAA0B,GAE1B,MAAM,wBAAwB,CAAC;AAChC,aAAa;AACb,OAAO,EAIN,8BAA8B,EAE9B,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAGN,sBAAsB,EACtB,OAAO,EACP,2BAA2B,EAC3B,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,aAAa,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAuB,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,cAAc,EAA0C,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AA2F9D,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGvF,OAAO,EAEN,SAAS,GAQT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,mCAAmC,EAGnC,yBAAyB,GAIzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,SAAS,GAOT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAuBN,qBAAqB,EAErB,uBAAuB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAON,oBAAoB,EACpB,iCAAiC,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,wBAAwB,EACxB,mCAAmC,GAEnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,WAAW,GAIX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EAMd,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,aAAa,EAIb,SAAS,GAGT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAON,UAAU,GAIV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,GAGvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,wBAAwB,EACxB,mBAAmB,GAGnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,mCAAmC,EACnC,gCAAgC,EAChC,0BAA0B,EAC1B,iCAAiC,EAQjC,2BAA2B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAQlE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,QAAQ;AACR,OAAO,EACN,oBAAoB,EAKpB,SAAS,EACT,gBAAgB,EAGhB,UAAU,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EACN,gBAAgB,EAGhB,iBAAiB,GAGjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAKN,mBAAmB,EACnB,wBAAwB,EAGxB,0BAA0B,GAG1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAmBzF,OAAO,EAQN,eAAe,GAEf,MAAM,4BAA4B,CAAC;AACpC,SAAS;AACT,OAAO,EACN,qBAAqB,EAKrB,UAAU,EACV,iBAAiB,EAGjB,WAAW,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,QAAQ;AACR,OAAO,EAMN,cAAc,EACd,wBAAwB,EACxB,yBAAyB,GAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,cAAc,EACd,wBAAwB,GAIxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACN,cAAc,EACd,wBAAwB,GAIxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,cAAc,EACd,wBAAwB,GAIxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAqB,MAAM,uBAAuB,CAAC;AAClG,OAAO,EACN,YAAY,EACZ,sBAAsB,GAItB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,0BAA0B,EAC1B,4BAA4B,EAE5B,mBAAmB,EAEnB,oBAAoB,GAapB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,cAAc,EACd,wBAAwB,GAMxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,yBAAyB,EACzB,mCAAmC,EACnC,uBAAuB,EACvB,iCAAiC,GAOjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,kBAAkB,EAClB,4BAA4B,GAa5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EAGV,YAAY,EACZ,YAAY,EACZ,YAAY,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,mBAAmB,EACnB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,GAOzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACN,oBAAoB,EAGpB,iBAAiB,GAKjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACN,eAAe,EACf,yBAAyB,GAGzB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EAAoB,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,+BAA+B;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,0DAA0D,CAAC;AACzG,OAAO,EAAE,iCAAiC,EAAE,MAAM,8DAA8D,CAAC;AACjH,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAA0B,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,kDAAkD,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAGN,yBAAyB,GACzB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wDAAwD,CAAC;AACrG,OAAO,EAAE,+BAA+B,EAAE,MAAM,4DAA4D,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EACN,sBAAsB,GAGtB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,EAAE,qBAAqB,EAA6B,MAAM,mDAAmD,CAAC;AACrH,uCAAuC;AACvC,OAAO,EAAE,eAAe,EAA+B,MAAM,yCAAyC,CAAC;AACvG,kDAAkD;AAClD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,KAAK,GAEL,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAA+C,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAEN,SAAS,GAKT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAYrD,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["// Core session management\n\nexport type { TuiMode } from \"@greppleai/grip-tui\";\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.ts\";\nexport {\n\ttype ActivateSandboxDaemonOptions,\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype AgentSessionReloadResult,\n\ttype ConfigureRemoteSandboxOptions,\n\ttype ExecuteBashOptions,\n\ttype ForkableUserMessage,\n\ttype ModelCycleResult,\n\ttype NavigateTreeOptions,\n\ttype NavigateTreeResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype QueuedMessages,\n\ttype RecordBashResultOptions,\n\ttype RegisterSessionToolOptions,\n\ttype SendCustomMessageOptions,\n\ttype SendUserMessageOptions,\n\ttype SessionRuleRegistration,\n\ttype SessionSkillRegistration,\n\ttype SessionStats,\n\ttype StructuredResponse,\n\ttype StructuredResponseOptions,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthApiKeyLookupOptions,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\tcollectEntriesForBranchSummary,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tprepareBranchEntries,\n} from \"./core/compaction/branch-summarization.ts\";\nexport {\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tshouldCompact,\n} from \"./core/compaction/compaction.ts\";\nexport { type FileOperations, serializeConversation } from \"./core/compaction/utils.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\nexport { createExtensionRuntime, discoverAndLoadExtensions } from \"./core/extensions/loader.ts\";\nexport { ExtensionRunner } from \"./core/extensions/runner.ts\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppKeybinding,\n\tAutocompleteProviderFactory,\n\tBashResult,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBuildSystemPromptOptions,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionNotificationType,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionToolBackendExecOptions,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMarkdownTransformContext,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tResolvedCommand,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionShutdownReason,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSubagentToolCallEvent,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolDefinition,\n\tToolExecutionMode,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWebsearchToolCallEvent,\n\tWebsearchToolResultEvent,\n\tWidgetPlacement,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n} from \"./core/extensions/types.ts\";\nexport {\n\tdefineTool,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisGrepToolResult,\n\tisLsToolResult,\n\tisReadToolResult,\n\tisSubagentToolResult,\n\tisToolCallEventType,\n\tisWebsearchToolResult,\n\tisWriteToolResult,\n} from \"./core/extensions/types.ts\";\nexport { wrapRegisteredTool, wrapRegisteredTools } from \"./core/extensions/wrapper.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport {\n\ttype CreateGripAgentOptions,\n\tGripAgent,\n\ttype GripAgentDiagnostic,\n\ttype GripAgentHooksOptions,\n\ttype GripAgentRuntimeHost,\n\ttype GripAgentServices,\n\ttype GripAgentSessionOptions,\n\ttype ResolveGripAgentSessionOptionsContext,\n\ttype ResolveGripAgentSessionOptionsResult,\n} from \"./core/grip-agent.ts\";\nexport {\n\tformatInstructionResourcesForPrompt,\n\ttype InstructionResource,\n\ttype InstructionResourceFrontmatter,\n\tInstructionResourceLoader,\n\ttype InstructionResourceLoaderConfig,\n\ttype InstructionResourceLoaderOptions,\n\ttype InstructionResourceLoaderWithOperationsOptions,\n} from \"./core/instruction-resource-loader.ts\";\nexport {\n\tLspClient,\n\ttype LspClientOptions,\n\ttype LspClientOwnership,\n\ttype LspClientStartResult,\n\ttype LspConnectionState,\n\ttype LspDocumentSyncCapabilities,\n\ttype LspShutdownMode,\n} from \"./core/lsp/client.ts\";\nexport {\n\ttype LspClientInfo,\n\ttype LspConfigurationDiagnostic,\n\ttype LspConfigurationLayer,\n\ttype LspConfigurationMode,\n\ttype LspConfiguredServer,\n\ttype LspDisabledServer,\n\ttype LspDocumentSelector,\n\ttype LspJsonValue,\n\ttype LspNamedPipeTransport,\n\ttype LspPathMapping,\n\ttype LspProgrammaticTransport,\n\ttype LspServerEntry,\n\ttype LspServerFeatures,\n\ttype LspServerLifecycle,\n\ttype LspServerTimeouts,\n\ttype LspSpawnTransport,\n\ttype LspTcpTransport,\n\ttype LspTraceValue,\n\ttype LspTransport,\n\ttype LspUnixSocketTransport,\n\ttype LspWorkspaceRoot,\n\ttype ParseLspConfigurationResult,\n\tparseLspConfiguration,\n\ttype ResolvedLspConfiguration,\n\tresolveLspConfiguration,\n} from \"./core/lsp/config.ts\";\nexport {\n\ttype LoadLspConfigurationOptions,\n\ttype LoadLspConfigurationResult,\n\ttype LspConfigurationInput,\n\ttype LspConfigurationInputScope,\n\ttype LspConfigurationSourceDiagnostic,\n\ttype LspConfigurationSourceDiagnosticSeverity,\n\tloadLspConfiguration,\n\tresolveLspConfigurationLayerPaths,\n} from \"./core/lsp/config-loader.ts\";\nexport {\n\tcreateLspDiagnosticsTool,\n\tformatAutoDiagnosticsForChangedFile,\n\ttype LspDiagnosticsDetails,\n} from \"./core/lsp/diagnostics.ts\";\nexport {\n\tLspFileSync,\n\ttype LspSynchronizationFailure,\n\ttype LspSynchronizationResult,\n\ttype LspTrackedDocument,\n} from \"./core/lsp/file-sync.ts\";\nexport {\n\tcreateLspRuntimeState,\n\tcreateLspToolDefinitions,\n\tLSP_TOOL_NAMES,\n\ttype LspLifecycleOptions,\n\ttype LspRuntimeOwner,\n\ttype LspRuntimeState,\n\ttype LspSessionStatus,\n\ttype LspToolName,\n\tregisterLspLifecycleHandlers,\n\tregisterStandaloneLspLifecycleHandlers,\n} from \"./core/lsp/integration.ts\";\nexport {\n\tLspPathMapper,\n\ttype LspPathMappingResult,\n\ttype LspRouteFailure,\n\ttype LspRouteResult,\n\tLspRouter,\n\ttype LspRouterOptions,\n\ttype LspRouteTarget,\n} from \"./core/lsp/language-map.ts\";\nexport {\n\ttype LspClientRoute,\n\ttype LspClientRouteCollection,\n\ttype LspClientRouteFailure,\n\ttype LspClientStartedListener,\n\ttype LspClientsWillShutdownListener,\n\ttype LspConnectionFactoryResolver,\n\tLspManager,\n\ttype LspManagerOptions,\n\ttype LspServerStatus,\n\ttype LspToolFeature,\n} from \"./core/lsp/manager.ts\";\nexport {\n\tcreateLspDefinitionTool,\n\tcreateLspHoverTool,\n\tcreateLspReferencesTool,\n\ttype LspHoverDetails,\n\ttype LspLocationDetails,\n} from \"./core/lsp/navigation.ts\";\nexport {\n\tcreateLspCodeActionsTool,\n\tcreateLspRenameTool,\n\ttype LspCodeActionsDetails,\n\ttype LspRenameDetails,\n} from \"./core/lsp/refactor.ts\";\nexport {\n\tcreateManagedStdioConnectionFactory,\n\tcreateNamedPipeConnectionFactory,\n\tcreateTcpConnectionFactory,\n\tcreateUnixSocketConnectionFactory,\n\ttype LspConnectionDisposalMode,\n\ttype LspConnectionEndpoint,\n\ttype LspConnectionFactory,\n\ttype LspConnectionFactoryContext,\n\ttype LspConnectionFactoryRegistry,\n\ttype LspConnectionHandle,\n\ttype ManagedStdioConnectionOptions,\n\tresolveLspConnectionFactory,\n} from \"./core/lsp/transport.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type { ScopedModel } from \"./core/model-resolver.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type { PromptTemplate } from \"./core/prompt-templates.ts\";\nexport type {\n\tProjectContextFile,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n} from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// Rules\nexport {\n\tformatRulesForPrompt,\n\ttype LoadRulesFromDirOptions,\n\ttype LoadRulesOptions,\n\ttype LoadRulesResult,\n\ttype LoadRulesWithOperationsOptions,\n\tloadRules,\n\tloadRulesFromDir,\n\ttype Rule,\n\ttype RuleFrontmatter,\n\tRuleLoader,\n} from \"./core/rules.ts\";\nexport { CURRENT_SESSION_VERSION } from \"./core/session/constants.ts\";\nexport { buildSessionContext, getLatestCompactionEntry } from \"./core/session/context.ts\";\nexport { InMemorySessionManager } from \"./core/session/in-memory-session-manager.ts\";\nexport {\n\tJsonlDecodeError,\n\ttype JsonlDecodeKind,\n\ttype JsonlErrorPhase,\n\tJsonlSessionError,\n\ttype JsonlSessionErrorCode,\n\ttype JsonlWriteOutcome,\n} from \"./core/session/jsonl-errors.ts\";\nexport { LocalSessionManager } from \"./core/session/local-session-manager.ts\";\nexport { migrateSessionEntries, parseSessionEntries } from \"./core/session/migrations.ts\";\nexport {\n\ttype AppendRemoteSessionEntriesRequest,\n\ttype CreateRemoteSessionRequest,\n\ttype ForkRemoteSessionRequest,\n\ttype ImportRemoteSessionJsonlRequest,\n\tRemoteSessionClient,\n\tRemoteSessionClientError,\n\ttype RemoteSessionClientOptions,\n\ttype RemoteSessionOperation,\n\tRemoteSessionProtocolError,\n\ttype RemoteSessionSnapshot,\n\ttype ReplaceRemoteSessionSnapshotRequest,\n} from \"./core/session/remote-session-client.ts\";\nexport { RemoteSessionManager } from \"./core/session/remote-session-manager.ts\";\nexport type { SessionManager } from \"./core/session/session-manager.ts\";\nexport { SessionAlreadyExistsError } from \"./core/session/stores/jsonl-session-store.ts\";\nexport type {\n\tBranchSummaryEntry,\n\tCompactionEntry,\n\tCustomEntry,\n\tCustomMessageEntry,\n\tFileEntry,\n\tModelChangeEntry,\n\tNewSessionOptions,\n\tSessionContext,\n\tSessionEntry,\n\tSessionEntryBase,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionInfoEntry,\n\tSessionMessageEntry,\n\tSessionTreeNode,\n\tThinkingLevelChangeEntry,\n} from \"./core/session/types.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype FullscreenExitOutput,\n\ttype ImageSettings,\n\ttype MarkdownSettings,\n\ttype MermaidRenderingMode,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype ToolSettings,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsOptions,\n\ttype LoadSkillsResult,\n\ttype LoadSkillsWithOperationsOptions,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n\tSkillLoader,\n} from \"./core/skills.ts\";\nexport type { SlashCommandInfo, SlashCommandSource } from \"./core/slash-commands.ts\";\nexport type { SourceInfo, SyntheticSourceInfoOptions } from \"./core/source-info.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashTool,\n\tcreateBashToolDefinition,\n\tcreateLocalBashOperations,\n\ttype LocalBashOperationsOptions,\n} from \"./core/tools/bash.ts\";\nexport {\n\tcreateEditTool,\n\tcreateEditToolDefinition,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n} from \"./core/tools/edit.ts\";\nexport { withFileMutationQueue } from \"./core/tools/file-mutation-queue.ts\";\nexport {\n\tcreateFindTool,\n\tcreateFindToolDefinition,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n} from \"./core/tools/find.ts\";\nexport {\n\tcreateGrepTool,\n\tcreateGrepToolDefinition,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n} from \"./core/tools/grep.ts\";\nexport { createCodingTools, createReadOnlyTools, type ToolsOptions } from \"./core/tools/index.ts\";\nexport {\n\tcreateLsTool,\n\tcreateLsToolDefinition,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n} from \"./core/tools/ls.ts\";\nexport {\n\tcreateRemoteToolOperations,\n\tDeferredRemoteToolOperations,\n\ttype DeferredRemoteToolOperationsConnectOptions,\n\tLocalToolOperations,\n\ttype LocalToolOperationsOptions,\n\tRemoteToolOperations,\n\ttype RemoteToolOperationsConnectOptions,\n\ttype ToolAccessMode,\n\ttype ToolBackendInfo,\n\ttype ToolExecOptions,\n\ttype ToolExecResult,\n\ttype ToolFileStat,\n\ttype ToolGlobOptions,\n\ttype ToolGrepMatch,\n\ttype ToolGrepOptions,\n\ttype ToolGrepResult,\n\ttype ToolMkdirOptions,\n\ttype ToolOperations,\n} from \"./core/tools/operations.ts\";\nexport {\n\tcreateReadTool,\n\tcreateReadToolDefinition,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOperations,\n\ttype ReadToolOperationsSelection,\n\ttype ReadToolOptions,\n} from \"./core/tools/read.ts\";\nexport {\n\tcreateSessionEntryGetTool,\n\tcreateSessionEntryGetToolDefinition,\n\tcreateSessionSearchTool,\n\tcreateSessionSearchToolDefinition,\n\ttype SessionEntryGetToolDetails,\n\ttype SessionEntryGetToolInput,\n\ttype SessionSearchMatch,\n\ttype SessionSearchScope,\n\ttype SessionSearchToolDetails,\n\ttype SessionSearchToolInput,\n} from \"./core/tools/session-history.ts\";\nexport {\n\tcreateSubagentTool,\n\tcreateSubagentToolDefinition,\n\ttype SubagentDetails,\n\ttype SubagentResult,\n\ttype SubagentRunInfo,\n\ttype SubagentRunner,\n\ttype SubagentRunOutcome,\n\ttype SubagentRunRegistry,\n\ttype SubagentRunRequest,\n\ttype SubagentRunsToolInput,\n\ttype SubagentStatus,\n\ttype SubagentToolInput,\n\ttype SubagentToolOptions,\n\ttype SubagentUsageStats,\n} from \"./core/tools/subagent.ts\";\nexport type { AgentListFormatResult } from \"./core/tools/subagent-agents.ts\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./core/tools/truncate.ts\";\nexport {\n\tcreateWebsearchTool,\n\tcreateWebsearchToolDefinition,\n\tparseBraveSearchResponse,\n\tparseDuckDuckGoResponse,\n\tparseFirecrawlSearchResponse,\n\tparseWebsearchToolOptions,\n\ttype WebsearchProvider,\n\ttype WebsearchResultItem,\n\ttype WebsearchSource,\n\ttype WebsearchToolDetails,\n\ttype WebsearchToolInput,\n\ttype WebsearchToolOptions,\n} from \"./core/tools/websearch.ts\";\nexport {\n\tWORKSPACE_TOOL_NAMES,\n\ttype WorkspaceToolCatalogEntry,\n\ttype WorkspaceToolDefinition,\n\tWorkspaceToolHost,\n\ttype WorkspaceToolHostOptions,\n\ttype WorkspaceToolInvocation,\n\ttype WorkspaceToolName,\n\ttype WorkspaceToolOptions,\n} from \"./core/tools/workspace-tool-host.ts\";\nexport {\n\tcreateWriteTool,\n\tcreateWriteToolDefinition,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n} from \"./core/tools/write.ts\";\nexport type { WorkspaceIdentity } from \"./core/workspace-identity.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// UI components for extensions\nexport { AssistantMessageComponent } from \"./modes/interactive/components/assistant-message.ts\";\nexport { BashExecutionComponent } from \"./modes/interactive/components/bash-execution.ts\";\nexport { BorderedLoader } from \"./modes/interactive/components/bordered-loader.ts\";\nexport { BranchSummaryMessageComponent } from \"./modes/interactive/components/branch-summary-message.ts\";\nexport { CompactionSummaryMessageComponent } from \"./modes/interactive/components/compaction-summary-message.ts\";\nexport { CustomEditor } from \"./modes/interactive/components/custom-editor.ts\";\nexport { CustomMessageComponent } from \"./modes/interactive/components/custom-message.ts\";\nexport { type RenderDiffOptions, renderDiff } from \"./modes/interactive/components/diff.ts\";\nexport { DynamicBorder } from \"./modes/interactive/components/dynamic-border.ts\";\nexport { ExtensionEditorComponent } from \"./modes/interactive/components/extension-editor.ts\";\nexport { ExtensionInputComponent } from \"./modes/interactive/components/extension-input.ts\";\nexport { ExtensionSelectorComponent } from \"./modes/interactive/components/extension-selector.ts\";\nexport { FooterComponent } from \"./modes/interactive/components/footer.ts\";\nexport { keyHint, keyText, rawKeyHint } from \"./modes/interactive/components/keybinding-hints.ts\";\nexport { LoginDialogComponent } from \"./modes/interactive/components/login-dialog.ts\";\nexport { ModelSelectorComponent } from \"./modes/interactive/components/model-selector.ts\";\nexport { OAuthSelectorComponent } from \"./modes/interactive/components/oauth-selector.ts\";\nexport { SessionSelectorComponent } from \"./modes/interactive/components/session-selector.ts\";\nexport {\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n} from \"./modes/interactive/components/settings-selector.ts\";\nexport { ShowImagesSelectorComponent } from \"./modes/interactive/components/show-images-selector.ts\";\nexport { SkillInvocationMessageComponent } from \"./modes/interactive/components/skill-invocation-message.ts\";\nexport { ThemeSelectorComponent } from \"./modes/interactive/components/theme-selector.ts\";\nexport { ThinkingSelectorComponent } from \"./modes/interactive/components/thinking-selector.ts\";\nexport {\n\tToolExecutionComponent,\n\ttype ToolExecutionDisplayResult,\n\ttype ToolExecutionOptions,\n} from \"./modes/interactive/components/tool-execution.ts\";\nexport { TreeSelectorComponent } from \"./modes/interactive/components/tree-selector.ts\";\nexport { UserMessageComponent } from \"./modes/interactive/components/user-message.ts\";\nexport { UserMessageSelectorComponent } from \"./modes/interactive/components/user-message-selector.ts\";\nexport { truncateToVisualLines, type VisualTruncateResult } from \"./modes/interactive/components/visual-truncate.ts\";\n// Run modes for programmatic SDK usage\nexport { InteractiveMode, type InteractiveModeOptions } from \"./modes/interactive/interactive-mode.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\nexport type { JsonAgentSessionEvent } from \"./modes/json-event.ts\";\nexport { type PrintModeOptions, type PrintOutputMode, runPrintMode } from \"./modes/print-mode.ts\";\nexport {\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcDaemonSandboxOptions,\n\ttype RpcEventListener,\n\ttype RpcToolHandler,\n} from \"./modes/rpc/rpc-client.ts\";\nexport { runRpcMode } from \"./modes/rpc/rpc-mode.ts\";\nexport type {\n\tRpcClientListSessionsResponse,\n\tRpcCommand,\n\tRpcInstructionDefinition,\n\tRpcListSessionsOptions,\n\tRpcListSessionsResponse,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcToolCallRequest,\n\tRpcToolDefinition,\n} from \"./modes/rpc/rpc-types.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\nexport type { TuiMode } from \"@greppleai/grip-tui\";\n// Config paths\nexport { getAgentDir, VERSION } from \"./config.ts\";\nexport {\n\ttype ActivateSandboxDaemonOptions,\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype AgentSessionReloadResult,\n\ttype ConfigureRemoteSandboxOptions,\n\ttype ExecuteBashOptions,\n\ttype ForkableUserMessage,\n\ttype ModelCycleResult,\n\ttype NavigateTreeOptions,\n\ttype NavigateTreeResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype QueuedMessages,\n\ttype RecordBashResultOptions,\n\ttype RegisterSessionToolOptions,\n\ttype SendCustomMessageOptions,\n\ttype SendUserMessageOptions,\n\ttype SessionRuleRegistration,\n\ttype SessionSkillRegistration,\n\ttype SessionStats,\n\ttype StructuredResponse,\n\ttype StructuredResponseOptions,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthApiKeyLookupOptions,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\tcollectEntriesForBranchSummary,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tprepareBranchEntries,\n} from \"./core/compaction/branch-summarization.ts\";\nexport {\n\ttype CompactionResult,\n\ttype CutPointResult,\n\tcalculateContextTokens,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\tgenerateSummary,\n\tgetLastAssistantUsage,\n\tshouldCompact,\n} from \"./core/compaction/compaction.ts\";\nexport { type FileOperations, serializeConversation } from \"./core/compaction/utils.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\nexport { createExtensionRuntime, discoverAndLoadExtensions } from \"./core/extensions/loader.ts\";\nexport { ExtensionRunner } from \"./core/extensions/runner.ts\";\n// Extension system\nexport type {\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppKeybinding,\n\tAutocompleteProviderFactory,\n\tBashResult,\n\tBashToolCallEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBuildSystemPromptOptions,\n\tCompactOptions,\n\tContextEvent,\n\tContextUsage,\n\tCustomToolCallEvent,\n\tEditToolCallEvent,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionHostCommandOptions,\n\tExtensionHostProcessOptions,\n\tExtensionNotificationType,\n\tExtensionRuntime,\n\tExtensionShortcut,\n\tExtensionToolBackendExecOptions,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tGrepToolCallEvent,\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tMarkdownTransformContext,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tProviderConfig,\n\tProviderModelConfig,\n\tReadToolCallEvent,\n\tRegisteredCommand,\n\tRegisteredTool,\n\tResolvedCommand,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionShutdownReason,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSubagentToolCallEvent,\n\tTerminalInputHandler,\n\tToolCallEvent,\n\tToolCallEventResult,\n\tToolDefinition,\n\tToolExecutionMode,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWebsearchToolCallEvent,\n\tWebsearchToolResultEvent,\n\tWidgetPlacement,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n} from \"./core/extensions/types.ts\";\nexport {\n\tdefineTool,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisGrepToolResult,\n\tisLsToolResult,\n\tisReadToolResult,\n\tisSubagentToolResult,\n\tisToolCallEventType,\n\tisWebsearchToolResult,\n\tisWriteToolResult,\n} from \"./core/extensions/types.ts\";\nexport { wrapRegisteredTool, wrapRegisteredTools } from \"./core/extensions/wrapper.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport {\n\ttype CreateGripAgentOptions,\n\tGripAgent,\n\ttype GripAgentDiagnostic,\n\ttype GripAgentHooksOptions,\n\ttype GripAgentRuntimeHost,\n\ttype GripAgentServices,\n\ttype GripAgentSessionOptions,\n\ttype ResolveGripAgentSessionOptionsContext,\n\ttype ResolveGripAgentSessionOptionsResult,\n} from \"./core/grip-agent.ts\";\nexport {\n\tformatInstructionResourcesForPrompt,\n\ttype InstructionResource,\n\ttype InstructionResourceFrontmatter,\n\tInstructionResourceLoader,\n\ttype InstructionResourceLoaderConfig,\n\ttype InstructionResourceLoaderOptions,\n\ttype InstructionResourceLoaderWithOperationsOptions,\n} from \"./core/instruction-resource-loader.ts\";\nexport {\n\tLspClient,\n\ttype LspClientOptions,\n\ttype LspClientOwnership,\n\ttype LspClientStartResult,\n\ttype LspConnectionState,\n\ttype LspDocumentSyncCapabilities,\n\ttype LspShutdownMode,\n} from \"./core/lsp/client.ts\";\nexport {\n\ttype LspClientInfo,\n\ttype LspConfigurationDiagnostic,\n\ttype LspConfigurationLayer,\n\ttype LspConfigurationMode,\n\ttype LspConfiguredServer,\n\ttype LspDisabledServer,\n\ttype LspDocumentSelector,\n\ttype LspJsonValue,\n\ttype LspNamedPipeTransport,\n\ttype LspPathMapping,\n\ttype LspProgrammaticTransport,\n\ttype LspServerEntry,\n\ttype LspServerFeatures,\n\ttype LspServerLifecycle,\n\ttype LspServerTimeouts,\n\ttype LspSpawnTransport,\n\ttype LspTcpTransport,\n\ttype LspTraceValue,\n\ttype LspTransport,\n\ttype LspUnixSocketTransport,\n\ttype LspWorkspaceRoot,\n\ttype ParseLspConfigurationResult,\n\tparseLspConfiguration,\n\ttype ResolvedLspConfiguration,\n\tresolveLspConfiguration,\n} from \"./core/lsp/config.ts\";\nexport {\n\ttype LoadLspConfigurationOptions,\n\ttype LoadLspConfigurationResult,\n\ttype LspConfigurationInput,\n\ttype LspConfigurationInputScope,\n\ttype LspConfigurationSourceDiagnostic,\n\ttype LspConfigurationSourceDiagnosticSeverity,\n\tloadLspConfiguration,\n\tresolveLspConfigurationLayerPaths,\n} from \"./core/lsp/config-loader.ts\";\nexport {\n\tcreateLspDiagnosticsTool,\n\tformatAutoDiagnosticsForChangedFile,\n\ttype LspDiagnosticsDetails,\n} from \"./core/lsp/diagnostics.ts\";\nexport {\n\tLspFileSync,\n\ttype LspSynchronizationFailure,\n\ttype LspSynchronizationResult,\n\ttype LspTrackedDocument,\n} from \"./core/lsp/file-sync.ts\";\nexport {\n\tcreateLspRuntimeState,\n\tcreateLspToolDefinitions,\n\tLSP_TOOL_NAMES,\n\ttype LspLifecycleOptions,\n\ttype LspRuntimeOwner,\n\ttype LspRuntimeState,\n\ttype LspSessionStatus,\n\ttype LspToolName,\n\tregisterLspLifecycleHandlers,\n\tregisterStandaloneLspLifecycleHandlers,\n} from \"./core/lsp/integration.ts\";\nexport {\n\tLspPathMapper,\n\ttype LspPathMappingResult,\n\ttype LspRouteFailure,\n\ttype LspRouteResult,\n\tLspRouter,\n\ttype LspRouterOptions,\n\ttype LspRouteTarget,\n} from \"./core/lsp/language-map.ts\";\nexport {\n\ttype LspClientRoute,\n\ttype LspClientRouteCollection,\n\ttype LspClientRouteFailure,\n\ttype LspClientStartedListener,\n\ttype LspClientsWillShutdownListener,\n\ttype LspConnectionFactoryResolver,\n\tLspManager,\n\ttype LspManagerOptions,\n\ttype LspServerStatus,\n\ttype LspToolFeature,\n} from \"./core/lsp/manager.ts\";\nexport {\n\tcreateLspDefinitionTool,\n\tcreateLspHoverTool,\n\tcreateLspReferencesTool,\n\ttype LspHoverDetails,\n\ttype LspLocationDetails,\n} from \"./core/lsp/navigation.ts\";\nexport {\n\tcreateLspCodeActionsTool,\n\tcreateLspRenameTool,\n\ttype LspCodeActionsDetails,\n\ttype LspRenameDetails,\n} from \"./core/lsp/refactor.ts\";\nexport {\n\tcreateManagedStdioConnectionFactory,\n\tcreateNamedPipeConnectionFactory,\n\tcreateTcpConnectionFactory,\n\tcreateUnixSocketConnectionFactory,\n\ttype LspConnectionDisposalMode,\n\ttype LspConnectionEndpoint,\n\ttype LspConnectionFactory,\n\ttype LspConnectionFactoryContext,\n\ttype LspConnectionFactoryRegistry,\n\ttype LspConnectionHandle,\n\ttype ManagedStdioConnectionOptions,\n\tresolveLspConnectionFactory,\n} from \"./core/lsp/transport.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type { ScopedModel } from \"./core/model-resolver.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type { PromptTemplate } from \"./core/prompt-templates.ts\";\nexport type {\n\tProjectContextFile,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n} from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// Rules\nexport {\n\tformatRulesForPrompt,\n\ttype LoadRulesFromDirOptions,\n\ttype LoadRulesOptions,\n\ttype LoadRulesResult,\n\ttype LoadRulesWithOperationsOptions,\n\tloadRules,\n\tloadRulesFromDir,\n\ttype Rule,\n\ttype RuleFrontmatter,\n\tRuleLoader,\n} from \"./core/rules.ts\";\nexport { CURRENT_SESSION_VERSION } from \"./core/session/constants.ts\";\nexport { buildSessionContext, getLatestCompactionEntry } from \"./core/session/context.ts\";\nexport { InMemorySessionManager } from \"./core/session/in-memory-session-manager.ts\";\nexport {\n\tJsonlDecodeError,\n\ttype JsonlDecodeKind,\n\ttype JsonlErrorPhase,\n\tJsonlSessionError,\n\ttype JsonlSessionErrorCode,\n\ttype JsonlWriteOutcome,\n} from \"./core/session/jsonl-errors.ts\";\nexport { LocalSessionManager } from \"./core/session/local-session-manager.ts\";\nexport { migrateSessionEntries, parseSessionEntries } from \"./core/session/migrations.ts\";\nexport {\n\ttype AppendRemoteSessionEntriesRequest,\n\ttype CreateRemoteSessionRequest,\n\ttype ForkRemoteSessionRequest,\n\ttype ImportRemoteSessionJsonlRequest,\n\tRemoteSessionClient,\n\tRemoteSessionClientError,\n\ttype RemoteSessionClientOptions,\n\ttype RemoteSessionOperation,\n\tRemoteSessionProtocolError,\n\ttype RemoteSessionSnapshot,\n\ttype ReplaceRemoteSessionSnapshotRequest,\n} from \"./core/session/remote-session-client.ts\";\nexport { RemoteSessionManager } from \"./core/session/remote-session-manager.ts\";\nexport type { SessionManager } from \"./core/session/session-manager.ts\";\nexport { SessionAlreadyExistsError } from \"./core/session/stores/jsonl-session-store.ts\";\nexport type {\n\tBranchSummaryEntry,\n\tCompactionEntry,\n\tCustomEntry,\n\tCustomMessageEntry,\n\tFileEntry,\n\tModelChangeEntry,\n\tNewSessionOptions,\n\tSessionContext,\n\tSessionEntry,\n\tSessionEntryBase,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionInfoEntry,\n\tSessionMessageEntry,\n\tSessionTreeNode,\n\tThinkingLevelChangeEntry,\n} from \"./core/session/types.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype FullscreenExitOutput,\n\ttype ImageSettings,\n\ttype MarkdownSettings,\n\ttype MermaidRenderingMode,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype ToolSettings,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsOptions,\n\ttype LoadSkillsResult,\n\ttype LoadSkillsWithOperationsOptions,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n\tSkillLoader,\n} from \"./core/skills.ts\";\nexport type { SlashCommandInfo, SlashCommandSource } from \"./core/slash-commands.ts\";\nexport type { SourceInfo, SyntheticSourceInfoOptions } from \"./core/source-info.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashTool,\n\tcreateBashToolDefinition,\n\tcreateLocalBashOperations,\n\ttype LocalBashOperationsOptions,\n} from \"./core/tools/bash.ts\";\nexport {\n\tcreateEditTool,\n\tcreateEditToolDefinition,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n} from \"./core/tools/edit.ts\";\nexport { withFileMutationQueue } from \"./core/tools/file-mutation-queue.ts\";\nexport {\n\tcreateFindTool,\n\tcreateFindToolDefinition,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n} from \"./core/tools/find.ts\";\nexport {\n\tcreateGrepTool,\n\tcreateGrepToolDefinition,\n\ttype GrepToolDetails,\n\ttype GrepToolInput,\n\ttype GrepToolOptions,\n} from \"./core/tools/grep.ts\";\nexport { createCodingTools, createReadOnlyTools, type ToolsOptions } from \"./core/tools/index.ts\";\nexport {\n\tcreateLsTool,\n\tcreateLsToolDefinition,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n} from \"./core/tools/ls.ts\";\nexport {\n\tcreateRemoteToolOperations,\n\tDeferredRemoteToolOperations,\n\ttype DeferredRemoteToolOperationsConnectOptions,\n\tLocalToolOperations,\n\ttype LocalToolOperationsOptions,\n\tRemoteToolOperations,\n\ttype RemoteToolOperationsConnectOptions,\n\ttype ToolAccessMode,\n\ttype ToolBackendInfo,\n\ttype ToolExecOptions,\n\ttype ToolExecResult,\n\ttype ToolFileStat,\n\ttype ToolGlobOptions,\n\ttype ToolGrepMatch,\n\ttype ToolGrepOptions,\n\ttype ToolGrepResult,\n\ttype ToolMkdirOptions,\n\ttype ToolOperations,\n} from \"./core/tools/operations.ts\";\nexport {\n\tcreateReadTool,\n\tcreateReadToolDefinition,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOperations,\n\ttype ReadToolOperationsSelection,\n\ttype ReadToolOptions,\n} from \"./core/tools/read.ts\";\nexport {\n\tcreateSessionEntryGetTool,\n\tcreateSessionEntryGetToolDefinition,\n\tcreateSessionSearchTool,\n\tcreateSessionSearchToolDefinition,\n\ttype SessionEntryGetToolDetails,\n\ttype SessionEntryGetToolInput,\n\ttype SessionSearchMatch,\n\ttype SessionSearchScope,\n\ttype SessionSearchToolDetails,\n\ttype SessionSearchToolInput,\n} from \"./core/tools/session-history.ts\";\nexport {\n\tcreateSubagentTool,\n\tcreateSubagentToolDefinition,\n\ttype SubagentDetails,\n\ttype SubagentResult,\n\ttype SubagentRunInfo,\n\ttype SubagentRunner,\n\ttype SubagentRunOutcome,\n\ttype SubagentRunRegistry,\n\ttype SubagentRunRequest,\n\ttype SubagentRunsToolInput,\n\ttype SubagentStatus,\n\ttype SubagentToolInput,\n\ttype SubagentToolOptions,\n\ttype SubagentUsageStats,\n} from \"./core/tools/subagent.ts\";\nexport type { AgentListFormatResult } from \"./core/tools/subagent-agents.ts\";\nexport {\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\tformatSize,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n} from \"./core/tools/truncate.ts\";\nexport {\n\tcreateWebsearchTool,\n\tcreateWebsearchToolDefinition,\n\tparseBraveSearchResponse,\n\tparseDuckDuckGoResponse,\n\tparseFirecrawlSearchResponse,\n\tparseWebsearchToolOptions,\n\ttype WebsearchProvider,\n\ttype WebsearchResultItem,\n\ttype WebsearchSource,\n\ttype WebsearchToolDetails,\n\ttype WebsearchToolInput,\n\ttype WebsearchToolOptions,\n} from \"./core/tools/websearch.ts\";\nexport {\n\tWORKSPACE_TOOL_NAMES,\n\ttype WorkspaceToolCatalogEntry,\n\ttype WorkspaceToolDefinition,\n\tWorkspaceToolHost,\n\ttype WorkspaceToolHostOptions,\n\ttype WorkspaceToolInvocation,\n\ttype WorkspaceToolName,\n\ttype WorkspaceToolOptions,\n} from \"./core/tools/workspace-tool-host.ts\";\nexport {\n\tcreateWriteTool,\n\tcreateWriteToolDefinition,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n} from \"./core/tools/write.ts\";\nexport type { WorkspaceIdentity } from \"./core/workspace-identity.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// UI components for extensions\nexport { AssistantMessageComponent } from \"./modes/interactive/components/assistant-message.ts\";\nexport { BashExecutionComponent } from \"./modes/interactive/components/bash-execution.ts\";\nexport { BorderedLoader } from \"./modes/interactive/components/bordered-loader.ts\";\nexport { BranchSummaryMessageComponent } from \"./modes/interactive/components/branch-summary-message.ts\";\nexport { CompactionSummaryMessageComponent } from \"./modes/interactive/components/compaction-summary-message.ts\";\nexport { CustomEditor } from \"./modes/interactive/components/custom-editor.ts\";\nexport { CustomMessageComponent } from \"./modes/interactive/components/custom-message.ts\";\nexport { type RenderDiffOptions, renderDiff } from \"./modes/interactive/components/diff.ts\";\nexport { DynamicBorder } from \"./modes/interactive/components/dynamic-border.ts\";\nexport { ExtensionEditorComponent } from \"./modes/interactive/components/extension-editor.ts\";\nexport { ExtensionInputComponent } from \"./modes/interactive/components/extension-input.ts\";\nexport { ExtensionSelectorComponent } from \"./modes/interactive/components/extension-selector.ts\";\nexport { FooterComponent } from \"./modes/interactive/components/footer.ts\";\nexport { keyHint, keyText, rawKeyHint } from \"./modes/interactive/components/keybinding-hints.ts\";\nexport { LoginDialogComponent } from \"./modes/interactive/components/login-dialog.ts\";\nexport { ModelSelectorComponent } from \"./modes/interactive/components/model-selector.ts\";\nexport { OAuthSelectorComponent } from \"./modes/interactive/components/oauth-selector.ts\";\nexport { SessionSelectorComponent } from \"./modes/interactive/components/session-selector.ts\";\nexport {\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n} from \"./modes/interactive/components/settings-selector.ts\";\nexport { ShowImagesSelectorComponent } from \"./modes/interactive/components/show-images-selector.ts\";\nexport { SkillInvocationMessageComponent } from \"./modes/interactive/components/skill-invocation-message.ts\";\nexport { ThemeSelectorComponent } from \"./modes/interactive/components/theme-selector.ts\";\nexport { ThinkingSelectorComponent } from \"./modes/interactive/components/thinking-selector.ts\";\nexport {\n\tToolExecutionComponent,\n\ttype ToolExecutionDisplayResult,\n\ttype ToolExecutionOptions,\n} from \"./modes/interactive/components/tool-execution.ts\";\nexport { TreeSelectorComponent } from \"./modes/interactive/components/tree-selector.ts\";\nexport { UserMessageComponent } from \"./modes/interactive/components/user-message.ts\";\nexport { UserMessageSelectorComponent } from \"./modes/interactive/components/user-message-selector.ts\";\nexport { truncateToVisualLines, type VisualTruncateResult } from \"./modes/interactive/components/visual-truncate.ts\";\n// Run modes for programmatic SDK usage\nexport { InteractiveMode, type InteractiveModeOptions } from \"./modes/interactive/interactive-mode.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\nexport type { JsonAgentSessionEvent } from \"./modes/json-event.ts\";\nexport { type PrintModeOptions, type PrintOutputMode, runPrintMode } from \"./modes/print-mode.ts\";\nexport {\n\ttype ModelInfo,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcDaemonSandboxOptions,\n\ttype RpcEventListener,\n\ttype RpcToolHandler,\n} from \"./modes/rpc/rpc-client.ts\";\nexport { runRpcMode } from \"./modes/rpc/rpc-mode.ts\";\nexport type {\n\tRpcClientListSessionsResponse,\n\tRpcCommand,\n\tRpcInstructionDefinition,\n\tRpcListSessionsOptions,\n\tRpcListSessionsResponse,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcToolCallRequest,\n\tRpcToolDefinition,\n} from \"./modes/rpc/rpc-types.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAGN,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,MAAM,6BAA6B,CAAC;AAiBrC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AA0a7D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEhE,wBAAsB,yBAAyB,CAC9C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,eAAe,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAkCjC;AACD,MAAM,WAAW,6BAA6B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,sBAAsB;IACtC,cAAc,CAAC,yBAAyB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAAC;IAChD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAC1E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7D;AAmED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CA8C3G;AAED,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5F,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC9C;AAuKD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,iBAmK/D"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAGN,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,MAAM,6BAA6B,CAAC;AAiBrC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AA2a7D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEhE,wBAAsB,yBAAyB,CAC9C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,eAAe,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAkCjC;AACD,MAAM,WAAW,6BAA6B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,sBAAsB;IACtC,cAAc,CAAC,yBAAyB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAAC;IAChD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAC1E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7D;AAmED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CA8C3G;AAED,MAAM,WAAW,WAAW;IAC3B,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5F,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC9C;AA0KD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,iBAmK/D"}