zidane 6.1.2 → 6.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/{acp-d1OjXjtH.js → acp-CO1EGSwh.js} +3 -3
  2. package/dist/{acp-d1OjXjtH.js.map → acp-CO1EGSwh.js.map} +1 -1
  3. package/dist/acp-cli.js +3 -3
  4. package/dist/acp.d.ts +1 -1
  5. package/dist/acp.js +1 -1
  6. package/dist/{agent-5mbViwQE.js → agent-CZKpBI1X.js} +3 -3
  7. package/dist/{agent-5mbViwQE.js.map → agent-CZKpBI1X.js.map} +1 -1
  8. package/dist/agent.d.ts +1 -1
  9. package/dist/agent.js +1 -1
  10. package/dist/chat/pure.d.ts +3 -3
  11. package/dist/chat/pure.js +1 -1
  12. package/dist/chat.d.ts +5 -5
  13. package/dist/chat.d.ts.map +1 -1
  14. package/dist/chat.js +3 -3
  15. package/dist/contexts/daytona.d.ts +1 -1
  16. package/dist/contexts/e2b.d.ts +1 -1
  17. package/dist/{contexts-BIbcfBFH.js → contexts-A4ep-iJs.js} +2 -2
  18. package/dist/contexts-A4ep-iJs.js.map +1 -0
  19. package/dist/contexts.js +1 -1
  20. package/dist/eval.d.ts +1 -1
  21. package/dist/eval.js +1 -1
  22. package/dist/extensions.d.ts +1 -1
  23. package/dist/extensions.js +1 -1
  24. package/dist/headless.d.ts +1 -1
  25. package/dist/headless.js +2 -2
  26. package/dist/{index-C6Il4kBD.d.ts → index-DC9Iy3Vn.d.ts} +17 -2
  27. package/dist/{index-C6Il4kBD.d.ts.map → index-DC9Iy3Vn.d.ts.map} +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.js +4 -4
  30. package/dist/{login-DZLG__2f.js → login-DhnmYiia.js} +16 -8
  31. package/dist/{login-DZLG__2f.js.map → login-DhnmYiia.js.map} +1 -1
  32. package/dist/{mcp-CcvuVXB9.js → mcp-CkHUripi.js} +61 -4
  33. package/dist/mcp-CkHUripi.js.map +1 -0
  34. package/dist/mcp.d.ts +1 -1
  35. package/dist/mcp.js +1 -1
  36. package/dist/output/stream-json.d.ts +1 -1
  37. package/dist/output/terminal.d.ts +1 -1
  38. package/dist/presets.d.ts +1 -1
  39. package/dist/presets.js +1 -1
  40. package/dist/providers/anthropic.d.ts +1 -1
  41. package/dist/providers/arcee.d.ts +1 -1
  42. package/dist/providers/baseten.d.ts +1 -1
  43. package/dist/providers/cerebras.d.ts +1 -1
  44. package/dist/providers/local.d.ts +1 -1
  45. package/dist/providers/openai-compat.d.ts +1 -1
  46. package/dist/providers/openai.d.ts +1 -1
  47. package/dist/providers/openrouter.d.ts +1 -1
  48. package/dist/providers/xai.d.ts +1 -1
  49. package/dist/providers.d.ts +1 -1
  50. package/dist/restate.d.ts +1 -1
  51. package/dist/session/sqlite.d.ts +1 -1
  52. package/dist/session.d.ts +1 -1
  53. package/dist/skills.d.ts +1 -1
  54. package/dist/{tool-formatters-ETbcC9DM.d.ts → tool-formatters-D7AQW80Z.d.ts} +2 -2
  55. package/dist/tool-formatters-D7AQW80Z.d.ts.map +1 -0
  56. package/dist/tools/fetch-url.d.ts +1 -1
  57. package/dist/tools/web-search.d.ts +1 -1
  58. package/dist/tools.d.ts +1 -1
  59. package/dist/tools.js +1 -1
  60. package/dist/{transcript-anchors-e_30Kvk0.d.ts → transcript-anchors-ClIlrGxh.d.ts} +2 -2
  61. package/dist/{transcript-anchors-e_30Kvk0.d.ts.map → transcript-anchors-ClIlrGxh.d.ts.map} +1 -1
  62. package/dist/{transcript-anchors-DoOWooFn.js → transcript-anchors-hv97ejJn.js} +6 -4
  63. package/dist/transcript-anchors-hv97ejJn.js.map +1 -0
  64. package/dist/tui.d.ts +3 -3
  65. package/dist/tui.d.ts.map +1 -1
  66. package/dist/tui.js +298 -25
  67. package/dist/tui.js.map +1 -1
  68. package/dist/{turn-operations-CEt_l3fy.js → turn-operations-BWTB2So4.js} +32 -4
  69. package/dist/turn-operations-BWTB2So4.js.map +1 -0
  70. package/dist/{turn-operations-D-aaiUOo.d.ts → turn-operations-mvM38tP-.d.ts} +3 -3
  71. package/dist/{turn-operations-D-aaiUOo.d.ts.map → turn-operations-mvM38tP-.d.ts.map} +1 -1
  72. package/dist/types.d.ts +1 -1
  73. package/package.json +1 -1
  74. package/dist/contexts-BIbcfBFH.js.map +0 -1
  75. package/dist/mcp-CcvuVXB9.js.map +0 -1
  76. package/dist/tool-formatters-ETbcC9DM.d.ts.map +0 -1
  77. package/dist/transcript-anchors-DoOWooFn.js.map +0 -1
  78. package/dist/turn-operations-CEt_l3fy.js.map +0 -1
package/dist/tui.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { $l as AgentRegistry, Ec as ThemeColors, Gf as SessionData, Ic as CompletionProvider, Id as McpToolSchema, Iu as ModelInfo, Kl as RingBufferSink, Lc as CompletionReference, Lu as ModelOption, Mu as ProviderKey, Nd as JsonValue, No as ExtensionToolRendererEntry, Pd as McpServerConfig, Rf as SkillConfig, Tc as Theme, Va as StoredExtensionConfigItem, Vo as LoadedExtension, Wf as Session, _u as SessionMeta, if as SessionTurn, io as ExtensionCustomRenderer, ja as ExtensionConfigCategory, jc as CompletionState, ju as ProviderAuth, ol as InteractionRequest, oo as ExtensionDefinition, ou as accentColor, sf as ThinkingLevel, sl as InteractionResponse, vu as Settings, xo as ExtensionRegistry, xu as ModelChainEntry, yu as StreamEvent } from "./index-C6Il4kBD.js";
2
- import { S as ResolvedConfig, V as marginTopFor, b as ChatOptions, bt as hintsLength, f as DiscoveredMcp, i as SessionExportFormat, l as EnabledAllowlistKey, n as computeTurnAnchors, p as DiscoveryError, rt as KeyBindings, t as TranscriptItem, vt as Hint, xt as truncateTrailing, yt as clipHintsToWidth } from "./transcript-anchors-e_30Kvk0.js";
3
- import { C as isTurnHighlighted, E as turnSelectionOwnership, S as isEditErrorResult, T as selectableTurnIds, a as formatToolCall, c as splitPromptSegments, h as ApprovalRequest, i as displayNameFor, m as ApprovalDecision, n as ToolDisplayMeta, o as PromptSegment, p as splitMarkdownCodeBlocks, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, u as MarkdownSegment, w as isVisible } from "./tool-formatters-ETbcC9DM.js";
1
+ import { $l as AgentRegistry, Ec as ThemeColors, Gf as SessionData, Ic as CompletionProvider, Id as McpToolSchema, Iu as ModelInfo, Kl as RingBufferSink, Lc as CompletionReference, Lu as ModelOption, Mu as ProviderKey, Nd as JsonValue, No as ExtensionToolRendererEntry, Pd as McpServerConfig, Rf as SkillConfig, Tc as Theme, Va as StoredExtensionConfigItem, Vo as LoadedExtension, Wf as Session, _u as SessionMeta, if as SessionTurn, io as ExtensionCustomRenderer, ja as ExtensionConfigCategory, jc as CompletionState, ju as ProviderAuth, ol as InteractionRequest, oo as ExtensionDefinition, ou as accentColor, sf as ThinkingLevel, sl as InteractionResponse, vu as Settings, xo as ExtensionRegistry, xu as ModelChainEntry, yu as StreamEvent } from "./index-DC9Iy3Vn.js";
2
+ import { S as ResolvedConfig, V as marginTopFor, b as ChatOptions, bt as hintsLength, f as DiscoveredMcp, i as SessionExportFormat, l as EnabledAllowlistKey, n as computeTurnAnchors, p as DiscoveryError, rt as KeyBindings, t as TranscriptItem, vt as Hint, xt as truncateTrailing, yt as clipHintsToWidth } from "./transcript-anchors-ClIlrGxh.js";
3
+ import { C as isTurnHighlighted, E as turnSelectionOwnership, S as isEditErrorResult, T as selectableTurnIds, a as formatToolCall, c as splitPromptSegments, h as ApprovalRequest, i as displayNameFor, m as ApprovalDecision, n as ToolDisplayMeta, o as PromptSegment, p as splitMarkdownCodeBlocks, r as ToolFormatLine, s as PromptSegmentRef, t as TOOL_DISPLAY, u as MarkdownSegment, w as isVisible } from "./tool-formatters-D7AQW80Z.js";
4
4
  import { Buffer } from "node:buffer";
5
5
  import { ReactNode } from "react";
6
6
  import { RGBA, SyntaxStyle } from "@opentui/core";
package/dist/tui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/effort-picker.tsx","../src/tui/extension-renderers.tsx","../src/tui/extensions-settings.tsx","../src/tui/interaction-block.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-options-picker.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/session-details-modal.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/turn-details-modal.tsx","../src/tui/index.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/effort-picker.tsx","../src/tui/extension-renderers.tsx","../src/tui/extensions-settings.tsx","../src/tui/interaction-block.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-options-picker.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/session-details-modal.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/turn-details-modal.tsx","../src/tui/index.tsx"],"mappings":"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"}
package/dist/tui.js CHANGED
@@ -1,7 +1,8 @@
1
- import { $ as useMcpAuthState, $n as buildPlanSystem, $t as restoreChainFallbacks, A as runOAuthLogin, Bt as createDiscoverySlot, Ct as SETTINGS_CHOICES, D as formatPathForCwd, Dt as clampFps, Et as SettingsProvider, G as buildVisibleMcpRows, Gt as useConfig, Ht as useDiscovery, J as createFileMcpCredentialStore, Jt as buildRunModel, K as indexOfServerRow, Kt as resolveConfig, L as loadMcpToolsCache, M as buildMcpServers, Mt as resolveTheme, O as fetchOAuthRedirect, Ot as useSettings, P as discoverProjectMcps, Q as useMcpAuthDispatch, Qn as buildBuildSystem, Qt as providerKeySetChanged, R as mcpToolsCachePath, St as SETTINGS_CATEGORIES, T as suggestSafelistEntries, Tn as accentColor, Tt as SETTINGS_TOGGLES, U as useMcpToolToggleMap, Ut as useDiscoveryOptional, V as subscribeMcpToolsCache, Vn as useActiveTodos, Vt as DiscoveryProvider, Wt as ConfigProvider, Xt as chainsEqual, Yt as chainPositionOf, Z as McpAuthProvider, Zt as filterChainFallbacks, _ as useSafeModeQueue, _n as discoverAgentsMd, _r as toolCallPreview, _t as buildHints, a as useSurfaces, an as bootTick, at as buildResumedToolResultsTurn, b as getSafelist, br as usageByModel, bt as useEnabledToggleSet, c as useStreamBuffer, cr as lastContextSizeFromTurns, ct as makeRequestInteraction, d as discoverProjectSkills, dr as marginTopFor, dt as useInteractionsActions, er as envSection, et as getMcpAuthStatus, ft as useInteractionsQueue, g as useSafeModeActions, gn as chatAutoCompactBehavior, gt as truncateTrailing, h as SafeModeProvider, hr as sumRunCosts, ht as hintsLength, i as useSelectStyle, ir as compactSummaryEvent, it as PRESENT_PLAN_TOOL, j as supportsOAuth, jn as TODO_STATUS_GLYPHS, jt as resolveChipColor, k as oauthUsesManualCodePaste, l as buildSkillsConfig, lr as listSessionMeta, lt as pendingInteractionsFromTurns, m as writeSessionExport, mr as stripSpawnTokensLine, mt as clipHintsToWidth, n as ThemeProvider, nn as useCompletion, nr as createChatTurnsReadTool, nt as ASK_USER_TOOL, on as buildUpdateHint, or as deriveSessionTitle, ot as createInteractionTools, pr as serverToolResultSummary, pt as EMPTY_HINTS, q as parentServerName, qt as resolveStoragePaths, r as useColors, rn as tryOpenBrowser, rt as InteractionsProvider, s as useTheme, sn as useUpdateCheck, sr as eventsFromTurns, t as computeTurnAnchors, tn as toggleChainEntry, tr as chatReferenceTokensForPrompt, u as defaultSkillScanPaths, ur as loadState, vr as toolResultText, wt as SETTINGS_INPUTS, x as isOnSafelist, xt as DEFAULT_SETTINGS, y as addToSafelist, yr as updateToolEventOutcomes, yt as listProjectFiles, z as refreshMcpToolsCatalog } from "./transcript-anchors-DoOWooFn.js";
2
- import { $ as composeExtensionPreset, B as ExtensionInstallError, Bt as ensureKeybindingsFile, Et as createModelSearchTool, H as installExtensionFromSpec, Ht as groupBindings, J as createExtensionHud, K as removeInstalledExtension, P as summaryToTurn, Ut as keybindingsPath, Vt as formatBindingForDisplay, Wt as matchesBinding, X as discoverAndBuildExtensionRegistry, Y as registerExtensionHostModules, Yt as resolveExtensionKeybindings, _ as buildPostCompactAttachments, c as applyCompactSummaryCutoff, en as inlineLoadedExtension, et as disposeExtensionRegistry, f as cleanupPersistedSession, g as resolveTasksDir, h as resolvePersistDir, ht as isSpawnTool, it as createExtensionHostRuntimeBridge, lt as basic_default, m as resolveMcpWarningsDir, mn as effectiveContextWindow, nn as parseExtensionScanPathEnv, on as coerceExtensionConfigInput, pn as OUTPUT_RESERVE_TOKENS, q as updateInstalledExtension, rn as scanExtensionDirectories, rt as partitionExtensionCatalog, t as createAgent, tt as filterExtensionRegistry, un as resolveExtensionConfigValue, wt as looksBinary, x as compactConversation, y as selectFilesFromSession, z as createExtensionPromptBridge, zt as KEYBINDING_KEY_COL_WIDTH } from "./agent-5mbViwQE.js";
1
+ import { $ as useMcpAuthState, $n as buildPlanSystem, $t as restoreChainFallbacks, A as runOAuthLogin, Bt as createDiscoverySlot, Ct as SETTINGS_CHOICES, D as formatPathForCwd, Dt as clampFps, Et as SettingsProvider, G as buildVisibleMcpRows, Gt as useConfig, Ht as useDiscovery, J as createFileMcpCredentialStore, Jt as buildRunModel, K as indexOfServerRow, Kt as resolveConfig, L as loadMcpToolsCache, M as buildMcpServers, Mt as resolveTheme, O as fetchOAuthRedirect, Ot as useSettings, P as discoverProjectMcps, Q as useMcpAuthDispatch, Qn as buildBuildSystem, Qt as providerKeySetChanged, R as mcpToolsCachePath, St as SETTINGS_CATEGORIES, T as suggestSafelistEntries, Tn as accentColor, Tt as SETTINGS_TOGGLES, U as useMcpToolToggleMap, Ut as useDiscoveryOptional, V as subscribeMcpToolsCache, Vn as useActiveTodos, Vt as DiscoveryProvider, Wt as ConfigProvider, Xt as chainsEqual, Yt as chainPositionOf, Z as McpAuthProvider, Zt as filterChainFallbacks, _ as useSafeModeQueue, _n as discoverAgentsMd, _r as toolCallPreview, _t as buildHints, a as useSurfaces, an as bootTick, at as buildResumedToolResultsTurn, b as getSafelist, br as usageByModel, bt as useEnabledToggleSet, c as useStreamBuffer, cr as lastContextSizeFromTurns, ct as makeRequestInteraction, d as discoverProjectSkills, dr as marginTopFor, dt as useInteractionsActions, er as envSection, et as getMcpAuthStatus, ft as useInteractionsQueue, g as useSafeModeActions, gn as chatAutoCompactBehavior, gt as truncateTrailing, h as SafeModeProvider, hr as sumRunCosts, ht as hintsLength, i as useSelectStyle, ir as compactSummaryEvent, it as PRESENT_PLAN_TOOL, j as supportsOAuth, jn as TODO_STATUS_GLYPHS, jt as resolveChipColor, k as oauthUsesManualCodePaste, l as buildSkillsConfig, lr as listSessionMeta, lt as pendingInteractionsFromTurns, m as writeSessionExport, mr as stripSpawnTokensLine, mt as clipHintsToWidth, n as ThemeProvider, nn as useCompletion, nr as createChatTurnsReadTool, nt as ASK_USER_TOOL, on as buildUpdateHint, or as deriveSessionTitle, ot as createInteractionTools, pr as serverToolResultSummary, pt as EMPTY_HINTS, q as parentServerName, qt as resolveStoragePaths, r as useColors, rn as tryOpenBrowser, rt as InteractionsProvider, s as useTheme, sn as useUpdateCheck, sr as eventsFromTurns, t as computeTurnAnchors, tn as toggleChainEntry, tr as chatReferenceTokensForPrompt, u as defaultSkillScanPaths, ur as loadState, vr as toolResultText, wt as SETTINGS_INPUTS, x as isOnSafelist, xt as DEFAULT_SETTINGS, y as addToSafelist, yr as updateToolEventOutcomes, yt as listProjectFiles, z as refreshMcpToolsCatalog } from "./transcript-anchors-hv97ejJn.js";
2
+ import { $ as composeExtensionPreset, B as ExtensionInstallError, Bt as ensureKeybindingsFile, Et as createModelSearchTool, H as installExtensionFromSpec, Ht as groupBindings, J as createExtensionHud, K as removeInstalledExtension, P as summaryToTurn, St as tailTruncate, Ut as keybindingsPath, Vt as formatBindingForDisplay, Wt as matchesBinding, X as discoverAndBuildExtensionRegistry, Y as registerExtensionHostModules, Yt as resolveExtensionKeybindings, _ as buildPostCompactAttachments, c as applyCompactSummaryCutoff, en as inlineLoadedExtension, et as disposeExtensionRegistry, f as cleanupPersistedSession, g as resolveTasksDir, h as resolvePersistDir, ht as isSpawnTool, it as createExtensionHostRuntimeBridge, lt as basic_default, m as resolveMcpWarningsDir, mn as effectiveContextWindow, nn as parseExtensionScanPathEnv, on as coerceExtensionConfigInput, pn as OUTPUT_RESERVE_TOKENS, q as updateInstalledExtension, rn as scanExtensionDirectories, rt as partitionExtensionCatalog, t as createAgent, tt as filterExtensionRegistry, un as resolveExtensionConfigValue, wt as looksBinary, x as compactConversation, y as selectFilesFromSession, z as createExtensionPromptBridge, zt as KEYBINDING_KEY_COL_WIDTH } from "./agent-CZKpBI1X.js";
3
3
  import { a as formatDuration, c as previewLine, i as fmtTokens, l as shortId, n as compactPath, o as formatTaskStatus, r as fmtCost, s as formatTaskSummary, t as ageString } from "./format-BF745pLL.js";
4
- import { n as createProcessContext } from "./contexts-BIbcfBFH.js";
4
+ import { n as appendCapped } from "./output-cap-kBUHBlnq.js";
5
+ import { i as killProcessGroup, n as SUPPORTS_PROCESS_GROUPS, r as createProcessContext } from "./contexts-A4ep-iJs.js";
5
6
  import { l as errorMessage } from "./errors-DJUxZg9b.js";
6
7
  import { M as findGitRoot, j as projectUserPaths } from "./resolve-CC8Lmwcj.js";
7
8
  import { a as createRingBufferSink, i as createLoggingHooks, l as logFileTimestamp, n as createFileSink, o as fanoutSink, r as createLogger, s as formatLogLine, t as consoleSink } from "./logger-DBX9uYOw.js";
@@ -10,15 +11,15 @@ import { r as formatTokenUsage, t as effectiveInputFromTurn } from "./stats-DAKB
10
11
  import { replaceDynamicSection } from "./prompt.js";
11
12
  import { a as getExtensionSessionState, i as demoteStaleRunningStatus, o as loadSession, s as setExtensionSessionState, t as createSession } from "./session-D7JSEMME.js";
12
13
  import { o as withTimeout } from "./timeout-BDetbuN6.js";
13
- import { n as connectMcpServers, u as McpOAuthProvider } from "./mcp-CcvuVXB9.js";
14
+ import { n as connectMcpServers, u as McpOAuthProvider } from "./mcp-CkHUripi.js";
14
15
  import { c as commandBlockToEvent, d as executeCommand, f as parseCommandInvocation, i as shouldAutoGenerateTitle, l as commandBlocksToContent, r as generateSessionTitle, t as generateStructuredData } from "./generate-data-WL_yGVL6.js";
15
16
  import { s as resolveCompletionSubmit } from "./completion-core-CXYSVhZo.js";
16
17
  import { i as installSkillFromSpec, r as SkillInstallError } from "./skills-BjeXSRlQ.js";
17
- import { i as ZIDANE_EXTENSION_SKILL_NAME, l as withZidaneExtensionSkill, o as extensionDirForCwd, r as EXTENSION_EDIT_METADATA_KEY, s as extensionScaffold, t as loginMcpServer } from "./login-DZLG__2f.js";
18
+ import { i as ZIDANE_EXTENSION_SKILL_NAME, l as withZidaneExtensionSkill, o as extensionDirForCwd, r as EXTENSION_EDIT_METADATA_KEY, s as extensionScaffold, t as loginMcpServer } from "./login-DhnmYiia.js";
18
19
  import { C as restoreModelOptions, S as piIdOf, _ as modelOptionsFor, m as getContextWindow, p as enabledModelOptions, s as setProviderCredential, t as detectAuth, v as modelSupportsReasoning } from "./auth-D5FfJtLf.js";
19
20
  import { createDockerContext } from "./contexts/docker.js";
20
21
  import { createTuiStore } from "./session/sqlite.js";
21
- import { $ as rewriteMultiEditHeader, A as buildLinearRamp, D as createFilesCompletionProvider, F as selectableTurnIds, H as extractEditPayload, I as turnSelectionOwnership, J as buildEditOutcomesAnnotation, K as summarizeEditPayload, M as isEditErrorResult, N as isTurnHighlighted, P as isVisible, Q as resolveApprovalForPayload, R as buildContextualDiff, S as splitMarkdownCodeBlocks, T as uniqueSkillNamesFromReferences, U as filetypeFromPath, W as previewEditPayload, X as mergeApprovalAndBodyOutcomes, Z as parseEditOutcomesFromResult, _ as filterModelCatalog, a as TOOL_DISPLAY, b as chunkMarkdownForRender, d as finalizeStreamingMarkdown, et as stripEditOutcomesAnnotation, f as finalizeStreamingMarkdownForOwner, g as buildModelCatalog, h as splitPromptSegments, i as turnAsText, it as createChatsCompletionProvider, j as EDIT_TOOL_NAMES, k as blendHsl, m as turnContextSize, n as deleteTurnSafely, o as displayNameFor, r as truncateTurnsAt, s as formatToolCall, tt as summarizeOutcomes, u as capTranscriptEvents, v as indexOfEntry, w as createSkillsCompletionProvider, x as normalizeMarkdownCodeFences, z as buildUnifiedDiff } from "./turn-operations-CEt_l3fy.js";
22
+ import { $ as mergeApprovalAndBodyOutcomes, A as buildLinearRamp, D as createFilesCompletionProvider, F as isUserBashEvent, G as extractEditPayload, H as buildUnifiedDiff, I as isVisible, K as filetypeFromPath, L as promptHistoryFromEvents, M as EDIT_TOOL_NAMES, N as isEditErrorResult, P as isTurnHighlighted, R as selectableTurnIds, S as splitMarkdownCodeBlocks, T as uniqueSkillNamesFromReferences, V as buildContextualDiff, Y as summarizeEditPayload, Z as buildEditOutcomesAnnotation, _ as filterModelCatalog, a as TOOL_DISPLAY, b as chunkMarkdownForRender, d as finalizeStreamingMarkdown, et as parseEditOutcomesFromResult, f as finalizeStreamingMarkdownForOwner, g as buildModelCatalog, h as splitPromptSegments, i as turnAsText, it as summarizeOutcomes, j as BASH_CALL_ID_PREFIX, k as blendHsl, m as turnContextSize, n as deleteTurnSafely, nt as rewriteMultiEditHeader, o as displayNameFor, q as previewEditPayload, r as truncateTurnsAt, rt as stripEditOutcomesAnnotation, s as formatToolCall, st as createChatsCompletionProvider, tt as resolveApprovalForPayload, u as capTranscriptEvents, v as indexOfEntry, w as createSkillsCompletionProvider, x as normalizeMarkdownCodeFences, z as turnSelectionOwnership } from "./turn-operations-BWTB2So4.js";
22
23
  import { basename, dirname, join, relative, resolve } from "node:path";
23
24
  import { Buffer } from "node:buffer";
24
25
  import * as fs from "node:fs";
@@ -482,6 +483,85 @@ function EmptyState$1() {
482
483
  })]
483
484
  });
484
485
  }
486
+ /**
487
+ * The shell `!` commands run through — the user's own (`$SHELL`), so their
488
+ * shell's syntax (zsh globbing, fish semantics, …) matches what they'd get
489
+ * in the terminal the TUI is running in. Falls back to `/bin/sh` when the
490
+ * variable is unset (cron-like environments) or blank.
491
+ */
492
+ function resolveUserShell(env = process.env) {
493
+ return env.SHELL?.trim() || "/bin/sh";
494
+ }
495
+ /** Is `prompt` a `!`-prefixed bash invocation? Requires a non-blank command after the bang. */
496
+ function parseBashInvocation(prompt) {
497
+ if (!prompt.startsWith("!")) return null;
498
+ const command = prompt.slice(1).trim();
499
+ return command.length > 0 ? command : null;
500
+ }
501
+ function runBashStreaming(opts) {
502
+ const { command, cwd, signal } = opts;
503
+ const startedAt = Date.now();
504
+ return new Promise((resolve) => {
505
+ const slot = {
506
+ text: "",
507
+ bytes: 0
508
+ };
509
+ let overflowed = false;
510
+ let settled = false;
511
+ const child = spawn(opts.shell ?? resolveUserShell(), ["-c", command], {
512
+ cwd,
513
+ stdio: [
514
+ "ignore",
515
+ "pipe",
516
+ "pipe"
517
+ ],
518
+ detached: SUPPORTS_PROCESS_GROUPS,
519
+ env: process.env
520
+ });
521
+ let graceTimer = null;
522
+ const settle = (exitCode) => {
523
+ if (settled) return;
524
+ settled = true;
525
+ signal.removeEventListener("abort", onAbort);
526
+ if (graceTimer) clearTimeout(graceTimer);
527
+ resolve({
528
+ output: slot.text,
529
+ exitCode,
530
+ durationMs: Date.now() - startedAt,
531
+ aborted: signal.aborted,
532
+ overflowed
533
+ });
534
+ };
535
+ const terminate = () => {
536
+ killProcessGroup(child, "SIGTERM");
537
+ if (graceTimer) return;
538
+ graceTimer = setTimeout(() => {
539
+ killProcessGroup(child, "SIGKILL");
540
+ settle(null);
541
+ }, opts.killGraceMs ?? 5e3);
542
+ };
543
+ function onAbort() {
544
+ terminate();
545
+ }
546
+ signal.addEventListener("abort", onAbort, { once: true });
547
+ if (signal.aborted) onAbort();
548
+ const onData = (chunk) => {
549
+ if (overflowed || settled) return;
550
+ if (appendCapped(slot, chunk, 1048576) !== "ok") {
551
+ overflowed = true;
552
+ terminate();
553
+ }
554
+ opts.onChunk?.(slot.text);
555
+ };
556
+ child.stdout?.on("data", onData);
557
+ child.stderr?.on("data", onData);
558
+ child.on("close", (code) => settle(code));
559
+ child.on("error", (err) => {
560
+ slot.text += `${slot.text ? "\n" : ""}spawn failed: ${err.message}`;
561
+ settle(null);
562
+ });
563
+ });
564
+ }
485
565
  //#endregion
486
566
  //#region src/tui/builtin-commands.ts
487
567
  function createBuiltinCommands(opts) {
@@ -1375,6 +1455,13 @@ function useChipHighlights(textareaRef, references, chipStyle) {
1375
1455
  //#endregion
1376
1456
  //#region src/tui/components.tsx
1377
1457
  /**
1458
+ * Display window for user-initiated `!` bash results — taller than the
1459
+ * regular tool-result cap ({@link ToolResultBlock}'s default, 6): the user
1460
+ * ran the command specifically to read its output. Keyed off
1461
+ * {@link isUserBashEvent}.
1462
+ */
1463
+ const BASH_RESULT_MAX_LINES = 10;
1464
+ /**
1378
1465
  * Memoized so a flush that mutates only the trailing event doesn't force the
1379
1466
  * entire transcript to re-render. Each event holds a stable reference until
1380
1467
  * its content changes (we only ever recreate the streaming-markdown tail).
@@ -2052,7 +2139,8 @@ function EventLineImpl({ event, previous, depthOffset = 0, hideChildLabel = fals
2052
2139
  const COLOR = useColors();
2053
2140
  const { settings } = useSettings();
2054
2141
  const safeText = event.text === "" ? " " : event.text;
2055
- const row = rowStyle(indentFor(Math.max(0, (event.depth ?? 0) - depthOffset)));
2142
+ const effectiveDepth = Math.max(0, (event.depth ?? 0) - depthOffset);
2143
+ const row = rowStyle(indentFor(settings.hideSubagentOutput && (event.kind === "spawn-start" || event.kind === "spawn-end") ? 0 : effectiveDepth));
2056
2144
  const child = isChild(event);
2057
2145
  switch (event.kind) {
2058
2146
  case "separator": return /* @__PURE__ */ jsx$1("text", { children: " " });
@@ -2127,7 +2215,8 @@ function EventLineImpl({ event, previous, depthOffset = 0, hideChildLabel = fals
2127
2215
  indent: row.paddingLeft,
2128
2216
  renderDefault: () => /* @__PURE__ */ jsx$1(ToolResultBlock, {
2129
2217
  text: event.text,
2130
- indent: row.paddingLeft
2218
+ indent: row.paddingLeft,
2219
+ maxLines: isUserBashEvent(event) ? BASH_RESULT_MAX_LINES : void 0
2131
2220
  })
2132
2221
  });
2133
2222
  case "custom": return /* @__PURE__ */ jsx$1("box", {
@@ -2882,15 +2971,15 @@ function CommandDetailBlock({ label, text, indent, diff }) {
2882
2971
  })]
2883
2972
  });
2884
2973
  }
2885
- function ToolResultBlock({ text, indent, diff }) {
2974
+ function ToolResultBlock({ text, indent, diff, maxLines = TOOL_RESULT_MAX_LINES }) {
2886
2975
  const COLOR = useColors();
2887
2976
  const rawLines = stripAnsiSequences(text).split("\n");
2888
2977
  let end = rawLines.length;
2889
2978
  while (end > 0 && rawLines[end - 1].trim() === "") end--;
2890
2979
  if (end === 0) return null;
2891
2980
  const lines = rawLines.slice(0, end);
2892
- const visible = lines.slice(0, TOOL_RESULT_MAX_LINES);
2893
- const omitted = Math.max(0, lines.length - TOOL_RESULT_MAX_LINES);
2981
+ const visible = lines.slice(0, maxLines);
2982
+ const omitted = Math.max(0, lines.length - maxLines);
2894
2983
  return /* @__PURE__ */ jsxs("box", {
2895
2984
  style: {
2896
2985
  paddingLeft: indent,
@@ -9098,7 +9187,7 @@ function ChatScreen({ cwd, events, busy, compacting = false, queuedMessages = EM
9098
9187
  titleText,
9099
9188
  hasStatusIcon
9100
9189
  ]);
9101
- const userPrompts = useMemo(() => events.filter((e) => e.kind === "user-prompt").map((e) => e.text), [events]);
9190
+ const userPrompts = useMemo(() => promptHistoryFromEvents(events), [events]);
9102
9191
  const [completionPopupOpen, setCompletionPopupOpen] = useState(false);
9103
9192
  const handlePopupOpenChange = useCallback((open) => {
9104
9193
  setCompletionPopupOpen(open);
@@ -9547,6 +9636,20 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9547
9636
  }, [popupOpen, onPopupOpenChange]);
9548
9637
  const chipStyle = useChipStyle();
9549
9638
  useChipHighlights(textareaRef, completion.references, chipStyle);
9639
+ const [shellMode, setShellMode] = useState(false);
9640
+ const shellModeRef = useRef(false);
9641
+ shellModeRef.current = shellMode;
9642
+ /** Last text pushed into bufferState — distinguishes "typed `!` on empty" from bulk sets. */
9643
+ const lastSyncedTextRef = useRef("");
9644
+ /**
9645
+ * Flip shell mode with the ref mirror updated SYNCHRONOUSLY — callers
9646
+ * that mutate the buffer and re-run `syncBuffer` in the same tick
9647
+ * (history cycling) must not race the render-time ref assignment.
9648
+ */
9649
+ const setShellModeNow = useCallback((on) => {
9650
+ shellModeRef.current = on;
9651
+ setShellMode(on);
9652
+ }, []);
9550
9653
  /**
9551
9654
  * Pull the latest buffer state from the OpenTUI textarea ref. Called from
9552
9655
  * `onContentChange` + `onKeyDown` so cursor moves (without text changes)
@@ -9555,6 +9658,11 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9555
9658
  const syncBuffer = useCallback(() => {
9556
9659
  const ta = textareaRef.current;
9557
9660
  if (!ta) return;
9661
+ if (!shellModeRef.current && ta.plainText === "!" && lastSyncedTextRef.current === "") {
9662
+ ta.clear();
9663
+ setShellModeNow(true);
9664
+ }
9665
+ lastSyncedTextRef.current = ta.plainText;
9558
9666
  setBufferState({
9559
9667
  text: ta.plainText,
9560
9668
  cursor: ta.cursorOffset
@@ -9595,10 +9703,17 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9595
9703
  ]);
9596
9704
  const submit = useCallback(() => {
9597
9705
  const value = textareaRef.current?.plainText ?? "";
9598
- if (!value.trim() && attachments.length === 0) return;
9599
- onSubmit(value, completion.references, attachments);
9706
+ if (shellMode) {
9707
+ if (!value.trim()) return;
9708
+ onSubmit(`!${value}`, completion.references, attachments);
9709
+ setShellModeNow(false);
9710
+ } else {
9711
+ if (!value.trim() && attachments.length === 0) return;
9712
+ onSubmit(value, completion.references, attachments);
9713
+ }
9600
9714
  textareaRef.current?.clear();
9601
9715
  historyRef.current = null;
9716
+ lastSyncedTextRef.current = "";
9602
9717
  setBufferState({
9603
9718
  text: "",
9604
9719
  cursor: 0
@@ -9608,7 +9723,8 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9608
9723
  }, [
9609
9724
  onSubmit,
9610
9725
  completion.references,
9611
- attachments
9726
+ attachments,
9727
+ shellMode
9612
9728
  ]);
9613
9729
  const commitCompletion = useCallback(() => {
9614
9730
  const result = completion.commit();
@@ -9682,25 +9798,49 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9682
9798
  attachmentsEnabled,
9683
9799
  attachClipboardImage
9684
9800
  ]);
9801
+ /**
9802
+ * Fill the textarea from a history entry (or the saved draft), switching
9803
+ * the prompt TYPE with it: `!`-prefixed entries recall INTO shell mode
9804
+ * (bang consumed, accent + label shown), anything else drops back to the
9805
+ * regular prompt — cycling across the shell/non-shell boundary flips the
9806
+ * input mode live instead of leaving a literal `!` in the buffer.
9807
+ *
9808
+ * Cursor placement is DIRECTION-AWARE because the ↑/↓ handlers key their
9809
+ * cycle conditions off it (↑ cycles at offset 0, ↓ at buffer end):
9810
+ * browsing back parks the cursor at the START so the next ↑ keeps
9811
+ * cycling; browsing forward parks it at the END so the next ↓ does —
9812
+ * repeated taps in one direction walk the history without repositioning.
9813
+ */
9814
+ const applyRecalledPrompt = useCallback((text, direction) => {
9815
+ const ta = textareaRef.current;
9816
+ if (!ta) return;
9817
+ const bash = text.startsWith("!");
9818
+ setShellModeNow(bash);
9819
+ ta.setText(bash ? text.slice(1) : text);
9820
+ if (direction === -1) ta.cursorOffset = 0;
9821
+ else ta.gotoBufferEnd();
9822
+ }, [setShellModeNow]);
9685
9823
  const cycleHistory = useCallback((direction) => {
9686
9824
  if (userPrompts.length === 0 || !textareaRef.current) return;
9687
9825
  if (historyRef.current === null) historyRef.current = {
9688
9826
  idx: userPrompts.length,
9689
- draft: textareaRef.current.plainText
9827
+ draft: `${shellModeRef.current ? "!" : ""}${textareaRef.current.plainText}`
9690
9828
  };
9691
9829
  const nextIdx = historyRef.current.idx + direction;
9692
9830
  if (nextIdx < 0) return;
9693
9831
  if (nextIdx >= userPrompts.length) {
9694
- textareaRef.current.setText(historyRef.current.draft);
9695
- textareaRef.current.gotoBufferEnd();
9832
+ applyRecalledPrompt(historyRef.current.draft, direction);
9696
9833
  historyRef.current = null;
9697
9834
  } else {
9698
- textareaRef.current.setText(userPrompts[nextIdx]);
9699
- textareaRef.current.gotoBufferEnd();
9835
+ applyRecalledPrompt(userPrompts[nextIdx], direction);
9700
9836
  historyRef.current.idx = nextIdx;
9701
9837
  }
9702
9838
  syncBuffer();
9703
- }, [userPrompts, syncBuffer]);
9839
+ }, [
9840
+ userPrompts,
9841
+ syncBuffer,
9842
+ applyRecalledPrompt
9843
+ ]);
9704
9844
  /**
9705
9845
  * Key interception. OpenTUI fires `onKeyDown` BEFORE the textarea's
9706
9846
  * binding table (`Renderable.keypressHandler` invokes the user
@@ -9730,6 +9870,11 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9730
9870
  openExternalEditor();
9731
9871
  return;
9732
9872
  }
9873
+ if (event.name === "backspace" && !event.ctrl && !event.meta && !event.shift && shellModeRef.current && (textareaRef.current?.cursorOffset ?? 0) === 0) {
9874
+ event.preventDefault();
9875
+ setShellModeNow(false);
9876
+ return;
9877
+ }
9733
9878
  if ((event.name === "backspace" || event.name === "delete") && !event.meta && !event.shift && attachments.length > 0) {
9734
9879
  const buf = textareaRef.current;
9735
9880
  const emptyPrompt = !buf || buf.plainText.length === 0;
@@ -9866,7 +10011,7 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9866
10011
  children: [/* @__PURE__ */ jsx$1("box", {
9867
10012
  style: {
9868
10013
  border: true,
9869
- borderColor: selectMode ? COLOR.warn : COLOR.borderActive,
10014
+ borderColor: selectMode ? COLOR.warn : shellMode ? COLOR.accent : COLOR.borderActive,
9870
10015
  paddingLeft: 1,
9871
10016
  paddingRight: 1,
9872
10017
  height: boxHeight,
@@ -9877,7 +10022,7 @@ function PromptBlock({ userPrompts, onSubmit, completionProviders, onCompletionT
9877
10022
  focused: focused && !selectMode,
9878
10023
  keyBindings: TEXTAREA_BINDINGS,
9879
10024
  wrapMode: "word",
9880
- placeholder: selectMode === "turn" ? "— turn-select mode — press ⎋ to resume typing —" : selectMode === "queue" ? "— queue-select mode — press ⎋ to resume typing —" : "Ask zidane…",
10025
+ placeholder: selectMode === "turn" ? "— turn-select mode — press ⎋ to resume typing —" : selectMode === "queue" ? "— queue-select mode — press ⎋ to resume typing —" : shellMode ? "Run a shell command…" : "Ask zidane…",
9881
10026
  syntaxStyle: chipStyle,
9882
10027
  style: {
9883
10028
  flexGrow: 1,
@@ -14533,6 +14678,21 @@ const BUILTIN_COMPLETION_TRIGGERS = /* @__PURE__ */ new Set([
14533
14678
  */
14534
14679
  const SKILL_ACTIVATION_TIMEOUT_MS = 60 * 1e3;
14535
14680
  /**
14681
+ * `!` bash mode: transcript repaint throttle while output streams, and the
14682
+ * tail-priority trim applied to the displayed/persisted result — the same
14683
+ * 32 KiB default the shell TOOL uses, so `!` results and model-driven shell
14684
+ * results cost the same on the wire.
14685
+ */
14686
+ const BASH_PAINT_INTERVAL_MS = 100;
14687
+ const BASH_RESULT_MAX_BYTES = 32 * 1024;
14688
+ /** Rolling-tail window while output streams — matches the renderer's bash display cap. */
14689
+ const BASH_STREAM_TAIL_LINES = 10;
14690
+ /** Last `n` lines of `text` (terminal-style rolling tail for live bash output). */
14691
+ function lastLines(text, n) {
14692
+ const lines = text.split("\n");
14693
+ return lines.length <= n ? text : lines.slice(lines.length - n).join("\n");
14694
+ }
14695
+ /**
14536
14696
  * Poll cadence for out-of-band extension install detection (see the
14537
14697
  * auto-reload effect near `runningRef`). A scan is a handful of readdirs
14538
14698
  * and lstats — cheap enough that latency, not cost, picked the number.
@@ -17403,6 +17563,110 @@ function AppShell() {
17403
17563
  providerRegistry,
17404
17564
  interactions
17405
17565
  ]);
17566
+ /**
17567
+ * `!` bash mode — run a user-typed shell command in the cwd, streaming
17568
+ * output into the transcript and persisting the exchange as a synthetic
17569
+ * `shell` tool-call turn pair (assistant `tool_call` + user `tool_result`).
17570
+ * The pair is wire-visible, so the model sees what the user ran and what
17571
+ * came back exactly as if it had called the tool itself — and the reload
17572
+ * path (`eventsFromTurns`) renders it through the existing tool branches,
17573
+ * keeping live and replayed transcripts identical. Runs under the submit
17574
+ * gate (busy loader, queue-while-running) and cancels via the same esc
17575
+ * path as `/` commands (`commandAbortRef`).
17576
+ */
17577
+ const runBashCommand = useCallback(async (command) => {
17578
+ const session = sessionRef.current;
17579
+ if (!session) return;
17580
+ const controller = new AbortController();
17581
+ commandAbortRef.current = controller;
17582
+ const callId = `${BASH_CALL_ID_PREFIX}${crypto.randomUUID()}`;
17583
+ const callTurnId = crypto.randomUUID();
17584
+ const resultTurnId = crypto.randomUUID();
17585
+ const startedAt = Date.now();
17586
+ stream.appendImmediate({
17587
+ kind: "tool",
17588
+ text: toolCallPreview("shell", { command }),
17589
+ tool: "shell",
17590
+ input: { command },
17591
+ callId,
17592
+ turnId: callTurnId
17593
+ });
17594
+ let lastPaint = 0;
17595
+ const upsertResult = (text, force = false) => {
17596
+ const now = Date.now();
17597
+ if (!force && now - lastPaint < BASH_PAINT_INTERVAL_MS) return;
17598
+ lastPaint = now;
17599
+ const evt = {
17600
+ kind: "tool-result",
17601
+ text,
17602
+ tool: "shell",
17603
+ callId,
17604
+ turnId: resultTurnId
17605
+ };
17606
+ stream.flushAndUpdate((events) => {
17607
+ const idx = events.findIndex((e) => e.kind === "tool-result" && e.callId === callId);
17608
+ if (idx === -1) return [...events, evt];
17609
+ const next = events.slice();
17610
+ next[idx] = evt;
17611
+ return next;
17612
+ });
17613
+ };
17614
+ try {
17615
+ const result = await runBashStreaming({
17616
+ command,
17617
+ cwd,
17618
+ signal: controller.signal,
17619
+ onChunk: (acc) => upsertResult(lastLines(acc, BASH_STREAM_TAIL_LINES))
17620
+ });
17621
+ const body = tailTruncate(result.output.trim() || "(no output)", BASH_RESULT_MAX_BYTES);
17622
+ const overflowNote = result.overflowed ? "\n[output ceiling reached — process killed]" : "";
17623
+ let finalText;
17624
+ let isError = false;
17625
+ if (result.aborted) {
17626
+ isError = true;
17627
+ finalText = `${body}${overflowNote}\n(cancelled by user after ${result.durationMs}ms)`;
17628
+ } else if (result.exitCode === 0) finalText = `${body}${overflowNote}\n(exit 0, ${result.durationMs}ms)`;
17629
+ else {
17630
+ isError = true;
17631
+ finalText = `${result.exitCode === null ? `Killed (${result.durationMs}ms)` : `Exit code ${result.exitCode} (${result.durationMs}ms)`}\n${body}${overflowNote}`;
17632
+ }
17633
+ upsertResult(finalText, true);
17634
+ await session.appendTurns([{
17635
+ id: callTurnId,
17636
+ role: "assistant",
17637
+ createdAt: startedAt,
17638
+ content: [{
17639
+ type: "tool_call",
17640
+ id: callId,
17641
+ name: "shell",
17642
+ input: { command }
17643
+ }]
17644
+ }, {
17645
+ id: resultTurnId,
17646
+ role: "user",
17647
+ createdAt: Date.now(),
17648
+ content: [{
17649
+ type: "tool_result",
17650
+ callId,
17651
+ output: finalText,
17652
+ ...isError ? { isError: true } : {}
17653
+ }]
17654
+ }]).catch((err) => debugLog("bash: appendTurns failed", err));
17655
+ } catch (err) {
17656
+ stream.appendImmediate({
17657
+ kind: "error",
17658
+ text: `!${command}: ${errorMessage(err)}`,
17659
+ callId
17660
+ });
17661
+ } finally {
17662
+ commandAbortRef.current = null;
17663
+ setCurrentSession((prev) => prev ? {
17664
+ ...prev,
17665
+ turnCount: session.turns.length,
17666
+ updatedAt: Date.now()
17667
+ } : prev);
17668
+ }
17669
+ }, [stream, cwd]);
17406
17670
  /** Route a submitted prompt to the command executor when it's a `/cmd`, otherwise to the model. */
17407
17671
  const runPromptOrCommand = useCallback(async (prompt, references, attachments, opts) => {
17408
17672
  if (!opts?.wake) {
@@ -17411,9 +17675,18 @@ function AppShell() {
17411
17675
  await runCommand(invocation);
17412
17676
  return;
17413
17677
  }
17678
+ const bashCommand = parseBashInvocation(prompt);
17679
+ if (bashCommand !== null) {
17680
+ await runBashCommand(bashCommand);
17681
+ return;
17682
+ }
17414
17683
  }
17415
17684
  await runSingleMessage(prompt, references, attachments, opts);
17416
- }, [runCommand, runSingleMessage]);
17685
+ }, [
17686
+ runCommand,
17687
+ runBashCommand,
17688
+ runSingleMessage
17689
+ ]);
17417
17690
  /**
17418
17691
  * Post-run drain loop, shared by `onSubmitPrompt` and the auto-wake
17419
17692
  * path. Runs follow-up messages until nothing is left to do:
@@ -17468,7 +17741,7 @@ function AppShell() {
17468
17741
  suppressWakeRef.current = false;
17469
17742
  (async () => {
17470
17743
  let effectivePrompt = prompt;
17471
- if (parseCommandInvocation(prompt, commandsRef.current.map((c) => c.name)) === null) for (const contribution of extensionRegistry.promptTransforms) try {
17744
+ if (parseCommandInvocation(prompt, commandsRef.current.map((c) => c.name)) === null && parseBashInvocation(prompt) === null) for (const contribution of extensionRegistry.promptTransforms) try {
17472
17745
  const out = await contribution.value(effectivePrompt);
17473
17746
  if (out === void 0) continue;
17474
17747
  if (typeof out === "string") {