@machina.ai/cell-cli 1.64.0-rc2 → 1.66.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/package.json +4 -4
- package/dist/src/acp/acpSession.js +9 -13
- package/dist/src/acp/acpSession.js.map +1 -1
- package/dist/src/acp/acpSession.test.js +88 -0
- package/dist/src/acp/acpSession.test.js.map +1 -1
- package/dist/src/commands/mcp/add.js +14 -6
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/mcp/add.test.js +61 -0
- package/dist/src/commands/mcp/add.test.js.map +1 -1
- package/dist/src/commands/mcp/remove.js +14 -1
- package/dist/src/commands/mcp/remove.js.map +1 -1
- package/dist/src/commands/mcp/remove.test.js +63 -0
- package/dist/src/commands/mcp/remove.test.js.map +1 -1
- package/dist/src/config/config.js +12 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +17 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/envDefaults.d.ts +20 -0
- package/dist/src/config/envDefaults.js +29 -0
- package/dist/src/config/envDefaults.js.map +1 -0
- package/dist/src/config/envDefaults.test.d.ts +6 -0
- package/dist/src/config/envDefaults.test.js +23 -0
- package/dist/src/config/envDefaults.test.js.map +1 -0
- package/dist/src/config/extension-manager.js +13 -4
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.test.js +117 -0
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +34 -0
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/github_fetch.js +110 -18
- package/dist/src/config/extensions/github_fetch.js.map +1 -1
- package/dist/src/config/extensions/github_fetch.test.js +251 -36
- package/dist/src/config/extensions/github_fetch.test.js.map +1 -1
- package/dist/src/config/settings.d.ts +1 -0
- package/dist/src/config/settings.js +148 -58
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +300 -0
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +1 -1
- package/dist/src/config/settingsSchema.js +6 -1
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/gemini.test.js +69 -0
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/interactiveCli.js +8 -3
- package/dist/src/interactiveCli.js.map +1 -1
- package/dist/src/services/CommandService.js +1 -1
- package/dist/src/services/CommandService.js.map +1 -1
- package/dist/src/services/CommandService.test.js +18 -1
- package/dist/src/services/CommandService.test.js.map +1 -1
- package/dist/src/services/SlashCommandConflictHandler.d.ts +1 -0
- package/dist/src/services/SlashCommandConflictHandler.js +18 -2
- package/dist/src/services/SlashCommandConflictHandler.js.map +1 -1
- package/dist/src/services/SlashCommandConflictHandler.test.js +85 -8
- package/dist/src/services/SlashCommandConflictHandler.test.js.map +1 -1
- package/dist/src/ui/AppContainer.js +254 -12
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +362 -6
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.js +21 -5
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +83 -0
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/useAuth.js +7 -1
- package/dist/src/ui/auth/useAuth.js.map +1 -1
- package/dist/src/ui/auth/useAuth.test.js +9 -0
- package/dist/src/ui/auth/useAuth.test.js.map +1 -1
- package/dist/src/ui/commands/marketplaceCommand.js +92 -4
- package/dist/src/ui/commands/marketplaceCommand.js.map +1 -1
- package/dist/src/ui/commands/marketplaceCommand.test.js +98 -1
- package/dist/src/ui/commands/marketplaceCommand.test.js.map +1 -1
- package/dist/src/ui/components/AsciiArt.d.ts +6 -6
- package/dist/src/ui/components/AsciiArt.js +6 -6
- package/dist/src/ui/components/CliSpinner.d.ts +3 -2
- package/dist/src/ui/components/CliSpinner.js +27 -3
- package/dist/src/ui/components/CliSpinner.js.map +1 -1
- package/dist/src/ui/components/CliSpinner.test.js +42 -3
- package/dist/src/ui/components/CliSpinner.test.js.map +1 -1
- package/dist/src/ui/components/Composer.js +3 -3
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/Composer.test.js +39 -1
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +5 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js +19 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
- package/dist/src/ui/components/Footer.js +1 -1
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.js +9 -2
- package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
- package/dist/src/ui/components/GeminiSpinner.d.ts +1 -1
- package/dist/src/ui/components/GeminiSpinner.js +18 -7
- package/dist/src/ui/components/GeminiSpinner.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +5 -2
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +21 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.d.ts +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +4 -2
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/MainContent.js +47 -9
- package/dist/src/ui/components/MainContent.js.map +1 -1
- package/dist/src/ui/components/MainContent.test.js +87 -1
- package/dist/src/ui/components/MainContent.test.js.map +1 -1
- package/dist/src/ui/components/MemoryUsageDisplay.js +8 -4
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +30 -16
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +32 -24
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/StatusRow.d.ts +7 -6
- package/dist/src/ui/components/StatusRow.js +24 -10
- package/dist/src/ui/components/StatusRow.js.map +1 -1
- package/dist/src/ui/components/ValidationDialog.js +13 -6
- package/dist/src/ui/components/ValidationDialog.js.map +1 -1
- package/dist/src/ui/components/ValidationDialog.test.js +40 -0
- package/dist/src/ui/components/ValidationDialog.test.js.map +1 -1
- package/dist/src/ui/components/messages/DenseToolMessage.js +17 -12
- package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/DenseToolMessage.test.js +71 -0
- package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.js +14 -11
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js +32 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.js +8 -2
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +23 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
- package/dist/src/ui/contexts/ToolActionsContext.js +7 -1
- package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/ToolActionsContext.test.js +54 -1
- package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +15 -15
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAgentStream.d.ts +9 -2
- package/dist/src/ui/hooks/useAgentStream.js +173 -8
- package/dist/src/ui/hooks/useAgentStream.js.map +1 -1
- package/dist/src/ui/hooks/useAgentStream.test.js +104 -1
- package/dist/src/ui/hooks/useAgentStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +174 -59
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +230 -3
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +3 -3
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +23 -4
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +10 -6
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +49 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
- package/dist/src/ui/key/keyBindings.js +19 -6
- package/dist/src/ui/key/keyBindings.js.map +1 -1
- package/dist/src/ui/key/keyBindings.test.js +106 -0
- package/dist/src/ui/key/keyBindings.test.js.map +1 -1
- package/dist/src/ui/utils/formatters.d.ts +2 -0
- package/dist/src/ui/utils/formatters.js +13 -5
- package/dist/src/ui/utils/formatters.js.map +1 -1
- package/dist/src/ui/utils/formatters.test.js +18 -0
- package/dist/src/ui/utils/formatters.test.js.map +1 -1
- package/dist/src/utils/activityLogger.js +109 -33
- package/dist/src/utils/activityLogger.js.map +1 -1
- package/dist/src/utils/activityLogger.test.js +441 -0
- package/dist/src/utils/activityLogger.test.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.d.ts +4 -1
- package/dist/src/utils/handleAutoUpdate.js +45 -3
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.test.js +280 -2
- package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
- package/dist/src/utils/nodeVersion.d.ts +11 -0
- package/dist/src/utils/nodeVersion.js +42 -0
- package/dist/src/utils/nodeVersion.js.map +1 -0
- package/dist/src/utils/nodeVersion.test.d.ts +6 -0
- package/dist/src/utils/nodeVersion.test.js +35 -0
- package/dist/src/utils/nodeVersion.test.js.map +1 -0
- package/dist/src/utils/processUtils.d.ts +23 -0
- package/dist/src/utils/processUtils.js +72 -0
- package/dist/src/utils/processUtils.js.map +1 -1
- package/dist/src/utils/processUtils.test.js +95 -1
- package/dist/src/utils/processUtils.test.js.map +1 -1
- package/dist/src/utils/relaunch.js +8 -6
- package/dist/src/utils/relaunch.js.map +1 -1
- package/dist/src/utils/relaunch.test.js +107 -1
- package/dist/src/utils/relaunch.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlashCommandConflictHandler.test.js","sourceRoot":"","sources":["../../../src/services/SlashCommandConflictHandler.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SlashCommandConflictHandler.test.js","sourceRoot":"","sources":["../../../src/services/SlashCommandConflictHandler.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,UAAU,EACV,SAAS,GAGV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IAC1D,MAAM,MAAM,GACV,MAAM,cAAc,EAA4C,CAAC;IACnE,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;YACX,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;SACtB;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,OAAoC,CAAC;IAEzC;;OAEG;IACH,MAAM,aAAa,GAAG,CAAC,SAAiC,EAAE,EAAE;QAC1D,MAAM,QAAQ,GAAG,EAAE;aAChB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;aACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,qBAAqB,CACrD,CAAC,CAAC,CAAoD,CAAC;QAC3D,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,oBAAoB,CACxC,SAAS,CAAC,qBAAqB,EAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,aAAa,CAAC;YACZ;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,iBAAiB;gBAC5B,kBAAkB,EAAE,UAAU;gBAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;gBACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;aACjC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN,sHAAsH,CACvH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,aAAa,CAAC;YACZ;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,oBAAoB;gBAC/B,kBAAkB,EAAE,aAAa;gBACjC,SAAS,EAAE,WAAW,CAAC,UAAU;gBACjC,mBAAmB,EAAE,aAAa;gBAClC,UAAU,EAAE,WAAW,CAAC,cAAc;aACvC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN,4IAA4I,CAC7I,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,aAAa,CAAC;YACZ;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,UAAU,EAAE,WAAW,CAAC,cAAc;aACvC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,kBAAkB;gBAC7B,SAAS,EAAE,WAAW,CAAC,cAAc;gBACrC,UAAU,EAAE,WAAW,CAAC,SAAS;aAClC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN;;iEAE2D,CAC5D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,aAAa,CAAC;YACZ,SAAS;YACT;gBACE,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,UAAU,EAAE,WAAW,CAAC,QAAQ;aACjC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,+DAA+D;QAC/D,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,iBAAiB;YAC5B,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEzD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAE/C,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,iBAAiB;YAC5B,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEzD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAE/C,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAEvD,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8GAA8G,EAAE,GAAG,EAAE;QACtH,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,iBAAiB;YAC5B,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QACF,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,WAAW;YACtB,kBAAkB,EAAE,MAAM;YAC1B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACtC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEzD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAE/C,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAEvD,aAAa,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACtC,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN,sHAAsH,CACvH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oHAAoH,EAAE,GAAG,EAAE;QAC5H,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,iBAAiB;YAC5B,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN,sHAAsH,CACvH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,iBAAiB;YAC5B,kBAAkB,EAAE,UAAU;YAC9B,SAAS,EAAE,WAAW,CAAC,cAAc;YACrC,UAAU,EAAE,WAAW,CAAC,QAAQ;SACjC,CAAC;QAEF,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1B,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,aAAa,CAAC;YACZ;gBACE,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,uBAAuB;gBAClC,kBAAkB,EAAE,kBAAkB;gBACtC,SAAS,EAAE,WAAW,CAAC,KAAK;gBAC5B,UAAU,EAAE,WAAW,CAAC,QAAQ;aACjC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAClD,MAAM,EACN,gIAAgI,CACjI,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -108,6 +108,59 @@ const SHELL_WIDTH_FRACTION = 0.89;
|
|
|
108
108
|
* for the shell. This provides vertical padding and space for other UI elements.
|
|
109
109
|
*/
|
|
110
110
|
const SHELL_HEIGHT_PADDING = 10;
|
|
111
|
+
const ENTER_SYNCHRONIZED_OUTPUT = '\x1b[?2026h';
|
|
112
|
+
const EXIT_SYNCHRONIZED_OUTPUT = '\x1b[?2026l';
|
|
113
|
+
/**
|
|
114
|
+
* Erases only the visible viewport and moves the cursor to the top-left corner.
|
|
115
|
+
*
|
|
116
|
+
* This intentionally avoids `ansiEscapes.clearTerminal`, which also emits
|
|
117
|
+
* `\x1b[3J` (Erase Saved Lines) and causes terminal emulators to purge their
|
|
118
|
+
* native scrollback history, wiping out earlier turns of the conversation.
|
|
119
|
+
*/
|
|
120
|
+
const CLEAR_VIEWPORT = ansiEscapes.eraseScreen + ansiEscapes.cursorTo(0, 0);
|
|
121
|
+
const RESIZE_DEBOUNCE_MS = 100;
|
|
122
|
+
const RESIZE_CORK_SAFETY_TIMEOUT_MS = 1000;
|
|
123
|
+
function discardCorkedStdoutBuffer(stream) {
|
|
124
|
+
try {
|
|
125
|
+
const state = stream._writableState;
|
|
126
|
+
if (state && (state.corked ?? 0) > 0 && Array.isArray(state.buffered)) {
|
|
127
|
+
const startIndex = state.bufferedIndex ?? 0;
|
|
128
|
+
const entries = state.buffered.slice(startIndex);
|
|
129
|
+
let discardedLength = 0;
|
|
130
|
+
for (const entry of entries) {
|
|
131
|
+
if (entry?.chunk) {
|
|
132
|
+
if (typeof entry.chunk === 'string') {
|
|
133
|
+
discardedLength += Buffer.byteLength(entry.chunk, entry.encoding ?? 'utf8');
|
|
134
|
+
}
|
|
135
|
+
else if ('length' in entry.chunk &&
|
|
136
|
+
typeof entry.chunk.length === 'number') {
|
|
137
|
+
discardedLength += entry.chunk.length;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
state.buffered.length = startIndex;
|
|
142
|
+
state.length = Math.max(0, (state.length ?? 0) - discardedLength);
|
|
143
|
+
if ('allBuffers' in state)
|
|
144
|
+
state.allBuffers = true;
|
|
145
|
+
if ('allNoop' in state)
|
|
146
|
+
state.allNoop = true;
|
|
147
|
+
for (const entry of entries) {
|
|
148
|
+
if (entry && typeof entry.callback === 'function') {
|
|
149
|
+
entry.callback(null);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
debugLogger.warn('Failed to discard corked stdout buffer safely:', error);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function refreshStdoutSize(stream) {
|
|
159
|
+
const resizableStream = stream;
|
|
160
|
+
if (typeof resizableStream._refreshSize === 'function') {
|
|
161
|
+
resizableStream._refreshSize();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
111
164
|
export const AppContainer = (props) => {
|
|
112
165
|
const isHelpDismissKey = useIsHelpDismissKey();
|
|
113
166
|
const keyMatchers = useKeyMatchers();
|
|
@@ -194,6 +247,7 @@ export const AppContainer = (props) => {
|
|
|
194
247
|
const overflowState = useOverflowState();
|
|
195
248
|
const overflowingIdsSize = overflowState?.overflowingIds.size ?? 0;
|
|
196
249
|
const hasOverflowState = overflowingIdsSize > 0 || !constrainHeight;
|
|
250
|
+
const prevOverflowingIdsSizeRef = useRef(0);
|
|
197
251
|
/**
|
|
198
252
|
* Manages the visibility and x-second timer for the expansion hint.
|
|
199
253
|
*
|
|
@@ -206,9 +260,11 @@ export const AppContainer = (props) => {
|
|
|
206
260
|
* to avoid noise, but the user can still trigger it manually with Ctrl+O.
|
|
207
261
|
*/
|
|
208
262
|
useEffect(() => {
|
|
209
|
-
if (
|
|
263
|
+
if (overflowingIdsSize > prevOverflowingIdsSizeRef.current &&
|
|
264
|
+
hasOverflowState) {
|
|
210
265
|
triggerExpandHint(true);
|
|
211
266
|
}
|
|
267
|
+
prevOverflowingIdsSizeRef.current = overflowingIdsSize;
|
|
212
268
|
}, [hasOverflowState, overflowingIdsSize, triggerExpandHint]);
|
|
213
269
|
const [defaultBannerText, setDefaultBannerText] = useState('');
|
|
214
270
|
const [warningBannerText, setWarningBannerText] = useState('');
|
|
@@ -410,12 +466,93 @@ export const AppContainer = (props) => {
|
|
|
410
466
|
addConfirmUpdateExtensionRequest,
|
|
411
467
|
addItem: historyManager.addItem,
|
|
412
468
|
});
|
|
469
|
+
const isStdoutCorkedRef = useRef(false);
|
|
470
|
+
const isRefreshingStaticRef = useRef(false);
|
|
471
|
+
const resizeCorkSafetyTimerRef = useRef(null);
|
|
472
|
+
const resizeDebounceTimerRef = useRef(null);
|
|
473
|
+
const lastStdoutColumnsRef = useRef(stdout.columns ?? process.stdout.columns ?? terminalWidth);
|
|
474
|
+
const lastRefreshedColumnsRef = useRef(terminalWidth);
|
|
475
|
+
const terminalWidthRef = useRef(terminalWidth);
|
|
476
|
+
terminalWidthRef.current = terminalWidth;
|
|
477
|
+
const clearResizeCorkSafetyTimer = useCallback(() => {
|
|
478
|
+
if (resizeCorkSafetyTimerRef.current) {
|
|
479
|
+
clearTimeout(resizeCorkSafetyTimerRef.current);
|
|
480
|
+
resizeCorkSafetyTimerRef.current = null;
|
|
481
|
+
}
|
|
482
|
+
}, []);
|
|
483
|
+
const clearResizeDebounceTimer = useCallback(() => {
|
|
484
|
+
if (resizeDebounceTimerRef.current) {
|
|
485
|
+
clearTimeout(resizeDebounceTimerRef.current);
|
|
486
|
+
resizeDebounceTimerRef.current = null;
|
|
487
|
+
}
|
|
488
|
+
}, []);
|
|
489
|
+
const corkStdout = useCallback(() => {
|
|
490
|
+
if (!isStdoutCorkedRef.current && typeof stdout.cork === 'function') {
|
|
491
|
+
stdout.cork();
|
|
492
|
+
isStdoutCorkedRef.current = true;
|
|
493
|
+
}
|
|
494
|
+
}, [stdout]);
|
|
495
|
+
const uncorkStdout = useCallback(() => {
|
|
496
|
+
clearResizeCorkSafetyTimer();
|
|
497
|
+
if (isStdoutCorkedRef.current && typeof stdout.uncork === 'function') {
|
|
498
|
+
isStdoutCorkedRef.current = false;
|
|
499
|
+
stdout.uncork();
|
|
500
|
+
}
|
|
501
|
+
}, [stdout, clearResizeCorkSafetyTimer]);
|
|
413
502
|
const refreshStatic = useCallback(() => {
|
|
414
503
|
if (!isAlternateBuffer && !config.getUseTerminalBuffer()) {
|
|
415
|
-
|
|
504
|
+
clearResizeDebounceTimer();
|
|
505
|
+
refreshStdoutSize(stdout);
|
|
506
|
+
if (typeof stdout.prependListener === 'function' &&
|
|
507
|
+
stdout.columns !== undefined &&
|
|
508
|
+
stdout.columns !== terminalWidthRef.current) {
|
|
509
|
+
corkStdout();
|
|
510
|
+
clearResizeCorkSafetyTimer();
|
|
511
|
+
resizeCorkSafetyTimerRef.current = setTimeout(() => {
|
|
512
|
+
discardCorkedStdoutBuffer(stdout);
|
|
513
|
+
uncorkStdout();
|
|
514
|
+
}, RESIZE_CORK_SAFETY_TIMEOUT_MS);
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
517
|
+
clearResizeCorkSafetyTimer();
|
|
518
|
+
lastRefreshedColumnsRef.current = terminalWidthRef.current;
|
|
519
|
+
if (typeof stdout.cork === 'function') {
|
|
520
|
+
corkStdout();
|
|
521
|
+
discardCorkedStdoutBuffer(stdout);
|
|
522
|
+
isRefreshingStaticRef.current = true;
|
|
523
|
+
stdout.write(ENTER_SYNCHRONIZED_OUTPUT);
|
|
524
|
+
}
|
|
525
|
+
// Only clear the viewport so the terminal's scrollback is preserved.
|
|
526
|
+
stdout.write(CLEAR_VIEWPORT);
|
|
527
|
+
}
|
|
528
|
+
if (!isAlternateBuffer || config.getUseTerminalBuffer()) {
|
|
416
529
|
setHistoryRemountKey((prev) => prev + 1);
|
|
417
530
|
}
|
|
418
|
-
}, [
|
|
531
|
+
}, [
|
|
532
|
+
setHistoryRemountKey,
|
|
533
|
+
isAlternateBuffer,
|
|
534
|
+
stdout,
|
|
535
|
+
config,
|
|
536
|
+
clearResizeDebounceTimer,
|
|
537
|
+
clearResizeCorkSafetyTimer,
|
|
538
|
+
corkStdout,
|
|
539
|
+
uncorkStdout,
|
|
540
|
+
]);
|
|
541
|
+
useLayoutEffect(() => {
|
|
542
|
+
if (isRefreshingStaticRef.current) {
|
|
543
|
+
isRefreshingStaticRef.current = false;
|
|
544
|
+
refreshStdoutSize(stdout);
|
|
545
|
+
if (stdout.columns !== undefined &&
|
|
546
|
+
stdout.columns !== lastRefreshedColumnsRef.current) {
|
|
547
|
+
discardCorkedStdoutBuffer(stdout);
|
|
548
|
+
stdout.write(EXIT_SYNCHRONIZED_OUTPUT);
|
|
549
|
+
uncorkStdout();
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
stdout.write(EXIT_SYNCHRONIZED_OUTPUT);
|
|
553
|
+
uncorkStdout();
|
|
554
|
+
}
|
|
555
|
+
}, [historyRemountKey, stdout, uncorkStdout]);
|
|
419
556
|
const shouldUseAlternateScreen = shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader());
|
|
420
557
|
const handleEditorClose = useCallback(() => {
|
|
421
558
|
if (shouldUseAlternateScreen) {
|
|
@@ -463,6 +600,9 @@ export const AppContainer = (props) => {
|
|
|
463
600
|
setAuthContext({});
|
|
464
601
|
}
|
|
465
602
|
}, [authState, authContext, setAuthState]);
|
|
603
|
+
const handleShowAuthSelection = useCallback(() => {
|
|
604
|
+
setAuthState(AuthState.Updating);
|
|
605
|
+
}, [setAuthState]);
|
|
466
606
|
const { proQuotaRequest, handleProQuotaChoice, validationRequest, handleValidationChoice,
|
|
467
607
|
// G1 AI Credits
|
|
468
608
|
overageMenuRequest, handleOverageMenuChoice, emptyWalletRequest, handleEmptyWalletChoice, } = useQuotaAndFallback({
|
|
@@ -472,7 +612,7 @@ export const AppContainer = (props) => {
|
|
|
472
612
|
paidTier,
|
|
473
613
|
settings,
|
|
474
614
|
setModelSwitchedFromQuotaError,
|
|
475
|
-
onShowAuthSelection:
|
|
615
|
+
onShowAuthSelection: handleShowAuthSelection,
|
|
476
616
|
errorVerbosity: settings.merged.ui.errorVerbosity,
|
|
477
617
|
});
|
|
478
618
|
// Derive auth state variables for backward compatibility with UIStateContext
|
|
@@ -613,6 +753,30 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
613
753
|
const setIsBackgroundTaskListOpenRef = useRef(() => { });
|
|
614
754
|
const [shortcutsHelpVisible, setShortcutsHelpVisible] = useState(false);
|
|
615
755
|
const { cleanUiDetailsVisible, setCleanUiDetailsVisible, toggleCleanUiDetailsVisible, revealCleanUiDetailsTemporarily, } = useVisibilityToggle();
|
|
756
|
+
const cancelPromiseRef = useRef(null);
|
|
757
|
+
const awaitCancelPromise = useCallback(async () => {
|
|
758
|
+
if (!cancelPromiseRef.current) {
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
let timeoutId;
|
|
762
|
+
try {
|
|
763
|
+
await Promise.race([
|
|
764
|
+
cancelPromiseRef.current,
|
|
765
|
+
new Promise((resolve) => {
|
|
766
|
+
timeoutId = setTimeout(resolve, 1000);
|
|
767
|
+
}),
|
|
768
|
+
]);
|
|
769
|
+
}
|
|
770
|
+
catch (error) {
|
|
771
|
+
debugLogger.warn(`Error awaiting cancellation: ${error}`);
|
|
772
|
+
}
|
|
773
|
+
finally {
|
|
774
|
+
if (timeoutId !== undefined) {
|
|
775
|
+
clearTimeout(timeoutId);
|
|
776
|
+
}
|
|
777
|
+
cancelPromiseRef.current = null;
|
|
778
|
+
}
|
|
779
|
+
}, []);
|
|
616
780
|
const slashCommandActions = useMemo(() => ({
|
|
617
781
|
openAuthDialog: () => setAuthState(AuthState.Updating),
|
|
618
782
|
openThemeDialog,
|
|
@@ -651,8 +815,13 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
651
815
|
}
|
|
652
816
|
}
|
|
653
817
|
await runExitCleanup();
|
|
654
|
-
process.exit(0);
|
|
818
|
+
//process.exit(0);
|
|
655
819
|
});
|
|
820
|
+
setTimeout(async () => {
|
|
821
|
+
await awaitCancelPromise();
|
|
822
|
+
await runExitCleanup();
|
|
823
|
+
process.exit(0);
|
|
824
|
+
}, 100);
|
|
656
825
|
},
|
|
657
826
|
setDebugMessage,
|
|
658
827
|
toggleCorgiMode: () => setCorgiMode((prev) => !prev),
|
|
@@ -685,6 +854,7 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
685
854
|
openVoiceModelDialog,
|
|
686
855
|
openAgentConfigDialog,
|
|
687
856
|
setQuittingMessages,
|
|
857
|
+
awaitCancelPromise,
|
|
688
858
|
setDebugMessage,
|
|
689
859
|
setShowPrivacyNotice,
|
|
690
860
|
setCorgiMode,
|
|
@@ -797,6 +967,7 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
797
967
|
? // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
798
968
|
useAgentStream({
|
|
799
969
|
agent: streamAgent,
|
|
970
|
+
config,
|
|
800
971
|
addItem: historyManager.addItem,
|
|
801
972
|
onCancelSubmit,
|
|
802
973
|
isShellFocused: embeddedShellFocused,
|
|
@@ -1105,14 +1276,17 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1105
1276
|
const [showErrorDetails, setShowErrorDetails] = useState(false);
|
|
1106
1277
|
const [showFullTodos, setShowFullTodos] = useState(false);
|
|
1107
1278
|
const [renderMarkdown, setRenderMarkdown] = useState(true);
|
|
1108
|
-
const handleExitRepeat = useCallback((count) => {
|
|
1279
|
+
const handleExitRepeat = useCallback(async (count) => {
|
|
1109
1280
|
if (count > 2) {
|
|
1110
1281
|
recordExitFail(config);
|
|
1111
1282
|
}
|
|
1112
1283
|
if (count > 1) {
|
|
1113
|
-
|
|
1284
|
+
if (cancelPromiseRef.current) {
|
|
1285
|
+
await awaitCancelPromise();
|
|
1286
|
+
}
|
|
1287
|
+
await handleSlashCommand('/quit', undefined, undefined, false);
|
|
1114
1288
|
}
|
|
1115
|
-
}, [config, handleSlashCommand]);
|
|
1289
|
+
}, [config, handleSlashCommand, awaitCancelPromise]);
|
|
1116
1290
|
const { pressCount: ctrlCPressCount, handlePress: handleCtrlCPress } = useRepeatedKeyPress({
|
|
1117
1291
|
windowMs: WARNING_PROMPT_DURATION_MS,
|
|
1118
1292
|
onRepeat: handleExitRepeat,
|
|
@@ -1129,6 +1303,7 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1129
1303
|
const policyUpdateConfirmationRequest = config.getPolicyUpdateConfirmationRequest();
|
|
1130
1304
|
const [isPolicyUpdateDialogOpen, setIsPolicyUpdateDialogOpen] = useState(!!policyUpdateConfirmationRequest);
|
|
1131
1305
|
const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
|
|
1306
|
+
const prevWidthRef = useRef(terminalWidth);
|
|
1132
1307
|
useIncludeDirsTrust(config, isTrustedFolder, historyManager, setCustomDialog);
|
|
1133
1308
|
const tabFocusTimeoutRef = useRef(null);
|
|
1134
1309
|
useEffect(() => {
|
|
@@ -1176,6 +1351,67 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1176
1351
|
setShowIdeRestartPrompt(true);
|
|
1177
1352
|
}
|
|
1178
1353
|
}, [ideNeedsRestart]);
|
|
1354
|
+
useEffect(() => {
|
|
1355
|
+
if (isAlternateBuffer ||
|
|
1356
|
+
config.getUseTerminalBuffer() ||
|
|
1357
|
+
typeof stdout.prependListener !== 'function') {
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
const handleResizeStart = () => {
|
|
1361
|
+
const currentColumns = stdout.columns ?? process.stdout.columns;
|
|
1362
|
+
if (currentColumns !== undefined &&
|
|
1363
|
+
currentColumns !== lastStdoutColumnsRef.current) {
|
|
1364
|
+
lastStdoutColumnsRef.current = currentColumns;
|
|
1365
|
+
corkStdout();
|
|
1366
|
+
clearResizeCorkSafetyTimer();
|
|
1367
|
+
resizeCorkSafetyTimerRef.current = setTimeout(() => {
|
|
1368
|
+
discardCorkedStdoutBuffer(stdout);
|
|
1369
|
+
uncorkStdout();
|
|
1370
|
+
}, RESIZE_CORK_SAFETY_TIMEOUT_MS);
|
|
1371
|
+
}
|
|
1372
|
+
};
|
|
1373
|
+
stdout.prependListener('resize', handleResizeStart);
|
|
1374
|
+
return () => {
|
|
1375
|
+
stdout.off('resize', handleResizeStart);
|
|
1376
|
+
clearResizeDebounceTimer();
|
|
1377
|
+
if (isRefreshingStaticRef.current) {
|
|
1378
|
+
isRefreshingStaticRef.current = false;
|
|
1379
|
+
stdout.write(EXIT_SYNCHRONIZED_OUTPUT);
|
|
1380
|
+
}
|
|
1381
|
+
uncorkStdout();
|
|
1382
|
+
};
|
|
1383
|
+
}, [
|
|
1384
|
+
stdout,
|
|
1385
|
+
isAlternateBuffer,
|
|
1386
|
+
config,
|
|
1387
|
+
corkStdout,
|
|
1388
|
+
uncorkStdout,
|
|
1389
|
+
clearResizeDebounceTimer,
|
|
1390
|
+
clearResizeCorkSafetyTimer,
|
|
1391
|
+
]);
|
|
1392
|
+
useEffect(() => {
|
|
1393
|
+
if (prevWidthRef.current === terminalWidth) {
|
|
1394
|
+
return;
|
|
1395
|
+
}
|
|
1396
|
+
prevWidthRef.current = terminalWidth;
|
|
1397
|
+
if (isAlternateBuffer || config.getUseTerminalBuffer()) {
|
|
1398
|
+
clearResizeDebounceTimer();
|
|
1399
|
+
return;
|
|
1400
|
+
}
|
|
1401
|
+
clearResizeDebounceTimer();
|
|
1402
|
+
resizeDebounceTimerRef.current = setTimeout(() => {
|
|
1403
|
+
refreshStatic();
|
|
1404
|
+
}, RESIZE_DEBOUNCE_MS);
|
|
1405
|
+
return () => {
|
|
1406
|
+
clearResizeDebounceTimer();
|
|
1407
|
+
};
|
|
1408
|
+
}, [
|
|
1409
|
+
terminalWidth,
|
|
1410
|
+
refreshStatic,
|
|
1411
|
+
clearResizeDebounceTimer,
|
|
1412
|
+
isAlternateBuffer,
|
|
1413
|
+
config,
|
|
1414
|
+
]);
|
|
1179
1415
|
useEffect(() => {
|
|
1180
1416
|
const unsubscribe = ideContextStore.subscribe(setIdeContextState);
|
|
1181
1417
|
setIdeContextState(ideContextStore.get());
|
|
@@ -1184,7 +1420,6 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1184
1420
|
useEffect(() => {
|
|
1185
1421
|
const openDebugConsole = () => {
|
|
1186
1422
|
setShowErrorDetails(true);
|
|
1187
|
-
setConstrainHeight(false);
|
|
1188
1423
|
};
|
|
1189
1424
|
appEvents.on(AppEvent.OpenDebugConsole, openDebugConsole);
|
|
1190
1425
|
return () => {
|
|
@@ -1261,8 +1496,10 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1261
1496
|
if (keyMatchers[Command.QUIT](key)) {
|
|
1262
1497
|
// If the user presses Ctrl+C, we want to cancel any ongoing requests.
|
|
1263
1498
|
// This should happen regardless of the count.
|
|
1264
|
-
|
|
1265
|
-
|
|
1499
|
+
const cancelPromise = cancelOngoingRequest?.();
|
|
1500
|
+
if (cancelPromise) {
|
|
1501
|
+
cancelPromiseRef.current = cancelPromise;
|
|
1502
|
+
}
|
|
1266
1503
|
handleCtrlCPress();
|
|
1267
1504
|
return true;
|
|
1268
1505
|
}
|
|
@@ -1366,7 +1603,11 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1366
1603
|
else if (keyMatchers[Command.SHOW_MORE_LINES](key)) {
|
|
1367
1604
|
setConstrainHeight(false);
|
|
1368
1605
|
toggleLastTurnTools();
|
|
1369
|
-
|
|
1606
|
+
if (!isAlternateBuffer &&
|
|
1607
|
+
!config.getUseTerminalBuffer() &&
|
|
1608
|
+
getLastTurnToolCallIds(historyManager.history, []).length > 0) {
|
|
1609
|
+
refreshStatic();
|
|
1610
|
+
}
|
|
1370
1611
|
return true;
|
|
1371
1612
|
}
|
|
1372
1613
|
else if ((keyMatchers[Command.FOCUS_SHELL_INPUT](key) ||
|
|
@@ -1620,6 +1861,7 @@ Logging in with Google... Restarting Cell CLI to continue.
|
|
|
1620
1861
|
customWittyPhrases: settings.merged.ui.customWittyPhrases,
|
|
1621
1862
|
errorVerbosity: settings.merged.ui.errorVerbosity,
|
|
1622
1863
|
maxLength,
|
|
1864
|
+
pauseUpdates: !constrainHeight && !isAlternateBuffer && !config.getUseTerminalBuffer(),
|
|
1623
1865
|
});
|
|
1624
1866
|
const allowPlanMode = config.isPlanEnabled() &&
|
|
1625
1867
|
streamingState === StreamingState.Idle &&
|