@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.
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +11 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +172 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +9 -2
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +22 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +21 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/instruction-resource-loader.d.ts +1 -0
- package/dist/core/instruction-resource-loader.d.ts.map +1 -1
- package/dist/core/instruction-resource-loader.js +2 -1
- package/dist/core/instruction-resource-loader.js.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +30 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +3 -2
- package/dist/core/skills.js.map +1 -1
- package/dist/core/system-prompt.d.ts +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +3 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +1 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +26 -23
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/operations.d.ts +6 -0
- package/dist/core/tools/operations.d.ts.map +1 -1
- package/dist/core/tools/operations.js +28 -4
- package/dist/core/tools/operations.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +8 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +7 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +0 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +25 -23
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +33 -2
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/binary-self-update.d.ts +25 -0
- package/dist/utils/binary-self-update.d.ts.map +1 -0
- package/dist/utils/binary-self-update.js +159 -0
- package/dist/utils/binary-self-update.js.map +1 -0
- package/dist/utils/directory-completions.d.ts +8 -0
- package/dist/utils/directory-completions.d.ts.map +1 -1
- package/dist/utils/directory-completions.js +42 -1
- package/dist/utils/directory-completions.js.map +1 -1
- package/docs/extensions.md +31 -1
- package/docs/sandbox.md +2 -2
- package/docs/sessions.md +1 -1
- package/docs/skills.md +4 -4
- package/docs/usage.md +1 -1
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
package/dist/main.js
CHANGED
|
@@ -13,7 +13,7 @@ import { processFileArguments } from "./cli/file-processor.js";
|
|
|
13
13
|
import { buildInitialMessage } from "./cli/initial-message.js";
|
|
14
14
|
import { listModels } from "./cli/list-models.js";
|
|
15
15
|
import { selectSession } from "./cli/session-picker.js";
|
|
16
|
-
import { ENV_REMOTE_PROJECT_ID, ENV_REMOTE_SESSION_BASE_URL, ENV_REMOTE_SESSION_TOKEN, ENV_SESSION_DIR, expandTildePath, getAgentDir, getPackageDir, VERSION, } from "./config.js";
|
|
16
|
+
import { ENV_REMOTE_PROJECT_ID, ENV_REMOTE_SESSION_BASE_URL, ENV_REMOTE_SESSION_TOKEN, ENV_SESSION_DIR, expandTildePath, getAgentDir, getPackageDir, isBunBinary, VERSION, } from "./config.js";
|
|
17
17
|
import { AuthStorage } from "./core/auth-storage.js";
|
|
18
18
|
import { exportFromFile } from "./core/export-html/index.js";
|
|
19
19
|
import { GripAgent, isFatalGripAgentDiagnostic } from "./core/grip-agent.js";
|
|
@@ -34,6 +34,7 @@ import { runMigrations, showDeprecationWarnings } from "./migrations.js";
|
|
|
34
34
|
import { ExtensionSelectorComponent } from "./modes/interactive/components/extension-selector.js";
|
|
35
35
|
import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
|
|
36
36
|
import { handleConfigCommand, handlePackageCommand } from "./package-manager-cli.js";
|
|
37
|
+
import { cleanupWindowsBinarySelfUpdateLeftovers } from "./utils/binary-self-update.js";
|
|
37
38
|
import { isLocalPath, normalizePath, resolvePath } from "./utils/paths.js";
|
|
38
39
|
import { cleanupWindowsSelfUpdateQuarantine } from "./utils/windows-self-update.js";
|
|
39
40
|
function collectSettingsDiagnostics(settingsManager, context) {
|
|
@@ -479,8 +480,12 @@ async function runCliPreflight(args, options) {
|
|
|
479
480
|
process.env.GRIP_OFFLINE = "1";
|
|
480
481
|
process.env.GRIP_SKIP_VERSION_CHECK = "1";
|
|
481
482
|
}
|
|
482
|
-
if (process.platform === "win32")
|
|
483
|
-
|
|
483
|
+
if (process.platform === "win32") {
|
|
484
|
+
if (isBunBinary)
|
|
485
|
+
await cleanupWindowsBinarySelfUpdateLeftovers();
|
|
486
|
+
else
|
|
487
|
+
cleanupWindowsSelfUpdateQuarantine(getPackageDir());
|
|
488
|
+
}
|
|
484
489
|
if (await handlePackageCommand(args))
|
|
485
490
|
return true;
|
|
486
491
|
return handleConfigCommand(args);
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * GripAgent options. GripAgent does the heavy lifting.\n */\n\nimport { createInterface } from \"node:readline\";\nimport { modelsAreEqual } from \"@greppleai/grip-ai\";\nimport { ProcessTerminal, setKeybindings, TuiMainScreen } from \"@greppleai/grip-tui\";\nimport chalk from \"chalk\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.ts\";\nimport { processFileArguments } from \"./cli/file-processor.ts\";\nimport { buildInitialMessage, type InitialMessageResult } from \"./cli/initial-message.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { selectSession } from \"./cli/session-picker.ts\";\nimport {\n\tENV_REMOTE_PROJECT_ID,\n\tENV_REMOTE_SESSION_BASE_URL,\n\tENV_REMOTE_SESSION_TOKEN,\n\tENV_SESSION_DIR,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetPackageDir,\n\tVERSION,\n} from \"./config.ts\";\nimport { AuthStorage } from \"./core/auth-storage.ts\";\nimport { exportFromFile } from \"./core/export-html/index.ts\";\nimport type { ExtensionFactory } from \"./core/extensions/types.ts\";\nimport type { GripAgentAppMode, GripAgentDiagnostic, GripAgentSessionOptions } from \"./core/grip-agent.ts\";\nimport { GripAgent, isFatalGripAgentDiagnostic } from \"./core/grip-agent.ts\";\nimport {\n\tcanonicalProjectHookIdentity,\n\thasProjectHookConfiguration,\n\ttype ProjectHookTrustResult,\n\tProjectHookTrustStore,\n} from \"./core/hooks/trust-store.ts\";\nimport { configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { KeybindingsManager } from \"./core/keybindings.ts\";\nimport type { LspConfigurationInput } from \"./core/lsp/config-loader.ts\";\nimport type { ModelRegistry } from \"./core/model-registry.ts\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.ts\";\nimport { InMemorySessionManager } from \"./core/session/in-memory-session-manager.ts\";\nimport { LocalSessionManager } from \"./core/session/local-session-manager.ts\";\nimport { RemoteSessionManager } from \"./core/session/remote-session-manager.ts\";\nimport type { Session } from \"./core/session/session.ts\";\nimport type { SessionManager } from \"./core/session/session-manager.ts\";\nimport {\n\tformatMissingSessionCwdPrompt,\n\tgetMissingSessionCwdIssue,\n\tMissingSessionCwdError,\n\ttype SessionCwdIssue,\n} from \"./core/session-cwd.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { resetTimings, time } from \"./core/timings.ts\";\nimport {\n\tcreateRemoteToolOperations,\n\tDeferredRemoteToolOperations,\n\ttype ToolOperations,\n} from \"./core/tools/operations.ts\";\nimport { runDaemonCommand } from \"./daemon/command.ts\";\nimport { isDaemonCommand } from \"./daemon/config.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { ExtensionSelectorComponent } from \"./modes/interactive/components/extension-selector.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport { isLocalPath, normalizePath, resolvePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\nfunction collectSettingsDiagnostics(settingsManager: SettingsManager, context: string): GripAgentDiagnostic[] {\n\treturn settingsManager.drainErrors().map(({ scope, error }) => ({\n\t\ttype: \"warning\",\n\t\tmessage: `(${context}, ${scope} settings) ${error.message}`,\n\t}));\n}\n\nfunction reportDiagnostics(diagnostics: readonly GripAgentDiagnostic[]): void {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : diagnostic.type === \"warning\" ? chalk.yellow : chalk.dim;\n\t\tconst prefix = diagnostic.type === \"error\" ? \"Error: \" : diagnostic.type === \"warning\" ? \"Warning: \" : \"\";\n\t\tconsole.error(color(`${prefix}${diagnostic.message}`));\n\t}\n}\n\nfunction isTruthyEnvFlag(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\nfunction resolveAppMode(parsed: Args, stdinIsTTY: boolean): GripAgentAppMode {\n\tif (parsed.mode === \"rpc\") {\n\t\treturn \"rpc\";\n\t}\n\tif (parsed.mode === \"json\") {\n\t\treturn \"json\";\n\t}\n\tif (parsed.print || !stdinIsTTY) {\n\t\treturn \"print\";\n\t}\n\treturn \"interactive\";\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n\tstdinContent?: string,\n): Promise<InitialMessageResult> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn buildInitialMessage({ parsed, stdinContent });\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\treturn buildInitialMessage({\n\t\tparsed,\n\t\tfileText: text,\n\t\tfileImages: images,\n\t\tstdinContent,\n\t});\n}\n\n/** Result from resolving a session argument */\ntype ResolvedSession =\n\t| { type: \"path\"; path: string } // Direct file path\n\t| { type: \"local\"; path: string } // Found in current project\n\t| { type: \"global\"; path: string; cwd: string } // Found in different project\n\t| { type: \"not_found\"; arg: string }; // Not found anywhere\n\n/**\n * Resolve a session argument to a file path.\n * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.\n */\nasync function resolveSessionPath(sessionArg: string, cwd: string, sessionDir?: string): Promise<ResolvedSession> {\n\t// If it looks like a file path, resolve it before handing it to the session manager.\n\tif (sessionArg.includes(\"/\") || sessionArg.includes(\"\\\\\") || sessionArg.endsWith(\".jsonl\")) {\n\t\treturn { type: \"path\", path: resolvePath(sessionArg, cwd) };\n\t}\n\n\t// Try to match as session ID in current project first\n\tconst localSessions = await new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).list();\n\tconst localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (localMatches.length >= 1) {\n\t\treturn { type: \"local\", path: localMatches[0].path };\n\t}\n\n\t// Try global search across all projects\n\tconst allSessions = await new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll();\n\tconst globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (globalMatches.length >= 1) {\n\t\tconst match = globalMatches[0];\n\t\treturn { type: \"global\", path: match.path, cwd: match.cwd };\n\t}\n\n\t// Not found anywhere\n\treturn { type: \"not_found\", arg: sessionArg };\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nfunction validateForkFlags(parsed: Args): void {\n\tif (!parsed.fork) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(chalk.red(`Error: --fork cannot be combined with ${conflictingFlags.join(\", \")}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction forkSessionOrExit(sourcePath: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).forkFrom(sourcePath);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction openSessionOrExit(path: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd, sessionDir }).openReference(path);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\ninterface RemoteSessionCliOptions {\n\tbaseUrl: string;\n\ttoken: string;\n\tprojectId?: string;\n}\n\ninterface LifecycleSessionManagerOptions {\n\tcwd: string;\n\tsessionDir?: string;\n\tremote?: RemoteSessionCliOptions;\n}\n\nfunction resolveRemoteSessionCliOptions(parsed: Args): RemoteSessionCliOptions | undefined {\n\tconst baseUrl = parsed.remoteSessionBaseUrl ?? process.env[ENV_REMOTE_SESSION_BASE_URL];\n\tconst token = parsed.remoteSessionToken ?? process.env[ENV_REMOTE_SESSION_TOKEN];\n\tconst projectId = parsed.remoteProjectId ?? process.env[ENV_REMOTE_PROJECT_ID];\n\n\tif (!baseUrl && !token && !projectId) {\n\t\treturn undefined;\n\t}\n\tif (!baseUrl || !token) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Error: remote sessions require both --remote-session-base-url and --remote-session-token, or ${ENV_REMOTE_SESSION_BASE_URL} and ${ENV_REMOTE_SESSION_TOKEN}`,\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\treturn { baseUrl, token, projectId };\n}\n\nfunction createLifecycleSessionManager(options: LifecycleSessionManagerOptions): SessionManager {\n\tif (options.remote) {\n\t\treturn new RemoteSessionManager({\n\t\t\tbaseUrl: options.remote.baseUrl,\n\t\t\ttoken: options.remote.token,\n\t\t\tcwd: options.cwd,\n\t\t\tprojectId: options.remote.projectId,\n\t\t});\n\t}\n\treturn new LocalSessionManager({ cwd: options.cwd, sessionDir: options.sessionDir });\n}\n\nasync function resolveRemoteInitialSession(parsed: Args, manager: SessionManager): Promise<Session> {\n\tif (parsed.fork) {\n\t\treturn await manager.forkFrom(parsed.fork);\n\t}\n\tif (parsed.session) {\n\t\treturn await manager.openReference(parsed.session);\n\t}\n\tif (parsed.resume) {\n\t\tconst selectedReference = await selectSession(\n\t\t\t(onProgress) => manager.list(onProgress),\n\t\t\t(onProgress) => manager.listAll(onProgress),\n\t\t);\n\t\tif (!selectedReference) {\n\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\tprocess.exit(0);\n\t\t}\n\t\treturn await manager.openReference(selectedReference);\n\t}\n\tif (parsed.continue) {\n\t\treturn await manager.continueRecent();\n\t}\n\treturn await manager.create();\n}\n\nasync function resolveLocalRequestedSession(sessionArg: string, cwd: string, sessionDir?: string): Promise<Session> {\n\tconst resolved = await resolveSessionPath(sessionArg, cwd, sessionDir);\n\tswitch (resolved.type) {\n\t\tcase \"path\":\n\t\tcase \"local\":\n\t\t\treturn openSessionOrExit(resolved.path, process.cwd(), sessionDir);\n\t\tcase \"global\": {\n\t\t\tconsole.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));\n\t\t\tconst shouldFork = await promptConfirm(\"Fork this session into current directory?\");\n\t\t\tif (!shouldFork) {\n\t\t\t\tconsole.log(chalk.dim(\"Aborted.\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\t\t}\n\t\tcase \"not_found\":\n\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function resolveInitialSession(\n\tparsed: Args,\n\tcwd: string,\n\tsessionDir: string | undefined,\n\tsettingsManager: SettingsManager,\n\tremoteOptions?: RemoteSessionCliOptions,\n): Promise<Session> {\n\tif (parsed.noSession) {\n\t\treturn new InMemorySessionManager().create();\n\t}\n\n\tif (remoteOptions) {\n\t\treturn resolveRemoteInitialSession(\n\t\t\tparsed,\n\t\t\tnew RemoteSessionManager({\n\t\t\t\tbaseUrl: remoteOptions.baseUrl,\n\t\t\t\ttoken: remoteOptions.token,\n\t\t\t\tcwd,\n\t\t\t\tprojectId: remoteOptions.projectId,\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (parsed.fork) {\n\t\tconst resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\tcase \"global\":\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.session) return resolveLocalRequestedSession(parsed.session, cwd, sessionDir);\n\n\tif (parsed.resume) {\n\t\tinitTheme(settingsManager.getTheme(), true);\n\t\ttry {\n\t\t\tconst selectedPath = await selectSession(\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd, sessionDir }).list(onProgress),\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll(onProgress),\n\t\t\t);\n\t\t\tif (!selectedPath) {\n\t\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn openSessionOrExit(selectedPath, process.cwd(), sessionDir);\n\t\t} finally {\n\t\t\tstopThemeWatcher();\n\t\t}\n\t}\n\n\tif (parsed.continue) {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).continueRecent();\n\t}\n\n\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).create();\n}\n\ninterface SessionOptionsResolution {\n\toptions: GripAgentSessionOptions;\n\tcliThinkingFromModel: boolean;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\nfunction applyCliModelSelection(\n\tparsed: Args,\n\tmodelRegistry: ModelRegistry,\n\tresolution: SessionOptionsResolution,\n): void {\n\tif (!parsed.model) return;\n\tconst resolved = resolveCliModel({\n\t\tcliProvider: parsed.provider,\n\t\tcliModel: parsed.model,\n\t\tmodelRegistry,\n\t});\n\tif (resolved.warning) resolution.diagnostics.push({ type: \"warning\", message: resolved.warning });\n\tif (resolved.error) resolution.diagnostics.push({ type: \"error\", message: resolved.error });\n\tif (!resolved.model) return;\n\tresolution.options.model = resolved.model;\n\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\tresolution.options.thinkingLevel = resolved.thinkingLevel;\n\t\tresolution.cliThinkingFromModel = true;\n\t}\n}\n\nfunction selectDefaultScopedModel(\n\tscopedModels: ScopedModel[],\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): ScopedModel {\n\tconst savedProvider = settingsManager.getDefaultProvider();\n\tconst savedModelId = settingsManager.getDefaultModel();\n\tconst savedModel = savedProvider && savedModelId ? modelRegistry.find(savedProvider, savedModelId) : undefined;\n\treturn (\n\t\t(savedModel ? scopedModels.find((scoped) => modelsAreEqual(scoped.model, savedModel)) : undefined) ??\n\t\tscopedModels[0]\n\t);\n}\n\nfunction applyCliToolSelection(parsed: Args, options: GripAgentSessionOptions): void {\n\tif (parsed.noTools) options.noTools = \"all\";\n\telse if (parsed.noBuiltinTools) options.noTools = \"builtin\";\n\tif (parsed.tools) options.tools = [...parsed.tools];\n\tif (parsed.enableLspTools) options.enableLspTools = true;\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\thasExistingSession: boolean,\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): SessionOptionsResolution {\n\tconst resolution: SessionOptionsResolution = {\n\t\toptions: {},\n\t\tcliThinkingFromModel: false,\n\t\tdiagnostics: [],\n\t};\n\tapplyCliModelSelection(parsed, modelRegistry, resolution);\n\tconst { options } = resolution;\n\n\tif (!options.model && scopedModels.length > 0 && !hasExistingSession) {\n\t\tconst selected = selectDefaultScopedModel(scopedModels, modelRegistry, settingsManager);\n\t\toptions.model = selected.model;\n\t\tif (!parsed.thinking && selected.thinkingLevel) options.thinkingLevel = selected.thinkingLevel;\n\t}\n\n\tif (parsed.thinking) options.thinkingLevel = parsed.thinking;\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((scoped) => ({\n\t\t\tmodel: scoped.model,\n\t\t\tthinkingLevel: scoped.thinkingLevel,\n\t\t}));\n\t}\n\tapplyCliToolSelection(parsed, options);\n\treturn resolution;\n}\n\nfunction resolveCliPaths(cwd: string, paths: string[] | undefined): string[] | undefined {\n\treturn paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));\n}\n\nasync function promptForMissingSessionCwd(\n\tissue: SessionCwdIssue,\n\tsettingsManager: SettingsManager,\n): Promise<string | undefined> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\n\t\tlet settled = false;\n\t\tconst finish = (result: string | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\tformatMissingSessionCwdPrompt(issue),\n\t\t\t[\"Continue\", \"Cancel\"],\n\t\t\t(option) => finish(option === \"Continue\" ? issue.fallbackCwd : undefined),\n\t\t\t() => finish(undefined),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\n\nexport type ProjectHookTrustChoice = \"deny\" | \"once\" | \"always\";\n\nexport async function promptForProjectHookTrust(\n\tcwd: string,\n\tidentity: string,\n\tsettingsManager: SettingsManager,\n): Promise<ProjectHookTrustChoice> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\tconst title = [\n\t\t`Project hooks were found in ${cwd}.`,\n\t\t\"Project hooks execute in the active workspace: as your host user locally, or inside an active sandbox/remote backend.\",\n\t\t`Trust always authorizes all current and future hook changes in ${identity}.`,\n\t].join(\"\\n\");\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\t\tlet settled = false;\n\t\tconst finish = (choice: ProjectHookTrustChoice) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(choice);\n\t\t};\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\ttitle,\n\t\t\t[\"Don't trust\", \"Trust once\", \"Trust always\"],\n\t\t\t(option) => {\n\t\t\t\tif (option === \"Trust once\") finish(\"once\");\n\t\t\t\telse if (option === \"Trust always\") finish(\"always\");\n\t\t\t\telse finish(\"deny\");\n\t\t\t},\n\t\t\t() => finish(\"deny\"),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\nexport interface ProjectHookTrustPolicyOptions {\n\tinitialCwd: string;\n\tinitialSessionId: string;\n\texplicitTrust: boolean;\n\tinteractive: boolean;\n\tskipInitialPrompt: boolean;\n\tstore: ProjectHookTrustStore;\n\tprompt: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\treportError?: (error: string | undefined) => void;\n}\n\nexport interface ProjectHookTrustPolicy {\n\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean>;\n\tgetInitialTrustedIdentity(): string | undefined;\n\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult;\n\tisTrustedFor(sessionCwd: string, sessionId: string): boolean;\n}\ninterface ProjectHookTrustPolicyState {\n\tinitialTrusted: boolean;\n\tinitialTrustedIdentity: string | undefined;\n\ttrustOnceIdentity: string | undefined;\n\ttrustOnceSessionId: string | undefined;\n\ttrustOnceConsumed: boolean;\n}\n\ntype ProjectHookTrustErrorReporter = (error: string | undefined) => void;\n\nfunction identifyInitialProjectHooks(cwd: string, reportError: ProjectHookTrustErrorReporter): string | undefined {\n\ttry {\n\t\treturn canonicalProjectHookIdentity(cwd);\n\t} catch (error) {\n\t\treportError(\n\t\t\t`Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t\treturn undefined;\n\t}\n}\n\nfunction applyInitialProjectHookTrustChoice(\n\tchoice: ProjectHookTrustChoice,\n\tidentity: string,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): void {\n\tif (choice === \"once\" || choice === \"always\") {\n\t\tstate.initialTrusted = true;\n\t\tstate.initialTrustedIdentity = identity;\n\t}\n\tif (choice === \"once\") {\n\t\tstate.trustOnceIdentity = identity;\n\t\tstate.trustOnceSessionId = options.initialSessionId;\n\t}\n\tif (choice === \"always\") {\n\t\tconst saved = options.store.trustAlwaysIdentity(identity);\n\t\treportError(saved.error);\n\t}\n}\n\nasync function resolveInitialProjectHookTrust(\n\tbackendAllowsProjectHooks: boolean,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): Promise<boolean> {\n\tif (!backendAllowsProjectHooks) return state.initialTrusted;\n\tif (state.initialTrusted) return true;\n\tif (options.skipInitialPrompt) return false;\n\tif (!hasProjectHookConfiguration(options.initialCwd)) return false;\n\n\tconst persisted = options.store.isTrusted(options.initialCwd);\n\treportError(persisted.error);\n\tstate.initialTrusted = persisted.trusted;\n\tstate.initialTrustedIdentity = persisted.trusted ? persisted.identity : undefined;\n\tif (state.initialTrusted || !options.interactive) return state.initialTrusted;\n\n\tconst identity = identifyInitialProjectHooks(options.initialCwd, reportError);\n\tif (!identity) return false;\n\tconst choice = await options.prompt(options.initialCwd, identity);\n\tapplyInitialProjectHookTrustChoice(choice, identity, options, state, reportError);\n\treturn state.initialTrusted;\n}\n\n/** Orchestrates the CLI's startup and per-session project-hook trust decisions. */\nexport function createProjectHookTrustPolicy(options: ProjectHookTrustPolicyOptions): ProjectHookTrustPolicy {\n\tconst state: ProjectHookTrustPolicyState = {\n\t\tinitialTrusted: options.explicitTrust,\n\t\tinitialTrustedIdentity: undefined,\n\t\ttrustOnceIdentity: undefined,\n\t\ttrustOnceSessionId: undefined,\n\t\ttrustOnceConsumed: false,\n\t};\n\tconst reportError = options.reportError ?? (() => {});\n\n\treturn {\n\t\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean> {\n\t\t\treturn resolveInitialProjectHookTrust(backendAllowsProjectHooks, options, state, reportError);\n\t\t},\n\n\t\tgetInitialTrustedIdentity(): string | undefined {\n\t\t\treturn state.initialTrustedIdentity;\n\t\t},\n\n\t\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult {\n\t\t\tif (options.explicitTrust) return { trusted: true };\n\t\t\tif (!hasProjectHookConfiguration(sessionCwd)) return { trusted: false };\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\t!state.trustOnceConsumed &&\n\t\t\t\t\tstate.trustOnceIdentity &&\n\t\t\t\t\tstate.trustOnceSessionId === sessionId &&\n\t\t\t\t\tcanonicalProjectHookIdentity(sessionCwd) === state.trustOnceIdentity\n\t\t\t\t) {\n\t\t\t\t\tstate.trustOnceConsumed = true;\n\t\t\t\t\treturn { trusted: true, identity: state.trustOnceIdentity };\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst message = `Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\t\treportError(message);\n\t\t\t\treturn { trusted: false, error: message };\n\t\t\t}\n\t\t\tconst persisted = options.store.isTrusted(sessionCwd);\n\t\t\treportError(persisted.error);\n\t\t\treturn persisted;\n\t\t},\n\n\t\tisTrustedFor(sessionCwd: string, sessionId: string): boolean {\n\t\t\treturn this.resolveFor(sessionCwd, sessionId).trusted;\n\t\t},\n\t};\n}\n\nexport interface MainOptions {\n\textensionFactories?: ExtensionFactory[];\n\tdaemonRunner?: (args: readonly string[]) => Promise<void>;\n\t/** Test/embedding override for the interactive project-hook trust prompt. */\n\tprojectHookTrustPrompt?: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\t/** Test/embedding override for persistent project-hook trust storage. */\n\tprojectHookTrustStore?: ProjectHookTrustStore;\n}\ninterface ParsedMainInvocation {\n\tparsed: Args;\n\tappMode: GripAgentAppMode;\n}\n\ninterface StartupSessionResolution {\n\tcwd: string;\n\tagentDir: string;\n\tstartupSettingsManager: SettingsManager;\n\tsessionDir: string | undefined;\n\tremoteSessionOptions: RemoteSessionCliOptions | undefined;\n\tinitialSession: Session;\n}\n\nasync function runCliPreflight(args: string[], options: MainOptions | undefined): Promise<boolean> {\n\tif (isDaemonCommand(args)) {\n\t\tawait (options?.daemonRunner ?? runDaemonCommand)(args);\n\t\treturn true;\n\t}\n\tconfigureHttpDispatcher();\n\tresetTimings();\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env.GRIP_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env.GRIP_OFFLINE = \"1\";\n\t\tprocess.env.GRIP_SKIP_VERSION_CHECK = \"1\";\n\t}\n\tif (process.platform === \"win32\") cleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\tif (await handlePackageCommand(args)) return true;\n\treturn handleConfigCommand(args);\n}\n\nfunction reportArgumentDiagnostics(parsed: Args): void {\n\tif (parsed.diagnostics.length === 0) return;\n\tfor (const diagnostic of parsed.diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : chalk.yellow;\n\t\tconsole.error(color(`${diagnostic.type === \"error\" ? \"Error\" : \"Warning\"}: ${diagnostic.message}`));\n\t}\n\tif (parsed.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) process.exit(1);\n}\n\nasync function handleCliMetadataCommands(parsed: Args): Promise<void> {\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\tif (!parsed.export) return;\n\tlet result: string;\n\ttry {\n\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n\tconsole.log(`Exported to: ${result}`);\n\tprocess.exit(0);\n}\n\nasync function parseMainInvocation(args: string[]): Promise<ParsedMainInvocation> {\n\tconst parsed = parseArgs(args);\n\treportArgumentDiagnostics(parsed);\n\ttime(\"parseArgs\");\n\tconst appMode = resolveAppMode(parsed, process.stdin.isTTY);\n\tGripAgent.setupStdio({ mode: appMode });\n\tawait handleCliMetadataCommands(parsed);\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(\"Error: @file arguments are not supported in RPC mode\"));\n\t\tprocess.exit(1);\n\t}\n\tvalidateForkFlags(parsed);\n\treturn { parsed, appMode };\n}\n\nasync function resolveStartupSession(parsed: Args, appMode: GripAgentAppMode): Promise<StartupSessionResolution> {\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir);\n\treportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\"));\n\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\tconst sessionDir =\n\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\tstartupSettingsManager.getSessionDir();\n\tconst remoteSessionOptions = resolveRemoteSessionCliOptions(parsed);\n\tlet initialSession = await resolveInitialSession(\n\t\tparsed,\n\t\tcwd,\n\t\tsessionDir,\n\t\tstartupSettingsManager,\n\t\tremoteSessionOptions,\n\t);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(initialSession, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tif (appMode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\tif (!selectedCwd) process.exit(0);\n\t\tinitialSession = await createLifecycleSessionManager({\n\t\t\tcwd,\n\t\t\tsessionDir,\n\t\t\tremote: remoteSessionOptions,\n\t\t}).openReference(missingSessionCwdIssue.sessionReference!, { cwdOverride: selectedCwd });\n\t}\n\ttime(\"resolveInitialSession\");\n\treturn { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession };\n}\n\nasync function resolveStartupToolOperations(parsed: Args): Promise<ToolOperations | undefined> {\n\tif (parsed.help) return undefined;\n\tconst remoteDeferred = parsed.remoteDeferred;\n\tif (remoteDeferred && parsed.remote) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred and --remote cannot be used together\"));\n\t\tprocess.exit(1);\n\t}\n\tif (parsed.remote) {\n\t\ttry {\n\t\t\treturn await createRemoteToolOperations(parsed.remote);\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.error(chalk.red(`Error: failed to initialize remote tool operations: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (!remoteDeferred) return undefined;\n\tif (!parsed.remoteCwd) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred requires --remote-cwd <path>\"));\n\t\tprocess.exit(1);\n\t}\n\treturn new DeferredRemoteToolOperations(parsed.remoteCwd);\n}\n\nfunction createCliLspInputs(parsed: Args, cwd: string): LspConfigurationInput[] {\n\tconst inputs: LspConfigurationInput[] = [];\n\tif (parsed.lspConfig) inputs.push({ type: \"file\", path: resolvePath(parsed.lspConfig, cwd), scope: \"cli\" });\n\tif (parsed.noLsp) inputs.push({ type: \"disabled\", source: \"--no-lsp\", scope: \"cli\" });\n\treturn inputs;\n}\nasync function handleRuntimeInformationCommands(parsed: Args, gripAgent: GripAgent): Promise<void> {\n\tconst { modelRegistry, resourceLoader } = gripAgent.services;\n\tif (parsed.help) {\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\tprintHelp(extensionFlags);\n\t\tprocess.exit(0);\n\t}\n\tif (parsed.listModels === undefined) return;\n\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\tawait listModels(modelRegistry, searchPattern);\n\tprocess.exit(0);\n}\n\nasync function reportRuntimeStartupDiagnostics(gripAgent: GripAgent, deprecationWarnings: string[]): Promise<void> {\n\tif (gripAgent.mode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\ttime(\"resolveModelScope\");\n\tconst hasFatalDiagnostics = gripAgent.diagnostics.some(isFatalGripAgentDiagnostic);\n\tif (gripAgent.mode !== \"interactive\" || hasFatalDiagnostics) reportDiagnostics(gripAgent.diagnostics);\n\tif (hasFatalDiagnostics) process.exit(1);\n\ttime(\"createAgentSession\");\n}\n\nexport async function main(args: string[], options?: MainOptions) {\n\tif (await runCliPreflight(args, options)) return;\n\tconst { parsed, appMode } = await parseMainInvocation(args);\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());\n\ttime(\"runMigrations\");\n\n\t// Decide the final runtime cwd before creating cwd-bound runtime services.\n\t// --session and --resume may select a session from another project, so project-local\n\t// settings, resources, provider registrations, and models must be resolved only after\n\t// the target session cwd is known. The startup-cwd settings manager is used only for\n\t// sessionDir lookup during session selection.\n\tconst { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession } =\n\t\tawait resolveStartupSession(parsed, appMode);\n\tconst projectHookTrustStore = options?.projectHookTrustStore ?? new ProjectHookTrustStore(agentDir);\n\tconst reportedProjectHookTrustErrors = new Set<string>();\n\tconst reportProjectHookTrustError = (error: string | undefined) => {\n\t\tif (!error || reportedProjectHookTrustErrors.has(error)) return;\n\t\treportedProjectHookTrustErrors.add(error);\n\t\tconsole.error(chalk.yellow(`Warning: ${error}`));\n\t};\n\tconst initialHookCwd = initialSession.getCwd();\n\tconst projectHookTrustPolicy = createProjectHookTrustPolicy({\n\t\tinitialCwd: initialHookCwd,\n\t\tinitialSessionId: initialSession.getSessionId(),\n\t\texplicitTrust: parsed.trustProjectHooks === true,\n\t\tinteractive: appMode === \"interactive\",\n\t\tskipInitialPrompt: parsed.help || parsed.listModels !== undefined,\n\t\tstore: projectHookTrustStore,\n\t\tprompt:\n\t\t\toptions?.projectHookTrustPrompt ??\n\t\t\t((promptCwd, promptIdentity) => promptForProjectHookTrust(promptCwd, promptIdentity, startupSettingsManager)),\n\t\treportError: reportProjectHookTrustError,\n\t});\n\tconst authStorage = AuthStorage.create();\n\tconst runtimeSessionManager = parsed.noSession\n\t\t? new InMemorySessionManager(initialSession.getCwd())\n\t\t: createLifecycleSessionManager({ cwd: initialSession.getCwd(), sessionDir, remote: remoteSessionOptions });\n\tconst toolOperations = await resolveStartupToolOperations(parsed);\n\tconst initialHookBackend = toolOperations?.getBackendInfo?.();\n\tconst initialProjectHooksTrusted = await projectHookTrustPolicy.resolveInitial(\n\t\ttoolOperations === undefined || initialHookBackend?.type === \"local\",\n\t);\n\tconst initialTrustedProjectHooksIdentity = projectHookTrustPolicy.getInitialTrustedIdentity();\n\tconst backendType = toolOperations?.getBackendInfo?.()?.type;\n\tconst instructionPathCwd = toolOperations && backendType === \"remote\" ? toolOperations.cwd : cwd;\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);\n\tconst resolvedSkillPaths = resolveCliPaths(instructionPathCwd, parsed.skills);\n\tconst resolvedRulePaths = resolveCliPaths(instructionPathCwd, parsed.rules);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(instructionPathCwd, parsed.promptTemplates);\n\tconst resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tconst cliLspInputs = createCliLspInputs(parsed, cwd);\n\tconst gripAgent = await GripAgent.create({\n\t\ttoolOperations,\n\t\townsToolOperations: toolOperations !== undefined,\n\t\tmode: appMode,\n\t\tcwd: initialSession.getCwd(),\n\t\tagentDir,\n\t\tsessionManager: runtimeSessionManager,\n\t\tauthStorage,\n\t\ttrustProjectHooks: initialProjectHooksTrusted,\n\t\ttrustedProjectHooksIdentity: initialTrustedProjectHooksIdentity,\n\t\textensionFlagValues: parsed.unknownFlags,\n\t\tresourceLoaderOptions: {\n\t\t\ttoolOperations,\n\t\t\tadditionalExtensionPaths: resolvedExtensionPaths,\n\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\tadditionalRulePaths: resolvedRulePaths,\n\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\tnoExtensions: parsed.noExtensions,\n\t\t\tnoSkills: parsed.noSkills,\n\t\t\tnoRules: parsed.noRules,\n\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\tnoThemes: parsed.noThemes,\n\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\tappendSystemPrompt: parsed.appendSystemPrompt,\n\t\t\textensionFactories: options?.extensionFactories,\n\t\t},\n\t\tresolveSessionOptions: async ({ services, session }) => {\n\t\t\tconst { settingsManager, modelRegistry } = services;\n\t\t\tconst diagnostics: GripAgentDiagnostic[] = [\n\t\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t];\n\t\t\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\t\tconst scopedModels =\n\t\t\t\tmodelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];\n\t\t\tconst { options: sessionOptions, diagnostics: sessionOptionDiagnostics } = buildSessionOptions(\n\t\t\t\tparsed,\n\t\t\t\tscopedModels,\n\t\t\t\tsession.buildSessionContext().messages.length > 0,\n\t\t\t\tmodelRegistry,\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\n\t\t\tif (parsed.apiKey) {\n\t\t\t\tif (!sessionOptions.model) {\n\t\t\t\t\tdiagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (toolOperations) {\n\t\t\t\tconst backend = toolOperations.getBackendInfo?.();\n\t\t\t\tlet message = `Deferred remote backend mode enabled (cwd: ${toolOperations.cwd})`;\n\t\t\t\tif (backend?.type === \"remote\" && backend.configured) {\n\t\t\t\t\tmessage = `Remote tool operations enabled: ${backend.url} (cwd: ${backend.cwd})`;\n\t\t\t\t}\n\t\t\t\tdiagnostics.push({ type: \"info\", message });\n\t\t\t}\n\t\t\tconst projectHookTrust = projectHookTrustPolicy.resolveFor(services.cwd, session.getSessionId());\n\n\t\t\treturn {\n\t\t\t\tmodel: sessionOptions.model,\n\t\t\t\tthinkingLevel: sessionOptions.thinkingLevel,\n\t\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\t\ttools: sessionOptions.tools,\n\t\t\t\tenableLspTools: sessionOptions.enableLspTools,\n\t\t\t\tnoTools: sessionOptions.noTools,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t\ttoolOperations,\n\t\t\t\ttrustProjectHooks: projectHookTrust.trusted,\n\t\t\t\ttrustedProjectHooksIdentity: projectHookTrust.identity,\n\t\t\t\tlsp: cliLspInputs,\n\t\t\t\tdiagnostics,\n\t\t\t};\n\t\t},\n\t});\n\tawait gripAgent.createAgentSession({ session: initialSession });\n\ttime(\"createAgentSessionRuntime\");\n\tconst { settingsManager } = gripAgent.services;\n\tawait handleRuntimeInformationCommands(parsed, gripAgent);\n\n\tconst stdinContent = await gripAgent.readPipedStdin();\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\n\tinitTheme(settingsManager.getTheme(), gripAgent.mode === \"interactive\");\n\ttime(\"initTheme\");\n\n\tawait reportRuntimeStartupDiagnostics(gripAgent, deprecationWarnings);\n\n\tawait gripAgent.runMode({\n\t\tmigratedProviders,\n\t\tinitialMessage,\n\t\tinitialImages,\n\t\tinitialMessages: parsed.messages,\n\t\tverbose: parsed.verbose,\n\t\ttuiMode: parsed.tuiMode,\n\t\tstartupBenchmark: isTruthyEnvFlag(process.env.GRIP_STARTUP_BENCHMARK),\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Main entry point for the coding agent CLI.\n *\n * This file handles CLI argument parsing and translates them into\n * GripAgent options. GripAgent does the heavy lifting.\n */\n\nimport { createInterface } from \"node:readline\";\nimport { modelsAreEqual } from \"@greppleai/grip-ai\";\nimport { ProcessTerminal, setKeybindings, TuiMainScreen } from \"@greppleai/grip-tui\";\nimport chalk from \"chalk\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.ts\";\nimport { processFileArguments } from \"./cli/file-processor.ts\";\nimport { buildInitialMessage, type InitialMessageResult } from \"./cli/initial-message.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { selectSession } from \"./cli/session-picker.ts\";\nimport {\n\tENV_REMOTE_PROJECT_ID,\n\tENV_REMOTE_SESSION_BASE_URL,\n\tENV_REMOTE_SESSION_TOKEN,\n\tENV_SESSION_DIR,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetPackageDir,\n\tisBunBinary,\n\tVERSION,\n} from \"./config.ts\";\nimport { AuthStorage } from \"./core/auth-storage.ts\";\nimport { exportFromFile } from \"./core/export-html/index.ts\";\nimport type { ExtensionFactory } from \"./core/extensions/types.ts\";\nimport type { GripAgentAppMode, GripAgentDiagnostic, GripAgentSessionOptions } from \"./core/grip-agent.ts\";\nimport { GripAgent, isFatalGripAgentDiagnostic } from \"./core/grip-agent.ts\";\nimport {\n\tcanonicalProjectHookIdentity,\n\thasProjectHookConfiguration,\n\ttype ProjectHookTrustResult,\n\tProjectHookTrustStore,\n} from \"./core/hooks/trust-store.ts\";\nimport { configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { KeybindingsManager } from \"./core/keybindings.ts\";\nimport type { LspConfigurationInput } from \"./core/lsp/config-loader.ts\";\nimport type { ModelRegistry } from \"./core/model-registry.ts\";\nimport { resolveCliModel, resolveModelScope, type ScopedModel } from \"./core/model-resolver.ts\";\nimport { InMemorySessionManager } from \"./core/session/in-memory-session-manager.ts\";\nimport { LocalSessionManager } from \"./core/session/local-session-manager.ts\";\nimport { RemoteSessionManager } from \"./core/session/remote-session-manager.ts\";\nimport type { Session } from \"./core/session/session.ts\";\nimport type { SessionManager } from \"./core/session/session-manager.ts\";\nimport {\n\tformatMissingSessionCwdPrompt,\n\tgetMissingSessionCwdIssue,\n\tMissingSessionCwdError,\n\ttype SessionCwdIssue,\n} from \"./core/session-cwd.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { resetTimings, time } from \"./core/timings.ts\";\nimport {\n\tcreateRemoteToolOperations,\n\tDeferredRemoteToolOperations,\n\ttype ToolOperations,\n} from \"./core/tools/operations.ts\";\nimport { runDaemonCommand } from \"./daemon/command.ts\";\nimport { isDaemonCommand } from \"./daemon/config.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { ExtensionSelectorComponent } from \"./modes/interactive/components/extension-selector.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport { cleanupWindowsBinarySelfUpdateLeftovers } from \"./utils/binary-self-update.ts\";\nimport { isLocalPath, normalizePath, resolvePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\nfunction collectSettingsDiagnostics(settingsManager: SettingsManager, context: string): GripAgentDiagnostic[] {\n\treturn settingsManager.drainErrors().map(({ scope, error }) => ({\n\t\ttype: \"warning\",\n\t\tmessage: `(${context}, ${scope} settings) ${error.message}`,\n\t}));\n}\n\nfunction reportDiagnostics(diagnostics: readonly GripAgentDiagnostic[]): void {\n\tfor (const diagnostic of diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : diagnostic.type === \"warning\" ? chalk.yellow : chalk.dim;\n\t\tconst prefix = diagnostic.type === \"error\" ? \"Error: \" : diagnostic.type === \"warning\" ? \"Warning: \" : \"\";\n\t\tconsole.error(color(`${prefix}${diagnostic.message}`));\n\t}\n}\n\nfunction isTruthyEnvFlag(value: string | undefined): boolean {\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\nfunction resolveAppMode(parsed: Args, stdinIsTTY: boolean): GripAgentAppMode {\n\tif (parsed.mode === \"rpc\") {\n\t\treturn \"rpc\";\n\t}\n\tif (parsed.mode === \"json\") {\n\t\treturn \"json\";\n\t}\n\tif (parsed.print || !stdinIsTTY) {\n\t\treturn \"print\";\n\t}\n\treturn \"interactive\";\n}\n\nasync function prepareInitialMessage(\n\tparsed: Args,\n\tautoResizeImages: boolean,\n\tstdinContent?: string,\n): Promise<InitialMessageResult> {\n\tif (parsed.fileArgs.length === 0) {\n\t\treturn buildInitialMessage({ parsed, stdinContent });\n\t}\n\n\tconst { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });\n\treturn buildInitialMessage({\n\t\tparsed,\n\t\tfileText: text,\n\t\tfileImages: images,\n\t\tstdinContent,\n\t});\n}\n\n/** Result from resolving a session argument */\ntype ResolvedSession =\n\t| { type: \"path\"; path: string } // Direct file path\n\t| { type: \"local\"; path: string } // Found in current project\n\t| { type: \"global\"; path: string; cwd: string } // Found in different project\n\t| { type: \"not_found\"; arg: string }; // Not found anywhere\n\n/**\n * Resolve a session argument to a file path.\n * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.\n */\nasync function resolveSessionPath(sessionArg: string, cwd: string, sessionDir?: string): Promise<ResolvedSession> {\n\t// If it looks like a file path, resolve it before handing it to the session manager.\n\tif (sessionArg.includes(\"/\") || sessionArg.includes(\"\\\\\") || sessionArg.endsWith(\".jsonl\")) {\n\t\treturn { type: \"path\", path: resolvePath(sessionArg, cwd) };\n\t}\n\n\t// Try to match as session ID in current project first\n\tconst localSessions = await new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).list();\n\tconst localMatches = localSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (localMatches.length >= 1) {\n\t\treturn { type: \"local\", path: localMatches[0].path };\n\t}\n\n\t// Try global search across all projects\n\tconst allSessions = await new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll();\n\tconst globalMatches = allSessions.filter((s) => s.id.startsWith(sessionArg));\n\n\tif (globalMatches.length >= 1) {\n\t\tconst match = globalMatches[0];\n\t\treturn { type: \"global\", path: match.path, cwd: match.cwd };\n\t}\n\n\t// Not found anywhere\n\treturn { type: \"not_found\", arg: sessionArg };\n}\n\n/** Prompt user for yes/no confirmation */\nasync function promptConfirm(message: string): Promise<boolean> {\n\treturn new Promise((resolve) => {\n\t\tconst rl = createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t});\n\t\trl.question(`${message} [y/N] `, (answer) => {\n\t\t\trl.close();\n\t\t\tresolve(answer.toLowerCase() === \"y\" || answer.toLowerCase() === \"yes\");\n\t\t});\n\t});\n}\n\nfunction validateForkFlags(parsed: Args): void {\n\tif (!parsed.fork) return;\n\n\tconst conflictingFlags = [\n\t\tparsed.session ? \"--session\" : undefined,\n\t\tparsed.continue ? \"--continue\" : undefined,\n\t\tparsed.resume ? \"--resume\" : undefined,\n\t\tparsed.noSession ? \"--no-session\" : undefined,\n\t].filter((flag): flag is string => flag !== undefined);\n\n\tif (conflictingFlags.length > 0) {\n\t\tconsole.error(chalk.red(`Error: --fork cannot be combined with ${conflictingFlags.join(\", \")}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction forkSessionOrExit(sourcePath: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).forkFrom(sourcePath);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\nfunction openSessionOrExit(path: string, cwd: string, sessionDir?: string): Session {\n\ttry {\n\t\treturn new LocalSessionManager({ cwd, sessionDir }).openReference(path);\n\t} catch (error: unknown) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n}\n\ninterface RemoteSessionCliOptions {\n\tbaseUrl: string;\n\ttoken: string;\n\tprojectId?: string;\n}\n\ninterface LifecycleSessionManagerOptions {\n\tcwd: string;\n\tsessionDir?: string;\n\tremote?: RemoteSessionCliOptions;\n}\n\nfunction resolveRemoteSessionCliOptions(parsed: Args): RemoteSessionCliOptions | undefined {\n\tconst baseUrl = parsed.remoteSessionBaseUrl ?? process.env[ENV_REMOTE_SESSION_BASE_URL];\n\tconst token = parsed.remoteSessionToken ?? process.env[ENV_REMOTE_SESSION_TOKEN];\n\tconst projectId = parsed.remoteProjectId ?? process.env[ENV_REMOTE_PROJECT_ID];\n\n\tif (!baseUrl && !token && !projectId) {\n\t\treturn undefined;\n\t}\n\tif (!baseUrl || !token) {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Error: remote sessions require both --remote-session-base-url and --remote-session-token, or ${ENV_REMOTE_SESSION_BASE_URL} and ${ENV_REMOTE_SESSION_TOKEN}`,\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\treturn { baseUrl, token, projectId };\n}\n\nfunction createLifecycleSessionManager(options: LifecycleSessionManagerOptions): SessionManager {\n\tif (options.remote) {\n\t\treturn new RemoteSessionManager({\n\t\t\tbaseUrl: options.remote.baseUrl,\n\t\t\ttoken: options.remote.token,\n\t\t\tcwd: options.cwd,\n\t\t\tprojectId: options.remote.projectId,\n\t\t});\n\t}\n\treturn new LocalSessionManager({ cwd: options.cwd, sessionDir: options.sessionDir });\n}\n\nasync function resolveRemoteInitialSession(parsed: Args, manager: SessionManager): Promise<Session> {\n\tif (parsed.fork) {\n\t\treturn await manager.forkFrom(parsed.fork);\n\t}\n\tif (parsed.session) {\n\t\treturn await manager.openReference(parsed.session);\n\t}\n\tif (parsed.resume) {\n\t\tconst selectedReference = await selectSession(\n\t\t\t(onProgress) => manager.list(onProgress),\n\t\t\t(onProgress) => manager.listAll(onProgress),\n\t\t);\n\t\tif (!selectedReference) {\n\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\tprocess.exit(0);\n\t\t}\n\t\treturn await manager.openReference(selectedReference);\n\t}\n\tif (parsed.continue) {\n\t\treturn await manager.continueRecent();\n\t}\n\treturn await manager.create();\n}\n\nasync function resolveLocalRequestedSession(sessionArg: string, cwd: string, sessionDir?: string): Promise<Session> {\n\tconst resolved = await resolveSessionPath(sessionArg, cwd, sessionDir);\n\tswitch (resolved.type) {\n\t\tcase \"path\":\n\t\tcase \"local\":\n\t\t\treturn openSessionOrExit(resolved.path, process.cwd(), sessionDir);\n\t\tcase \"global\": {\n\t\t\tconsole.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));\n\t\t\tconst shouldFork = await promptConfirm(\"Fork this session into current directory?\");\n\t\t\tif (!shouldFork) {\n\t\t\t\tconsole.log(chalk.dim(\"Aborted.\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\t\t}\n\t\tcase \"not_found\":\n\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function resolveInitialSession(\n\tparsed: Args,\n\tcwd: string,\n\tsessionDir: string | undefined,\n\tsettingsManager: SettingsManager,\n\tremoteOptions?: RemoteSessionCliOptions,\n): Promise<Session> {\n\tif (parsed.noSession) {\n\t\treturn new InMemorySessionManager().create();\n\t}\n\n\tif (remoteOptions) {\n\t\treturn resolveRemoteInitialSession(\n\t\t\tparsed,\n\t\t\tnew RemoteSessionManager({\n\t\t\t\tbaseUrl: remoteOptions.baseUrl,\n\t\t\t\ttoken: remoteOptions.token,\n\t\t\t\tcwd,\n\t\t\t\tprojectId: remoteOptions.projectId,\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (parsed.fork) {\n\t\tconst resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);\n\n\t\tswitch (resolved.type) {\n\t\t\tcase \"path\":\n\t\t\tcase \"local\":\n\t\t\tcase \"global\":\n\t\t\t\treturn forkSessionOrExit(resolved.path, cwd, sessionDir);\n\n\t\t\tcase \"not_found\":\n\t\t\t\tconsole.error(chalk.red(`No session found matching '${resolved.arg}'`));\n\t\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\n\tif (parsed.session) return resolveLocalRequestedSession(parsed.session, cwd, sessionDir);\n\n\tif (parsed.resume) {\n\t\tinitTheme(settingsManager.getTheme(), true);\n\t\ttry {\n\t\t\tconst selectedPath = await selectSession(\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd, sessionDir }).list(onProgress),\n\t\t\t\t(onProgress) => new LocalSessionManager({ cwd: process.cwd(), sessionDir }).listAll(onProgress),\n\t\t\t);\n\t\t\tif (!selectedPath) {\n\t\t\t\tconsole.log(chalk.dim(\"No session selected\"));\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\treturn openSessionOrExit(selectedPath, process.cwd(), sessionDir);\n\t\t} finally {\n\t\t\tstopThemeWatcher();\n\t\t}\n\t}\n\n\tif (parsed.continue) {\n\t\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).continueRecent();\n\t}\n\n\treturn new LocalSessionManager({ cwd: cwd, sessionDir: sessionDir }).create();\n}\n\ninterface SessionOptionsResolution {\n\toptions: GripAgentSessionOptions;\n\tcliThinkingFromModel: boolean;\n\tdiagnostics: GripAgentDiagnostic[];\n}\n\nfunction applyCliModelSelection(\n\tparsed: Args,\n\tmodelRegistry: ModelRegistry,\n\tresolution: SessionOptionsResolution,\n): void {\n\tif (!parsed.model) return;\n\tconst resolved = resolveCliModel({\n\t\tcliProvider: parsed.provider,\n\t\tcliModel: parsed.model,\n\t\tmodelRegistry,\n\t});\n\tif (resolved.warning) resolution.diagnostics.push({ type: \"warning\", message: resolved.warning });\n\tif (resolved.error) resolution.diagnostics.push({ type: \"error\", message: resolved.error });\n\tif (!resolved.model) return;\n\tresolution.options.model = resolved.model;\n\tif (!parsed.thinking && resolved.thinkingLevel) {\n\t\tresolution.options.thinkingLevel = resolved.thinkingLevel;\n\t\tresolution.cliThinkingFromModel = true;\n\t}\n}\n\nfunction selectDefaultScopedModel(\n\tscopedModels: ScopedModel[],\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): ScopedModel {\n\tconst savedProvider = settingsManager.getDefaultProvider();\n\tconst savedModelId = settingsManager.getDefaultModel();\n\tconst savedModel = savedProvider && savedModelId ? modelRegistry.find(savedProvider, savedModelId) : undefined;\n\treturn (\n\t\t(savedModel ? scopedModels.find((scoped) => modelsAreEqual(scoped.model, savedModel)) : undefined) ??\n\t\tscopedModels[0]\n\t);\n}\n\nfunction applyCliToolSelection(parsed: Args, options: GripAgentSessionOptions): void {\n\tif (parsed.noTools) options.noTools = \"all\";\n\telse if (parsed.noBuiltinTools) options.noTools = \"builtin\";\n\tif (parsed.tools) options.tools = [...parsed.tools];\n\tif (parsed.enableLspTools) options.enableLspTools = true;\n}\n\nfunction buildSessionOptions(\n\tparsed: Args,\n\tscopedModels: ScopedModel[],\n\thasExistingSession: boolean,\n\tmodelRegistry: ModelRegistry,\n\tsettingsManager: SettingsManager,\n): SessionOptionsResolution {\n\tconst resolution: SessionOptionsResolution = {\n\t\toptions: {},\n\t\tcliThinkingFromModel: false,\n\t\tdiagnostics: [],\n\t};\n\tapplyCliModelSelection(parsed, modelRegistry, resolution);\n\tconst { options } = resolution;\n\n\tif (!options.model && scopedModels.length > 0 && !hasExistingSession) {\n\t\tconst selected = selectDefaultScopedModel(scopedModels, modelRegistry, settingsManager);\n\t\toptions.model = selected.model;\n\t\tif (!parsed.thinking && selected.thinkingLevel) options.thinkingLevel = selected.thinkingLevel;\n\t}\n\n\tif (parsed.thinking) options.thinkingLevel = parsed.thinking;\n\tif (scopedModels.length > 0) {\n\t\toptions.scopedModels = scopedModels.map((scoped) => ({\n\t\t\tmodel: scoped.model,\n\t\t\tthinkingLevel: scoped.thinkingLevel,\n\t\t}));\n\t}\n\tapplyCliToolSelection(parsed, options);\n\treturn resolution;\n}\n\nfunction resolveCliPaths(cwd: string, paths: string[] | undefined): string[] | undefined {\n\treturn paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));\n}\n\nasync function promptForMissingSessionCwd(\n\tissue: SessionCwdIssue,\n\tsettingsManager: SettingsManager,\n): Promise<string | undefined> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\n\t\tlet settled = false;\n\t\tconst finish = (result: string | undefined) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(result);\n\t\t};\n\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\tformatMissingSessionCwdPrompt(issue),\n\t\t\t[\"Continue\", \"Cancel\"],\n\t\t\t(option) => finish(option === \"Continue\" ? issue.fallbackCwd : undefined),\n\t\t\t() => finish(undefined),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\n\nexport type ProjectHookTrustChoice = \"deny\" | \"once\" | \"always\";\n\nexport async function promptForProjectHookTrust(\n\tcwd: string,\n\tidentity: string,\n\tsettingsManager: SettingsManager,\n): Promise<ProjectHookTrustChoice> {\n\tinitTheme(settingsManager.getTheme());\n\tsetKeybindings(KeybindingsManager.create());\n\tconst title = [\n\t\t`Project hooks were found in ${cwd}.`,\n\t\t\"Project hooks execute in the active workspace: as your host user locally, or inside an active sandbox/remote backend.\",\n\t\t`Trust always authorizes all current and future hook changes in ${identity}.`,\n\t].join(\"\\n\");\n\n\treturn new Promise((resolve) => {\n\t\tconst ui = new TuiMainScreen(new ProcessTerminal(), settingsManager.getShowHardwareCursor());\n\t\tui.setClearOnShrink(settingsManager.getClearOnShrink());\n\t\tlet settled = false;\n\t\tconst finish = (choice: ProjectHookTrustChoice) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tui.stop();\n\t\t\tresolve(choice);\n\t\t};\n\t\tconst selector = new ExtensionSelectorComponent(\n\t\t\ttitle,\n\t\t\t[\"Don't trust\", \"Trust once\", \"Trust always\"],\n\t\t\t(option) => {\n\t\t\t\tif (option === \"Trust once\") finish(\"once\");\n\t\t\t\telse if (option === \"Trust always\") finish(\"always\");\n\t\t\t\telse finish(\"deny\");\n\t\t\t},\n\t\t\t() => finish(\"deny\"),\n\t\t\t{ tui: ui },\n\t\t);\n\t\tui.addChild(selector);\n\t\tui.setFocus(selector);\n\t\tui.start();\n\t});\n}\nexport interface ProjectHookTrustPolicyOptions {\n\tinitialCwd: string;\n\tinitialSessionId: string;\n\texplicitTrust: boolean;\n\tinteractive: boolean;\n\tskipInitialPrompt: boolean;\n\tstore: ProjectHookTrustStore;\n\tprompt: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\treportError?: (error: string | undefined) => void;\n}\n\nexport interface ProjectHookTrustPolicy {\n\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean>;\n\tgetInitialTrustedIdentity(): string | undefined;\n\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult;\n\tisTrustedFor(sessionCwd: string, sessionId: string): boolean;\n}\ninterface ProjectHookTrustPolicyState {\n\tinitialTrusted: boolean;\n\tinitialTrustedIdentity: string | undefined;\n\ttrustOnceIdentity: string | undefined;\n\ttrustOnceSessionId: string | undefined;\n\ttrustOnceConsumed: boolean;\n}\n\ntype ProjectHookTrustErrorReporter = (error: string | undefined) => void;\n\nfunction identifyInitialProjectHooks(cwd: string, reportError: ProjectHookTrustErrorReporter): string | undefined {\n\ttry {\n\t\treturn canonicalProjectHookIdentity(cwd);\n\t} catch (error) {\n\t\treportError(\n\t\t\t`Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t\treturn undefined;\n\t}\n}\n\nfunction applyInitialProjectHookTrustChoice(\n\tchoice: ProjectHookTrustChoice,\n\tidentity: string,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): void {\n\tif (choice === \"once\" || choice === \"always\") {\n\t\tstate.initialTrusted = true;\n\t\tstate.initialTrustedIdentity = identity;\n\t}\n\tif (choice === \"once\") {\n\t\tstate.trustOnceIdentity = identity;\n\t\tstate.trustOnceSessionId = options.initialSessionId;\n\t}\n\tif (choice === \"always\") {\n\t\tconst saved = options.store.trustAlwaysIdentity(identity);\n\t\treportError(saved.error);\n\t}\n}\n\nasync function resolveInitialProjectHookTrust(\n\tbackendAllowsProjectHooks: boolean,\n\toptions: ProjectHookTrustPolicyOptions,\n\tstate: ProjectHookTrustPolicyState,\n\treportError: ProjectHookTrustErrorReporter,\n): Promise<boolean> {\n\tif (!backendAllowsProjectHooks) return state.initialTrusted;\n\tif (state.initialTrusted) return true;\n\tif (options.skipInitialPrompt) return false;\n\tif (!hasProjectHookConfiguration(options.initialCwd)) return false;\n\n\tconst persisted = options.store.isTrusted(options.initialCwd);\n\treportError(persisted.error);\n\tstate.initialTrusted = persisted.trusted;\n\tstate.initialTrustedIdentity = persisted.trusted ? persisted.identity : undefined;\n\tif (state.initialTrusted || !options.interactive) return state.initialTrusted;\n\n\tconst identity = identifyInitialProjectHooks(options.initialCwd, reportError);\n\tif (!identity) return false;\n\tconst choice = await options.prompt(options.initialCwd, identity);\n\tapplyInitialProjectHookTrustChoice(choice, identity, options, state, reportError);\n\treturn state.initialTrusted;\n}\n\n/** Orchestrates the CLI's startup and per-session project-hook trust decisions. */\nexport function createProjectHookTrustPolicy(options: ProjectHookTrustPolicyOptions): ProjectHookTrustPolicy {\n\tconst state: ProjectHookTrustPolicyState = {\n\t\tinitialTrusted: options.explicitTrust,\n\t\tinitialTrustedIdentity: undefined,\n\t\ttrustOnceIdentity: undefined,\n\t\ttrustOnceSessionId: undefined,\n\t\ttrustOnceConsumed: false,\n\t};\n\tconst reportError = options.reportError ?? (() => {});\n\n\treturn {\n\t\tresolveInitial(backendAllowsProjectHooks: boolean): Promise<boolean> {\n\t\t\treturn resolveInitialProjectHookTrust(backendAllowsProjectHooks, options, state, reportError);\n\t\t},\n\n\t\tgetInitialTrustedIdentity(): string | undefined {\n\t\t\treturn state.initialTrustedIdentity;\n\t\t},\n\n\t\tresolveFor(sessionCwd: string, sessionId: string): ProjectHookTrustResult {\n\t\t\tif (options.explicitTrust) return { trusted: true };\n\t\t\tif (!hasProjectHookConfiguration(sessionCwd)) return { trusted: false };\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\t!state.trustOnceConsumed &&\n\t\t\t\t\tstate.trustOnceIdentity &&\n\t\t\t\t\tstate.trustOnceSessionId === sessionId &&\n\t\t\t\t\tcanonicalProjectHookIdentity(sessionCwd) === state.trustOnceIdentity\n\t\t\t\t) {\n\t\t\t\t\tstate.trustOnceConsumed = true;\n\t\t\t\t\treturn { trusted: true, identity: state.trustOnceIdentity };\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst message = `Unable to identify project hooks repository: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\t\treportError(message);\n\t\t\t\treturn { trusted: false, error: message };\n\t\t\t}\n\t\t\tconst persisted = options.store.isTrusted(sessionCwd);\n\t\t\treportError(persisted.error);\n\t\t\treturn persisted;\n\t\t},\n\n\t\tisTrustedFor(sessionCwd: string, sessionId: string): boolean {\n\t\t\treturn this.resolveFor(sessionCwd, sessionId).trusted;\n\t\t},\n\t};\n}\n\nexport interface MainOptions {\n\textensionFactories?: ExtensionFactory[];\n\tdaemonRunner?: (args: readonly string[]) => Promise<void>;\n\t/** Test/embedding override for the interactive project-hook trust prompt. */\n\tprojectHookTrustPrompt?: (cwd: string, identity: string) => Promise<ProjectHookTrustChoice>;\n\t/** Test/embedding override for persistent project-hook trust storage. */\n\tprojectHookTrustStore?: ProjectHookTrustStore;\n}\ninterface ParsedMainInvocation {\n\tparsed: Args;\n\tappMode: GripAgentAppMode;\n}\n\ninterface StartupSessionResolution {\n\tcwd: string;\n\tagentDir: string;\n\tstartupSettingsManager: SettingsManager;\n\tsessionDir: string | undefined;\n\tremoteSessionOptions: RemoteSessionCliOptions | undefined;\n\tinitialSession: Session;\n}\n\nasync function runCliPreflight(args: string[], options: MainOptions | undefined): Promise<boolean> {\n\tif (isDaemonCommand(args)) {\n\t\tawait (options?.daemonRunner ?? runDaemonCommand)(args);\n\t\treturn true;\n\t}\n\tconfigureHttpDispatcher();\n\tresetTimings();\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(process.env.GRIP_OFFLINE);\n\tif (offlineMode) {\n\t\tprocess.env.GRIP_OFFLINE = \"1\";\n\t\tprocess.env.GRIP_SKIP_VERSION_CHECK = \"1\";\n\t}\n\tif (process.platform === \"win32\") {\n\t\tif (isBunBinary) await cleanupWindowsBinarySelfUpdateLeftovers();\n\t\telse cleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\t}\n\tif (await handlePackageCommand(args)) return true;\n\treturn handleConfigCommand(args);\n}\n\nfunction reportArgumentDiagnostics(parsed: Args): void {\n\tif (parsed.diagnostics.length === 0) return;\n\tfor (const diagnostic of parsed.diagnostics) {\n\t\tconst color = diagnostic.type === \"error\" ? chalk.red : chalk.yellow;\n\t\tconsole.error(color(`${diagnostic.type === \"error\" ? \"Error\" : \"Warning\"}: ${diagnostic.message}`));\n\t}\n\tif (parsed.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) process.exit(1);\n}\n\nasync function handleCliMetadataCommands(parsed: Args): Promise<void> {\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\tif (!parsed.export) return;\n\tlet result: string;\n\ttry {\n\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\tprocess.exit(1);\n\t}\n\tconsole.log(`Exported to: ${result}`);\n\tprocess.exit(0);\n}\n\nasync function parseMainInvocation(args: string[]): Promise<ParsedMainInvocation> {\n\tconst parsed = parseArgs(args);\n\treportArgumentDiagnostics(parsed);\n\ttime(\"parseArgs\");\n\tconst appMode = resolveAppMode(parsed, process.stdin.isTTY);\n\tGripAgent.setupStdio({ mode: appMode });\n\tawait handleCliMetadataCommands(parsed);\n\tif (parsed.mode === \"rpc\" && parsed.fileArgs.length > 0) {\n\t\tconsole.error(chalk.red(\"Error: @file arguments are not supported in RPC mode\"));\n\t\tprocess.exit(1);\n\t}\n\tvalidateForkFlags(parsed);\n\treturn { parsed, appMode };\n}\n\nasync function resolveStartupSession(parsed: Args, appMode: GripAgentAppMode): Promise<StartupSessionResolution> {\n\tconst cwd = process.cwd();\n\tconst agentDir = getAgentDir();\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir);\n\treportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\"));\n\tconst envSessionDir = process.env[ENV_SESSION_DIR];\n\tconst sessionDir =\n\t\t(parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??\n\t\t(envSessionDir ? expandTildePath(envSessionDir) : undefined) ??\n\t\tstartupSettingsManager.getSessionDir();\n\tconst remoteSessionOptions = resolveRemoteSessionCliOptions(parsed);\n\tlet initialSession = await resolveInitialSession(\n\t\tparsed,\n\t\tcwd,\n\t\tsessionDir,\n\t\tstartupSettingsManager,\n\t\tremoteSessionOptions,\n\t);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(initialSession, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tif (appMode !== \"interactive\") {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\tif (!selectedCwd) process.exit(0);\n\t\tinitialSession = await createLifecycleSessionManager({\n\t\t\tcwd,\n\t\t\tsessionDir,\n\t\t\tremote: remoteSessionOptions,\n\t\t}).openReference(missingSessionCwdIssue.sessionReference!, { cwdOverride: selectedCwd });\n\t}\n\ttime(\"resolveInitialSession\");\n\treturn { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession };\n}\n\nasync function resolveStartupToolOperations(parsed: Args): Promise<ToolOperations | undefined> {\n\tif (parsed.help) return undefined;\n\tconst remoteDeferred = parsed.remoteDeferred;\n\tif (remoteDeferred && parsed.remote) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred and --remote cannot be used together\"));\n\t\tprocess.exit(1);\n\t}\n\tif (parsed.remote) {\n\t\ttry {\n\t\t\treturn await createRemoteToolOperations(parsed.remote);\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.error(chalk.red(`Error: failed to initialize remote tool operations: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (!remoteDeferred) return undefined;\n\tif (!parsed.remoteCwd) {\n\t\tconsole.error(chalk.red(\"Error: --remote-deferred requires --remote-cwd <path>\"));\n\t\tprocess.exit(1);\n\t}\n\treturn new DeferredRemoteToolOperations(parsed.remoteCwd);\n}\n\nfunction createCliLspInputs(parsed: Args, cwd: string): LspConfigurationInput[] {\n\tconst inputs: LspConfigurationInput[] = [];\n\tif (parsed.lspConfig) inputs.push({ type: \"file\", path: resolvePath(parsed.lspConfig, cwd), scope: \"cli\" });\n\tif (parsed.noLsp) inputs.push({ type: \"disabled\", source: \"--no-lsp\", scope: \"cli\" });\n\treturn inputs;\n}\nasync function handleRuntimeInformationCommands(parsed: Args, gripAgent: GripAgent): Promise<void> {\n\tconst { modelRegistry, resourceLoader } = gripAgent.services;\n\tif (parsed.help) {\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\tprintHelp(extensionFlags);\n\t\tprocess.exit(0);\n\t}\n\tif (parsed.listModels === undefined) return;\n\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\tawait listModels(modelRegistry, searchPattern);\n\tprocess.exit(0);\n}\n\nasync function reportRuntimeStartupDiagnostics(gripAgent: GripAgent, deprecationWarnings: string[]): Promise<void> {\n\tif (gripAgent.mode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\ttime(\"resolveModelScope\");\n\tconst hasFatalDiagnostics = gripAgent.diagnostics.some(isFatalGripAgentDiagnostic);\n\tif (gripAgent.mode !== \"interactive\" || hasFatalDiagnostics) reportDiagnostics(gripAgent.diagnostics);\n\tif (hasFatalDiagnostics) process.exit(1);\n\ttime(\"createAgentSession\");\n}\n\nexport async function main(args: string[], options?: MainOptions) {\n\tif (await runCliPreflight(args, options)) return;\n\tconst { parsed, appMode } = await parseMainInvocation(args);\n\n\t// Run migrations (pass cwd for project-local migrations)\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(process.cwd());\n\ttime(\"runMigrations\");\n\n\t// Decide the final runtime cwd before creating cwd-bound runtime services.\n\t// --session and --resume may select a session from another project, so project-local\n\t// settings, resources, provider registrations, and models must be resolved only after\n\t// the target session cwd is known. The startup-cwd settings manager is used only for\n\t// sessionDir lookup during session selection.\n\tconst { cwd, agentDir, startupSettingsManager, sessionDir, remoteSessionOptions, initialSession } =\n\t\tawait resolveStartupSession(parsed, appMode);\n\tconst projectHookTrustStore = options?.projectHookTrustStore ?? new ProjectHookTrustStore(agentDir);\n\tconst reportedProjectHookTrustErrors = new Set<string>();\n\tconst reportProjectHookTrustError = (error: string | undefined) => {\n\t\tif (!error || reportedProjectHookTrustErrors.has(error)) return;\n\t\treportedProjectHookTrustErrors.add(error);\n\t\tconsole.error(chalk.yellow(`Warning: ${error}`));\n\t};\n\tconst initialHookCwd = initialSession.getCwd();\n\tconst projectHookTrustPolicy = createProjectHookTrustPolicy({\n\t\tinitialCwd: initialHookCwd,\n\t\tinitialSessionId: initialSession.getSessionId(),\n\t\texplicitTrust: parsed.trustProjectHooks === true,\n\t\tinteractive: appMode === \"interactive\",\n\t\tskipInitialPrompt: parsed.help || parsed.listModels !== undefined,\n\t\tstore: projectHookTrustStore,\n\t\tprompt:\n\t\t\toptions?.projectHookTrustPrompt ??\n\t\t\t((promptCwd, promptIdentity) => promptForProjectHookTrust(promptCwd, promptIdentity, startupSettingsManager)),\n\t\treportError: reportProjectHookTrustError,\n\t});\n\tconst authStorage = AuthStorage.create();\n\tconst runtimeSessionManager = parsed.noSession\n\t\t? new InMemorySessionManager(initialSession.getCwd())\n\t\t: createLifecycleSessionManager({ cwd: initialSession.getCwd(), sessionDir, remote: remoteSessionOptions });\n\tconst toolOperations = await resolveStartupToolOperations(parsed);\n\tconst initialHookBackend = toolOperations?.getBackendInfo?.();\n\tconst initialProjectHooksTrusted = await projectHookTrustPolicy.resolveInitial(\n\t\ttoolOperations === undefined || initialHookBackend?.type === \"local\",\n\t);\n\tconst initialTrustedProjectHooksIdentity = projectHookTrustPolicy.getInitialTrustedIdentity();\n\tconst backendType = toolOperations?.getBackendInfo?.()?.type;\n\tconst instructionPathCwd = toolOperations && backendType === \"remote\" ? toolOperations.cwd : cwd;\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);\n\tconst resolvedSkillPaths = resolveCliPaths(instructionPathCwd, parsed.skills);\n\tconst resolvedRulePaths = resolveCliPaths(instructionPathCwd, parsed.rules);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(instructionPathCwd, parsed.promptTemplates);\n\tconst resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tconst cliLspInputs = createCliLspInputs(parsed, cwd);\n\tconst gripAgent = await GripAgent.create({\n\t\ttoolOperations,\n\t\townsToolOperations: toolOperations !== undefined,\n\t\tmode: appMode,\n\t\tcwd: initialSession.getCwd(),\n\t\tagentDir,\n\t\tsessionManager: runtimeSessionManager,\n\t\tauthStorage,\n\t\ttrustProjectHooks: initialProjectHooksTrusted,\n\t\ttrustedProjectHooksIdentity: initialTrustedProjectHooksIdentity,\n\t\textensionFlagValues: parsed.unknownFlags,\n\t\tresourceLoaderOptions: {\n\t\t\ttoolOperations,\n\t\t\tadditionalExtensionPaths: resolvedExtensionPaths,\n\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\tadditionalRulePaths: resolvedRulePaths,\n\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\tnoExtensions: parsed.noExtensions,\n\t\t\tnoSkills: parsed.noSkills,\n\t\t\tnoRules: parsed.noRules,\n\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\tnoThemes: parsed.noThemes,\n\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\tappendSystemPrompt: parsed.appendSystemPrompt,\n\t\t\textensionFactories: options?.extensionFactories,\n\t\t},\n\t\tresolveSessionOptions: async ({ services, session }) => {\n\t\t\tconst { settingsManager, modelRegistry } = services;\n\t\t\tconst diagnostics: GripAgentDiagnostic[] = [\n\t\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t];\n\t\t\tconst modelPatterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\t\tconst scopedModels =\n\t\t\t\tmodelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];\n\t\t\tconst { options: sessionOptions, diagnostics: sessionOptionDiagnostics } = buildSessionOptions(\n\t\t\t\tparsed,\n\t\t\t\tscopedModels,\n\t\t\t\tsession.buildSessionContext().messages.length > 0,\n\t\t\t\tmodelRegistry,\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\n\t\t\tif (parsed.apiKey) {\n\t\t\t\tif (!sessionOptions.model) {\n\t\t\t\t\tdiagnostics.push({\n\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (toolOperations) {\n\t\t\t\tconst backend = toolOperations.getBackendInfo?.();\n\t\t\t\tlet message = `Deferred remote backend mode enabled (cwd: ${toolOperations.cwd})`;\n\t\t\t\tif (backend?.type === \"remote\" && backend.configured) {\n\t\t\t\t\tmessage = `Remote tool operations enabled: ${backend.url} (cwd: ${backend.cwd})`;\n\t\t\t\t}\n\t\t\t\tdiagnostics.push({ type: \"info\", message });\n\t\t\t}\n\t\t\tconst projectHookTrust = projectHookTrustPolicy.resolveFor(services.cwd, session.getSessionId());\n\n\t\t\treturn {\n\t\t\t\tmodel: sessionOptions.model,\n\t\t\t\tthinkingLevel: sessionOptions.thinkingLevel,\n\t\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\t\ttools: sessionOptions.tools,\n\t\t\t\tenableLspTools: sessionOptions.enableLspTools,\n\t\t\t\tnoTools: sessionOptions.noTools,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t\ttoolOperations,\n\t\t\t\ttrustProjectHooks: projectHookTrust.trusted,\n\t\t\t\ttrustedProjectHooksIdentity: projectHookTrust.identity,\n\t\t\t\tlsp: cliLspInputs,\n\t\t\t\tdiagnostics,\n\t\t\t};\n\t\t},\n\t});\n\tawait gripAgent.createAgentSession({ session: initialSession });\n\ttime(\"createAgentSessionRuntime\");\n\tconst { settingsManager } = gripAgent.services;\n\tawait handleRuntimeInformationCommands(parsed, gripAgent);\n\n\tconst stdinContent = await gripAgent.readPipedStdin();\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\n\tinitTheme(settingsManager.getTheme(), gripAgent.mode === \"interactive\");\n\ttime(\"initTheme\");\n\n\tawait reportRuntimeStartupDiagnostics(gripAgent, deprecationWarnings);\n\n\tawait gripAgent.runMode({\n\t\tmigratedProviders,\n\t\tinitialMessage,\n\t\tinitialImages,\n\t\tinitialMessages: parsed.messages,\n\t\tverbose: parsed.verbose,\n\t\ttuiMode: parsed.tuiMode,\n\t\tstartupBenchmark: isTruthyEnvFlag(process.env.GRIP_STARTUP_BENCHMARK),\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAKnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AA2BxF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAYhF;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAChD,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAA6B;IAE/C,YAAY,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAGxE;IAED,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAEtC;IAED,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5C;IAED;;;OAGG;IACH,UAAU,IAAI,IAAI,CAEjB;IAED;;;OAGG;IACH,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAKnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AA2BxF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAYhF;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAChD,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAA6B;IAE/C,YAAY,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,0BAA0B,EAGxE;IAED,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAEtC;IAED,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE5C;IAED;;;OAGG;IACH,UAAU,IAAI,IAAI,CAEjB;IAED;;;OAGG;IACH,OAAO,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,uBAAuB;IAU/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B9B;CACD"}
|
|
@@ -71,7 +71,13 @@ export class FooterComponent {
|
|
|
71
71
|
// Git watcher cleanup handled by provider
|
|
72
72
|
}
|
|
73
73
|
formatLocation() {
|
|
74
|
-
|
|
74
|
+
const backend = this.session.getToolBackendInfo?.();
|
|
75
|
+
const locationCwd = backend?.type === "remote" && backend.configured
|
|
76
|
+
? this.session.getToolOperations().cwd
|
|
77
|
+
: this.session.session.getCwd();
|
|
78
|
+
let location = backend?.type === "remote" && backend.configured
|
|
79
|
+
? locationCwd
|
|
80
|
+
: formatCwdForFooter(locationCwd, process.env.HOME || process.env.USERPROFILE);
|
|
75
81
|
const branch = this.footerData.getGitBranch();
|
|
76
82
|
if (branch)
|
|
77
83
|
location = `${location} (${branch})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { type Component, truncateToWidth, visibleWidth } from \"@greppleai/grip-tui\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport {\n\testimateCompressionCatchUp,\n\testimateCompressionSavings,\n} from \"../../../core/compaction/compression-economics.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { readUsageLedger, type UsageLedger } from \"../../../core/session/usage-ledger.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\n/**\n * Sanitize text for display in a single-line status.\n * Removes newlines, tabs, carriage returns, and other control characters.\n */\nfunction sanitizeStatusText(text: string): string {\n\t// Replace newlines, tabs, carriage returns with space, then collapse multiple spaces\n\treturn text\n\t\t.replace(/[\\r\\n\\t]/g, \" \")\n\t\t.replace(/ +/g, \" \")\n\t\t.trim();\n}\n\n/**\n * Format token counts for compact footer display.\n */\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\tif (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n\treturn `${Math.round(count / 1000000)}M`;\n}\n\nexport function formatCwdForFooter(cwd: string, home: string | undefined): string {\n\tif (!home) return cwd;\n\n\tconst resolvedCwd = resolve(cwd);\n\tconst resolvedHome = resolve(home);\n\tconst relativeToHome = relative(resolvedHome, resolvedCwd);\n\tconst isInsideHome =\n\t\trelativeToHome === \"\" ||\n\t\t(relativeToHome !== \"..\" && !relativeToHome.startsWith(`..${sep}`) && !isAbsolute(relativeToHome));\n\n\tif (!isInsideHome) return cwd;\n\treturn relativeToHome === \"\" ? \"~\" : `~${sep}${relativeToHome}`;\n}\n\n/**\n * Footer component that shows pwd, token stats, and context usage.\n * Computes token/context stats from session, gets git branch and extension statuses from provider.\n */\nexport class FooterComponent implements Component {\n\tprivate autoCompactEnabled = true;\n\tprivate session: AgentSession;\n\tprivate footerData: ReadonlyFooterDataProvider;\n\n\tconstructor(session: AgentSession, footerData: ReadonlyFooterDataProvider) {\n\t\tthis.session = session;\n\t\tthis.footerData = footerData;\n\t}\n\n\tsetSession(session: AgentSession): void {\n\t\tthis.session = session;\n\t}\n\n\tsetAutoCompactEnabled(enabled: boolean): void {\n\t\tthis.autoCompactEnabled = enabled;\n\t}\n\n\t/**\n\t * No-op: git branch caching now handled by provider.\n\t * Kept for compatibility with existing call sites in interactive-mode.\n\t */\n\tinvalidate(): void {\n\t\t// No-op: git branch is cached/invalidated by provider\n\t}\n\n\t/**\n\t * Clean up resources.\n\t * Git watcher cleanup now handled by provider.\n\t */\n\tdispose(): void {\n\t\t// Git watcher cleanup handled by provider\n\t}\n\n\tprivate formatLocation(): string {\n\t\tlet location = formatCwdForFooter(this.session.session.getCwd(), process.env.HOME || process.env.USERPROFILE);\n\t\tconst branch = this.footerData.getGitBranch();\n\t\tif (branch) location = `${location} (${branch})`;\n\t\tconst sessionName = this.session.session.getSessionName();\n\t\tif (sessionName) location = `${location} • ${sessionName}`;\n\t\treturn location;\n\t}\n\n\tprivate formatContextUsage(\n\t\tcontextWindow: number,\n\t\tcontextTokens: number | null,\n\t\tcontextPercentValue: number,\n\t\tcontextPercent: string,\n\t): string {\n\t\tconst autoIndicator = this.autoCompactEnabled ? \" (auto)\" : \"\";\n\t\tconst display =\n\t\t\tcontextPercent === \"?\"\n\t\t\t\t? `?/${formatTokens(contextWindow)}${autoIndicator}`\n\t\t\t\t: `ctx ~${formatTokens(contextTokens ?? (contextPercentValue * contextWindow) / 100)}/${formatTokens(contextWindow)} (${contextPercent}%)${autoIndicator}`;\n\t\tif (contextPercentValue > 90) return theme.fg(\"error\", display);\n\t\tif (contextPercentValue > 70) return theme.fg(\"warning\", display);\n\t\treturn display;\n\t}\n\n\tprivate formatCompressionSavings(): string[] {\n\t\tconst branch = this.session.session.getBranch();\n\t\tconst savings = estimateCompressionSavings(branch);\n\t\tconst parts: string[] = [];\n\t\tif (savings.totalRemovedTokens) parts.push(`~${formatTokens(savings.totalRemovedTokens)} fewer cumulative`);\n\t\tif (savings.oneTimeCost > 0 && savings.remainingToBreakEven > 0) {\n\t\t\tparts.push(`(est $${savings.remainingToBreakEven.toFixed(4)} to break even)`);\n\t\t\tconst model = this.session.state.model;\n\t\t\tif (model) {\n\t\t\t\tconst catchUp = estimateCompressionCatchUp(branch, model, this.session.modelRegistry.isUsingOAuth(model));\n\t\t\t\tif (catchUp.cachedTurns != null || catchUp.newInputTurns != null)\n\t\t\t\t\tparts.push(`(cache ~${catchUp.cachedTurns ?? \"?\"}/new ~${catchUp.newInputTurns ?? \"?\"} turns)`);\n\t\t\t}\n\t\t} else if (savings.netAvoidedCost > 0) parts.push(`(est $${savings.netAvoidedCost.toFixed(4)} net avoided)`);\n\t\treturn parts;\n\t}\n\n\tprivate countSessionCompressions(): number {\n\t\t// Replayed summaries retain their original fromId, so count each completed operation once across all branches.\n\t\tconst compressions = new Set<string>();\n\t\tfor (const entry of this.session.session.getEntries()) {\n\t\t\tif (entry.type !== \"custom_message\" || entry.customType !== \"compress_context\") continue;\n\t\t\tconst details = entry.details;\n\t\t\tconst fromId = details && typeof details === \"object\" && \"fromId\" in details ? details.fromId : undefined;\n\t\t\tcompressions.add(typeof fromId === \"string\" ? fromId : entry.id);\n\t\t}\n\t\treturn compressions.size;\n\t}\n\n\tprivate formatUsageSummary(\n\t\ttotals: UsageLedger,\n\t\tcontextWindow: number,\n\t\tcontextTokens: number | null,\n\t\tcontextPercentValue: number,\n\t\tcontextPercent: string,\n\t): string {\n\t\tconst parts: string[] = [\n\t\t\tthis.formatContextUsage(contextWindow, contextTokens, contextPercentValue, contextPercent),\n\t\t];\n\t\tif (totals.requests) parts.push(\"total\");\n\t\tif (totals.input) parts.push(`↑${formatTokens(totals.input)}`);\n\t\tif (totals.output) parts.push(`↓${formatTokens(totals.output)}`);\n\t\tif (totals.cacheRead) parts.push(`R${formatTokens(totals.cacheRead)}`);\n\t\tif (totals.cacheWrite) parts.push(`W${formatTokens(totals.cacheWrite)}`);\n\t\tconst state = this.session.state;\n\t\tconst usingSubscription = state.model ? this.session.modelRegistry.isUsingOAuth(state.model) : false;\n\t\tconst counts = this.session.getCompressionDetectionCounts();\n\t\tconst compressionCount = this.countSessionCompressions();\n\t\tconst detectionCost = this.session.getCompressionDetectionCost();\n\t\tconst showDetection = !!(\n\t\t\tthis.session.settingsManager.getCompressionDetectionModel() ||\n\t\t\tcounts.keep ||\n\t\t\tcounts.compress ||\n\t\t\tdetectionCost\n\t\t);\n\t\tif (totals.requests) {\n\t\t\tparts.push(\n\t\t\t\tusingSubscription\n\t\t\t\t\t? `catalog $${totals.catalogCost.toFixed(3)} (sub)`\n\t\t\t\t\t: `catalog $${totals.catalogCost.toFixed(3)}`,\n\t\t\t);\n\t\t} else if (usingSubscription) parts.push(\"sub\");\n\t\tif (showDetection) parts.push(`(detect est $${detectionCost.toFixed(4)} total)`);\n\t\tif (showDetection || compressionCount) parts.push(`D${counts.keep}/${counts.compress} C${compressionCount}`);\n\t\treturn parts.join(\" \");\n\t}\n\n\tprivate formatModelSummary(statsWidth: number, width: number): string {\n\t\tconst state = this.session.state;\n\t\tconst modelName = state.model?.id || \"no-model\";\n\t\tlet summary = modelName;\n\t\tif (state.model?.reasoning) {\n\t\t\tconst thinkingLevel = state.thinkingLevel || \"off\";\n\t\t\tsummary = thinkingLevel === \"off\" ? `${modelName} • thinking off` : `${modelName} • ${thinkingLevel}`;\n\t\t}\n\t\tif (this.footerData.getAvailableProviderCount() <= 1 || !state.model) return summary;\n\t\tconst providerSummary = `(${state.model.provider}) ${summary}`;\n\t\treturn statsWidth + 2 + visibleWidth(providerSummary) <= width ? providerSummary : summary;\n\t}\n\n\tprivate layoutStatsLine(stats: string, modelSummary: string, width: number): string {\n\t\tconst statsWidth = visibleWidth(stats);\n\t\tconst modelWidth = visibleWidth(modelSummary);\n\t\tconst minPadding = 2;\n\t\tif (statsWidth + minPadding + modelWidth <= width) {\n\t\t\treturn stats + \" \".repeat(width - statsWidth - modelWidth) + modelSummary;\n\t\t}\n\t\tconst availableForModel = width - statsWidth - minPadding;\n\t\tif (availableForModel <= 0) return stats;\n\t\tconst truncatedModel = truncateToWidth(modelSummary, availableForModel, \"\");\n\t\tconst padding = \" \".repeat(Math.max(0, width - statsWidth - visibleWidth(truncatedModel)));\n\t\treturn stats + padding + truncatedModel;\n\t}\n\n\tprivate formatExtensionStatuses(width: number): string | undefined {\n\t\tconst extensionStatuses = this.footerData.getExtensionStatuses();\n\t\tif (extensionStatuses.size === 0) return undefined;\n\t\tconst statusLine = Array.from(extensionStatuses.entries())\n\t\t\t.sort(([a], [b]) => a.localeCompare(b))\n\t\t\t.map(([, text]) => sanitizeStatusText(text))\n\t\t\t.join(\" \");\n\t\treturn truncateToWidth(statusLine, width, theme.fg(\"dim\", \"...\"));\n\t}\n\n\trender(width: number): string[] {\n\t\tconst state = this.session.state;\n\t\tconst totals = readUsageLedger(this.session.session.getEntries());\n\t\tconst contextUsage = this.session.getContextUsage();\n\t\tconst contextWindow = contextUsage?.contextWindow ?? state.model?.contextWindow ?? 0;\n\t\tconst contextPercentValue = contextUsage?.percent ?? 0;\n\t\tconst contextPercent = contextUsage?.percent != null ? contextPercentValue.toFixed(1) : \"?\";\n\t\tconst locationText = this.formatLocation();\n\n\t\tlet stats = this.formatUsageSummary(\n\t\t\ttotals,\n\t\t\tcontextWindow,\n\t\t\tcontextUsage?.tokens ?? null,\n\t\t\tcontextPercentValue,\n\t\t\tcontextPercent,\n\t\t);\n\t\tif (visibleWidth(stats) > width) stats = truncateToWidth(stats, width, \"...\");\n\t\tconst modelSummary = this.formatModelSummary(visibleWidth(stats), width);\n\t\tconst statsLine = this.layoutStatsLine(stats, modelSummary, width);\n\n\t\t// Dim the stats and the remaining padding/model separately because a colored context value resets styling.\n\t\tconst dimmedStats = theme.fg(\"dim\", stats);\n\t\tconst dimmedRemainder = theme.fg(\"dim\", statsLine.slice(stats.length));\n\t\tconst location = truncateToWidth(theme.fg(\"dim\", locationText), width, theme.fg(\"dim\", \"...\"));\n\t\tconst lines = [location, dimmedStats + dimmedRemainder];\n\t\tconst savings = this.formatCompressionSavings().join(\" \");\n\t\tif (savings) lines.push(theme.fg(\"dim\", truncateToWidth(savings, width, \"...\")));\n\t\tconst extensionStatuses = this.formatExtensionStatuses(width);\n\t\tif (extensionStatuses !== undefined) lines.push(extensionStatuses);\n\t\treturn lines;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { type Component, truncateToWidth, visibleWidth } from \"@greppleai/grip-tui\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport {\n\testimateCompressionCatchUp,\n\testimateCompressionSavings,\n} from \"../../../core/compaction/compression-economics.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { readUsageLedger, type UsageLedger } from \"../../../core/session/usage-ledger.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\n/**\n * Sanitize text for display in a single-line status.\n * Removes newlines, tabs, carriage returns, and other control characters.\n */\nfunction sanitizeStatusText(text: string): string {\n\t// Replace newlines, tabs, carriage returns with space, then collapse multiple spaces\n\treturn text\n\t\t.replace(/[\\r\\n\\t]/g, \" \")\n\t\t.replace(/ +/g, \" \")\n\t\t.trim();\n}\n\n/**\n * Format token counts for compact footer display.\n */\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\tif (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n\treturn `${Math.round(count / 1000000)}M`;\n}\n\nexport function formatCwdForFooter(cwd: string, home: string | undefined): string {\n\tif (!home) return cwd;\n\n\tconst resolvedCwd = resolve(cwd);\n\tconst resolvedHome = resolve(home);\n\tconst relativeToHome = relative(resolvedHome, resolvedCwd);\n\tconst isInsideHome =\n\t\trelativeToHome === \"\" ||\n\t\t(relativeToHome !== \"..\" && !relativeToHome.startsWith(`..${sep}`) && !isAbsolute(relativeToHome));\n\n\tif (!isInsideHome) return cwd;\n\treturn relativeToHome === \"\" ? \"~\" : `~${sep}${relativeToHome}`;\n}\n\n/**\n * Footer component that shows pwd, token stats, and context usage.\n * Computes token/context stats from session, gets git branch and extension statuses from provider.\n */\nexport class FooterComponent implements Component {\n\tprivate autoCompactEnabled = true;\n\tprivate session: AgentSession;\n\tprivate footerData: ReadonlyFooterDataProvider;\n\n\tconstructor(session: AgentSession, footerData: ReadonlyFooterDataProvider) {\n\t\tthis.session = session;\n\t\tthis.footerData = footerData;\n\t}\n\n\tsetSession(session: AgentSession): void {\n\t\tthis.session = session;\n\t}\n\n\tsetAutoCompactEnabled(enabled: boolean): void {\n\t\tthis.autoCompactEnabled = enabled;\n\t}\n\n\t/**\n\t * No-op: git branch caching now handled by provider.\n\t * Kept for compatibility with existing call sites in interactive-mode.\n\t */\n\tinvalidate(): void {\n\t\t// No-op: git branch is cached/invalidated by provider\n\t}\n\n\t/**\n\t * Clean up resources.\n\t * Git watcher cleanup now handled by provider.\n\t */\n\tdispose(): void {\n\t\t// Git watcher cleanup handled by provider\n\t}\n\n\tprivate formatLocation(): string {\n\t\tconst backend = this.session.getToolBackendInfo?.();\n\t\tconst locationCwd =\n\t\t\tbackend?.type === \"remote\" && backend.configured\n\t\t\t\t? this.session.getToolOperations().cwd\n\t\t\t\t: this.session.session.getCwd();\n\t\tlet location =\n\t\t\tbackend?.type === \"remote\" && backend.configured\n\t\t\t\t? locationCwd\n\t\t\t\t: formatCwdForFooter(locationCwd, process.env.HOME || process.env.USERPROFILE);\n\t\tconst branch = this.footerData.getGitBranch();\n\t\tif (branch) location = `${location} (${branch})`;\n\t\tconst sessionName = this.session.session.getSessionName();\n\t\tif (sessionName) location = `${location} • ${sessionName}`;\n\t\treturn location;\n\t}\n\n\tprivate formatContextUsage(\n\t\tcontextWindow: number,\n\t\tcontextTokens: number | null,\n\t\tcontextPercentValue: number,\n\t\tcontextPercent: string,\n\t): string {\n\t\tconst autoIndicator = this.autoCompactEnabled ? \" (auto)\" : \"\";\n\t\tconst display =\n\t\t\tcontextPercent === \"?\"\n\t\t\t\t? `?/${formatTokens(contextWindow)}${autoIndicator}`\n\t\t\t\t: `ctx ~${formatTokens(contextTokens ?? (contextPercentValue * contextWindow) / 100)}/${formatTokens(contextWindow)} (${contextPercent}%)${autoIndicator}`;\n\t\tif (contextPercentValue > 90) return theme.fg(\"error\", display);\n\t\tif (contextPercentValue > 70) return theme.fg(\"warning\", display);\n\t\treturn display;\n\t}\n\n\tprivate formatCompressionSavings(): string[] {\n\t\tconst branch = this.session.session.getBranch();\n\t\tconst savings = estimateCompressionSavings(branch);\n\t\tconst parts: string[] = [];\n\t\tif (savings.totalRemovedTokens) parts.push(`~${formatTokens(savings.totalRemovedTokens)} fewer cumulative`);\n\t\tif (savings.oneTimeCost > 0 && savings.remainingToBreakEven > 0) {\n\t\t\tparts.push(`(est $${savings.remainingToBreakEven.toFixed(4)} to break even)`);\n\t\t\tconst model = this.session.state.model;\n\t\t\tif (model) {\n\t\t\t\tconst catchUp = estimateCompressionCatchUp(branch, model, this.session.modelRegistry.isUsingOAuth(model));\n\t\t\t\tif (catchUp.cachedTurns != null || catchUp.newInputTurns != null)\n\t\t\t\t\tparts.push(`(cache ~${catchUp.cachedTurns ?? \"?\"}/new ~${catchUp.newInputTurns ?? \"?\"} turns)`);\n\t\t\t}\n\t\t} else if (savings.netAvoidedCost > 0) parts.push(`(est $${savings.netAvoidedCost.toFixed(4)} net avoided)`);\n\t\treturn parts;\n\t}\n\n\tprivate countSessionCompressions(): number {\n\t\t// Replayed summaries retain their original fromId, so count each completed operation once across all branches.\n\t\tconst compressions = new Set<string>();\n\t\tfor (const entry of this.session.session.getEntries()) {\n\t\t\tif (entry.type !== \"custom_message\" || entry.customType !== \"compress_context\") continue;\n\t\t\tconst details = entry.details;\n\t\t\tconst fromId = details && typeof details === \"object\" && \"fromId\" in details ? details.fromId : undefined;\n\t\t\tcompressions.add(typeof fromId === \"string\" ? fromId : entry.id);\n\t\t}\n\t\treturn compressions.size;\n\t}\n\n\tprivate formatUsageSummary(\n\t\ttotals: UsageLedger,\n\t\tcontextWindow: number,\n\t\tcontextTokens: number | null,\n\t\tcontextPercentValue: number,\n\t\tcontextPercent: string,\n\t): string {\n\t\tconst parts: string[] = [\n\t\t\tthis.formatContextUsage(contextWindow, contextTokens, contextPercentValue, contextPercent),\n\t\t];\n\t\tif (totals.requests) parts.push(\"total\");\n\t\tif (totals.input) parts.push(`↑${formatTokens(totals.input)}`);\n\t\tif (totals.output) parts.push(`↓${formatTokens(totals.output)}`);\n\t\tif (totals.cacheRead) parts.push(`R${formatTokens(totals.cacheRead)}`);\n\t\tif (totals.cacheWrite) parts.push(`W${formatTokens(totals.cacheWrite)}`);\n\t\tconst state = this.session.state;\n\t\tconst usingSubscription = state.model ? this.session.modelRegistry.isUsingOAuth(state.model) : false;\n\t\tconst counts = this.session.getCompressionDetectionCounts();\n\t\tconst compressionCount = this.countSessionCompressions();\n\t\tconst detectionCost = this.session.getCompressionDetectionCost();\n\t\tconst showDetection = !!(\n\t\t\tthis.session.settingsManager.getCompressionDetectionModel() ||\n\t\t\tcounts.keep ||\n\t\t\tcounts.compress ||\n\t\t\tdetectionCost\n\t\t);\n\t\tif (totals.requests) {\n\t\t\tparts.push(\n\t\t\t\tusingSubscription\n\t\t\t\t\t? `catalog $${totals.catalogCost.toFixed(3)} (sub)`\n\t\t\t\t\t: `catalog $${totals.catalogCost.toFixed(3)}`,\n\t\t\t);\n\t\t} else if (usingSubscription) parts.push(\"sub\");\n\t\tif (showDetection) parts.push(`(detect est $${detectionCost.toFixed(4)} total)`);\n\t\tif (showDetection || compressionCount) parts.push(`D${counts.keep}/${counts.compress} C${compressionCount}`);\n\t\treturn parts.join(\" \");\n\t}\n\n\tprivate formatModelSummary(statsWidth: number, width: number): string {\n\t\tconst state = this.session.state;\n\t\tconst modelName = state.model?.id || \"no-model\";\n\t\tlet summary = modelName;\n\t\tif (state.model?.reasoning) {\n\t\t\tconst thinkingLevel = state.thinkingLevel || \"off\";\n\t\t\tsummary = thinkingLevel === \"off\" ? `${modelName} • thinking off` : `${modelName} • ${thinkingLevel}`;\n\t\t}\n\t\tif (this.footerData.getAvailableProviderCount() <= 1 || !state.model) return summary;\n\t\tconst providerSummary = `(${state.model.provider}) ${summary}`;\n\t\treturn statsWidth + 2 + visibleWidth(providerSummary) <= width ? providerSummary : summary;\n\t}\n\n\tprivate layoutStatsLine(stats: string, modelSummary: string, width: number): string {\n\t\tconst statsWidth = visibleWidth(stats);\n\t\tconst modelWidth = visibleWidth(modelSummary);\n\t\tconst minPadding = 2;\n\t\tif (statsWidth + minPadding + modelWidth <= width) {\n\t\t\treturn stats + \" \".repeat(width - statsWidth - modelWidth) + modelSummary;\n\t\t}\n\t\tconst availableForModel = width - statsWidth - minPadding;\n\t\tif (availableForModel <= 0) return stats;\n\t\tconst truncatedModel = truncateToWidth(modelSummary, availableForModel, \"\");\n\t\tconst padding = \" \".repeat(Math.max(0, width - statsWidth - visibleWidth(truncatedModel)));\n\t\treturn stats + padding + truncatedModel;\n\t}\n\n\tprivate formatExtensionStatuses(width: number): string | undefined {\n\t\tconst extensionStatuses = this.footerData.getExtensionStatuses();\n\t\tif (extensionStatuses.size === 0) return undefined;\n\t\tconst statusLine = Array.from(extensionStatuses.entries())\n\t\t\t.sort(([a], [b]) => a.localeCompare(b))\n\t\t\t.map(([, text]) => sanitizeStatusText(text))\n\t\t\t.join(\" \");\n\t\treturn truncateToWidth(statusLine, width, theme.fg(\"dim\", \"...\"));\n\t}\n\n\trender(width: number): string[] {\n\t\tconst state = this.session.state;\n\t\tconst totals = readUsageLedger(this.session.session.getEntries());\n\t\tconst contextUsage = this.session.getContextUsage();\n\t\tconst contextWindow = contextUsage?.contextWindow ?? state.model?.contextWindow ?? 0;\n\t\tconst contextPercentValue = contextUsage?.percent ?? 0;\n\t\tconst contextPercent = contextUsage?.percent != null ? contextPercentValue.toFixed(1) : \"?\";\n\t\tconst locationText = this.formatLocation();\n\n\t\tlet stats = this.formatUsageSummary(\n\t\t\ttotals,\n\t\t\tcontextWindow,\n\t\t\tcontextUsage?.tokens ?? null,\n\t\t\tcontextPercentValue,\n\t\t\tcontextPercent,\n\t\t);\n\t\tif (visibleWidth(stats) > width) stats = truncateToWidth(stats, width, \"...\");\n\t\tconst modelSummary = this.formatModelSummary(visibleWidth(stats), width);\n\t\tconst statsLine = this.layoutStatsLine(stats, modelSummary, width);\n\n\t\t// Dim the stats and the remaining padding/model separately because a colored context value resets styling.\n\t\tconst dimmedStats = theme.fg(\"dim\", stats);\n\t\tconst dimmedRemainder = theme.fg(\"dim\", statsLine.slice(stats.length));\n\t\tconst location = truncateToWidth(theme.fg(\"dim\", locationText), width, theme.fg(\"dim\", \"...\"));\n\t\tconst lines = [location, dimmedStats + dimmedRemainder];\n\t\tconst savings = this.formatCompressionSavings().join(\" \");\n\t\tif (savings) lines.push(theme.fg(\"dim\", truncateToWidth(savings, width, \"...\")));\n\t\tconst extensionStatuses = this.formatExtensionStatuses(width);\n\t\tif (extensionStatuses !== undefined) lines.push(extensionStatuses);\n\t\treturn lines;\n\t}\n}\n"]}
|
|
@@ -161,7 +161,6 @@ export declare class InteractiveMode {
|
|
|
161
161
|
private getAutocompleteSourceTag;
|
|
162
162
|
private prefixAutocompleteDescription;
|
|
163
163
|
private getBuiltInCommandConflictDiagnostics;
|
|
164
|
-
private configureNewCommandAutocomplete;
|
|
165
164
|
private createBaseAutocompleteProvider;
|
|
166
165
|
private setupAutocompleteProvider;
|
|
167
166
|
private showStartupNoticesIfNeeded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAGN,KAAK,YAAY,EAUjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EASX,QAAQ,EAER,OAAO,EACP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,KAAK,SAAS,EAgBd,KAAK,GAAG,EACR,YAAY,EACZ,aAAa,EAGb,MAAM,qBAAqB,CAAC;AAwC7B,OAAO,EAEN,KAAK,oBAAoB,EAEzB,MAAM,0BAA0B,CAAC;AAqClC,OAAO,EAAE,KAAK,oBAAoB,EAA2B,MAAM,gCAAgC,CAAC;AAiBpG,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AA8I9F,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,EACrC,kBAAkB,GAAE,WAAW,CAAC,MAAM,CAA4B,GAChE,OAAO,CAQT;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qGAAqG;IACrG,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,qBAAqB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AA2H1D,MAAM,WAAW,uBAAuB;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAKD,MAAM,WAAW,2BAA2B;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAWD,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,YAAY,CAAC;AAMjE,MAAM,WAAW,kBAAkB;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CASnF;AAED,0FAA0F;AAC1F,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,CA4BpE;AAED,qBAAa,eAAe;IAC3B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IACF,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,4BAA4B,CAAqC;IACzE,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,8BAA8B,CAAS;IAC/C,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,uBAAuB,CAAiD;IAChF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAiB;IAC5D,OAAO,CAAC,mBAAmB,CAAmC;IAE9D,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iCAAiC,CAAS;IAGlD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,kBAAkB,CAAoD;IAC9E,OAAO,CAAC,gBAAgB,CAA2C;IAGnE,OAAO,CAAC,YAAY,CAA6C;IAGjE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,6BAA6B,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0C;IAC/E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0C;IAG/E,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAsB;IAEjE,OAAO,CAAC,aAAa,CAA6B;IAGlD,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,OAAO,CAAC,gCAAgC,CAAC,CAAa;IACtD,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,+BAA+B,CAAS;IAChD,OAAO,CAAC,oBAAoB,CAAC,CAAU;IACvC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,uBAAuB,CAAgC;IAC/D,OAAO,CAAC,4BAA4B,CAAqC;IACzE,OAAO,CAAC,6BAA6B,CAAmD;IACxF,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,qBAAqB,CAAyB;IAGtD,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,aAAa,CAAiD;IAGtE,OAAO,CAAC,qBAAqB,CAAgC;IAG7D,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,2BAA2B,CAA6B;IAGhE,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,kBAAkB,CAAC,CAAa;IAGxC,OAAO,CAAC,wBAAwB,CAAiC;IAGjE,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,iBAAiB,CAAqD;IAC9E,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,mCAAmC,CAAiD;IAE5F,OAAO,CAAC,qBAAqB,CAA0C;IACvE,OAAO,CAAC,qBAAqB,CAA0C;IACvE,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,oBAAoB,CAAa;IAGzC,OAAO,CAAC,YAAY,CAA8C;IAGlE,OAAO,CAAC,eAAe,CAAY;IAGnC,OAAO,CAAC,aAAa,CAAoC;IAGzD,OAAO,CAAC,YAAY,CAA8C;IAGlE,OAAO,KAAK,OAAO,GAElB;IACD,OAAO,KAAK,KAAK,GAEhB;IACD,OAAO,KAAK,aAAa,GAExB;IACD,OAAO,KAAK,eAAe,GAE1B;IAED,YAAY,WAAW,EAAE,oBAAoB,EAAE,OAAO,GAAE,sBAA2B,EA2DlF;IAED,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,oCAAoC;IAiB5C,OAAO,CAAC,+BAA+B;IAavC,OAAO,CAAC,8BAA8B;IAkNtC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAoC3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAgDf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA8D1B;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,mBAAmB;YAWb,oBAAoB;YAQpB,sBAAsB;YAMtB,wBAAwB;YAMxB,sBAAsB;YAkBtB,sBAAsB;IA+CpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,0BAA0B;IAMlC,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,wBAAwB;IAIhC;;OAEG;IACH,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,4BAA4B;IAcpC,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,kCAAkC;IAwB1C,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,6BAA6B;IAuBrC,OAAO,CAAC,2BAA2B;IAuBnC,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,+BAA+B;IAWvC,OAAO,CAAC,+BAA+B;IAcvC,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;YACW,4BAA4B;IAuF1C,OAAO,CAAC,oBAAoB;YAmBd,oBAAoB;YA0BpB,uBAAuB;IAQrC,OAAO,CAAC,gCAAgC;IAWxC,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,uBAAuB;IAI/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAInC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4D/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,2BAA2B;IAuBnC,OAAO,CAAC,iCAAiC;IAgBzC,OAAO,CAAC,kCAAkC;IAe1C,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,iCAAiC;IASzC,OAAO,CAAC,qCAAqC;IAO7C,OAAO,CAAC,oCAAoC;IAK5C;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2DhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;YACW,oBAAoB;YASpB,0BAA0B;IAQxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAQzC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,wBAAwB;IAehC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,6BAA6B;IAgBrC,oGAAoG;YACtF,mBAAmB;IA+CjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,gBAAgB;YA0CV,oBAAoB;YAyBpB,qBAAqB;IAcnC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,8BAA8B;IAsBtC,OAAO,CAAC,iCAAiC;IAwGzC,OAAO,CAAC,yBAAyB;YA4GnB,0BAA0B;YAO1B,0BAA0B;YAiB1B,gCAAgC;YAYhC,+BAA+B;IAU7C,OAAO,CAAC,iBAAiB;YAOX,kBAAkB;IAYhC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,sCAAsC;IAW9C,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,6BAA6B;IASrC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iCAAiC;IA8BzC,OAAO,CAAC,oCAAoC;IA4B5C,OAAO,CAAC,gCAAgC;YAW1B,WAAW;IA+GzB,+CAA+C;IAC/C,OAAO,CAAC,kBAAkB;IAQ1B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,gCAAgC;IAiBxC,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,uBAAuB;IAgB/B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAmB5B,qBAAqB,IAAI,IAAI,CAoB5B;IAEK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAYpC;IAED,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAKnB;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAS;YAEjB,QAAQ;IAiCtB,OAAO,CAAC,qBAAqB;IAS7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;YACW,sBAAsB;IAKpC,OAAO,CAAC,sBAAsB;IAwC9B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,WAAW;YAqCL,cAAc;IAgC5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;YAWZ,UAAU;IAmBxB,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,6BAA6B;YAkBvB,kBAAkB;IA2DhC,WAAW,IAAI,IAAI,CAGlB;IAED,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAKpC;IAED,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAIxC;IAED,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CA4B3D;IAED,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAgBtD;IAED;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,6BAA6B;IAqBrC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,kBAAkB;YAUZ,2BAA2B;IAUzC,OAAO,CAAC,sBAAsB;YAWhB,uBAAuB;YAkBvB,oBAAoB;IAkBlC,6DAA6D;IAC7D,OAAO,CAAC,0BAA0B;IAYlC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,oBAAoB;YA+Ld,kBAAkB;YAsBlB,sCAAsC;YAwCtC,mBAAmB;YAKnB,kBAAkB;IAahC,iFAAiF;YACnE,4BAA4B;YAM5B,uCAAuC;IAgCrD,OAAO,CAAC,iBAAiB;YA+BX,kBAAkB;IA6EhC,OAAO,CAAC,uBAAuB;YAuCjB,kBAAkB;YAsBlB,0BAA0B;YAsB1B,mBAAmB;YA8CnB,mBAAmB;IAgBjC,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,mBAAmB;YAwCb,mBAAmB;IAyCjC,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,yBAAyB;YAwCnB,iBAAiB;YAiDjB,6CAA6C;IAkC3D,OAAO,CAAC,mCAAmC;YAmB7B,8BAA8B;IAmB5C,OAAO,CAAC,sBAAsB;YA4BhB,qBAAqB;IA2CnC,OAAO,CAAC,oBAAoB;YA4Bd,eAAe;YAoGf,sBAAsB;YAqBtB,0BAA0B;YAQ1B,eAAe;YA4Cf,oBAAoB;YAoDpB,mBAAmB;YAuFnB,mBAAmB;IAgBjC,OAAO,CAAC,sBAAsB;YA6BhB,mBAAmB;YAkDnB,kBAAkB;YA8FlB,iBAAiB;IAmB/B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,wBAAwB;YAOlB,uBAAuB;YAgBvB,4BAA4B;IAqB1C,OAAO,CAAC,4BAA4B;IAWpC,OAAO,CAAC,wBAAwB;YAQlB,mBAAmB;YAgBnB,oBAAoB;IAgBlC,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,wBAAwB;YAQlB,sBAAsB;YA2CtB,mBAAmB;IAgDjC,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,+BAA+B;YAYzB,uBAAuB;YA6BvB,kBAAkB;YAuClB,qBAAqB;YAoCrB,oBAAoB;IAmBlC,OAAO,CAAC,oBAAoB;IAqC5B,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;YAqHd,kBAAkB;IAmChC,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,0BAA0B;YAgBpB,iBAAiB;YAuEjB,oBAAoB;IAsBlC,IAAI,CAAC,oBAAoB,uBAAiD,GAAG,IAAI,CA6BhF;CACD"}
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|