@bastani/atomic 0.9.28-alpha.1 → 0.9.28-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 (202) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +1 -1
  5. package/dist/builtin/web-access/package.json +1 -1
  6. package/dist/builtin/workflows/CHANGELOG.md +23 -0
  7. package/dist/builtin/workflows/builtin/{chunk-wz8v67bn.js → chunk-aqv8ny38.js} +257 -259
  8. package/dist/builtin/workflows/builtin/{chunk-f61w0hpm.js → chunk-br4ac9a3.js} +1 -1
  9. package/dist/builtin/workflows/builtin/{chunk-tecnpe8j.js → chunk-p3xmajmj.js} +438 -39
  10. package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
  11. package/dist/builtin/workflows/builtin/goal.js +2 -2
  12. package/dist/builtin/workflows/builtin/index.js +4 -4
  13. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  14. package/dist/builtin/workflows/package.json +1 -1
  15. package/dist/builtin/workflows/src/authoring.d.ts +14 -0
  16. package/dist/builtin/workflows/src/extension/index.bundle.mjs +107577 -106722
  17. package/dist/builtin/workflows/src/index.js +42284 -41141
  18. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
  19. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
  20. package/dist/cli/credential-print.d.ts +1 -1
  21. package/dist/cli/credential-print.d.ts.map +1 -1
  22. package/dist/cli/credential-print.js +2 -56
  23. package/dist/cli/credential-print.js.map +1 -1
  24. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  25. package/dist/core/agent-session-accessors.js +6 -1
  26. package/dist/core/agent-session-accessors.js.map +1 -1
  27. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  28. package/dist/core/agent-session-compaction.js +20 -3
  29. package/dist/core/agent-session-compaction.js.map +1 -1
  30. package/dist/core/agent-session-events.d.ts.map +1 -1
  31. package/dist/core/agent-session-events.js +2 -1
  32. package/dist/core/agent-session-events.js.map +1 -1
  33. package/dist/core/agent-session-extension-bindings.d.ts +6 -0
  34. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  35. package/dist/core/agent-session-extension-bindings.js +87 -7
  36. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  37. package/dist/core/agent-session-methods.d.ts +2 -1
  38. package/dist/core/agent-session-methods.d.ts.map +1 -1
  39. package/dist/core/agent-session-methods.js.map +1 -1
  40. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  41. package/dist/core/agent-session-prompt.js +14 -1
  42. package/dist/core/agent-session-prompt.js.map +1 -1
  43. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  44. package/dist/core/agent-session-tool-registry.js +1 -0
  45. package/dist/core/agent-session-tool-registry.js.map +1 -1
  46. package/dist/core/agent-session-types.d.ts +1 -0
  47. package/dist/core/agent-session-types.d.ts.map +1 -1
  48. package/dist/core/agent-session-types.js.map +1 -1
  49. package/dist/core/compaction/classifier-compaction.d.ts +13 -0
  50. package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
  51. package/dist/core/compaction/classifier-compaction.js +110 -0
  52. package/dist/core/compaction/classifier-compaction.js.map +1 -0
  53. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  54. package/dist/core/compaction/compaction-boundary.js +2 -6
  55. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  56. package/dist/core/compaction/compaction-runner.d.ts +16 -1
  57. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  58. package/dist/core/compaction/compaction-runner.js +97 -12
  59. package/dist/core/compaction/compaction-runner.js.map +1 -1
  60. package/dist/core/compaction/compaction-types.d.ts +18 -1
  61. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  62. package/dist/core/compaction/compaction-types.js +1 -1
  63. package/dist/core/compaction/compaction-types.js.map +1 -1
  64. package/dist/core/compaction/fallback-planner.d.ts +1 -0
  65. package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
  66. package/dist/core/compaction/fallback-planner.js +2 -0
  67. package/dist/core/compaction/fallback-planner.js.map +1 -1
  68. package/dist/core/compaction/index.d.ts +3 -0
  69. package/dist/core/compaction/index.d.ts.map +1 -1
  70. package/dist/core/compaction/index.js +3 -0
  71. package/dist/core/compaction/index.js.map +1 -1
  72. package/dist/core/compaction/model-resolver.d.ts +16 -0
  73. package/dist/core/compaction/model-resolver.d.ts.map +1 -0
  74. package/dist/core/compaction/model-resolver.js +18 -0
  75. package/dist/core/compaction/model-resolver.js.map +1 -0
  76. package/dist/core/compaction/morph-compaction.d.ts +14 -0
  77. package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
  78. package/dist/core/compaction/morph-compaction.js +99 -0
  79. package/dist/core/compaction/morph-compaction.js.map +1 -0
  80. package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
  81. package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
  82. package/dist/core/compaction/pi-summary-fallback.js +357 -0
  83. package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
  84. package/dist/core/compaction/planner-outcome.d.ts +10 -6
  85. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  86. package/dist/core/compaction/planner-outcome.js +11 -4
  87. package/dist/core/compaction/planner-outcome.js.map +1 -1
  88. package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
  89. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  90. package/dist/core/compaction/range-planner-diagnostics.js +11 -0
  91. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  92. package/dist/core/compaction/range-planner.d.ts +3 -3
  93. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  94. package/dist/core/compaction/range-planner.js +59 -28
  95. package/dist/core/compaction/range-planner.js.map +1 -1
  96. package/dist/core/compaction/region-trimming.d.ts.map +1 -1
  97. package/dist/core/compaction/region-trimming.js +7 -0
  98. package/dist/core/compaction/region-trimming.js.map +1 -1
  99. package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
  100. package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
  101. package/dist/core/compaction/structured-compaction-input.js +70 -0
  102. package/dist/core/compaction/structured-compaction-input.js.map +1 -0
  103. package/dist/core/compaction/transcript-serialization.d.ts +1 -0
  104. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  105. package/dist/core/compaction/transcript-serialization.js +26 -0
  106. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  107. package/dist/core/extensions/api-types.d.ts +2 -2
  108. package/dist/core/extensions/api-types.d.ts.map +1 -1
  109. package/dist/core/extensions/api-types.js.map +1 -1
  110. package/dist/core/extensions/context-types.d.ts +1 -0
  111. package/dist/core/extensions/context-types.d.ts.map +1 -1
  112. package/dist/core/extensions/context-types.js.map +1 -1
  113. package/dist/core/extensions/loader-api.js.map +1 -1
  114. package/dist/core/extensions/runner-context.d.ts +10 -4
  115. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  116. package/dist/core/extensions/runner-context.js +47 -3
  117. package/dist/core/extensions/runner-context.js.map +1 -1
  118. package/dist/core/extensions/runner.d.ts +10 -3
  119. package/dist/core/extensions/runner.d.ts.map +1 -1
  120. package/dist/core/extensions/runner.js +31 -7
  121. package/dist/core/extensions/runner.js.map +1 -1
  122. package/dist/core/extensions/workflow-events.d.ts +49 -0
  123. package/dist/core/extensions/workflow-events.d.ts.map +1 -1
  124. package/dist/core/extensions/workflow-events.js.map +1 -1
  125. package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
  126. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
  127. package/dist/core/extensions/workflow-run-control-hub.js +72 -1
  128. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
  129. package/dist/core/extensions/workflow-run-control.d.ts +11 -3
  130. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
  131. package/dist/core/extensions/workflow-run-control.js.map +1 -1
  132. package/dist/core/messages.d.ts +1 -0
  133. package/dist/core/messages.d.ts.map +1 -1
  134. package/dist/core/messages.js +5 -1
  135. package/dist/core/messages.js.map +1 -1
  136. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  137. package/dist/core/remote-catalog-provider.js +3 -0
  138. package/dist/core/remote-catalog-provider.js.map +1 -1
  139. package/dist/core/session-manager-history.d.ts.map +1 -1
  140. package/dist/core/session-manager-history.js +4 -2
  141. package/dist/core/session-manager-history.js.map +1 -1
  142. package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
  143. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  144. package/dist/core/settings-manager-basic-accessors.js +29 -0
  145. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  146. package/dist/core/settings-types.d.ts +1 -0
  147. package/dist/core/settings-types.d.ts.map +1 -1
  148. package/dist/core/settings-types.js.map +1 -1
  149. package/dist/core/transcript.d.ts +58 -0
  150. package/dist/core/transcript.d.ts.map +1 -0
  151. package/dist/core/transcript.js +185 -0
  152. package/dist/core/transcript.js.map +1 -0
  153. package/dist/extensions/herdr/index.d.ts.map +1 -1
  154. package/dist/extensions/herdr/index.js +15 -10
  155. package/dist/extensions/herdr/index.js.map +1 -1
  156. package/dist/extensions/herdr/pane-owner.d.ts +6 -2
  157. package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
  158. package/dist/extensions/herdr/pane-owner.js +19 -4
  159. package/dist/extensions/herdr/pane-owner.js.map +1 -1
  160. package/dist/index.d.ts +2 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +2 -0
  163. package/dist/index.js.map +1 -1
  164. package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
  165. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  166. package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
  167. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  168. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  169. package/dist/modes/interactive/components/settings-selector-items.js +43 -0
  170. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  171. package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
  172. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  173. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  174. package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
  175. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  176. package/dist/modes/interactive/interactive-render-chat.js +13 -1
  177. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  178. package/dist/modes/interactive/interactive-selectors.js +8 -0
  179. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  180. package/dist/modes/interactive/interactive-session-runtime.js +2 -0
  181. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  182. package/dist/modes/interactive/interactive-startup.js +1 -1
  183. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  184. package/dist/utils/credential-redaction.d.ts +2 -0
  185. package/dist/utils/credential-redaction.d.ts.map +1 -0
  186. package/dist/utils/credential-redaction.js +20 -0
  187. package/dist/utils/credential-redaction.js.map +1 -0
  188. package/docs/compaction/reference.md +10 -4
  189. package/docs/compaction.md +40 -8
  190. package/docs/docs.json +1 -0
  191. package/docs/extensions/api-reference.md +4 -0
  192. package/docs/extensions/events.md +2 -2
  193. package/docs/providers.md +12 -1
  194. package/docs/sdk/reference.md +16 -1
  195. package/docs/sdk/web-server.md +325 -0
  196. package/docs/sdk.md +83 -1
  197. package/docs/security.md +1 -1
  198. package/docs/workflows/api-reference.md +71 -3
  199. package/docs/workflows/builtins.md +4 -0
  200. package/docs/workflows/operations.md +12 -4
  201. package/npm-shrinkwrap.json +32 -32
  202. package/package.json +3 -3
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":["export type { ExtensionBindings } from \"./core/agent-session-types.js\";\nexport {\n\tCacheWarmer,\n\ttype CacheWarmingDecisionEvent,\n\ttype CacheWarmingDecisionEventResult,\n\ttype CacheWarmingStatus,\n} from \"./core/cache-warmer.ts\";\nexport type { ExecuteToolOptions, ExtensionToolContext } from \"./core/extensions/context-types.ts\";\nexport type {\n\tHostDiagnostic,\n\tHostInput,\n\tHostInputOptions,\n\tQuestionAnswer,\n\tQuestionnaireError,\n\tQuestionnaireResult,\n\tQuestionParams,\n} from \"./core/extensions/host-input.js\";\nexport type {\n\tToolAnnotations,\n\tToolExposure,\n\tToolLoadout,\n\tToolLoadoutChanges,\n\tToolNamespace,\n\tToolRendererResolver,\n\tToolRenderers,\n} from \"./core/extensions/tool-types.ts\";\nexport { resolveRestoredModelReference } from \"./core/model-resolver-initial.ts\";\nexport type { UsageEntry } from \"./core/session-manager.ts\";\nexport { CACHE_WARMING_MODES, type CacheWarmingMode } from \"./core/settings-manager.ts\";\n// Internal trusted-host task integration (not model authority).\nexport { AgentTaskHost, type AgentTaskHostBinding, type AgentTaskRunnerFactory } from \"./core/tasks/agent-adapter.js\";\nexport type { AgentIntent, OperationId, TaskId, TaskResult, WaitPolicy } from \"./core/tasks/contracts.js\";\nexport { type AdmittedAgentTask, collectAgentTasks } from \"./core/tasks/execution-scope.js\";\nexport { bindOwnerTaskStore, getOwnerTaskStore, OwnerTaskStore } from \"./core/tasks/owner-store.js\";\nexport { formatToolCallWithArgs } from \"./core/tools/render-utils.ts\";\nexport { type CodemodeExtensionOptions, createCodemodeExtension } from \"./extensions/codemode/index.js\";\nexport {\n\ttype CodemodeToolDetails,\n\ttype CodemodeToolOptions,\n\tcreateCodemodeDescription,\n\tcreateCodemodeTool,\n\tcreateCodemodeToolDefinition,\n} from \"./extensions/codemode/tool.js\";\nexport { createToolSearchExtension } from \"./extensions/tool-search/index.js\";\nexport { createToolSearchToolDefinition, type ToolSearchToolOptions } from \"./extensions/tool-search/tool.js\";\nexport { renderTaskFooter, TaskList, taskListSections } from \"./modes/interactive/components/task-list.js\";\nexport { TaskRow } from \"./modes/interactive/components/task-row.js\";\nexport {\n\tapplyAssistantMessageDelta,\n\tbeginStreamingAssistantMessage,\n} from \"./modes/interactive/streaming-assistant-message.ts\";\n// 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\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetBundledInteractiveAssetPath,\n\tgetChangelogPath,\n\tgetDocsPath,\n\tgetEnvNames,\n\tgetEnvValue,\n\tgetExamplesPath,\n\tgetExportTemplateDir,\n\tgetInteractiveAssetsDir,\n\tgetLegacyAgentDir,\n\tgetPackageDir,\n\tgetPackageJsonPath,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetReadmePath,\n\tgetThemesDir,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tisBunBinary,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n} from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype CompactionReason,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model runtime\nexport { AuthStorage, readStoredCredential } from \"./core/auth-storage.ts\";\nexport {\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n} from \"./core/auth-storage-backends.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport {\n\ttype CallbackActivityDescriptor,\n\ttype CallbackActivityKind,\n\trunCallback,\n\trunSynchronousCallback,\n} from \"./core/callback-activity.ts\";\n// Cloudflare AI Gateway over the Workers AI binding (no API token; see docs/providers.md)\nexport {\n\ttype AiGatewayBinding,\n\ttype AiGatewayBindingGateway,\n\ttype AiGatewayUniversalRequestLike,\n\tCLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL,\n\tcreateGatewayBindingFetch,\n\ttype GatewayBindingFetchOptions,\n} from \"./core/cloudflare-gateway-binding.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactedTranscript,\n\ttype CompactionPlannerModel,\n\ttype CompactionPlanOptions,\n\ttype CompactionRung,\n\ttype CompactionRungResult,\n\ttype CompactionRunRequest,\n\ttype CompactionUrgency,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgetLastAssistantUsage,\n\ttype LineRange,\n\ttype PlannerAuth,\n\ttype PlannerBudget,\n\ttype PlannerLimitClass,\n\ttype PlannerOutcome,\n\tprepareBranchEntries,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tserializeConversation,\n\tserializeConversationForCompaction,\n\tshouldCompact,\n\tstartNewContextWindow,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n} from \"./core/compaction/index.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\nexport {\n\tAutoRoutingInferenceError,\n\ttype ModelRoute,\n\ttype ModelRoutingContext,\n\trouteExecutionModel,\n} from \"./core/execution-model-router.js\";\nexport { areExperimentalFeaturesEnabled } from \"./core/experimental.ts\";\nexport { sessionScopedExtensionState } from \"./core/extension-session-state.ts\";\nexport {\n\tgetModelFastRoute,\n\tresolveUpstreamModelId,\n\tusesChatGptCodexTransport,\n\tusesFirstPartyCodexRouting,\n\twithCodexFastRouteHeaders,\n\twithFastRouteStreamOptions,\n} from \"./core/fast-model-routing.ts\";\nexport {\n\tCODEX_FAST_ROUTE_HEADER,\n\tCODEX_FAST_ROUTE_ORIGINATOR,\n} from \"./core/fast-model-routing-transport.ts\";\nexport {\n\tANTHROPIC_FAST_MODE_MODEL_IDS,\n\tcopilotAdvertisedFastModelIds,\n\tderiveFastModelVariants,\n\tFAST_MODEL_ID_SUFFIX,\n\tFAST_MODEL_SERVICE_TIER,\n\tFAST_MODEL_SPEED,\n\ttype FastModelVariantDerivation,\n\ttype FastModelVariantDiagnostic,\n\ttype FastModelVariantsOptions,\n\tfastModelId,\n\tisNativeFastRouteApi,\n\tusesAnthropicFastMode,\n\tusesOpenAIFastServiceTier,\n\tusesXaiFastServiceTier,\n\twithFastModelVariants,\n} from \"./core/fast-model-variants.ts\";\nexport {\n\tparseFlattenedKeyPath,\n\treconstructFlattenedKeys,\n\tunflattenArgumentsWithSchema,\n} from \"./core/flattened-tool-arguments.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport {\n\tRUNTIME_INTERCOM_GROUP_ENV,\n\treadRuntimeIntercomGroup,\n\truntimeIntercomGroupEnvKey,\n} from \"./core/intercom-runtime-group.ts\";\nexport { keybindingIdentity } from \"./core/keybinding-identity.js\";\nexport { matchesMcpDirectToolSelection } from \"./core/mcp-child-policy.ts\";\nexport {\n\ttype McpExposure,\n\ttype McpOAuthConfig,\n\ttype McpServerConfig,\n\ttype McpServerContribution,\n\tmcpNamespace,\n\tvalidateMcpServerConfig,\n} from \"./core/mcp-servers.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport type {\n\tModelFallbackFailureKind,\n\tModelFallbackFailureSignal,\n\tModelFallbackFailureSource,\n} from \"./core/model-fallback-failures.ts\";\nexport {\n\terrorMessage,\n\tisRetryableModelFailure,\n\tisRetryableSameModelFailure,\n\tmodelFailureMessage,\n\tnormalizeModelFailureSignal,\n} from \"./core/model-fallback-failures.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport {\n\teligiblePair,\n\ttype ModelConstraints,\n\tModelConstraintsSchema,\n\ttype ModelRouterOutput,\n\tparseModelConstraints,\n\tsetsProviders,\n} from \"./core/model-routing-constraints.js\";\nexport {\n\tisModelRoutingDebugEnabled,\n\tMODEL_ROUTING_DEBUG_ENV,\n\treportModelRoutingDebug,\n} from \"./core/model-routing-debug.js\";\nexport {\n\tDIFFICULTY_LEVELS,\n\ttype Difficulty,\n\tMISTAKE_COST_LEVELS,\n\ttype MistakeCost,\n\tmergeTaskNeeds,\n\tparseTaskNeeds,\n\ttype TaskNeeds,\n\tTaskNeedsSchema,\n\tWORK_KINDS,\n\ttype WorkKind,\n} from \"./core/model-routing-needs.js\";\nexport {\n\ttype CreateModelRuntimeOptions,\n\tCredentialSynchronizationError,\n\ttype CredentialSynchronizationOperation,\n\tModelRuntime,\n\ttype ModelRuntimeAuthOverrides,\n} from \"./core/model-runtime.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedMcpServer,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type {\n\tDefaultResourceLoaderInheritanceSnapshot,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n\tSkillCandidate,\n\tSkillCatalog,\n\tSkillCatalogCommand,\n\tSkillResolution,\n} from \"./core/resource-loader.ts\";\nexport {\n\tbuildSkillCatalog,\n\tDefaultResourceLoader,\n\tgetSkillCatalog,\n\tloadProjectContextFiles,\n} from \"./core/resource-loader.ts\";\nexport { nextRetryDecision, type RetryDecision, type RetryPolicySettings } from \"./core/retry-policy.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype AtomicBuiltin,\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\tcreateLsTool,\n\tcreatePowerShellTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateSearchTool,\n\tcreateStructuredOutputCapture,\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\tSTRUCTURED_OUTPUT_TOOL_NAME,\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\ttype BranchSummaryEntry,\n\tbuildContextEntries,\n\tbuildSessionContext,\n\tbuildSessionProjection,\n\ttype CompactionEntry,\n\ttype ContextEditableContent,\n\ttype ContextEditEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionBoundaryEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\ttype ProjectedSessionEntry,\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 SessionNameState,\n\ttype SessionProjection,\n\ttype SessionTreeNode,\n\ttype SessionWorkflowMetadata,\n\tsessionEntryToContextMessages,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\tWORKFLOW_SESSION_METADATA_ENV,\n\tworkflowSessionMetadataFromEnv,\n} from \"./core/session-manager-classification.ts\";\nexport type { DefaultProjectTrust, QuietStartup } from \"./core/settings-manager.ts\";\nexport {\n\ttype CompactionModelOverride,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype ModelRoutingSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\ttype Settings,\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\";\nexport {\n\tgenerateStructuredOutput,\n\ttype StructuredOutputRequest,\n\ttype StructuredOutputResult,\n} from \"./core/structured-output/index.js\";\nexport type { NormalizedBuildSystemPromptOptions } from \"./core/system-prompt.ts\";\nexport { type EditDiffResult, generateDiffString, generateUnifiedPatch } from \"./core/tools/edit-diff.ts\";\n// Builtin tool definitions reusable by first-party extensions (e.g. workflows\n// invoking the structured ask_user_question UI deterministically).\n// Tools\nexport {\n\tBASH_SHELL_PRESENTATION,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashToolSystemPromptContribution,\n\tcreateAskUserQuestionToolDefinition,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateKillTool,\n\tcreateKillToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLocalPowerShellOperations,\n\tcreateLsToolDefinition,\n\tcreatePowerShellToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateSearchToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditToolSystemPromptContribution,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindToolSystemPromptContribution,\n\tformatSize,\n\ttype KillToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsToolSystemPromptContribution,\n\ttype PowerShellOperations,\n\ttype PowerShellSpawnContext,\n\ttype PowerShellSpawnHook,\n\ttype PowerShellToolDetails,\n\ttype PowerShellToolInput,\n\ttype PowerShellToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadToolSystemPromptContribution,\n\ttype SearchToolDetails,\n\ttype SearchToolInput,\n\ttype SearchToolOptions,\n\ttype ShellToolPresentation,\n\tsearchToolSystemPromptContribution,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteFileOptions,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n\twriteToolSystemPromptContribution,\n} from \"./core/tools/index.ts\";\nexport {\n\thasProjectTrustInputs,\n\thasTrustRequiringProjectResources,\n\ttype ProjectTrustDecision,\n\tProjectTrustStore,\n\ttype ProjectTrustStoreEntry,\n\ttype ProjectTrustUpdate,\n\tTRUST_REQUIRING_PROJECT_CONFIG_RESOURCES,\n} from \"./core/trust-manager.ts\";\nexport { StringEnum, type StringEnumOptions } from \"./core/typebox-compat.ts\";\nexport {\n\ttype LoadedMcpConfig,\n\ttype McpServerConfigPatch,\n\ttype McpServerEntry,\n\tupdateMcpServerConfig,\n} from \"./extensions/mcp/config.ts\";\nexport { createMcpExtension, type McpExtensionOptions } from \"./extensions/mcp/index.js\";\nexport { McpOAuthCredentialStore } from \"./extensions/mcp/oauth.ts\";\nexport * from \"./index-extensions.js\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\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\tBranchSummaryMessageComponent,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\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\ttype ChatSessionSubmitMode,\n\tChatTranscriptComponent,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tCustomEditor,\n\ttype CustomEditorOptions,\n\tCustomEntryComponent,\n\tCustomMessageComponent,\n\tchatEntriesFromAgentMessages,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tkeyHint,\n\tkeyHintIfBound,\n\tkeyText,\n\tLiveChatEntriesController,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderChatMessageEntry,\n\trenderDiff,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTRANSCRIPT_JUMP_TO_END_URL,\n\tTranscriptFollowIndicator,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUsageMeterComponent,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n} from \"./modes/interactive/components/index.ts\";\nexport {\n\tclassifyChatCommand,\n\tcreateSessionSkillAutocompleteProvider,\n\tgetSessionSkillCommands,\n} from \"./modes/interactive/skill-command-autocomplete.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.js\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport { createChildProcessEnvironment, spawnProcess } from \"./utils/child-process.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport {\n\tisSafeFsWatchPathError,\n\tisUnsafeWindowsShortPath,\n\tresolveNativeWatchPath,\n\tSAFE_FS_WATCH_CANONICALIZATION_FAILED,\n\tSAFE_FS_WATCH_UNSAFE_WINDOWS_SHORT_PATH,\n\ttype SafeFsWatchErrorCode,\n\ttype SafeFsWatchPathError,\n\twatchWithErrorHandler,\n} from \"./utils/fs-watch.ts\";\nexport { createGitEnvironment, GIT_LOCAL_ENV_VARS } from \"./utils/git-env.ts\";\nexport { convertToPng } from \"./utils/image-convert.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\nexport { INTERACTIVE_ENGINE_ENV_VARS, scrubInteractiveEngineEnv } from \"./utils/interactive-engine-env.ts\";\nexport { detectSupportedImageMimeTypeFromFile } from \"./utils/mime.ts\";\n// Shell utilities\nexport { getPowerShellConfig, getShellConfig } from \"./utils/shell.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export type { ExtensionBindings } from \"./core/agent-session-types.js\";\nexport {\n\tCacheWarmer,\n\ttype CacheWarmingDecisionEvent,\n\ttype CacheWarmingDecisionEventResult,\n\ttype CacheWarmingStatus,\n} from \"./core/cache-warmer.ts\";\nexport type { ExecuteToolOptions, ExtensionToolContext } from \"./core/extensions/context-types.ts\";\nexport type {\n\tHostDiagnostic,\n\tHostInput,\n\tHostInputOptions,\n\tQuestionAnswer,\n\tQuestionnaireError,\n\tQuestionnaireResult,\n\tQuestionParams,\n} from \"./core/extensions/host-input.js\";\nexport {\n\ttype ExtensionContextEffectPhase,\n\tpublishExtensionContextEffect,\n\tregisterExtensionContextRetirementEffect,\n} from \"./core/extensions/runner-context.ts\";\nexport type {\n\tToolAnnotations,\n\tToolExposure,\n\tToolLoadout,\n\tToolLoadoutChanges,\n\tToolNamespace,\n\tToolRendererResolver,\n\tToolRenderers,\n} from \"./core/extensions/tool-types.ts\";\nexport { resolveRestoredModelReference } from \"./core/model-resolver-initial.ts\";\nexport type { UsageEntry } from \"./core/session-manager.ts\";\nexport { CACHE_WARMING_MODES, type CacheWarmingMode } from \"./core/settings-manager.ts\";\n// Internal trusted-host task integration (not model authority).\nexport { AgentTaskHost, type AgentTaskHostBinding, type AgentTaskRunnerFactory } from \"./core/tasks/agent-adapter.js\";\nexport type { AgentIntent, OperationId, TaskId, TaskResult, WaitPolicy } from \"./core/tasks/contracts.js\";\nexport { type AdmittedAgentTask, collectAgentTasks } from \"./core/tasks/execution-scope.js\";\nexport { bindOwnerTaskStore, getOwnerTaskStore, OwnerTaskStore } from \"./core/tasks/owner-store.js\";\nexport { formatToolCallWithArgs } from \"./core/tools/render-utils.ts\";\nexport {\n\tcreateTranscript,\n\ttype Transcript,\n\ttype TranscriptOptions,\n\ttype TranscriptPart,\n\ttype TranscriptTextPart,\n\ttype TranscriptThinkingPart,\n\ttype TranscriptToolCallPart,\n\ttype TranscriptToolResult,\n\ttype TranscriptToolResultFormat,\n} from \"./core/transcript.js\";\nexport { type CodemodeExtensionOptions, createCodemodeExtension } from \"./extensions/codemode/index.js\";\nexport {\n\ttype CodemodeToolDetails,\n\ttype CodemodeToolOptions,\n\tcreateCodemodeDescription,\n\tcreateCodemodeTool,\n\tcreateCodemodeToolDefinition,\n} from \"./extensions/codemode/tool.js\";\nexport { createToolSearchExtension } from \"./extensions/tool-search/index.js\";\nexport { createToolSearchToolDefinition, type ToolSearchToolOptions } from \"./extensions/tool-search/tool.js\";\nexport { renderTaskFooter, TaskList, taskListSections } from \"./modes/interactive/components/task-list.js\";\nexport { TaskRow } from \"./modes/interactive/components/task-row.js\";\nexport {\n\tapplyAssistantMessageDelta,\n\tbeginStreamingAssistantMessage,\n} from \"./modes/interactive/streaming-assistant-message.ts\";\n// 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\tgetAgentConfigPaths,\n\tgetAgentDir,\n\tgetAgentDirs,\n\tgetBundledInteractiveAssetPath,\n\tgetChangelogPath,\n\tgetDocsPath,\n\tgetEnvNames,\n\tgetEnvValue,\n\tgetExamplesPath,\n\tgetExportTemplateDir,\n\tgetInteractiveAssetsDir,\n\tgetLegacyAgentDir,\n\tgetPackageDir,\n\tgetPackageJsonPath,\n\tgetProjectConfigDirs,\n\tgetProjectConfigPaths,\n\tgetReadmePath,\n\tgetThemesDir,\n\tgetUserConfigDirs,\n\tgetUserConfigPaths,\n\thasEnvValue,\n\tisBunBinary,\n\tLEGACY_CONFIG_DIR_NAME,\n\tLEGACY_ENV_PREFIX,\n\tPACKAGE_NAME,\n\tsetEnvValue,\n\tVERSION,\n\tWORKFLOW_STAGE_SUBAGENT_GUARD_ENV,\n} from \"./config.js\";\nexport {\n\tAgentSession,\n\ttype AgentSessionConfig,\n\ttype AgentSessionEvent,\n\ttype AgentSessionEventListener,\n\ttype CompactionReason,\n\ttype ModelCycleResult,\n\ttype ParsedSkillBlock,\n\ttype PromptOptions,\n\tparseSkillBlock,\n\ttype SessionStats,\n} from \"./core/agent-session.js\";\n// Auth and model runtime\nexport { AuthStorage, readStoredCredential } from \"./core/auth-storage.ts\";\nexport {\n\ttype AuthStorageBackend,\n\tFileAuthStorageBackend,\n\tInMemoryAuthStorageBackend,\n} from \"./core/auth-storage-backends.ts\";\nexport { type BashResult, executeBashWithOperations } from \"./core/bash-executor.ts\";\nexport { getBuiltinPackagePaths } from \"./core/builtin-packages.ts\";\nexport {\n\ttype CallbackActivityDescriptor,\n\ttype CallbackActivityKind,\n\trunCallback,\n\trunSynchronousCallback,\n} from \"./core/callback-activity.ts\";\n// Cloudflare AI Gateway over the Workers AI binding (no API token; see docs/providers.md)\nexport {\n\ttype AiGatewayBinding,\n\ttype AiGatewayBindingGateway,\n\ttype AiGatewayUniversalRequestLike,\n\tCLOUDFLARE_GATEWAY_BINDING_AUTH_SENTINEL,\n\tcreateGatewayBindingFetch,\n\ttype GatewayBindingFetchOptions,\n} from \"./core/cloudflare-gateway-binding.ts\";\n// Compaction\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\ttype CompactedTranscript,\n\ttype CompactionPlannerModel,\n\ttype CompactionPlanOptions,\n\ttype CompactionRung,\n\ttype CompactionRungResult,\n\ttype CompactionRunRequest,\n\ttype CompactionUrgency,\n\tcalculateContextTokens,\n\tcollectEntriesForBranchSummary,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateTokens,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tgetLastAssistantUsage,\n\ttype LineRange,\n\ttype PlannerAuth,\n\ttype PlannerBudget,\n\ttype PlannerLimitClass,\n\ttype PlannerOutcome,\n\tprepareBranchEntries,\n\tprepareCompactionBoundary,\n\trunVerbatimCompaction,\n\tserializeConversation,\n\tserializeConversationForCompaction,\n\tshouldCompact,\n\tstartNewContextWindow,\n\ttype VerbatimCompactionDetails,\n\ttype VerbatimCompactionParameters,\n\ttype VerbatimCompactionPreparation,\n\ttype VerbatimCompactionResult,\n} from \"./core/compaction/index.ts\";\nexport { createEventBus, type EventBus, type EventBusController } from \"./core/event-bus.js\";\nexport {\n\tAutoRoutingInferenceError,\n\ttype ModelRoute,\n\ttype ModelRoutingContext,\n\trouteExecutionModel,\n} from \"./core/execution-model-router.js\";\nexport { areExperimentalFeaturesEnabled } from \"./core/experimental.ts\";\nexport { sessionScopedExtensionState } from \"./core/extension-session-state.ts\";\nexport {\n\tgetModelFastRoute,\n\tresolveUpstreamModelId,\n\tusesChatGptCodexTransport,\n\tusesFirstPartyCodexRouting,\n\twithCodexFastRouteHeaders,\n\twithFastRouteStreamOptions,\n} from \"./core/fast-model-routing.ts\";\nexport {\n\tCODEX_FAST_ROUTE_HEADER,\n\tCODEX_FAST_ROUTE_ORIGINATOR,\n} from \"./core/fast-model-routing-transport.ts\";\nexport {\n\tANTHROPIC_FAST_MODE_MODEL_IDS,\n\tcopilotAdvertisedFastModelIds,\n\tderiveFastModelVariants,\n\tFAST_MODEL_ID_SUFFIX,\n\tFAST_MODEL_SERVICE_TIER,\n\tFAST_MODEL_SPEED,\n\ttype FastModelVariantDerivation,\n\ttype FastModelVariantDiagnostic,\n\ttype FastModelVariantsOptions,\n\tfastModelId,\n\tisNativeFastRouteApi,\n\tusesAnthropicFastMode,\n\tusesOpenAIFastServiceTier,\n\tusesXaiFastServiceTier,\n\twithFastModelVariants,\n} from \"./core/fast-model-variants.ts\";\nexport {\n\tparseFlattenedKeyPath,\n\treconstructFlattenedKeys,\n\tunflattenArgumentsWithSchema,\n} from \"./core/flattened-tool-arguments.ts\";\n// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)\nexport type { ReadonlyFooterDataProvider } from \"./core/footer-data-provider.ts\";\nexport {\n\tRUNTIME_INTERCOM_GROUP_ENV,\n\treadRuntimeIntercomGroup,\n\truntimeIntercomGroupEnvKey,\n} from \"./core/intercom-runtime-group.ts\";\nexport { keybindingIdentity } from \"./core/keybinding-identity.js\";\nexport { matchesMcpDirectToolSelection } from \"./core/mcp-child-policy.ts\";\nexport {\n\ttype McpExposure,\n\ttype McpOAuthConfig,\n\ttype McpServerConfig,\n\ttype McpServerContribution,\n\tmcpNamespace,\n\tvalidateMcpServerConfig,\n} from \"./core/mcp-servers.ts\";\nexport { convertToLlm } from \"./core/messages.ts\";\nexport type {\n\tModelFallbackFailureKind,\n\tModelFallbackFailureSignal,\n\tModelFallbackFailureSource,\n} from \"./core/model-fallback-failures.ts\";\nexport {\n\terrorMessage,\n\tisRetryableModelFailure,\n\tisRetryableSameModelFailure,\n\tmodelFailureMessage,\n\tnormalizeModelFailureSignal,\n} from \"./core/model-fallback-failures.ts\";\nexport { ModelRegistry } from \"./core/model-registry.ts\";\nexport {\n\teligiblePair,\n\ttype ModelConstraints,\n\tModelConstraintsSchema,\n\ttype ModelRouterOutput,\n\tparseModelConstraints,\n\tsetsProviders,\n} from \"./core/model-routing-constraints.js\";\nexport {\n\tisModelRoutingDebugEnabled,\n\tMODEL_ROUTING_DEBUG_ENV,\n\treportModelRoutingDebug,\n} from \"./core/model-routing-debug.js\";\nexport {\n\tDIFFICULTY_LEVELS,\n\ttype Difficulty,\n\tMISTAKE_COST_LEVELS,\n\ttype MistakeCost,\n\tmergeTaskNeeds,\n\tparseTaskNeeds,\n\ttype TaskNeeds,\n\tTaskNeedsSchema,\n\tWORK_KINDS,\n\ttype WorkKind,\n} from \"./core/model-routing-needs.js\";\nexport {\n\ttype CreateModelRuntimeOptions,\n\tCredentialSynchronizationError,\n\ttype CredentialSynchronizationOperation,\n\tModelRuntime,\n\ttype ModelRuntimeAuthOverrides,\n} from \"./core/model-runtime.js\";\nexport type {\n\tPackageManager,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedMcpServer,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./core/package-manager.ts\";\nexport { DefaultPackageManager } from \"./core/package-manager.ts\";\nexport type {\n\tDefaultResourceLoaderInheritanceSnapshot,\n\tResourceCollision,\n\tResourceDiagnostic,\n\tResourceLoader,\n\tSkillCandidate,\n\tSkillCatalog,\n\tSkillCatalogCommand,\n\tSkillResolution,\n} from \"./core/resource-loader.ts\";\nexport {\n\tbuildSkillCatalog,\n\tDefaultResourceLoader,\n\tgetSkillCatalog,\n\tloadProjectContextFiles,\n} from \"./core/resource-loader.ts\";\nexport { nextRetryDecision, type RetryDecision, type RetryPolicySettings } from \"./core/retry-policy.ts\";\n// SDK for programmatic usage\nexport {\n\tAgentSessionRuntime,\n\ttype AgentSessionRuntimeDiagnostic,\n\ttype AgentSessionServices,\n\ttype AtomicBuiltin,\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\tcreateLsTool,\n\tcreatePowerShellTool,\n\tcreateReadOnlyTools,\n\tcreateReadTool,\n\tcreateSearchTool,\n\tcreateStructuredOutputCapture,\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\tSTRUCTURED_OUTPUT_TOOL_NAME,\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\ttype BranchSummaryEntry,\n\tbuildContextEntries,\n\tbuildSessionContext,\n\tbuildSessionProjection,\n\ttype CompactionEntry,\n\ttype ContextEditableContent,\n\ttype ContextEditEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\tgetLatestCompactionBoundaryEntry,\n\ttype ModelChangeEntry,\n\tmigrateSessionEntries,\n\ttype NewSessionOptions,\n\ttype ProjectedSessionEntry,\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 SessionNameState,\n\ttype SessionProjection,\n\ttype SessionTreeNode,\n\ttype SessionWorkflowMetadata,\n\tsessionEntryToContextMessages,\n\ttype ThinkingLevelChangeEntry,\n} from \"./core/session-manager.ts\";\nexport {\n\tWORKFLOW_SESSION_METADATA_ENV,\n\tworkflowSessionMetadataFromEnv,\n} from \"./core/session-manager-classification.ts\";\nexport type { DefaultProjectTrust, QuietStartup } from \"./core/settings-manager.ts\";\nexport {\n\ttype CompactionModelOverride,\n\ttype CompactionSettings,\n\ttype ImageSettings,\n\ttype ModelRoutingSettings,\n\ttype PackageSource,\n\ttype RetrySettings,\n\ttype Settings,\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\";\nexport {\n\tgenerateStructuredOutput,\n\ttype StructuredOutputRequest,\n\ttype StructuredOutputResult,\n} from \"./core/structured-output/index.js\";\nexport type { NormalizedBuildSystemPromptOptions } from \"./core/system-prompt.ts\";\nexport { type EditDiffResult, generateDiffString, generateUnifiedPatch } from \"./core/tools/edit-diff.ts\";\n// Builtin tool definitions reusable by first-party extensions (e.g. workflows\n// invoking the structured ask_user_question UI deterministically).\n// Tools\nexport {\n\tBASH_SHELL_PRESENTATION,\n\ttype BashOperations,\n\ttype BashSpawnContext,\n\ttype BashSpawnHook,\n\ttype BashToolDetails,\n\ttype BashToolInput,\n\ttype BashToolOptions,\n\tbashToolSystemPromptContribution,\n\tcreateAskUserQuestionToolDefinition,\n\tcreateBashToolDefinition,\n\tcreateEditToolDefinition,\n\tcreateFindToolDefinition,\n\tcreateKillTool,\n\tcreateKillToolDefinition,\n\tcreateLocalBashOperations,\n\tcreateLocalPowerShellOperations,\n\tcreateLsToolDefinition,\n\tcreatePowerShellToolDefinition,\n\tcreateReadToolDefinition,\n\tcreateSearchToolDefinition,\n\tcreateWriteToolDefinition,\n\tDEFAULT_MAX_BYTES,\n\tDEFAULT_MAX_LINES,\n\ttype EditOperations,\n\ttype EditToolDetails,\n\ttype EditToolInput,\n\ttype EditToolOptions,\n\teditToolSystemPromptContribution,\n\ttype FindOperations,\n\ttype FindToolDetails,\n\ttype FindToolInput,\n\ttype FindToolOptions,\n\tfindToolSystemPromptContribution,\n\tformatSize,\n\ttype KillToolOptions,\n\ttype LsOperations,\n\ttype LsToolDetails,\n\ttype LsToolInput,\n\ttype LsToolOptions,\n\tlsToolSystemPromptContribution,\n\ttype PowerShellOperations,\n\ttype PowerShellSpawnContext,\n\ttype PowerShellSpawnHook,\n\ttype PowerShellToolDetails,\n\ttype PowerShellToolInput,\n\ttype PowerShellToolOptions,\n\ttype ReadOperations,\n\ttype ReadToolDetails,\n\ttype ReadToolInput,\n\ttype ReadToolOptions,\n\treadToolSystemPromptContribution,\n\ttype SearchToolDetails,\n\ttype SearchToolInput,\n\ttype SearchToolOptions,\n\ttype ShellToolPresentation,\n\tsearchToolSystemPromptContribution,\n\ttype ToolsOptions,\n\ttype TruncationOptions,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n\ttruncateTail,\n\ttype WriteFileOptions,\n\ttype WriteOperations,\n\ttype WriteToolInput,\n\ttype WriteToolOptions,\n\twithFileMutationQueue,\n\twriteToolSystemPromptContribution,\n} from \"./core/tools/index.ts\";\nexport {\n\thasProjectTrustInputs,\n\thasTrustRequiringProjectResources,\n\ttype ProjectTrustDecision,\n\tProjectTrustStore,\n\ttype ProjectTrustStoreEntry,\n\ttype ProjectTrustUpdate,\n\tTRUST_REQUIRING_PROJECT_CONFIG_RESOURCES,\n} from \"./core/trust-manager.ts\";\nexport { StringEnum, type StringEnumOptions } from \"./core/typebox-compat.ts\";\nexport {\n\ttype LoadedMcpConfig,\n\ttype McpServerConfigPatch,\n\ttype McpServerEntry,\n\tupdateMcpServerConfig,\n} from \"./extensions/mcp/config.ts\";\nexport { createMcpExtension, type McpExtensionOptions } from \"./extensions/mcp/index.js\";\nexport { McpOAuthCredentialStore } from \"./extensions/mcp/oauth.ts\";\nexport * from \"./index-extensions.js\";\n// Main entry point\nexport { type MainOptions, main } from \"./main.ts\";\nexport {\n\tInteractiveMode,\n\ttype InteractiveModeOptions,\n\ttype ModelInfo,\n\ttype PrintModeOptions,\n\tRpcClient,\n\ttype RpcClientOptions,\n\ttype RpcCommand,\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\tBranchSummaryMessageComponent,\n\ttype ChatMessageEntry,\n\ttype ChatMessageRenderOptions,\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\ttype ChatSessionSubmitMode,\n\tChatTranscriptComponent,\n\ttype ChatTranscriptEntryLike,\n\ttype ChatTranscriptRenderer,\n\ttype ChatTranscriptRole,\n\tCustomEditor,\n\ttype CustomEditorOptions,\n\tCustomEntryComponent,\n\tCustomMessageComponent,\n\tchatEntriesFromAgentMessages,\n\tDynamicBorder,\n\tExtensionEditorComponent,\n\tExtensionInputComponent,\n\tExtensionSelectorComponent,\n\tFooterComponent,\n\tkeyHint,\n\tkeyHintIfBound,\n\tkeyText,\n\tLiveChatEntriesController,\n\tLoginDialogComponent,\n\tModelSelectorComponent,\n\tOAuthSelectorComponent,\n\ttype RenderDiffOptions,\n\trawKeyHint,\n\trenderChatMessageEntry,\n\trenderDiff,\n\tScrollableChatTranscriptComponent,\n\tScrollableComponentViewport,\n\tSessionSelectorComponent,\n\ttype SettingsCallbacks,\n\ttype SettingsConfig,\n\tSettingsSelectorComponent,\n\tShowImagesSelectorComponent,\n\tSkillInvocationMessageComponent,\n\tThemeSelectorComponent,\n\tThinkingSelectorComponent,\n\tToolExecutionComponent,\n\ttype ToolExecutionOptions,\n\tTRANSCRIPT_JUMP_TO_END_URL,\n\tTranscriptFollowIndicator,\n\tTreeSelectorComponent,\n\ttruncateToVisualLines,\n\tUsageMeterComponent,\n\tUserMessageComponent,\n\tUserMessageSelectorComponent,\n\ttype VisualTruncateResult,\n\tWorkingStatusComponent,\n\ttype WorkingStatusComponentOptions,\n} from \"./modes/interactive/components/index.ts\";\nexport {\n\tclassifyChatCommand,\n\tcreateSessionSkillAutocompleteProvider,\n\tgetSessionSkillCommands,\n} from \"./modes/interactive/skill-command-autocomplete.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.js\";\n// Run modes for programmatic SDK usage\nexport { pickWhimsicalWorkingMessage } from \"./modes/interactive/whimsical-messages.ts\";\nexport { createChildProcessEnvironment, spawnProcess } from \"./utils/child-process.ts\";\n// Clipboard utilities\nexport { copyToClipboard } from \"./utils/clipboard.js\";\nexport { parseFrontmatter, stripFrontmatter } from \"./utils/frontmatter.ts\";\nexport {\n\tisSafeFsWatchPathError,\n\tisUnsafeWindowsShortPath,\n\tresolveNativeWatchPath,\n\tSAFE_FS_WATCH_CANONICALIZATION_FAILED,\n\tSAFE_FS_WATCH_UNSAFE_WINDOWS_SHORT_PATH,\n\ttype SafeFsWatchErrorCode,\n\ttype SafeFsWatchPathError,\n\twatchWithErrorHandler,\n} from \"./utils/fs-watch.ts\";\nexport { createGitEnvironment, GIT_LOCAL_ENV_VARS } from \"./utils/git-env.ts\";\nexport { convertToPng } from \"./utils/image-convert.ts\";\nexport { formatDimensionNote, type ResizedImage, resizeImage } from \"./utils/image-resize.ts\";\nexport { INTERACTIVE_ENGINE_ENV_VARS, scrubInteractiveEngineEnv } from \"./utils/interactive-engine-env.ts\";\nexport { detectSupportedImageMimeTypeFromFile } from \"./utils/mime.ts\";\n// Shell utilities\nexport { getPowerShellConfig, getShellConfig } from \"./utils/shell.ts\";\n"]}
@@ -5,6 +5,8 @@ interface BoundaryView {
5
5
  text: string;
6
6
  stats: VerbatimCompactionStats;
7
7
  rung: VerbatimCompactionDetails["rung"];
8
+ backend?: VerbatimCompactionDetails["backend"];
9
+ model?: string;
8
10
  /** Authoritative whole-context count, preferred for "Compacted from N tokens". */
9
11
  tokensBefore?: number;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-boundary-message.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/compaction-boundary-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwC,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EACX,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAA8B,MAAM,2BAA2B,CAAC;AAI3F,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,uBAAuB,CAAC;IAC/B,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxC,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,qBAAa,kCAAmC,SAAQ,GAAG;IAC1D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,YAAY,MAAM,EAAE,wBAAwB,GAAG,YAAY,EAa1D;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAGnC;IACQ,UAAU,IAAI,IAAI,CAG1B;IAED,OAAO,CAAC,aAAa;CAyCrB;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,GACf,kCAAkC,CAgBpC"}
1
+ {"version":3,"file":"compaction-boundary-message.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/compaction-boundary-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwC,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EACX,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAyD,MAAM,2BAA2B,CAAC;AAItH,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,uBAAuB,CAAC;IAC/B,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,qBAAa,kCAAmC,SAAQ,GAAG;IAC1D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,YAAY,MAAM,EAAE,wBAAwB,GAAG,YAAY,EAe1D;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAGnC;IACQ,UAAU,IAAI,IAAI,CAG1B;IAED,OAAO,CAAC,aAAa;CA2DrB;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,GACf,kCAAkC,CAmBpC"}
@@ -1,5 +1,5 @@
1
1
  import { Box, Container, MouseRegion, Spacer, Text } from "@earendil-works/pi-tui";
2
- import { VERBATIM_COMPACTION_PREFIX } from "../../../core/messages.js";
2
+ import { SUMMARY_COMPACTION_PREFIX, VERBATIM_COMPACTION_PREFIX } from "../../../core/messages.js";
3
3
  import { theme } from "../theme/theme.js";
4
4
  import { parenthesizedKeyHint } from "./keybinding-hints.js";
5
5
  /** Renders the durable verbatim compaction boundary without markdown reflow. */
@@ -14,6 +14,8 @@ export class CompactionBoundaryMessageComponent extends Box {
14
14
  stats: result.stats,
15
15
  rung: result.rung,
16
16
  tokensBefore: result.tokensBefore,
17
+ backend: result.backend,
18
+ model: result.model,
17
19
  };
18
20
  }
19
21
  else {
@@ -34,8 +36,15 @@ export class CompactionBoundaryMessageComponent extends Box {
34
36
  const content = new Container();
35
37
  const tokenStr = (this.view.tokensBefore ?? this.view.stats.tokensBefore).toLocaleString();
36
38
  // The fresh rung destroyed the compactable conversation; say so plainly.
37
- const label = theme.fg("customMessageLabel", theme.bold(this.view.rung === "fresh" ? "✻ Context cleared (compaction degraded)" : "✻ Context compacted"));
39
+ const label = theme.fg("customMessageLabel", theme.bold(this.view.rung === "fresh"
40
+ ? "✻ Context cleared (compaction degraded)"
41
+ : this.view.backend === "summary"
42
+ ? "✻ Context compacted · summary (pi fallback)"
43
+ : "✻ Context compacted"));
38
44
  content.addChild(new Text(label, 0, 0));
45
+ if (this.view.backend && this.view.model) {
46
+ content.addChild(new Text(theme.fg("dim", `${this.view.backend === "summary" ? "summary (pi fallback)" : this.view.backend} · ${this.view.model}`), 0, 0));
47
+ }
39
48
  content.addChild(new Spacer(1));
40
49
  if (this.expanded) {
41
50
  content.addChild(new Text(theme.bold(theme.fg("customMessageText", `Compacted from ${tokenStr} tokens`)), 0, 0));
@@ -66,11 +75,14 @@ export function compactionBoundaryFromMessage(message, expanded) {
66
75
  .map((block) => block.text)
67
76
  .join("\n")
68
77
  : message.content;
78
+ const prefix = details.backend === "summary" ? SUMMARY_COMPACTION_PREFIX : VERBATIM_COMPACTION_PREFIX;
69
79
  const component = new CompactionBoundaryMessageComponent({
70
- text: content.startsWith(VERBATIM_COMPACTION_PREFIX) ? content.slice(VERBATIM_COMPACTION_PREFIX.length) : content,
80
+ text: content.startsWith(prefix) ? content.slice(prefix.length) : content,
71
81
  stats: details.stats,
72
82
  rung: details.rung,
73
83
  tokensBefore: details.tokensBefore ?? details.stats.tokensBefore,
84
+ backend: details.backend,
85
+ model: details.model,
74
86
  });
75
87
  component.setExpanded(expanded);
76
88
  return component;
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-boundary-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/compaction-boundary-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, MouseRegion, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type {\n\tVerbatimCompactionDetails,\n\tVerbatimCompactionResult,\n\tVerbatimCompactionStats,\n} from \"../../../core/compaction/index.ts\";\nimport { type CustomMessage, VERBATIM_COMPACTION_PREFIX } from \"../../../core/messages.ts\";\nimport { theme } from \"../theme/theme.js\";\nimport { parenthesizedKeyHint } from \"./keybinding-hints.js\";\n\ninterface BoundaryView {\n\ttext: string;\n\tstats: VerbatimCompactionStats;\n\trung: VerbatimCompactionDetails[\"rung\"];\n\t/** Authoritative whole-context count, preferred for \"Compacted from N tokens\". */\n\ttokensBefore?: number;\n}\n\n/** Renders the durable verbatim compaction boundary without markdown reflow. */\nexport class CompactionBoundaryMessageComponent extends Box {\n\tprivate expanded = false;\n\tprivate readonly view: BoundaryView;\n\n\tconstructor(result: VerbatimCompactionResult | BoundaryView) {\n\t\tsuper(1, 1, (text) => theme.bg(\"customMessageBg\", text));\n\t\tif (\"compactedText\" in result) {\n\t\t\tthis.view = {\n\t\t\t\ttext: result.compactedText,\n\t\t\t\tstats: result.stats,\n\t\t\t\trung: result.rung,\n\t\t\t\ttokensBefore: result.tokensBefore,\n\t\t\t};\n\t\t} else {\n\t\t\tthis.view = result;\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tthis.clear();\n\t\tconst content = new Container();\n\t\tconst tokenStr = (this.view.tokensBefore ?? this.view.stats.tokensBefore).toLocaleString();\n\t\t// The fresh rung destroyed the compactable conversation; say so plainly.\n\t\tconst label = theme.fg(\n\t\t\t\"customMessageLabel\",\n\t\t\ttheme.bold(this.view.rung === \"fresh\" ? \"✻ Context cleared (compaction degraded)\" : \"✻ Context compacted\"),\n\t\t);\n\t\tcontent.addChild(new Text(label, 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\t\tif (this.expanded) {\n\t\t\tcontent.addChild(\n\t\t\t\tnew Text(theme.bold(theme.fg(\"customMessageText\", `Compacted from ${tokenStr} tokens`)), 0, 0),\n\t\t\t);\n\t\t\tcontent.addChild(new Spacer(1));\n\t\t\tconst rendered = this.view.text\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.map((line) =>\n\t\t\t\t\t/^\\(filtered \\d+ lines\\)$/.test(line) ? theme.fg(\"dim\", line) : theme.fg(\"customMessageText\", line),\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\");\n\t\t\tcontent.addChild(new Text(rendered, 0, 0));\n\t\t} else {\n\t\t\tconst hint = parenthesizedKeyHint(\"app.tools.expand\", \"to expand\");\n\t\t\tcontent.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\ttheme.fg(\"customMessageText\", `Compacted from ${tokenStr} tokens`) + (hint ? ` ${hint}` : \"\"),\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tthis.addChild(\n\t\t\tnew MouseRegion(content, (event) => {\n\t\t\t\tif (event.type !== \"click\" || event.button !== \"left\") return undefined;\n\t\t\t\tthis.setExpanded(!this.expanded);\n\t\t\t\treturn { handled: true };\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function compactionBoundaryFromMessage(\n\tmessage: CustomMessage,\n\texpanded: boolean,\n): CompactionBoundaryMessageComponent {\n\tconst details = message.details as VerbatimCompactionDetails;\n\tconst content = Array.isArray(message.content)\n\t\t? message.content\n\t\t\t\t.filter((block) => block.type === \"text\")\n\t\t\t\t.map((block) => block.text)\n\t\t\t\t.join(\"\\n\")\n\t\t: message.content;\n\tconst component = new CompactionBoundaryMessageComponent({\n\t\ttext: content.startsWith(VERBATIM_COMPACTION_PREFIX) ? content.slice(VERBATIM_COMPACTION_PREFIX.length) : content,\n\t\tstats: details.stats,\n\t\trung: details.rung,\n\t\ttokensBefore: details.tokensBefore ?? details.stats.tokensBefore,\n\t});\n\tcomponent.setExpanded(expanded);\n\treturn component;\n}\n"]}
1
+ {"version":3,"file":"compaction-boundary-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/compaction-boundary-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, MouseRegion, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport type {\n\tVerbatimCompactionDetails,\n\tVerbatimCompactionResult,\n\tVerbatimCompactionStats,\n} from \"../../../core/compaction/index.ts\";\nimport { type CustomMessage, SUMMARY_COMPACTION_PREFIX, VERBATIM_COMPACTION_PREFIX } from \"../../../core/messages.ts\";\nimport { theme } from \"../theme/theme.js\";\nimport { parenthesizedKeyHint } from \"./keybinding-hints.js\";\n\ninterface BoundaryView {\n\ttext: string;\n\tstats: VerbatimCompactionStats;\n\trung: VerbatimCompactionDetails[\"rung\"];\n\tbackend?: VerbatimCompactionDetails[\"backend\"];\n\tmodel?: string;\n\t/** Authoritative whole-context count, preferred for \"Compacted from N tokens\". */\n\ttokensBefore?: number;\n}\n\n/** Renders the durable verbatim compaction boundary without markdown reflow. */\nexport class CompactionBoundaryMessageComponent extends Box {\n\tprivate expanded = false;\n\tprivate readonly view: BoundaryView;\n\n\tconstructor(result: VerbatimCompactionResult | BoundaryView) {\n\t\tsuper(1, 1, (text) => theme.bg(\"customMessageBg\", text));\n\t\tif (\"compactedText\" in result) {\n\t\t\tthis.view = {\n\t\t\t\ttext: result.compactedText,\n\t\t\t\tstats: result.stats,\n\t\t\t\trung: result.rung,\n\t\t\t\ttokensBefore: result.tokensBefore,\n\t\t\t\tbackend: result.backend,\n\t\t\t\tmodel: result.model,\n\t\t\t};\n\t\t} else {\n\t\t\tthis.view = result;\n\t\t}\n\t\tthis.updateDisplay();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tthis.clear();\n\t\tconst content = new Container();\n\t\tconst tokenStr = (this.view.tokensBefore ?? this.view.stats.tokensBefore).toLocaleString();\n\t\t// The fresh rung destroyed the compactable conversation; say so plainly.\n\t\tconst label = theme.fg(\n\t\t\t\"customMessageLabel\",\n\t\t\ttheme.bold(\n\t\t\t\tthis.view.rung === \"fresh\"\n\t\t\t\t\t? \"✻ Context cleared (compaction degraded)\"\n\t\t\t\t\t: this.view.backend === \"summary\"\n\t\t\t\t\t\t? \"✻ Context compacted · summary (pi fallback)\"\n\t\t\t\t\t\t: \"✻ Context compacted\",\n\t\t\t),\n\t\t);\n\t\tcontent.addChild(new Text(label, 0, 0));\n\t\tif (this.view.backend && this.view.model) {\n\t\t\tcontent.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t`${this.view.backend === \"summary\" ? \"summary (pi fallback)\" : this.view.backend} · ${this.view.model}`,\n\t\t\t\t\t),\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tcontent.addChild(new Spacer(1));\n\t\tif (this.expanded) {\n\t\t\tcontent.addChild(\n\t\t\t\tnew Text(theme.bold(theme.fg(\"customMessageText\", `Compacted from ${tokenStr} tokens`)), 0, 0),\n\t\t\t);\n\t\t\tcontent.addChild(new Spacer(1));\n\t\t\tconst rendered = this.view.text\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.map((line) =>\n\t\t\t\t\t/^\\(filtered \\d+ lines\\)$/.test(line) ? theme.fg(\"dim\", line) : theme.fg(\"customMessageText\", line),\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\");\n\t\t\tcontent.addChild(new Text(rendered, 0, 0));\n\t\t} else {\n\t\t\tconst hint = parenthesizedKeyHint(\"app.tools.expand\", \"to expand\");\n\t\t\tcontent.addChild(\n\t\t\t\tnew Text(\n\t\t\t\t\ttheme.fg(\"customMessageText\", `Compacted from ${tokenStr} tokens`) + (hint ? ` ${hint}` : \"\"),\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tthis.addChild(\n\t\t\tnew MouseRegion(content, (event) => {\n\t\t\t\tif (event.type !== \"click\" || event.button !== \"left\") return undefined;\n\t\t\t\tthis.setExpanded(!this.expanded);\n\t\t\t\treturn { handled: true };\n\t\t\t}),\n\t\t);\n\t}\n}\n\nexport function compactionBoundaryFromMessage(\n\tmessage: CustomMessage,\n\texpanded: boolean,\n): CompactionBoundaryMessageComponent {\n\tconst details = message.details as VerbatimCompactionDetails;\n\tconst content = Array.isArray(message.content)\n\t\t? message.content\n\t\t\t\t.filter((block) => block.type === \"text\")\n\t\t\t\t.map((block) => block.text)\n\t\t\t\t.join(\"\\n\")\n\t\t: message.content;\n\tconst prefix = details.backend === \"summary\" ? SUMMARY_COMPACTION_PREFIX : VERBATIM_COMPACTION_PREFIX;\n\tconst component = new CompactionBoundaryMessageComponent({\n\t\ttext: content.startsWith(prefix) ? content.slice(prefix.length) : content,\n\t\tstats: details.stats,\n\t\trung: details.rung,\n\t\ttokensBefore: details.tokensBefore ?? details.stats.tokensBefore,\n\t\tbackend: details.backend,\n\t\tmodel: details.model,\n\t});\n\tcomponent.setExpanded(expanded);\n\treturn component;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-items.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqJtF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,GAAG,WAAW,EAAE,CA2QtG"}
1
+ {"version":3,"file":"settings-selector-items.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqJtF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAiUtG"}
@@ -309,6 +309,49 @@ export function buildSettingsItems(config, callbacks) {
309
309
  }, () => done(), undefined, true);
310
310
  },
311
311
  },
312
+ {
313
+ id: "compaction-model",
314
+ label: "Compaction model",
315
+ description: `Saves to ${config.compactionModelScope ?? "global"} settings; changes compaction, not the chat model`,
316
+ currentValue: config.compactionModel && config.compactionModel !== "auto"
317
+ ? config.compactionModel
318
+ : "Auto (current model)",
319
+ submenu: (_currentValue, done) => {
320
+ const configured = config.compactionModel === "auto" ? "" : (config.compactionModel ?? "");
321
+ const permitsModel = (id) => config.compactionModelScope !== "project" || !id.startsWith("morph/");
322
+ const current = permitsModel(configured) ? configured : "";
323
+ const models = [
324
+ ...(config.availableDefaultModels ?? []).filter((model) => isModelType(model, "chat")),
325
+ ...(config.availableClassifierModels ?? []),
326
+ ...(config.availableCompactorModels ?? []),
327
+ ].filter((model) => permitsModel(`${model.provider}/${model.id}`));
328
+ const options = [
329
+ { value: "", label: "Auto (current model)", description: "Use the current chat model" },
330
+ ...models.map((model) => ({
331
+ value: `${model.provider}/${model.id}`,
332
+ label: `${model.provider}/${model.id}`,
333
+ description: model.provider === "morph" && !config.morphAuthenticated
334
+ ? `${model.name} · requires /login morph`
335
+ : model.name,
336
+ })),
337
+ ];
338
+ if (current && !options.some((option) => option.value === current)) {
339
+ options.push({
340
+ value: current,
341
+ label: current,
342
+ description: "Configured model is not currently available",
343
+ });
344
+ }
345
+ return new SelectSubmenu("Compaction model", `Saves to ${config.compactionModelScope ?? "global"} settings. Selected providers receive the compactable conversation.`, options.map((option) => ({
346
+ ...option,
347
+ label: `${option.value === current ? "✓ " : " "}${option.label}`,
348
+ })), current, (value) => {
349
+ callbacks.onCompactionModelChange?.(value);
350
+ config.compactionModel = value;
351
+ done(value || "Auto (current model)");
352
+ }, () => done(), undefined, true);
353
+ },
354
+ },
312
355
  {
313
356
  id: "model-thinking",
314
357
  label: "Default thinking level per model",
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-items.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"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","sourcesContent":["import { isModelType } from \"@bastani/pi-ai\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getCapabilities, type SettingItem } from \"@earendil-works/pi-tui\";\nimport { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from \"../../../core/http-dispatcher.ts\";\nimport { keyDisplayText } from \"./keybinding-hints.js\";\nimport { DEFAULT_PROJECT_TRUST_LABELS } from \"./settings-selector-options.ts\";\nimport { SelectSubmenu, ThemeSubmenu, WarningSettingsSubmenu } from \"./settings-selector-submenus.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\n/**\n * Sentinel row shown when no default-model catalog entry exists to configure.\n * Upstream uses a double-underscore `none` marker; Atomic must not, because\n * `test/ci/subagents-clean-break-contracts.test.ts` bans that exact literal as\n * a deleted subagent environment key.\n */\nconst NO_DEFAULT_MODELS_VALUE = \"__no-models__\";\n\nfunction insertImageItems(items: SettingItem[], config: SettingsConfig): void {\n\tif (!getCapabilities().images) return;\n\n\titems.splice(1, 0, {\n\t\tid: \"show-images\",\n\t\tlabel: \"Show images\",\n\t\tdescription: \"Render images inline in terminal\",\n\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\titems.splice(2, 0, {\n\t\tid: \"image-width-cells\",\n\t\tlabel: \"Image width\",\n\t\tdescription: \"Preferred inline image width in terminal cells\",\n\t\tcurrentValue: String(config.imageWidthCells),\n\t\tvalues: [\"60\", \"80\", \"120\"],\n\t});\n}\n\nfunction insertAfter(items: SettingItem[], afterId: string, item: SettingItem): void {\n\tconst index = items.findIndex((candidate) => candidate.id === afterId);\n\titems.splice(index + 1, 0, item);\n}\n\nfunction insertUiToggles(items: SettingItem[], config: SettingsConfig): void {\n\tconst supportsImages = getCapabilities().images;\n\titems.splice(supportsImages ? 3 : 1, 0, {\n\t\tid: \"auto-resize-images\",\n\t\tlabel: \"Auto-resize images\",\n\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"auto-resize-images\", {\n\t\tid: \"block-images\",\n\t\tlabel: \"Block images\",\n\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"block-images\", {\n\t\tid: \"skill-commands\",\n\t\tlabel: \"Skill commands\",\n\t\tdescription: \"Register skills as /skill:name commands\",\n\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"skill-commands\", {\n\t\tid: \"show-hardware-cursor\",\n\t\tlabel: \"Show hardware cursor\",\n\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"show-hardware-cursor\", {\n\t\tid: \"fullscreen-scrollbar\",\n\t\tlabel: \"Fullscreen scrollbar\",\n\t\tdescription: \"Scrollbar behavior for the fullscreen transcript\",\n\t\tcurrentValue: config.fullscreenScrollbar,\n\t\tvalues: [\"auto\", \"always\", \"hidden\"],\n\t});\n\tinsertAfter(items, \"fullscreen-scrollbar\", {\n\t\tid: \"fullscreen-exit-output\",\n\t\tlabel: \"Fullscreen exit output\",\n\t\tdescription: \"Print the transcript or only a session resume hint when exiting\",\n\t\tcurrentValue: config.fullscreenExitOutput,\n\t\tvalues: [\"transcript\", \"resume-hint\"],\n\t});\n\tinsertAfter(items, \"fullscreen-exit-output\", {\n\t\tid: \"fullscreen-copy-on-select\",\n\t\tlabel: \"Fullscreen copy on select\",\n\t\tdescription: \"Copy selected transcript text automatically on mouse release\",\n\t\tcurrentValue: config.fullscreenCopyOnSelect ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"fullscreen-copy-on-select\", {\n\t\tid: \"fullscreen-wheel-scroll-lines\",\n\t\tlabel: \"Fullscreen wheel scroll lines\",\n\t\tdescription: \"Lines per wheel event, or auto acceleration\",\n\t\tcurrentValue: String(config.fullscreenWheelScrollLines ?? \"auto\"),\n\t\tvalues: [\n\t\t\t\"auto\",\n\t\t\t...[...new Set([1, 2, 3, 5, 10, config.fullscreenWheelScrollLines])]\n\t\t\t\t.filter((lines): lines is number => typeof lines === \"number\")\n\t\t\t\t.sort((a, b) => a - b)\n\t\t\t\t.map(String),\n\t\t],\n\t});\n\tinsertAfter(items, \"fullscreen-wheel-scroll-lines\", {\n\t\tid: \"editor-padding\",\n\t\tlabel: \"Editor padding\",\n\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\tcurrentValue: String(config.editorPaddingX),\n\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t});\n\tinsertAfter(items, \"editor-padding\", {\n\t\tid: \"output-padding\",\n\t\tlabel: \"Output padding\",\n\t\tdescription: \"Horizontal padding for rendered chat output (0-1)\",\n\t\tcurrentValue: String(config.outputPad),\n\t\tvalues: [\"0\", \"1\"],\n\t});\n\tinsertAfter(items, \"output-padding\", {\n\t\tid: \"autocomplete-max-visible\",\n\t\tlabel: \"Autocomplete max items\",\n\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t});\n\tinsertAfter(items, \"autocomplete-max-visible\", {\n\t\tid: \"clear-on-shrink\",\n\t\tlabel: \"Clear on shrink\",\n\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"clear-on-shrink\", {\n\t\tid: \"terminal-progress\",\n\t\tlabel: \"Terminal progress\",\n\t\tdescription: \"Show OSC 9;4 progress indicators in the terminal tab bar\",\n\t\tcurrentValue: config.showTerminalProgress ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"terminal-progress\", {\n\t\tid: \"cache-miss-notices\",\n\t\tlabel: \"Cache miss notices\",\n\t\tdescription: \"Show cache costs and provider recovery diagnostics\",\n\t\tcurrentValue: config.showCacheMissNotices ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"cache-miss-notices\", {\n\t\tid: \"cache-warming\",\n\t\tlabel: \"Cache warming\",\n\t\tdescription: \"Refresh prompt caches before they expire. Each refresh costs money.\",\n\t\tcurrentValue: config.cacheWarming,\n\t\tvalues: [\"off\", \"streaming\", \"idle\"],\n\t});\n}\n\nexport function buildSettingsItems(config: SettingsConfig, callbacks: SettingsCallbacks): SettingItem[] {\n\tconst followUpKey = keyDisplayText(\"app.message.followUp\");\n\tlet currentWarnings = { ...config.warnings };\n\n\tconst items: SettingItem[] = [\n\t\t{\n\t\t\tid: \"autocompact\",\n\t\t\tlabel: \"Auto-compact\",\n\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"steering-mode\",\n\t\t\tlabel: \"Steering mode\",\n\t\t\tdescription:\n\t\t\t\t\"enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\tcurrentValue: config.steeringMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"follow-up-mode\",\n\t\t\tlabel: \"Follow-up mode\",\n\t\t\tdescription: `${followUpKey} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\tcurrentValue: config.followUpMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"transport\",\n\t\t\tlabel: \"Transport\",\n\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\tcurrentValue: config.transport,\n\t\t\tvalues: [\"sse\", \"websocket\", \"websocket-cached\", \"auto\"],\n\t\t},\n\t\t{\n\t\t\tid: \"http-idle-timeout\",\n\t\t\tlabel: \"HTTP idle timeout\",\n\t\t\tdescription:\n\t\t\t\t\"Maximum idle gap while waiting for HTTP headers or body chunks. Disable for local models that pause longer than five minutes.\",\n\t\t\tcurrentValue: formatHttpIdleTimeoutMs(config.httpIdleTimeoutMs),\n\t\t\tvalues: HTTP_IDLE_TIMEOUT_CHOICES.map((choice) => choice.label),\n\t\t},\n\t\t{\n\t\t\tid: \"bash-interceptor\",\n\t\t\tlabel: \"Bash Interceptor\",\n\t\t\tdescription: \"Block shell commands that have dedicated tools\",\n\t\t\tcurrentValue: config.bashInterceptorEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"hide-thinking\",\n\t\t\tlabel: \"Hide thinking\",\n\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"mermaid-rendering\",\n\t\t\tlabel: \"Mermaid diagrams\",\n\t\t\tdescription: \"Render Mermaid code blocks as Unicode diagrams\",\n\t\t\tcurrentValue: config.mermaidRenderingMode,\n\t\t\tvalues: [\"off\", \"final\", \"streaming\"],\n\t\t},\n\t\t{\n\t\t\tid: \"latex-rendering\",\n\t\t\tlabel: \"LaTeX math\",\n\t\t\tdescription: \"Render LaTeX expressions as Unicode math\",\n\t\t\tcurrentValue: config.latexRenderingEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"collapse-changelog\",\n\t\t\tlabel: \"Collapse changelog\",\n\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"quiet-startup\",\n\t\t\tlabel: \"Quiet startup\",\n\t\t\tdescription: \"Disable verbose printing at startup (header: keep only the startup header)\",\n\t\t\tcurrentValue: String(config.quietStartup),\n\t\t\tvalues: [\"true\", \"header\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"install-telemetry\",\n\t\t\tlabel: \"Install telemetry\",\n\t\t\tdescription:\n\t\t\t\t\"Send a version-adoption ping on the first interactive launch with fresh settings or after an update with changelog entries\",\n\t\t\tcurrentValue: config.enableInstallTelemetry ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"default-project-trust\",\n\t\t\tlabel: \"Default project trust\",\n\t\t\tdescription: \"Fallback behavior when no extension or saved trust decision decides project trust\",\n\t\t\tcurrentValue: DEFAULT_PROJECT_TRUST_LABELS[config.defaultProjectTrust],\n\t\t\tvalues: Object.values(DEFAULT_PROJECT_TRUST_LABELS),\n\t\t},\n\t\t{\n\t\t\tid: \"double-escape-action\",\n\t\t\tlabel: \"Double-escape action\",\n\t\t\tdescription: \"Action when pressing esc twice with empty editor\",\n\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t},\n\t\t{\n\t\t\tid: \"tree-filter-mode\",\n\t\t\tlabel: \"Tree filter mode\",\n\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"warnings\",\n\t\t\tlabel: \"Warnings\",\n\t\t\tdescription: \"Enable or disable individual warnings\",\n\t\t\tcurrentValue: \"configure\",\n\t\t\tsubmenu: (_currentValue, done) =>\n\t\t\t\tnew WarningSettingsSubmenu(\n\t\t\t\t\tcurrentWarnings,\n\t\t\t\t\t(warnings) => {\n\t\t\t\t\t\tcurrentWarnings = warnings;\n\t\t\t\t\t\tcallbacks.onWarningsChange(warnings);\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"router-model\",\n\t\t\tlabel: \"Router model\",\n\t\t\tdescription: `Saves to ${config.routerModelScope ?? \"global\"} settings; affects routing decisions, not the chat model`,\n\t\t\tcurrentValue: config.routerModel && config.routerModel !== \"auto\" ? config.routerModel : \"Automatic\",\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst current = config.routerModel === \"auto\" ? \"\" : (config.routerModel ?? \"\");\n\t\t\t\tconst options = [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: \"Automatic\",\n\t\t\t\t\t\tdescription: \"Use the current chat model\",\n\t\t\t\t\t},\n\t\t\t\t\t...(config.availableClassifierModels ?? []).map((model) => ({\n\t\t\t\t\t\tvalue: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tlabel: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tdescription: model.name,\n\t\t\t\t\t})),\n\t\t\t\t\t...(config.availableDefaultModels ?? [])\n\t\t\t\t\t\t.filter((model) => isModelType(model, \"chat\"))\n\t\t\t\t\t\t.map((model) => ({\n\t\t\t\t\t\t\tvalue: `${model.provider}/${model.id}`,\n\t\t\t\t\t\t\tlabel: `${model.provider}/${model.id}`,\n\t\t\t\t\t\t\tdescription: model.name,\n\t\t\t\t\t\t})),\n\t\t\t\t];\n\t\t\t\tif (current && !options.some((option) => option.value === current)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: current,\n\t\t\t\t\t\tlabel: current,\n\t\t\t\t\t\tdescription: \"Configured model is not currently available\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Router model\",\n\t\t\t\t\t`Saves to ${config.routerModelScope ?? \"global\"} settings. Choose a provider permitted to receive routing context. Automatic saves an empty routerModel.`,\n\t\t\t\t\toptions.map((option) => ({\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tlabel: `${option.value === current ? \"✓ \" : \" \"}${option.label}`,\n\t\t\t\t\t})),\n\t\t\t\t\tcurrent,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tcallbacks.onRouterModelChange?.(value);\n\t\t\t\t\t\tconfig.routerModel = value;\n\t\t\t\t\t\tdone(value || \"Automatic\");\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"model-thinking\",\n\t\t\tlabel: \"Default thinking level per model\",\n\t\t\tdescription: \"Search models and set a startup thinking override\",\n\t\t\tcurrentValue:\n\t\t\t\tObject.keys(config.modelThinkingLevels ?? {}).length === 0\n\t\t\t\t\t? \"none\"\n\t\t\t\t\t: `${Object.keys(config.modelThinkingLevels ?? {}).length} configured`,\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst levels: ThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\t\t\t\tconst thinkingCountLabel = () => {\n\t\t\t\t\tconst count = Object.keys(config.modelThinkingLevels ?? {}).length;\n\t\t\t\t\treturn count === 0 ? \"none\" : `${count} configured`;\n\t\t\t\t};\n\t\t\t\tconst options = (config.availableDefaultModels ?? []).flatMap((model) => {\n\t\t\t\t\tconst key = `${model.provider}/${model.id}`;\n\t\t\t\t\tconst available = model.reasoning ? levels : ([\"off\"] as ThinkingLevel[]);\n\t\t\t\t\t// Upstream pi #8900 marks the active option with a leading \"✓ \" so it stays\n\t\t\t\t\t// visible while the cursor browses elsewhere. Upstream marks the level label;\n\t\t\t\t\t// Atomic flattened the two-stage picker into one model × level list, so the\n\t\t\t\t\t// marker goes on the row whose level is the configured override.\n\t\t\t\t\tconst activeLevel = config.modelThinkingLevels?.[key];\n\t\t\t\t\tconst items = available.map((level) => ({\n\t\t\t\t\t\tvalue: `${key}\\0${level}`,\n\t\t\t\t\t\tlabel: `${level === activeLevel ? \"✓ \" : \" \"}${model.id} [${model.provider}]`,\n\t\t\t\t\t\tdescription: `${level}${activeLevel === level ? \" · default\" : \"\"}`,\n\t\t\t\t\t}));\n\t\t\t\t\tif (activeLevel !== undefined)\n\t\t\t\t\t\titems.push({\n\t\t\t\t\t\t\tvalue: `${key}\\0`,\n\t\t\t\t\t\t\tlabel: ` ${model.id} [${model.provider}]`,\n\t\t\t\t\t\t\tdescription: \"clear override\",\n\t\t\t\t\t\t});\n\t\t\t\t\treturn items;\n\t\t\t\t});\n\t\t\t\t// An empty catalog must explain itself instead of opening a zero-row\n\t\t\t\t// picker; upstream 2ff8ba6223/5133c9284f use a sentinel row for this.\n\t\t\t\tif (options.length === 0)\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: NO_DEFAULT_MODELS_VALUE,\n\t\t\t\t\t\tlabel: \"No models available\",\n\t\t\t\t\t\tdescription: \"Log in to a provider or configure an API key first\",\n\t\t\t\t\t});\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Per-Model Thinking Level\",\n\t\t\t\t\t\"Select a model and thinking level\",\n\t\t\t\t\toptions,\n\t\t\t\t\t\"\",\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tif (value === NO_DEFAULT_MODELS_VALUE) {\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst [key, level] = value.split(\"\\0\");\n\t\t\t\t\t\tconst slash = key.indexOf(\"/\");\n\t\t\t\t\t\tconst provider = key.slice(0, slash);\n\t\t\t\t\t\tconst modelId = key.slice(slash + 1);\n\t\t\t\t\t\tif (level) {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelChange?.(provider, modelId, level as ThinkingLevel);\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = { ...config.modelThinkingLevels, [key]: level as ThinkingLevel };\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelRemove?.(provider, modelId);\n\t\t\t\t\t\t\tconst next = { ...config.modelThinkingLevels };\n\t\t\t\t\t\t\tdelete next[key];\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone(thinkingCountLabel());\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"theme\",\n\t\t\tlabel: \"Theme\",\n\t\t\tdescription: \"Color theme for the interface\",\n\t\t\tcurrentValue: config.currentTheme,\n\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\tnew ThemeSubmenu(currentValue, config.terminalTheme, config.availableThemes, callbacks, done),\n\t\t},\n\t];\n\n\tinsertImageItems(items, config);\n\tinsertUiToggles(items, config);\n\treturn items;\n}\n"]}
1
+ {"version":3,"file":"settings-selector-items.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-items.ts"],"names":[],"mappings":"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","sourcesContent":["import { isModelType } from \"@bastani/pi-ai\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { getCapabilities, type SettingItem } from \"@earendil-works/pi-tui\";\nimport { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from \"../../../core/http-dispatcher.ts\";\nimport { keyDisplayText } from \"./keybinding-hints.js\";\nimport { DEFAULT_PROJECT_TRUST_LABELS } from \"./settings-selector-options.ts\";\nimport { SelectSubmenu, ThemeSubmenu, WarningSettingsSubmenu } from \"./settings-selector-submenus.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\n/**\n * Sentinel row shown when no default-model catalog entry exists to configure.\n * Upstream uses a double-underscore `none` marker; Atomic must not, because\n * `test/ci/subagents-clean-break-contracts.test.ts` bans that exact literal as\n * a deleted subagent environment key.\n */\nconst NO_DEFAULT_MODELS_VALUE = \"__no-models__\";\n\nfunction insertImageItems(items: SettingItem[], config: SettingsConfig): void {\n\tif (!getCapabilities().images) return;\n\n\titems.splice(1, 0, {\n\t\tid: \"show-images\",\n\t\tlabel: \"Show images\",\n\t\tdescription: \"Render images inline in terminal\",\n\t\tcurrentValue: config.showImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\titems.splice(2, 0, {\n\t\tid: \"image-width-cells\",\n\t\tlabel: \"Image width\",\n\t\tdescription: \"Preferred inline image width in terminal cells\",\n\t\tcurrentValue: String(config.imageWidthCells),\n\t\tvalues: [\"60\", \"80\", \"120\"],\n\t});\n}\n\nfunction insertAfter(items: SettingItem[], afterId: string, item: SettingItem): void {\n\tconst index = items.findIndex((candidate) => candidate.id === afterId);\n\titems.splice(index + 1, 0, item);\n}\n\nfunction insertUiToggles(items: SettingItem[], config: SettingsConfig): void {\n\tconst supportsImages = getCapabilities().images;\n\titems.splice(supportsImages ? 3 : 1, 0, {\n\t\tid: \"auto-resize-images\",\n\t\tlabel: \"Auto-resize images\",\n\t\tdescription: \"Resize large images to 2000x2000 max for better model compatibility\",\n\t\tcurrentValue: config.autoResizeImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"auto-resize-images\", {\n\t\tid: \"block-images\",\n\t\tlabel: \"Block images\",\n\t\tdescription: \"Prevent images from being sent to LLM providers\",\n\t\tcurrentValue: config.blockImages ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"block-images\", {\n\t\tid: \"skill-commands\",\n\t\tlabel: \"Skill commands\",\n\t\tdescription: \"Register skills as /skill:name commands\",\n\t\tcurrentValue: config.enableSkillCommands ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"skill-commands\", {\n\t\tid: \"show-hardware-cursor\",\n\t\tlabel: \"Show hardware cursor\",\n\t\tdescription: \"Show the terminal cursor while still positioning it for IME support\",\n\t\tcurrentValue: config.showHardwareCursor ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"show-hardware-cursor\", {\n\t\tid: \"fullscreen-scrollbar\",\n\t\tlabel: \"Fullscreen scrollbar\",\n\t\tdescription: \"Scrollbar behavior for the fullscreen transcript\",\n\t\tcurrentValue: config.fullscreenScrollbar,\n\t\tvalues: [\"auto\", \"always\", \"hidden\"],\n\t});\n\tinsertAfter(items, \"fullscreen-scrollbar\", {\n\t\tid: \"fullscreen-exit-output\",\n\t\tlabel: \"Fullscreen exit output\",\n\t\tdescription: \"Print the transcript or only a session resume hint when exiting\",\n\t\tcurrentValue: config.fullscreenExitOutput,\n\t\tvalues: [\"transcript\", \"resume-hint\"],\n\t});\n\tinsertAfter(items, \"fullscreen-exit-output\", {\n\t\tid: \"fullscreen-copy-on-select\",\n\t\tlabel: \"Fullscreen copy on select\",\n\t\tdescription: \"Copy selected transcript text automatically on mouse release\",\n\t\tcurrentValue: config.fullscreenCopyOnSelect ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"fullscreen-copy-on-select\", {\n\t\tid: \"fullscreen-wheel-scroll-lines\",\n\t\tlabel: \"Fullscreen wheel scroll lines\",\n\t\tdescription: \"Lines per wheel event, or auto acceleration\",\n\t\tcurrentValue: String(config.fullscreenWheelScrollLines ?? \"auto\"),\n\t\tvalues: [\n\t\t\t\"auto\",\n\t\t\t...[...new Set([1, 2, 3, 5, 10, config.fullscreenWheelScrollLines])]\n\t\t\t\t.filter((lines): lines is number => typeof lines === \"number\")\n\t\t\t\t.sort((a, b) => a - b)\n\t\t\t\t.map(String),\n\t\t],\n\t});\n\tinsertAfter(items, \"fullscreen-wheel-scroll-lines\", {\n\t\tid: \"editor-padding\",\n\t\tlabel: \"Editor padding\",\n\t\tdescription: \"Horizontal padding for input editor (0-3)\",\n\t\tcurrentValue: String(config.editorPaddingX),\n\t\tvalues: [\"0\", \"1\", \"2\", \"3\"],\n\t});\n\tinsertAfter(items, \"editor-padding\", {\n\t\tid: \"output-padding\",\n\t\tlabel: \"Output padding\",\n\t\tdescription: \"Horizontal padding for rendered chat output (0-1)\",\n\t\tcurrentValue: String(config.outputPad),\n\t\tvalues: [\"0\", \"1\"],\n\t});\n\tinsertAfter(items, \"output-padding\", {\n\t\tid: \"autocomplete-max-visible\",\n\t\tlabel: \"Autocomplete max items\",\n\t\tdescription: \"Max visible items in autocomplete dropdown (3-20)\",\n\t\tcurrentValue: String(config.autocompleteMaxVisible),\n\t\tvalues: [\"3\", \"5\", \"7\", \"10\", \"15\", \"20\"],\n\t});\n\tinsertAfter(items, \"autocomplete-max-visible\", {\n\t\tid: \"clear-on-shrink\",\n\t\tlabel: \"Clear on shrink\",\n\t\tdescription: \"Clear empty rows when content shrinks (may cause flicker)\",\n\t\tcurrentValue: config.clearOnShrink ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"clear-on-shrink\", {\n\t\tid: \"terminal-progress\",\n\t\tlabel: \"Terminal progress\",\n\t\tdescription: \"Show OSC 9;4 progress indicators in the terminal tab bar\",\n\t\tcurrentValue: config.showTerminalProgress ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"terminal-progress\", {\n\t\tid: \"cache-miss-notices\",\n\t\tlabel: \"Cache miss notices\",\n\t\tdescription: \"Show cache costs and provider recovery diagnostics\",\n\t\tcurrentValue: config.showCacheMissNotices ? \"true\" : \"false\",\n\t\tvalues: [\"true\", \"false\"],\n\t});\n\tinsertAfter(items, \"cache-miss-notices\", {\n\t\tid: \"cache-warming\",\n\t\tlabel: \"Cache warming\",\n\t\tdescription: \"Refresh prompt caches before they expire. Each refresh costs money.\",\n\t\tcurrentValue: config.cacheWarming,\n\t\tvalues: [\"off\", \"streaming\", \"idle\"],\n\t});\n}\n\nexport function buildSettingsItems(config: SettingsConfig, callbacks: SettingsCallbacks): SettingItem[] {\n\tconst followUpKey = keyDisplayText(\"app.message.followUp\");\n\tlet currentWarnings = { ...config.warnings };\n\n\tconst items: SettingItem[] = [\n\t\t{\n\t\t\tid: \"autocompact\",\n\t\t\tlabel: \"Auto-compact\",\n\t\t\tdescription: \"Automatically compact context when it gets too large\",\n\t\t\tcurrentValue: config.autoCompact ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"steering-mode\",\n\t\t\tlabel: \"Steering mode\",\n\t\t\tdescription:\n\t\t\t\t\"enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.\",\n\t\t\tcurrentValue: config.steeringMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"follow-up-mode\",\n\t\t\tlabel: \"Follow-up mode\",\n\t\t\tdescription: `${followUpKey} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,\n\t\t\tcurrentValue: config.followUpMode,\n\t\t\tvalues: [\"one-at-a-time\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"transport\",\n\t\t\tlabel: \"Transport\",\n\t\t\tdescription: \"Preferred transport for providers that support multiple transports\",\n\t\t\tcurrentValue: config.transport,\n\t\t\tvalues: [\"sse\", \"websocket\", \"websocket-cached\", \"auto\"],\n\t\t},\n\t\t{\n\t\t\tid: \"http-idle-timeout\",\n\t\t\tlabel: \"HTTP idle timeout\",\n\t\t\tdescription:\n\t\t\t\t\"Maximum idle gap while waiting for HTTP headers or body chunks. Disable for local models that pause longer than five minutes.\",\n\t\t\tcurrentValue: formatHttpIdleTimeoutMs(config.httpIdleTimeoutMs),\n\t\t\tvalues: HTTP_IDLE_TIMEOUT_CHOICES.map((choice) => choice.label),\n\t\t},\n\t\t{\n\t\t\tid: \"bash-interceptor\",\n\t\t\tlabel: \"Bash Interceptor\",\n\t\t\tdescription: \"Block shell commands that have dedicated tools\",\n\t\t\tcurrentValue: config.bashInterceptorEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"hide-thinking\",\n\t\t\tlabel: \"Hide thinking\",\n\t\t\tdescription: \"Hide thinking blocks in assistant responses\",\n\t\t\tcurrentValue: config.hideThinkingBlock ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"mermaid-rendering\",\n\t\t\tlabel: \"Mermaid diagrams\",\n\t\t\tdescription: \"Render Mermaid code blocks as Unicode diagrams\",\n\t\t\tcurrentValue: config.mermaidRenderingMode,\n\t\t\tvalues: [\"off\", \"final\", \"streaming\"],\n\t\t},\n\t\t{\n\t\t\tid: \"latex-rendering\",\n\t\t\tlabel: \"LaTeX math\",\n\t\t\tdescription: \"Render LaTeX expressions as Unicode math\",\n\t\t\tcurrentValue: config.latexRenderingEnabled ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"collapse-changelog\",\n\t\t\tlabel: \"Collapse changelog\",\n\t\t\tdescription: \"Show condensed changelog after updates\",\n\t\t\tcurrentValue: config.collapseChangelog ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"quiet-startup\",\n\t\t\tlabel: \"Quiet startup\",\n\t\t\tdescription: \"Disable verbose printing at startup (header: keep only the startup header)\",\n\t\t\tcurrentValue: String(config.quietStartup),\n\t\t\tvalues: [\"true\", \"header\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"install-telemetry\",\n\t\t\tlabel: \"Install telemetry\",\n\t\t\tdescription:\n\t\t\t\t\"Send a version-adoption ping on the first interactive launch with fresh settings or after an update with changelog entries\",\n\t\t\tcurrentValue: config.enableInstallTelemetry ? \"true\" : \"false\",\n\t\t\tvalues: [\"true\", \"false\"],\n\t\t},\n\t\t{\n\t\t\tid: \"default-project-trust\",\n\t\t\tlabel: \"Default project trust\",\n\t\t\tdescription: \"Fallback behavior when no extension or saved trust decision decides project trust\",\n\t\t\tcurrentValue: DEFAULT_PROJECT_TRUST_LABELS[config.defaultProjectTrust],\n\t\t\tvalues: Object.values(DEFAULT_PROJECT_TRUST_LABELS),\n\t\t},\n\t\t{\n\t\t\tid: \"double-escape-action\",\n\t\t\tlabel: \"Double-escape action\",\n\t\t\tdescription: \"Action when pressing esc twice with empty editor\",\n\t\t\tcurrentValue: config.doubleEscapeAction,\n\t\t\tvalues: [\"tree\", \"fork\", \"none\"],\n\t\t},\n\t\t{\n\t\t\tid: \"tree-filter-mode\",\n\t\t\tlabel: \"Tree filter mode\",\n\t\t\tdescription: \"Default filter when opening /tree\",\n\t\t\tcurrentValue: config.treeFilterMode,\n\t\t\tvalues: [\"default\", \"no-tools\", \"user-only\", \"labeled-only\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tid: \"warnings\",\n\t\t\tlabel: \"Warnings\",\n\t\t\tdescription: \"Enable or disable individual warnings\",\n\t\t\tcurrentValue: \"configure\",\n\t\t\tsubmenu: (_currentValue, done) =>\n\t\t\t\tnew WarningSettingsSubmenu(\n\t\t\t\t\tcurrentWarnings,\n\t\t\t\t\t(warnings) => {\n\t\t\t\t\t\tcurrentWarnings = warnings;\n\t\t\t\t\t\tcallbacks.onWarningsChange(warnings);\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\tid: \"router-model\",\n\t\t\tlabel: \"Router model\",\n\t\t\tdescription: `Saves to ${config.routerModelScope ?? \"global\"} settings; affects routing decisions, not the chat model`,\n\t\t\tcurrentValue: config.routerModel && config.routerModel !== \"auto\" ? config.routerModel : \"Automatic\",\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst current = config.routerModel === \"auto\" ? \"\" : (config.routerModel ?? \"\");\n\t\t\t\tconst options = [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\tlabel: \"Automatic\",\n\t\t\t\t\t\tdescription: \"Use the current chat model\",\n\t\t\t\t\t},\n\t\t\t\t\t...(config.availableClassifierModels ?? []).map((model) => ({\n\t\t\t\t\t\tvalue: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tlabel: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tdescription: model.name,\n\t\t\t\t\t})),\n\t\t\t\t\t...(config.availableDefaultModels ?? [])\n\t\t\t\t\t\t.filter((model) => isModelType(model, \"chat\"))\n\t\t\t\t\t\t.map((model) => ({\n\t\t\t\t\t\t\tvalue: `${model.provider}/${model.id}`,\n\t\t\t\t\t\t\tlabel: `${model.provider}/${model.id}`,\n\t\t\t\t\t\t\tdescription: model.name,\n\t\t\t\t\t\t})),\n\t\t\t\t];\n\t\t\t\tif (current && !options.some((option) => option.value === current)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: current,\n\t\t\t\t\t\tlabel: current,\n\t\t\t\t\t\tdescription: \"Configured model is not currently available\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Router model\",\n\t\t\t\t\t`Saves to ${config.routerModelScope ?? \"global\"} settings. Choose a provider permitted to receive routing context. Automatic saves an empty routerModel.`,\n\t\t\t\t\toptions.map((option) => ({\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tlabel: `${option.value === current ? \"✓ \" : \" \"}${option.label}`,\n\t\t\t\t\t})),\n\t\t\t\t\tcurrent,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tcallbacks.onRouterModelChange?.(value);\n\t\t\t\t\t\tconfig.routerModel = value;\n\t\t\t\t\t\tdone(value || \"Automatic\");\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"compaction-model\",\n\t\t\tlabel: \"Compaction model\",\n\t\t\tdescription: `Saves to ${config.compactionModelScope ?? \"global\"} settings; changes compaction, not the chat model`,\n\t\t\tcurrentValue:\n\t\t\t\tconfig.compactionModel && config.compactionModel !== \"auto\"\n\t\t\t\t\t? config.compactionModel\n\t\t\t\t\t: \"Auto (current model)\",\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst configured = config.compactionModel === \"auto\" ? \"\" : (config.compactionModel ?? \"\");\n\t\t\t\tconst permitsModel = (id: string) => config.compactionModelScope !== \"project\" || !id.startsWith(\"morph/\");\n\t\t\t\tconst current = permitsModel(configured) ? configured : \"\";\n\t\t\t\tconst models = [\n\t\t\t\t\t...(config.availableDefaultModels ?? []).filter((model) => isModelType(model, \"chat\")),\n\t\t\t\t\t...(config.availableClassifierModels ?? []),\n\t\t\t\t\t...(config.availableCompactorModels ?? []),\n\t\t\t\t].filter((model) => permitsModel(`${model.provider}/${model.id}`));\n\t\t\t\tconst options = [\n\t\t\t\t\t{ value: \"\", label: \"Auto (current model)\", description: \"Use the current chat model\" },\n\t\t\t\t\t...models.map((model) => ({\n\t\t\t\t\t\tvalue: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tlabel: `${model.provider}/${model.id}`,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\tmodel.provider === \"morph\" && !config.morphAuthenticated\n\t\t\t\t\t\t\t\t? `${model.name} · requires /login morph`\n\t\t\t\t\t\t\t\t: model.name,\n\t\t\t\t\t})),\n\t\t\t\t];\n\t\t\t\tif (current && !options.some((option) => option.value === current)) {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: current,\n\t\t\t\t\t\tlabel: current,\n\t\t\t\t\t\tdescription: \"Configured model is not currently available\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Compaction model\",\n\t\t\t\t\t`Saves to ${config.compactionModelScope ?? \"global\"} settings. Selected providers receive the compactable conversation.`,\n\t\t\t\t\toptions.map((option) => ({\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\tlabel: `${option.value === current ? \"✓ \" : \" \"}${option.label}`,\n\t\t\t\t\t})),\n\t\t\t\t\tcurrent,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tcallbacks.onCompactionModelChange?.(value);\n\t\t\t\t\t\tconfig.compactionModel = value;\n\t\t\t\t\t\tdone(value || \"Auto (current model)\");\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"model-thinking\",\n\t\t\tlabel: \"Default thinking level per model\",\n\t\t\tdescription: \"Search models and set a startup thinking override\",\n\t\t\tcurrentValue:\n\t\t\t\tObject.keys(config.modelThinkingLevels ?? {}).length === 0\n\t\t\t\t\t? \"none\"\n\t\t\t\t\t: `${Object.keys(config.modelThinkingLevels ?? {}).length} configured`,\n\t\t\tsubmenu: (_currentValue, done) => {\n\t\t\t\tconst levels: ThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\t\t\t\tconst thinkingCountLabel = () => {\n\t\t\t\t\tconst count = Object.keys(config.modelThinkingLevels ?? {}).length;\n\t\t\t\t\treturn count === 0 ? \"none\" : `${count} configured`;\n\t\t\t\t};\n\t\t\t\tconst options = (config.availableDefaultModels ?? []).flatMap((model) => {\n\t\t\t\t\tconst key = `${model.provider}/${model.id}`;\n\t\t\t\t\tconst available = model.reasoning ? levels : ([\"off\"] as ThinkingLevel[]);\n\t\t\t\t\t// Upstream pi #8900 marks the active option with a leading \"✓ \" so it stays\n\t\t\t\t\t// visible while the cursor browses elsewhere. Upstream marks the level label;\n\t\t\t\t\t// Atomic flattened the two-stage picker into one model × level list, so the\n\t\t\t\t\t// marker goes on the row whose level is the configured override.\n\t\t\t\t\tconst activeLevel = config.modelThinkingLevels?.[key];\n\t\t\t\t\tconst items = available.map((level) => ({\n\t\t\t\t\t\tvalue: `${key}\\0${level}`,\n\t\t\t\t\t\tlabel: `${level === activeLevel ? \"✓ \" : \" \"}${model.id} [${model.provider}]`,\n\t\t\t\t\t\tdescription: `${level}${activeLevel === level ? \" · default\" : \"\"}`,\n\t\t\t\t\t}));\n\t\t\t\t\tif (activeLevel !== undefined)\n\t\t\t\t\t\titems.push({\n\t\t\t\t\t\t\tvalue: `${key}\\0`,\n\t\t\t\t\t\t\tlabel: ` ${model.id} [${model.provider}]`,\n\t\t\t\t\t\t\tdescription: \"clear override\",\n\t\t\t\t\t\t});\n\t\t\t\t\treturn items;\n\t\t\t\t});\n\t\t\t\t// An empty catalog must explain itself instead of opening a zero-row\n\t\t\t\t// picker; upstream 2ff8ba6223/5133c9284f use a sentinel row for this.\n\t\t\t\tif (options.length === 0)\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tvalue: NO_DEFAULT_MODELS_VALUE,\n\t\t\t\t\t\tlabel: \"No models available\",\n\t\t\t\t\t\tdescription: \"Log in to a provider or configure an API key first\",\n\t\t\t\t\t});\n\t\t\t\treturn new SelectSubmenu(\n\t\t\t\t\t\"Per-Model Thinking Level\",\n\t\t\t\t\t\"Select a model and thinking level\",\n\t\t\t\t\toptions,\n\t\t\t\t\t\"\",\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tif (value === NO_DEFAULT_MODELS_VALUE) {\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst [key, level] = value.split(\"\\0\");\n\t\t\t\t\t\tconst slash = key.indexOf(\"/\");\n\t\t\t\t\t\tconst provider = key.slice(0, slash);\n\t\t\t\t\t\tconst modelId = key.slice(slash + 1);\n\t\t\t\t\t\tif (level) {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelChange?.(provider, modelId, level as ThinkingLevel);\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = { ...config.modelThinkingLevels, [key]: level as ThinkingLevel };\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallbacks.onModelThinkingLevelRemove?.(provider, modelId);\n\t\t\t\t\t\t\tconst next = { ...config.modelThinkingLevels };\n\t\t\t\t\t\t\tdelete next[key];\n\t\t\t\t\t\t\tconfig.modelThinkingLevels = next;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone(thinkingCountLabel());\n\t\t\t\t\t},\n\t\t\t\t\t() => done(),\n\t\t\t\t\tundefined,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tid: \"theme\",\n\t\t\tlabel: \"Theme\",\n\t\t\tdescription: \"Color theme for the interface\",\n\t\t\tcurrentValue: config.currentTheme,\n\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\tnew ThemeSubmenu(currentValue, config.terminalTheme, config.availableThemes, callbacks, done),\n\t\t},\n\t];\n\n\tinsertImageItems(items, config);\n\tinsertUiToggles(items, config);\n\treturn items;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { CompactorModel } from "@bastani/pi-ai";
1
2
  import type { Api, ClassifierApi, ClassifierModel, Model, Transport } from "@bastani/pi-ai/compat";
2
3
  import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
3
4
  import type { ScrollViewScrollbar, WheelScrollLines } from "@earendil-works/pi-tui";
@@ -25,6 +26,10 @@ export interface SettingsConfig {
25
26
  availableClassifierModels?: ClassifierModel<ClassifierApi>[];
26
27
  routerModel?: string;
27
28
  routerModelScope?: "global" | "project";
29
+ availableCompactorModels?: CompactorModel[];
30
+ compactionModel?: string;
31
+ compactionModelScope?: "global" | "project";
32
+ morphAuthenticated?: boolean;
28
33
  modelThinkingLevels?: Record<string, ThinkingLevel>;
29
34
  currentTheme: string;
30
35
  terminalTheme: TerminalTheme;
@@ -66,6 +71,7 @@ export interface SettingsCallbacks {
66
71
  onBashInterceptorEnabledChange: (enabled: boolean) => void;
67
72
  onThinkingLevelChange: (level: ThinkingLevel) => void;
68
73
  onRouterModelChange?: (model: string) => void;
74
+ onCompactionModelChange?: (model: string) => void;
69
75
  onModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;
70
76
  onModelThinkingLevelRemove?: (provider: string, modelId: string) => void;
71
77
  onThemeChange: (theme: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-selector-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, ClassifierApi, ClassifierModel, Model, Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar, WheelScrollLines } from \"@earendil-works/pi-tui\";\nimport type {\n\tCacheWarmingMode,\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tQuietStartup,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.js\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tcacheWarming: CacheWarmingMode;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tavailableDefaultModels?: Model<Api>[];\n\tavailableClassifierModels?: ClassifierModel<ClassifierApi>[];\n\trouterModel?: string;\n\trouterModelScope?: \"global\" | \"project\";\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>;\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\tfullscreenCopyOnSelect: boolean;\n\tfullscreenWheelScrollLines?: WheelScrollLines;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: QuietStartup;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonCacheWarmingChange: (mode: CacheWarmingMode) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonRouterModelChange?: (model: string) => void;\n\tonModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;\n\tonModelThinkingLevelRemove?: (provider: string, modelId: string) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonFullscreenCopyOnSelectChange: (enabled: boolean) => void;\n\tonFullscreenWheelScrollLinesChange?: (lines: WheelScrollLines) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (quiet: QuietStartup) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
1
+ {"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { CompactorModel } from \"@bastani/pi-ai\";\nimport type { Api, ClassifierApi, ClassifierModel, Model, Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar, WheelScrollLines } from \"@earendil-works/pi-tui\";\nimport type {\n\tCacheWarmingMode,\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tQuietStartup,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.js\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tcacheWarming: CacheWarmingMode;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tavailableDefaultModels?: Model<Api>[];\n\tavailableClassifierModels?: ClassifierModel<ClassifierApi>[];\n\trouterModel?: string;\n\trouterModelScope?: \"global\" | \"project\";\n\tavailableCompactorModels?: CompactorModel[];\n\tcompactionModel?: string;\n\tcompactionModelScope?: \"global\" | \"project\";\n\tmorphAuthenticated?: boolean;\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>;\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\tfullscreenCopyOnSelect: boolean;\n\tfullscreenWheelScrollLines?: WheelScrollLines;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: QuietStartup;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonCacheWarmingChange: (mode: CacheWarmingMode) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonRouterModelChange?: (model: string) => void;\n\tonCompactionModelChange?: (model: string) => void;\n\tonModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;\n\tonModelThinkingLevelRemove?: (provider: string, modelId: string) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonFullscreenCopyOnSelectChange: (enabled: boolean) => void;\n\tonFullscreenWheelScrollLinesChange?: (lines: WheelScrollLines) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (quiet: QuietStartup) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { tryExecuteSessionSlashCommand } from "../../core/agent-session-prompt.js";
2
2
  import { yieldToEventLoop } from "../../utils/event-loop.js";
3
+ import { IsolatedInteractiveRuntime } from "../interactive-engine/isolated-runtime.js";
3
4
  import { InteractiveModeBase } from "./interactive-mode-base.js";
4
5
  import { restoreFailedSubmissionDraft } from "./interactive-prompt-restore.js";
5
6
  import { toInteractiveSubmission } from "./interactive-submission.js";
@@ -25,11 +26,12 @@ InteractiveModeBase.prototype.runUserPromptTurn = async function (input) {
25
26
  if (deferredStartupNeedsPromptGate) {
26
27
  await this.ensureDeferredStartupComplete();
27
28
  }
28
- // The public facade omits prototype-installed command methods, but the
29
- // interactive runtime always owns the concrete AgentSession dispatcher.
30
- const handledSlashCommand = await tryExecuteSessionSlashCommand(this.session, userInput);
29
+ const handledSlashCommand = !(this.runtimeHost instanceof IsolatedInteractiveRuntime) &&
30
+ (await tryExecuteSessionSlashCommand(this.session, userInput));
31
31
  if (!handledSlashCommand) {
32
- await this.session.resumeQueuedMessages();
32
+ if (!(this.runtimeHost instanceof IsolatedInteractiveRuntime) || !this.isExtensionCommand(userInput)) {
33
+ await this.session.resumeQueuedMessages();
34
+ }
33
35
  await this.session.prompt(userInput);
34
36
  }
35
37
  }