@bastani/atomic 0.9.10 → 0.9.11-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/builtin/cursor/CHANGELOG.md +6 -0
  3. package/dist/builtin/cursor/package.json +3 -3
  4. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  5. package/dist/builtin/intercom/package.json +3 -3
  6. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  7. package/dist/builtin/mcp/package.json +3 -3
  8. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  9. package/dist/builtin/subagents/package.json +4 -4
  10. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  11. package/dist/builtin/web-access/package.json +2 -2
  12. package/dist/builtin/workflows/CHANGELOG.md +23 -0
  13. package/dist/builtin/workflows/README.md +8 -3
  14. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +1 -1
  15. package/dist/builtin/workflows/package.json +2 -2
  16. package/dist/builtin/workflows/src/durable/backend.ts +2 -2
  17. package/dist/builtin/workflows/src/durable/child-primitive.ts +3 -0
  18. package/dist/builtin/workflows/src/durable/completed-catalog.ts +182 -33
  19. package/dist/builtin/workflows/src/durable/completed-inspection.ts +9 -4
  20. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +173 -0
  21. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +36 -12
  22. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +31 -8
  23. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +9 -3
  24. package/dist/builtin/workflows/src/durable/factory.ts +35 -6
  25. package/dist/builtin/workflows/src/durable/local-command.ts +11 -2
  26. package/dist/builtin/workflows/src/durable/resume-runtime.ts +6 -2
  27. package/dist/builtin/workflows/src/durable/stage-primitive.ts +48 -10
  28. package/dist/builtin/workflows/src/durable/types.ts +11 -0
  29. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +9 -9
  30. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +89 -0
  31. package/dist/builtin/workflows/src/engine/run.ts +18 -16
  32. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +14 -2
  33. package/dist/builtin/workflows/src/extension/public-types.ts +3 -4
  34. package/dist/builtin/workflows/src/extension/render-call.ts +4 -0
  35. package/dist/builtin/workflows/src/extension/render-result.ts +31 -1
  36. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
  37. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +5 -2
  38. package/dist/builtin/workflows/src/extension/workflow-schema.ts +3 -2
  39. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +1 -0
  40. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +88 -2
  41. package/dist/builtin/workflows/src/extension/workflow-tool.ts +13 -0
  42. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +3 -0
  43. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +6 -3
  44. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +2 -2
  45. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +4 -1
  46. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +2 -3
  47. package/dist/cli/args.d.ts.map +1 -1
  48. package/dist/cli/args.js +2 -0
  49. package/dist/cli/args.js.map +1 -1
  50. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  51. package/dist/core/agent-session-compaction.js +7 -1
  52. package/dist/core/agent-session-compaction.js.map +1 -1
  53. package/dist/core/agent-session-events.d.ts.map +1 -1
  54. package/dist/core/agent-session-events.js +2 -1
  55. package/dist/core/agent-session-events.js.map +1 -1
  56. package/dist/core/agent-session-retry.d.ts.map +1 -1
  57. package/dist/core/agent-session-retry.js +7 -0
  58. package/dist/core/agent-session-retry.js.map +1 -1
  59. package/dist/core/agent-session-runtime.d.ts +13 -0
  60. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  61. package/dist/core/agent-session-runtime.js +12 -0
  62. package/dist/core/agent-session-runtime.js.map +1 -1
  63. package/dist/core/agent-session-services.d.ts.map +1 -1
  64. package/dist/core/agent-session-services.js +3 -0
  65. package/dist/core/agent-session-services.js.map +1 -1
  66. package/dist/core/agent-session-tree.d.ts.map +1 -1
  67. package/dist/core/agent-session-tree.js +4 -1
  68. package/dist/core/agent-session-tree.js.map +1 -1
  69. package/dist/core/agent-session-types.d.ts +15 -0
  70. package/dist/core/agent-session-types.d.ts.map +1 -1
  71. package/dist/core/agent-session-types.js.map +1 -1
  72. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  73. package/dist/core/atomic-guide-command.js +2 -0
  74. package/dist/core/atomic-guide-command.js.map +1 -1
  75. package/dist/core/auth-storage-backends.d.ts +4 -0
  76. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  77. package/dist/core/auth-storage-backends.js +48 -3
  78. package/dist/core/auth-storage-backends.js.map +1 -1
  79. package/dist/core/auth-storage.d.ts.map +1 -1
  80. package/dist/core/auth-storage.js +27 -11
  81. package/dist/core/auth-storage.js.map +1 -1
  82. package/dist/core/codex-errors.d.ts +3 -0
  83. package/dist/core/codex-errors.d.ts.map +1 -0
  84. package/dist/core/codex-errors.js +12 -0
  85. package/dist/core/codex-errors.js.map +1 -0
  86. package/dist/core/compaction/branch-summarization.d.ts +5 -1
  87. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  88. package/dist/core/compaction/branch-summarization.js +7 -8
  89. package/dist/core/compaction/branch-summarization.js.map +1 -1
  90. package/dist/core/compaction/compaction-runner.d.ts +3 -1
  91. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  92. package/dist/core/compaction/compaction-runner.js +6 -1
  93. package/dist/core/compaction/compaction-runner.js.map +1 -1
  94. package/dist/core/compaction/range-planner.d.ts +3 -0
  95. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  96. package/dist/core/compaction/range-planner.js +2 -1
  97. package/dist/core/compaction/range-planner.js.map +1 -1
  98. package/dist/core/model-registry.js +2 -2
  99. package/dist/core/model-registry.js.map +1 -1
  100. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  101. package/dist/core/model-resolver-defaults.js +2 -0
  102. package/dist/core/model-resolver-defaults.js.map +1 -1
  103. package/dist/core/prompt-templates.d.ts +1 -0
  104. package/dist/core/prompt-templates.d.ts.map +1 -1
  105. package/dist/core/prompt-templates.js +6 -4
  106. package/dist/core/prompt-templates.js.map +1 -1
  107. package/dist/core/remote-catalog-provider.d.ts +1 -1
  108. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  109. package/dist/core/remote-catalog-provider.js +25 -6
  110. package/dist/core/remote-catalog-provider.js.map +1 -1
  111. package/dist/core/sdk-exports.d.ts +1 -1
  112. package/dist/core/sdk-exports.d.ts.map +1 -1
  113. package/dist/core/sdk-exports.js.map +1 -1
  114. package/dist/core/sdk.d.ts.map +1 -1
  115. package/dist/core/sdk.js +4 -1
  116. package/dist/core/sdk.js.map +1 -1
  117. package/dist/core/session-manager-core.d.ts +1 -0
  118. package/dist/core/session-manager-core.d.ts.map +1 -1
  119. package/dist/core/session-manager-core.js +7 -4
  120. package/dist/core/session-manager-core.js.map +1 -1
  121. package/dist/core/session-manager-validation.d.ts.map +1 -1
  122. package/dist/core/session-manager-validation.js +3 -16
  123. package/dist/core/session-manager-validation.js.map +1 -1
  124. package/dist/core/slash-commands.js +1 -1
  125. package/dist/core/slash-commands.js.map +1 -1
  126. package/dist/core/summarization-retry.d.ts +11 -0
  127. package/dist/core/summarization-retry.d.ts.map +1 -0
  128. package/dist/core/summarization-retry.js +21 -0
  129. package/dist/core/summarization-retry.js.map +1 -0
  130. package/dist/core/tools/read.js +1 -1
  131. package/dist/core/tools/read.js.map +1 -1
  132. package/dist/index.d.ts +1 -1
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js.map +1 -1
  135. package/dist/main.d.ts.map +1 -1
  136. package/dist/main.js +2 -0
  137. package/dist/main.js.map +1 -1
  138. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  139. package/dist/modes/interactive/components/chat-session-host-events.js +16 -0
  140. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  141. package/dist/modes/interactive/components/footer.js +2 -2
  142. package/dist/modes/interactive/components/footer.js.map +1 -1
  143. package/dist/modes/interactive/interactive-agent-events.js +6 -0
  144. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  145. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -1
  146. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  147. package/dist/modes/interactive/interactive-auth-routing.js +10 -5
  148. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  149. package/dist/modes/interactive/interactive-autocomplete.js +12 -2
  150. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  151. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +13 -0
  152. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
  153. package/dist/modes/interactive/interactive-model-catalog-startup.js +24 -0
  154. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
  155. package/dist/modes/interactive/interactive-model-routing.js +4 -3
  156. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  157. package/dist/modes/interactive/interactive-queueing.js +3 -2
  158. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  159. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  160. package/dist/modes/interactive/interactive-startup.js +4 -7
  161. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  162. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
  163. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
  164. package/dist/modes/interactive/interactive-summarization-retry-events.js +40 -0
  165. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
  166. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +3 -1
  167. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  168. package/dist/modes/interactive-engine/extension-ui-bridge.js +6 -0
  169. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  170. package/dist/modes/interactive-engine/isolated-runtime.d.ts +4 -5
  171. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  172. package/dist/modes/interactive-engine/isolated-runtime.js +14 -24
  173. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  174. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +15 -0
  175. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -0
  176. package/dist/modes/interactive-engine/remote-model-catalog.js +67 -0
  177. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -0
  178. package/dist/modes/rpc/rpc-client-api.d.ts +9 -1
  179. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  180. package/dist/modes/rpc/rpc-client-api.js +12 -0
  181. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  182. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  183. package/dist/modes/rpc/rpc-command-handler.js +35 -0
  184. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  185. package/dist/modes/rpc/rpc-types.d.ts +78 -7
  186. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  187. package/dist/modes/rpc/rpc-types.js.map +1 -1
  188. package/docs/docs.json +9 -1
  189. package/docs/extensions.md +3 -3
  190. package/docs/json.md +7 -1
  191. package/docs/models/artificial-analysis-index.md +82 -0
  192. package/docs/models/model-selection.md +63 -0
  193. package/docs/models/pareto-efficiency.md +64 -0
  194. package/docs/prompt-templates.md +1 -0
  195. package/docs/providers.md +9 -1
  196. package/docs/quickstart.md +1 -1
  197. package/docs/rpc.md +76 -0
  198. package/docs/sdk.md +3 -0
  199. package/docs/tui.md +2 -2
  200. package/docs/workflows.md +26 -13
  201. package/examples/extensions/README.md +1 -1
  202. package/examples/extensions/sandbox/package-lock.json +3 -3
  203. package/npm-shrinkwrap.json +37 -37
  204. package/package.json +7 -7
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\nexport { type Args, parseArgs } from \"./cli/args.ts\";\n// Config paths\nexport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\tCONFIG_DIR_NAME,\n\tCONFIG_DIR_NAMES,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetBundledInteractiveAssetPath,\n\tgetChangelogPath,\n\tgetDocsPath,\n\tgetExamplesPath,\n\tgetExportTemplateDir,\n\tgetInteractiveAssetsDir,\n\tgetLegacyAgentDir,\n\tgetPackageDir,\n\tgetPackageJsonPath,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetReadmePath,\n\tgetThemesDir,\n\tgetEnvNames,\n\tgetEnvValue,\n\tENV_CODEX_FAST_MODE,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n\tisBunBinary,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport {\n parseFlattenedKeyPath,\n reconstructFlattenedKeys,\n unflattenArgumentsWithSchema,\n} from \"./core/flattened-tool-arguments.ts\";\nexport { StringEnum, type StringEnumOptions } from \"./core/typebox-compat.ts\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\nimport \"./core/oauth-compat.js\";\nexport {\n\tgetOAuthApiKey,\n\tgetOAuthProvider,\n\tgetOAuthProviders,\n\ttype LegacyOAuthProvider,\n\ttype OAuthProviderDescriptor,\n\tregisterOAuthProvider,\n\tresetOAuthProviders,\n} from \"./core/oauth-provider-bridge.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactedTranscript,\n\ttype CompactionPlanOptions,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n\ttype LineRange,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tserializeConversation,\n\tserializeConversationForCompaction,\n\tshouldCompact,\n} from \"./core/compaction/index.ts\";\nexport {\n\tCODEX_FAST_MODE_SERVICE_TIER,\n\tformatCodexFastModeModelLabel,\n\tgetCodexFastModeScope,\n\thasSupportedCodexFastModeModel,\n\tisCodexFastModeEnabledForScope,\n\tisCodexFastModeCandidateModelId,\n\tisCodexFastModeSupportedModel,\n\tisCodexFastModeSupportedProvider,\n\tshouldApplyCodexFastMode,\n\tshouldApplyCodexFastModeForScope,\n\ttype CodexFastModeResolvedSettings,\n\ttype CodexFastModeScope,\n} from \"./core/codex-fast-mode.ts\";\nexport {\n\tformatContextWindow,\n\tgetEffectiveInputBudget,\n\tgetModelDefaultContextWindow,\n\tgetSupportedContextWindows,\n\tnormalizeContextWindowOptions,\n\tparseContextWindowValue,\n\tselectContextWindow,\n\tvalidateContextWindowValue,\n\twithContextWindowOptions,\n\ttype ContextWindowParseResult,\n\ttype ContextWindowSelection,\n\ttype ContextWindowSelectionError,\n\ttype ContextWindowSelectionOptions,\n} from \"./core/context-window.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\nexport { areExperimentalFeaturesEnabled } from \"./core/experimental.ts\";\nexport {\n\trunCallback,\n\trunSynchronousCallback,\n\ttype CallbackActivityDescriptor,\n\ttype CallbackActivityKind,\n} from \"./core/callback-activity.ts\";\nexport * from \"./index-extensions.js\";\n// Builtin tool definitions reusable by first-party extensions (e.g. workflows\n// invoking the structured ask_user_question UI deterministically).\nexport { createAskUserQuestionToolDefinition } from \"./core/tools/index.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type { DefaultProjectTrust } from \"./core/settings-manager.ts\";\nexport {\n\thasProjectTrustInputs,\n\thasTrustRequiringProjectResources,\n\tTRUST_REQUIRING_PROJECT_CONFIG_RESOURCES,\n\ttype ProjectTrustDecision,\n\tProjectTrustStore,\n\ttype ProjectTrustStoreEntry,\n\ttype ProjectTrustUpdate,\n} from \"./core/trust-manager.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type {\n\tDefaultResourceLoaderInheritanceSnapshot,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n} from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype CreateAgentSessionFromServicesOptions,\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\ttype CreateAgentSessionRuntimeFactory,\n\ttype CreateAgentSessionRuntimeResult,\n\ttype CreateAgentSessionServicesOptions,\n\t// Factory\n\tcreateAgentSession,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionRuntime,\n\tcreateAgentSessionServices,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateSearchTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateStructuredOutputCapture,\n\tSTRUCTURED_OUTPUT_TOOL_NAME,\n\tcreateStructuredOutputTool,\n\tcreateWriteTool,\n\ttype JsonObject,\n\ttype JsonPrimitive,\n\ttype JsonValue,\n\ttype PromptTemplate,\n\ttype StructuredOutputCapture,\n\ttype StructuredOutputFileCapture,\n\ttype StructuredOutputToolOptions,\n} from \"./core/sdk.ts\";\nexport {\n\tWORKFLOW_SESSION_METADATA_ENV,\n\tworkflowSessionMetadataFromEnv,\n} from \"./core/session-manager-classification.ts\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionBoundaryEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype SessionWorkflowMetadata,\n\ttype SessionTreeNode,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype SettingsManagerCreateOptions,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateSearchToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLsToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tformatSize,\n\ttype SearchToolDetails,\n\ttype SearchToolInput,\n\ttype SearchToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n} from \"./core/tools/index.ts\";\nexport { type EditDiffResult, generateDiffString, generateUnifiedPatch } from \"./core/tools/edit-diff.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\n\ttype RpcContextWindowInfo,\n\ttype RpcEvent,\n\ttype RpcEventListener,\n\ttype RpcExtensionUIRequest,\n\ttype RpcExtensionUIResponse,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\trunPrintMode,\n\trunRpcMode,\n} from \"./modes/index.ts\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tchatEntriesFromAgentMessages,\n\t// Internal host seam for bundled workflow stage chat; not yet a stable extension API.\n\tChatSessionHost,\n\ttype ChatSessionHostBashRequest,\n\ttype ChatSessionHostCommands,\n\ttype ChatSessionHostEntry,\n\ttype ChatSessionHostOpts,\n\ttype ChatSessionHostStyle,\n\tChatTranscriptComponent,\n\tLiveChatEntriesController,\n\trenderChatMessageEntry,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tBranchSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tUsageMeterComponent,\n\tkeyHint,\n\tkeyHintIfBound,\n\tkeyText,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport { createGitEnvironment, GIT_LOCAL_ENV_VARS } from \"./utils/git-env.ts\";\nexport {\n\tisSafeFsWatchPathError,\n\tisUnsafeWindowsShortPath,\n\tresolveNativeWatchPath,\n\tSAFE_FS_WATCH_CANONICALIZATION_FAILED,\n\tSAFE_FS_WATCH_UNSAFE_WINDOWS_SHORT_PATH,\n\twatchWithErrorHandler,\n\ttype SafeFsWatchErrorCode,\n\ttype SafeFsWatchPathError,\n} from \"./utils/fs-watch.ts\";\nexport { convertToPng } from \"./utils/image-convert.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Core session management\n\nexport { type Args, parseArgs } from \"./cli/args.ts\";\n// Config paths\nexport {\n\tAPP_NAME,\n\tAPP_TITLE,\n\tCONFIG_DIR_NAME,\n\tCONFIG_DIR_NAMES,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetBundledInteractiveAssetPath,\n\tgetChangelogPath,\n\tgetDocsPath,\n\tgetExamplesPath,\n\tgetExportTemplateDir,\n\tgetInteractiveAssetsDir,\n\tgetLegacyAgentDir,\n\tgetPackageDir,\n\tgetPackageJsonPath,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetReadmePath,\n\tgetThemesDir,\n\tgetEnvNames,\n\tgetEnvValue,\n\tENV_CODEX_FAST_MODE,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n\tisBunBinary,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n} from \"./config.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport {\n parseFlattenedKeyPath,\n reconstructFlattenedKeys,\n unflattenArgumentsWithSchema,\n} from \"./core/flattened-tool-arguments.ts\";\nexport { StringEnum, type StringEnumOptions } from \"./core/typebox-compat.ts\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.ts\";\n// Auth and model registry\nexport {\n\ttype ApiKeyCredential,\n\ttype AuthCredential,\n\ttype AuthStatus,\n\tAuthStorage,\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n\ttype OAuthCredential,\n} from \"./core/auth-storage.ts\";\nimport \"./core/oauth-compat.js\";\nexport {\n\tgetOAuthApiKey,\n\tgetOAuthProvider,\n\tgetOAuthProviders,\n\ttype LegacyOAuthProvider,\n\ttype OAuthProviderDescriptor,\n\tregisterOAuthProvider,\n\tresetOAuthProviders,\n} from \"./core/oauth-provider-bridge.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactedTranscript,\n\ttype CompactionPlanOptions,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n\ttype LineRange,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgetLastAssistantUsage,\n\tprepareBranchEntries,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tserializeConversation,\n\tserializeConversationForCompaction,\n\tshouldCompact,\n} from \"./core/compaction/index.ts\";\nexport {\n\tCODEX_FAST_MODE_SERVICE_TIER,\n\tformatCodexFastModeModelLabel,\n\tgetCodexFastModeScope,\n\thasSupportedCodexFastModeModel,\n\tisCodexFastModeEnabledForScope,\n\tisCodexFastModeCandidateModelId,\n\tisCodexFastModeSupportedModel,\n\tisCodexFastModeSupportedProvider,\n\tshouldApplyCodexFastMode,\n\tshouldApplyCodexFastModeForScope,\n\ttype CodexFastModeResolvedSettings,\n\ttype CodexFastModeScope,\n} from \"./core/codex-fast-mode.ts\";\nexport {\n\tformatContextWindow,\n\tgetEffectiveInputBudget,\n\tgetModelDefaultContextWindow,\n\tgetSupportedContextWindows,\n\tnormalizeContextWindowOptions,\n\tparseContextWindowValue,\n\tselectContextWindow,\n\tvalidateContextWindowValue,\n\twithContextWindowOptions,\n\ttype ContextWindowParseResult,\n\ttype ContextWindowSelection,\n\ttype ContextWindowSelectionError,\n\ttype ContextWindowSelectionOptions,\n} from \"./core/context-window.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.ts\";\nexport { areExperimentalFeaturesEnabled } from \"./core/experimental.ts\";\nexport {\n\trunCallback,\n\trunSynchronousCallback,\n\ttype CallbackActivityDescriptor,\n\ttype CallbackActivityKind,\n} from \"./core/callback-activity.ts\";\nexport * from \"./index-extensions.js\";\n// Builtin tool definitions reusable by first-party extensions (e.g. workflows\n// invoking the structured ask_user_question UI deterministically).\nexport { createAskUserQuestionToolDefinition } from \"./core/tools/index.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport type { DefaultProjectTrust } from \"./core/settings-manager.ts\";\nexport {\n\thasProjectTrustInputs,\n\thasTrustRequiringProjectResources,\n\tTRUST_REQUIRING_PROJECT_CONFIG_RESOURCES,\n\ttype ProjectTrustDecision,\n\tProjectTrustStore,\n\ttype ProjectTrustStoreEntry,\n\ttype ProjectTrustUpdate,\n} from \"./core/trust-manager.ts\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type {\n\tDefaultResourceLoaderInheritanceSnapshot,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n} from \"./core/resource-loader.ts\";\nexport { DefaultResourceLoader, loadProjectContextFiles } from \"./core/resource-loader.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype CreateAgentSessionFromServicesOptions,\n\ttype CreateAgentSessionOptions,\n\ttype CreateAgentSessionResult,\n\ttype CreateAgentSessionRuntimeFactory,\n\ttype CreateAgentSessionRuntimeResult,\n\ttype CreateAgentSessionServicesOptions,\n\t// Factory\n\tcreateAgentSession,\n\tcreateAgentSessionFromServices,\n\tcreateAgentSessionRuntime,\n\tcreateAgentSessionServices,\n\tcreateBashTool,\n\t// Tool factories (for custom cwd)\n\tcreateCodingTools,\n\tcreateEditTool,\n\tcreateFindTool,\n\tcreateSearchTool,\n\tcreateLsTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateStructuredOutputCapture,\n\tSTRUCTURED_OUTPUT_TOOL_NAME,\n\tcreateStructuredOutputTool,\n\tcreateWriteTool,\n\ttype JsonObject,\n\ttype JsonPrimitive,\n\ttype JsonValue,\n\ttype MessageEndEvent,\n\ttype MessageStartEvent,\n\ttype MessageUpdateEvent,\n\ttype PromptTemplate,\n\ttype StructuredOutputCapture,\n\ttype StructuredOutputFileCapture,\n\ttype StructuredOutputToolOptions,\n\ttype ToolExecutionEndEvent,\n\ttype ToolExecutionStartEvent,\n\ttype ToolExecutionUpdateEvent,\n} from \"./core/sdk.ts\";\nexport {\n\tWORKFLOW_SESSION_METADATA_ENV,\n\tworkflowSessionMetadataFromEnv,\n} from \"./core/session-manager-classification.ts\";\nexport {\n\ttype BranchSummaryEntry,\n\tbuildSessionContext,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionBoundaryEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\tparseSessionEntries,\n\ttype SessionContext,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfo,\n\ttype SessionInfoEntry,\n\tSessionManager,\n\ttype SessionMessageEntry,\n\ttype SessionWorkflowMetadata,\n\ttype SessionTreeNode,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\tSettingsManager,\n\ttype SettingsManagerCreateOptions,\n} from \"./core/settings-manager.ts\";\n// Skills\nexport {\n\tformatSkillsForPrompt,\n\ttype LoadSkillsFromDirOptions,\n\ttype LoadSkillsResult,\n\tloadSkills,\n\tloadSkillsFromDir,\n\ttype Skill,\n\ttype SkillFrontmatter,\n} from \"./core/skills.ts\";\nexport { createSyntheticSourceInfo } from \"./core/source-info.ts\";\n// Tools\nexport {\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateSearchToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLsToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tformatSize,\n\ttype SearchToolDetails,\n\ttype SearchToolInput,\n\ttype SearchToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n} from \"./core/tools/index.ts\";\nexport { type EditDiffResult, generateDiffString, generateUnifiedPatch } from \"./core/tools/edit-diff.ts\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\n\ttype RpcContextWindowInfo,\n\ttype RpcEvent,\n\ttype RpcEventListener,\n\ttype RpcExtensionUIRequest,\n\ttype RpcExtensionUIResponse,\n\ttype RpcResponse,\n\ttype RpcSessionState,\n\trunPrintMode,\n\trunRpcMode,\n} from \"./modes/index.ts\";\n// UI components for extensions\nexport {\n\tArminComponent,\n\tAssistantMessageComponent,\n\tBashExecutionComponent,\n\tBorderedLoader,\n\tchatEntriesFromAgentMessages,\n\t// Internal host seam for bundled workflow stage chat; not yet a stable extension API.\n\tChatSessionHost,\n\ttype ChatSessionHostBashRequest,\n\ttype ChatSessionHostCommands,\n\ttype ChatSessionHostEntry,\n\ttype ChatSessionHostOpts,\n\ttype ChatSessionHostStyle,\n\tChatTranscriptComponent,\n\tLiveChatEntriesController,\n\trenderChatMessageEntry,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tBranchSummaryMessageComponent,\n\tCustomEditor,\n\tCustomMessageComponent,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tUsageMeterComponent,\n\tkeyHint,\n\tkeyHintIfBound,\n\tkeyText,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderDiff,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n\ttype VisualTruncateResult,\n} from \"./modes/interactive/components/index.ts\";\n// Theme utilities for custom tools and extensions\nexport {\n\tgetLanguageFromPath,\n\tgetMarkdownTheme,\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\thighlightCode,\n\tinitTheme,\n\tTheme,\n\ttype ThemeColor,\n} from \"./modes/interactive/theme/theme.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.ts\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport { createGitEnvironment, GIT_LOCAL_ENV_VARS } from \"./utils/git-env.ts\";\nexport {\n\tisSafeFsWatchPathError,\n\tisUnsafeWindowsShortPath,\n\tresolveNativeWatchPath,\n\tSAFE_FS_WATCH_CANONICALIZATION_FAILED,\n\tSAFE_FS_WATCH_UNSAFE_WINDOWS_SHORT_PATH,\n\twatchWithErrorHandler,\n\ttype SafeFsWatchErrorCode,\n\ttype SafeFsWatchPathError,\n} from \"./utils/fs-watch.ts\";\nexport { convertToPng } from \"./utils/image-convert.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\n// Shell utilities\nexport { getShellConfig } from \"./utils/shell.ts\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAAC,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACvH,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,iBA8c/D"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAAC,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACvH,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,iBA+c/D"}
package/dist/main.js CHANGED
@@ -392,6 +392,8 @@ export async function main(args, options) {
392
392
  process.exit(1);
393
393
  }
394
394
  if (appMode === "rpc") {
395
+ if (!offlineMode)
396
+ void modelRegistry.refresh().catch(() => { });
395
397
  printTimings();
396
398
  await runRpcMode(runtime);
397
399
  }
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 chalk from \"chalk\";\nimport { parseArgs, printHelp } from \"./cli/args.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport { ENV_OFFLINE, ENV_SESSION_DIR, ENV_SKIP_VERSION_CHECK, ENV_STARTUP_BENCHMARK, expandTildePath, getAgentDir, getEnvValue, setEnvValue, VERSION } from \"./config.ts\";\nimport type { CreateAgentSessionRuntimeFactory } from \"./core/agent-session-runtime.ts\";\nimport { type AgentSessionRuntimeDiagnostic, createAgentSessionFromServices, createAgentSessionServices } from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage } from \"./core/auth-storage.ts\";\nimport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nimport { configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { resolveModelScope, resolveModelScopeWithDiagnostics } from \"./core/model-resolver.ts\";\nimport { restoreStdout, takeOverStdout, writeRawStdout } from \"./core/output-guard.ts\";\nimport { resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { getMissingSessionCwdIssue, MissingSessionCwdError } from \"./core/session-cwd.ts\";\nimport { SessionManager } from \"./core/session-manager.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 { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { type AppMode, isPlainRuntimeMetadataCommand, isReadOnlyRuntimeMetadataCommand, prepareInitialMessage, resolveAppMode, resolveCliPaths, resolveExcludedToolsForAppMode, toPrintOutputMode } from \"./main-app-mode.ts\";\nimport { type EarlyInputCapture, startEarlyInputCapture } from \"./main-early-input.ts\";\nimport { computeDeferExtensions, computeStartupInputCaptureEnabled, formatScopedModelList } from \"./main-deferred-startup.ts\";\nimport { applyInheritedWorkflowSessionClassification, createSessionManager, promptForMissingSessionCwd, validateForkFlags, validateSessionIdFlags } from \"./main-session.ts\";\nimport { buildSessionOptions } from \"./main-session-options.ts\";\nimport { collectSettingsDiagnostics, drainProcessStdio, isTruthyEnvFlag, readPipedStdin, reportDiagnostics } from \"./main-stdio.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { startInteractiveEngineLiveness } from \"./modes/interactive-engine/engine-child-liveness.ts\";\nimport { createRuntimeForMode } from \"./modes/interactive-engine/create-isolated-runtime.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport type { MainOptions } from \"./main-types.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nexport type { AppMode } from \"./main-app-mode.ts\"; export { resolveExcludedToolsForAppMode } from \"./main-app-mode.ts\";\nexport type { MainOptions } from \"./main-types.ts\";\n\nexport async function main(args: string[], options?: MainOptions) {\n\tresetTimings();\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\n\tif (await handlePackageCommand(args, { extensionFactories: options?.extensionFactories })) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\n\tif (await handleConfigCommand(args, { extensionFactories: options?.extensionFactories })) {\n\t\treturn;\n\t}\n\n\tconst parsed = parseArgs(args);\n\tif (process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD === \"1\" && process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY) parsed.apiKey = process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY;\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 = appMode === \"interactive\" && !isPlainRuntimeMetadataCommand(parsed) && process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD !== \"1\";\n\tconst shouldTakeOverStdout = appMode !== \"interactive\";\n\tconst shouldRestoreStdoutForMetadata = isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\tif (process.env.ATOMIC_INTERACTIVE_ENGINE_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 cwd = process.cwd();\n\tconst agentDir = getAgentDir();\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 = parsed.projectTrustOverride ?? startupStoredProjectTrust ?? (!startupHasTrustInputs || startupDefaultProjectTrust === \"always\");\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions), resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates), resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tlet startupEarlyInputCapture: EarlyInputCapture | undefined = startEarlyInputCapture({ enabled: computeStartupInputCaptureEnabled({\n\t\tappMode, stdinIsTTY: process.stdin.isTTY === true, parsed, sessionCwd: cwd, projectTrustStore, resolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\tresolvedResourcePathCount: (resolvedSkillPaths?.length ?? 0) + (resolvedPromptTemplatePaths?.length ?? 0) + (resolvedThemePaths?.length ?? 0), deprecationWarningCount: 0,\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(); startupEarlyInputCapture = undefined;\n\t}\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: startupProjectTrusted });\n\treportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\"));\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(await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager));\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tstartupEarlyInputCapture?.consume(); startupEarlyInputCapture = 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 ?? getBuiltinPackagePaths();\n\tconst authStorage = AuthStorage.create();\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\tconst createRuntime: CreateAgentSessionRuntimeFactory = 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 = parsed.projectTrustOverride ?? cachedProjectTrust ?? storedProjectTrust ?? !hasTrustInputs;\n\t\tconst shouldResolveProjectTrust =\n\t\t\tparsed.projectTrustOverride === undefined && cachedProjectTrust === undefined && hasTrustInputs;\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: initialProjectTrusted });\n\t\tconst deferExtensions = isolateInteractiveHost ? false : computeDeferExtensions({\n\t\t\tappMode,\n\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\thelp: parsed.help,\n\t\t\tlistModels: parsed.listModels,\n\t\t\tshouldResolveProjectTrust,\n\t\t\tstoredProjectTrust,\n\t\t\tresolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\t\tresolvedResourcePathCount: (resolvedSkillPaths?.length ?? 0) + (resolvedPromptTemplatePaths?.length ?? 0) + (resolvedThemePaths?.length ?? 0),\n\t\t\thasSystemPromptInput: parsed.systemPrompt !== undefined || (parsed.appendSystemPrompt?.length ?? 0) > 0,\n\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t\tprovider: parsed.provider,\n\t\t\tmodel: parsed.model,\n\t\t});\n\t\tif (sessionStartEvent === undefined) {\n\t\t\tdeferredExtensionLoad = deferExtensions;\n\t\t\tstartupEarlyInputCapture ??= startEarlyInputCapture({ enabled: deferExtensions && deprecationWarnings.length === 0 });\n\t\t}\n\t\tconst getProjectTrustContext = () =>\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\tconst services = await createAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tauthStorage,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\textensionFlagValues: parsed.unknownFlags,\n\t\t\tresourceLoaderReloadOptions:\n\t\t\t\tdeferExtensions\n\t\t\t\t\t? { deferExtensions: true, deferResources: true }\n\t\t\t\t\t: shouldResolveProjectTrust || (resolvedExtensionPaths?.length ?? 0) > 0\n\t\t\t\t\t? {\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\trunMigrations(cwd, { projectTrusted: 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: `Trust extension source?\\n${source}\\n\\nThis allows Atomic to load project-local .atomic/.pi resources and .agents/skills from this -e source, including extensions and workflows that can execute code.`,\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 : options?.extensionFactories,\n\t\t\t},\n\t\t});\n\t\tconst { settingsManager, modelRegistry, resourceLoader } = services;\n\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t...services.diagnostics,\n\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t...resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\ttype: \"error\" as const,\n\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t})),\n\t\t];\n\t\tconst modelPatterns = isolateInteractiveHost ? undefined : (parsed.models ?? settingsManager.getEnabledModels());\n\t\tconst scopedModels =\n\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t? deferredExtensionLoad\n\t\t\t\t\t? (await resolveModelScopeWithDiagnostics(modelPatterns, modelRegistry)).scopedModels\n\t\t\t\t\t: await resolveModelScope(modelPatterns, modelRegistry)\n\t\t\t\t: [];\n\t\tconst sessionArgs = isolateInteractiveHost\n\t\t\t? { ...parsed, provider: undefined, model: undefined, apiKey: undefined, models: undefined } : parsed;\n\t\tconst {\n\t\t\toptions: sessionOptions,\n\t\t\tcliThinkingFromModel,\n\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t} = buildSessionOptions(\n\t\t\tsessionArgs,\n\t\t\tscopedModels,\n\t\t\tsessionManager.buildSessionContext().messages.length > 0,\n\t\t\tmodelRegistry,\n\t\t\tsettingsManager,\n\t\t);\n\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\n\t\tif (parsed.apiKey && !isolateInteractiveHost) {\n\t\t\tif (!sessionOptions.model) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t}\n\t\t}\n\n\t\tconst created = await createAgentSessionFromServices({\n\t\t\tservices,\n\t\t\tsessionManager,\n\t\t\tsessionStartEvent,\n\t\t\tmodel: sessionOptions.model,\n\t\t\tthinkingLevel: sessionOptions.thinkingLevel,\n\t\t\tcontextWindow: sessionOptions.contextWindow,\n\t\t\tcontextWindowStrict: sessionOptions.contextWindowStrict,\n\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\ttools: sessionOptions.tools,\n\t\t\texcludedTools: resolveExcludedToolsForAppMode(appMode, sessionOptions.excludedTools),\n\t\t\tnoTools: sessionOptions.noTools,\n\t\t\tcustomTools: sessionOptions.customTools,\n\t\t});\n\t\tif (created.contextWindowWarning) {\n\t\t\tdiagnostics.push({ type: \"warning\", message: created.contextWindowWarning });\n\t\t}\n\t\tif (created.contextWindowError) {\n\t\t\tdiagnostics.push({ type: \"error\", message: created.contextWindowError });\n\t\t}\n\n\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t}\n\t\tconst hasFatalDiagnostics = diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\t\tif (\n\t\t\tcreated.session.model &&\n\t\t\tparsed.contextWindow !== undefined &&\n\t\t\t!created.contextWindowError &&\n\t\t\t!hasFatalDiagnostics &&\n\t\t\t!isReadOnlyRuntimeMetadataCommand(parsed)\n\t\t) {\n\t\t\tcreated.session.setContextWindow(parsed.contextWindow, { persistDefault: true });\n\t\t}\n\n\t\treturn {\n\t\t\t...created,\n\t\t\tservices,\n\t\t\tdiagnostics,\n\t\t};\n\t};\n\ttime(\"createRuntimeFactory\");\n\tconst runtimeCreationSpan = startTimingSpan(\"createAgentSessionRuntime\");\n\tconst runtime = await createRuntimeForMode(createRuntime, sessionManager.getCwd(), agentDir, sessionManager, isolateInteractiveHost, (options?.extensionFactories?.length ?? 0) > 0, parsed, {\n\t\textensions: resolvedExtensionPaths, skills: resolvedSkillPaths, promptTemplates: resolvedPromptTemplatePaths, themes: resolvedThemePaths,\n\t});\n\tendTimingSpan(runtimeCreationSpan);\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRegistry, resourceLoader } = services;\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\n\tif (parsed.help) {\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\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\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tawait listModels(modelRegistry, 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(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\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\treportDiagnostics(runtime.diagnostics);\n\tif (runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\ttime(\"createAgentSession\");\n\n\tif (appMode !== \"interactive\" && !session.model) {\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\tprintTimings();\n\t\tawait runRpcMode(runtime);\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\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\tdeferredExtensionLoad,\n\t\t\tstartupInputCapture: startupEarlyInputCapture,\n\t\t\tdeferredModelScopePatterns: deferredExtensionLoad ? (parsed.models ?? settingsManager.getEnabledModels()) : 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 chalk from \"chalk\";\nimport { parseArgs, printHelp } from \"./cli/args.ts\";\nimport { listModels } from \"./cli/list-models.ts\";\nimport { createProjectTrustContext } from \"./cli/project-trust.ts\";\nimport { ENV_OFFLINE, ENV_SESSION_DIR, ENV_SKIP_VERSION_CHECK, ENV_STARTUP_BENCHMARK, expandTildePath, getAgentDir, getEnvValue, setEnvValue, VERSION } from \"./config.ts\";\nimport type { CreateAgentSessionRuntimeFactory } from \"./core/agent-session-runtime.ts\";\nimport { type AgentSessionRuntimeDiagnostic, createAgentSessionFromServices, createAgentSessionServices } from \"./core/agent-session-services.ts\";\nimport { formatNoModelsAvailableMessage } from \"./core/auth-guidance.ts\";\nimport { AuthStorage } from \"./core/auth-storage.ts\";\nimport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nimport { configureHttpDispatcher } from \"./core/http-dispatcher.ts\";\nimport { resolveModelScope, resolveModelScopeWithDiagnostics } from \"./core/model-resolver.ts\";\nimport { restoreStdout, takeOverStdout, writeRawStdout } from \"./core/output-guard.ts\";\nimport { resolveProjectTrusted } from \"./core/project-trust.ts\";\nimport { getMissingSessionCwdIssue, MissingSessionCwdError } from \"./core/session-cwd.ts\";\nimport { SessionManager } from \"./core/session-manager.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 { runMigrations, showDeprecationWarnings } from \"./migrations.ts\";\nimport { type AppMode, isPlainRuntimeMetadataCommand, isReadOnlyRuntimeMetadataCommand, prepareInitialMessage, resolveAppMode, resolveCliPaths, resolveExcludedToolsForAppMode, toPrintOutputMode } from \"./main-app-mode.ts\";\nimport { type EarlyInputCapture, startEarlyInputCapture } from \"./main-early-input.ts\";\nimport { computeDeferExtensions, computeStartupInputCaptureEnabled, formatScopedModelList } from \"./main-deferred-startup.ts\";\nimport { applyInheritedWorkflowSessionClassification, createSessionManager, promptForMissingSessionCwd, validateForkFlags, validateSessionIdFlags } from \"./main-session.ts\";\nimport { buildSessionOptions } from \"./main-session-options.ts\";\nimport { collectSettingsDiagnostics, drainProcessStdio, isTruthyEnvFlag, readPipedStdin, reportDiagnostics } from \"./main-stdio.ts\";\nimport { InteractiveMode, runPrintMode, runRpcMode } from \"./modes/index.ts\";\nimport { initTheme, stopThemeWatcher } from \"./modes/interactive/theme/theme.ts\";\nimport { startInteractiveEngineLiveness } from \"./modes/interactive-engine/engine-child-liveness.ts\";\nimport { createRuntimeForMode } from \"./modes/interactive-engine/create-isolated-runtime.ts\";\nimport { handleConfigCommand, handlePackageCommand } from \"./package-manager-cli.ts\";\nimport type { MainOptions } from \"./main-types.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nexport type { AppMode } from \"./main-app-mode.ts\"; export { resolveExcludedToolsForAppMode } from \"./main-app-mode.ts\";\nexport type { MainOptions } from \"./main-types.ts\";\n\nexport async function main(args: string[], options?: MainOptions) {\n\tresetTimings();\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\n\tif (await handlePackageCommand(args, { extensionFactories: options?.extensionFactories })) {\n\t\tconst exitCode = process.exitCode ?? 0;\n\t\tawait drainProcessStdio();\n\t\tprocess.exit(exitCode);\n\t\treturn;\n\t}\n\n\tif (await handleConfigCommand(args, { extensionFactories: options?.extensionFactories })) {\n\t\treturn;\n\t}\n\n\tconst parsed = parseArgs(args);\n\tif (process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD === \"1\" && process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY) parsed.apiKey = process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY;\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 = appMode === \"interactive\" && !isPlainRuntimeMetadataCommand(parsed) && process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD !== \"1\";\n\tconst shouldTakeOverStdout = appMode !== \"interactive\";\n\tconst shouldRestoreStdoutForMetadata = isPlainRuntimeMetadataCommand(parsed);\n\tif (shouldTakeOverStdout) {\n\t\ttakeOverStdout();\n\t}\n\tif (process.env.ATOMIC_INTERACTIVE_ENGINE_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 cwd = process.cwd();\n\tconst agentDir = getAgentDir();\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 = parsed.projectTrustOverride ?? startupStoredProjectTrust ?? (!startupHasTrustInputs || startupDefaultProjectTrust === \"always\");\n\tconst resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions), resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);\n\tconst resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates), resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);\n\tlet startupEarlyInputCapture: EarlyInputCapture | undefined = startEarlyInputCapture({ enabled: computeStartupInputCaptureEnabled({\n\t\tappMode, stdinIsTTY: process.stdin.isTTY === true, parsed, sessionCwd: cwd, projectTrustStore, resolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\tresolvedResourcePathCount: (resolvedSkillPaths?.length ?? 0) + (resolvedPromptTemplatePaths?.length ?? 0) + (resolvedThemePaths?.length ?? 0), deprecationWarningCount: 0,\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(); startupEarlyInputCapture = undefined;\n\t}\n\n\tconst startupSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: startupProjectTrusted });\n\treportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, \"startup session lookup\"));\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(await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager));\n\tconst missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);\n\tif (missingSessionCwdIssue) {\n\t\tstartupEarlyInputCapture?.consume(); startupEarlyInputCapture = 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 ?? getBuiltinPackagePaths();\n\tconst authStorage = AuthStorage.create();\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\tconst createRuntime: CreateAgentSessionRuntimeFactory = 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 = parsed.projectTrustOverride ?? cachedProjectTrust ?? storedProjectTrust ?? !hasTrustInputs;\n\t\tconst shouldResolveProjectTrust =\n\t\t\tparsed.projectTrustOverride === undefined && cachedProjectTrust === undefined && hasTrustInputs;\n\t\tconst runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted: initialProjectTrusted });\n\t\tconst deferExtensions = isolateInteractiveHost ? false : computeDeferExtensions({\n\t\t\tappMode,\n\t\t\tstdinIsTTY: process.stdin.isTTY === true,\n\t\t\thasSessionStartEvent: sessionStartEvent !== undefined,\n\t\t\thelp: parsed.help,\n\t\t\tlistModels: parsed.listModels,\n\t\t\tshouldResolveProjectTrust,\n\t\t\tstoredProjectTrust,\n\t\t\tresolvedExtensionPathCount: resolvedExtensionPaths?.length ?? 0,\n\t\t\tresolvedResourcePathCount: (resolvedSkillPaths?.length ?? 0) + (resolvedPromptTemplatePaths?.length ?? 0) + (resolvedThemePaths?.length ?? 0),\n\t\t\thasSystemPromptInput: parsed.systemPrompt !== undefined || (parsed.appendSystemPrompt?.length ?? 0) > 0,\n\t\t\tunknownFlagCount: parsed.unknownFlags.size,\n\t\t\tprovider: parsed.provider,\n\t\t\tmodel: parsed.model,\n\t\t});\n\t\tif (sessionStartEvent === undefined) {\n\t\t\tdeferredExtensionLoad = deferExtensions;\n\t\t\tstartupEarlyInputCapture ??= startEarlyInputCapture({ enabled: deferExtensions && deprecationWarnings.length === 0 });\n\t\t}\n\t\tconst getProjectTrustContext = () =>\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\tconst services = await createAgentSessionServices({\n\t\t\tcwd,\n\t\t\tagentDir,\n\t\t\tauthStorage,\n\t\t\tsettingsManager: runtimeSettingsManager,\n\t\t\textensionFlagValues: parsed.unknownFlags,\n\t\t\tresourceLoaderReloadOptions:\n\t\t\t\tdeferExtensions\n\t\t\t\t\t? { deferExtensions: true, deferResources: true }\n\t\t\t\t\t: shouldResolveProjectTrust || (resolvedExtensionPaths?.length ?? 0) > 0\n\t\t\t\t\t? {\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\trunMigrations(cwd, { projectTrusted: 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: `Trust extension source?\\n${source}\\n\\nThis allows Atomic to load project-local .atomic/.pi resources and .agents/skills from this -e source, including extensions and workflows that can execute code.`,\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 : options?.extensionFactories,\n\t\t\t},\n\t\t});\n\t\tconst { settingsManager, modelRegistry, resourceLoader } = services;\n\t\tconst diagnostics: AgentSessionRuntimeDiagnostic[] = [\n\t\t\t...services.diagnostics,\n\t\t\t...collectSettingsDiagnostics(settingsManager, \"runtime creation\"),\n\t\t\t...resourceLoader.getExtensions().errors.map(({ path, error }) => ({\n\t\t\t\ttype: \"error\" as const,\n\t\t\t\tmessage: `Failed to load extension \"${path}\": ${error}`,\n\t\t\t})),\n\t\t];\n\t\tconst modelPatterns = isolateInteractiveHost ? undefined : (parsed.models ?? settingsManager.getEnabledModels());\n\t\tconst scopedModels =\n\t\t\tmodelPatterns && modelPatterns.length > 0\n\t\t\t\t? deferredExtensionLoad\n\t\t\t\t\t? (await resolveModelScopeWithDiagnostics(modelPatterns, modelRegistry)).scopedModels\n\t\t\t\t\t: await resolveModelScope(modelPatterns, modelRegistry)\n\t\t\t\t: [];\n\t\tconst sessionArgs = isolateInteractiveHost\n\t\t\t? { ...parsed, provider: undefined, model: undefined, apiKey: undefined, models: undefined } : parsed;\n\t\tconst {\n\t\t\toptions: sessionOptions,\n\t\t\tcliThinkingFromModel,\n\t\t\tdiagnostics: sessionOptionDiagnostics,\n\t\t} = buildSessionOptions(\n\t\t\tsessionArgs,\n\t\t\tscopedModels,\n\t\t\tsessionManager.buildSessionContext().messages.length > 0,\n\t\t\tmodelRegistry,\n\t\t\tsettingsManager,\n\t\t);\n\t\tdiagnostics.push(...sessionOptionDiagnostics);\n\n\t\tif (parsed.apiKey && !isolateInteractiveHost) {\n\t\t\tif (!sessionOptions.model) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\tmessage: \"--api-key requires a model to be specified via --model, --provider/--model, or --models\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tauthStorage.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);\n\t\t\t}\n\t\t}\n\n\t\tconst created = await createAgentSessionFromServices({\n\t\t\tservices,\n\t\t\tsessionManager,\n\t\t\tsessionStartEvent,\n\t\t\tmodel: sessionOptions.model,\n\t\t\tthinkingLevel: sessionOptions.thinkingLevel,\n\t\t\tcontextWindow: sessionOptions.contextWindow,\n\t\t\tcontextWindowStrict: sessionOptions.contextWindowStrict,\n\t\t\tscopedModels: sessionOptions.scopedModels,\n\t\t\ttools: sessionOptions.tools,\n\t\t\texcludedTools: resolveExcludedToolsForAppMode(appMode, sessionOptions.excludedTools),\n\t\t\tnoTools: sessionOptions.noTools,\n\t\t\tcustomTools: sessionOptions.customTools,\n\t\t});\n\t\tif (created.contextWindowWarning) {\n\t\t\tdiagnostics.push({ type: \"warning\", message: created.contextWindowWarning });\n\t\t}\n\t\tif (created.contextWindowError) {\n\t\t\tdiagnostics.push({ type: \"error\", message: created.contextWindowError });\n\t\t}\n\n\t\tconst cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;\n\t\tif (created.session.model && cliThinkingOverride) {\n\t\t\tcreated.session.setThinkingLevel(created.session.thinkingLevel);\n\t\t}\n\t\tconst hasFatalDiagnostics = diagnostics.some((diagnostic) => diagnostic.type === \"error\");\n\t\tif (\n\t\t\tcreated.session.model &&\n\t\t\tparsed.contextWindow !== undefined &&\n\t\t\t!created.contextWindowError &&\n\t\t\t!hasFatalDiagnostics &&\n\t\t\t!isReadOnlyRuntimeMetadataCommand(parsed)\n\t\t) {\n\t\t\tcreated.session.setContextWindow(parsed.contextWindow, { persistDefault: true });\n\t\t}\n\n\t\treturn {\n\t\t\t...created,\n\t\t\tservices,\n\t\t\tdiagnostics,\n\t\t};\n\t};\n\ttime(\"createRuntimeFactory\");\n\tconst runtimeCreationSpan = startTimingSpan(\"createAgentSessionRuntime\");\n\tconst runtime = await createRuntimeForMode(createRuntime, sessionManager.getCwd(), agentDir, sessionManager, isolateInteractiveHost, (options?.extensionFactories?.length ?? 0) > 0, parsed, {\n\t\textensions: resolvedExtensionPaths, skills: resolvedSkillPaths, promptTemplates: resolvedPromptTemplatePaths, themes: resolvedThemePaths,\n\t});\n\tendTimingSpan(runtimeCreationSpan);\n\tconst { services, session, modelFallbackMessage } = runtime;\n\tconst { settingsManager, modelRegistry, resourceLoader } = services;\n\tconfigureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());\n\n\tif (parsed.help) {\n\t\tconst extensionFlags = resourceLoader\n\t\t\t.getExtensions()\n\t\t\t.extensions.flatMap((extension) => Array.from(extension.flags.values()));\n\t\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\tconst searchPattern = typeof parsed.listModels === \"string\" ? parsed.listModels : undefined;\n\t\tif (shouldRestoreStdoutForMetadata) {\n\t\t\trestoreStdout();\n\t\t}\n\t\tawait listModels(modelRegistry, 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(\n\t\tparsed,\n\t\tsettingsManager.getImageAutoResize(),\n\t\tstdinContent,\n\t);\n\ttime(\"prepareInitialMessage\");\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\treportDiagnostics(runtime.diagnostics);\n\tif (runtime.diagnostics.some((diagnostic) => diagnostic.type === \"error\")) {\n\t\tstartupEarlyInputCapture?.consume();\n\t\tprocess.exit(1);\n\t}\n\ttime(\"createAgentSession\");\n\n\tif (appMode !== \"interactive\" && !session.model) {\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\tif (!offlineMode) void modelRegistry.refresh().catch(() => {});\n\t\tprintTimings();\n\t\tawait runRpcMode(runtime);\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\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\tdeferredExtensionLoad,\n\t\t\tstartupInputCapture: startupEarlyInputCapture,\n\t\t\tdeferredModelScopePatterns: deferredExtensionLoad ? (parsed.models ?? settingsManager.getEnabledModels()) : 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 +1 @@
1
- {"version":3,"file":"chat-session-host-events.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAkBtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAkGpE,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CA6IT"}
1
+ {"version":3,"file":"chat-session-host-events.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAkBtF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAkGpE,wBAAgB,0BAA0B,CACxC,WAAW,SAAS,uBAAuB,EAE3C,KAAK,EAAE,oBAAoB,CAAC,WAAW,CAAC,EACxC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CA6JT"}
@@ -163,6 +163,22 @@ export function applyChatSessionAgentEvent(state, event) {
163
163
  changed = true;
164
164
  break;
165
165
  }
166
+ case "summarization_retry_scheduled":
167
+ state.sdkBusy = true;
168
+ state.statusMessage = "retrying summary…";
169
+ changed = true;
170
+ break;
171
+ case "summarization_retry_attempt_start": {
172
+ const retry = event;
173
+ state.sdkBusy = true;
174
+ state.statusMessage = retry.source === "branchSummary" ? "summarizing branch…" : compactionStatusMessage(retry.reason);
175
+ changed = true;
176
+ break;
177
+ }
178
+ case "summarization_retry_finished":
179
+ state.statusMessage = state.compacting ? "Compacting context..." : "";
180
+ changed = true;
181
+ break;
166
182
  case "auto_retry_start":
167
183
  state.sdkBusy = true;
168
184
  state.statusMessage = "retrying…";
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-host-events.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kCAAkC,EAClC,4BAA4B,GAG7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAE5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAItC,SAAS,uBAAuB,CAAC,MAAwB;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,uBAAuB,CAAC;QACjC,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAC;QAC9B,KAAK,UAAU;YACb,OAAO,+CAA+C,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAkC;IACtE,OAAO,QAAQ,CAAC,IAAI,CAClB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAgC;IAClE,OAAO,CACL,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;QACxC,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;QACvC,MAAM,CAAC,KAAK,KAAK,SAAS;QAC1B,MAAM,CAAC,UAAU,KAAK,SAAS;QAC/B,MAAM,CAAC,aAAa,KAAK,kCAAkC;QAC3D,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAgC;IAEhC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,4BAA4B;QACtC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;KAC1C,CAAC;IACtC,OAAO,+BAA+B,CACpC,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,YAAY,EACnB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,OAAO,CACoC,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChE,OAAO,OAAO,CAAC,OAAO;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,8BAA8B,CACrC,UAA8C,EAC9C,MAAgC;IAEhC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,SAAS,GAAG,KAGjB,CAAC;QACF,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,QAAQ;YAC3B,SAAS,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ;YACpC,2BAA2B,CAAC,SAAS,CAAC,OAAO,CAAC;YAC9C,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CACpE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAwC,EACxC,MAAgC;IAEhC,MAAM,iBAAiB,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC;IAC9D,IAAI,iBAAiB,IAAI,4BAA4B,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,IAAI,8BAA8B,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;QAAE,OAAO;IACrE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,QAAQ;QAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAGxC,KAAwC,EACxC,KAAwB;IAExB,MAAM,IAAI,GAAG,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAI,KAA+B,CAAC,OAAO,CAAC;QACzD,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,gCAAgC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACnD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,aAAa,KAAK,SAAS;YACnD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;YAC1C,CAAC,CAAC,KAAK,CAAC;QACV,qBAAqB,CAAC,KAAK,EAAE,OAAO,IAAI,iBAAiB,CAAC,CAAC;QAC3D,OAAO,OAAO,IAAI,iBAAiB,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACnC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,WAAW;YACd,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;YACjC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACnC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjF,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QACR,KAAK,YAAY;YACf,KAAK,CAAC,cAAc,GAAG,2BAA2B,EAAE,CAAC;YACrD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,UAAU;YACb,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,cAAc,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,KAAmD,CAAC;YAClE,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;gBAC3E,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC3D,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;gBAC3E,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,MAAM;QACR,KAAK,aAAa;YAChB,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,MAAM;QACR,KAAK,gBAAgB,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,MAAM;QACR,KAAK,kBAAkB,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,KAAiE,CAAC;YACrF,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,aAAa,GAAG,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,KAA+D,CAAC;YACnF,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACzB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC;YAC5C,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACzE,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC;YACD,IACE,CAAC,UAAU,CAAC,OAAO;gBACnB,CAAC,UAAU,CAAC,OAAO;gBACnB,CAAC,UAAU,CAAC,YAAY;gBACxB,KAAK,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EACzC,CAAC;gBACD,KAAK,+BAA+B,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,kBAAkB;YACrB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,aAAa,GAAG,WAAW,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,sBAAsB;YACzB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,aAAa,GAAG,kBAAkB,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,oBAAoB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,KAAmE,CAAC;YACrF,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,uBAAuB,CAAC,CAAC;YAC/F,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAA+D,CAAC;YAC9E,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,sBAAsB,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,KAAqE,CAAC;YAC5F,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC;YACjD,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,CAAC;QACD;YACE,OAAO,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,CACL,IAAI,KAAK,eAAe;QACxB,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,aAAa;QACtB,IAAI,KAAK,sBAAsB;QAC/B,IAAI,KAAK,uBAAuB;QAChC,IAAI,KAAK,oBAAoB,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAwB;IAMtD,MAAM,cAAc,GAAI,KAOtB,CAAC,qBAAqB,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,YAAY,GAAG,OAAO,cAAc,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAChH,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,MAAM,OAAO,GAAG,cAAc,EAAE,OAAO,CAAC;IACxC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IAMrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,SAAS,GAAG,KAA8E,CAAC;IACjG,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC7F,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,SAAS,CAAC,EAAE;QACxB,QAAQ,EAAE,SAAS,CAAC,IAAI;QACxB,IAAI,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwB;IAMpD,MAAM,OAAO,GAAG,KAAkF,CAAC;IACnG,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC;IACnF,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,UAAU;QACV,QAAQ;QACR,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAwB;IAOrD,MAAM,OAAO,GAAG,KAKf,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC;IACnF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,UAAU;QACV,QAAQ;QACR,MAAM,EACJ,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM;YAClE,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;QACrF,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAwB;IAKnD,MAAM,KAAK,GAAG,MAAM,CACjB,KAA6B,CAAC,KAAK;QACjC,KAA4B,CAAC,IAAI;QAClC,EAAE,CACL,CAAC;IACF,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,qBAAqB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE;QACxD,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;KAC5C,CAAC;AACJ,CAAC","sourcesContent":["import type { AgentSession, AgentSessionEvent } from \"../../../core/agent-session.ts\";\nimport {\n VERBATIM_COMPACTION_PROMPT_VERSION,\n VERBATIM_COMPACTION_STRATEGY,\n type VerbatimCompactionDetails,\n type VerbatimCompactionResult,\n} from \"../../../core/compaction/index.ts\";\nimport {\n createVerbatimCompactionMessage,\n isVerbatimCompactionMessage,\n type CustomMessage,\n} from \"../../../core/messages.ts\";\nimport { pickWhimsicalWorkingMessage } from \"../whimsical-messages.ts\";\nimport { flushChatSessionCompactionQueue } from \"./chat-session-host-actions.ts\";\nimport {\n afterChatSessionEvent,\n decrementOptimisticUserSignature,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport {\n extractMessageText,\n isMessageLike,\n isUserMessageLike,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\ntype CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nfunction compactionStatusMessage(reason: CompactionReason): string {\n switch (reason) {\n case \"manual\":\n return \"Compacting context...\";\n case \"threshold\":\n return \"Auto-compacting...\";\n case \"overflow\":\n return \"Context overflow detected. Auto-compacting...\";\n }\n}\n\nfunction hasVerbatimCompactionMessage(messages: AgentSession[\"messages\"]): boolean {\n return messages.some(\n (message) => message.role === \"custom\" && isVerbatimCompactionMessage(message),\n );\n}\n\nfunction isCompleteCompactionResult(result: VerbatimCompactionResult): boolean {\n return (\n typeof result.compactedText === \"string\" &&\n typeof result.tokensBefore === \"number\" &&\n result.stats !== undefined &&\n result.parameters !== undefined &&\n result.promptVersion === VERBATIM_COMPACTION_PROMPT_VERSION &&\n (result.rung === \"planned\" || result.rung === \"extension\")\n );\n}\n\nfunction boundaryMessageFromResult(\n result: VerbatimCompactionResult,\n): CustomMessage<VerbatimCompactionDetails> | undefined {\n if (!isCompleteCompactionResult(result)) return undefined;\n const details = {\n strategy: VERBATIM_COMPACTION_STRATEGY,\n promptVersion: result.promptVersion,\n parameters: result.parameters,\n stats: result.stats,\n rung: result.rung,\n ...(result.backupPath === undefined ? {} : { backupPath: result.backupPath }),\n } satisfies VerbatimCompactionDetails;\n return createVerbatimCompactionMessage(\n result.compactedText,\n result.tokensBefore,\n new Date().toISOString(),\n details,\n ) as CustomMessage<VerbatimCompactionDetails>;\n}\n\nfunction customMessageText(message: CustomMessage): string {\n if (typeof message.content === \"string\") return message.content;\n return message.content\n .filter((block) => block.type === \"text\")\n .map((block) => block.text)\n .join(\"\\n\");\n}\n\nfunction transcriptHasBoundaryForResult(\n transcript: readonly ChatTranscriptEntryLike[],\n result: VerbatimCompactionResult,\n): boolean {\n return transcript.some((entry) => {\n const candidate = entry as ChatTranscriptEntryLike & {\n readonly kind?: string;\n readonly message?: CustomMessage;\n };\n return (\n candidate.kind === \"custom\" &&\n candidate.message?.role === \"custom\" &&\n isVerbatimCompactionMessage(candidate.message) &&\n customMessageText(candidate.message).endsWith(result.compactedText)\n );\n });\n}\n\nfunction refreshCompactedTranscript<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n result: VerbatimCompactionResult,\n): void {\n const compactedMessages = state.getAgentSession?.()?.messages;\n if (compactedMessages && hasVerbatimCompactionMessage(compactedMessages)) {\n state.liveChat.replaceMessages(compactedMessages, state.extraEntries);\n return;\n }\n if (transcriptHasBoundaryForResult(state.transcript, result)) return;\n const boundary = boundaryMessageFromResult(result);\n if (boundary) state.liveChat.appendMessages([boundary]);\n}\n\nexport function applyChatSessionAgentEvent<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n event: AgentSessionEvent,\n): boolean {\n const type = String((event as { type?: unknown }).type ?? \"\");\n if (type === \"message_start\") {\n const message = (event as { message?: unknown }).message;\n if (isUserMessageLike(message)) {\n const signature = userMessageSignature(extractMessageText(message.content));\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count > 0) {\n decrementOptimisticUserSignature(state, signature);\n return false;\n }\n }\n }\n if (isSharedLiveChatEvent(type)) {\n const changed = state.liveChat.applyEvent(event);\n const toolCallEvent = assistantToolCallEvent(event);\n const changedByToolCall = toolCallEvent !== undefined\n ? state.liveChat.applyEvent(toolCallEvent)\n : false;\n afterChatSessionEvent(state, changed || changedByToolCall);\n return changed || changedByToolCall;\n }\n let changed = false;\n switch (type) {\n case \"agent_start\":\n state.sdkBusy = true;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n break;\n case \"agent_end\":\n state.sdkBusy = false;\n state.workingMessage = undefined;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n if (state.compactionQueuedMessages.length > 0) {\n const idle = state.getAgentSession?.()?.agent.waitForIdle() ?? Promise.resolve();\n void idle.then(() => flushChatSessionCompactionQueue(state));\n }\n break;\n case \"turn_start\":\n state.workingMessage = pickWhimsicalWorkingMessage();\n changed = true;\n break;\n case \"turn_end\":\n state.workingMessage = undefined;\n changed = true;\n break;\n case \"queue_update\": {\n const queue = event as { steering?: unknown; followUp?: unknown };\n state.pendingSteeringMessages = Array.isArray(queue.steering)\n ? queue.steering.filter((item): item is string => typeof item === \"string\")\n : [];\n state.pendingFollowUpMessages = Array.isArray(queue.followUp)\n ? queue.followUp.filter((item): item is string => typeof item === \"string\")\n : [];\n changed = true;\n break;\n }\n case \"tool_call\":\n case \"tool_use\":\n changed = state.liveChat.applyEvent(legacyToolStartEvent(event));\n break;\n case \"tool_result\":\n changed = state.liveChat.applyEvent(legacyToolResultEvent(event));\n break;\n case \"thinking_delta\":\n case \"thinking\":\n changed = state.liveChat.applyEvent(legacyThinkingEvent(event));\n break;\n case \"compaction_start\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_start\" }>;\n state.compacting = true;\n state.sdkBusy = true;\n state.statusMessage = compactionStatusMessage(compaction.reason);\n changed = true;\n break;\n }\n case \"compaction_end\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_end\" }>;\n state.compacting = false;\n state.sdkBusy = compaction.midTurn === true;\n state.statusMessage = compaction.errorMessage ?? \"\";\n if (!compaction.aborted && !compaction.errorMessage && compaction.result) {\n refreshCompactedTranscript(state, compaction.result);\n }\n if (\n !compaction.midTurn &&\n !compaction.aborted &&\n !compaction.errorMessage &&\n state.compactionQueuedMessages.length > 0\n ) {\n void flushChatSessionCompactionQueue(state);\n }\n changed = true;\n break;\n }\n case \"auto_retry_start\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying…\";\n changed = true;\n break;\n case \"model_fallback_start\":\n state.sdkBusy = true;\n state.statusMessage = \"switching model…\";\n changed = true;\n break;\n case \"model_fallback_end\": {\n const fallback = event as Extract<AgentSessionEvent, { type: \"model_fallback_end\" }>;\n state.statusMessage = fallback.success ? \"\" : (fallback.finalError ?? \"model fallback failed\");\n if (!fallback.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"auto_retry_end\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"auto_retry_end\" }>;\n state.statusMessage = \"\";\n if (!retry.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"agent_continue_error\": {\n const continueError = event as Extract<AgentSessionEvent, { type: \"agent_continue_error\" }>;\n state.sdkBusy = false;\n state.statusMessage = continueError.errorMessage;\n state.workingMessage = undefined;\n changed = true;\n break;\n }\n default:\n changed = false;\n }\n afterChatSessionEvent(state, changed);\n return changed;\n}\n\nfunction isSharedLiveChatEvent(type: string): boolean {\n return (\n type === \"message_start\" ||\n type === \"message_update\" ||\n type === \"message_end\" ||\n type === \"tool_execution_start\" ||\n type === \"tool_execution_update\" ||\n type === \"tool_execution_end\"\n );\n}\n\nfunction assistantToolCallEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n const assistantEvent = (event as {\n assistantMessageEvent?: {\n type?: unknown;\n contentIndex?: unknown;\n partial?: unknown;\n toolCall?: unknown;\n };\n }).assistantMessageEvent;\n const streamType = String(assistantEvent?.type ?? \"\");\n if (!streamType.startsWith(\"toolcall_\")) return undefined;\n const explicit = toolCallPayload(assistantEvent?.toolCall);\n if (explicit) return explicit;\n const contentIndex = typeof assistantEvent?.contentIndex === \"number\" ? assistantEvent.contentIndex : undefined;\n if (contentIndex === undefined) return undefined;\n const partial = assistantEvent?.partial;\n if (!isMessageLike(partial) || partial.role !== \"assistant\") return undefined;\n const content = partial.content;\n if (!Array.isArray(content)) return undefined;\n return toolCallPayload(content[contentIndex]);\n}\n\nfunction toolCallPayload(value: unknown): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n if (value === null || typeof value !== \"object\") return undefined;\n const candidate = value as { type?: unknown; id?: unknown; name?: unknown; arguments?: unknown };\n if (candidate.type !== \"toolCall\") return undefined;\n if (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\") return undefined;\n return {\n type: \"tool_execution_start\",\n toolCallId: candidate.id,\n toolName: candidate.name,\n args: candidate.arguments ?? {},\n };\n}\n\nfunction legacyToolStartEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} {\n const payload = event as { toolCallId?: unknown; name?: unknown; input?: unknown; args?: unknown };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n return {\n type: \"tool_execution_start\",\n toolCallId,\n toolName,\n args: payload.input ?? payload.args ?? {},\n };\n}\n\nfunction legacyToolResultEvent(event: AgentSessionEvent): {\n type: \"tool_execution_end\";\n toolCallId: string;\n toolName: string;\n result: unknown;\n isError: boolean;\n} {\n const payload = event as {\n toolCallId?: unknown;\n name?: unknown;\n output?: unknown;\n isError?: unknown;\n };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n const output = payload.output;\n return {\n type: \"tool_execution_end\",\n toolCallId,\n toolName,\n result:\n output !== null && typeof output === \"object\" && \"content\" in output\n ? output\n : { content: typeof output === \"string\" ? [{ type: \"text\", text: output }] : [] },\n isError: payload.isError === true,\n };\n}\n\nfunction legacyThinkingEvent(event: AgentSessionEvent): {\n type: \"message_update\";\n assistantMessageEvent: { type: \"thinking_delta\"; delta: string };\n message: { role: \"assistant\"; content: [] };\n} {\n const delta = String(\n (event as { delta?: unknown }).delta ??\n (event as { text?: unknown }).text ??\n \"\",\n );\n return {\n type: \"message_update\",\n assistantMessageEvent: { type: \"thinking_delta\", delta },\n message: { role: \"assistant\", content: [] },\n };\n}\n"]}
1
+ {"version":3,"file":"chat-session-host-events.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/chat-session-host-events.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSession, AgentSessionEvent } from \"../../../core/agent-session.ts\";\nimport {\n VERBATIM_COMPACTION_PROMPT_VERSION,\n VERBATIM_COMPACTION_STRATEGY,\n type VerbatimCompactionDetails,\n type VerbatimCompactionResult,\n} from \"../../../core/compaction/index.ts\";\nimport {\n createVerbatimCompactionMessage,\n isVerbatimCompactionMessage,\n type CustomMessage,\n} from \"../../../core/messages.ts\";\nimport { pickWhimsicalWorkingMessage } from \"../whimsical-messages.ts\";\nimport { flushChatSessionCompactionQueue } from \"./chat-session-host-actions.ts\";\nimport {\n afterChatSessionEvent,\n decrementOptimisticUserSignature,\n} from \"./chat-session-host-runtime.ts\";\nimport type { ChatSessionHostState } from \"./chat-session-host-state.ts\";\nimport type { ChatTranscriptEntryLike } from \"./chat-transcript.ts\";\nimport {\n extractMessageText,\n isMessageLike,\n isUserMessageLike,\n userMessageSignature,\n} from \"./chat-session-host-utils.ts\";\n\ntype CompactionReason = \"manual\" | \"threshold\" | \"overflow\";\n\nfunction compactionStatusMessage(reason: CompactionReason): string {\n switch (reason) {\n case \"manual\":\n return \"Compacting context...\";\n case \"threshold\":\n return \"Auto-compacting...\";\n case \"overflow\":\n return \"Context overflow detected. Auto-compacting...\";\n }\n}\n\nfunction hasVerbatimCompactionMessage(messages: AgentSession[\"messages\"]): boolean {\n return messages.some(\n (message) => message.role === \"custom\" && isVerbatimCompactionMessage(message),\n );\n}\n\nfunction isCompleteCompactionResult(result: VerbatimCompactionResult): boolean {\n return (\n typeof result.compactedText === \"string\" &&\n typeof result.tokensBefore === \"number\" &&\n result.stats !== undefined &&\n result.parameters !== undefined &&\n result.promptVersion === VERBATIM_COMPACTION_PROMPT_VERSION &&\n (result.rung === \"planned\" || result.rung === \"extension\")\n );\n}\n\nfunction boundaryMessageFromResult(\n result: VerbatimCompactionResult,\n): CustomMessage<VerbatimCompactionDetails> | undefined {\n if (!isCompleteCompactionResult(result)) return undefined;\n const details = {\n strategy: VERBATIM_COMPACTION_STRATEGY,\n promptVersion: result.promptVersion,\n parameters: result.parameters,\n stats: result.stats,\n rung: result.rung,\n ...(result.backupPath === undefined ? {} : { backupPath: result.backupPath }),\n } satisfies VerbatimCompactionDetails;\n return createVerbatimCompactionMessage(\n result.compactedText,\n result.tokensBefore,\n new Date().toISOString(),\n details,\n ) as CustomMessage<VerbatimCompactionDetails>;\n}\n\nfunction customMessageText(message: CustomMessage): string {\n if (typeof message.content === \"string\") return message.content;\n return message.content\n .filter((block) => block.type === \"text\")\n .map((block) => block.text)\n .join(\"\\n\");\n}\n\nfunction transcriptHasBoundaryForResult(\n transcript: readonly ChatTranscriptEntryLike[],\n result: VerbatimCompactionResult,\n): boolean {\n return transcript.some((entry) => {\n const candidate = entry as ChatTranscriptEntryLike & {\n readonly kind?: string;\n readonly message?: CustomMessage;\n };\n return (\n candidate.kind === \"custom\" &&\n candidate.message?.role === \"custom\" &&\n isVerbatimCompactionMessage(candidate.message) &&\n customMessageText(candidate.message).endsWith(result.compactedText)\n );\n });\n}\n\nfunction refreshCompactedTranscript<TExtraEntry extends ChatTranscriptEntryLike>(\n state: ChatSessionHostState<TExtraEntry>,\n result: VerbatimCompactionResult,\n): void {\n const compactedMessages = state.getAgentSession?.()?.messages;\n if (compactedMessages && hasVerbatimCompactionMessage(compactedMessages)) {\n state.liveChat.replaceMessages(compactedMessages, state.extraEntries);\n return;\n }\n if (transcriptHasBoundaryForResult(state.transcript, result)) return;\n const boundary = boundaryMessageFromResult(result);\n if (boundary) state.liveChat.appendMessages([boundary]);\n}\n\nexport function applyChatSessionAgentEvent<\n TExtraEntry extends ChatTranscriptEntryLike,\n>(\n state: ChatSessionHostState<TExtraEntry>,\n event: AgentSessionEvent,\n): boolean {\n const type = String((event as { type?: unknown }).type ?? \"\");\n if (type === \"message_start\") {\n const message = (event as { message?: unknown }).message;\n if (isUserMessageLike(message)) {\n const signature = userMessageSignature(extractMessageText(message.content));\n const count = state.optimisticUserSignatureCounts.get(signature) ?? 0;\n if (count > 0) {\n decrementOptimisticUserSignature(state, signature);\n return false;\n }\n }\n }\n if (isSharedLiveChatEvent(type)) {\n const changed = state.liveChat.applyEvent(event);\n const toolCallEvent = assistantToolCallEvent(event);\n const changedByToolCall = toolCallEvent !== undefined\n ? state.liveChat.applyEvent(toolCallEvent)\n : false;\n afterChatSessionEvent(state, changed || changedByToolCall);\n return changed || changedByToolCall;\n }\n let changed = false;\n switch (type) {\n case \"agent_start\":\n state.sdkBusy = true;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n break;\n case \"agent_end\":\n state.sdkBusy = false;\n state.workingMessage = undefined;\n state.liveChat.clearPendingTools();\n state.statusMessage = \"\";\n changed = true;\n if (state.compactionQueuedMessages.length > 0) {\n const idle = state.getAgentSession?.()?.agent.waitForIdle() ?? Promise.resolve();\n void idle.then(() => flushChatSessionCompactionQueue(state));\n }\n break;\n case \"turn_start\":\n state.workingMessage = pickWhimsicalWorkingMessage();\n changed = true;\n break;\n case \"turn_end\":\n state.workingMessage = undefined;\n changed = true;\n break;\n case \"queue_update\": {\n const queue = event as { steering?: unknown; followUp?: unknown };\n state.pendingSteeringMessages = Array.isArray(queue.steering)\n ? queue.steering.filter((item): item is string => typeof item === \"string\")\n : [];\n state.pendingFollowUpMessages = Array.isArray(queue.followUp)\n ? queue.followUp.filter((item): item is string => typeof item === \"string\")\n : [];\n changed = true;\n break;\n }\n case \"tool_call\":\n case \"tool_use\":\n changed = state.liveChat.applyEvent(legacyToolStartEvent(event));\n break;\n case \"tool_result\":\n changed = state.liveChat.applyEvent(legacyToolResultEvent(event));\n break;\n case \"thinking_delta\":\n case \"thinking\":\n changed = state.liveChat.applyEvent(legacyThinkingEvent(event));\n break;\n case \"compaction_start\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_start\" }>;\n state.compacting = true;\n state.sdkBusy = true;\n state.statusMessage = compactionStatusMessage(compaction.reason);\n changed = true;\n break;\n }\n case \"compaction_end\": {\n const compaction = event as Extract<AgentSessionEvent, { type: \"compaction_end\" }>;\n state.compacting = false;\n state.sdkBusy = compaction.midTurn === true;\n state.statusMessage = compaction.errorMessage ?? \"\";\n if (!compaction.aborted && !compaction.errorMessage && compaction.result) {\n refreshCompactedTranscript(state, compaction.result);\n }\n if (\n !compaction.midTurn &&\n !compaction.aborted &&\n !compaction.errorMessage &&\n state.compactionQueuedMessages.length > 0\n ) {\n void flushChatSessionCompactionQueue(state);\n }\n changed = true;\n break;\n }\n case \"summarization_retry_scheduled\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying summary…\";\n changed = true;\n break;\n case \"summarization_retry_attempt_start\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"summarization_retry_attempt_start\" }>;\n state.sdkBusy = true;\n state.statusMessage = retry.source === \"branchSummary\" ? \"summarizing branch…\" : compactionStatusMessage(retry.reason);\n changed = true;\n break;\n }\n case \"summarization_retry_finished\":\n state.statusMessage = state.compacting ? \"Compacting context...\" : \"\";\n changed = true;\n break;\n case \"auto_retry_start\":\n state.sdkBusy = true;\n state.statusMessage = \"retrying…\";\n changed = true;\n break;\n case \"model_fallback_start\":\n state.sdkBusy = true;\n state.statusMessage = \"switching model…\";\n changed = true;\n break;\n case \"model_fallback_end\": {\n const fallback = event as Extract<AgentSessionEvent, { type: \"model_fallback_end\" }>;\n state.statusMessage = fallback.success ? \"\" : (fallback.finalError ?? \"model fallback failed\");\n if (!fallback.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"auto_retry_end\": {\n const retry = event as Extract<AgentSessionEvent, { type: \"auto_retry_end\" }>;\n state.statusMessage = \"\";\n if (!retry.success) {\n state.sdkBusy = false;\n state.workingMessage = undefined;\n }\n changed = true;\n break;\n }\n case \"agent_continue_error\": {\n const continueError = event as Extract<AgentSessionEvent, { type: \"agent_continue_error\" }>;\n state.sdkBusy = false;\n state.statusMessage = continueError.errorMessage;\n state.workingMessage = undefined;\n changed = true;\n break;\n }\n default:\n changed = false;\n }\n afterChatSessionEvent(state, changed);\n return changed;\n}\n\nfunction isSharedLiveChatEvent(type: string): boolean {\n return (\n type === \"message_start\" ||\n type === \"message_update\" ||\n type === \"message_end\" ||\n type === \"tool_execution_start\" ||\n type === \"tool_execution_update\" ||\n type === \"tool_execution_end\"\n );\n}\n\nfunction assistantToolCallEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n const assistantEvent = (event as {\n assistantMessageEvent?: {\n type?: unknown;\n contentIndex?: unknown;\n partial?: unknown;\n toolCall?: unknown;\n };\n }).assistantMessageEvent;\n const streamType = String(assistantEvent?.type ?? \"\");\n if (!streamType.startsWith(\"toolcall_\")) return undefined;\n const explicit = toolCallPayload(assistantEvent?.toolCall);\n if (explicit) return explicit;\n const contentIndex = typeof assistantEvent?.contentIndex === \"number\" ? assistantEvent.contentIndex : undefined;\n if (contentIndex === undefined) return undefined;\n const partial = assistantEvent?.partial;\n if (!isMessageLike(partial) || partial.role !== \"assistant\") return undefined;\n const content = partial.content;\n if (!Array.isArray(content)) return undefined;\n return toolCallPayload(content[contentIndex]);\n}\n\nfunction toolCallPayload(value: unknown): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} | undefined {\n if (value === null || typeof value !== \"object\") return undefined;\n const candidate = value as { type?: unknown; id?: unknown; name?: unknown; arguments?: unknown };\n if (candidate.type !== \"toolCall\") return undefined;\n if (typeof candidate.id !== \"string\" || typeof candidate.name !== \"string\") return undefined;\n return {\n type: \"tool_execution_start\",\n toolCallId: candidate.id,\n toolName: candidate.name,\n args: candidate.arguments ?? {},\n };\n}\n\nfunction legacyToolStartEvent(event: AgentSessionEvent): {\n type: \"tool_execution_start\";\n toolCallId: string;\n toolName: string;\n args: unknown;\n} {\n const payload = event as { toolCallId?: unknown; name?: unknown; input?: unknown; args?: unknown };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n return {\n type: \"tool_execution_start\",\n toolCallId,\n toolName,\n args: payload.input ?? payload.args ?? {},\n };\n}\n\nfunction legacyToolResultEvent(event: AgentSessionEvent): {\n type: \"tool_execution_end\";\n toolCallId: string;\n toolName: string;\n result: unknown;\n isError: boolean;\n} {\n const payload = event as {\n toolCallId?: unknown;\n name?: unknown;\n output?: unknown;\n isError?: unknown;\n };\n const toolName = typeof payload.name === \"string\" ? payload.name : \"tool\";\n const toolCallId =\n typeof payload.toolCallId === \"string\" ? payload.toolCallId : `live-${toolName}`;\n const output = payload.output;\n return {\n type: \"tool_execution_end\",\n toolCallId,\n toolName,\n result:\n output !== null && typeof output === \"object\" && \"content\" in output\n ? output\n : { content: typeof output === \"string\" ? [{ type: \"text\", text: output }] : [] },\n isError: payload.isError === true,\n };\n}\n\nfunction legacyThinkingEvent(event: AgentSessionEvent): {\n type: \"message_update\";\n assistantMessageEvent: { type: \"thinking_delta\"; delta: string };\n message: { role: \"assistant\"; content: [] };\n} {\n const delta = String(\n (event as { delta?: unknown }).delta ??\n (event as { text?: unknown }).text ??\n \"\",\n );\n return {\n type: \"message_update\",\n assistantMessageEvent: { type: \"thinking_delta\", delta },\n message: { role: \"assistant\", content: [] },\n };\n}\n"]}
@@ -64,9 +64,9 @@ function getUsageLine(session, autoCompactEnabled, width) {
64
64
  if ((totalCacheRead > 0 || totalCacheWrite > 0) && latestCacheHitRate !== undefined) {
65
65
  usageParts.push(`${theme.fg("dim", "CH")}${theme.fg("muted", `${latestCacheHitRate.toFixed(1)}%`)}`);
66
66
  }
67
- // Show cost with "(sub)" indicator if using OAuth subscription
67
+ // Kimi Coding is subscription-backed despite using API-key authentication.
68
68
  const usingSubscription = state.model
69
- ? session.modelRegistry.isUsingOAuth(state.model)
69
+ ? state.model.provider === "kimi-coding" || session.modelRegistry.isUsingOAuth(state.model)
70
70
  : false;
71
71
  if (totalCost || usingSubscription) {
72
72
  usageParts.push(`${theme.fg("muted", `$${totalCost.toFixed(3)}`)}${usingSubscription ? ` ${theme.fg("dim", "(sub)")}` : ""}`);
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport {\n type Component,\n truncateToWidth,\n visibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport {\n formatCodexFastModeModelLabel,\n shouldApplyCodexFastMode,\n} from \"../../../core/codex-fast-mode.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\n/**\n * Format token counts (similar to web-ui)\n */\nfunction formatTokens(count: number): string {\n if (count < 1000) return count.toString();\n if (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n if (count < 1000000) return `${Math.round(count / 1000)}k`;\n if (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n return `${Math.round(count / 1000000)}M`;\n}\n\nfunction replaceHome(input: string): string {\n return formatCwdForFooter(input, process.env.HOME || process.env.USERPROFILE);\n}\n\nfunction rightAlign(line: string, width: number): string {\n const lineWidth = visibleWidth(line);\n if (lineWidth >= width) {\n return truncateToWidth(line, width, theme.fg(\"dim\", \"...\"));\n }\n return `${\" \".repeat(width - lineWidth)}${line}`;\n}\n\nfunction getUsageLine(\n session: AgentSession,\n autoCompactEnabled: boolean,\n width: number,\n): string {\n const state = session.state;\n\n // Calculate cumulative usage from ALL session entries (not just post-compaction messages)\n let totalInput = 0;\n let totalOutput = 0;\n let totalCacheRead = 0;\n let totalCacheWrite = 0;\n let totalCost = 0;\n let latestCacheHitRate: number | undefined;\n\n for (const entry of session.sessionManager.getEntries()) {\n if (entry.type === \"message\" && entry.message.role === \"assistant\") {\n totalInput += entry.message.usage.input;\n totalOutput += entry.message.usage.output;\n totalCacheRead += entry.message.usage.cacheRead;\n totalCacheWrite += entry.message.usage.cacheWrite;\n totalCost += entry.message.usage.cost.total;\n\n const latestPromptTokens =\n entry.message.usage.input + entry.message.usage.cacheRead + entry.message.usage.cacheWrite;\n latestCacheHitRate = latestPromptTokens > 0 ? (entry.message.usage.cacheRead / latestPromptTokens) * 100 : undefined;\n }\n }\n\n // Calculate context usage from session (handles compaction correctly).\n // After compaction, tokens are unknown until the next LLM response.\n const contextUsage = session.getContextUsage();\n const contextWindow =\n contextUsage?.contextWindow ?? state.model?.contextWindow ?? 0;\n const contextPercentValue = contextUsage?.percent ?? 0;\n const contextPercent =\n contextUsage?.percent !== null ? contextPercentValue.toFixed(1) : \"?\";\n\n const usageParts = [];\n if (totalInput)\n usageParts.push(\n `${theme.fg(\"dim\", \"↑\")}${theme.fg(\"muted\", formatTokens(totalInput))}`,\n );\n if (totalOutput)\n usageParts.push(\n `${theme.fg(\"dim\", \"↓\")}${theme.fg(\"muted\", formatTokens(totalOutput))}`,\n );\n if (totalCacheRead)\n usageParts.push(\n `${theme.fg(\"dim\", \"R\")}${theme.fg(\"muted\", formatTokens(totalCacheRead))}`,\n );\n if (totalCacheWrite)\n usageParts.push(\n `${theme.fg(\"dim\", \"W\")}${theme.fg(\"muted\", formatTokens(totalCacheWrite))}`,\n );\n if ((totalCacheRead > 0 || totalCacheWrite > 0) && latestCacheHitRate !== undefined) {\n usageParts.push(`${theme.fg(\"dim\", \"CH\")}${theme.fg(\"muted\", `${latestCacheHitRate.toFixed(1)}%`)}`);\n }\n\n // Show cost with \"(sub)\" indicator if using OAuth subscription\n const usingSubscription = state.model\n ? session.modelRegistry.isUsingOAuth(state.model)\n : false;\n if (totalCost || usingSubscription) {\n usageParts.push(\n `${theme.fg(\"muted\", `$${totalCost.toFixed(3)}`)}${usingSubscription ? ` ${theme.fg(\"dim\", \"(sub)\")}` : \"\"}`,\n );\n }\n\n const autoIndicator = autoCompactEnabled ? \" (auto)\" : \"\";\n const contextPercentDisplay =\n contextPercent === \"?\"\n ? `?/${formatTokens(contextWindow)}${autoIndicator}`\n : `${contextPercent}%/${formatTokens(contextWindow)}${autoIndicator}`;\n if (autoCompactEnabled && contextPercentValue > 70) {\n usageParts.push(theme.fg(\"warning\", contextPercentDisplay));\n } else if (contextPercentValue > 90) {\n usageParts.push(theme.fg(\"error\", contextPercentDisplay));\n } else if (contextPercentValue > 70) {\n usageParts.push(theme.fg(\"warning\", contextPercentDisplay));\n } else {\n usageParts.push(theme.fg(\"muted\", contextPercentDisplay));\n }\n\n const separator = theme.fg(\"dim\", \" • \");\n const usageText =\n usageParts.length > 0\n ? usageParts.join(separator)\n : theme.fg(\"muted\", contextPercentDisplay);\n return rightAlign(usageText, width);\n}\n\nexport function formatCwdForFooter(cwd: string, home: string | undefined): string {\n\tif (!home) return cwd;\n\n\tconst resolvedCwd = resolve(cwd);\n\tconst resolvedHome = resolve(home);\n\tconst relativeToHome = relative(resolvedHome, resolvedCwd);\n\tconst isInsideHome =\n\t\trelativeToHome === \"\" ||\n\t\t(relativeToHome !== \"..\" && !relativeToHome.startsWith(`..${sep}`) && !isAbsolute(relativeToHome));\n\n\tif (!isInsideHome) return cwd;\n\treturn relativeToHome === \"\" ? \"~\" : `~${sep}${relativeToHome}`;\n}\n\n/**\n * Right-aligned usage meter that sits above the composer, matching the approved\n * prototype's separate token/cost/context ribbon.\n */\nexport class UsageMeterComponent implements Component {\n private autoCompactEnabled = true;\n\n declare private session: AgentSession;\n\n constructor(session: AgentSession) {\n this.session = session;\n\t}\n\n setSession(session: AgentSession): void {\n this.session = session;\n }\n\n setAutoCompactEnabled(enabled: boolean): void {\n this.autoCompactEnabled = enabled;\n }\n\n invalidate(): void {\n // Render pulls live session data.\n }\n\n render(width: number): string[] {\n return [getUsageLine(this.session, this.autoCompactEnabled, width)];\n }\n}\n\n/**\n * Sparse statusline below the composer. It mirrors the preview: model + cwd\n * when idle, or one semantic dot with short recovery copy while work is live.\n */\nexport class FooterComponent implements Component {\n declare private session: AgentSession;\n declare private footerData: ReadonlyFooterDataProvider;\n\n constructor(\n session: AgentSession,\n footerData: ReadonlyFooterDataProvider,\n ) {\n this.session = session;\n this.footerData = footerData;\n\t}\n\n setSession(session: AgentSession): void {\n this.session = session;\n }\n\n setAutoCompactEnabled(_enabled: boolean): void {\n // Usage state lives in UsageMeterComponent. Kept for compatibility with existing call sites.\n }\n\n /**\n * No-op: git branch caching now handled by provider.\n * Kept for compatibility with existing call sites in interactive-mode.\n */\n invalidate(): void {\n // No-op: git branch is cached/invalidated by provider\n }\n\n /**\n * Clean up resources.\n * Git watcher cleanup now handled by provider.\n */\n dispose(): void {\n // Git watcher cleanup handled by provider\n }\n\n render(width: number): string[] {\n const state = this.session.state;\n const pwd = replaceHome(this.session.sessionManager.getCwd());\n\n const modelName = state.model?.id || \"no-model\";\n const fastModeSettings = this.session.settingsManager.getCodexFastModeSettings();\n const fastModeEnabled = state.model\n ? shouldApplyCodexFastMode(\n state.model,\n fastModeSettings,\n this.session.orchestrationContext,\n )\n : false;\n let modelLabel = modelName;\n if (state.model?.reasoning) {\n const thinkingLevel = state.thinkingLevel || \"off\";\n modelLabel =\n thinkingLevel === \"off\" ? modelLabel : `${modelLabel} ${thinkingLevel}`;\n }\n modelLabel = formatCodexFastModeModelLabel(modelLabel, fastModeEnabled);\n if (this.footerData.getAvailableProviderCount() > 1 && state.model) {\n modelLabel = `(${state.model.provider}) ${modelLabel}`;\n }\n\n const liveState = this.session.isStreaming\n ? theme.fg(\"muted\", \"esc to interrupt\")\n : undefined;\n const statusText =\n liveState ??\n `${theme.fg(\"dim\", modelLabel)} ${theme.fg(\"dim\", \"•\")} ${theme.fg(\"muted\", pwd)}`;\n return [truncateToWidth(statusText, width, theme.fg(\"dim\", \"...\"))];\n }\n}\n"]}
1
+ {"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/footer.ts"],"names":[],"mappings":"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","sourcesContent":["import { isAbsolute, relative, resolve, sep } from \"node:path\";\nimport {\n type Component,\n truncateToWidth,\n visibleWidth,\n} from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../../core/agent-session.ts\";\nimport {\n formatCodexFastModeModelLabel,\n shouldApplyCodexFastMode,\n} from \"../../../core/codex-fast-mode.ts\";\nimport type { ReadonlyFooterDataProvider } from \"../../../core/footer-data-provider.ts\";\nimport { theme } from \"../theme/theme.ts\";\n\n/**\n * Format token counts (similar to web-ui)\n */\nfunction formatTokens(count: number): string {\n if (count < 1000) return count.toString();\n if (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n if (count < 1000000) return `${Math.round(count / 1000)}k`;\n if (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n return `${Math.round(count / 1000000)}M`;\n}\n\nfunction replaceHome(input: string): string {\n return formatCwdForFooter(input, process.env.HOME || process.env.USERPROFILE);\n}\n\nfunction rightAlign(line: string, width: number): string {\n const lineWidth = visibleWidth(line);\n if (lineWidth >= width) {\n return truncateToWidth(line, width, theme.fg(\"dim\", \"...\"));\n }\n return `${\" \".repeat(width - lineWidth)}${line}`;\n}\n\nfunction getUsageLine(\n session: AgentSession,\n autoCompactEnabled: boolean,\n width: number,\n): string {\n const state = session.state;\n\n // Calculate cumulative usage from ALL session entries (not just post-compaction messages)\n let totalInput = 0;\n let totalOutput = 0;\n let totalCacheRead = 0;\n let totalCacheWrite = 0;\n let totalCost = 0;\n let latestCacheHitRate: number | undefined;\n\n for (const entry of session.sessionManager.getEntries()) {\n if (entry.type === \"message\" && entry.message.role === \"assistant\") {\n totalInput += entry.message.usage.input;\n totalOutput += entry.message.usage.output;\n totalCacheRead += entry.message.usage.cacheRead;\n totalCacheWrite += entry.message.usage.cacheWrite;\n totalCost += entry.message.usage.cost.total;\n\n const latestPromptTokens =\n entry.message.usage.input + entry.message.usage.cacheRead + entry.message.usage.cacheWrite;\n latestCacheHitRate = latestPromptTokens > 0 ? (entry.message.usage.cacheRead / latestPromptTokens) * 100 : undefined;\n }\n }\n\n // Calculate context usage from session (handles compaction correctly).\n // After compaction, tokens are unknown until the next LLM response.\n const contextUsage = session.getContextUsage();\n const contextWindow =\n contextUsage?.contextWindow ?? state.model?.contextWindow ?? 0;\n const contextPercentValue = contextUsage?.percent ?? 0;\n const contextPercent =\n contextUsage?.percent !== null ? contextPercentValue.toFixed(1) : \"?\";\n\n const usageParts = [];\n if (totalInput)\n usageParts.push(\n `${theme.fg(\"dim\", \"↑\")}${theme.fg(\"muted\", formatTokens(totalInput))}`,\n );\n if (totalOutput)\n usageParts.push(\n `${theme.fg(\"dim\", \"↓\")}${theme.fg(\"muted\", formatTokens(totalOutput))}`,\n );\n if (totalCacheRead)\n usageParts.push(\n `${theme.fg(\"dim\", \"R\")}${theme.fg(\"muted\", formatTokens(totalCacheRead))}`,\n );\n if (totalCacheWrite)\n usageParts.push(\n `${theme.fg(\"dim\", \"W\")}${theme.fg(\"muted\", formatTokens(totalCacheWrite))}`,\n );\n if ((totalCacheRead > 0 || totalCacheWrite > 0) && latestCacheHitRate !== undefined) {\n usageParts.push(`${theme.fg(\"dim\", \"CH\")}${theme.fg(\"muted\", `${latestCacheHitRate.toFixed(1)}%`)}`);\n }\n\n // Kimi Coding is subscription-backed despite using API-key authentication.\n const usingSubscription = state.model\n ? state.model.provider === \"kimi-coding\" || session.modelRegistry.isUsingOAuth(state.model)\n : false;\n if (totalCost || usingSubscription) {\n usageParts.push(\n `${theme.fg(\"muted\", `$${totalCost.toFixed(3)}`)}${usingSubscription ? ` ${theme.fg(\"dim\", \"(sub)\")}` : \"\"}`,\n );\n }\n\n const autoIndicator = autoCompactEnabled ? \" (auto)\" : \"\";\n const contextPercentDisplay =\n contextPercent === \"?\"\n ? `?/${formatTokens(contextWindow)}${autoIndicator}`\n : `${contextPercent}%/${formatTokens(contextWindow)}${autoIndicator}`;\n if (autoCompactEnabled && contextPercentValue > 70) {\n usageParts.push(theme.fg(\"warning\", contextPercentDisplay));\n } else if (contextPercentValue > 90) {\n usageParts.push(theme.fg(\"error\", contextPercentDisplay));\n } else if (contextPercentValue > 70) {\n usageParts.push(theme.fg(\"warning\", contextPercentDisplay));\n } else {\n usageParts.push(theme.fg(\"muted\", contextPercentDisplay));\n }\n\n const separator = theme.fg(\"dim\", \" • \");\n const usageText =\n usageParts.length > 0\n ? usageParts.join(separator)\n : theme.fg(\"muted\", contextPercentDisplay);\n return rightAlign(usageText, width);\n}\n\nexport function formatCwdForFooter(cwd: string, home: string | undefined): string {\n\tif (!home) return cwd;\n\n\tconst resolvedCwd = resolve(cwd);\n\tconst resolvedHome = resolve(home);\n\tconst relativeToHome = relative(resolvedHome, resolvedCwd);\n\tconst isInsideHome =\n\t\trelativeToHome === \"\" ||\n\t\t(relativeToHome !== \"..\" && !relativeToHome.startsWith(`..${sep}`) && !isAbsolute(relativeToHome));\n\n\tif (!isInsideHome) return cwd;\n\treturn relativeToHome === \"\" ? \"~\" : `~${sep}${relativeToHome}`;\n}\n\n/**\n * Right-aligned usage meter that sits above the composer, matching the approved\n * prototype's separate token/cost/context ribbon.\n */\nexport class UsageMeterComponent implements Component {\n private autoCompactEnabled = true;\n\n declare private session: AgentSession;\n\n constructor(session: AgentSession) {\n this.session = session;\n\t}\n\n setSession(session: AgentSession): void {\n this.session = session;\n }\n\n setAutoCompactEnabled(enabled: boolean): void {\n this.autoCompactEnabled = enabled;\n }\n\n invalidate(): void {\n // Render pulls live session data.\n }\n\n render(width: number): string[] {\n return [getUsageLine(this.session, this.autoCompactEnabled, width)];\n }\n}\n\n/**\n * Sparse statusline below the composer. It mirrors the preview: model + cwd\n * when idle, or one semantic dot with short recovery copy while work is live.\n */\nexport class FooterComponent implements Component {\n declare private session: AgentSession;\n declare private footerData: ReadonlyFooterDataProvider;\n\n constructor(\n session: AgentSession,\n footerData: ReadonlyFooterDataProvider,\n ) {\n this.session = session;\n this.footerData = footerData;\n\t}\n\n setSession(session: AgentSession): void {\n this.session = session;\n }\n\n setAutoCompactEnabled(_enabled: boolean): void {\n // Usage state lives in UsageMeterComponent. Kept for compatibility with existing call sites.\n }\n\n /**\n * No-op: git branch caching now handled by provider.\n * Kept for compatibility with existing call sites in interactive-mode.\n */\n invalidate(): void {\n // No-op: git branch is cached/invalidated by provider\n }\n\n /**\n * Clean up resources.\n * Git watcher cleanup now handled by provider.\n */\n dispose(): void {\n // Git watcher cleanup handled by provider\n }\n\n render(width: number): string[] {\n const state = this.session.state;\n const pwd = replaceHome(this.session.sessionManager.getCwd());\n\n const modelName = state.model?.id || \"no-model\";\n const fastModeSettings = this.session.settingsManager.getCodexFastModeSettings();\n const fastModeEnabled = state.model\n ? shouldApplyCodexFastMode(\n state.model,\n fastModeSettings,\n this.session.orchestrationContext,\n )\n : false;\n let modelLabel = modelName;\n if (state.model?.reasoning) {\n const thinkingLevel = state.thinkingLevel || \"off\";\n modelLabel =\n thinkingLevel === \"off\" ? modelLabel : `${modelLabel} ${thinkingLevel}`;\n }\n modelLabel = formatCodexFastModeModelLabel(modelLabel, fastModeEnabled);\n if (this.footerData.getAvailableProviderCount() > 1 && state.model) {\n modelLabel = `(${state.model.provider}) ${modelLabel}`;\n }\n\n const liveState = this.session.isStreaming\n ? theme.fg(\"muted\", \"esc to interrupt\")\n : undefined;\n const statusText =\n liveState ??\n `${theme.fg(\"dim\", modelLabel)} ${theme.fg(\"dim\", \"•\")} ${theme.fg(\"muted\", pwd)}`;\n return [truncateToWidth(statusText, width, theme.fg(\"dim\", \"...\"))];\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { Loader, Spacer, Text, pickWhimsicalWorkingMessage, AssistantMessageComp
3
3
  import { appendNewChildrenBeforeAttachedChild } from "./interactive-child-ordering.js";
4
4
  import { IsolatedInteractiveRuntime } from "../interactive-engine/isolated-runtime.js";
5
5
  import { RemoteToolExecutionComponent } from "../interactive-engine/remote-renderer.js";
6
+ import { handleSummarizationRetryEvent } from "./interactive-summarization-retry-events.js";
6
7
  function createToolComponent(mode, toolName, toolCallId, args) {
7
8
  const options = {
8
9
  showImages: mode.settingsManager.getShowImages(),
@@ -299,6 +300,11 @@ InteractiveModeBase.prototype.handleEvent = async function (event) {
299
300
  this.ui.requestRender();
300
301
  break;
301
302
  }
303
+ case "summarization_retry_scheduled":
304
+ case "summarization_retry_attempt_start":
305
+ case "summarization_retry_finished":
306
+ handleSummarizationRetryEvent(this, event);
307
+ break;
302
308
  case "auto_retry_start": {
303
309
  // Set up escape to abort retry
304
310
  this.retryEscapeHandler = this.defaultEditor.onEscape;