@bastani/atomic 0.9.25-alpha.2 → 0.9.25-alpha.4
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 +55 -0
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +43 -0
- package/dist/builtin/mcp/OAUTH.md +59 -269
- package/dist/builtin/mcp/README.md +58 -345
- package/dist/builtin/mcp/index.bundle.mjs +4 -27792
- package/dist/builtin/mcp/native-client-licenses/LICENSES/modelcontextprotocol-typescript-sdk.txt +21 -0
- package/dist/builtin/mcp/native-client-licenses/NOTICE +30 -0
- package/dist/builtin/mcp/package.json +4 -25
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +12 -0
- package/dist/builtin/workflows/builtin/{chunk-e1254zvd.js → chunk-kfsnh3w7.js} +40 -12
- package/dist/builtin/workflows/builtin/{chunk-cpw5gtzg.js → chunk-rqmasd3d.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-qy6g0baf.js → chunk-wz783pvd.js} +1 -1
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +472 -88
- package/dist/builtin/workflows/src/index.js +65 -28
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +7 -0
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +103 -7
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +7 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +3 -2
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +6 -3
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +3 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +3 -1
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -0
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +15 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +3 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +3 -0
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/mcp-server-registry.d.ts.map +1 -1
- package/dist/core/extensions/mcp-server-registry.js +4 -0
- package/dist/core/extensions/mcp-server-registry.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 +4 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +3 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +1 -0
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.d.ts +23 -0
- package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -0
- package/dist/core/extensions/workflow-run-control-hub.js +57 -0
- package/dist/core/extensions/workflow-run-control-hub.js.map +1 -0
- package/dist/core/extensions/workflow-run-control.d.ts +163 -0
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -0
- package/dist/core/extensions/workflow-run-control.js +73 -0
- package/dist/core/extensions/workflow-run-control.js.map +1 -0
- package/dist/core/mcp-child-policy.d.ts +11 -0
- package/dist/core/mcp-child-policy.d.ts.map +1 -0
- package/dist/core/mcp-child-policy.js +31 -0
- package/dist/core/mcp-child-policy.js.map +1 -0
- package/dist/core/mcp-servers.d.ts +34 -25
- package/dist/core/mcp-servers.d.ts.map +1 -1
- package/dist/core/mcp-servers.js +148 -1
- package/dist/core/mcp-servers.js.map +1 -1
- package/dist/core/package-manager-manifest.js.map +1 -1
- package/dist/core/package-manager-mcp-servers.js +1 -1
- package/dist/core/package-manager-mcp-servers.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +4 -9
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/sdk.js +11 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/tool-loadout.d.ts +1 -0
- package/dist/core/tool-loadout.d.ts.map +1 -1
- package/dist/core/tool-loadout.js +3 -0
- package/dist/core/tool-loadout.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +11 -30
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/truncate.d.ts +8 -0
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +24 -0
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +26 -0
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/renderer.d.ts.map +1 -1
- package/dist/extensions/codemode/renderer.js +38 -23
- package/dist/extensions/codemode/renderer.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +22 -10
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/mcp/cli.d.ts +21 -0
- package/dist/extensions/mcp/cli.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.js +500 -0
- package/dist/extensions/mcp/cli.js.map +1 -0
- package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
- package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/cli.lazy.js +3 -0
- package/dist/extensions/mcp/cli.lazy.js.map +1 -0
- package/dist/extensions/mcp/client/auth-provider.d.ts +15 -0
- package/dist/extensions/mcp/client/auth-provider.d.ts.map +1 -0
- package/dist/extensions/mcp/client/auth-provider.js +2 -0
- package/dist/extensions/mcp/client/auth-provider.js.map +1 -0
- package/dist/extensions/mcp/client/client.d.ts +89 -0
- package/dist/extensions/mcp/client/client.d.ts.map +1 -0
- package/dist/extensions/mcp/client/client.js +457 -0
- package/dist/extensions/mcp/client/client.js.map +1 -0
- package/dist/extensions/mcp/client/index.d.ts +9 -0
- package/dist/extensions/mcp/client/index.d.ts.map +1 -0
- package/dist/extensions/mcp/client/index.js +7 -0
- package/dist/extensions/mcp/client/index.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/callback.d.ts +42 -0
- package/dist/extensions/mcp/client/oauth/callback.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/callback.js +106 -0
- package/dist/extensions/mcp/client/oauth/callback.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/discovery.d.ts +27 -0
- package/dist/extensions/mcp/client/oauth/discovery.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/discovery.js +153 -0
- package/dist/extensions/mcp/client/oauth/discovery.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/errors.d.ts +24 -0
- package/dist/extensions/mcp/client/oauth/errors.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/errors.js +46 -0
- package/dist/extensions/mcp/client/oauth/errors.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/flow.d.ts +82 -0
- package/dist/extensions/mcp/client/oauth/flow.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/flow.js +292 -0
- package/dist/extensions/mcp/client/oauth/flow.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/index.d.ts +7 -0
- package/dist/extensions/mcp/client/oauth/index.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/index.js +6 -0
- package/dist/extensions/mcp/client/oauth/index.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/provider.d.ts +59 -0
- package/dist/extensions/mcp/client/oauth/provider.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/provider.js +116 -0
- package/dist/extensions/mcp/client/oauth/provider.js.map +1 -0
- package/dist/extensions/mcp/client/oauth/types.d.ts +77 -0
- package/dist/extensions/mcp/client/oauth/types.d.ts.map +1 -0
- package/dist/extensions/mcp/client/oauth/types.js +109 -0
- package/dist/extensions/mcp/client/oauth/types.js.map +1 -0
- package/dist/extensions/mcp/client/protocol/content.d.ts +82 -0
- package/dist/extensions/mcp/client/protocol/content.d.ts.map +1 -0
- package/dist/extensions/mcp/client/protocol/content.js +41 -0
- package/dist/extensions/mcp/client/protocol/content.js.map +1 -0
- package/dist/extensions/mcp/client/protocol/jsonrpc.d.ts +59 -0
- package/dist/extensions/mcp/client/protocol/jsonrpc.d.ts.map +1 -0
- package/dist/extensions/mcp/client/protocol/jsonrpc.js +67 -0
- package/dist/extensions/mcp/client/protocol/jsonrpc.js.map +1 -0
- package/dist/extensions/mcp/client/protocol/types.d.ts +123 -0
- package/dist/extensions/mcp/client/protocol/types.d.ts.map +1 -0
- package/dist/extensions/mcp/client/protocol/types.js +7 -0
- package/dist/extensions/mcp/client/protocol/types.js.map +1 -0
- package/dist/extensions/mcp/client/testing/index.d.ts +2 -0
- package/dist/extensions/mcp/client/testing/index.d.ts.map +1 -0
- package/dist/extensions/mcp/client/testing/index.js +2 -0
- package/dist/extensions/mcp/client/testing/index.js.map +1 -0
- package/dist/extensions/mcp/client/transports/in-memory.d.ts +19 -0
- package/dist/extensions/mcp/client/transports/in-memory.d.ts.map +1 -0
- package/dist/extensions/mcp/client/transports/in-memory.js +50 -0
- package/dist/extensions/mcp/client/transports/in-memory.js.map +1 -0
- package/dist/extensions/mcp/client/transports/stdio.d.ts +32 -0
- package/dist/extensions/mcp/client/transports/stdio.d.ts.map +1 -0
- package/dist/extensions/mcp/client/transports/stdio.js +201 -0
- package/dist/extensions/mcp/client/transports/stdio.js.map +1 -0
- package/dist/extensions/mcp/client/transports/streamable-http.d.ts +96 -0
- package/dist/extensions/mcp/client/transports/streamable-http.d.ts.map +1 -0
- package/dist/extensions/mcp/client/transports/streamable-http.js +456 -0
- package/dist/extensions/mcp/client/transports/streamable-http.js.map +1 -0
- package/dist/extensions/mcp/client/transports/transport.d.ts +28 -0
- package/dist/extensions/mcp/client/transports/transport.d.ts.map +1 -0
- package/dist/extensions/mcp/client/transports/transport.js +38 -0
- package/dist/extensions/mcp/client/transports/transport.js.map +1 -0
- package/dist/extensions/mcp/config.d.ts +72 -0
- package/dist/extensions/mcp/config.d.ts.map +1 -0
- package/dist/extensions/mcp/config.js +158 -0
- package/dist/extensions/mcp/config.js.map +1 -0
- package/dist/extensions/mcp/index.d.ts +76 -0
- package/dist/extensions/mcp/index.d.ts.map +1 -0
- package/dist/extensions/mcp/index.js +1119 -0
- package/dist/extensions/mcp/index.js.map +1 -0
- package/dist/extensions/mcp/log.d.ts +16 -0
- package/dist/extensions/mcp/log.d.ts.map +1 -0
- package/dist/extensions/mcp/log.js +66 -0
- package/dist/extensions/mcp/log.js.map +1 -0
- package/dist/extensions/mcp/oauth.d.ts +103 -0
- package/dist/extensions/mcp/oauth.d.ts.map +1 -0
- package/dist/extensions/mcp/oauth.js +382 -0
- package/dist/extensions/mcp/oauth.js.map +1 -0
- package/dist/extensions/mcp/resources.d.ts +43 -0
- package/dist/extensions/mcp/resources.d.ts.map +1 -0
- package/dist/extensions/mcp/resources.js +262 -0
- package/dist/extensions/mcp/resources.js.map +1 -0
- package/dist/extensions/mcp/runtime.d.ts +104 -0
- package/dist/extensions/mcp/runtime.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.js +546 -0
- package/dist/extensions/mcp/runtime.js.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
- package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
- package/dist/extensions/mcp/runtime.lazy.js +3 -0
- package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
- package/dist/extensions/mcp/tools.d.ts +84 -0
- package/dist/extensions/mcp/tools.d.ts.map +1 -0
- package/dist/extensions/mcp/tools.js +251 -0
- package/dist/extensions/mcp/tools.js.map +1 -0
- package/dist/extensions/mcp/ui.d.ts +60 -0
- package/dist/extensions/mcp/ui.d.ts.map +1 -0
- package/dist/extensions/mcp/ui.js +175 -0
- package/dist/extensions/mcp/ui.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +1 -1
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +3 -13
- package/dist/extensions/tool-search/tool.js.map +1 -1
- package/dist/index-extensions.d.ts +2 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +39 -6
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/docs/extensions/api-reference.md +3 -3
- package/docs/extensions/events.md +2 -0
- package/docs/extensions.md +8 -8
- package/docs/mcp-servers.md +171 -50
- package/docs/packages/authoring.md +2 -2
- package/docs/providers.md +8 -0
- package/docs/sdk/reference.md +16 -0
- package/docs/sdk.md +67 -1
- package/docs/settings.md +2 -0
- package/docs/tools.md +6 -0
- package/docs/workflows/operations.md +3 -1
- package/examples/extensions/built-in-tool-renderer.ts +16 -40
- package/examples/extensions/minimal-mode.ts +28 -108
- package/npm-shrinkwrap.json +69 -69
- package/package.json +8 -8
- package/dist/builtin/mcp/app-bridge.bundle.js +0 -67
- package/dist/builtin/mcp/xdg-open +0 -1267
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":["import { setCapabilityOverrides } from \"@earendil-works/pi-tui\";\nimport chalk from \"chalk\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.ts\";\nimport {\n\ttype AuthCheckResult,\n\tcheckProviderAuth,\n\tcreateAuthCheckModelRuntime,\n\tgetProviderCredential,\n\thasExplicitCredentialExportTarget,\n} from \"./cli/auth-check.ts\";\nimport {\n\ttype AuthCommand,\n\tAuthCommandError,\n\tgetAuthCommandName,\n\tgetAuthCommandUsage,\n\tisAuthCommandHelp,\n\tparseAuthCommand,\n\tprintAuthCommandHelp,\n\tvalidateAuthCheckArgs,\n} from \"./cli/auth-command.ts\";\nimport {\n\tCredentialPrintError,\n\temitCredential,\n\tresolveCredentialForPrint,\n\ttoCredentialPrintError,\n\tvalidateCredentialPrintArgs,\n} from \"./cli/credential-print.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport {\n\tENV_OFFLINE,\n\tENV_SESSION_DIR,\n\tENV_SKIP_VERSION_CHECK,\n\tENV_STARTUP_BENCHMARK,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetEnvValue,\n\tgetPackageDir,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.js\";\nimport type { CreateAgentSessionRuntimeFactory } from \"./core/agent-session-runtime.ts\";\nimport {\n\ttype AgentSessionRuntimeDiagnostic,\n\tcreateUnstartedAgentSessionFromServices,\n\tprepareAgentSessionServices,\n} from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage, ReadOnlyAuthStorage } from \"./core/auth-storage.ts\";\nimport { applyHttpProxySettings, configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { limitMandatoryIntercomToTool } from \"./core/mandatory-resource-loader.ts\";\nimport { INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS } from \"./core/model-refresh-timeout.ts\";\nimport {\n\tfindInitialModel,\n\tresolveModelScope,\n\tresolveModelScopeWithDiagnostics,\n\tresolveRestoredModelReference,\n} from \"./core/model-resolver.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.js\";\nimport { flushRawStdout, restoreStdout, takeOverStdout, writeRawStdout } from \"./core/output-guard.ts\";\nimport { formatBorrowedExtensionSourceTrustPrompt, resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { getMissingSessionCwdIssue, MissingSessionCwdError } from \"./core/session-cwd.ts\";\nimport { SessionManager } from \"./core/session-manager.ts\";\nimport { deduplicateDiagnostics } from \"./core/settings-diagnostics.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { endTimingSpan, printTimings, resetTimings, startTimingSpan, time } from \"./core/timings.ts\";\nimport { hasProjectTrustInputs, ProjectTrustStore } from \"./core/trust-manager.ts\";\nimport { builtInExtensions } from \"./extensions/index.ts\";\nimport {\n\ttype AppMode,\n\tisPlainRuntimeMetadataCommand,\n\tprepareInitialMessage,\n\tresolveAppMode,\n\tresolveCliPaths,\n\tresolveExcludedToolsForAppMode,\n\tshouldStartRpcCatalogRefresh,\n\ttoPrintOutputMode,\n} from \"./main-app-mode.ts\";\nimport {\n\tcomputeDeferExtensions,\n\tcomputeInteractiveEngineResourceDeferral,\n\tcomputeStartupInputCaptureEnabled,\n\tformatScopedModelList,\n} from \"./main-deferred-startup.ts\";\nimport { type EarlyInputCapture, startEarlyInputCapture } from \"./main-early-input.ts\";\nimport { runFirstTimeSetup } from \"./main-first-time-setup.ts\";\nimport { applyCliRuntimeApiKey } from \"./main-runtime-api-key.ts\";\nimport {\n\tapplyInheritedWorkflowSessionClassification,\n\tcreateSessionManager,\n\tpromptForMissingSessionCwd,\n\tvalidateForkFlags,\n\tvalidateSessionIdFlags,\n} from \"./main-session.ts\";\nimport { buildSessionOptions } from \"./main-session-options.ts\";\nimport {\n\tcollectSettingsDiagnostics,\n\tdrainProcessStdio,\n\tisTruthyEnvFlag,\n\treadPipedStdin,\n\treportDiagnostics,\n} from \"./main-stdio.ts\";\nimport type { MainOptions } from \"./main-types.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.js\";\nimport { createRuntimeForMode } from \"./modes/interactive-engine/create-isolated-runtime.ts\";\nimport { startInteractiveEngineLiveness } from \"./modes/interactive-engine/engine-child-liveness.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport {\n\treadInteractiveEngineBootstrap,\n\ttakeInteractiveEngineBootstrapArg,\n} from \"./utils/interactive-engine-bootstrap.ts\";\nimport { captureInteractiveEngineStartupEnv, isInteractiveEngineChild } from \"./utils/interactive-engine-env.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\nexport type { AppMode } from \"./main-app-mode.ts\";\nexport { resolveExcludedToolsForAppMode } from \"./main-app-mode.ts\";\nexport type { MainOptions } from \"./main-types.ts\";\n\nfunction authCheckErrorMessage(error: unknown): string {\n\t// Provider and credential-store errors can quote a live credential. Model\n\t// resolution errors are made only from the named CLI values, so they remain\n\t// actionable without letting provider-generated text reach stderr.\n\treturn error instanceof AuthCommandError ? error.message : \"Failed to check provider readiness\";\n}\n\n/**\n * `atomic auth …` owns provider-readiness checks and the credential-export\n * door. Its stdout guard routes all ordinary writes to stderr while a command\n * resolves. A readiness result reaches real stdout only as a status record;\n * the opt-in credential branch passes a Secret to emitCredential, the sole\n * code path that can open it and write it to stdout.\n */\nasync function runAuthCheckCommand(command: AuthCommand, parsed: Args): Promise<void> {\n\tvalidateAuthCheckArgs(parsed);\n\tlet result: AuthCheckResult;\n\tlet credentials: AuthStorage | ReadOnlyAuthStorage | undefined;\n\tlet modelRuntime: ModelRuntime | undefined;\n\ttry {\n\t\tcredentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();\n\t\tmodelRuntime = await createAuthCheckModelRuntime(credentials);\n\t\tresult = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh, credentials });\n\t} catch (error) {\n\t\tconsole.error(chalk.red(`Error: ${authCheckErrorMessage(error)}`));\n\t\tresult = { status: \"invalid\", reason: \"invalid_state\" };\n\t}\n\n\tlet credentialEmitted = false;\n\tif (command.credentials && result.status === \"ready\" && credentials && modelRuntime) {\n\t\tconst readyResult = result;\n\t\tif (!hasExplicitCredentialExportTarget(parsed, modelRuntime, readyResult.provider)) {\n\t\t\tconsole.error(chalk.red(\"Error: Credential export requires --provider or an exact --model target\"));\n\t\t\tresult = { status: \"invalid\", provider: readyResult.provider, reason: \"invalid_state\" };\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst credential = await getProviderCredential(readyResult.provider, modelRuntime, credentials, {\n\t\t\t\t\trefresh: !command.noRefresh,\n\t\t\t\t});\n\t\t\t\tif (credential) {\n\t\t\t\t\tawait emitCredential(\n\t\t\t\t\t\tcredential,\n\t\t\t\t\t\tcommand.json\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tstatus: readyResult.status,\n\t\t\t\t\t\t\t\t\tprovider: readyResult.provider,\n\t\t\t\t\t\t\t\t\tauthType: readyResult.authType,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t);\n\t\t\t\t\tcredentialEmitted = true;\n\t\t\t\t} else {\n\t\t\t\t\tresult = { status: \"not_ready\", provider: readyResult.provider, reason: \"credential_not_available\" };\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof CredentialPrintError) throw error;\n\t\t\t\t// Provider text can quote a credential. Explain the export failure with a\n\t\t\t\t// constant diagnostic rather than carrying that text into stderr.\n\t\t\t\tconsole.error(chalk.red(\"Error: Failed to resolve credential for export\"));\n\t\t\t\tresult = { status: \"invalid\", provider: readyResult.provider, reason: \"invalid_state\" };\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!credentialEmitted) {\n\t\tif (command.credentials && !command.json) {\n\t\t\t// The explicit credential stream is credential-only. A caller assigning\n\t\t\t// it to a shell variable receives no status word on a non-zero exit.\n\t\t\tconsole.error(result.status);\n\t\t} else {\n\t\t\tconst output = command.json ? JSON.stringify(result) : result.status;\n\t\t\twriteRawStdout(`${output}\\n`);\n\t\t\tawait flushRawStdout();\n\t\t}\n\t}\n\tprocess.exitCode = result.status === \"ready\" ? 0 : result.status === \"not_ready\" ? 1 : 2;\n}\nasync function runAuthCommand(args: string[]): Promise<boolean> {\n\tif (isAuthCommandHelp(args)) {\n\t\tprintAuthCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet command: AuthCommand | undefined;\n\ttry {\n\t\tcommand = parseAuthCommand(args);\n\t} catch (error) {\n\t\tconst failure = error instanceof AuthCommandError ? error : new AuthCommandError(\"Failed to parse auth command\");\n\t\tconsole.error(chalk.red(`Error: ${failure.message}`));\n\t\tprocess.exitCode = failure.exitCode;\n\t\treturn true;\n\t}\n\tif (!command) return false;\n\n\ttakeOverStdout();\n\ttry {\n\t\tconst parsed = parseArgs(command.args);\n\t\tif (command.kind === \"check\") {\n\t\t\tif (parsed.unknownFlags.size > 0) {\n\t\t\t\tconst option = parsed.unknownFlags.keys().next().value;\n\t\t\t\tconsole.error(chalk.red(`Unknown option --${option} for \"${getAuthCommandName(command.kind)}\".`));\n\t\t\t\tconsole.error(chalk.dim(`Use \"${getAuthCommandUsage(command.kind)}\".`));\n\t\t\t\tprocess.exitCode = 2;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst errors = parsed.diagnostics.filter((diagnostic) => diagnostic.type === \"error\");\n\t\t\tif (errors.length > 0) {\n\t\t\t\tfor (const error of errors) console.error(chalk.red(`Error: ${error.message}`));\n\t\t\t\tprocess.exitCode = 2;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (parsed.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) {\n\t\t\t// Preserve the print commands' established parser behavior: any error\n\t\t\t// prints every diagnostic, warnings included, as a guarded stderr error.\n\t\t\tfor (const diagnostic of parsed.diagnostics) console.error(chalk.red(`Error: ${diagnostic.message}`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tif (command.kind === \"check\") {\n\t\t\ttry {\n\t\t\t\tawait runAuthCheckCommand(command, parsed);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof CredentialPrintError) {\n\t\t\t\t\tconsole.error(chalk.red(`Error: ${error.message}`));\n\t\t\t\t\tprocess.exitCode = error.exitCode;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(chalk.red(`Error: ${authCheckErrorMessage(error)}`));\n\t\t\t\t\tprocess.exitCode = 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\ttry {\n\t\t\tvalidateCredentialPrintArgs(parsed);\n\t\t\tconst modelRuntime = await ModelRuntime.create({ allowModelNetwork: false });\n\t\t\tconst secret = await resolveCredentialForPrint(parsed, modelRuntime, command.kind, command.minExpiryMs);\n\t\t\t// The Secret arrives unreadable here; emitCredential routes it through\n\t\t\t// credentialPayload, the only source function that can open it.\n\t\t\tawait emitCredential(secret, undefined);\n\t\t} catch (error) {\n\t\t\t// Every code toCredentialPrintError can produce belongs to a failure\n\t\t\t// that emitted nothing, so the exit code set here never contradicts\n\t\t\t// an empty stdout; a genuinely unclassified error is reported as a\n\t\t\t// credential-resolution failure.\n\t\t\tconst failure = toCredentialPrintError(error);\n\t\t\tconsole.error(chalk.red(`Error: ${failure.message}`));\n\t\t\tprocess.exitCode = failure.exitCode;\n\t\t}\n\t} finally {\n\t\trestoreStdout();\n\t}\n\treturn true;\n}\nexport async function main(argv: string[], options?: MainOptions) {\n\t// Consume the private engine handshake before anything else: the bootstrap\n\t// file carries engine role, host PID, guardian path, and any API key, is read\n\t// once, and is unlinked immediately. Nothing engine-only ever reaches the\n\t// child's environment, so no descendant of the engine can inherit it — which\n\t// deleting variables from `process.env` cannot achieve under Bun.\n\tconst bootstrap = takeInteractiveEngineBootstrapArg(argv);\n\tconst args = bootstrap.args;\n\tconst engineEnv = captureInteractiveEngineStartupEnv(\n\t\tbootstrap.path === undefined ? undefined : readInteractiveEngineBootstrap(bootstrap.path),\n\t);\n\tresetTimings();\n\tconst extensionFactories = [...builtInExtensions, ...(options?.extensionFactories ?? [])];\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(getEnvValue(ENV_OFFLINE));\n\tif (offlineMode) {\n\t\tsetEnvValue(ENV_OFFLINE, \"1\");\n\t\tsetEnvValue(ENV_SKIP_VERSION_CHECK, \"1\");\n\t}\n\tif (process.platform === \"win32\") cleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\tconst cwd = process.cwd(),\n\t\tagentDir = getAgentDir();\n\tconst bootstrapSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tapplyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher();\n\tif (await handlePackageCommand(args, { extensionFactories })) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\tif (await handleConfigCommand(args, { extensionFactories })) {\n\t\treturn;\n\t}\n\tif (await runAuthCommand(args)) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\tconst parsed = parseArgs(args);\n\tif (engineEnv.child === \"1\" && engineEnv.apiKey) parsed.apiKey = engineEnv.apiKey;\n\tif (parsed.diagnostics.length > 0) {\n\t\tfor (const d of parsed.diagnostics) {\n\t\t\tconst color = d.type === \"error\" ? chalk.red : chalk.yellow;\n\t\t\tconsole.error(color(`${d.type === \"error\" ? \"Error\" : \"Warning\"}: ${d.message}`));\n\t\t}\n\t\tif (parsed.diagnostics.some((d) => d.type === \"error\")) {\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\ttime(\"parseArgs\");\n\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.export) {\n\t\tlet result: string;\n\t\ttry {\n\t\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\t\tconst { exportFromFile } = await import(\"./core/export-html/index.ts\");\n\t\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconsole.log(`Exported to: ${result}`);\n\t\tprocess.exit(0);\n\t}\n\tlet appMode = options?.internalInteractiveHarness?.forceInteractive\n\t\t? \"interactive\"\n\t\t: resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);\n\tconst isolateInteractiveHost =\n\t\tappMode === \"interactive\" && !isPlainRuntimeMetadataCommand(parsed) && engineEnv.child !== \"1\";\n\tconst shouldTakeOverStdout = appMode !== \"interactive\";\n\tconst shouldRestoreStdoutForMetadata = isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\tif (engineEnv.child === \"1\") startInteractiveEngineLiveness(writeRawStdout).ready();\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\n\tvalidateForkFlags(parsed);\n\tvalidateSessionIdFlags(parsed);\n\n\tconst projectTrustStore = new ProjectTrustStore(agentDir);\n\tconst startupHasTrustInputs = hasProjectTrustInputs(cwd);\n\tconst startupStoredProjectTrust = startupHasTrustInputs ? projectTrustStore.get(cwd) : null;\n\tconst startupGlobalSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tconst startupDefaultProjectTrust = startupGlobalSettingsManager.getDefaultProjectTrust();\n\tconst startupProjectTrusted =\n\t\tparsed.projectTrustOverride ??\n\t\tstartupStoredProjectTrust ??\n\t\t(!startupHasTrustInputs || startupDefaultProjectTrust === \"always\");\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions),\n\t\tresolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates),\n\t\tresolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tlet startupEarlyInputCapture: EarlyInputCapture | undefined = startEarlyInputCapture({\n\t\tenabled: computeStartupInputCaptureEnabled({\n\t\t\tappMode,\n\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\tparsed,\n\t\t\tsessionCwd: cwd,\n\t\t\tprojectTrustStore,\n\t\t\tresolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\t\tresolvedResourcePathCount:\n\t\t\t\t(resolvedSkillPaths?.length ?? 0) +\n\t\t\t\t(resolvedPromptTemplatePaths?.length ?? 0) +\n\t\t\t\t(resolvedThemePaths?.length ?? 0),\n\t\t\tdeprecationWarningCount: 0,\n\t\t}),\n\t});\n\t// Run migrations after computing startup project trust so project-local migrations\n\t// cannot read or mutate untrusted project config before approval.\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd, {\n\t\tprojectTrusted: startupProjectTrusted,\n\t});\n\ttime(\"runMigrations\");\n\tif (deprecationWarnings.length > 0) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tstartupEarlyInputCapture = undefined;\n\t}\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: startupProjectTrusted });\n\tsetCapabilityOverrides(startupSettingsManager.getTerminalCapabilityOverrides());\n\tconst startupSettingsDiagnostics = collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\");\n\n\t// --use-theme steers this run only: the override lives in the startup\n\t// manager's effective settings and never reaches its global settings file.\n\t// The interactive controller applies the same value through\n\t// initialThemeSetting, so nothing here persists the selection.\n\tif (appMode === \"interactive\" && parsed.useTheme !== undefined) {\n\t\tstartupSettingsManager.applyOverrides({ theme: parsed.useTheme });\n\t}\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 envSessionDir = getEnvValue(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\tlet sessionManager = applyInheritedWorkflowSessionClassification(\n\t\tawait createSessionManager(parsed, cwd, sessionDir, startupSettingsManager),\n\t);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tstartupEarlyInputCapture = undefined;\n\t\tif (appMode === \"interactive\") {\n\t\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tsessionManager = SessionManager.open(missingSessionCwdIssue.sessionFile!, sessionDir, selectedCwd);\n\t\t} else {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (parsed.name !== undefined) {\n\t\tconst name = parsed.name.trim();\n\t\tif (!name) {\n\t\t\tconsole.error(chalk.red(\"Error: --name requires a non-empty value\"));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tsessionManager.appendSessionInfo(name);\n\t}\n\ttime(\"createSessionManager\");\n\n\tconst sessionCwd = sessionManager.getCwd();\n\tconst autoTrustOnReloadCwd =\n\t\tparsed.projectTrustOverride === undefined && !hasProjectTrustInputs(sessionCwd) ? sessionCwd : undefined;\n\n\tconst builtinPackagePaths = options?.builtinPackagePaths;\n\tconst trustPromptMode: AppMode = parsed.help || parsed.listModels !== undefined ? \"print\" : appMode;\n\tconst projectTrustByCwd = new Map<string, boolean>();\n\tconst borrowedExtensionSourceTrustByPath = new Map<string, boolean>();\n\tlet deferredExtensionLoad = false;\n\tlet forceEagerInteractiveEngineResources = false;\n\tconst createRuntime: CreateAgentSessionRuntimeFactory = async (options) => (await prepareRuntime(options))();\n\tconst prepareRuntime: NonNullable<CreateAgentSessionRuntimeFactory[\"prepareResume\"]> = async ({\n\t\tcwd,\n\t\tagentDir,\n\t\tsessionManager,\n\t\tsessionStartEvent,\n\t\tprojectTrustContext,\n\t}) => {\n\t\tconst cachedProjectTrust = projectTrustByCwd.get(cwd);\n\t\tconst hasTrustInputs = hasProjectTrustInputs(cwd);\n\t\tconst storedProjectTrust = hasTrustInputs ? projectTrustStore.get(cwd) : null;\n\t\tconst initialProjectTrusted =\n\t\t\tparsed.projectTrustOverride ?? cachedProjectTrust ?? storedProjectTrust ?? !hasTrustInputs;\n\t\tconst shouldResolveProjectTrust =\n\t\t\t!isolateInteractiveHost &&\n\t\t\tparsed.projectTrustOverride === undefined &&\n\t\t\tcachedProjectTrust === undefined &&\n\t\t\thasTrustInputs;\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: initialProjectTrusted });\n\t\tconst existingSession = sessionManager.buildSessionContext();\n\t\tconst deferStartupTrust =\n\t\t\tsessionStartEvent === undefined &&\n\t\t\t!isolateInteractiveHost &&\n\t\t\t(trustPromptMode === \"interactive\" || engineEnv.child === \"1\") &&\n\t\t\t(shouldResolveProjectTrust || (resolvedExtensionPaths?.length ?? 0) > 0);\n\t\tlet completeStartupReload: (() => Promise<void>) | undefined;\n\t\tlet startupTrustContext: typeof projectTrustContext;\n\t\tconst resolvedExtensionPathCount = resolvedExtensionPaths?.length ?? 0;\n\t\tconst hasSystemPromptInput = parsed.systemPrompt !== undefined || (parsed.appendSystemPrompt?.length ?? 0) > 0;\n\t\tconst resolvedResourcePathCount =\n\t\t\t(resolvedSkillPaths?.length ?? 0) +\n\t\t\t(resolvedPromptTemplatePaths?.length ?? 0) +\n\t\t\t(resolvedThemePaths?.length ?? 0);\n\t\tconst deferInteractiveEngineResources = computeInteractiveEngineResourceDeferral({\n\t\t\tinteractiveEngineChild: engineEnv.child === \"1\" && !forceEagerInteractiveEngineResources,\n\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\tshouldResolveProjectTrust,\n\t\t\tstoredProjectTrust,\n\t\t\tresolvedExtensionPathCount,\n\t\t\tresolvedResourcePathCount,\n\t\t\thasSystemPromptInput,\n\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t});\n\t\tconst deferExtensions =\n\t\t\t!deferStartupTrust &&\n\t\t\t!isolateInteractiveHost &&\n\t\t\t(deferInteractiveEngineResources ||\n\t\t\t\tcomputeDeferExtensions({\n\t\t\t\t\tappMode,\n\t\t\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\t\t\thelp: parsed.help,\n\t\t\t\t\tlistModels: parsed.listModels,\n\t\t\t\t\tshouldResolveProjectTrust,\n\t\t\t\t\tstoredProjectTrust,\n\t\t\t\t\tresolvedExtensionPathCount,\n\t\t\t\t\tresolvedResourcePathCount,\n\t\t\t\t\thasSystemPromptInput,\n\t\t\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t\t\t\tprovider: parsed.provider,\n\t\t\t\t\tmodel: parsed.model,\n\t\t\t\t}));\n\t\tif (sessionStartEvent === undefined) {\n\t\t\tdeferredExtensionLoad = deferExtensions || deferStartupTrust;\n\t\t\tstartupEarlyInputCapture ??= startEarlyInputCapture({\n\t\t\t\tenabled: appMode === \"interactive\" && deferExtensions && deprecationWarnings.length === 0,\n\t\t\t});\n\t\t}\n\t\tconst getProjectTrustContext = () =>\n\t\t\tstartupTrustContext ??\n\t\t\tprojectTrustContext ??\n\t\t\tcreateProjectTrustContext({\n\t\t\t\tcwd,\n\t\t\t\tmode: sessionStartEvent === undefined ? trustPromptMode : appMode,\n\t\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\t\thasUI: sessionStartEvent === undefined && trustPromptMode === \"interactive\",\n\t\t\t});\n\t\tlet migrateAfterTrust = false;\n\t\tconst completeServices = await prepareAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\textensionFlagValues: parsed.unknownFlags,\n\t\t\tresourceLoaderReloadOptions: deferExtensions\n\t\t\t\t? { deferExtensions: true, deferResources: true }\n\t\t\t\t: shouldResolveProjectTrust || (!isolateInteractiveHost && (resolvedExtensionPaths?.length ?? 0) > 0)\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tdeferProjectTrust: deferStartupTrust\n\t\t\t\t\t\t\t\t? (complete) => {\n\t\t\t\t\t\t\t\t\t\tcompleteStartupReload = complete;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tresolveProjectTrust: shouldResolveProjectTrust\n\t\t\t\t\t\t\t\t? async ({ extensionsResult }) => {\n\t\t\t\t\t\t\t\t\t\tconst trusted = await resolveProjectTrusted({\n\t\t\t\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\t\t\t\ttrustStore: projectTrustStore,\n\t\t\t\t\t\t\t\t\t\t\tdefaultProjectTrust: runtimeSettingsManager.getDefaultProjectTrust(),\n\t\t\t\t\t\t\t\t\t\t\textensionsResult,\n\t\t\t\t\t\t\t\t\t\t\tprojectTrustContext: getProjectTrustContext(),\n\t\t\t\t\t\t\t\t\t\t\tonExtensionError: (message) => console.error(chalk.yellow(`Warning: ${message}`)),\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tprojectTrustByCwd.set(cwd, trusted);\n\t\t\t\t\t\t\t\t\t\tif (trusted && !initialProjectTrusted) {\n\t\t\t\t\t\t\t\t\t\t\tmigrateAfterTrust = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn trusted;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tresolveBorrowedProjectTrust: async ({ source, extensionsResult }) => {\n\t\t\t\t\t\t\t\tconst cachedTrust = borrowedExtensionSourceTrustByPath.get(source);\n\t\t\t\t\t\t\t\tif (cachedTrust !== undefined) {\n\t\t\t\t\t\t\t\t\treturn cachedTrust;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst trusted = await resolveProjectTrusted({\n\t\t\t\t\t\t\t\t\tcwd: source,\n\t\t\t\t\t\t\t\t\ttrustStore: projectTrustStore,\n\t\t\t\t\t\t\t\t\ttrustOverride: parsed.projectTrustOverride,\n\t\t\t\t\t\t\t\t\tdefaultProjectTrust: runtimeSettingsManager.getDefaultProjectTrust(),\n\t\t\t\t\t\t\t\t\textensionsResult,\n\t\t\t\t\t\t\t\t\tprojectTrustContext: getProjectTrustContext(),\n\t\t\t\t\t\t\t\t\tpromptMessage: formatBorrowedExtensionSourceTrustPrompt(source),\n\t\t\t\t\t\t\t\t\tonExtensionError: (message) => console.error(chalk.yellow(`Warning: ${message}`)),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tborrowedExtensionSourceTrustByPath.set(source, trusted);\n\t\t\t\t\t\t\t\treturn trusted;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\tresourceLoaderOptions: {\n\t\t\t\tadditionalExtensionPaths: isolateInteractiveHost ? undefined : resolvedExtensionPaths,\n\t\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\t\tbuiltinPackagePaths,\n\t\t\t\tnoExtensions: isolateInteractiveHost || parsed.noExtensions,\n\t\t\t\tnoSkills: parsed.noSkills,\n\t\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\t\tnoThemes: parsed.noThemes,\n\t\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\t\tappendSystemPrompt: parsed.appendSystemPrompt,\n\t\t\t\textensionFactories: isolateInteractiveHost ? undefined : extensionFactories,\n\t\t\t},\n\t\t});\n\t\treturn async () => {\n\t\t\tif (migrateAfterTrust) runMigrations(cwd, { projectTrusted: true });\n\t\t\tconst services = await completeServices();\n\t\t\tif (isolateInteractiveHost) limitMandatoryIntercomToTool(services.resourceLoader);\n\t\t\tconst { settingsManager, modelRuntime, resourceLoader } = services;\n\t\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t\t...services.diagnostics,\n\t\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t\t...resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\t\ttype: \"error\" as const,\n\t\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t\t})),\n\t\t\t\t...(resourceLoader.getExtensions().warnings ?? []).map(({ path, warning }) => ({\n\t\t\t\t\ttype: \"warning\" as const,\n\t\t\t\t\tmessage: `Extension package \"${path}\": ${warning}`,\n\t\t\t\t})),\n\t\t\t];\n\t\t\tconst modelPatterns = isolateInteractiveHost\n\t\t\t\t? undefined\n\t\t\t\t: (parsed.models ?? settingsManager.getEnabledModels());\n\t\t\tconst scopedModels =\n\t\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t\t? deferredExtensionLoad\n\t\t\t\t\t\t? (await resolveModelScopeWithDiagnostics(modelPatterns, modelRuntime)).scopedModels\n\t\t\t\t\t\t: await resolveModelScope(modelPatterns, modelRuntime)\n\t\t\t\t\t: [];\n\t\t\tconst sessionArgs = isolateInteractiveHost\n\t\t\t\t? { ...parsed, provider: undefined, model: undefined, apiKey: undefined, models: undefined }\n\t\t\t\t: parsed;\n\t\t\tconst {\n\t\t\t\toptions: sessionOptions,\n\t\t\t\tcliThinkingFromModel,\n\t\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t\t} = buildSessionOptions(\n\t\t\t\tsessionArgs,\n\t\t\t\tscopedModels,\n\t\t\t\tsessionManager.buildSessionContext().messages.length > 0,\n\t\t\t\tmodelRuntime,\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tif (!deferStartupTrust) diagnostics.push(...sessionOptionDiagnostics);\n\n\t\t\tif (parsed.apiKey && !isolateInteractiveHost && !deferStartupTrust) {\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\t// Bound the complete CLI key operation—from credential mutation through\n\t\t\t\t\t// provider-scoped catalog refresh—with the established model-refresh budget.\n\t\t\t\t\tconst apiKeySignal = AbortSignal.timeout(INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS);\n\t\t\t\t\tawait applyCliRuntimeApiKey(modelRuntime, sessionOptions.model.provider, parsed.apiKey, apiKeySignal);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst created = await createUnstartedAgentSessionFromServices({\n\t\t\t\tservices,\n\t\t\t\tsessionManager,\n\t\t\t\tsessionStartEvent,\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\texcludedTools: resolveExcludedToolsForAppMode(appMode, sessionOptions.excludedTools),\n\t\t\t\tnoTools: sessionOptions.noTools,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t});\n\t\t\tif (completeStartupReload) {\n\t\t\t\tconst completeReload = completeStartupReload;\n\t\t\t\tlet completion: Promise<void> | undefined;\n\t\t\t\tservices.completeStartup = (context) =>\n\t\t\t\t\t(completion ??= (async () => {\n\t\t\t\t\t\tstartupTrustContext = context;\n\t\t\t\t\t\tawait completeReload();\n\t\t\t\t\t\tif (migrateAfterTrust) runMigrations(cwd, { projectTrusted: true });\n\t\t\t\t\t\tconst finalServices = await completeServices();\n\t\t\t\t\t\tconst extensionErrors = finalServices.resourceLoader.getExtensions().errors;\n\t\t\t\t\t\tif (extensionErrors.length > 0) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t`Failed to load extensions: ${extensionErrors.map(({ path, error }) => `${path}: ${error}`).join(\"; \")}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tservices.resourceLoader = finalServices.resourceLoader;\n\t\t\t\t\t\tservices.diagnostics = finalServices.diagnostics;\n\t\t\t\t\t\tconst patterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\t\t\t\t\tconst finalScope = patterns?.length ? await resolveModelScope(patterns, modelRuntime) : [];\n\t\t\t\t\t\tconst finalSelection = buildSessionOptions(\n\t\t\t\t\t\t\tparsed,\n\t\t\t\t\t\t\tfinalScope,\n\t\t\t\t\t\t\texistingSession.messages.length > 0,\n\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\tsettingsManager,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfinalServices.diagnostics.push(...finalSelection.diagnostics);\n\t\t\t\t\t\tlet finalModel = finalSelection.options.model;\n\t\t\t\t\t\tif (!finalModel && existingSession.messages.length > 0 && existingSession.model) {\n\t\t\t\t\t\t\tfinalModel = await resolveRestoredModelReference(\n\t\t\t\t\t\t\t\texistingSession.model.provider,\n\t\t\t\t\t\t\t\texistingSession.model.modelId,\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinalModel ??= (\n\t\t\t\t\t\t\tawait findInitialModel({\n\t\t\t\t\t\t\t\tscopedModels: [],\n\t\t\t\t\t\t\t\tisContinuing: existingSession.messages.length > 0,\n\t\t\t\t\t\t\t\tdefaultProvider: settingsManager.getDefaultProvider(),\n\t\t\t\t\t\t\t\tdefaultModelId: settingsManager.getDefaultModel(),\n\t\t\t\t\t\t\t\tdefaultThinkingLevel: settingsManager.getDefaultThinkingLevel(),\n\t\t\t\t\t\t\t\tmodelThinkingLevels: settingsManager.getAllModelThinkingLevels(),\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t).model;\n\t\t\t\t\t\tif (parsed.apiKey && finalModel)\n\t\t\t\t\t\t\tawait applyCliRuntimeApiKey(\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t\tfinalModel.provider,\n\t\t\t\t\t\t\t\tparsed.apiKey,\n\t\t\t\t\t\t\t\tAbortSignal.timeout(INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tcreated.session.setScopedModels(finalScope);\n\t\t\t\t\t\tif (finalModel) {\n\t\t\t\t\t\t\tcreated.session.agent.state.model = finalModel;\n\t\t\t\t\t\t\tsessionManager.appendModelChange(finalModel.provider, finalModel.id);\n\t\t\t\t\t\t\tcreated.session.setThinkingLevel(\n\t\t\t\t\t\t\t\tfinalSelection.options.thinkingLevel ??\n\t\t\t\t\t\t\t\t\t(existingSession.messages.length > 0 ? created.session.thinkingLevel : undefined) ??\n\t\t\t\t\t\t\t\t\tsettingsManager.getModelThinkingLevel(finalModel.provider, finalModel.id) ??\n\t\t\t\t\t\t\t\t\tsettingsManager.getDefaultThinkingLevel() ??\n\t\t\t\t\t\t\t\t\tcreated.session.thinkingLevel,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait created.session.completeStartupResources(finalServices.resourceLoader);\n\t\t\t\t\t\tfor (const diagnostic of finalServices.diagnostics) reportDiagnostics([diagnostic]);\n\t\t\t\t\t})().catch((error) => {\n\t\t\t\t\t\tcompletion = undefined;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}));\n\t\t\t}\n\t\t\tif (deferInteractiveEngineResources && !services.completeStartup && !created.session.model) {\n\t\t\t\tawait created.session.dispose();\n\t\t\t\tforceEagerInteractiveEngineResources = true;\n\t\t\t\treturn createRuntime({ cwd, agentDir, sessionManager, sessionStartEvent, projectTrustContext });\n\t\t\t}\n\t\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...created,\n\t\t\t\tservices,\n\t\t\t\tdiagnostics,\n\t\t\t};\n\t\t};\n\t};\n\tcreateRuntime.prepareResume = prepareRuntime;\n\ttime(\"createRuntimeFactory\");\n\tconst runtimeCreationSpan = startTimingSpan(\"createAgentSessionRuntime\");\n\tconst runtime = await createRuntimeForMode(\n\t\tcreateRuntime,\n\t\tsessionManager.getCwd(),\n\t\tagentDir,\n\t\tsessionManager,\n\t\tisolateInteractiveHost,\n\t\t(options?.extensionFactories?.length ?? 0) > 0,\n\t\tparsed,\n\t\t{\n\t\t\textensions: resolvedExtensionPaths,\n\t\t\tskills: resolvedSkillPaths,\n\t\t\tpromptTemplates: resolvedPromptTemplatePaths,\n\t\t\tthemes: resolvedThemePaths,\n\t\t},\n\t);\n\tendTimingSpan(runtimeCreationSpan);\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRuntime, resourceLoader } = services;\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tapplyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\tif (parsed.help) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tprintHelp(extensionFlags);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.listModels !== undefined) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tawait listModels(modelRuntime, searchPattern);\n\t\tprocess.exit(0);\n\t}\n\n\t// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC\n\tlet stdinContent: string | undefined;\n\tif (appMode !== \"rpc\" && !options?.internalInteractiveHarness) {\n\t\tstdinContent = await readPipedStdin();\n\t\tif (stdinContent !== undefined && appMode === \"interactive\") {\n\t\t\tappMode = \"print\";\n\t\t}\n\t}\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(parsed, stdinContent);\n\ttime(\"prepareInitialMessage\");\n\tstartupEarlyInputCapture = await runFirstTimeSetup(appMode, settingsManager, startupEarlyInputCapture);\n\tinitTheme(settingsManager.getTheme(), appMode === \"interactive\");\n\ttime(\"initTheme\");\n\n\t// Show deprecation warnings in interactive mode\n\tif (appMode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\n\tconst scopedModels = [...session.scopedModels];\n\ttime(\"resolveModelScope\");\n\tconst startupDiagnostics = deduplicateDiagnostics([...startupSettingsDiagnostics, ...runtime.diagnostics]);\n\tconst hasRuntimeErrors = runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\tif (appMode !== \"interactive\" || hasRuntimeErrors) reportDiagnostics(startupDiagnostics);\n\tif (hasRuntimeErrors) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\ttime(\"createAgentSession\");\n\n\tif (appMode !== \"interactive\" && !session.model && !(engineEnv.child === \"1\" && services.completeStartup)) {\n\t\tconsole.error(chalk.red(formatNoModelsAvailableMessage()));\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\n\tconst startupBenchmark = isTruthyEnvFlag(getEnvValue(ENV_STARTUP_BENCHMARK));\n\tif (startupBenchmark && appMode !== \"interactive\") {\n\t\tconsole.error(chalk.red(`Error: ${ENV_STARTUP_BENCHMARK} only supports interactive mode`));\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\n\tif (appMode === \"rpc\") {\n\t\t// Standalone RPC preserves its eager catalog refresh. The isolated\n\t\t// interactive engine does not: /model owns its bounded refresh, while an\n\t\t// eager unbounded refresh can hold credential locks and lend its in-flight\n\t\t// promise to later cache-only or timed refreshes.\n\t\tif (shouldStartRpcCatalogRefresh(offlineMode, isInteractiveEngineChild())) {\n\t\t\tvoid modelRuntime.refresh().catch(() => {});\n\t\t}\n\t\tprintTimings();\n\t\tawait runRpcMode(runtime, { deferInteractiveEngineResources: deferredExtensionLoad });\n\t} else if (appMode === \"interactive\") {\n\t\tif (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {\n\t\t\tconsole.log(chalk.dim(`Model scope: ${formatScopedModelList(scopedModels)} ${chalk.gray(\"(ctrl+p cycle)\")}`));\n\t\t}\n\n\t\tconst interactiveMode = new InteractiveMode(runtime, {\n\t\t\tmigratedProviders,\n\t\t\tstartupDiagnostics,\n\t\t\tmodelFallbackMessage,\n\t\t\tautoTrustOnReloadCwd,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t\tinitialMessages: parsed.messages,\n\t\t\tverbose: parsed.verbose,\n\t\t\tinitialThemeSetting: parsed.useTheme,\n\t\t\tdeferredExtensionLoad,\n\t\t\tstartupInputCapture: startupEarlyInputCapture,\n\t\t\tdeferredModelScopePatterns: deferredExtensionLoad\n\t\t\t\t? (parsed.models ?? settingsManager.getEnabledModels())\n\t\t\t\t: undefined,\n\t\t\tdeferredModelScopePreserveThinking: parsed.thinking !== undefined,\n\t\t\tterminal: options?.internalInteractiveHarness?.terminal,\n\t\t});\n\t\toptions?.internalInteractiveHarness?.onMode?.(interactiveMode);\n\t\tif (startupBenchmark) {\n\t\t\tawait interactiveMode.init();\n\t\t\ttime(\"interactiveMode.init\");\n\t\t\tawait interactiveMode.ensureDeferredStartupComplete();\n\t\t\tprintTimings();\n\t\t\tinteractiveMode.stop();\n\t\t\tstopThemeWatcher();\n\t\t\tif (process.stdout.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t\t}\n\t\t\tif (process.stderr.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tawait interactiveMode.run();\n\t} else {\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(runtime, {\n\t\t\tmode: toPrintOutputMode(appMode),\n\t\t\tmessages: parsed.messages,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t\treturn;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import { setCapabilityOverrides } from \"@earendil-works/pi-tui\";\nimport chalk from \"chalk\";\nimport { type Args, parseArgs, printHelp } from \"./cli/args.ts\";\nimport {\n\ttype AuthCheckResult,\n\tcheckProviderAuth,\n\tcreateAuthCheckModelRuntime,\n\tgetProviderCredential,\n\thasExplicitCredentialExportTarget,\n} from \"./cli/auth-check.ts\";\nimport {\n\ttype AuthCommand,\n\tAuthCommandError,\n\tgetAuthCommandName,\n\tgetAuthCommandUsage,\n\tisAuthCommandHelp,\n\tparseAuthCommand,\n\tprintAuthCommandHelp,\n\tvalidateAuthCheckArgs,\n} from \"./cli/auth-command.ts\";\nimport {\n\tCredentialPrintError,\n\temitCredential,\n\tresolveCredentialForPrint,\n\ttoCredentialPrintError,\n\tvalidateCredentialPrintArgs,\n} from \"./cli/credential-print.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport {\n\tENV_OFFLINE,\n\tENV_SESSION_DIR,\n\tENV_SKIP_VERSION_CHECK,\n\tENV_STARTUP_BENCHMARK,\n\texpandTildePath,\n\tgetAgentDir,\n\tgetEnvValue,\n\tgetPackageDir,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.js\";\nimport type { CreateAgentSessionRuntimeFactory } from \"./core/agent-session-runtime.ts\";\nimport {\n\ttype AgentSessionRuntimeDiagnostic,\n\tcreateUnstartedAgentSessionFromServices,\n\tprepareAgentSessionServices,\n} from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage, ReadOnlyAuthStorage } from \"./core/auth-storage.ts\";\nimport { applyHttpProxySettings, configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { limitMandatoryIntercomToTool } from \"./core/mandatory-resource-loader.ts\";\nimport { INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS } from \"./core/model-refresh-timeout.ts\";\nimport {\n\tfindInitialModel,\n\tresolveModelScope,\n\tresolveModelScopeWithDiagnostics,\n\tresolveRestoredModelReference,\n} from \"./core/model-resolver.ts\";\nimport { ModelRuntime } from \"./core/model-runtime.js\";\nimport { flushRawStdout, restoreStdout, takeOverStdout, writeRawStdout } from \"./core/output-guard.ts\";\nimport { formatBorrowedExtensionSourceTrustPrompt, resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { getMissingSessionCwdIssue, MissingSessionCwdError } from \"./core/session-cwd.ts\";\nimport { SessionManager } from \"./core/session-manager.ts\";\nimport { deduplicateDiagnostics } from \"./core/settings-diagnostics.ts\";\nimport { SettingsManager } from \"./core/settings-manager.ts\";\nimport { endTimingSpan, printTimings, resetTimings, startTimingSpan, time } from \"./core/timings.ts\";\nimport { hasProjectTrustInputs, ProjectTrustStore } from \"./core/trust-manager.ts\";\nimport { builtInExtensions } from \"./extensions/index.ts\";\nimport {\n\ttype AppMode,\n\tisPlainRuntimeMetadataCommand,\n\tprepareInitialMessage,\n\tresolveAppMode,\n\tresolveCliPaths,\n\tresolveExcludedToolsForAppMode,\n\tshouldStartRpcCatalogRefresh,\n\ttoPrintOutputMode,\n} from \"./main-app-mode.ts\";\nimport {\n\tcomputeDeferExtensions,\n\tcomputeInteractiveEngineResourceDeferral,\n\tcomputeStartupInputCaptureEnabled,\n\tformatScopedModelList,\n} from \"./main-deferred-startup.ts\";\nimport { type EarlyInputCapture, startEarlyInputCapture } from \"./main-early-input.ts\";\nimport { runFirstTimeSetup } from \"./main-first-time-setup.ts\";\nimport { applyCliRuntimeApiKey } from \"./main-runtime-api-key.ts\";\nimport {\n\tapplyInheritedWorkflowSessionClassification,\n\tcreateSessionManager,\n\tpromptForMissingSessionCwd,\n\tvalidateForkFlags,\n\tvalidateSessionIdFlags,\n} from \"./main-session.ts\";\nimport { buildSessionOptions } from \"./main-session-options.ts\";\nimport {\n\tcollectSettingsDiagnostics,\n\tdrainProcessStdio,\n\tisTruthyEnvFlag,\n\treadPipedStdin,\n\treportDiagnostics,\n} from \"./main-stdio.ts\";\nimport type { MainOptions } from \"./main-types.ts\";\nimport { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.js\";\nimport { createRuntimeForMode } from \"./modes/interactive-engine/create-isolated-runtime.ts\";\nimport { startInteractiveEngineLiveness } from \"./modes/interactive-engine/engine-child-liveness.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport {\n\treadInteractiveEngineBootstrap,\n\ttakeInteractiveEngineBootstrapArg,\n} from \"./utils/interactive-engine-bootstrap.ts\";\nimport { captureInteractiveEngineStartupEnv, isInteractiveEngineChild } from \"./utils/interactive-engine-env.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nimport { cleanupWindowsSelfUpdateQuarantine } from \"./utils/windows-self-update.ts\";\n\nexport type { AppMode } from \"./main-app-mode.ts\";\nexport { resolveExcludedToolsForAppMode } from \"./main-app-mode.ts\";\nexport type { MainOptions } from \"./main-types.ts\";\n\nfunction authCheckErrorMessage(error: unknown): string {\n\t// Provider and credential-store errors can quote a live credential. Model\n\t// resolution errors are made only from the named CLI values, so they remain\n\t// actionable without letting provider-generated text reach stderr.\n\treturn error instanceof AuthCommandError ? error.message : \"Failed to check provider readiness\";\n}\n\n/**\n * `atomic auth …` owns provider-readiness checks and the credential-export\n * door. Its stdout guard routes all ordinary writes to stderr while a command\n * resolves. A readiness result reaches real stdout only as a status record;\n * the opt-in credential branch passes a Secret to emitCredential, the sole\n * code path that can open it and write it to stdout.\n */\nasync function runAuthCheckCommand(command: AuthCommand, parsed: Args): Promise<void> {\n\tvalidateAuthCheckArgs(parsed);\n\tlet result: AuthCheckResult;\n\tlet credentials: AuthStorage | ReadOnlyAuthStorage | undefined;\n\tlet modelRuntime: ModelRuntime | undefined;\n\ttry {\n\t\tcredentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();\n\t\tmodelRuntime = await createAuthCheckModelRuntime(credentials);\n\t\tresult = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh, credentials });\n\t} catch (error) {\n\t\tconsole.error(chalk.red(`Error: ${authCheckErrorMessage(error)}`));\n\t\tresult = { status: \"invalid\", reason: \"invalid_state\" };\n\t}\n\n\tlet credentialEmitted = false;\n\tif (command.credentials && result.status === \"ready\" && credentials && modelRuntime) {\n\t\tconst readyResult = result;\n\t\tif (!hasExplicitCredentialExportTarget(parsed, modelRuntime, readyResult.provider)) {\n\t\t\tconsole.error(chalk.red(\"Error: Credential export requires --provider or an exact --model target\"));\n\t\t\tresult = { status: \"invalid\", provider: readyResult.provider, reason: \"invalid_state\" };\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst credential = await getProviderCredential(readyResult.provider, modelRuntime, credentials, {\n\t\t\t\t\trefresh: !command.noRefresh,\n\t\t\t\t});\n\t\t\t\tif (credential) {\n\t\t\t\t\tawait emitCredential(\n\t\t\t\t\t\tcredential,\n\t\t\t\t\t\tcommand.json\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tstatus: readyResult.status,\n\t\t\t\t\t\t\t\t\tprovider: readyResult.provider,\n\t\t\t\t\t\t\t\t\tauthType: readyResult.authType,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t);\n\t\t\t\t\tcredentialEmitted = true;\n\t\t\t\t} else {\n\t\t\t\t\tresult = { status: \"not_ready\", provider: readyResult.provider, reason: \"credential_not_available\" };\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof CredentialPrintError) throw error;\n\t\t\t\t// Provider text can quote a credential. Explain the export failure with a\n\t\t\t\t// constant diagnostic rather than carrying that text into stderr.\n\t\t\t\tconsole.error(chalk.red(\"Error: Failed to resolve credential for export\"));\n\t\t\t\tresult = { status: \"invalid\", provider: readyResult.provider, reason: \"invalid_state\" };\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!credentialEmitted) {\n\t\tif (command.credentials && !command.json) {\n\t\t\t// The explicit credential stream is credential-only. A caller assigning\n\t\t\t// it to a shell variable receives no status word on a non-zero exit.\n\t\t\tconsole.error(result.status);\n\t\t} else {\n\t\t\tconst output = command.json ? JSON.stringify(result) : result.status;\n\t\t\twriteRawStdout(`${output}\\n`);\n\t\t\tawait flushRawStdout();\n\t\t}\n\t}\n\tprocess.exitCode = result.status === \"ready\" ? 0 : result.status === \"not_ready\" ? 1 : 2;\n}\nasync function runAuthCommand(args: string[]): Promise<boolean> {\n\tif (isAuthCommandHelp(args)) {\n\t\tprintAuthCommandHelp();\n\t\treturn true;\n\t}\n\n\tlet command: AuthCommand | undefined;\n\ttry {\n\t\tcommand = parseAuthCommand(args);\n\t} catch (error) {\n\t\tconst failure = error instanceof AuthCommandError ? error : new AuthCommandError(\"Failed to parse auth command\");\n\t\tconsole.error(chalk.red(`Error: ${failure.message}`));\n\t\tprocess.exitCode = failure.exitCode;\n\t\treturn true;\n\t}\n\tif (!command) return false;\n\n\ttakeOverStdout();\n\ttry {\n\t\tconst parsed = parseArgs(command.args);\n\t\tif (command.kind === \"check\") {\n\t\t\tif (parsed.unknownFlags.size > 0) {\n\t\t\t\tconst option = parsed.unknownFlags.keys().next().value;\n\t\t\t\tconsole.error(chalk.red(`Unknown option --${option} for \"${getAuthCommandName(command.kind)}\".`));\n\t\t\t\tconsole.error(chalk.dim(`Use \"${getAuthCommandUsage(command.kind)}\".`));\n\t\t\t\tprocess.exitCode = 2;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst errors = parsed.diagnostics.filter((diagnostic) => diagnostic.type === \"error\");\n\t\t\tif (errors.length > 0) {\n\t\t\t\tfor (const error of errors) console.error(chalk.red(`Error: ${error.message}`));\n\t\t\t\tprocess.exitCode = 2;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (parsed.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) {\n\t\t\t// Preserve the print commands' established parser behavior: any error\n\t\t\t// prints every diagnostic, warnings included, as a guarded stderr error.\n\t\t\tfor (const diagnostic of parsed.diagnostics) console.error(chalk.red(`Error: ${diagnostic.message}`));\n\t\t\tprocess.exitCode = 1;\n\t\t\treturn true;\n\t\t}\n\n\t\tif (command.kind === \"check\") {\n\t\t\ttry {\n\t\t\t\tawait runAuthCheckCommand(command, parsed);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof CredentialPrintError) {\n\t\t\t\t\tconsole.error(chalk.red(`Error: ${error.message}`));\n\t\t\t\t\tprocess.exitCode = error.exitCode;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(chalk.red(`Error: ${authCheckErrorMessage(error)}`));\n\t\t\t\t\tprocess.exitCode = 2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\ttry {\n\t\t\tvalidateCredentialPrintArgs(parsed);\n\t\t\tconst modelRuntime = await ModelRuntime.create({ allowModelNetwork: false });\n\t\t\tconst secret = await resolveCredentialForPrint(parsed, modelRuntime, command.kind, command.minExpiryMs);\n\t\t\t// The Secret arrives unreadable here; emitCredential routes it through\n\t\t\t// credentialPayload, the only source function that can open it.\n\t\t\tawait emitCredential(secret, undefined);\n\t\t} catch (error) {\n\t\t\t// Every code toCredentialPrintError can produce belongs to a failure\n\t\t\t// that emitted nothing, so the exit code set here never contradicts\n\t\t\t// an empty stdout; a genuinely unclassified error is reported as a\n\t\t\t// credential-resolution failure.\n\t\t\tconst failure = toCredentialPrintError(error);\n\t\t\tconsole.error(chalk.red(`Error: ${failure.message}`));\n\t\t\tprocess.exitCode = failure.exitCode;\n\t\t}\n\t} finally {\n\t\trestoreStdout();\n\t}\n\treturn true;\n}\nexport async function main(argv: string[], options?: MainOptions) {\n\t// Consume the private engine handshake before anything else: the bootstrap\n\t// file carries engine role, host PID, guardian path, and any API key, is read\n\t// once, and is unlinked immediately. Nothing engine-only ever reaches the\n\t// child's environment, so no descendant of the engine can inherit it — which\n\t// deleting variables from `process.env` cannot achieve under Bun.\n\tconst bootstrap = takeInteractiveEngineBootstrapArg(argv);\n\tconst args = bootstrap.args;\n\tconst engineEnv = captureInteractiveEngineStartupEnv(\n\t\tbootstrap.path === undefined ? undefined : readInteractiveEngineBootstrap(bootstrap.path),\n\t);\n\tresetTimings();\n\tconst extensionFactories = [...builtInExtensions, ...(options?.extensionFactories ?? [])];\n\tconst offlineMode = args.includes(\"--offline\") || isTruthyEnvFlag(getEnvValue(ENV_OFFLINE));\n\tif (offlineMode) {\n\t\tsetEnvValue(ENV_OFFLINE, \"1\");\n\t\tsetEnvValue(ENV_SKIP_VERSION_CHECK, \"1\");\n\t}\n\tif (process.platform === \"win32\") cleanupWindowsSelfUpdateQuarantine(getPackageDir());\n\tconst cwd = process.cwd(),\n\t\tagentDir = getAgentDir();\n\tconst bootstrapSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tapplyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher();\n\tif (await handlePackageCommand(args, { extensionFactories })) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\tif (await handleConfigCommand(args, { extensionFactories })) {\n\t\treturn;\n\t}\n\tif (await runAuthCommand(args)) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\tif (args[0] === \"mcp\") {\n\t\tconst { loadMcpCommand } = await import(\"./extensions/mcp/cli.lazy.js\");\n\t\tconst { runMcpCommand } = await loadMcpCommand();\n\t\tprocess.exitCode = await runMcpCommand(args.slice(1), { cwd, agentDir });\n\t\tawait drainProcessStdio();\n\t\treturn;\n\t}\n\tconst parsed = parseArgs(args);\n\tif (engineEnv.child === \"1\" && engineEnv.apiKey) parsed.apiKey = engineEnv.apiKey;\n\tif (parsed.diagnostics.length > 0) {\n\t\tfor (const d of parsed.diagnostics) {\n\t\t\tconst color = d.type === \"error\" ? chalk.red : chalk.yellow;\n\t\t\tconsole.error(color(`${d.type === \"error\" ? \"Error\" : \"Warning\"}: ${d.message}`));\n\t\t}\n\t\tif (parsed.diagnostics.some((d) => d.type === \"error\")) {\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\ttime(\"parseArgs\");\n\n\tif (parsed.version) {\n\t\tconsole.log(VERSION);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.export) {\n\t\tlet result: string;\n\t\ttry {\n\t\t\tconst outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;\n\t\t\tconst { exportFromFile } = await import(\"./core/export-html/index.ts\");\n\t\t\tresult = await exportFromFile(parsed.export, outputPath);\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : \"Failed to export session\";\n\t\t\tconsole.error(chalk.red(`Error: ${message}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tconsole.log(`Exported to: ${result}`);\n\t\tprocess.exit(0);\n\t}\n\tlet appMode = options?.internalInteractiveHarness?.forceInteractive\n\t\t? \"interactive\"\n\t\t: resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);\n\tconst isolateInteractiveHost =\n\t\tappMode === \"interactive\" && !isPlainRuntimeMetadataCommand(parsed) && engineEnv.child !== \"1\";\n\tconst shouldTakeOverStdout = appMode !== \"interactive\";\n\tconst shouldRestoreStdoutForMetadata = isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\tif (engineEnv.child === \"1\") startInteractiveEngineLiveness(writeRawStdout).ready();\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\n\tvalidateForkFlags(parsed);\n\tvalidateSessionIdFlags(parsed);\n\n\tconst projectTrustStore = new ProjectTrustStore(agentDir);\n\tconst startupHasTrustInputs = hasProjectTrustInputs(cwd);\n\tconst startupStoredProjectTrust = startupHasTrustInputs ? projectTrustStore.get(cwd) : null;\n\tconst startupGlobalSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: false });\n\tconst startupDefaultProjectTrust = startupGlobalSettingsManager.getDefaultProjectTrust();\n\tconst startupProjectTrusted =\n\t\tparsed.projectTrustOverride ??\n\t\tstartupStoredProjectTrust ??\n\t\t(!startupHasTrustInputs || startupDefaultProjectTrust === \"always\");\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions),\n\t\tresolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates),\n\t\tresolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tlet startupEarlyInputCapture: EarlyInputCapture | undefined = startEarlyInputCapture({\n\t\tenabled: computeStartupInputCaptureEnabled({\n\t\t\tappMode,\n\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\tparsed,\n\t\t\tsessionCwd: cwd,\n\t\t\tprojectTrustStore,\n\t\t\tresolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\t\tresolvedResourcePathCount:\n\t\t\t\t(resolvedSkillPaths?.length ?? 0) +\n\t\t\t\t(resolvedPromptTemplatePaths?.length ?? 0) +\n\t\t\t\t(resolvedThemePaths?.length ?? 0),\n\t\t\tdeprecationWarningCount: 0,\n\t\t}),\n\t});\n\t// Run migrations after computing startup project trust so project-local migrations\n\t// cannot read or mutate untrusted project config before approval.\n\tconst { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd, {\n\t\tprojectTrusted: startupProjectTrusted,\n\t});\n\ttime(\"runMigrations\");\n\tif (deprecationWarnings.length > 0) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tstartupEarlyInputCapture = undefined;\n\t}\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: startupProjectTrusted });\n\tsetCapabilityOverrides(startupSettingsManager.getTerminalCapabilityOverrides());\n\tconst startupSettingsDiagnostics = collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\");\n\n\t// --use-theme steers this run only: the override lives in the startup\n\t// manager's effective settings and never reaches its global settings file.\n\t// The interactive controller applies the same value through\n\t// initialThemeSetting, so nothing here persists the selection.\n\tif (appMode === \"interactive\" && parsed.useTheme !== undefined) {\n\t\tstartupSettingsManager.applyOverrides({ theme: parsed.useTheme });\n\t}\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 envSessionDir = getEnvValue(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\tlet sessionManager = applyInheritedWorkflowSessionClassification(\n\t\tawait createSessionManager(parsed, cwd, sessionDir, startupSettingsManager),\n\t);\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tstartupEarlyInputCapture = undefined;\n\t\tif (appMode === \"interactive\") {\n\t\t\tconst selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);\n\t\t\tif (!selectedCwd) {\n\t\t\t\tprocess.exit(0);\n\t\t\t}\n\t\t\tsessionManager = SessionManager.open(missingSessionCwdIssue.sessionFile!, sessionDir, selectedCwd);\n\t\t} else {\n\t\t\tconsole.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));\n\t\t\tprocess.exit(1);\n\t\t}\n\t}\n\tif (parsed.name !== undefined) {\n\t\tconst name = parsed.name.trim();\n\t\tif (!name) {\n\t\t\tconsole.error(chalk.red(\"Error: --name requires a non-empty value\"));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tsessionManager.appendSessionInfo(name);\n\t}\n\ttime(\"createSessionManager\");\n\n\tconst sessionCwd = sessionManager.getCwd();\n\tconst autoTrustOnReloadCwd =\n\t\tparsed.projectTrustOverride === undefined && !hasProjectTrustInputs(sessionCwd) ? sessionCwd : undefined;\n\n\tconst builtinPackagePaths = options?.builtinPackagePaths;\n\tconst trustPromptMode: AppMode = parsed.help || parsed.listModels !== undefined ? \"print\" : appMode;\n\tconst projectTrustByCwd = new Map<string, boolean>();\n\tconst borrowedExtensionSourceTrustByPath = new Map<string, boolean>();\n\tlet deferredExtensionLoad = false;\n\tlet forceEagerInteractiveEngineResources = false;\n\tconst createRuntime: CreateAgentSessionRuntimeFactory = async (options) => (await prepareRuntime(options))();\n\tconst prepareRuntime: NonNullable<CreateAgentSessionRuntimeFactory[\"prepareResume\"]> = async ({\n\t\tcwd,\n\t\tagentDir,\n\t\tsessionManager,\n\t\tsessionStartEvent,\n\t\tprojectTrustContext,\n\t}) => {\n\t\tconst cachedProjectTrust = projectTrustByCwd.get(cwd);\n\t\tconst hasTrustInputs = hasProjectTrustInputs(cwd);\n\t\tconst storedProjectTrust = hasTrustInputs ? projectTrustStore.get(cwd) : null;\n\t\tconst initialProjectTrusted =\n\t\t\tparsed.projectTrustOverride ?? cachedProjectTrust ?? storedProjectTrust ?? !hasTrustInputs;\n\t\tconst shouldResolveProjectTrust =\n\t\t\t!isolateInteractiveHost &&\n\t\t\tparsed.projectTrustOverride === undefined &&\n\t\t\tcachedProjectTrust === undefined &&\n\t\t\thasTrustInputs;\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: initialProjectTrusted });\n\t\tconst existingSession = sessionManager.buildSessionContext();\n\t\tconst deferStartupTrust =\n\t\t\tsessionStartEvent === undefined &&\n\t\t\t!isolateInteractiveHost &&\n\t\t\t(trustPromptMode === \"interactive\" || engineEnv.child === \"1\") &&\n\t\t\t(shouldResolveProjectTrust || (resolvedExtensionPaths?.length ?? 0) > 0);\n\t\tlet completeStartupReload: (() => Promise<void>) | undefined;\n\t\tlet startupTrustContext: typeof projectTrustContext;\n\t\tconst resolvedExtensionPathCount = resolvedExtensionPaths?.length ?? 0;\n\t\tconst hasSystemPromptInput = parsed.systemPrompt !== undefined || (parsed.appendSystemPrompt?.length ?? 0) > 0;\n\t\tconst resolvedResourcePathCount =\n\t\t\t(resolvedSkillPaths?.length ?? 0) +\n\t\t\t(resolvedPromptTemplatePaths?.length ?? 0) +\n\t\t\t(resolvedThemePaths?.length ?? 0);\n\t\tconst deferInteractiveEngineResources = computeInteractiveEngineResourceDeferral({\n\t\t\tinteractiveEngineChild: engineEnv.child === \"1\" && !forceEagerInteractiveEngineResources,\n\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\tshouldResolveProjectTrust,\n\t\t\tstoredProjectTrust,\n\t\t\tresolvedExtensionPathCount,\n\t\t\tresolvedResourcePathCount,\n\t\t\thasSystemPromptInput,\n\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t});\n\t\tconst deferExtensions =\n\t\t\t!deferStartupTrust &&\n\t\t\t!isolateInteractiveHost &&\n\t\t\t(deferInteractiveEngineResources ||\n\t\t\t\tcomputeDeferExtensions({\n\t\t\t\t\tappMode,\n\t\t\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\t\t\thelp: parsed.help,\n\t\t\t\t\tlistModels: parsed.listModels,\n\t\t\t\t\tshouldResolveProjectTrust,\n\t\t\t\t\tstoredProjectTrust,\n\t\t\t\t\tresolvedExtensionPathCount,\n\t\t\t\t\tresolvedResourcePathCount,\n\t\t\t\t\thasSystemPromptInput,\n\t\t\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t\t\t\tprovider: parsed.provider,\n\t\t\t\t\tmodel: parsed.model,\n\t\t\t\t}));\n\t\tif (sessionStartEvent === undefined) {\n\t\t\tdeferredExtensionLoad = deferExtensions || deferStartupTrust;\n\t\t\tstartupEarlyInputCapture ??= startEarlyInputCapture({\n\t\t\t\tenabled: appMode === \"interactive\" && deferExtensions && deprecationWarnings.length === 0,\n\t\t\t});\n\t\t}\n\t\tconst getProjectTrustContext = () =>\n\t\t\tstartupTrustContext ??\n\t\t\tprojectTrustContext ??\n\t\t\tcreateProjectTrustContext({\n\t\t\t\tcwd,\n\t\t\t\tmode: sessionStartEvent === undefined ? trustPromptMode : appMode,\n\t\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\t\thasUI: sessionStartEvent === undefined && trustPromptMode === \"interactive\",\n\t\t\t});\n\t\tlet migrateAfterTrust = false;\n\t\tconst completeServices = await prepareAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\textensionFlagValues: parsed.unknownFlags,\n\t\t\tresourceLoaderReloadOptions: deferExtensions\n\t\t\t\t? { deferExtensions: true, deferResources: true }\n\t\t\t\t: shouldResolveProjectTrust || (!isolateInteractiveHost && (resolvedExtensionPaths?.length ?? 0) > 0)\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tdeferProjectTrust: deferStartupTrust\n\t\t\t\t\t\t\t\t? (complete) => {\n\t\t\t\t\t\t\t\t\t\tcompleteStartupReload = complete;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tresolveProjectTrust: shouldResolveProjectTrust\n\t\t\t\t\t\t\t\t? async ({ extensionsResult }) => {\n\t\t\t\t\t\t\t\t\t\tconst trusted = await resolveProjectTrusted({\n\t\t\t\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\t\t\t\ttrustStore: projectTrustStore,\n\t\t\t\t\t\t\t\t\t\t\tdefaultProjectTrust: runtimeSettingsManager.getDefaultProjectTrust(),\n\t\t\t\t\t\t\t\t\t\t\textensionsResult,\n\t\t\t\t\t\t\t\t\t\t\tprojectTrustContext: getProjectTrustContext(),\n\t\t\t\t\t\t\t\t\t\t\tonExtensionError: (message) => console.error(chalk.yellow(`Warning: ${message}`)),\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tprojectTrustByCwd.set(cwd, trusted);\n\t\t\t\t\t\t\t\t\t\tif (trusted && !initialProjectTrusted) {\n\t\t\t\t\t\t\t\t\t\t\tmigrateAfterTrust = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn trusted;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tresolveBorrowedProjectTrust: async ({ source, extensionsResult }) => {\n\t\t\t\t\t\t\t\tconst cachedTrust = borrowedExtensionSourceTrustByPath.get(source);\n\t\t\t\t\t\t\t\tif (cachedTrust !== undefined) {\n\t\t\t\t\t\t\t\t\treturn cachedTrust;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst trusted = await resolveProjectTrusted({\n\t\t\t\t\t\t\t\t\tcwd: source,\n\t\t\t\t\t\t\t\t\ttrustStore: projectTrustStore,\n\t\t\t\t\t\t\t\t\ttrustOverride: parsed.projectTrustOverride,\n\t\t\t\t\t\t\t\t\tdefaultProjectTrust: runtimeSettingsManager.getDefaultProjectTrust(),\n\t\t\t\t\t\t\t\t\textensionsResult,\n\t\t\t\t\t\t\t\t\tprojectTrustContext: getProjectTrustContext(),\n\t\t\t\t\t\t\t\t\tpromptMessage: formatBorrowedExtensionSourceTrustPrompt(source),\n\t\t\t\t\t\t\t\t\tonExtensionError: (message) => console.error(chalk.yellow(`Warning: ${message}`)),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tborrowedExtensionSourceTrustByPath.set(source, trusted);\n\t\t\t\t\t\t\t\treturn trusted;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\tresourceLoaderOptions: {\n\t\t\t\tadditionalExtensionPaths: isolateInteractiveHost ? undefined : resolvedExtensionPaths,\n\t\t\t\tadditionalSkillPaths: resolvedSkillPaths,\n\t\t\t\tadditionalPromptTemplatePaths: resolvedPromptTemplatePaths,\n\t\t\t\tadditionalThemePaths: resolvedThemePaths,\n\t\t\t\tbuiltinPackagePaths,\n\t\t\t\tnoExtensions: isolateInteractiveHost || parsed.noExtensions,\n\t\t\t\tnoSkills: parsed.noSkills,\n\t\t\t\tnoPromptTemplates: parsed.noPromptTemplates,\n\t\t\t\tnoThemes: parsed.noThemes,\n\t\t\t\tnoContextFiles: parsed.noContextFiles,\n\t\t\t\tsystemPrompt: parsed.systemPrompt,\n\t\t\t\tappendSystemPrompt: parsed.appendSystemPrompt,\n\t\t\t\textensionFactories: isolateInteractiveHost ? undefined : extensionFactories,\n\t\t\t},\n\t\t});\n\t\treturn async () => {\n\t\t\tif (migrateAfterTrust) runMigrations(cwd, { projectTrusted: true });\n\t\t\tconst services = await completeServices();\n\t\t\tif (isolateInteractiveHost) limitMandatoryIntercomToTool(services.resourceLoader);\n\t\t\tconst { settingsManager, modelRuntime, resourceLoader } = services;\n\t\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t\t...services.diagnostics,\n\t\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t\t...resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\t\ttype: \"error\" as const,\n\t\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t\t})),\n\t\t\t\t...(resourceLoader.getExtensions().warnings ?? []).map(({ path, warning }) => ({\n\t\t\t\t\ttype: \"warning\" as const,\n\t\t\t\t\tmessage: `Extension package \"${path}\": ${warning}`,\n\t\t\t\t})),\n\t\t\t];\n\t\t\tconst modelPatterns = isolateInteractiveHost\n\t\t\t\t? undefined\n\t\t\t\t: (parsed.models ?? settingsManager.getEnabledModels());\n\t\t\tconst scopedModels =\n\t\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t\t? deferredExtensionLoad\n\t\t\t\t\t\t? (await resolveModelScopeWithDiagnostics(modelPatterns, modelRuntime)).scopedModels\n\t\t\t\t\t\t: await resolveModelScope(modelPatterns, modelRuntime)\n\t\t\t\t\t: [];\n\t\t\tconst sessionArgs = isolateInteractiveHost\n\t\t\t\t? { ...parsed, provider: undefined, model: undefined, apiKey: undefined, models: undefined }\n\t\t\t\t: parsed;\n\t\t\tconst {\n\t\t\t\toptions: sessionOptions,\n\t\t\t\tcliThinkingFromModel,\n\t\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t\t} = buildSessionOptions(\n\t\t\t\tsessionArgs,\n\t\t\t\tscopedModels,\n\t\t\t\tsessionManager.buildSessionContext().messages.length > 0,\n\t\t\t\tmodelRuntime,\n\t\t\t\tsettingsManager,\n\t\t\t);\n\t\t\tif (!deferStartupTrust) diagnostics.push(...sessionOptionDiagnostics);\n\n\t\t\tif (parsed.apiKey && !isolateInteractiveHost && !deferStartupTrust) {\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\t// Bound the complete CLI key operation—from credential mutation through\n\t\t\t\t\t// provider-scoped catalog refresh—with the established model-refresh budget.\n\t\t\t\t\tconst apiKeySignal = AbortSignal.timeout(INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS);\n\t\t\t\t\tawait applyCliRuntimeApiKey(modelRuntime, sessionOptions.model.provider, parsed.apiKey, apiKeySignal);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst created = await createUnstartedAgentSessionFromServices({\n\t\t\t\tservices,\n\t\t\t\tsessionManager,\n\t\t\t\tsessionStartEvent,\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\texcludedTools: resolveExcludedToolsForAppMode(appMode, sessionOptions.excludedTools),\n\t\t\t\tnoTools: sessionOptions.noTools,\n\t\t\t\tcustomTools: sessionOptions.customTools,\n\t\t\t});\n\t\t\tif (completeStartupReload) {\n\t\t\t\tconst completeReload = completeStartupReload;\n\t\t\t\tlet completion: Promise<void> | undefined;\n\t\t\t\tservices.completeStartup = (context) =>\n\t\t\t\t\t(completion ??= (async () => {\n\t\t\t\t\t\tstartupTrustContext = context;\n\t\t\t\t\t\tawait completeReload();\n\t\t\t\t\t\tif (migrateAfterTrust) runMigrations(cwd, { projectTrusted: true });\n\t\t\t\t\t\tconst finalServices = await completeServices();\n\t\t\t\t\t\tconst extensionErrors = finalServices.resourceLoader.getExtensions().errors;\n\t\t\t\t\t\tif (extensionErrors.length > 0) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t`Failed to load extensions: ${extensionErrors.map(({ path, error }) => `${path}: ${error}`).join(\"; \")}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tservices.resourceLoader = finalServices.resourceLoader;\n\t\t\t\t\t\tservices.diagnostics = finalServices.diagnostics;\n\t\t\t\t\t\tconst patterns = parsed.models ?? settingsManager.getEnabledModels();\n\t\t\t\t\t\tconst finalScope = patterns?.length ? await resolveModelScope(patterns, modelRuntime) : [];\n\t\t\t\t\t\tconst finalSelection = buildSessionOptions(\n\t\t\t\t\t\t\tparsed,\n\t\t\t\t\t\t\tfinalScope,\n\t\t\t\t\t\t\texistingSession.messages.length > 0,\n\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\tsettingsManager,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tfinalServices.diagnostics.push(...finalSelection.diagnostics);\n\t\t\t\t\t\tlet finalModel = finalSelection.options.model;\n\t\t\t\t\t\tif (!finalModel && existingSession.messages.length > 0 && existingSession.model) {\n\t\t\t\t\t\t\tfinalModel = await resolveRestoredModelReference(\n\t\t\t\t\t\t\t\texistingSession.model.provider,\n\t\t\t\t\t\t\t\texistingSession.model.modelId,\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinalModel ??= (\n\t\t\t\t\t\t\tawait findInitialModel({\n\t\t\t\t\t\t\t\tscopedModels: [],\n\t\t\t\t\t\t\t\tisContinuing: existingSession.messages.length > 0,\n\t\t\t\t\t\t\t\tdefaultProvider: settingsManager.getDefaultProvider(),\n\t\t\t\t\t\t\t\tdefaultModelId: settingsManager.getDefaultModel(),\n\t\t\t\t\t\t\t\tdefaultThinkingLevel: settingsManager.getDefaultThinkingLevel(),\n\t\t\t\t\t\t\t\tmodelThinkingLevels: settingsManager.getAllModelThinkingLevels(),\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t).model;\n\t\t\t\t\t\tif (parsed.apiKey && finalModel)\n\t\t\t\t\t\t\tawait applyCliRuntimeApiKey(\n\t\t\t\t\t\t\t\tmodelRuntime,\n\t\t\t\t\t\t\t\tfinalModel.provider,\n\t\t\t\t\t\t\t\tparsed.apiKey,\n\t\t\t\t\t\t\t\tAbortSignal.timeout(INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tcreated.session.setScopedModels(finalScope);\n\t\t\t\t\t\tif (finalModel) {\n\t\t\t\t\t\t\tcreated.session.agent.state.model = finalModel;\n\t\t\t\t\t\t\tsessionManager.appendModelChange(finalModel.provider, finalModel.id);\n\t\t\t\t\t\t\tcreated.session.setThinkingLevel(\n\t\t\t\t\t\t\t\tfinalSelection.options.thinkingLevel ??\n\t\t\t\t\t\t\t\t\t(existingSession.messages.length > 0 ? created.session.thinkingLevel : undefined) ??\n\t\t\t\t\t\t\t\t\tsettingsManager.getModelThinkingLevel(finalModel.provider, finalModel.id) ??\n\t\t\t\t\t\t\t\t\tsettingsManager.getDefaultThinkingLevel() ??\n\t\t\t\t\t\t\t\t\tcreated.session.thinkingLevel,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait created.session.completeStartupResources(finalServices.resourceLoader);\n\t\t\t\t\t\tfor (const diagnostic of finalServices.diagnostics) reportDiagnostics([diagnostic]);\n\t\t\t\t\t})().catch((error) => {\n\t\t\t\t\t\tcompletion = undefined;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}));\n\t\t\t}\n\t\t\tif (deferInteractiveEngineResources && !services.completeStartup && !created.session.model) {\n\t\t\t\tawait created.session.dispose();\n\t\t\t\tforceEagerInteractiveEngineResources = true;\n\t\t\t\treturn createRuntime({ cwd, agentDir, sessionManager, sessionStartEvent, projectTrustContext });\n\t\t\t}\n\t\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...created,\n\t\t\t\tservices,\n\t\t\t\tdiagnostics,\n\t\t\t};\n\t\t};\n\t};\n\tcreateRuntime.prepareResume = prepareRuntime;\n\ttime(\"createRuntimeFactory\");\n\tconst runtimeCreationSpan = startTimingSpan(\"createAgentSessionRuntime\");\n\tconst runtime = await createRuntimeForMode(\n\t\tcreateRuntime,\n\t\tsessionManager.getCwd(),\n\t\tagentDir,\n\t\tsessionManager,\n\t\tisolateInteractiveHost,\n\t\t(options?.extensionFactories?.length ?? 0) > 0,\n\t\tparsed,\n\t\t{\n\t\t\textensions: resolvedExtensionPaths,\n\t\t\tskills: resolvedSkillPaths,\n\t\t\tpromptTemplates: resolvedPromptTemplatePaths,\n\t\t\tthemes: resolvedThemePaths,\n\t\t},\n\t);\n\tendTimingSpan(runtimeCreationSpan);\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRuntime, resourceLoader } = services;\n\tsetCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());\n\tapplyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\tif (parsed.help) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tprintHelp(extensionFlags);\n\t\tprocess.exit(0);\n\t}\n\n\tif (parsed.listModels !== undefined) {\n\t\treportDiagnostics(startupSettingsDiagnostics);\n\t\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tawait listModels(modelRuntime, searchPattern);\n\t\tprocess.exit(0);\n\t}\n\n\t// Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC\n\tlet stdinContent: string | undefined;\n\tif (appMode !== \"rpc\" && !options?.internalInteractiveHarness) {\n\t\tstdinContent = await readPipedStdin();\n\t\tif (stdinContent !== undefined && appMode === \"interactive\") {\n\t\t\tappMode = \"print\";\n\t\t}\n\t}\n\ttime(\"readPipedStdin\");\n\n\tconst { initialMessage, initialImages } = await prepareInitialMessage(parsed, stdinContent);\n\ttime(\"prepareInitialMessage\");\n\tstartupEarlyInputCapture = await runFirstTimeSetup(appMode, settingsManager, startupEarlyInputCapture);\n\tinitTheme(settingsManager.getTheme(), appMode === \"interactive\");\n\ttime(\"initTheme\");\n\n\t// Show deprecation warnings in interactive mode\n\tif (appMode === \"interactive\" && deprecationWarnings.length > 0) {\n\t\tawait showDeprecationWarnings(deprecationWarnings);\n\t}\n\n\tconst scopedModels = [...session.scopedModels];\n\ttime(\"resolveModelScope\");\n\tconst startupDiagnostics = deduplicateDiagnostics([...startupSettingsDiagnostics, ...runtime.diagnostics]);\n\tconst hasRuntimeErrors = runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\tif (appMode !== \"interactive\" || hasRuntimeErrors) reportDiagnostics(startupDiagnostics);\n\tif (hasRuntimeErrors) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\ttime(\"createAgentSession\");\n\n\tif (appMode !== \"interactive\" && !session.model && !(engineEnv.child === \"1\" && services.completeStartup)) {\n\t\tconsole.error(chalk.red(formatNoModelsAvailableMessage()));\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\n\tconst startupBenchmark = isTruthyEnvFlag(getEnvValue(ENV_STARTUP_BENCHMARK));\n\tif (startupBenchmark && appMode !== \"interactive\") {\n\t\tconsole.error(chalk.red(`Error: ${ENV_STARTUP_BENCHMARK} only supports interactive mode`));\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\n\tif (appMode === \"rpc\") {\n\t\t// Standalone RPC preserves its eager catalog refresh. The isolated\n\t\t// interactive engine does not: /model owns its bounded refresh, while an\n\t\t// eager unbounded refresh can hold credential locks and lend its in-flight\n\t\t// promise to later cache-only or timed refreshes.\n\t\tif (shouldStartRpcCatalogRefresh(offlineMode, isInteractiveEngineChild())) {\n\t\t\tvoid modelRuntime.refresh().catch(() => {});\n\t\t}\n\t\tprintTimings();\n\t\tawait runRpcMode(runtime, { deferInteractiveEngineResources: deferredExtensionLoad });\n\t} else if (appMode === \"interactive\") {\n\t\tif (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {\n\t\t\tconsole.log(chalk.dim(`Model scope: ${formatScopedModelList(scopedModels)} ${chalk.gray(\"(ctrl+p cycle)\")}`));\n\t\t}\n\n\t\tconst interactiveMode = new InteractiveMode(runtime, {\n\t\t\tmigratedProviders,\n\t\t\tstartupDiagnostics,\n\t\t\tmodelFallbackMessage,\n\t\t\tautoTrustOnReloadCwd,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t\tinitialMessages: parsed.messages,\n\t\t\tverbose: parsed.verbose,\n\t\t\tinitialThemeSetting: parsed.useTheme,\n\t\t\tdeferredExtensionLoad,\n\t\t\tstartupInputCapture: startupEarlyInputCapture,\n\t\t\tdeferredModelScopePatterns: deferredExtensionLoad\n\t\t\t\t? (parsed.models ?? settingsManager.getEnabledModels())\n\t\t\t\t: undefined,\n\t\t\tdeferredModelScopePreserveThinking: parsed.thinking !== undefined,\n\t\t\tterminal: options?.internalInteractiveHarness?.terminal,\n\t\t});\n\t\toptions?.internalInteractiveHarness?.onMode?.(interactiveMode);\n\t\tif (startupBenchmark) {\n\t\t\tawait interactiveMode.init();\n\t\t\ttime(\"interactiveMode.init\");\n\t\t\tawait interactiveMode.ensureDeferredStartupComplete();\n\t\t\tprintTimings();\n\t\t\tinteractiveMode.stop();\n\t\t\tstopThemeWatcher();\n\t\t\tif (process.stdout.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stdout.once(\"drain\", resolve));\n\t\t\t}\n\t\t\tif (process.stderr.writableLength > 0) {\n\t\t\t\tawait new Promise<void>((resolve) => process.stderr.once(\"drain\", resolve));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tprintTimings();\n\t\tawait interactiveMode.run();\n\t} else {\n\t\tprintTimings();\n\t\tconst exitCode = await runPrintMode(runtime, {\n\t\t\tmode: toPrintOutputMode(appMode),\n\t\t\tmessages: parsed.messages,\n\t\t\tinitialMessage,\n\t\t\tinitialImages,\n\t\t});\n\t\tstopThemeWatcher();\n\t\trestoreStdout();\n\t\tif (exitCode !== 0) {\n\t\t\tprocess.exitCode = exitCode;\n\t\t}\n\t\treturn;\n\t}\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utility for truncating text to visual lines (accounting for line wrapping).
|
|
3
|
-
* Used by
|
|
3
|
+
* Used by tool renderers and bash-execution.ts for consistent behavior.
|
|
4
4
|
*/
|
|
5
|
+
import { type Component } from "@earendil-works/pi-tui";
|
|
5
6
|
export interface VisualTruncateResult {
|
|
6
7
|
/** The visual lines to display */
|
|
7
8
|
visualLines: string[];
|
|
@@ -9,7 +10,7 @@ export interface VisualTruncateResult {
|
|
|
9
10
|
skippedCount: number;
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
|
-
* Truncate text to a maximum number of visual lines
|
|
13
|
+
* Truncate text to a maximum number of visual lines.
|
|
13
14
|
* This accounts for line wrapping based on terminal width.
|
|
14
15
|
*
|
|
15
16
|
* @param text - The text content (may contain newlines)
|
|
@@ -18,7 +19,30 @@ export interface VisualTruncateResult {
|
|
|
18
19
|
* @param paddingX - Horizontal padding for Text component (default 0).
|
|
19
20
|
* Use 0 when result will be placed in a Box (Box adds its own padding).
|
|
20
21
|
* Use 1 when result will be placed in a plain Container.
|
|
22
|
+
* @param keep - Which visual lines to keep: the last ones (default) or the first ones.
|
|
21
23
|
* @returns The truncated visual lines and count of skipped lines
|
|
22
24
|
*/
|
|
23
|
-
export declare function truncateToVisualLines(text: string, maxVisualLines: number, width: number, paddingX?: number): VisualTruncateResult;
|
|
25
|
+
export declare function truncateToVisualLines(text: string, maxVisualLines: number, width: number, paddingX?: number, keep?: "start" | "end"): VisualTruncateResult;
|
|
26
|
+
export interface VisualLinePreviewOptions {
|
|
27
|
+
/** Styled text; may contain newlines. */
|
|
28
|
+
text: string;
|
|
29
|
+
maxVisualLines: number;
|
|
30
|
+
/** Which visual lines to keep. The hint goes before kept end lines and after kept start lines. */
|
|
31
|
+
keep: "start" | "end";
|
|
32
|
+
/** Styled hint line for the given number of hidden visual lines. */
|
|
33
|
+
formatHint: (hidden: number) => string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Collapsed tool output limited to a number of visual lines, like bash output. Limiting logical
|
|
37
|
+
* lines instead lets a single long line (such as minified JSON) wrap across the whole screen.
|
|
38
|
+
* Caches its lines per width, since it renders on every frame for every result in the transcript.
|
|
39
|
+
*/
|
|
40
|
+
export declare class VisualLinePreview implements Component {
|
|
41
|
+
private options;
|
|
42
|
+
private cachedWidth;
|
|
43
|
+
private cachedLines;
|
|
44
|
+
constructor(options: VisualLinePreviewOptions);
|
|
45
|
+
render(width: number): string[];
|
|
46
|
+
invalidate(): void;
|
|
47
|
+
}
|
|
24
48
|
//# sourceMappingURL=visual-truncate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-truncate.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"visual-truncate.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,wBAAwB,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACpC,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAU,EACpB,IAAI,GAAE,OAAO,GAAG,KAAa,GAC3B,oBAAoB,CAkBtB;AAED,MAAM,WAAW,wBAAwB;IACxC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,oEAAoE;IACpE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IAClD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAE1C,YAAY,OAAO,EAAE,wBAAwB,EAE5C;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9B;IAED,UAAU,IAAI,IAAI,CAGjB;CACD"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared utility for truncating text to visual lines (accounting for line wrapping).
|
|
3
|
-
* Used by
|
|
3
|
+
* Used by tool renderers and bash-execution.ts for consistent behavior.
|
|
4
4
|
*/
|
|
5
|
-
import { Text } from "@earendil-works/pi-tui";
|
|
5
|
+
import { Text, truncateToWidth } from "@earendil-works/pi-tui";
|
|
6
6
|
/**
|
|
7
|
-
* Truncate text to a maximum number of visual lines
|
|
7
|
+
* Truncate text to a maximum number of visual lines.
|
|
8
8
|
* This accounts for line wrapping based on terminal width.
|
|
9
9
|
*
|
|
10
10
|
* @param text - The text content (may contain newlines)
|
|
@@ -13,9 +13,10 @@ import { Text } from "@earendil-works/pi-tui";
|
|
|
13
13
|
* @param paddingX - Horizontal padding for Text component (default 0).
|
|
14
14
|
* Use 0 when result will be placed in a Box (Box adds its own padding).
|
|
15
15
|
* Use 1 when result will be placed in a plain Container.
|
|
16
|
+
* @param keep - Which visual lines to keep: the last ones (default) or the first ones.
|
|
16
17
|
* @returns The truncated visual lines and count of skipped lines
|
|
17
18
|
*/
|
|
18
|
-
export function truncateToVisualLines(text, maxVisualLines, width, paddingX = 0) {
|
|
19
|
+
export function truncateToVisualLines(text, maxVisualLines, width, paddingX = 0, keep = "end") {
|
|
19
20
|
if (!text) {
|
|
20
21
|
return { visualLines: [], skippedCount: 0 };
|
|
21
22
|
}
|
|
@@ -25,9 +26,41 @@ export function truncateToVisualLines(text, maxVisualLines, width, paddingX = 0)
|
|
|
25
26
|
if (allVisualLines.length <= maxVisualLines) {
|
|
26
27
|
return { visualLines: allVisualLines, skippedCount: 0 };
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
const truncatedLines = allVisualLines.slice(-maxVisualLines);
|
|
29
|
+
const truncatedLines = keep === "start" ? allVisualLines.slice(0, maxVisualLines) : allVisualLines.slice(-maxVisualLines);
|
|
30
30
|
const skippedCount = allVisualLines.length - maxVisualLines;
|
|
31
31
|
return { visualLines: truncatedLines, skippedCount };
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Collapsed tool output limited to a number of visual lines, like bash output. Limiting logical
|
|
35
|
+
* lines instead lets a single long line (such as minified JSON) wrap across the whole screen.
|
|
36
|
+
* Caches its lines per width, since it renders on every frame for every result in the transcript.
|
|
37
|
+
*/
|
|
38
|
+
export class VisualLinePreview {
|
|
39
|
+
options;
|
|
40
|
+
cachedWidth;
|
|
41
|
+
cachedLines;
|
|
42
|
+
constructor(options) {
|
|
43
|
+
this.options = options;
|
|
44
|
+
}
|
|
45
|
+
render(width) {
|
|
46
|
+
if (this.cachedLines === undefined || this.cachedWidth !== width) {
|
|
47
|
+
const { text, maxVisualLines, keep, formatHint } = this.options;
|
|
48
|
+
const preview = truncateToVisualLines(text, maxVisualLines, width, 0, keep);
|
|
49
|
+
const lines = preview.visualLines;
|
|
50
|
+
if (preview.skippedCount > 0) {
|
|
51
|
+
const hint = truncateToWidth(formatHint(preview.skippedCount), width, "...");
|
|
52
|
+
this.cachedLines = keep === "start" ? [...lines, hint] : [hint, ...lines];
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.cachedLines = lines;
|
|
56
|
+
}
|
|
57
|
+
this.cachedWidth = width;
|
|
58
|
+
}
|
|
59
|
+
return this.cachedLines;
|
|
60
|
+
}
|
|
61
|
+
invalidate() {
|
|
62
|
+
this.cachedWidth = undefined;
|
|
63
|
+
this.cachedLines = undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
33
66
|
//# sourceMappingURL=visual-truncate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-truncate.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"visual-truncate.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/visual-truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAkB,IAAI,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAY,EACZ,cAAsB,EACtB,KAAa,EACb,QAAQ,GAAW,CAAC,EACpB,IAAI,GAAoB,KAAK;IAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,cAAc,GACnB,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;IACpG,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;IAE5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC;AAYD;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACrB,OAAO,CAA2B;IAClC,WAAW,CAAqB;IAChC,WAAW,CAAuB;IAE1C,YAAY,OAAiC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAChE,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAClC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC7E,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,UAAU;QACT,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;CACD","sourcesContent":["/**\n * Shared utility for truncating text to visual lines (accounting for line wrapping).\n * Used by tool renderers and bash-execution.ts for consistent behavior.\n */\n\nimport { type Component, Text, truncateToWidth } from \"@earendil-works/pi-tui\";\n\nexport interface VisualTruncateResult {\n\t/** The visual lines to display */\n\tvisualLines: string[];\n\t/** Number of visual lines that were skipped (hidden) */\n\tskippedCount: number;\n}\n\n/**\n * Truncate text to a maximum number of visual lines.\n * This accounts for line wrapping based on terminal width.\n *\n * @param text - The text content (may contain newlines)\n * @param maxVisualLines - Maximum number of visual lines to show\n * @param width - Terminal/render width\n * @param paddingX - Horizontal padding for Text component (default 0).\n * Use 0 when result will be placed in a Box (Box adds its own padding).\n * Use 1 when result will be placed in a plain Container.\n * @param keep - Which visual lines to keep: the last ones (default) or the first ones.\n * @returns The truncated visual lines and count of skipped lines\n */\nexport function truncateToVisualLines(\n\ttext: string,\n\tmaxVisualLines: number,\n\twidth: number,\n\tpaddingX: number = 0,\n\tkeep: \"start\" | \"end\" = \"end\",\n): VisualTruncateResult {\n\tif (!text) {\n\t\treturn { visualLines: [], skippedCount: 0 };\n\t}\n\n\t// Create a temporary Text component to render and get visual lines\n\tconst tempText = new Text(text, paddingX, 0);\n\tconst allVisualLines = tempText.render(width);\n\n\tif (allVisualLines.length <= maxVisualLines) {\n\t\treturn { visualLines: allVisualLines, skippedCount: 0 };\n\t}\n\n\tconst truncatedLines =\n\t\tkeep === \"start\" ? allVisualLines.slice(0, maxVisualLines) : allVisualLines.slice(-maxVisualLines);\n\tconst skippedCount = allVisualLines.length - maxVisualLines;\n\n\treturn { visualLines: truncatedLines, skippedCount };\n}\n\nexport interface VisualLinePreviewOptions {\n\t/** Styled text; may contain newlines. */\n\ttext: string;\n\tmaxVisualLines: number;\n\t/** Which visual lines to keep. The hint goes before kept end lines and after kept start lines. */\n\tkeep: \"start\" | \"end\";\n\t/** Styled hint line for the given number of hidden visual lines. */\n\tformatHint: (hidden: number) => string;\n}\n\n/**\n * Collapsed tool output limited to a number of visual lines, like bash output. Limiting logical\n * lines instead lets a single long line (such as minified JSON) wrap across the whole screen.\n * Caches its lines per width, since it renders on every frame for every result in the transcript.\n */\nexport class VisualLinePreview implements Component {\n\tprivate options: VisualLinePreviewOptions;\n\tprivate cachedWidth: number | undefined;\n\tprivate cachedLines: string[] | undefined;\n\n\tconstructor(options: VisualLinePreviewOptions) {\n\t\tthis.options = options;\n\t}\n\n\trender(width: number): string[] {\n\t\tif (this.cachedLines === undefined || this.cachedWidth !== width) {\n\t\t\tconst { text, maxVisualLines, keep, formatHint } = this.options;\n\t\t\tconst preview = truncateToVisualLines(text, maxVisualLines, width, 0, keep);\n\t\t\tconst lines = preview.visualLines;\n\t\t\tif (preview.skippedCount > 0) {\n\t\t\t\tconst hint = truncateToWidth(formatHint(preview.skippedCount), width, \"...\");\n\t\t\t\tthis.cachedLines = keep === \"start\" ? [...lines, hint] : [hint, ...lines];\n\t\t\t} else {\n\t\t\t\tthis.cachedLines = lines;\n\t\t\t}\n\t\t\tthis.cachedWidth = width;\n\t\t}\n\t\treturn this.cachedLines;\n\t}\n\n\tinvalidate(): void {\n\t\tthis.cachedWidth = undefined;\n\t\tthis.cachedLines = undefined;\n\t}\n}\n"]}
|
|
@@ -1006,20 +1006,20 @@ pi.registerCommand("my-setup-teardown", {
|
|
|
1006
1006
|
|
|
1007
1007
|
### pi.registerMcpServer(name, config)
|
|
1008
1008
|
|
|
1009
|
-
Contribute an MCP server whose configuration is only known at runtime, such as the URL of a local service the extension starts. `config` uses the same schema as an entry in [`mcp.json`](/mcp-servers#configure-
|
|
1009
|
+
Contribute an MCP server whose configuration is only known at runtime, such as the URL of a local service the extension starts. `config` uses the same schema as an entry in [`mcp.json`](/mcp-servers#configure-servers), including `url`, `command`/`args`/`env`/`cwd`, `headers`, OAuth settings, `exposure`, and per-request `timeout` in seconds. URLs support `${VAR}` and `$env:VAR` interpolation.
|
|
1010
1010
|
|
|
1011
1011
|
```typescript
|
|
1012
1012
|
export default function (pi: ExtensionAPI) {
|
|
1013
1013
|
pi.on("session_start", async () => {
|
|
1014
1014
|
const port = await startLocalService();
|
|
1015
|
-
pi.registerMcpServer("local-service", { url: `http://127.0.0.1:${port}/mcp`,
|
|
1015
|
+
pi.registerMcpServer("local-service", { url: `http://127.0.0.1:${port}/mcp`, exposure: "direct" });
|
|
1016
1016
|
});
|
|
1017
1017
|
}
|
|
1018
1018
|
```
|
|
1019
1019
|
|
|
1020
1020
|
Call it from the extension factory or from `session_start`. Load order does not matter: registrations made after the MCP adapter has started are picked up without a reload. Registering the same name again replaces the earlier registration.
|
|
1021
1021
|
|
|
1022
|
-
Registered servers are the lowest-precedence MCP layer. They replace a same-named server from a package manifest, but
|
|
1022
|
+
Registered servers are the lowest-precedence MCP layer. They replace a same-named server from a package manifest, but a user or trusted-project MCP config entry replaces them. Set `"enabled": false` on a complete file-configured entry to keep it without connecting. `/mcp` shows the registering extension next to the server name.
|
|
1023
1023
|
|
|
1024
1024
|
`pi.getMcpServerContributions()` returns the package-manifest and registered servers for the session, each with its `name`, `config`, `origin` (`"package"` or `"extension"`), and `sourceInfo`.
|
|
1025
1025
|
|
|
@@ -851,6 +851,8 @@ export default function (pi: ExtensionAPI) {
|
|
|
851
851
|
|
|
852
852
|
Frames are ordinary objects with a `{ epoch: string, revision: number }` cursor. Revisions increase within an epoch; lifecycle publication may leave gaps between activity revisions. A new publisher starts a new epoch and an `unavailable` snapshot. Never compare revision numbers across epochs. A `ready` snapshot has a `roots` array, including an empty array when known empty. `recovering` and `unavailable` snapshots omit `roots`. Subsequent snapshots replace all prior knowledge. Changes replace a complete root, not increment counters. Removals contain `rootRunId`. Root summaries include `state`, `reason`, execution/wait counts, and `needsAttention`.
|
|
853
853
|
|
|
854
|
+
The workflows extension also calls `pi.registerWorkflowRunControl(control)` to back `session.workflows`, the typed pause, quit, and resume API for SDK hosts (see [Workflow run control](/sdk#workflow-run-control)). The registration is released with the extension generation, and only the most recent registration is active.
|
|
855
|
+
|
|
854
856
|
Providers call `pi.registerWorkflowActivityPublisher()` and retain its returned `WorkflowActivityPublisher`. Its methods are `publishSnapshot({ availability: "ready", roots })`, `publishSnapshot({ availability: "recovering" | "unavailable" })`, `publishChanged(root)`, `publishRemoved(rootRunId)`, `publishLifecycle(event)`, `publishHeartbeat(event)`, and `dispose()`. Lifecycle input includes `type: "workflow_lifecycle"` and the envelope except `cursor`, which the host supplies. Heartbeat input includes `type: "workflow_heartbeat"`. IDs, names, timestamps, zero counts and optional attribution are preserved. Roots are keyed by `rootRunId`; duplicate snapshot IDs use the last value at the first insertion position. Removing an absent ID is permitted. Changes do not turn an unknown source into `ready`; publish a snapshot to establish readiness.
|
|
855
857
|
|
|
856
858
|
Workflow hooks published during extension factory initialization are retained until the runner binds dispatch, then delivered asynchronously in publication order before later live publications. Buffered events keep their original payloads and cursors; publisher retirement and runner disposal fence them just like live events.
|
package/docs/extensions.md
CHANGED
|
@@ -76,19 +76,19 @@ If an extension is heavier than you need, compare the lighter mechanisms on [Bui
|
|
|
76
76
|
|
|
77
77
|
Built-in MCP, workflow, subagent, web-access, and Intercom commands are available at startup. Their first use may wait for discovery or connection.
|
|
78
78
|
|
|
79
|
-
Commands still wait for the resources they need before returning results. These include `/workflow list`, named workflow runs/inputs, failed or durable workflow resume,
|
|
79
|
+
Commands still wait for the resources they need before returning results. These include `/workflow list`, named workflow runs/inputs, failed or durable workflow resume, MCP tool calls, and explicit reload flows.
|
|
80
80
|
|
|
81
81
|
Discovery scope depends on the operation:
|
|
82
82
|
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
83
|
+
- Enabled MCP servers connect in the background when a session starts. The first prompt waits up to 10 seconds for servers with direct tools.
|
|
84
|
+
- Codemode waits for the MCP namespaces a script names; `searchTools()` and `ALL_TOOLS` require all enabled servers. Tool search and resource tools also wait for discovery.
|
|
85
|
+
- `/mcp` provides server management; `/mcp login`, `/mcp logout`, and `/mcp reconnect` accept an optional server name. Completion lists actions and eligible servers.
|
|
86
86
|
- Paused live-workflow resume and pickers bypass full workflow discovery.
|
|
87
87
|
- Autocomplete falls back to current/admin completions when lazy discovery fails.
|
|
88
88
|
|
|
89
|
-
Failed
|
|
89
|
+
Failed connections can be retried with `/mcp reconnect`; dropped MCP connections reconnect on the next call. Web-access batches with no successful items report a tool error; partial successes retain their completed items.
|
|
90
90
|
|
|
91
|
-
MCP
|
|
91
|
+
MCP `timeout` is an inactivity limit in seconds, not a total deadline: progress resets it. The default is 60 seconds. See [MCP servers](/mcp-servers) for native configuration, exposure, resources, OAuth, and shell commands.
|
|
92
92
|
|
|
93
93
|
## Interactive callback isolation
|
|
94
94
|
|
|
@@ -103,7 +103,7 @@ The first is a remote custom UI. While an engine-owned `ctx.ui.custom()` compone
|
|
|
103
103
|
- A component mounted with `handlesCtrlC: true` receives the press and keeps its own Skip, Close, or cancel binding. If that same component is still holding input on the next press, that press closes it, so a declared component cannot trap the keyboard either.
|
|
104
104
|
- A component that did not declare it is closed by the first press, through the ordinary close path: its `ctx.ui.custom()` promise resolves with `undefined`, the child is told the component closed, the editor comes back, and the engine keeps running — including any other component that generation has mounted below or above this one.
|
|
105
105
|
|
|
106
|
-
Declare `handlesCtrlC` whenever your component's hint row offers `ctrl+c` for anything. This is a migration for existing components: an extension that already bound Ctrl+C keeps that binding only by adding the option. The bundled workflow surfaces
|
|
106
|
+
Declare `handlesCtrlC` whenever your component's hint row offers `ctrl+c` for anything. This is a migration for existing components: an extension that already bound Ctrl+C keeps that binding only by adding the option. The bundled workflow surfaces declare it. Native host selectors, dialogs, input forms, session pickers, and unrelated native overlays are unaffected: they keep Ctrl+C as their own cancel.
|
|
107
107
|
|
|
108
108
|
```typescript
|
|
109
109
|
await ctx.ui.custom<string | undefined>(
|
|
@@ -614,7 +614,7 @@ Moved to [Extension API reference](/extensions/api-reference#pi-unregisterprovid
|
|
|
614
614
|
|
|
615
615
|
### pi.registerMcpServer(name, config)
|
|
616
616
|
|
|
617
|
-
Contribute an MCP server computed at runtime from the factory or `session_start
|
|
617
|
+
Contribute an MCP server computed at runtime from the factory or `session_start`, using the native `mcpServers` entry shape. Registered servers connect like file-configured servers and appear in `/mcp` with the extension as their source. File-configured servers take precedence; enabled-state and exposure changes to registered servers apply only to the session. Shell `atomic mcp` commands do not load extensions. Provider-token authentication is allowed for extension registrations and global configuration, but not project configuration or package manifests. See [MCP servers](/mcp-servers) and [Extension API reference](/extensions/api-reference#pi-registermcpserver-name-config).
|
|
618
618
|
|
|
619
619
|
## State Management
|
|
620
620
|
|