@google/gemini-cli 0.36.0-preview.8 → 0.37.0-preview.0
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/bundle/{chunk-N22U7LIR.js → chunk-3TN4SOLW.js} +6651 -4180
- package/bundle/{chunk-S2IQOR7T.js → chunk-7UZ4Y32N.js} +214 -66
- package/bundle/{chunk-QBLIM2T2.js → chunk-A62NZYIK.js} +711 -240
- package/bundle/{chunk-5JDHTAA3.js → chunk-LEK5YYAR.js} +6295 -4094
- package/bundle/{chunk-MYI75E6G.js → chunk-R5X4CMUM.js} +233 -70
- package/bundle/{chunk-5Y6Y7SEB.js → chunk-TJ76C6AA.js} +16847 -9496
- package/bundle/chunk-U4FACSVX.js +30 -0
- package/bundle/{chunk-UUJ4JLTB.js → chunk-ULC3DHVX.js} +711 -240
- package/bundle/{chunk-642LNT3F.js → chunk-XX7JYMTE.js} +765 -306
- package/bundle/{core-N4UNRLQA.js → core-5OME6LT4.js} +58 -4
- package/bundle/{dist-HD2ZHBHJ.js → core-CUCGSGCA.js} +58 -4
- package/bundle/{devtoolsService-7D3WUF33.js → devtoolsService-4FIYD6OW.js} +20 -3
- package/bundle/{devtoolsService-NA7MR5UO.js → devtoolsService-IDLWLZFQ.js} +21 -5
- package/bundle/{devtoolsService-Y53ZUB56.js → devtoolsService-TVWW3DBW.js} +20 -3
- package/bundle/{dist-JYY2GAAR.js → dist-YWCADMDD.js} +58 -4
- package/bundle/docs/CONTRIBUTING.md +10 -7
- package/bundle/docs/assets/theme-tokyonight-dark.png +0 -0
- package/bundle/docs/changelogs/index.md +24 -0
- package/bundle/docs/changelogs/latest.md +366 -459
- package/bundle/docs/changelogs/preview.md +362 -356
- package/bundle/docs/cli/acp-mode.md +126 -0
- package/bundle/docs/cli/cli-reference.md +1 -1
- package/bundle/docs/cli/notifications.md +5 -5
- package/bundle/docs/cli/plan-mode.md +12 -8
- package/bundle/docs/cli/sandbox.md +1 -1
- package/bundle/docs/cli/settings.md +14 -13
- package/bundle/docs/cli/themes.md +5 -0
- package/bundle/docs/core/index.md +2 -2
- package/bundle/docs/core/subagents.md +134 -23
- package/bundle/docs/get-started/gemini-3.md +1 -1
- package/bundle/docs/get-started/index.md +127 -1
- package/bundle/docs/ide-integration/index.md +99 -24
- package/bundle/docs/index.md +0 -2
- package/bundle/docs/redirects.json +1 -0
- package/bundle/docs/reference/commands.md +1 -3
- package/bundle/docs/reference/configuration.md +182 -91
- package/bundle/docs/reference/keyboard-shortcuts.md +14 -6
- package/bundle/docs/reference/policy-engine.md +16 -30
- package/bundle/docs/reference/tools.md +56 -23
- package/bundle/docs/resources/quota-and-pricing.md +23 -9
- package/bundle/docs/sidebar.json +11 -4
- package/bundle/docs/tools/planning.md +6 -4
- package/bundle/events-CLX3JQHP.js +12 -0
- package/bundle/gemini.js +342 -52
- package/bundle/{interactiveCli-R5N55BDV.js → interactiveCli-4WFWOVAQ.js} +5066 -4010
- package/bundle/{interactiveCli-LFO7EWZS.js → interactiveCli-4ZZ72DR3.js} +5066 -4010
- package/bundle/{interactiveCli-2JRQPNZP.js → interactiveCli-6SIGBRWS.js} +5279 -4240
- package/bundle/{memoryDiscovery-BQGYT4OD.js → memoryDiscovery-NS2EGHYH.js} +3 -1
- package/bundle/{memoryDiscovery-FCEPFZ3M.js → memoryDiscovery-VL3OH25S.js} +3 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js +26 -19
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.d.ts +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js.map +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js +35 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js.map +1 -1
- package/bundle/node_modules/@google/gemini-cli-devtools/package.json +1 -1
- package/bundle/{oauth2-provider-2WD22PTI.js → oauth2-provider-HGHECKPY.js} +2 -2
- package/bundle/{oauth2-provider-QOWLZC44.js → oauth2-provider-TYBJKXSJ.js} +2 -2
- package/bundle/{oauth2-provider-34BPLPQX.js → oauth2-provider-YYRJ44X5.js} +73 -39
- package/bundle/policies/discovered.toml +7 -0
- package/bundle/policies/non-interactive.toml +7 -0
- package/bundle/policies/plan.toml +25 -0
- package/bundle/policies/read-only.toml +6 -0
- package/bundle/policies/sandbox-default.toml +3 -2
- package/bundle/policies/write.toml +21 -0
- package/bundle/policies/yolo.toml +1 -1
- package/package.json +1 -1
- package/bundle/chunk-FWCJAF6L.js +0 -97905
- package/bundle/chunk-X6CSYCBW.js +0 -354180
- package/bundle/devtoolsService-VU7N6PSG.js +0 -854
- package/bundle/dist-QEB25IFU.js +0 -1886
- package/bundle/docs/get-started/examples.md +0 -141
- package/bundle/interactiveCli-A6H7VTMC.js +0 -49299
- package/bundle/oauth2-provider-MZAUZWUS.js +0 -237
|
@@ -2,9 +2,7 @@ const require = (await import('node:module')).createRequire(import.meta.url); co
|
|
|
2
2
|
import {
|
|
3
3
|
AsyncFzf,
|
|
4
4
|
AuthProviderType,
|
|
5
|
-
AuthType,
|
|
6
5
|
Config,
|
|
7
|
-
CoreToolCallStatus,
|
|
8
6
|
DEFAULT_MODEL_CONFIGS,
|
|
9
7
|
DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
|
|
10
8
|
ExitCodes,
|
|
@@ -16,26 +14,17 @@ import {
|
|
|
16
14
|
ExtensionUninstallEvent,
|
|
17
15
|
ExtensionUpdateEvent,
|
|
18
16
|
GEMINI_CLI_COMPANION_EXTENSION_NAME,
|
|
19
|
-
HookType,
|
|
20
|
-
IDEConnectionStatus,
|
|
21
17
|
INITIAL_HISTORY_LENGTH,
|
|
22
18
|
IdeClient,
|
|
23
19
|
IdeConnectionEvent,
|
|
24
|
-
IdeConnectionType,
|
|
25
|
-
IntegrityDataStatus,
|
|
26
20
|
KeychainTokenStorage,
|
|
27
|
-
LlmRole,
|
|
28
|
-
MCPDiscoveryState,
|
|
29
21
|
MCPOAuthTokenStorage,
|
|
30
|
-
MCPServerStatus,
|
|
31
22
|
MaxBufferError,
|
|
32
23
|
ModelSlashCommandEvent,
|
|
33
24
|
ProjectIdRequiredError,
|
|
34
25
|
ReadManyFilesTool,
|
|
35
26
|
RewindEvent,
|
|
36
27
|
SESSION_FILE_PREFIX,
|
|
37
|
-
SessionEndReason,
|
|
38
|
-
SessionStartSource,
|
|
39
28
|
ShellExecutionService,
|
|
40
29
|
StartSessionEvent,
|
|
41
30
|
TOOL_OUTPUTS_DIR,
|
|
@@ -55,6 +44,8 @@ import {
|
|
|
55
44
|
convertToRestPayload,
|
|
56
45
|
createCache,
|
|
57
46
|
decodeTagName,
|
|
47
|
+
deleteSessionArtifactsAsync,
|
|
48
|
+
deleteSubagentSessionDirAndArtifactsAsync,
|
|
58
49
|
disableBracketedPasteMode,
|
|
59
50
|
disableKittyKeyboardProtocol,
|
|
60
51
|
disableModifyOtherKeys,
|
|
@@ -150,6 +141,7 @@ import {
|
|
|
150
141
|
require_toml,
|
|
151
142
|
require_undici,
|
|
152
143
|
require_valid,
|
|
144
|
+
resetBrowserSession,
|
|
153
145
|
sanitizeFilenamePart,
|
|
154
146
|
sessionId,
|
|
155
147
|
shouldLaunchBrowser,
|
|
@@ -164,14 +156,13 @@ import {
|
|
|
164
156
|
tokenLimit,
|
|
165
157
|
uiTelemetryService,
|
|
166
158
|
yellowBright
|
|
167
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-TJ76C6AA.js";
|
|
168
160
|
import {
|
|
169
161
|
ApprovalMode,
|
|
170
162
|
CoreEvent,
|
|
171
163
|
DiscoveredMCPTool,
|
|
172
164
|
FatalConfigError,
|
|
173
165
|
GEMINI_DIR,
|
|
174
|
-
PolicyDecision,
|
|
175
166
|
REFERENCE_CONTENT_END,
|
|
176
167
|
REFERENCE_CONTENT_START,
|
|
177
168
|
Storage,
|
|
@@ -193,7 +184,11 @@ import {
|
|
|
193
184
|
shortenPath,
|
|
194
185
|
tildeifyPath,
|
|
195
186
|
unescapePath
|
|
196
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-R5X4CMUM.js";
|
|
188
|
+
import {
|
|
189
|
+
AppEvent,
|
|
190
|
+
appEvents
|
|
191
|
+
} from "./chunk-U4FACSVX.js";
|
|
197
192
|
import {
|
|
198
193
|
__commonJS,
|
|
199
194
|
__export,
|
|
@@ -34576,12 +34571,12 @@ var require_prompt = __commonJS({
|
|
|
34576
34571
|
var readline = __require("readline");
|
|
34577
34572
|
var _require = require_util3();
|
|
34578
34573
|
var action = _require.action;
|
|
34579
|
-
var
|
|
34574
|
+
var EventEmitter5 = __require("events");
|
|
34580
34575
|
var _require2 = require_src3();
|
|
34581
34576
|
var beep2 = _require2.beep;
|
|
34582
34577
|
var cursor = _require2.cursor;
|
|
34583
34578
|
var color = require_kleur();
|
|
34584
|
-
var Prompt = class extends
|
|
34579
|
+
var Prompt = class extends EventEmitter5 {
|
|
34585
34580
|
constructor(opts = {}) {
|
|
34586
34581
|
super();
|
|
34587
34582
|
this.firstRender = true;
|
|
@@ -36581,9 +36576,9 @@ var require_prompts = __commonJS({
|
|
|
36581
36576
|
$4.date = (args) => toPrompt("DatePrompt", args);
|
|
36582
36577
|
$4.confirm = (args) => toPrompt("ConfirmPrompt", args);
|
|
36583
36578
|
$4.list = (args) => {
|
|
36584
|
-
const
|
|
36579
|
+
const sep4 = args.separator || ",";
|
|
36585
36580
|
return toPrompt("TextPrompt", args, {
|
|
36586
|
-
onSubmit: (str) => str.split(
|
|
36581
|
+
onSubmit: (str) => str.split(sep4).map((s3) => s3.trim())
|
|
36587
36582
|
});
|
|
36588
36583
|
};
|
|
36589
36584
|
$4.toggle = (args) => toPrompt("TogglePrompt", args);
|
|
@@ -37041,10 +37036,10 @@ var require_prompt2 = __commonJS({
|
|
|
37041
37036
|
"use strict";
|
|
37042
37037
|
var readline = __require("readline");
|
|
37043
37038
|
var { action } = require_util4();
|
|
37044
|
-
var
|
|
37039
|
+
var EventEmitter5 = __require("events");
|
|
37045
37040
|
var { beep: beep2, cursor } = require_src3();
|
|
37046
37041
|
var color = require_kleur();
|
|
37047
|
-
var Prompt = class extends
|
|
37042
|
+
var Prompt = class extends EventEmitter5 {
|
|
37048
37043
|
constructor(opts = {}) {
|
|
37049
37044
|
super();
|
|
37050
37045
|
this.firstRender = true;
|
|
@@ -38871,9 +38866,9 @@ var require_prompts2 = __commonJS({
|
|
|
38871
38866
|
$4.date = (args) => toPrompt("DatePrompt", args);
|
|
38872
38867
|
$4.confirm = (args) => toPrompt("ConfirmPrompt", args);
|
|
38873
38868
|
$4.list = (args) => {
|
|
38874
|
-
const
|
|
38869
|
+
const sep4 = args.separator || ",";
|
|
38875
38870
|
return toPrompt("TextPrompt", args, {
|
|
38876
|
-
onSubmit: (str) => str.split(
|
|
38871
|
+
onSubmit: (str) => str.split(sep4).map((s3) => s3.trim())
|
|
38877
38872
|
});
|
|
38878
38873
|
};
|
|
38879
38874
|
$4.toggle = (args) => toPrompt("TogglePrompt", args);
|
|
@@ -43466,24 +43461,25 @@ var require_cli_spinners = __commonJS({
|
|
|
43466
43461
|
var import_react = __toESM(require_react(), 1);
|
|
43467
43462
|
function mapCoreStatusToDisplayStatus(coreStatus) {
|
|
43468
43463
|
switch (coreStatus) {
|
|
43469
|
-
case
|
|
43464
|
+
case "validating" /* Validating */:
|
|
43470
43465
|
return "Pending" /* Pending */;
|
|
43471
|
-
case
|
|
43466
|
+
case "awaiting_approval" /* AwaitingApproval */:
|
|
43472
43467
|
return "Confirming" /* Confirming */;
|
|
43473
|
-
case
|
|
43468
|
+
case "executing" /* Executing */:
|
|
43474
43469
|
return "Executing" /* Executing */;
|
|
43475
|
-
case
|
|
43470
|
+
case "success" /* Success */:
|
|
43476
43471
|
return "Success" /* Success */;
|
|
43477
|
-
case
|
|
43472
|
+
case "cancelled" /* Cancelled */:
|
|
43478
43473
|
return "Canceled" /* Canceled */;
|
|
43479
|
-
case
|
|
43474
|
+
case "error" /* Error */:
|
|
43480
43475
|
return "Error" /* Error */;
|
|
43481
|
-
case
|
|
43476
|
+
case "scheduled" /* Scheduled */:
|
|
43482
43477
|
return "Pending" /* Pending */;
|
|
43483
43478
|
default:
|
|
43484
43479
|
return checkExhaustive(coreStatus);
|
|
43485
43480
|
}
|
|
43486
43481
|
}
|
|
43482
|
+
var isTodoList = (res) => typeof res === "object" && res !== null && "todos" in res;
|
|
43487
43483
|
var emptyIcon = " ";
|
|
43488
43484
|
|
|
43489
43485
|
// packages/cli/src/utils/cleanup.ts
|
|
@@ -43521,6 +43517,10 @@ async function runExitCleanup() {
|
|
|
43521
43517
|
}
|
|
43522
43518
|
}
|
|
43523
43519
|
cleanupFunctions.length = 0;
|
|
43520
|
+
try {
|
|
43521
|
+
await resetBrowserSession();
|
|
43522
|
+
} catch (_2) {
|
|
43523
|
+
}
|
|
43524
43524
|
if (configForTelemetry) {
|
|
43525
43525
|
try {
|
|
43526
43526
|
await configForTelemetry.dispose();
|
|
@@ -43619,12 +43619,15 @@ var ConsolePatcher = class {
|
|
|
43619
43619
|
};
|
|
43620
43620
|
formatArgs = (args) => util.format(...args);
|
|
43621
43621
|
patchConsoleMethod = (type) => (...args) => {
|
|
43622
|
-
if (this.params.
|
|
43623
|
-
if (type
|
|
43624
|
-
|
|
43622
|
+
if (this.params.interactive === false) {
|
|
43623
|
+
if ((type === "info" || type === "log") && !this.params.debugMode) {
|
|
43624
|
+
return;
|
|
43625
43625
|
}
|
|
43626
|
-
}
|
|
43627
|
-
|
|
43626
|
+
}
|
|
43627
|
+
if (type !== "debug" || this.params.debugMode) {
|
|
43628
|
+
if (this.params.stderr) {
|
|
43629
|
+
this.originalConsoleError(this.formatArgs(args));
|
|
43630
|
+
} else {
|
|
43628
43631
|
this.params.onNewMessage?.({
|
|
43629
43632
|
type,
|
|
43630
43633
|
content: this.formatArgs(args),
|
|
@@ -56122,6 +56125,10 @@ var COMPLETED_SHELL_MAX_LINES = 15;
|
|
|
56122
56125
|
var SUBAGENT_MAX_LINES = 15;
|
|
56123
56126
|
var MIN_TERMINAL_WIDTH_FOR_FULL_LABEL = 100;
|
|
56124
56127
|
var DEFAULT_COMPRESSION_THRESHOLD = 0.5;
|
|
56128
|
+
var SKILLS_DOCS_URL = "https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/skills.md";
|
|
56129
|
+
var COMPACT_TOOL_SUBVIEW_MAX_LINES = 15;
|
|
56130
|
+
var MAX_SHELL_OUTPUT_SIZE = 1e7;
|
|
56131
|
+
var SHELL_OUTPUT_TRUNCATION_BUFFER = 1e6;
|
|
56125
56132
|
|
|
56126
56133
|
// packages/cli/src/ui/themes/theme.ts
|
|
56127
56134
|
var import_tinygradient = __toESM(require_tinygradient(), 1);
|
|
@@ -58606,7 +58613,7 @@ function convertSessionToHistoryFormats(messages) {
|
|
|
58606
58613
|
name: tool.displayName || tool.name,
|
|
58607
58614
|
description: tool.description || "",
|
|
58608
58615
|
renderOutputAsMarkdown: tool.renderOutputAsMarkdown ?? true,
|
|
58609
|
-
status: tool.status === "success" ?
|
|
58616
|
+
status: tool.status === "success" ? "success" /* Success */ : "error" /* Error */,
|
|
58610
58617
|
resultDisplay: tool.resultDisplay,
|
|
58611
58618
|
confirmationDetails: void 0
|
|
58612
58619
|
}))
|
|
@@ -58639,33 +58646,11 @@ function deriveShortIdFromFileName(fileName) {
|
|
|
58639
58646
|
}
|
|
58640
58647
|
return null;
|
|
58641
58648
|
}
|
|
58642
|
-
function
|
|
58643
|
-
return path4.join(tempDir, "logs", `session-${safeSessionId}.jsonl`);
|
|
58644
|
-
}
|
|
58645
|
-
async function deleteSessionArtifactsAsync(sessionId2, config) {
|
|
58649
|
+
async function cleanupSessionAndSubagentsAsync(sessionId2, config) {
|
|
58646
58650
|
const tempDir = config.storage.getProjectTempDir();
|
|
58647
|
-
const
|
|
58648
|
-
|
|
58649
|
-
|
|
58650
|
-
if (logPath.startsWith(logsDir)) {
|
|
58651
|
-
await fs8.unlink(logPath).catch(() => {
|
|
58652
|
-
});
|
|
58653
|
-
}
|
|
58654
|
-
const toolOutputDir = path4.join(
|
|
58655
|
-
tempDir,
|
|
58656
|
-
TOOL_OUTPUTS_DIR,
|
|
58657
|
-
`session-${safeSessionId}`
|
|
58658
|
-
);
|
|
58659
|
-
const toolOutputsBase = path4.join(tempDir, TOOL_OUTPUTS_DIR);
|
|
58660
|
-
if (toolOutputDir.startsWith(toolOutputsBase)) {
|
|
58661
|
-
await fs8.rm(toolOutputDir, { recursive: true, force: true }).catch(() => {
|
|
58662
|
-
});
|
|
58663
|
-
}
|
|
58664
|
-
const sessionDir = path4.join(tempDir, safeSessionId);
|
|
58665
|
-
if (safeSessionId && sessionDir.startsWith(tempDir + path4.sep)) {
|
|
58666
|
-
await fs8.rm(sessionDir, { recursive: true, force: true }).catch(() => {
|
|
58667
|
-
});
|
|
58668
|
-
}
|
|
58651
|
+
const chatsDir = path4.join(tempDir, "chats");
|
|
58652
|
+
await deleteSessionArtifactsAsync(sessionId2, tempDir);
|
|
58653
|
+
await deleteSubagentSessionDirAndArtifactsAsync(sessionId2, chatsDir, tempDir);
|
|
58669
58654
|
}
|
|
58670
58655
|
async function cleanupExpiredSessions(config, settings) {
|
|
58671
58656
|
const result = {
|
|
@@ -58729,7 +58714,7 @@ async function cleanupExpiredSessions(config, settings) {
|
|
|
58729
58714
|
if (!fullSessionId || fullSessionId !== config.getSessionId()) {
|
|
58730
58715
|
await fs8.unlink(filePath);
|
|
58731
58716
|
if (fullSessionId) {
|
|
58732
|
-
await
|
|
58717
|
+
await cleanupSessionAndSubagentsAsync(fullSessionId, config);
|
|
58733
58718
|
}
|
|
58734
58719
|
result.deleted++;
|
|
58735
58720
|
} else {
|
|
@@ -58750,7 +58735,7 @@ async function cleanupExpiredSessions(config, settings) {
|
|
|
58750
58735
|
await fs8.unlink(sessionPath);
|
|
58751
58736
|
const sessionId2 = sessionToDelete.sessionInfo?.id;
|
|
58752
58737
|
if (sessionId2) {
|
|
58753
|
-
await
|
|
58738
|
+
await cleanupSessionAndSubagentsAsync(sessionId2, config);
|
|
58754
58739
|
}
|
|
58755
58740
|
if (config.getDebugMode()) {
|
|
58756
58741
|
debugLogger.debug(
|
|
@@ -59144,7 +59129,7 @@ var SETTINGS_SCHEMA = {
|
|
|
59144
59129
|
category: "General",
|
|
59145
59130
|
requiresRestart: false,
|
|
59146
59131
|
default: false,
|
|
59147
|
-
description: "Enable run-event notifications for action-required prompts and session completion.
|
|
59132
|
+
description: "Enable run-event notifications for action-required prompts and session completion.",
|
|
59148
59133
|
showInDialog: true
|
|
59149
59134
|
},
|
|
59150
59135
|
checkpointing: {
|
|
@@ -59176,13 +59161,22 @@ var SETTINGS_SCHEMA = {
|
|
|
59176
59161
|
description: "Planning features configuration.",
|
|
59177
59162
|
showInDialog: false,
|
|
59178
59163
|
properties: {
|
|
59164
|
+
enabled: {
|
|
59165
|
+
type: "boolean",
|
|
59166
|
+
label: "Enable Plan Mode",
|
|
59167
|
+
category: "General",
|
|
59168
|
+
requiresRestart: true,
|
|
59169
|
+
default: true,
|
|
59170
|
+
description: "Enable Plan Mode for read-only safety during planning.",
|
|
59171
|
+
showInDialog: true
|
|
59172
|
+
},
|
|
59179
59173
|
directory: {
|
|
59180
59174
|
type: "string",
|
|
59181
59175
|
label: "Plan Directory",
|
|
59182
59176
|
category: "General",
|
|
59183
59177
|
requiresRestart: true,
|
|
59184
59178
|
default: void 0,
|
|
59185
|
-
description: "The directory where planning artifacts are stored. If not specified, defaults to the system temporary directory.",
|
|
59179
|
+
description: "The directory where planning artifacts are stored. If not specified, defaults to the system temporary directory. A custom directory requires a policy to allow write access in Plan Mode.",
|
|
59186
59180
|
showInDialog: true
|
|
59187
59181
|
},
|
|
59188
59182
|
modelRouting: {
|
|
@@ -59430,6 +59424,15 @@ var SETTINGS_SCHEMA = {
|
|
|
59430
59424
|
description: 'Show the "? for shortcuts" hint above the input.',
|
|
59431
59425
|
showInDialog: true
|
|
59432
59426
|
},
|
|
59427
|
+
compactToolOutput: {
|
|
59428
|
+
type: "boolean",
|
|
59429
|
+
label: "Compact Tool Output",
|
|
59430
|
+
category: "UI",
|
|
59431
|
+
requiresRestart: false,
|
|
59432
|
+
default: false,
|
|
59433
|
+
description: "Display tool outputs (like directory listings and file reads) in a compact, structured format.",
|
|
59434
|
+
showInDialog: true
|
|
59435
|
+
},
|
|
59433
59436
|
hideBanner: {
|
|
59434
59437
|
type: "boolean",
|
|
59435
59438
|
label: "Hide Banner",
|
|
@@ -60041,6 +60044,15 @@ var SETTINGS_SCHEMA = {
|
|
|
60041
60044
|
description: "Disable user input on browser window during automation.",
|
|
60042
60045
|
showInDialog: false
|
|
60043
60046
|
},
|
|
60047
|
+
maxActionsPerTask: {
|
|
60048
|
+
type: "number",
|
|
60049
|
+
label: "Max Actions Per Task",
|
|
60050
|
+
category: "Advanced",
|
|
60051
|
+
requiresRestart: false,
|
|
60052
|
+
default: 100,
|
|
60053
|
+
description: "The maximum number of tool calls allowed per browser task. Enforcement is hard: the agent will be terminated when the limit is reached.",
|
|
60054
|
+
showInDialog: false
|
|
60055
|
+
},
|
|
60044
60056
|
confirmSensitiveActions: {
|
|
60045
60057
|
type: "boolean",
|
|
60046
60058
|
label: "Confirm Sensitive Actions",
|
|
@@ -60109,6 +60121,16 @@ var SETTINGS_SCHEMA = {
|
|
|
60109
60121
|
description: "Maximum number of directories to search for memory.",
|
|
60110
60122
|
showInDialog: true
|
|
60111
60123
|
},
|
|
60124
|
+
memoryBoundaryMarkers: {
|
|
60125
|
+
type: "array",
|
|
60126
|
+
label: "Memory Boundary Markers",
|
|
60127
|
+
category: "Context",
|
|
60128
|
+
requiresRestart: true,
|
|
60129
|
+
default: [".git"],
|
|
60130
|
+
description: "File or directory names that mark the boundary for GEMINI.md discovery. The upward traversal stops at the first directory containing any of these markers. An empty array disables parent traversal.",
|
|
60131
|
+
showInDialog: false,
|
|
60132
|
+
items: { type: "string" }
|
|
60133
|
+
},
|
|
60112
60134
|
includeDirectories: {
|
|
60113
60135
|
type: "array",
|
|
60114
60136
|
label: "Include Directories",
|
|
@@ -60260,6 +60282,20 @@ var SETTINGS_SCHEMA = {
|
|
|
60260
60282
|
`,
|
|
60261
60283
|
showInDialog: true
|
|
60262
60284
|
},
|
|
60285
|
+
backgroundCompletionBehavior: {
|
|
60286
|
+
type: "enum",
|
|
60287
|
+
label: "Background Completion Behavior",
|
|
60288
|
+
category: "Tools",
|
|
60289
|
+
requiresRestart: false,
|
|
60290
|
+
default: "silent",
|
|
60291
|
+
description: "Controls what happens when a background shell command finishes. 'silent' (default): quietly exits in background. 'inject': automatically returns output to agent. 'notify': shows brief message in chat.",
|
|
60292
|
+
showInDialog: false,
|
|
60293
|
+
options: [
|
|
60294
|
+
{ label: "Silent", value: "silent" },
|
|
60295
|
+
{ label: "Inject", value: "inject" },
|
|
60296
|
+
{ label: "Notify", value: "notify" }
|
|
60297
|
+
]
|
|
60298
|
+
},
|
|
60263
60299
|
pager: {
|
|
60264
60300
|
type: "string",
|
|
60265
60301
|
label: "Pager",
|
|
@@ -60682,54 +60718,6 @@ var SETTINGS_SCHEMA = {
|
|
|
60682
60718
|
description: "Setting to enable experimental features",
|
|
60683
60719
|
showInDialog: false,
|
|
60684
60720
|
properties: {
|
|
60685
|
-
toolOutputMasking: {
|
|
60686
|
-
type: "object",
|
|
60687
|
-
label: "Tool Output Masking",
|
|
60688
|
-
category: "Experimental",
|
|
60689
|
-
requiresRestart: true,
|
|
60690
|
-
ignoreInDocs: false,
|
|
60691
|
-
default: {},
|
|
60692
|
-
description: "Advanced settings for tool output masking to manage context window efficiency.",
|
|
60693
|
-
showInDialog: false,
|
|
60694
|
-
properties: {
|
|
60695
|
-
enabled: {
|
|
60696
|
-
type: "boolean",
|
|
60697
|
-
label: "Enable Tool Output Masking",
|
|
60698
|
-
category: "Experimental",
|
|
60699
|
-
requiresRestart: true,
|
|
60700
|
-
default: true,
|
|
60701
|
-
description: "Enables tool output masking to save tokens.",
|
|
60702
|
-
showInDialog: true
|
|
60703
|
-
},
|
|
60704
|
-
toolProtectionThreshold: {
|
|
60705
|
-
type: "number",
|
|
60706
|
-
label: "Tool Protection Threshold",
|
|
60707
|
-
category: "Experimental",
|
|
60708
|
-
requiresRestart: true,
|
|
60709
|
-
default: 5e4,
|
|
60710
|
-
description: "Minimum number of tokens to protect from masking (most recent tool outputs).",
|
|
60711
|
-
showInDialog: false
|
|
60712
|
-
},
|
|
60713
|
-
minPrunableTokensThreshold: {
|
|
60714
|
-
type: "number",
|
|
60715
|
-
label: "Min Prunable Tokens Threshold",
|
|
60716
|
-
category: "Experimental",
|
|
60717
|
-
requiresRestart: true,
|
|
60718
|
-
default: 3e4,
|
|
60719
|
-
description: "Minimum prunable tokens required to trigger a masking pass.",
|
|
60720
|
-
showInDialog: false
|
|
60721
|
-
},
|
|
60722
|
-
protectLatestTurn: {
|
|
60723
|
-
type: "boolean",
|
|
60724
|
-
label: "Protect Latest Turn",
|
|
60725
|
-
category: "Experimental",
|
|
60726
|
-
requiresRestart: true,
|
|
60727
|
-
default: true,
|
|
60728
|
-
description: "Ensures the absolute latest turn is never masked, regardless of token count.",
|
|
60729
|
-
showInDialog: false
|
|
60730
|
-
}
|
|
60731
|
-
}
|
|
60732
|
-
},
|
|
60733
60721
|
enableAgents: {
|
|
60734
60722
|
type: "boolean",
|
|
60735
60723
|
label: "Enable Agents",
|
|
@@ -60820,15 +60808,6 @@ var SETTINGS_SCHEMA = {
|
|
|
60820
60808
|
description: "Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it).",
|
|
60821
60809
|
showInDialog: true
|
|
60822
60810
|
},
|
|
60823
|
-
plan: {
|
|
60824
|
-
type: "boolean",
|
|
60825
|
-
label: "Plan",
|
|
60826
|
-
category: "Experimental",
|
|
60827
|
-
requiresRestart: true,
|
|
60828
|
-
default: true,
|
|
60829
|
-
description: "Enable Plan Mode.",
|
|
60830
|
-
showInDialog: true
|
|
60831
|
-
},
|
|
60832
60811
|
taskTracker: {
|
|
60833
60812
|
type: "boolean",
|
|
60834
60813
|
label: "Task Tracker",
|
|
@@ -60923,6 +60902,15 @@ var SETTINGS_SCHEMA = {
|
|
|
60923
60902
|
description: "Replace the built-in save_memory tool with a memory manager subagent that supports adding, removing, de-duplicating, and organizing memories.",
|
|
60924
60903
|
showInDialog: true
|
|
60925
60904
|
},
|
|
60905
|
+
contextManagement: {
|
|
60906
|
+
type: "boolean",
|
|
60907
|
+
label: "Enable Context Management",
|
|
60908
|
+
category: "Experimental",
|
|
60909
|
+
requiresRestart: true,
|
|
60910
|
+
default: false,
|
|
60911
|
+
description: "Enable logic for context management.",
|
|
60912
|
+
showInDialog: true
|
|
60913
|
+
},
|
|
60926
60914
|
topicUpdateNarration: {
|
|
60927
60915
|
type: "boolean",
|
|
60928
60916
|
label: "Topic & Update Narration",
|
|
@@ -61178,6 +61166,159 @@ var SETTINGS_SCHEMA = {
|
|
|
61178
61166
|
mergeStrategy: "concat" /* CONCAT */
|
|
61179
61167
|
}
|
|
61180
61168
|
},
|
|
61169
|
+
contextManagement: {
|
|
61170
|
+
type: "object",
|
|
61171
|
+
label: "Context Management",
|
|
61172
|
+
category: "Experimental",
|
|
61173
|
+
requiresRestart: true,
|
|
61174
|
+
default: {},
|
|
61175
|
+
description: "Settings for agent history and tool distillation context management.",
|
|
61176
|
+
showInDialog: false,
|
|
61177
|
+
properties: {
|
|
61178
|
+
historyWindow: {
|
|
61179
|
+
type: "object",
|
|
61180
|
+
label: "History Window Settings",
|
|
61181
|
+
category: "Context Management",
|
|
61182
|
+
requiresRestart: true,
|
|
61183
|
+
default: {},
|
|
61184
|
+
showInDialog: false,
|
|
61185
|
+
properties: {
|
|
61186
|
+
maxTokens: {
|
|
61187
|
+
type: "number",
|
|
61188
|
+
label: "Max Tokens",
|
|
61189
|
+
category: "Context Management",
|
|
61190
|
+
requiresRestart: true,
|
|
61191
|
+
default: 15e4,
|
|
61192
|
+
description: "The number of tokens to allow before triggering compression.",
|
|
61193
|
+
showInDialog: false
|
|
61194
|
+
},
|
|
61195
|
+
retainedTokens: {
|
|
61196
|
+
type: "number",
|
|
61197
|
+
label: "Retained Tokens",
|
|
61198
|
+
category: "Context Management",
|
|
61199
|
+
requiresRestart: true,
|
|
61200
|
+
default: 4e4,
|
|
61201
|
+
description: "The number of tokens to always retain.",
|
|
61202
|
+
showInDialog: false
|
|
61203
|
+
}
|
|
61204
|
+
}
|
|
61205
|
+
},
|
|
61206
|
+
messageLimits: {
|
|
61207
|
+
type: "object",
|
|
61208
|
+
label: "Message Limits",
|
|
61209
|
+
category: "Context Management",
|
|
61210
|
+
requiresRestart: true,
|
|
61211
|
+
default: {},
|
|
61212
|
+
showInDialog: false,
|
|
61213
|
+
properties: {
|
|
61214
|
+
normalMaxTokens: {
|
|
61215
|
+
type: "number",
|
|
61216
|
+
label: "Normal Maximum Tokens",
|
|
61217
|
+
category: "Context Management",
|
|
61218
|
+
requiresRestart: true,
|
|
61219
|
+
default: 2500,
|
|
61220
|
+
description: "The target number of tokens to budget for a normal conversation turn.",
|
|
61221
|
+
showInDialog: false
|
|
61222
|
+
},
|
|
61223
|
+
retainedMaxTokens: {
|
|
61224
|
+
type: "number",
|
|
61225
|
+
label: "Retained Maximum Tokens",
|
|
61226
|
+
category: "Context Management",
|
|
61227
|
+
requiresRestart: true,
|
|
61228
|
+
default: 12e3,
|
|
61229
|
+
description: "The maximum number of tokens a single conversation turn can consume before truncation.",
|
|
61230
|
+
showInDialog: false
|
|
61231
|
+
},
|
|
61232
|
+
normalizationHeadRatio: {
|
|
61233
|
+
type: "number",
|
|
61234
|
+
label: "Normalization Head Ratio",
|
|
61235
|
+
category: "Context Management",
|
|
61236
|
+
requiresRestart: true,
|
|
61237
|
+
default: 0.25,
|
|
61238
|
+
description: "The ratio of tokens to retain from the beginning of a truncated message (0.0 to 1.0).",
|
|
61239
|
+
showInDialog: false
|
|
61240
|
+
}
|
|
61241
|
+
}
|
|
61242
|
+
},
|
|
61243
|
+
tools: {
|
|
61244
|
+
type: "object",
|
|
61245
|
+
label: "Context Management Tools",
|
|
61246
|
+
category: "Context Management",
|
|
61247
|
+
requiresRestart: true,
|
|
61248
|
+
default: {},
|
|
61249
|
+
showInDialog: false,
|
|
61250
|
+
properties: {
|
|
61251
|
+
distillation: {
|
|
61252
|
+
type: "object",
|
|
61253
|
+
label: "Tool Distillation",
|
|
61254
|
+
category: "Context Management",
|
|
61255
|
+
requiresRestart: true,
|
|
61256
|
+
default: {},
|
|
61257
|
+
showInDialog: false,
|
|
61258
|
+
properties: {
|
|
61259
|
+
maxOutputTokens: {
|
|
61260
|
+
type: "number",
|
|
61261
|
+
label: "Max Output Tokens",
|
|
61262
|
+
category: "Context Management",
|
|
61263
|
+
requiresRestart: true,
|
|
61264
|
+
default: 1e4,
|
|
61265
|
+
description: "Maximum tokens to show to the model when truncating large tool outputs.",
|
|
61266
|
+
showInDialog: false
|
|
61267
|
+
},
|
|
61268
|
+
summarizationThresholdTokens: {
|
|
61269
|
+
type: "number",
|
|
61270
|
+
label: "Tool Summarization Threshold",
|
|
61271
|
+
category: "Context Management",
|
|
61272
|
+
requiresRestart: true,
|
|
61273
|
+
default: 2e4,
|
|
61274
|
+
description: "Threshold above which truncated tool outputs will be summarized by an LLM.",
|
|
61275
|
+
showInDialog: false
|
|
61276
|
+
}
|
|
61277
|
+
}
|
|
61278
|
+
},
|
|
61279
|
+
outputMasking: {
|
|
61280
|
+
type: "object",
|
|
61281
|
+
label: "Tool Output Masking",
|
|
61282
|
+
category: "Context Management",
|
|
61283
|
+
requiresRestart: true,
|
|
61284
|
+
ignoreInDocs: false,
|
|
61285
|
+
default: {},
|
|
61286
|
+
description: "Advanced settings for tool output masking to manage context window efficiency.",
|
|
61287
|
+
showInDialog: false,
|
|
61288
|
+
properties: {
|
|
61289
|
+
protectionThresholdTokens: {
|
|
61290
|
+
type: "number",
|
|
61291
|
+
label: "Tool Protection Threshold (Tokens)",
|
|
61292
|
+
category: "Context Management",
|
|
61293
|
+
requiresRestart: true,
|
|
61294
|
+
default: 5e4,
|
|
61295
|
+
description: "Minimum number of tokens to protect from masking (most recent tool outputs).",
|
|
61296
|
+
showInDialog: false
|
|
61297
|
+
},
|
|
61298
|
+
minPrunableThresholdTokens: {
|
|
61299
|
+
type: "number",
|
|
61300
|
+
label: "Min Prunable Tokens Threshold",
|
|
61301
|
+
category: "Context Management",
|
|
61302
|
+
requiresRestart: true,
|
|
61303
|
+
default: 3e4,
|
|
61304
|
+
description: "Minimum prunable tokens required to trigger a masking pass.",
|
|
61305
|
+
showInDialog: false
|
|
61306
|
+
},
|
|
61307
|
+
protectLatestTurn: {
|
|
61308
|
+
type: "boolean",
|
|
61309
|
+
label: "Protect Latest Turn",
|
|
61310
|
+
category: "Context Management",
|
|
61311
|
+
requiresRestart: true,
|
|
61312
|
+
default: true,
|
|
61313
|
+
description: "Ensures the absolute latest turn is never masked, regardless of token count.",
|
|
61314
|
+
showInDialog: false
|
|
61315
|
+
}
|
|
61316
|
+
}
|
|
61317
|
+
}
|
|
61318
|
+
}
|
|
61319
|
+
}
|
|
61320
|
+
}
|
|
61321
|
+
},
|
|
61181
61322
|
admin: {
|
|
61182
61323
|
type: "object",
|
|
61183
61324
|
label: "Admin",
|
|
@@ -62429,8 +62570,8 @@ var LoadedSettings = class {
|
|
|
62429
62570
|
// React will pass a listener fn into this subscribe fn
|
|
62430
62571
|
// that listener fn will perform an object identity check on the snapshot and trigger a React re render if the snapshot has changed
|
|
62431
62572
|
subscribe(listener) {
|
|
62432
|
-
coreEvents.on(
|
|
62433
|
-
return () => coreEvents.off(
|
|
62573
|
+
coreEvents.on("settings-changed" /* SettingsChanged */, listener);
|
|
62574
|
+
return () => coreEvents.off("settings-changed" /* SettingsChanged */, listener);
|
|
62434
62575
|
}
|
|
62435
62576
|
getSnapshot() {
|
|
62436
62577
|
return this._snapshot;
|
|
@@ -62931,7 +63072,7 @@ function migrateExperimentalSettings(settings, loadedSettings, scope, removeDepr
|
|
|
62931
63072
|
let modified = false;
|
|
62932
63073
|
const migrateExperimental = (oldKey, migrateFn) => {
|
|
62933
63074
|
const old = experimentalSettings[oldKey];
|
|
62934
|
-
if (old) {
|
|
63075
|
+
if (old !== void 0) {
|
|
62935
63076
|
foundDeprecated?.push(`experimental.${oldKey}`);
|
|
62936
63077
|
migrateFn(old);
|
|
62937
63078
|
modified = true;
|
|
@@ -62983,6 +63124,21 @@ function migrateExperimentalSettings(settings, loadedSettings, scope, removeDepr
|
|
|
62983
63124
|
if (old["enabled"] !== void 0) override["enabled"] = old["enabled"];
|
|
62984
63125
|
agentsOverrides["cli_help"] = override;
|
|
62985
63126
|
});
|
|
63127
|
+
migrateExperimental("plan", (planValue) => {
|
|
63128
|
+
const generalSettings = settings.general || {};
|
|
63129
|
+
const newGeneral = { ...generalSettings };
|
|
63130
|
+
const planSettings = (
|
|
63131
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
63132
|
+
newGeneral["plan"] || {}
|
|
63133
|
+
);
|
|
63134
|
+
const newPlan = { ...planSettings };
|
|
63135
|
+
if (newPlan["enabled"] === void 0) {
|
|
63136
|
+
newPlan["enabled"] = planValue;
|
|
63137
|
+
newGeneral["plan"] = newPlan;
|
|
63138
|
+
loadedSettings.setValue(scope, "general", newGeneral);
|
|
63139
|
+
modified = true;
|
|
63140
|
+
}
|
|
63141
|
+
});
|
|
62986
63142
|
if (modified) {
|
|
62987
63143
|
agentsSettings["overrides"] = agentsOverrides;
|
|
62988
63144
|
loadedSettings.setValue(scope, "agents", agentsSettings);
|
|
@@ -62990,6 +63146,7 @@ function migrateExperimentalSettings(settings, loadedSettings, scope, removeDepr
|
|
|
62990
63146
|
const newExperimental = { ...experimentalSettings };
|
|
62991
63147
|
delete newExperimental["codebaseInvestigatorSettings"];
|
|
62992
63148
|
delete newExperimental["cliHelpAgentSettings"];
|
|
63149
|
+
delete newExperimental["plan"];
|
|
62993
63150
|
loadedSettings.setValue(scope, "experimental", newExperimental);
|
|
62994
63151
|
}
|
|
62995
63152
|
return true;
|
|
@@ -63286,19 +63443,6 @@ var useFocus = () => {
|
|
|
63286
63443
|
};
|
|
63287
63444
|
};
|
|
63288
63445
|
|
|
63289
|
-
// packages/cli/src/utils/events.ts
|
|
63290
|
-
import { EventEmitter as EventEmitter3 } from "node:events";
|
|
63291
|
-
var AppEvent = /* @__PURE__ */ ((AppEvent2) => {
|
|
63292
|
-
AppEvent2["OpenDebugConsole"] = "open-debug-console";
|
|
63293
|
-
AppEvent2["Flicker"] = "flicker";
|
|
63294
|
-
AppEvent2["SelectionWarning"] = "selection-warning";
|
|
63295
|
-
AppEvent2["PasteTimeout"] = "paste-timeout";
|
|
63296
|
-
AppEvent2["TerminalBackground"] = "terminal-background";
|
|
63297
|
-
AppEvent2["TransientMessage"] = "transient-message";
|
|
63298
|
-
return AppEvent2;
|
|
63299
|
-
})(AppEvent || {});
|
|
63300
|
-
var appEvents = new EventEmitter3();
|
|
63301
|
-
|
|
63302
63446
|
// packages/cli/src/ui/utils/terminalCapabilityManager.ts
|
|
63303
63447
|
import * as fs11 from "node:fs";
|
|
63304
63448
|
|
|
@@ -63543,6 +63687,12 @@ var TerminalCapabilityManager = class _TerminalCapabilityManager {
|
|
|
63543
63687
|
isKittyProtocolEnabled() {
|
|
63544
63688
|
return this.kittyEnabled;
|
|
63545
63689
|
}
|
|
63690
|
+
isGhosttyTerminal(env3 = process.env) {
|
|
63691
|
+
const termProgram = env3["TERM_PROGRAM"]?.toLowerCase();
|
|
63692
|
+
const term = env3["TERM"]?.toLowerCase();
|
|
63693
|
+
const name = this.getTerminalName()?.toLowerCase();
|
|
63694
|
+
return !!(name?.includes("ghostty") || termProgram?.includes("ghostty") || term?.includes("ghostty"));
|
|
63695
|
+
}
|
|
63546
63696
|
supportsOsc9Notifications(env3 = process.env) {
|
|
63547
63697
|
if (env3["WT_SESSION"]) {
|
|
63548
63698
|
return false;
|
|
@@ -64256,6 +64406,7 @@ var Command = /* @__PURE__ */ ((Command2) => {
|
|
|
64256
64406
|
Command2["EXPAND_SUGGESTION"] = "suggest.expand";
|
|
64257
64407
|
Command2["COLLAPSE_SUGGESTION"] = "suggest.collapse";
|
|
64258
64408
|
Command2["SUBMIT"] = "input.submit";
|
|
64409
|
+
Command2["QUEUE_MESSAGE"] = "input.queueMessage";
|
|
64259
64410
|
Command2["NEWLINE"] = "input.newline";
|
|
64260
64411
|
Command2["OPEN_EXTERNAL_EDITOR"] = "input.openExternalEditor";
|
|
64261
64412
|
Command2["PASTE_CLIPBOARD"] = "input.paste";
|
|
@@ -64282,6 +64433,8 @@ var Command = /* @__PURE__ */ ((Command2) => {
|
|
|
64282
64433
|
Command2["UNFOCUS_BACKGROUND_SHELL"] = "background.unfocus";
|
|
64283
64434
|
Command2["UNFOCUS_BACKGROUND_SHELL_LIST"] = "background.unfocusList";
|
|
64284
64435
|
Command2["SHOW_BACKGROUND_SHELL_UNFOCUS_WARNING"] = "background.unfocusWarning";
|
|
64436
|
+
Command2["UPDATE_EXTENSION"] = "extension.update";
|
|
64437
|
+
Command2["LINK_EXTENSION"] = "extension.link";
|
|
64285
64438
|
return Command2;
|
|
64286
64439
|
})(Command || {});
|
|
64287
64440
|
var KeyBinding = class _KeyBinding {
|
|
@@ -64491,6 +64644,7 @@ var defaultKeyBindingConfig = /* @__PURE__ */ new Map([
|
|
|
64491
64644
|
// Text Input
|
|
64492
64645
|
// Must also exclude shift to allow shift+enter for newline
|
|
64493
64646
|
["input.submit" /* SUBMIT */, [new KeyBinding("enter")]],
|
|
64647
|
+
["input.queueMessage" /* QUEUE_MESSAGE */, [new KeyBinding("tab")]],
|
|
64494
64648
|
[
|
|
64495
64649
|
"input.newline" /* NEWLINE */,
|
|
64496
64650
|
[
|
|
@@ -64534,7 +64688,10 @@ var defaultKeyBindingConfig = /* @__PURE__ */ new Map([
|
|
|
64534
64688
|
["background.kill" /* KILL_BACKGROUND_SHELL */, [new KeyBinding("ctrl+k")]],
|
|
64535
64689
|
["background.unfocus" /* UNFOCUS_BACKGROUND_SHELL */, [new KeyBinding("shift+tab")]],
|
|
64536
64690
|
["background.unfocusList" /* UNFOCUS_BACKGROUND_SHELL_LIST */, [new KeyBinding("tab")]],
|
|
64537
|
-
["background.unfocusWarning" /* SHOW_BACKGROUND_SHELL_UNFOCUS_WARNING */, [new KeyBinding("tab")]]
|
|
64691
|
+
["background.unfocusWarning" /* SHOW_BACKGROUND_SHELL_UNFOCUS_WARNING */, [new KeyBinding("tab")]],
|
|
64692
|
+
// Extension Controls
|
|
64693
|
+
["extension.update" /* UPDATE_EXTENSION */, [new KeyBinding("i")]],
|
|
64694
|
+
["extension.link" /* LINK_EXTENSION */, [new KeyBinding("l")]]
|
|
64538
64695
|
]);
|
|
64539
64696
|
var keybindingsSchema = external_exports.array(
|
|
64540
64697
|
external_exports.object({
|
|
@@ -66656,6 +66813,152 @@ var XCode = new Theme(
|
|
|
66656
66813
|
xcodeColors
|
|
66657
66814
|
);
|
|
66658
66815
|
|
|
66816
|
+
// packages/cli/src/ui/themes/builtin/dark/tokyonight-dark.ts
|
|
66817
|
+
var palette = {
|
|
66818
|
+
bg: "#1a1b26",
|
|
66819
|
+
bg_dark: "#16161e",
|
|
66820
|
+
bg_dark1: "#0C0E14",
|
|
66821
|
+
bg_highlight: "#292e42",
|
|
66822
|
+
blue: "#7aa2f7",
|
|
66823
|
+
blue0: "#3d59a1",
|
|
66824
|
+
blue1: "#2ac3de",
|
|
66825
|
+
blue2: "#0db9d7",
|
|
66826
|
+
blue5: "#89ddff",
|
|
66827
|
+
blue6: "#b4f9f8",
|
|
66828
|
+
blue7: "#394b70",
|
|
66829
|
+
comment: "#565f89",
|
|
66830
|
+
cyan: "#7dcfff",
|
|
66831
|
+
fg: "#c0caf5",
|
|
66832
|
+
fg_dark: "#a9b1d6",
|
|
66833
|
+
fg_gutter: "#3b4261",
|
|
66834
|
+
green: "#9ece6a",
|
|
66835
|
+
green1: "#73daca",
|
|
66836
|
+
green2: "#41a6b5",
|
|
66837
|
+
magenta: "#bb9af7",
|
|
66838
|
+
magenta2: "#ff007c",
|
|
66839
|
+
orange: "#ff9e64",
|
|
66840
|
+
purple: "#9d7cd8",
|
|
66841
|
+
red: "#f7768e",
|
|
66842
|
+
red1: "#db4b4b",
|
|
66843
|
+
teal: "#1abc9c",
|
|
66844
|
+
yellow: "#e0af68",
|
|
66845
|
+
diff: {
|
|
66846
|
+
add: "#243e4a",
|
|
66847
|
+
change: "#1f2231",
|
|
66848
|
+
delete: "#4a272f"
|
|
66849
|
+
}
|
|
66850
|
+
};
|
|
66851
|
+
var tokyoNightColors = {
|
|
66852
|
+
type: "dark",
|
|
66853
|
+
Background: palette.bg,
|
|
66854
|
+
Foreground: palette.fg,
|
|
66855
|
+
LightBlue: palette.purple,
|
|
66856
|
+
AccentBlue: palette.magenta,
|
|
66857
|
+
AccentPurple: palette.blue,
|
|
66858
|
+
AccentCyan: palette.cyan,
|
|
66859
|
+
AccentGreen: palette.teal,
|
|
66860
|
+
AccentYellow: palette.yellow,
|
|
66861
|
+
AccentRed: palette.red1,
|
|
66862
|
+
DiffAdded: palette.diff.add,
|
|
66863
|
+
DiffRemoved: palette.diff.delete,
|
|
66864
|
+
Comment: palette.comment,
|
|
66865
|
+
Gray: palette.fg_dark,
|
|
66866
|
+
DarkGray: palette.fg_gutter,
|
|
66867
|
+
FocusColor: palette.blue,
|
|
66868
|
+
GradientColors: [palette.blue, palette.magenta, palette.cyan]
|
|
66869
|
+
};
|
|
66870
|
+
var TokyoNight = new Theme(
|
|
66871
|
+
"Tokyo Night",
|
|
66872
|
+
"dark",
|
|
66873
|
+
{
|
|
66874
|
+
hljs: {
|
|
66875
|
+
display: "block",
|
|
66876
|
+
overflowX: "auto",
|
|
66877
|
+
padding: "0.5em",
|
|
66878
|
+
background: palette.bg,
|
|
66879
|
+
color: palette.fg
|
|
66880
|
+
},
|
|
66881
|
+
"hljs-addition": { background: palette.diff.add },
|
|
66882
|
+
"hljs-attr": { color: palette.green1 },
|
|
66883
|
+
"hljs-attribute": { color: palette.green1 },
|
|
66884
|
+
"hljs-brace": { color: palette.fg_dark },
|
|
66885
|
+
"hljs-built_in": { color: palette.blue1 },
|
|
66886
|
+
"hljs-builtin-symbol": { color: palette.blue1 },
|
|
66887
|
+
"hljs-bullet": {
|
|
66888
|
+
color: palette.orange,
|
|
66889
|
+
fontWeight: "bold"
|
|
66890
|
+
},
|
|
66891
|
+
"hljs-char": { color: palette.green },
|
|
66892
|
+
"hljs-char-escape": { color: palette.magenta },
|
|
66893
|
+
"hljs-character": { color: palette.green },
|
|
66894
|
+
"hljs-class": { color: palette.blue1 },
|
|
66895
|
+
"hljs-class-title": { color: palette.blue1 },
|
|
66896
|
+
"hljs-code": { color: palette.green },
|
|
66897
|
+
"hljs-comment": {
|
|
66898
|
+
color: palette.comment,
|
|
66899
|
+
fontStyle: "italic"
|
|
66900
|
+
},
|
|
66901
|
+
"hljs-computation-expression": { color: palette.cyan },
|
|
66902
|
+
"hljs-deletion": { background: palette.diff.delete },
|
|
66903
|
+
"hljs-doctag": { color: palette.yellow },
|
|
66904
|
+
"hljs-emphasis": { fontStyle: "italic" },
|
|
66905
|
+
"hljs-function": { color: palette.blue },
|
|
66906
|
+
"hljs-function-dispatch": { color: palette.blue },
|
|
66907
|
+
"hljs-keyword": {
|
|
66908
|
+
color: palette.magenta,
|
|
66909
|
+
fontStyle: "italic"
|
|
66910
|
+
},
|
|
66911
|
+
"hljs-label": { color: palette.blue },
|
|
66912
|
+
"hljs-link": { color: palette.teal },
|
|
66913
|
+
"hljs-literal": { color: palette.orange },
|
|
66914
|
+
"hljs-message-name": { color: palette.blue },
|
|
66915
|
+
"hljs-meta": { color: palette.cyan },
|
|
66916
|
+
"hljs-meta-prompt": { color: palette.fg_dark },
|
|
66917
|
+
"hljs-name": { color: palette.magenta },
|
|
66918
|
+
"hljs-named-character": { color: palette.blue1 },
|
|
66919
|
+
"hljs-number": { color: palette.orange },
|
|
66920
|
+
"hljs-operator": { color: palette.blue5 },
|
|
66921
|
+
"hljs-params": { color: palette.yellow },
|
|
66922
|
+
"hljs-property": { color: palette.green1 },
|
|
66923
|
+
"hljs-punctuation": { color: palette.fg_dark },
|
|
66924
|
+
"hljs-quote": {
|
|
66925
|
+
color: palette.comment,
|
|
66926
|
+
fontStyle: "italic"
|
|
66927
|
+
},
|
|
66928
|
+
"hljs-regex": { color: palette.blue6 },
|
|
66929
|
+
"hljs-regexp": { color: palette.blue6 },
|
|
66930
|
+
"hljs-rest_arg": {
|
|
66931
|
+
color: interpolateColor(palette.yellow, palette.fg, 0.8)
|
|
66932
|
+
},
|
|
66933
|
+
"hljs-section": {
|
|
66934
|
+
color: palette.blue,
|
|
66935
|
+
fontWeight: "bold"
|
|
66936
|
+
},
|
|
66937
|
+
"hljs-selector-attr": { color: palette.cyan },
|
|
66938
|
+
"hljs-selector-class": { color: palette.green1 },
|
|
66939
|
+
"hljs-selector-id": { color: palette.green1 },
|
|
66940
|
+
"hljs-selector-pseudo": { color: palette.cyan },
|
|
66941
|
+
"hljs-selector-tag": { color: palette.magenta },
|
|
66942
|
+
"hljs-string": { color: palette.green },
|
|
66943
|
+
"hljs-strong": { fontWeight: "bold" },
|
|
66944
|
+
"hljs-subst": { color: palette.blue5 },
|
|
66945
|
+
"hljs-symbol": { color: palette.magenta },
|
|
66946
|
+
"hljs-tag": { color: palette.blue1 },
|
|
66947
|
+
"hljs-template-tag": { color: palette.blue5 },
|
|
66948
|
+
"hljs-template-variable": { color: palette.fg },
|
|
66949
|
+
"hljs-title": { color: palette.blue },
|
|
66950
|
+
"hljs-title-class": { color: palette.blue1 },
|
|
66951
|
+
"hljs-title-class-inherited": { color: palette.blue1 },
|
|
66952
|
+
"hljs-title-function": { color: palette.blue },
|
|
66953
|
+
"hljs-title-function-invoke": { color: palette.blue },
|
|
66954
|
+
"hljs-type": { color: palette.blue1 },
|
|
66955
|
+
"hljs-variable": { color: palette.fg },
|
|
66956
|
+
"hljs-variable-constant": { color: palette.orange },
|
|
66957
|
+
"hljs-variable-language": { color: palette.red }
|
|
66958
|
+
},
|
|
66959
|
+
tokyoNightColors
|
|
66960
|
+
);
|
|
66961
|
+
|
|
66659
66962
|
// packages/cli/src/ui/themes/theme-manager.ts
|
|
66660
66963
|
import * as fs13 from "node:fs";
|
|
66661
66964
|
import * as path6 from "node:path";
|
|
@@ -67155,6 +67458,7 @@ var ThemeManager = class {
|
|
|
67155
67458
|
SolarizedDark,
|
|
67156
67459
|
SolarizedLight,
|
|
67157
67460
|
XCode,
|
|
67461
|
+
TokyoNight,
|
|
67158
67462
|
ANSI,
|
|
67159
67463
|
ANSILight
|
|
67160
67464
|
];
|
|
@@ -67730,7 +68034,7 @@ var import_react34 = __toESM(require_react(), 1);
|
|
|
67730
68034
|
function useIdeTrustListener() {
|
|
67731
68035
|
const settings = useSettings();
|
|
67732
68036
|
const [connectionStatus, setConnectionStatus] = (0, import_react34.useState)(
|
|
67733
|
-
|
|
68037
|
+
"disconnected" /* Disconnected */
|
|
67734
68038
|
);
|
|
67735
68039
|
const previousTrust = (0, import_react34.useRef)(void 0);
|
|
67736
68040
|
const [restartReason, setRestartReason] = (0, import_react34.useState)("NONE");
|
|
@@ -67760,7 +68064,7 @@ function useIdeTrustListener() {
|
|
|
67760
68064
|
};
|
|
67761
68065
|
}, []);
|
|
67762
68066
|
const getSnapshot = () => {
|
|
67763
|
-
if (connectionStatus !==
|
|
68067
|
+
if (connectionStatus !== "connected" /* Connected */) {
|
|
67764
68068
|
return void 0;
|
|
67765
68069
|
}
|
|
67766
68070
|
return ideContextStore.get()?.workspaceState?.isTrusted;
|
|
@@ -68128,8 +68432,8 @@ function getInstallationInfo(projectRoot, isAutoUpdateEnabled) {
|
|
|
68128
68432
|
}
|
|
68129
68433
|
|
|
68130
68434
|
// packages/cli/src/utils/updateEventEmitter.ts
|
|
68131
|
-
import { EventEmitter as
|
|
68132
|
-
var updateEventEmitter = new
|
|
68435
|
+
import { EventEmitter as EventEmitter3 } from "node:events";
|
|
68436
|
+
var updateEventEmitter = new EventEmitter3();
|
|
68133
68437
|
|
|
68134
68438
|
// packages/cli/src/utils/spawnWrapper.ts
|
|
68135
68439
|
import { spawn } from "node:child_process";
|
|
@@ -68191,12 +68495,19 @@ Automatic update is not available in sandbox mode.`
|
|
|
68191
68495
|
combinedMessage += `
|
|
68192
68496
|
${installationInfo.updateMessage}`;
|
|
68193
68497
|
}
|
|
68194
|
-
updateEventEmitter.emit("update-received", {
|
|
68195
|
-
message: combinedMessage
|
|
68196
|
-
});
|
|
68197
68498
|
if (!installationInfo.updateCommand || !settings.merged.general.enableAutoUpdate) {
|
|
68499
|
+
updateEventEmitter.emit("update-received", {
|
|
68500
|
+
...info,
|
|
68501
|
+
message: combinedMessage,
|
|
68502
|
+
isUpdating: false
|
|
68503
|
+
});
|
|
68198
68504
|
return;
|
|
68199
68505
|
}
|
|
68506
|
+
updateEventEmitter.emit("update-received", {
|
|
68507
|
+
...info,
|
|
68508
|
+
message: combinedMessage,
|
|
68509
|
+
isUpdating: true
|
|
68510
|
+
});
|
|
68200
68511
|
if (_updateInProgress) {
|
|
68201
68512
|
return;
|
|
68202
68513
|
}
|
|
@@ -72899,7 +73210,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
72899
73210
|
newExtensionConfig.version,
|
|
72900
73211
|
previousExtensionConfig.version,
|
|
72901
73212
|
installMetadata.type,
|
|
72902
|
-
|
|
73213
|
+
"success" /* Success */
|
|
72903
73214
|
)
|
|
72904
73215
|
);
|
|
72905
73216
|
if (newExtensionName !== previousName) {
|
|
@@ -72922,7 +73233,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
72922
73233
|
getExtensionId(newExtensionConfig, installMetadata),
|
|
72923
73234
|
newExtensionConfig.version,
|
|
72924
73235
|
installMetadata.type,
|
|
72925
|
-
|
|
73236
|
+
"success" /* Success */
|
|
72926
73237
|
)
|
|
72927
73238
|
);
|
|
72928
73239
|
await this.enableExtension(
|
|
@@ -72955,7 +73266,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
72955
73266
|
newExtensionConfig?.version ?? "",
|
|
72956
73267
|
previousExtensionConfig.version,
|
|
72957
73268
|
installMetadata.type,
|
|
72958
|
-
|
|
73269
|
+
"error" /* Error */
|
|
72959
73270
|
)
|
|
72960
73271
|
);
|
|
72961
73272
|
} else {
|
|
@@ -72967,7 +73278,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
72967
73278
|
extensionId ?? "",
|
|
72968
73279
|
newExtensionConfig?.version ?? "",
|
|
72969
73280
|
installMetadata.type,
|
|
72970
|
-
|
|
73281
|
+
"error" /* Error */
|
|
72971
73282
|
)
|
|
72972
73283
|
);
|
|
72973
73284
|
}
|
|
@@ -72998,7 +73309,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
72998
73309
|
extension.name,
|
|
72999
73310
|
hashValue(extension.name),
|
|
73000
73311
|
extension.id,
|
|
73001
|
-
|
|
73312
|
+
"success" /* Success */
|
|
73002
73313
|
)
|
|
73003
73314
|
);
|
|
73004
73315
|
}
|
|
@@ -73268,7 +73579,7 @@ Would you like to attempt to install via "git clone" instead?`
|
|
|
73268
73579
|
if (eventHooks) {
|
|
73269
73580
|
for (const definition of eventHooks) {
|
|
73270
73581
|
for (const hook of definition.hooks) {
|
|
73271
|
-
if (hook.type ===
|
|
73582
|
+
if (hook.type === "command" /* Command */) {
|
|
73272
73583
|
hook.env = { ...hook.env, ...hookEnv };
|
|
73273
73584
|
}
|
|
73274
73585
|
}
|
|
@@ -73895,7 +74206,7 @@ async function readMcpResources(resourceParts, config, signal) {
|
|
|
73895
74206
|
callId: `mcp-resource-${resource.serverName}-${resource.uri}`,
|
|
73896
74207
|
name: `resources/read (${resource.serverName})`,
|
|
73897
74208
|
description: resource.uri,
|
|
73898
|
-
status:
|
|
74209
|
+
status: "success" /* Success */,
|
|
73899
74210
|
isClientInitiated: true,
|
|
73900
74211
|
resultDisplay: `Successfully read resource ${resource.uri}`,
|
|
73901
74212
|
confirmationDetails: void 0
|
|
@@ -73910,7 +74221,7 @@ async function readMcpResources(resourceParts, config, signal) {
|
|
|
73910
74221
|
callId: `mcp-resource-${resource.serverName}-${resource.uri}`,
|
|
73911
74222
|
name: `resources/read (${resource.serverName})`,
|
|
73912
74223
|
description: resource.uri,
|
|
73913
|
-
status:
|
|
74224
|
+
status: "error" /* Error */,
|
|
73914
74225
|
isClientInitiated: true,
|
|
73915
74226
|
resultDisplay: `Error reading resource ${resource.uri}: ${getErrorMessage(error)}`,
|
|
73916
74227
|
confirmationDetails: void 0
|
|
@@ -73935,7 +74246,7 @@ Content from @${result.uri}:
|
|
|
73935
74246
|
}
|
|
73936
74247
|
if (hasError) {
|
|
73937
74248
|
const firstError = displays.find(
|
|
73938
|
-
(d) => d.status ===
|
|
74249
|
+
(d) => d.status === "error" /* Error */
|
|
73939
74250
|
);
|
|
73940
74251
|
return {
|
|
73941
74252
|
parts: [],
|
|
@@ -73971,7 +74282,7 @@ async function readLocalFiles(resolvedFiles, config, signal, userMessageTimestam
|
|
|
73971
74282
|
callId: `client-read-${userMessageTimestamp}`,
|
|
73972
74283
|
name: readManyFilesTool.displayName,
|
|
73973
74284
|
description: invocation.getDescription(),
|
|
73974
|
-
status:
|
|
74285
|
+
status: "success" /* Success */,
|
|
73975
74286
|
isClientInitiated: true,
|
|
73976
74287
|
resultDisplay: result.returnDisplay || `Successfully read: ${fileLabelsForDisplay.join(", ")}`,
|
|
73977
74288
|
confirmationDetails: void 0
|
|
@@ -74018,7 +74329,7 @@ Content from @${displayPath}:
|
|
|
74018
74329
|
callId: `client-read-${userMessageTimestamp}`,
|
|
74019
74330
|
name: readManyFilesTool.displayName,
|
|
74020
74331
|
description: invocation?.getDescription() ?? "Error attempting to execute tool to read files",
|
|
74021
|
-
status:
|
|
74332
|
+
status: "error" /* Error */,
|
|
74022
74333
|
isClientInitiated: true,
|
|
74023
74334
|
resultDisplay: `Error reading files (${fileLabelsForDisplay.join(", ")}): ${getErrorMessage(error)}`,
|
|
74024
74335
|
confirmationDetails: void 0
|
|
@@ -75480,7 +75791,7 @@ var incrementMaxListeners = (eventEmitter, maxListenersIncrement, signal) => {
|
|
|
75480
75791
|
};
|
|
75481
75792
|
|
|
75482
75793
|
// packages/cli/node_modules/execa/lib/ipc/forward.js
|
|
75483
|
-
import { EventEmitter as
|
|
75794
|
+
import { EventEmitter as EventEmitter4 } from "node:events";
|
|
75484
75795
|
|
|
75485
75796
|
// packages/cli/node_modules/execa/lib/ipc/incoming.js
|
|
75486
75797
|
import { once as once2 } from "node:events";
|
|
@@ -75562,7 +75873,7 @@ var getIpcEmitter = (anyProcess, channel, isSubprocess) => {
|
|
|
75562
75873
|
if (IPC_EMITTERS.has(anyProcess)) {
|
|
75563
75874
|
return IPC_EMITTERS.get(anyProcess);
|
|
75564
75875
|
}
|
|
75565
|
-
const ipcEmitter = new
|
|
75876
|
+
const ipcEmitter = new EventEmitter4();
|
|
75566
75877
|
ipcEmitter.connected = true;
|
|
75567
75878
|
IPC_EMITTERS.set(anyProcess, ipcEmitter);
|
|
75568
75879
|
forwardEvents({
|
|
@@ -80257,6 +80568,7 @@ var parseSlashCommand = (query, commands) => {
|
|
|
80257
80568
|
let commandToExecute;
|
|
80258
80569
|
let pathIndex = 0;
|
|
80259
80570
|
const canonicalPath = [];
|
|
80571
|
+
let parentCommand;
|
|
80260
80572
|
for (const part of commandPath) {
|
|
80261
80573
|
let foundCommand = currentCommands.find((cmd) => cmd.name === part);
|
|
80262
80574
|
if (!foundCommand) {
|
|
@@ -80265,6 +80577,7 @@ var parseSlashCommand = (query, commands) => {
|
|
|
80265
80577
|
);
|
|
80266
80578
|
}
|
|
80267
80579
|
if (foundCommand) {
|
|
80580
|
+
parentCommand = commandToExecute;
|
|
80268
80581
|
commandToExecute = foundCommand;
|
|
80269
80582
|
canonicalPath.push(foundCommand.name);
|
|
80270
80583
|
pathIndex++;
|
|
@@ -80278,6 +80591,13 @@ var parseSlashCommand = (query, commands) => {
|
|
|
80278
80591
|
}
|
|
80279
80592
|
}
|
|
80280
80593
|
const args = parts.slice(pathIndex).join(" ");
|
|
80594
|
+
if (commandToExecute && commandToExecute.takesArgs === false && args.length > 0 && parentCommand && parentCommand.action) {
|
|
80595
|
+
return {
|
|
80596
|
+
commandToExecute: parentCommand,
|
|
80597
|
+
args: parts.slice(pathIndex - 1).join(" "),
|
|
80598
|
+
canonicalPath: canonicalPath.slice(0, -1)
|
|
80599
|
+
};
|
|
80600
|
+
}
|
|
80281
80601
|
return { commandToExecute, args, canonicalPath };
|
|
80282
80602
|
};
|
|
80283
80603
|
|
|
@@ -82221,7 +82541,7 @@ async function openFileInEditor(filePath, stdin, setRawMode, preferredEditorType
|
|
|
82221
82541
|
if (wasRaw) {
|
|
82222
82542
|
setRawMode?.(true);
|
|
82223
82543
|
}
|
|
82224
|
-
coreEvents.emit(
|
|
82544
|
+
coreEvents.emit("external-editor-closed" /* ExternalEditorClosed */);
|
|
82225
82545
|
}
|
|
82226
82546
|
}
|
|
82227
82547
|
|
|
@@ -84900,7 +85220,7 @@ async function updateExtension(extension, extensionManager, currentState, dispat
|
|
|
84900
85220
|
extension.name,
|
|
84901
85221
|
installMetadata
|
|
84902
85222
|
);
|
|
84903
|
-
if (status ===
|
|
85223
|
+
if (status === "invalid" /* INVALID */) {
|
|
84904
85224
|
throw new Error("Extension integrity cannot be verified");
|
|
84905
85225
|
}
|
|
84906
85226
|
} catch (e) {
|
|
@@ -85274,11 +85594,11 @@ var useSessionBrowser = (config, onLoadHistory) => {
|
|
|
85274
85594
|
* Deletes a session by ID using the ChatRecordingService.
|
|
85275
85595
|
*/
|
|
85276
85596
|
handleDeleteSession: (0, import_react41.useCallback)(
|
|
85277
|
-
(session) => {
|
|
85597
|
+
async (session) => {
|
|
85278
85598
|
try {
|
|
85279
85599
|
const chatRecordingService = config.getGeminiClient()?.getChatRecordingService();
|
|
85280
85600
|
if (chatRecordingService) {
|
|
85281
|
-
chatRecordingService.deleteSession(session.file);
|
|
85601
|
+
await chatRecordingService.deleteSession(session.file);
|
|
85282
85602
|
}
|
|
85283
85603
|
} catch (error) {
|
|
85284
85604
|
coreEvents.emitFeedback("error", "Error deleting session:", error);
|
|
@@ -85737,7 +86057,7 @@ async function initializeApp(config, settings) {
|
|
|
85737
86057
|
await ideClient.connect();
|
|
85738
86058
|
logIdeConnection(
|
|
85739
86059
|
config,
|
|
85740
|
-
new IdeConnectionEvent(
|
|
86060
|
+
new IdeConnectionEvent("start" /* START */)
|
|
85741
86061
|
);
|
|
85742
86062
|
}).catch((e) => {
|
|
85743
86063
|
debugLogger.error("Failed to initialize IDE client:", e);
|
|
@@ -85755,16 +86075,16 @@ async function initializeApp(config, settings) {
|
|
|
85755
86075
|
// packages/cli/src/config/auth.ts
|
|
85756
86076
|
function validateAuthMethod(authMethod) {
|
|
85757
86077
|
loadEnvironment(loadSettings().merged, process.cwd());
|
|
85758
|
-
if (authMethod ===
|
|
86078
|
+
if (authMethod === "oauth-personal" /* LOGIN_WITH_GOOGLE */ || authMethod === "compute-default-credentials" /* COMPUTE_ADC */) {
|
|
85759
86079
|
return null;
|
|
85760
86080
|
}
|
|
85761
|
-
if (authMethod ===
|
|
86081
|
+
if (authMethod === "gemini-api-key" /* USE_GEMINI */) {
|
|
85762
86082
|
if (!process.env["GEMINI_API_KEY"]) {
|
|
85763
86083
|
return "When using Gemini API, you must specify the GEMINI_API_KEY environment variable.\nUpdate your environment and try again (no reload needed if using .env)!";
|
|
85764
86084
|
}
|
|
85765
86085
|
return null;
|
|
85766
86086
|
}
|
|
85767
|
-
if (authMethod ===
|
|
86087
|
+
if (authMethod === "vertex-ai" /* USE_VERTEX_AI */) {
|
|
85768
86088
|
const hasVertexProjectLocationConfig = !!process.env["GOOGLE_CLOUD_PROJECT"] && !!process.env["GOOGLE_CLOUD_LOCATION"];
|
|
85769
86089
|
const hasGoogleApiKey = !!process.env["GOOGLE_API_KEY"];
|
|
85770
86090
|
if (!hasVertexProjectLocationConfig && !hasGoogleApiKey) {
|
|
@@ -87735,7 +88055,7 @@ var authCommand = {
|
|
|
87735
88055
|
import process34 from "node:process";
|
|
87736
88056
|
|
|
87737
88057
|
// packages/cli/src/generated/git-commit.ts
|
|
87738
|
-
var GIT_COMMIT_INFO = "
|
|
88058
|
+
var GIT_COMMIT_INFO = "d9d51ba15";
|
|
87739
88059
|
|
|
87740
88060
|
// packages/cli/src/ui/utils/historyExportUtils.ts
|
|
87741
88061
|
import * as fsPromises2 from "node:fs/promises";
|
|
@@ -87934,6 +88254,7 @@ var listCommand = {
|
|
|
87934
88254
|
description: "List saved manual conversation checkpoints",
|
|
87935
88255
|
kind: "built-in" /* BUILT_IN */,
|
|
87936
88256
|
autoExecute: true,
|
|
88257
|
+
takesArgs: false,
|
|
87937
88258
|
action: async (context) => {
|
|
87938
88259
|
const chatDetails = await getSavedChatTags(context, false);
|
|
87939
88260
|
const item = {
|
|
@@ -88220,10 +88541,18 @@ var chatCommand = {
|
|
|
88220
88541
|
description: "Browse auto-saved conversations and manage chat checkpoints",
|
|
88221
88542
|
kind: "built-in" /* BUILT_IN */,
|
|
88222
88543
|
autoExecute: true,
|
|
88223
|
-
action: async () =>
|
|
88224
|
-
|
|
88225
|
-
|
|
88226
|
-
|
|
88544
|
+
action: async (context, args) => {
|
|
88545
|
+
if (args) {
|
|
88546
|
+
const parsed = parseSlashCommand(`/${args}`, chatResumeSubCommands);
|
|
88547
|
+
if (parsed.commandToExecute?.action) {
|
|
88548
|
+
return parsed.commandToExecute.action(context, parsed.args);
|
|
88549
|
+
}
|
|
88550
|
+
}
|
|
88551
|
+
return {
|
|
88552
|
+
type: "dialog",
|
|
88553
|
+
dialog: "sessionBrowser"
|
|
88554
|
+
};
|
|
88555
|
+
},
|
|
88227
88556
|
subCommands: chatResumeSubCommands
|
|
88228
88557
|
};
|
|
88229
88558
|
|
|
@@ -88239,7 +88568,7 @@ var clearCommand = {
|
|
|
88239
88568
|
const config = context.services.agentContext?.config;
|
|
88240
88569
|
const hookSystem = config?.getHookSystem();
|
|
88241
88570
|
if (hookSystem) {
|
|
88242
|
-
await hookSystem.fireSessionEndEvent(
|
|
88571
|
+
await hookSystem.fireSessionEndEvent("clear" /* Clear */);
|
|
88243
88572
|
}
|
|
88244
88573
|
config?.injectionService.clear();
|
|
88245
88574
|
let newSessionId;
|
|
@@ -88249,13 +88578,14 @@ var clearCommand = {
|
|
|
88249
88578
|
}
|
|
88250
88579
|
if (geminiClient) {
|
|
88251
88580
|
context.ui.setDebugMessage("Clearing terminal and resetting chat.");
|
|
88581
|
+
await resetBrowserSession();
|
|
88252
88582
|
await geminiClient.resetChat();
|
|
88253
88583
|
} else {
|
|
88254
88584
|
context.ui.setDebugMessage("Clearing terminal.");
|
|
88255
88585
|
}
|
|
88256
88586
|
let result;
|
|
88257
88587
|
if (hookSystem) {
|
|
88258
|
-
result = await hookSystem.fireSessionStartEvent(
|
|
88588
|
+
result = await hookSystem.fireSessionStartEvent("clear" /* Clear */);
|
|
88259
88589
|
}
|
|
88260
88590
|
await new Promise((resolve9) => setImmediate(resolve9));
|
|
88261
88591
|
if (config) {
|
|
@@ -89426,7 +89756,9 @@ function ExtensionDetails({
|
|
|
89426
89756
|
onBack,
|
|
89427
89757
|
onInstall,
|
|
89428
89758
|
onLink,
|
|
89429
|
-
isInstalled
|
|
89759
|
+
isInstalled,
|
|
89760
|
+
updateState,
|
|
89761
|
+
onUpdate
|
|
89430
89762
|
}) {
|
|
89431
89763
|
const keyMatchers = useKeyMatchers();
|
|
89432
89764
|
const [consentRequest, setConsentRequest] = (0, import_react55.useState)(null);
|
|
@@ -89461,7 +89793,7 @@ function ExtensionDetails({
|
|
|
89461
89793
|
);
|
|
89462
89794
|
return true;
|
|
89463
89795
|
}
|
|
89464
|
-
if (
|
|
89796
|
+
if (keyMatchers["extension.link" /* LINK_EXTENSION */](key) && isLinkable && !isInstalled && !isInstalling) {
|
|
89465
89797
|
setIsInstalling(true);
|
|
89466
89798
|
void onLink(
|
|
89467
89799
|
(prompt) => new Promise((resolve9) => {
|
|
@@ -89470,6 +89802,10 @@ function ExtensionDetails({
|
|
|
89470
89802
|
);
|
|
89471
89803
|
return true;
|
|
89472
89804
|
}
|
|
89805
|
+
if (keyMatchers["extension.update" /* UPDATE_EXTENSION */](key) && updateState === "update available" /* UPDATE_AVAILABLE */ && !isInstalling) {
|
|
89806
|
+
void onUpdate?.();
|
|
89807
|
+
return true;
|
|
89808
|
+
}
|
|
89473
89809
|
return false;
|
|
89474
89810
|
},
|
|
89475
89811
|
{ isActive: true, priority: true }
|
|
@@ -89533,7 +89869,9 @@ function ExtensionDetails({
|
|
|
89533
89869
|
">",
|
|
89534
89870
|
" "
|
|
89535
89871
|
] }),
|
|
89536
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.text.primary, bold: true, children: extension.extensionName })
|
|
89872
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.text.primary, bold: true, children: extension.extensionName }),
|
|
89873
|
+
updateState === "update available" /* UPDATE_AVAILABLE */ && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box_default, { marginLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.status.warning, children: "[I] Update" }) }),
|
|
89874
|
+
updateState === "updating" /* UPDATING */ && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box_default, { marginLeft: 1, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.text.secondary, children: "[Updating...]" }) })
|
|
89537
89875
|
] }),
|
|
89538
89876
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Box_default, { flexDirection: "row", children: [
|
|
89539
89877
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Text, { color: theme.text.secondary, children: [
|
|
@@ -89614,7 +89952,7 @@ function ExtensionDetails({
|
|
|
89614
89952
|
]
|
|
89615
89953
|
}
|
|
89616
89954
|
),
|
|
89617
|
-
isInstalled && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box_default, { flexDirection: "row", marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.status.success, children: "Already Installed" }) })
|
|
89955
|
+
isInstalled && updateState !== "updating" /* UPDATING */ && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box_default, { flexDirection: "row", marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Text, { color: theme.status.success, children: "Already Installed" }) })
|
|
89618
89956
|
]
|
|
89619
89957
|
}
|
|
89620
89958
|
);
|
|
@@ -89633,11 +89971,11 @@ function ExtensionRegistryView({
|
|
|
89633
89971
|
"",
|
|
89634
89972
|
config.getExtensionRegistryURI()
|
|
89635
89973
|
);
|
|
89636
|
-
const { terminalHeight, staticExtraHeight } = useUIState();
|
|
89974
|
+
const { terminalHeight, staticExtraHeight, historyManager } = useUIState();
|
|
89637
89975
|
const [selectedExtension, setSelectedExtension] = (0, import_react56.useState)(null);
|
|
89638
|
-
const { extensionsUpdateState } = useExtensionUpdates(
|
|
89976
|
+
const { extensionsUpdateState, dispatchExtensionStateUpdate } = useExtensionUpdates(
|
|
89639
89977
|
extensionManager,
|
|
89640
|
-
|
|
89978
|
+
historyManager.addItem,
|
|
89641
89979
|
config.getEnableExtensionReloading()
|
|
89642
89980
|
);
|
|
89643
89981
|
const [installedExtensions, setInstalledExtensions] = (0, import_react56.useState)(
|
|
@@ -89674,6 +90012,21 @@ function ExtensionRegistryView({
|
|
|
89674
90012
|
},
|
|
89675
90013
|
[onLink, extensionManager]
|
|
89676
90014
|
);
|
|
90015
|
+
const handleUpdate = (0, import_react56.useCallback)(
|
|
90016
|
+
async (extension) => {
|
|
90017
|
+
dispatchExtensionStateUpdate({
|
|
90018
|
+
type: "SCHEDULE_UPDATE",
|
|
90019
|
+
payload: {
|
|
90020
|
+
all: false,
|
|
90021
|
+
names: [extension.extensionName],
|
|
90022
|
+
onComplete: () => {
|
|
90023
|
+
setInstalledExtensions(extensionManager.getExtensions());
|
|
90024
|
+
}
|
|
90025
|
+
}
|
|
90026
|
+
});
|
|
90027
|
+
},
|
|
90028
|
+
[dispatchExtensionStateUpdate, extensionManager]
|
|
90029
|
+
);
|
|
89677
90030
|
const renderItem = (0, import_react56.useCallback)(
|
|
89678
90031
|
(item, isActive, _labelWidth) => {
|
|
89679
90032
|
const isInstalled = installedExtensions.some(
|
|
@@ -89682,7 +90035,6 @@ function ExtensionRegistryView({
|
|
|
89682
90035
|
const updateState = extensionsUpdateState.get(
|
|
89683
90036
|
item.extension.extensionName
|
|
89684
90037
|
);
|
|
89685
|
-
const hasUpdate = updateState === "update available" /* UPDATE_AVAILABLE */;
|
|
89686
90038
|
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Box_default, { flexDirection: "row", width: "100%", justifyContent: "space-between", children: [
|
|
89687
90039
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Box_default, { flexDirection: "row", flexShrink: 1, minWidth: 0, children: [
|
|
89688
90040
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { width: 2, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
@@ -89701,8 +90053,7 @@ function ExtensionRegistryView({
|
|
|
89701
90053
|
}
|
|
89702
90054
|
) }),
|
|
89703
90055
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { flexShrink: 0, marginX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.text.secondary, children: "|" }) }),
|
|
89704
|
-
isInstalled && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { marginRight: 1, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.status.success, children: "[Installed]" }) }),
|
|
89705
|
-
hasUpdate && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { marginRight: 1, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.status.warning, children: "[Update available]" }) }),
|
|
90056
|
+
updateState === "update available" /* UPDATE_AVAILABLE */ ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { marginRight: 1, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.status.warning, children: "[Update available]" }) }) : updateState === "updating" /* UPDATING */ ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { marginRight: 1, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.text.secondary, children: "[Updating...]" }) }) : isInstalled && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { marginRight: 1, flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.status.success, children: "[Installed]" }) }),
|
|
89706
90057
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box_default, { flexShrink: 1, minWidth: 0, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { color: theme.text.secondary, wrap: "truncate-end", children: item.description }) })
|
|
89707
90058
|
] }),
|
|
89708
90059
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Box_default, { flexShrink: 0, marginLeft: 2, width: 8, flexDirection: "row", children: [
|
|
@@ -89802,7 +90153,13 @@ function ExtensionRegistryView({
|
|
|
89802
90153
|
},
|
|
89803
90154
|
isInstalled: installedExtensions.some(
|
|
89804
90155
|
(e) => e.name === selectedExtension.extensionName
|
|
89805
|
-
)
|
|
90156
|
+
),
|
|
90157
|
+
updateState: extensionsUpdateState.get(
|
|
90158
|
+
selectedExtension.extensionName
|
|
90159
|
+
),
|
|
90160
|
+
onUpdate: async () => {
|
|
90161
|
+
await handleUpdate(selectedExtension);
|
|
90162
|
+
}
|
|
89806
90163
|
}
|
|
89807
90164
|
)
|
|
89808
90165
|
] });
|
|
@@ -90417,6 +90774,7 @@ var listExtensionsCommand = {
|
|
|
90417
90774
|
description: "List active extensions",
|
|
90418
90775
|
kind: "built-in" /* BUILT_IN */,
|
|
90419
90776
|
autoExecute: true,
|
|
90777
|
+
takesArgs: false,
|
|
90420
90778
|
action: listAction2
|
|
90421
90779
|
};
|
|
90422
90780
|
var updateExtensionsCommand = {
|
|
@@ -90470,6 +90828,7 @@ var exploreExtensionsCommand = {
|
|
|
90470
90828
|
description: "Open extensions page in your browser",
|
|
90471
90829
|
kind: "built-in" /* BUILT_IN */,
|
|
90472
90830
|
autoExecute: true,
|
|
90831
|
+
takesArgs: false,
|
|
90473
90832
|
action: exploreAction
|
|
90474
90833
|
};
|
|
90475
90834
|
var reloadCommand = {
|
|
@@ -90497,26 +90856,35 @@ function extensionsCommand(enableExtensionReloading) {
|
|
|
90497
90856
|
linkCommand,
|
|
90498
90857
|
configCommand2
|
|
90499
90858
|
] : [];
|
|
90859
|
+
const subCommands = [
|
|
90860
|
+
listExtensionsCommand,
|
|
90861
|
+
updateExtensionsCommand,
|
|
90862
|
+
exploreExtensionsCommand,
|
|
90863
|
+
reloadCommand,
|
|
90864
|
+
...conditionalCommands
|
|
90865
|
+
];
|
|
90500
90866
|
return {
|
|
90501
90867
|
name: "extensions",
|
|
90502
90868
|
description: "Manage extensions",
|
|
90503
90869
|
kind: "built-in" /* BUILT_IN */,
|
|
90504
90870
|
autoExecute: false,
|
|
90505
|
-
subCommands
|
|
90506
|
-
|
|
90507
|
-
|
|
90508
|
-
|
|
90509
|
-
|
|
90510
|
-
|
|
90511
|
-
|
|
90512
|
-
|
|
90513
|
-
|
|
90514
|
-
|
|
90515
|
-
)
|
|
90871
|
+
subCommands,
|
|
90872
|
+
action: async (context, args) => {
|
|
90873
|
+
if (args) {
|
|
90874
|
+
const parsed = parseSlashCommand(`/${args}`, subCommands);
|
|
90875
|
+
if (parsed.commandToExecute?.action) {
|
|
90876
|
+
return parsed.commandToExecute.action(context, parsed.args);
|
|
90877
|
+
}
|
|
90878
|
+
}
|
|
90879
|
+
return listExtensionsCommand.action(context, args);
|
|
90880
|
+
}
|
|
90516
90881
|
};
|
|
90517
90882
|
}
|
|
90518
90883
|
|
|
90519
90884
|
// packages/cli/src/ui/components/FooterConfigDialog.tsx
|
|
90885
|
+
var import_react60 = __toESM(require_react(), 1);
|
|
90886
|
+
|
|
90887
|
+
// packages/cli/src/ui/components/Footer.tsx
|
|
90520
90888
|
var import_react59 = __toESM(require_react(), 1);
|
|
90521
90889
|
|
|
90522
90890
|
// packages/cli/src/ui/components/ConsoleSummaryDisplay.tsx
|
|
@@ -90546,12 +90914,13 @@ import process38 from "node:process";
|
|
|
90546
90914
|
var import_react58 = __toESM(require_react(), 1);
|
|
90547
90915
|
import process37 from "node:process";
|
|
90548
90916
|
var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
|
|
90549
|
-
var MemoryUsageDisplay = ({
|
|
90550
|
-
color = theme.text.primary
|
|
90551
|
-
}) => {
|
|
90917
|
+
var MemoryUsageDisplay = ({ color = theme.text.primary, isActive = true }) => {
|
|
90552
90918
|
const [memoryUsage, setMemoryUsage] = (0, import_react58.useState)("");
|
|
90553
90919
|
const [memoryUsageColor, setMemoryUsageColor] = (0, import_react58.useState)(color);
|
|
90554
90920
|
(0, import_react58.useEffect)(() => {
|
|
90921
|
+
if (!isActive) {
|
|
90922
|
+
return;
|
|
90923
|
+
}
|
|
90555
90924
|
const updateMemory = () => {
|
|
90556
90925
|
const usage = process37.memoryUsage().rss;
|
|
90557
90926
|
setMemoryUsage(formatBytes(usage));
|
|
@@ -90562,7 +90931,7 @@ var MemoryUsageDisplay = ({
|
|
|
90562
90931
|
const intervalId = setInterval(updateMemory, 2e3);
|
|
90563
90932
|
updateMemory();
|
|
90564
90933
|
return () => clearInterval(intervalId);
|
|
90565
|
-
}, [color]);
|
|
90934
|
+
}, [color, isActive]);
|
|
90566
90935
|
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Text, { color: memoryUsageColor, children: memoryUsage }) });
|
|
90567
90936
|
};
|
|
90568
90937
|
|
|
@@ -90712,6 +91081,11 @@ var ALL_ITEMS = [
|
|
|
90712
91081
|
header: "session",
|
|
90713
91082
|
description: "Unique identifier for the current session"
|
|
90714
91083
|
},
|
|
91084
|
+
{
|
|
91085
|
+
id: "auth",
|
|
91086
|
+
header: "/auth",
|
|
91087
|
+
description: "Current authentication info"
|
|
91088
|
+
},
|
|
90715
91089
|
{
|
|
90716
91090
|
id: "code-changes",
|
|
90717
91091
|
header: "diff",
|
|
@@ -90732,6 +91106,7 @@ var DEFAULT_ORDER = [
|
|
|
90732
91106
|
"quota",
|
|
90733
91107
|
"memory-usage",
|
|
90734
91108
|
"session-id",
|
|
91109
|
+
"auth",
|
|
90735
91110
|
"code-changes",
|
|
90736
91111
|
"token-count"
|
|
90737
91112
|
];
|
|
@@ -90765,8 +91140,12 @@ function deriveItemsFromLegacySettings(settings) {
|
|
|
90765
91140
|
}
|
|
90766
91141
|
var VALID_IDS = new Set(ALL_ITEMS.map((i) => i.id));
|
|
90767
91142
|
function resolveFooterState(settings) {
|
|
90768
|
-
const
|
|
90769
|
-
const
|
|
91143
|
+
const showUserIdentity = settings.ui?.showUserIdentity !== false;
|
|
91144
|
+
const filteredValidIds = showUserIdentity ? VALID_IDS : new Set([...VALID_IDS].filter((id) => id !== "auth"));
|
|
91145
|
+
const source = (settings.ui?.footer?.items ?? deriveItemsFromLegacySettings(settings)).filter((id) => filteredValidIds.has(id));
|
|
91146
|
+
const others = DEFAULT_ORDER.filter(
|
|
91147
|
+
(id) => !source.includes(id) && filteredValidIds.has(id)
|
|
91148
|
+
);
|
|
90770
91149
|
return {
|
|
90771
91150
|
orderedIds: [...source, ...others],
|
|
90772
91151
|
selectedIds: new Set(source)
|
|
@@ -90869,11 +91248,26 @@ var FooterRow = ({ items, showLabels }) => {
|
|
|
90869
91248
|
function isFooterItemId(id) {
|
|
90870
91249
|
return ALL_ITEMS.some((i) => i.id === id);
|
|
90871
91250
|
}
|
|
90872
|
-
var Footer = (
|
|
91251
|
+
var Footer = ({
|
|
91252
|
+
copyModeEnabled = false
|
|
91253
|
+
}) => {
|
|
90873
91254
|
const uiState = useUIState();
|
|
90874
91255
|
const config = useConfig();
|
|
90875
91256
|
const settings = useSettings();
|
|
90876
91257
|
const { vimEnabled, vimMode } = useVimMode();
|
|
91258
|
+
const authType = config.getContentGeneratorConfig()?.authType;
|
|
91259
|
+
const [email, setEmail] = (0, import_react59.useState)();
|
|
91260
|
+
(0, import_react59.useEffect)(() => {
|
|
91261
|
+
if (authType) {
|
|
91262
|
+
const userAccountManager = new UserAccountManager();
|
|
91263
|
+
setEmail(userAccountManager.getCachedGoogleAccount() ?? void 0);
|
|
91264
|
+
} else {
|
|
91265
|
+
setEmail(void 0);
|
|
91266
|
+
}
|
|
91267
|
+
}, [authType]);
|
|
91268
|
+
if (copyModeEnabled) {
|
|
91269
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box_default, { height: 1 });
|
|
91270
|
+
}
|
|
90877
91271
|
const {
|
|
90878
91272
|
model,
|
|
90879
91273
|
targetDir,
|
|
@@ -91031,7 +91425,18 @@ var Footer = () => {
|
|
|
91031
91425
|
break;
|
|
91032
91426
|
}
|
|
91033
91427
|
case "memory-usage": {
|
|
91034
|
-
addCol(
|
|
91428
|
+
addCol(
|
|
91429
|
+
id,
|
|
91430
|
+
header,
|
|
91431
|
+
() => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
91432
|
+
MemoryUsageDisplay,
|
|
91433
|
+
{
|
|
91434
|
+
color: itemColor,
|
|
91435
|
+
isActive: !uiState.copyModeEnabled
|
|
91436
|
+
}
|
|
91437
|
+
),
|
|
91438
|
+
10
|
|
91439
|
+
);
|
|
91035
91440
|
break;
|
|
91036
91441
|
}
|
|
91037
91442
|
case "session-id": {
|
|
@@ -91043,6 +91448,18 @@ var Footer = () => {
|
|
|
91043
91448
|
);
|
|
91044
91449
|
break;
|
|
91045
91450
|
}
|
|
91451
|
+
case "auth": {
|
|
91452
|
+
if (!settings.merged.ui.showUserIdentity) break;
|
|
91453
|
+
if (!authType) break;
|
|
91454
|
+
const displayStr = authType === "oauth-personal" /* LOGIN_WITH_GOOGLE */ ? email ?? "google" : authType;
|
|
91455
|
+
addCol(
|
|
91456
|
+
id,
|
|
91457
|
+
header,
|
|
91458
|
+
() => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text, { color: itemColor, wrap: "truncate-end", children: displayStr }),
|
|
91459
|
+
displayStr.length
|
|
91460
|
+
);
|
|
91461
|
+
break;
|
|
91462
|
+
}
|
|
91046
91463
|
case "code-changes": {
|
|
91047
91464
|
const added = uiState.sessionStats.metrics.files.totalLinesAdded;
|
|
91048
91465
|
const removed = uiState.sessionStats.metrics.files.totalLinesRemoved;
|
|
@@ -91190,14 +91607,14 @@ var FooterConfigDialog = ({
|
|
|
91190
91607
|
const keyMatchers = useKeyMatchers();
|
|
91191
91608
|
const { settings, setSetting } = useSettingsStore();
|
|
91192
91609
|
const { constrainHeight, terminalHeight, staticExtraHeight } = useUIState();
|
|
91193
|
-
const [state, dispatch] = (0,
|
|
91610
|
+
const [state, dispatch] = (0, import_react60.useReducer)(
|
|
91194
91611
|
footerConfigReducer,
|
|
91195
91612
|
void 0,
|
|
91196
91613
|
() => resolveFooterState(settings.merged)
|
|
91197
91614
|
);
|
|
91198
91615
|
const { orderedIds, selectedIds } = state;
|
|
91199
|
-
const [focusKey, setFocusKey] = (0,
|
|
91200
|
-
const listItems = (0,
|
|
91616
|
+
const [focusKey, setFocusKey] = (0, import_react60.useState)(orderedIds[0]);
|
|
91617
|
+
const listItems = (0, import_react60.useMemo)(() => {
|
|
91201
91618
|
const items = orderedIds.map((id) => {
|
|
91202
91619
|
const item = ALL_ITEMS.find((i) => i.id === id);
|
|
91203
91620
|
if (!item) return null;
|
|
@@ -91232,7 +91649,7 @@ var FooterConfigDialog = ({
|
|
|
91232
91649
|
});
|
|
91233
91650
|
return items;
|
|
91234
91651
|
}, [orderedIds]);
|
|
91235
|
-
const handleSaveAndClose = (0,
|
|
91652
|
+
const handleSaveAndClose = (0, import_react60.useCallback)(() => {
|
|
91236
91653
|
const finalItems = orderedIds.filter((id) => selectedIds.has(id));
|
|
91237
91654
|
const currentSetting = settings.merged.ui?.footer?.items;
|
|
91238
91655
|
if (JSON.stringify(finalItems) !== JSON.stringify(currentSetting)) {
|
|
@@ -91246,17 +91663,17 @@ var FooterConfigDialog = ({
|
|
|
91246
91663
|
settings.merged.ui?.footer?.items,
|
|
91247
91664
|
onClose
|
|
91248
91665
|
]);
|
|
91249
|
-
const handleResetToDefaults = (0,
|
|
91666
|
+
const handleResetToDefaults = (0, import_react60.useCallback)(() => {
|
|
91250
91667
|
setSetting("User" /* User */, "ui.footer.items", void 0);
|
|
91251
91668
|
const newState = resolveFooterState(settings.merged);
|
|
91252
91669
|
dispatch({ type: "SET_STATE", payload: newState });
|
|
91253
91670
|
setFocusKey(newState.orderedIds[0]);
|
|
91254
91671
|
}, [setSetting, settings.merged]);
|
|
91255
|
-
const handleToggleLabels = (0,
|
|
91672
|
+
const handleToggleLabels = (0, import_react60.useCallback)(() => {
|
|
91256
91673
|
const current = settings.merged.ui.footer.showLabels !== false;
|
|
91257
91674
|
setSetting("User" /* User */, "ui.footer.showLabels", !current);
|
|
91258
91675
|
}, [setSetting, settings.merged.ui.footer.showLabels]);
|
|
91259
|
-
const handleSelect = (0,
|
|
91676
|
+
const handleSelect = (0, import_react60.useCallback)(
|
|
91260
91677
|
(item) => {
|
|
91261
91678
|
if (item.type === "config") {
|
|
91262
91679
|
dispatch({ type: "TOGGLE_ITEM", id: item.id });
|
|
@@ -91268,7 +91685,7 @@ var FooterConfigDialog = ({
|
|
|
91268
91685
|
},
|
|
91269
91686
|
[handleResetToDefaults, handleToggleLabels]
|
|
91270
91687
|
);
|
|
91271
|
-
const handleHighlight = (0,
|
|
91688
|
+
const handleHighlight = (0, import_react60.useCallback)((item) => {
|
|
91272
91689
|
setFocusKey(item.key);
|
|
91273
91690
|
}, []);
|
|
91274
91691
|
useKeypress(
|
|
@@ -91294,7 +91711,7 @@ var FooterConfigDialog = ({
|
|
|
91294
91711
|
{ isActive: true, priority: true }
|
|
91295
91712
|
);
|
|
91296
91713
|
const showLabels = settings.merged.ui.footer.showLabels !== false;
|
|
91297
|
-
const previewContent = (0,
|
|
91714
|
+
const previewContent = (0, import_react60.useMemo)(() => {
|
|
91298
91715
|
if (focusKey === "reset") {
|
|
91299
91716
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: theme.ui.comment, italic: true, children: "Default footer (uses legacy settings)" });
|
|
91300
91717
|
}
|
|
@@ -91318,6 +91735,7 @@ var FooterConfigDialog = ({
|
|
|
91318
91735
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: getColor("code-changes"), children: " " }),
|
|
91319
91736
|
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: getColor("code-changes", theme.status.error), children: "-4" })
|
|
91320
91737
|
] }),
|
|
91738
|
+
auth: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: getColor("auth", itemColor), children: "test@example.com" }),
|
|
91321
91739
|
"token-count": /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Text, { color: getColor("token-count", itemColor), children: "1.5k tokens" })
|
|
91322
91740
|
};
|
|
91323
91741
|
const rowItems = itemsToPreview.filter((id) => mockData[id]).map((id) => ({
|
|
@@ -91475,10 +91893,10 @@ var shortcutsCommand = {
|
|
|
91475
91893
|
};
|
|
91476
91894
|
|
|
91477
91895
|
// packages/cli/src/ui/components/RewindViewer.tsx
|
|
91478
|
-
var
|
|
91896
|
+
var import_react63 = __toESM(require_react(), 1);
|
|
91479
91897
|
|
|
91480
91898
|
// packages/cli/src/ui/hooks/useRewind.ts
|
|
91481
|
-
var
|
|
91899
|
+
var import_react61 = __toESM(require_react(), 1);
|
|
91482
91900
|
|
|
91483
91901
|
// packages/cli/src/ui/utils/rewindFileOps.ts
|
|
91484
91902
|
import fs38 from "node:fs/promises";
|
|
@@ -91631,15 +92049,15 @@ async function revertFileChanges(conversation, targetMessageId) {
|
|
|
91631
92049
|
|
|
91632
92050
|
// packages/cli/src/ui/hooks/useRewind.ts
|
|
91633
92051
|
function useRewind(conversation) {
|
|
91634
|
-
const [selectedMessageId, setSelectedMessageId] = (0,
|
|
92052
|
+
const [selectedMessageId, setSelectedMessageId] = (0, import_react61.useState)(
|
|
91635
92053
|
null
|
|
91636
92054
|
);
|
|
91637
|
-
const [confirmationStats, setConfirmationStats] = (0,
|
|
91638
|
-
const getStats = (0,
|
|
92055
|
+
const [confirmationStats, setConfirmationStats] = (0, import_react61.useState)(null);
|
|
92056
|
+
const getStats = (0, import_react61.useCallback)(
|
|
91639
92057
|
(userMessage) => calculateTurnStats(conversation, userMessage),
|
|
91640
92058
|
[conversation]
|
|
91641
92059
|
);
|
|
91642
|
-
const selectMessage = (0,
|
|
92060
|
+
const selectMessage = (0, import_react61.useCallback)(
|
|
91643
92061
|
(messageId) => {
|
|
91644
92062
|
const msg = conversation.messages.find((m2) => m2.id === messageId);
|
|
91645
92063
|
if (msg) {
|
|
@@ -91649,7 +92067,7 @@ function useRewind(conversation) {
|
|
|
91649
92067
|
},
|
|
91650
92068
|
[conversation]
|
|
91651
92069
|
);
|
|
91652
|
-
const clearSelection = (0,
|
|
92070
|
+
const clearSelection = (0, import_react61.useCallback)(() => {
|
|
91653
92071
|
setSelectedMessageId(null);
|
|
91654
92072
|
setConfirmationStats(null);
|
|
91655
92073
|
}, []);
|
|
@@ -91663,7 +92081,7 @@ function useRewind(conversation) {
|
|
|
91663
92081
|
}
|
|
91664
92082
|
|
|
91665
92083
|
// packages/cli/src/ui/components/RewindConfirmation.tsx
|
|
91666
|
-
var
|
|
92084
|
+
var import_react62 = __toESM(require_react(), 1);
|
|
91667
92085
|
var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
|
|
91668
92086
|
var REWIND_OPTIONS = [
|
|
91669
92087
|
{
|
|
@@ -91708,7 +92126,7 @@ var RewindConfirmation = ({
|
|
|
91708
92126
|
const handleSelect = (outcome) => {
|
|
91709
92127
|
onConfirm(outcome);
|
|
91710
92128
|
};
|
|
91711
|
-
const options = (0,
|
|
92129
|
+
const options = (0, import_react62.useMemo)(() => {
|
|
91712
92130
|
if (stats) {
|
|
91713
92131
|
return REWIND_OPTIONS;
|
|
91714
92132
|
}
|
|
@@ -91835,7 +92253,7 @@ var RewindViewer = ({
|
|
|
91835
92253
|
onRewind
|
|
91836
92254
|
}) => {
|
|
91837
92255
|
const keyMatchers = useKeyMatchers();
|
|
91838
|
-
const [isRewinding, setIsRewinding] = (0,
|
|
92256
|
+
const [isRewinding, setIsRewinding] = (0, import_react63.useState)(false);
|
|
91839
92257
|
const { terminalWidth, terminalHeight } = useUIState();
|
|
91840
92258
|
const isScreenReaderEnabled = use_is_screen_reader_enabled_default();
|
|
91841
92259
|
const {
|
|
@@ -91845,15 +92263,15 @@ var RewindViewer = ({
|
|
|
91845
92263
|
selectMessage,
|
|
91846
92264
|
clearSelection
|
|
91847
92265
|
} = useRewind(conversation);
|
|
91848
|
-
const [highlightedMessageId, setHighlightedMessageId] = (0,
|
|
91849
|
-
const [expandedMessageId, setExpandedMessageId] = (0,
|
|
92266
|
+
const [highlightedMessageId, setHighlightedMessageId] = (0, import_react63.useState)(null);
|
|
92267
|
+
const [expandedMessageId, setExpandedMessageId] = (0, import_react63.useState)(
|
|
91850
92268
|
null
|
|
91851
92269
|
);
|
|
91852
|
-
const interactions = (0,
|
|
92270
|
+
const interactions = (0, import_react63.useMemo)(
|
|
91853
92271
|
() => conversation.messages.filter((msg) => msg.type === "user"),
|
|
91854
92272
|
[conversation.messages]
|
|
91855
92273
|
);
|
|
91856
|
-
const items = (0,
|
|
92274
|
+
const items = (0, import_react63.useMemo)(() => {
|
|
91857
92275
|
const interactionItems = interactions.map((msg, idx) => ({
|
|
91858
92276
|
key: `${msg.id || "msg"}-${idx}`,
|
|
91859
92277
|
value: msg,
|
|
@@ -92209,7 +92627,7 @@ var rewindCommand = {
|
|
|
92209
92627
|
};
|
|
92210
92628
|
|
|
92211
92629
|
// packages/cli/src/ui/commands/hooksCommand.ts
|
|
92212
|
-
var
|
|
92630
|
+
var import_react65 = __toESM(require_react(), 1);
|
|
92213
92631
|
|
|
92214
92632
|
// packages/cli/src/utils/hookSettings.ts
|
|
92215
92633
|
function enableHook(settings, hookName) {
|
|
@@ -92347,7 +92765,7 @@ function renderHookActionFeedback(result, formatScope) {
|
|
|
92347
92765
|
}
|
|
92348
92766
|
|
|
92349
92767
|
// packages/cli/src/ui/components/HooksDialog.tsx
|
|
92350
|
-
var
|
|
92768
|
+
var import_react64 = __toESM(require_react(), 1);
|
|
92351
92769
|
var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
|
|
92352
92770
|
var DEFAULT_MAX_VISIBLE_HOOKS = 8;
|
|
92353
92771
|
var HooksDialog = ({
|
|
@@ -92356,8 +92774,8 @@ var HooksDialog = ({
|
|
|
92356
92774
|
maxVisibleHooks = DEFAULT_MAX_VISIBLE_HOOKS
|
|
92357
92775
|
}) => {
|
|
92358
92776
|
const keyMatchers = useKeyMatchers();
|
|
92359
|
-
const [scrollOffset, setScrollOffset] = (0,
|
|
92360
|
-
const flattenedHooks = (0,
|
|
92777
|
+
const [scrollOffset, setScrollOffset] = (0, import_react64.useState)(0);
|
|
92778
|
+
const flattenedHooks = (0, import_react64.useMemo)(() => {
|
|
92361
92779
|
const result = [];
|
|
92362
92780
|
const hooksByEvent = hooks.reduce(
|
|
92363
92781
|
(acc, hook) => {
|
|
@@ -92501,7 +92919,7 @@ function panelAction(context) {
|
|
|
92501
92919
|
const allHooks = hookSystem?.getAllHooks() || [];
|
|
92502
92920
|
return {
|
|
92503
92921
|
type: "custom_dialog",
|
|
92504
|
-
component: (0,
|
|
92922
|
+
component: (0, import_react65.createElement)(HooksDialog, {
|
|
92505
92923
|
hooks: allHooks,
|
|
92506
92924
|
onClose: () => context.ui.removeComponent()
|
|
92507
92925
|
})
|
|
@@ -92785,12 +93203,12 @@ import path34 from "node:path";
|
|
|
92785
93203
|
function getIdeStatusMessage(ideClient) {
|
|
92786
93204
|
const connection = ideClient.getConnectionStatus();
|
|
92787
93205
|
switch (connection.status) {
|
|
92788
|
-
case
|
|
93206
|
+
case "connected" /* Connected */:
|
|
92789
93207
|
return {
|
|
92790
93208
|
messageType: "info",
|
|
92791
93209
|
content: `\u{1F7E2} Connected to ${ideClient.getDetectedIdeDisplayName()}`
|
|
92792
93210
|
};
|
|
92793
|
-
case
|
|
93211
|
+
case "connecting" /* Connecting */:
|
|
92794
93212
|
return {
|
|
92795
93213
|
messageType: "info",
|
|
92796
93214
|
content: `\u{1F7E1} Connecting...`
|
|
@@ -92831,7 +93249,7 @@ ${infoMessage}`;
|
|
|
92831
93249
|
async function getIdeStatusMessageWithFiles(ideClient) {
|
|
92832
93250
|
const connection = ideClient.getConnectionStatus();
|
|
92833
93251
|
switch (connection.status) {
|
|
92834
|
-
case
|
|
93252
|
+
case "connected" /* Connected */: {
|
|
92835
93253
|
let content = `\u{1F7E2} Connected to ${ideClient.getDetectedIdeDisplayName()}`;
|
|
92836
93254
|
const context = ideContextStore.get();
|
|
92837
93255
|
const openFiles = context?.workspaceState?.openFiles;
|
|
@@ -92843,7 +93261,7 @@ async function getIdeStatusMessageWithFiles(ideClient) {
|
|
|
92843
93261
|
content
|
|
92844
93262
|
};
|
|
92845
93263
|
}
|
|
92846
|
-
case
|
|
93264
|
+
case "connecting" /* Connecting */:
|
|
92847
93265
|
return {
|
|
92848
93266
|
messageType: "info",
|
|
92849
93267
|
content: `\u{1F7E1} Connecting...`
|
|
@@ -92865,7 +93283,7 @@ async function setIdeModeAndSyncConnection(config, value, options = {}) {
|
|
|
92865
93283
|
const ideClient = await IdeClient.getInstance();
|
|
92866
93284
|
if (value) {
|
|
92867
93285
|
await ideClient.connect(options);
|
|
92868
|
-
logIdeConnection(config, new IdeConnectionEvent(
|
|
93286
|
+
logIdeConnection(config, new IdeConnectionEvent("session" /* SESSION */));
|
|
92869
93287
|
} else {
|
|
92870
93288
|
await ideClient.disconnect();
|
|
92871
93289
|
}
|
|
@@ -92953,7 +93371,7 @@ var ideCommand = async () => {
|
|
|
92953
93371
|
logToConsole: false
|
|
92954
93372
|
}
|
|
92955
93373
|
);
|
|
92956
|
-
if (ideClient.getConnectionStatus().status ===
|
|
93374
|
+
if (ideClient.getConnectionStatus().status === "connected" /* Connected */) {
|
|
92957
93375
|
break;
|
|
92958
93376
|
}
|
|
92959
93377
|
await new Promise((resolve9) => setTimeout(resolve9, 500));
|
|
@@ -93030,7 +93448,7 @@ var ideCommand = async () => {
|
|
|
93030
93448
|
}
|
|
93031
93449
|
};
|
|
93032
93450
|
const { status } = ideClient.getConnectionStatus();
|
|
93033
|
-
const isConnected2 = status ===
|
|
93451
|
+
const isConnected2 = status === "connected" /* Connected */;
|
|
93034
93452
|
if (isConnected2) {
|
|
93035
93453
|
ideSlashCommand.subCommands = [statusCommand, disableCommand5];
|
|
93036
93454
|
} else {
|
|
@@ -93130,13 +93548,13 @@ Use /mcp auth <server-name> to authenticate.`
|
|
|
93130
93548
|
const displayListener = (message) => {
|
|
93131
93549
|
context.ui.addItem({ type: "info", text: message });
|
|
93132
93550
|
};
|
|
93133
|
-
coreEvents.on(
|
|
93551
|
+
coreEvents.on("oauth-display-message" /* OauthDisplayMessage */, displayListener);
|
|
93134
93552
|
try {
|
|
93135
93553
|
context.ui.addItem({
|
|
93136
93554
|
type: "info",
|
|
93137
93555
|
text: `Starting OAuth authentication for MCP server '${serverName}'...`
|
|
93138
93556
|
});
|
|
93139
|
-
const { MCPOAuthProvider } = await import("./
|
|
93557
|
+
const { MCPOAuthProvider } = await import("./core-5OME6LT4.js");
|
|
93140
93558
|
let oauthConfig = server.oauth;
|
|
93141
93559
|
if (!oauthConfig) {
|
|
93142
93560
|
oauthConfig = { enabled: false };
|
|
@@ -93173,7 +93591,7 @@ Use /mcp auth <server-name> to authenticate.`
|
|
|
93173
93591
|
content: `Failed to authenticate with MCP server '${serverName}': ${getErrorMessage(error)}`
|
|
93174
93592
|
};
|
|
93175
93593
|
} finally {
|
|
93176
|
-
coreEvents.removeListener(
|
|
93594
|
+
coreEvents.removeListener("oauth-display-message" /* OauthDisplayMessage */, displayListener);
|
|
93177
93595
|
}
|
|
93178
93596
|
},
|
|
93179
93597
|
completion: async (context, partialArg) => {
|
|
@@ -93186,7 +93604,7 @@ Use /mcp auth <server-name> to authenticate.`
|
|
|
93186
93604
|
);
|
|
93187
93605
|
}
|
|
93188
93606
|
};
|
|
93189
|
-
var listAction3 = async (context, showDescriptions = false, showSchema = false) => {
|
|
93607
|
+
var listAction3 = async (context, showDescriptions = false, showSchema = false, serverNameFilter) => {
|
|
93190
93608
|
const agentContext = context.services.agentContext;
|
|
93191
93609
|
const config = agentContext?.config;
|
|
93192
93610
|
if (!config) {
|
|
@@ -93205,14 +93623,24 @@ var listAction3 = async (context, showDescriptions = false, showSchema = false)
|
|
|
93205
93623
|
content: "Could not retrieve tool registry."
|
|
93206
93624
|
};
|
|
93207
93625
|
}
|
|
93208
|
-
|
|
93209
|
-
const serverNames = Object.keys(mcpServers);
|
|
93626
|
+
let mcpServers = config.getMcpClientManager()?.getMcpServers() || {};
|
|
93210
93627
|
const blockedMcpServers = config.getMcpClientManager()?.getBlockedMcpServers() || [];
|
|
93628
|
+
if (serverNameFilter) {
|
|
93629
|
+
const filter = serverNameFilter.trim().toLowerCase();
|
|
93630
|
+
if (filter) {
|
|
93631
|
+
mcpServers = Object.fromEntries(
|
|
93632
|
+
Object.entries(mcpServers).filter(
|
|
93633
|
+
([name]) => name.toLowerCase().includes(filter) || normalizeServerId(name).includes(filter)
|
|
93634
|
+
)
|
|
93635
|
+
);
|
|
93636
|
+
}
|
|
93637
|
+
}
|
|
93638
|
+
const serverNames = Object.keys(mcpServers);
|
|
93211
93639
|
const connectingServers = serverNames.filter(
|
|
93212
|
-
(name) => getMCPServerStatus(name) ===
|
|
93640
|
+
(name) => getMCPServerStatus(name) === "connecting" /* CONNECTING */
|
|
93213
93641
|
);
|
|
93214
93642
|
const discoveryState = getMCPDiscoveryState();
|
|
93215
|
-
const discoveryInProgress = discoveryState ===
|
|
93643
|
+
const discoveryInProgress = discoveryState === "in_progress" /* IN_PROGRESS */ || connectingServers.length > 0;
|
|
93216
93644
|
const allTools = toolRegistry.getAllTools();
|
|
93217
93645
|
const mcpTools = allTools.filter((tool) => tool instanceof DiscoveredMCPTool);
|
|
93218
93646
|
const promptRegistry = config.getPromptRegistry();
|
|
@@ -93293,7 +93721,7 @@ var listCommand2 = {
|
|
|
93293
93721
|
description: "List configured MCP servers and tools",
|
|
93294
93722
|
kind: "built-in" /* BUILT_IN */,
|
|
93295
93723
|
autoExecute: true,
|
|
93296
|
-
action: (context) => listAction3(context)
|
|
93724
|
+
action: (context, args) => listAction3(context, false, false, args)
|
|
93297
93725
|
};
|
|
93298
93726
|
var descCommand = {
|
|
93299
93727
|
name: "desc",
|
|
@@ -93301,14 +93729,14 @@ var descCommand = {
|
|
|
93301
93729
|
description: "List configured MCP servers and tools with descriptions",
|
|
93302
93730
|
kind: "built-in" /* BUILT_IN */,
|
|
93303
93731
|
autoExecute: true,
|
|
93304
|
-
action: (context) => listAction3(context, true)
|
|
93732
|
+
action: (context, args) => listAction3(context, true, false, args)
|
|
93305
93733
|
};
|
|
93306
93734
|
var schemaCommand = {
|
|
93307
93735
|
name: "schema",
|
|
93308
93736
|
description: "List configured MCP servers and tools with descriptions and schemas",
|
|
93309
93737
|
kind: "built-in" /* BUILT_IN */,
|
|
93310
93738
|
autoExecute: true,
|
|
93311
|
-
action: (context) => listAction3(context, true, true)
|
|
93739
|
+
action: (context, args) => listAction3(context, true, true, args)
|
|
93312
93740
|
};
|
|
93313
93741
|
var reloadCommand2 = {
|
|
93314
93742
|
name: "reload",
|
|
@@ -93316,6 +93744,7 @@ var reloadCommand2 = {
|
|
|
93316
93744
|
description: "Reloads MCP servers",
|
|
93317
93745
|
kind: "built-in" /* BUILT_IN */,
|
|
93318
93746
|
autoExecute: true,
|
|
93747
|
+
takesArgs: false,
|
|
93319
93748
|
action: async (context) => {
|
|
93320
93749
|
const agentContext = context.services.agentContext;
|
|
93321
93750
|
const config = agentContext?.config;
|
|
@@ -93476,7 +93905,16 @@ var mcpCommand = {
|
|
|
93476
93905
|
enableCommand4,
|
|
93477
93906
|
disableCommand4
|
|
93478
93907
|
],
|
|
93479
|
-
action: async (context) =>
|
|
93908
|
+
action: async (context, args) => {
|
|
93909
|
+
if (args) {
|
|
93910
|
+
const parsed = parseSlashCommand(`/${args}`, mcpCommand.subCommands);
|
|
93911
|
+
if (parsed.commandToExecute?.action) {
|
|
93912
|
+
return parsed.commandToExecute.action(context, parsed.args);
|
|
93913
|
+
}
|
|
93914
|
+
return listAction3(context, false, false, args);
|
|
93915
|
+
}
|
|
93916
|
+
return listAction3(context);
|
|
93917
|
+
}
|
|
93480
93918
|
};
|
|
93481
93919
|
|
|
93482
93920
|
// packages/cli/src/ui/commands/memoryCommand.ts
|
|
@@ -93636,7 +94074,7 @@ var modelCommand = {
|
|
|
93636
94074
|
};
|
|
93637
94075
|
|
|
93638
94076
|
// packages/cli/src/ui/components/triage/TriageDuplicates.tsx
|
|
93639
|
-
var
|
|
94077
|
+
var import_react66 = __toESM(require_react(), 1);
|
|
93640
94078
|
var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
|
|
93641
94079
|
var VISIBLE_LINES_COLLAPSED = 6;
|
|
93642
94080
|
var VISIBLE_LINES_EXPANDED = 20;
|
|
@@ -93662,7 +94100,7 @@ var TriageDuplicates = ({
|
|
|
93662
94100
|
initialLimit = 50
|
|
93663
94101
|
}) => {
|
|
93664
94102
|
const keyMatchers = useKeyMatchers();
|
|
93665
|
-
const [state, setState] = (0,
|
|
94103
|
+
const [state, setState] = (0, import_react66.useState)({
|
|
93666
94104
|
status: "loading",
|
|
93667
94105
|
issues: [],
|
|
93668
94106
|
currentIndex: 0,
|
|
@@ -93670,18 +94108,18 @@ var TriageDuplicates = ({
|
|
|
93670
94108
|
analyzingIds: /* @__PURE__ */ new Set(),
|
|
93671
94109
|
message: "Fetching issues..."
|
|
93672
94110
|
});
|
|
93673
|
-
const [focusSection, setFocusSection] = (0,
|
|
93674
|
-
const [selectedCandidateIndex, setSelectedCandidateIndex] = (0,
|
|
93675
|
-
const [targetExpanded, setTargetExpanded] = (0,
|
|
93676
|
-
const [targetScrollOffset, setTargetScrollOffset] = (0,
|
|
93677
|
-
const [candidateScrollOffset, setCandidateScrollOffset] = (0,
|
|
93678
|
-
const [inputAction, setInputAction] = (0,
|
|
93679
|
-
const [processedHistory, setProcessedHistory] = (0,
|
|
94111
|
+
const [focusSection, setFocusSection] = (0, import_react66.useState)("target");
|
|
94112
|
+
const [selectedCandidateIndex, setSelectedCandidateIndex] = (0, import_react66.useState)(0);
|
|
94113
|
+
const [targetExpanded, setTargetExpanded] = (0, import_react66.useState)(false);
|
|
94114
|
+
const [targetScrollOffset, setTargetScrollOffset] = (0, import_react66.useState)(0);
|
|
94115
|
+
const [candidateScrollOffset, setCandidateScrollOffset] = (0, import_react66.useState)(0);
|
|
94116
|
+
const [inputAction, setInputAction] = (0, import_react66.useState)("");
|
|
94117
|
+
const [processedHistory, setProcessedHistory] = (0, import_react66.useState)(
|
|
93680
94118
|
[]
|
|
93681
94119
|
);
|
|
93682
|
-
const [showHistory, setShowHistory] = (0,
|
|
93683
|
-
const [candidateListScrollOffset, setCandidateListScrollOffset] = (0,
|
|
93684
|
-
(0,
|
|
94120
|
+
const [showHistory, setShowHistory] = (0, import_react66.useState)(false);
|
|
94121
|
+
const [candidateListScrollOffset, setCandidateListScrollOffset] = (0, import_react66.useState)(0);
|
|
94122
|
+
(0, import_react66.useEffect)(() => {
|
|
93685
94123
|
if (selectedCandidateIndex < candidateListScrollOffset) {
|
|
93686
94124
|
setCandidateListScrollOffset(selectedCandidateIndex);
|
|
93687
94125
|
} else if (selectedCandidateIndex >= candidateListScrollOffset + VISIBLE_CANDIDATES) {
|
|
@@ -93708,7 +94146,7 @@ var TriageDuplicates = ({
|
|
|
93708
94146
|
return null;
|
|
93709
94147
|
}
|
|
93710
94148
|
};
|
|
93711
|
-
const analyzeIssue = (0,
|
|
94149
|
+
const analyzeIssue = (0, import_react66.useCallback)(
|
|
93712
94150
|
async (issue) => {
|
|
93713
94151
|
const dupComment = issue.comments.find(
|
|
93714
94152
|
(c) => c.body.includes("Found possible duplicate issues:")
|
|
@@ -93807,7 +94245,7 @@ Return a JSON object with:
|
|
|
93807
94245
|
},
|
|
93808
94246
|
abortSignal: new AbortController().signal,
|
|
93809
94247
|
promptId: "triage-duplicates",
|
|
93810
|
-
role:
|
|
94248
|
+
role: "utility_tool" /* UTILITY_TOOL */
|
|
93811
94249
|
});
|
|
93812
94250
|
const rec = response;
|
|
93813
94251
|
let canonical;
|
|
@@ -93849,7 +94287,7 @@ Return a JSON object with:
|
|
|
93849
94287
|
},
|
|
93850
94288
|
[config]
|
|
93851
94289
|
);
|
|
93852
|
-
(0,
|
|
94290
|
+
(0, import_react66.useEffect)(() => {
|
|
93853
94291
|
if (state.issues.length === 0) return;
|
|
93854
94292
|
const analyzeNext = async () => {
|
|
93855
94293
|
const issuesToAnalyze = state.issues.slice(
|
|
@@ -93898,7 +94336,7 @@ Return a JSON object with:
|
|
|
93898
94336
|
state.analyzingIds,
|
|
93899
94337
|
analyzeIssue
|
|
93900
94338
|
]);
|
|
93901
|
-
(0,
|
|
94339
|
+
(0, import_react66.useEffect)(() => {
|
|
93902
94340
|
const issue = state.issues[state.currentIndex];
|
|
93903
94341
|
if (!issue) return;
|
|
93904
94342
|
const analysis = state.analysisCache.get(issue.number);
|
|
@@ -93934,7 +94372,7 @@ Return a JSON object with:
|
|
|
93934
94372
|
state.analysisCache,
|
|
93935
94373
|
state.analyzingIds
|
|
93936
94374
|
]);
|
|
93937
|
-
const fetchIssues = (0,
|
|
94375
|
+
const fetchIssues = (0, import_react66.useCallback)(async (limit) => {
|
|
93938
94376
|
try {
|
|
93939
94377
|
const { stdout } = await spawnAsync("gh", [
|
|
93940
94378
|
"issue",
|
|
@@ -93974,10 +94412,10 @@ Return a JSON object with:
|
|
|
93974
94412
|
}));
|
|
93975
94413
|
}
|
|
93976
94414
|
}, []);
|
|
93977
|
-
(0,
|
|
94415
|
+
(0, import_react66.useEffect)(() => {
|
|
93978
94416
|
void fetchIssues(initialLimit);
|
|
93979
94417
|
}, [fetchIssues, initialLimit]);
|
|
93980
|
-
const handleNext = (0,
|
|
94418
|
+
const handleNext = (0, import_react66.useCallback)(() => {
|
|
93981
94419
|
const nextIndex = state.currentIndex + 1;
|
|
93982
94420
|
if (nextIndex < state.issues.length) {
|
|
93983
94421
|
setFocusSection("target");
|
|
@@ -94485,7 +94923,7 @@ Return a JSON object with:
|
|
|
94485
94923
|
};
|
|
94486
94924
|
|
|
94487
94925
|
// packages/cli/src/ui/components/triage/TriageIssues.tsx
|
|
94488
|
-
var
|
|
94926
|
+
var import_react67 = __toESM(require_react(), 1);
|
|
94489
94927
|
var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
|
|
94490
94928
|
var VISIBLE_LINES_COLLAPSED2 = 8;
|
|
94491
94929
|
var VISIBLE_LINES_EXPANDED2 = 20;
|
|
@@ -94504,7 +94942,7 @@ var TriageIssues = ({
|
|
|
94504
94942
|
until
|
|
94505
94943
|
}) => {
|
|
94506
94944
|
const keyMatchers = useKeyMatchers();
|
|
94507
|
-
const [state, setState] = (0,
|
|
94945
|
+
const [state, setState] = (0, import_react67.useState)({
|
|
94508
94946
|
status: "loading",
|
|
94509
94947
|
issues: [],
|
|
94510
94948
|
currentIndex: 0,
|
|
@@ -94512,15 +94950,15 @@ var TriageIssues = ({
|
|
|
94512
94950
|
analyzingIds: /* @__PURE__ */ new Set(),
|
|
94513
94951
|
message: "Fetching issues..."
|
|
94514
94952
|
});
|
|
94515
|
-
const [targetExpanded, setTargetExpanded] = (0,
|
|
94516
|
-
const [targetScrollOffset, setTargetScrollOffset] = (0,
|
|
94517
|
-
const [isEditingComment, setIsEditingComment] = (0,
|
|
94518
|
-
const [processedHistory, setProcessedHistory] = (0,
|
|
94953
|
+
const [targetExpanded, setTargetExpanded] = (0, import_react67.useState)(false);
|
|
94954
|
+
const [targetScrollOffset, setTargetScrollOffset] = (0, import_react67.useState)(0);
|
|
94955
|
+
const [isEditingComment, setIsEditingComment] = (0, import_react67.useState)(false);
|
|
94956
|
+
const [processedHistory, setProcessedHistory] = (0, import_react67.useState)(
|
|
94519
94957
|
[]
|
|
94520
94958
|
);
|
|
94521
|
-
const [showHistory, setShowHistory] = (0,
|
|
94522
|
-
const abortControllerRef = (0,
|
|
94523
|
-
(0,
|
|
94959
|
+
const [showHistory, setShowHistory] = (0, import_react67.useState)(false);
|
|
94960
|
+
const abortControllerRef = (0, import_react67.useRef)(new AbortController());
|
|
94961
|
+
(0, import_react67.useEffect)(
|
|
94524
94962
|
() => () => {
|
|
94525
94963
|
abortControllerRef.current.abort();
|
|
94526
94964
|
},
|
|
@@ -94532,12 +94970,12 @@ var TriageIssues = ({
|
|
|
94532
94970
|
});
|
|
94533
94971
|
const currentIssue = state.issues[state.currentIndex];
|
|
94534
94972
|
const analysis = currentIssue ? state.analysisCache.get(currentIssue.number) : void 0;
|
|
94535
|
-
(0,
|
|
94973
|
+
(0, import_react67.useEffect)(() => {
|
|
94536
94974
|
if (analysis?.suggested_comment && !isEditingComment) {
|
|
94537
94975
|
commentBuffer.setText(analysis.suggested_comment);
|
|
94538
94976
|
}
|
|
94539
94977
|
}, [analysis, commentBuffer, isEditingComment]);
|
|
94540
|
-
const fetchIssues = (0,
|
|
94978
|
+
const fetchIssues = (0, import_react67.useCallback)(
|
|
94541
94979
|
async (limit) => {
|
|
94542
94980
|
try {
|
|
94543
94981
|
const searchParts = [
|
|
@@ -94585,10 +95023,10 @@ var TriageIssues = ({
|
|
|
94585
95023
|
},
|
|
94586
95024
|
[until]
|
|
94587
95025
|
);
|
|
94588
|
-
(0,
|
|
95026
|
+
(0, import_react67.useEffect)(() => {
|
|
94589
95027
|
void fetchIssues(initialLimit);
|
|
94590
95028
|
}, [fetchIssues, initialLimit]);
|
|
94591
|
-
const analyzeIssue = (0,
|
|
95029
|
+
const analyzeIssue = (0, import_react67.useCallback)(
|
|
94592
95030
|
async (issue) => {
|
|
94593
95031
|
const client = config.getBaseLlmClient();
|
|
94594
95032
|
const prompt = `
|
|
@@ -94641,13 +95079,13 @@ Return a JSON object with:
|
|
|
94641
95079
|
},
|
|
94642
95080
|
abortSignal: abortControllerRef.current.signal,
|
|
94643
95081
|
promptId: "triage-issues",
|
|
94644
|
-
role:
|
|
95082
|
+
role: "utility_tool" /* UTILITY_TOOL */
|
|
94645
95083
|
});
|
|
94646
95084
|
return response;
|
|
94647
95085
|
},
|
|
94648
95086
|
[config]
|
|
94649
95087
|
);
|
|
94650
|
-
(0,
|
|
95088
|
+
(0, import_react67.useEffect)(() => {
|
|
94651
95089
|
if (state.issues.length === 0) return;
|
|
94652
95090
|
const analyzeNext = async () => {
|
|
94653
95091
|
const issuesToAnalyze = state.issues.slice(
|
|
@@ -94694,7 +95132,7 @@ Return a JSON object with:
|
|
|
94694
95132
|
state.analyzingIds,
|
|
94695
95133
|
analyzeIssue
|
|
94696
95134
|
]);
|
|
94697
|
-
const handleNext = (0,
|
|
95135
|
+
const handleNext = (0, import_react67.useCallback)(() => {
|
|
94698
95136
|
const nextIndex = state.currentIndex + 1;
|
|
94699
95137
|
if (nextIndex < state.issues.length) {
|
|
94700
95138
|
setTargetExpanded(false);
|
|
@@ -94709,7 +95147,7 @@ Return a JSON object with:
|
|
|
94709
95147
|
}));
|
|
94710
95148
|
}
|
|
94711
95149
|
}, [state.currentIndex, state.issues.length]);
|
|
94712
|
-
(0,
|
|
95150
|
+
(0, import_react67.useEffect)(() => {
|
|
94713
95151
|
if (currentIssue && state.analysisCache.has(currentIssue.number)) {
|
|
94714
95152
|
const res = state.analysisCache.get(currentIssue.number);
|
|
94715
95153
|
if (res.recommendation === "keep") {
|
|
@@ -95215,10 +95653,16 @@ var planCommand = {
|
|
|
95215
95653
|
return;
|
|
95216
95654
|
}
|
|
95217
95655
|
const previousApprovalMode = config.getApprovalMode();
|
|
95218
|
-
config.setApprovalMode(
|
|
95219
|
-
if (previousApprovalMode !==
|
|
95656
|
+
config.setApprovalMode("plan" /* PLAN */);
|
|
95657
|
+
if (previousApprovalMode !== "plan" /* PLAN */) {
|
|
95220
95658
|
coreEvents.emitFeedback("info", "Switched to Plan Mode.");
|
|
95221
95659
|
}
|
|
95660
|
+
if (context.invocation?.args) {
|
|
95661
|
+
return {
|
|
95662
|
+
type: "submit_prompt",
|
|
95663
|
+
content: context.invocation.args
|
|
95664
|
+
};
|
|
95665
|
+
}
|
|
95222
95666
|
const approvedPlanPath = config.getApprovedPlanPath();
|
|
95223
95667
|
if (!approvedPlanPath) {
|
|
95224
95668
|
return;
|
|
@@ -95235,12 +95679,14 @@ var planCommand = {
|
|
|
95235
95679
|
type: "gemini" /* GEMINI */,
|
|
95236
95680
|
text: partToString(content.llmContent)
|
|
95237
95681
|
});
|
|
95682
|
+
return;
|
|
95238
95683
|
} catch (error) {
|
|
95239
95684
|
coreEvents.emitFeedback(
|
|
95240
95685
|
"error",
|
|
95241
95686
|
`Failed to read approved plan at ${approvedPlanPath}: ${error}`,
|
|
95242
95687
|
error
|
|
95243
95688
|
);
|
|
95689
|
+
return;
|
|
95244
95690
|
}
|
|
95245
95691
|
},
|
|
95246
95692
|
subCommands: [
|
|
@@ -95249,6 +95695,7 @@ var planCommand = {
|
|
|
95249
95695
|
description: "Copy the currently approved plan to your clipboard",
|
|
95250
95696
|
kind: "built-in" /* BUILT_IN */,
|
|
95251
95697
|
autoExecute: true,
|
|
95698
|
+
takesArgs: false,
|
|
95252
95699
|
action: copyAction
|
|
95253
95700
|
}
|
|
95254
95701
|
]
|
|
@@ -95266,10 +95713,10 @@ var categorizeRulesByMode = (rules) => {
|
|
|
95266
95713
|
rules.forEach((rule) => {
|
|
95267
95714
|
const modes = rule.modes?.length ? rule.modes : ALL_MODES;
|
|
95268
95715
|
const modeSet = new Set(modes);
|
|
95269
|
-
if (modeSet.has(
|
|
95270
|
-
if (modeSet.has(
|
|
95271
|
-
if (modeSet.has(
|
|
95272
|
-
if (modeSet.has(
|
|
95716
|
+
if (modeSet.has("default" /* DEFAULT */)) result.normal.push(rule);
|
|
95717
|
+
if (modeSet.has("autoEdit" /* AUTO_EDIT */)) result.autoEdit.push(rule);
|
|
95718
|
+
if (modeSet.has("yolo" /* YOLO */)) result.yolo.push(rule);
|
|
95719
|
+
if (modeSet.has("plan" /* PLAN */)) result.plan.push(rule);
|
|
95273
95720
|
});
|
|
95274
95721
|
return result;
|
|
95275
95722
|
};
|
|
@@ -96224,7 +96671,15 @@ var skillsCommand = {
|
|
|
96224
96671
|
action: reloadAction2
|
|
96225
96672
|
}
|
|
96226
96673
|
],
|
|
96227
|
-
action:
|
|
96674
|
+
action: async (context, args) => {
|
|
96675
|
+
if (args) {
|
|
96676
|
+
const parsed = parseSlashCommand(`/${args}`, skillsCommand.subCommands);
|
|
96677
|
+
if (parsed.commandToExecute?.action) {
|
|
96678
|
+
return parsed.commandToExecute.action(context, parsed.args);
|
|
96679
|
+
}
|
|
96680
|
+
}
|
|
96681
|
+
return listAction4(context, args);
|
|
96682
|
+
}
|
|
96228
96683
|
};
|
|
96229
96684
|
|
|
96230
96685
|
// packages/cli/src/ui/commands/settingsCommand.ts
|
|
@@ -96240,15 +96695,15 @@ var settingsCommand = {
|
|
|
96240
96695
|
})
|
|
96241
96696
|
};
|
|
96242
96697
|
|
|
96243
|
-
// packages/cli/src/ui/commands/
|
|
96244
|
-
var
|
|
96245
|
-
name: "
|
|
96246
|
-
altNames: ["
|
|
96698
|
+
// packages/cli/src/ui/commands/tasksCommand.ts
|
|
96699
|
+
var tasksCommand = {
|
|
96700
|
+
name: "tasks",
|
|
96701
|
+
altNames: ["bg", "background"],
|
|
96247
96702
|
kind: "built-in" /* BUILT_IN */,
|
|
96248
|
-
description: "Toggle background
|
|
96703
|
+
description: "Toggle background tasks view",
|
|
96249
96704
|
autoExecute: true,
|
|
96250
96705
|
action: async (context) => {
|
|
96251
|
-
context.ui.
|
|
96706
|
+
context.ui.toggleBackgroundTasks();
|
|
96252
96707
|
}
|
|
96253
96708
|
};
|
|
96254
96709
|
|
|
@@ -96606,7 +97061,7 @@ var upgradeCommand = {
|
|
|
96606
97061
|
action: async (context) => {
|
|
96607
97062
|
const config = context.services.agentContext?.config;
|
|
96608
97063
|
const authType = config?.getContentGeneratorConfig()?.authType;
|
|
96609
|
-
if (authType !==
|
|
97064
|
+
if (authType !== "oauth-personal" /* LOGIN_WITH_GOOGLE */) {
|
|
96610
97065
|
return {
|
|
96611
97066
|
type: "message",
|
|
96612
97067
|
messageType: "error",
|
|
@@ -96772,11 +97227,11 @@ var BuiltinCommandLoader = class {
|
|
|
96772
97227
|
}
|
|
96773
97228
|
] : [skillsCommand] : [],
|
|
96774
97229
|
settingsCommand,
|
|
96775
|
-
|
|
97230
|
+
tasksCommand,
|
|
96776
97231
|
vimCommand,
|
|
96777
97232
|
setupGithubCommand,
|
|
96778
97233
|
terminalSetupCommand,
|
|
96779
|
-
...this.config?.getContentGeneratorConfig()?.authType ===
|
|
97234
|
+
...this.config?.getContentGeneratorConfig()?.authType === "oauth-personal" /* LOGIN_WITH_GOOGLE */ ? [upgradeCommand] : []
|
|
96780
97235
|
];
|
|
96781
97236
|
handle?.end();
|
|
96782
97237
|
return allDefinitions.filter((cmd) => cmd !== null);
|
|
@@ -96919,11 +97374,11 @@ var ShellProcessor = class {
|
|
|
96919
97374
|
},
|
|
96920
97375
|
void 0
|
|
96921
97376
|
);
|
|
96922
|
-
if (decision ===
|
|
97377
|
+
if (decision === "deny" /* DENY */) {
|
|
96923
97378
|
throw new Error(
|
|
96924
97379
|
`${this.commandName} cannot be run. Blocked command: "${command}". Reason: Blocked by policy.`
|
|
96925
97380
|
);
|
|
96926
|
-
} else if (decision ===
|
|
97381
|
+
} else if (decision === "ask_user" /* ASK_USER */) {
|
|
96927
97382
|
commandsToConfirm.add(command);
|
|
96928
97383
|
}
|
|
96929
97384
|
}
|
|
@@ -97533,6 +97988,10 @@ export {
|
|
|
97533
97988
|
ACTIVE_SHELL_MAX_LINES,
|
|
97534
97989
|
COMPLETED_SHELL_MAX_LINES,
|
|
97535
97990
|
SUBAGENT_MAX_LINES,
|
|
97991
|
+
SKILLS_DOCS_URL,
|
|
97992
|
+
COMPACT_TOOL_SUBVIEW_MAX_LINES,
|
|
97993
|
+
MAX_SHELL_OUTPUT_SIZE,
|
|
97994
|
+
SHELL_OUTPUT_TRUNCATION_BUFFER,
|
|
97536
97995
|
require_tinygradient,
|
|
97537
97996
|
INK_SUPPORTED_NAMES,
|
|
97538
97997
|
INK_NAME_TO_HEX_MAP,
|
|
@@ -97558,6 +98017,7 @@ export {
|
|
|
97558
98017
|
escapeAnsiCtrlCodes,
|
|
97559
98018
|
require_react,
|
|
97560
98019
|
mapCoreStatusToDisplayStatus,
|
|
98020
|
+
isTodoList,
|
|
97561
98021
|
RESUME_LATEST,
|
|
97562
98022
|
SessionError,
|
|
97563
98023
|
cleanMessage,
|
|
@@ -97663,7 +98123,6 @@ export {
|
|
|
97663
98123
|
parseMouseEvent,
|
|
97664
98124
|
isIncompleteMouseSequence,
|
|
97665
98125
|
useFocus,
|
|
97666
|
-
appEvents,
|
|
97667
98126
|
SettingsContext,
|
|
97668
98127
|
useSettings,
|
|
97669
98128
|
useSettingsStore,
|