@google/gemini-cli 0.32.0-preview.0 → 0.33.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/README.md +11 -9
- package/dist/package.json +3 -3
- package/dist/src/config/config.js +6 -1
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +70 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension-manager.js +1 -0
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.d.ts +9 -0
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/sandboxConfig.js +3 -1
- package/dist/src/config/sandboxConfig.js.map +1 -1
- package/dist/src/config/settings.d.ts +0 -2
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +9 -13
- package/dist/src/config/settingsSchema.js +5 -13
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/gemini.js +1 -1
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/test-utils/render.js +5 -1
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/AppContainer.js +1 -18
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +3 -1
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.test.js +45 -0
- package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.js +12 -8
- package/dist/src/ui/commands/hooksCommand.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.test.js +15 -23
- package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
- package/dist/src/ui/commands/planCommand.js +33 -3
- package/dist/src/ui/commands/planCommand.js.map +1 -1
- package/dist/src/ui/commands/planCommand.test.js +29 -1
- package/dist/src/ui/commands/planCommand.test.js.map +1 -1
- package/dist/src/ui/components/AgentConfigDialog.js +17 -33
- package/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
- package/dist/src/ui/components/AppHeader.d.ts +1 -1
- package/dist/src/ui/components/AppHeader.js +15 -8
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.js +7 -0
- package/dist/src/ui/components/AppHeader.test.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.d.ts +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +15 -3
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.test.js +25 -19
- package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -6
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js +2 -2
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +3 -19
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/ExitPlanModeDialog.js +2 -1
- package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
- package/dist/src/ui/components/ExitPlanModeDialog.test.js +2 -13
- package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.js +3 -1
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Footer.test.js +41 -6
- package/dist/src/ui/components/Footer.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +2 -3
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HooksDialog.d.ts +36 -0
- package/dist/src/ui/components/HooksDialog.js +81 -0
- package/dist/src/ui/components/HooksDialog.js.map +1 -0
- package/dist/src/ui/components/HooksDialog.test.js +187 -0
- package/dist/src/ui/components/HooksDialog.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.js +2 -1
- package/dist/src/ui/components/MainContent.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +1 -5
- package/dist/src/ui/components/SettingsDialog.js +90 -254
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +127 -105
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/StatusDisplay.test.js +5 -4
- package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
- package/dist/src/ui/components/Tips.d.ts +1 -1
- package/dist/src/ui/components/Tips.js +1 -1
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/Tips.test.d.ts +1 -1
- package/dist/src/ui/components/Tips.test.js +6 -7
- package/dist/src/ui/components/Tips.test.js.map +1 -1
- package/dist/src/ui/components/UserIdentity.d.ts +1 -1
- package/dist/src/ui/components/UserIdentity.js +10 -12
- package/dist/src/ui/components/UserIdentity.js.map +1 -1
- package/dist/src/ui/components/UserIdentity.test.js +23 -10
- package/dist/src/ui/components/UserIdentity.test.js.map +1 -1
- package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
- package/dist/src/ui/components/messages/InfoMessage.js +2 -2
- package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
- package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +11 -0
- package/dist/src/ui/components/messages/SubagentProgressDisplay.js +73 -0
- package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -0
- package/dist/src/ui/components/messages/SubagentProgressDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +158 -0
- package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.js +5 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSettingsDialog.d.ts +5 -2
- package/dist/src/ui/components/shared/BaseSettingsDialog.js +3 -2
- package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +24 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionRegistryView.d.ts +1 -2
- package/dist/src/ui/constants/tips.js +1 -1
- package/dist/src/ui/constants/tips.js.map +1 -1
- package/dist/src/ui/constants.d.ts +4 -0
- package/dist/src/ui/constants.js +4 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/SettingsContext.js +2 -1
- package/dist/src/ui/contexts/SettingsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +0 -2
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/contexts/VimModeContext.d.ts +1 -3
- package/dist/src/ui/contexts/VimModeContext.js +7 -16
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
- package/dist/src/ui/hooks/toolMapping.js +1 -0
- package/dist/src/ui/hooks/toolMapping.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +16 -13
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +31 -2
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useTerminalTheme.js +6 -3
- package/dist/src/ui/hooks/useTerminalTheme.js.map +1 -1
- package/dist/src/ui/hooks/useTerminalTheme.test.js +19 -0
- package/dist/src/ui/hooks/useTerminalTheme.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.js +26 -12
- package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +101 -8
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.d.ts +26 -4
- package/dist/src/ui/themes/theme-manager.js +40 -7
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.test.js +2 -1
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +3 -17
- package/dist/src/ui/types.js +0 -1
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.d.ts +6 -2
- package/dist/src/ui/utils/commandUtils.js +12 -5
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +21 -7
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/utils/agentSettings.d.ts +3 -11
- package/dist/src/utils/agentSettings.js +23 -81
- package/dist/src/utils/agentSettings.js.map +1 -1
- package/dist/src/{ui/components/SessionRetentionWarningDialog.test.d.ts → utils/agentSettings.test.d.ts} +0 -2
- package/dist/src/utils/agentSettings.test.js +111 -0
- package/dist/src/utils/agentSettings.test.js.map +1 -0
- package/dist/src/utils/dialogScopeUtils.d.ts +6 -2
- package/dist/src/utils/dialogScopeUtils.js +3 -3
- package/dist/src/utils/dialogScopeUtils.js.map +1 -1
- package/dist/src/utils/dialogScopeUtils.test.js +5 -5
- package/dist/src/utils/dialogScopeUtils.test.js.map +1 -1
- package/dist/src/utils/featureToggleUtils.d.ts +55 -0
- package/dist/src/utils/featureToggleUtils.js +95 -0
- package/dist/src/utils/featureToggleUtils.js.map +1 -0
- package/dist/src/utils/featureToggleUtils.test.d.ts +6 -0
- package/dist/src/utils/featureToggleUtils.test.js +126 -0
- package/dist/src/utils/featureToggleUtils.test.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.d.ts +7 -0
- package/dist/src/utils/handleAutoUpdate.js +41 -0
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.test.js +52 -1
- package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
- package/dist/src/utils/processUtils.js +2 -0
- package/dist/src/utils/processUtils.js.map +1 -1
- package/dist/src/utils/processUtils.test.js +7 -1
- package/dist/src/utils/processUtils.test.js.map +1 -1
- package/dist/src/utils/sessionCleanup.js +8 -0
- package/dist/src/utils/sessionCleanup.js.map +1 -1
- package/dist/src/utils/sessionCleanup.test.js +19 -0
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +18 -91
- package/dist/src/utils/settingsUtils.js +127 -207
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +78 -264
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/utils/skillSettings.d.ts +4 -14
- package/dist/src/utils/skillSettings.js +32 -81
- package/dist/src/utils/skillSettings.js.map +1 -1
- package/dist/src/utils/skillSettings.test.d.ts +6 -0
- package/dist/src/utils/skillSettings.test.js +142 -0
- package/dist/src/utils/skillSettings.test.js.map +1 -0
- package/dist/src/zed-integration/acpResume.test.js +8 -0
- package/dist/src/zed-integration/acpResume.test.js.map +1 -1
- package/dist/src/zed-integration/commandHandler.d.ts +26 -0
- package/dist/src/zed-integration/commandHandler.js +102 -0
- package/dist/src/zed-integration/commandHandler.js.map +1 -0
- package/dist/src/zed-integration/commandHandler.test.d.ts +6 -0
- package/dist/src/zed-integration/commandHandler.test.js +25 -0
- package/dist/src/zed-integration/commandHandler.test.js.map +1 -0
- package/dist/src/zed-integration/commands/commandRegistry.d.ts +12 -0
- package/dist/src/zed-integration/commands/commandRegistry.js +26 -0
- package/dist/src/zed-integration/commands/commandRegistry.js.map +1 -0
- package/dist/src/zed-integration/commands/extensions.d.ts +57 -0
- package/dist/src/zed-integration/commands/extensions.js +320 -0
- package/dist/src/zed-integration/commands/extensions.js.map +1 -0
- package/dist/src/zed-integration/commands/init.d.ts +12 -0
- package/dist/src/zed-integration/commands/init.js +47 -0
- package/dist/src/zed-integration/commands/init.js.map +1 -0
- package/dist/src/zed-integration/commands/memory.d.ts +34 -0
- package/dist/src/zed-integration/commands/memory.js +83 -0
- package/dist/src/zed-integration/commands/memory.js.map +1 -0
- package/dist/src/zed-integration/commands/restore.d.ts +18 -0
- package/dist/src/zed-integration/commands/restore.js +140 -0
- package/dist/src/zed-integration/commands/restore.js.map +1 -0
- package/dist/src/zed-integration/commands/types.d.ts +31 -0
- package/dist/src/zed-integration/commands/types.js +7 -0
- package/dist/src/zed-integration/commands/types.js.map +1 -0
- package/dist/src/zed-integration/zedIntegration.d.ts +9 -2
- package/dist/src/zed-integration/zedIntegration.js +170 -8
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.js +329 -2
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/ui/components/SessionRetentionWarningDialog.d.ts +0 -12
- package/dist/src/ui/components/SessionRetentionWarningDialog.js +0 -27
- package/dist/src/ui/components/SessionRetentionWarningDialog.js.map +0 -1
- package/dist/src/ui/components/SessionRetentionWarningDialog.test.js +0 -72
- package/dist/src/ui/components/SessionRetentionWarningDialog.test.js.map +0 -1
- package/dist/src/ui/components/views/HooksList.d.ts +0 -24
- package/dist/src/ui/components/views/HooksList.js +0 -28
- package/dist/src/ui/components/views/HooksList.js.map +0 -1
- package/dist/src/ui/hooks/useSessionRetentionCheck.d.ts +0 -12
- package/dist/src/ui/hooks/useSessionRetentionCheck.js +0 -57
- package/dist/src/ui/hooks/useSessionRetentionCheck.js.map +0 -1
- package/dist/src/ui/hooks/useSessionRetentionCheck.test.js +0 -169
- package/dist/src/ui/hooks/useSessionRetentionCheck.test.js.map +0 -1
- /package/dist/src/ui/{hooks/useSessionRetentionCheck.test.d.ts → components/HooksDialog.test.d.ts} +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Command, CommandContext, CommandExecutionResponse } from './types.js';
|
|
7
|
+
export declare class ExtensionsCommand implements Command {
|
|
8
|
+
readonly name = "extensions";
|
|
9
|
+
readonly description = "Manage extensions.";
|
|
10
|
+
readonly subCommands: (ListExtensionsCommand | ExploreExtensionsCommand | EnableExtensionCommand | DisableExtensionCommand | InstallExtensionCommand | LinkExtensionCommand | UninstallExtensionCommand | RestartExtensionCommand | UpdateExtensionCommand)[];
|
|
11
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
12
|
+
}
|
|
13
|
+
export declare class ListExtensionsCommand implements Command {
|
|
14
|
+
readonly name = "extensions list";
|
|
15
|
+
readonly description = "Lists all installed extensions.";
|
|
16
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
17
|
+
}
|
|
18
|
+
export declare class ExploreExtensionsCommand implements Command {
|
|
19
|
+
readonly name = "extensions explore";
|
|
20
|
+
readonly description = "Explore available extensions.";
|
|
21
|
+
execute(_context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
22
|
+
}
|
|
23
|
+
export declare class EnableExtensionCommand implements Command {
|
|
24
|
+
readonly name = "extensions enable";
|
|
25
|
+
readonly description = "Enable an extension.";
|
|
26
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
27
|
+
}
|
|
28
|
+
export declare class DisableExtensionCommand implements Command {
|
|
29
|
+
readonly name = "extensions disable";
|
|
30
|
+
readonly description = "Disable an extension.";
|
|
31
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
32
|
+
}
|
|
33
|
+
export declare class InstallExtensionCommand implements Command {
|
|
34
|
+
readonly name = "extensions install";
|
|
35
|
+
readonly description = "Install an extension from a git repo or local path.";
|
|
36
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
37
|
+
}
|
|
38
|
+
export declare class LinkExtensionCommand implements Command {
|
|
39
|
+
readonly name = "extensions link";
|
|
40
|
+
readonly description = "Link an extension from a local path.";
|
|
41
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
42
|
+
}
|
|
43
|
+
export declare class UninstallExtensionCommand implements Command {
|
|
44
|
+
readonly name = "extensions uninstall";
|
|
45
|
+
readonly description = "Uninstall an extension.";
|
|
46
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
47
|
+
}
|
|
48
|
+
export declare class RestartExtensionCommand implements Command {
|
|
49
|
+
readonly name = "extensions restart";
|
|
50
|
+
readonly description = "Restart an extension.";
|
|
51
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
52
|
+
}
|
|
53
|
+
export declare class UpdateExtensionCommand implements Command {
|
|
54
|
+
readonly name = "extensions update";
|
|
55
|
+
readonly description = "Update an extension.";
|
|
56
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { listExtensions } from '@google/gemini-cli-core';
|
|
7
|
+
import { SettingScope } from '../../config/settings.js';
|
|
8
|
+
import { ExtensionManager, inferInstallMetadata, } from '../../config/extension-manager.js';
|
|
9
|
+
import { getErrorMessage } from '../../utils/errors.js';
|
|
10
|
+
import { McpServerEnablementManager } from '../../config/mcp/mcpServerEnablement.js';
|
|
11
|
+
import { stat } from 'node:fs/promises';
|
|
12
|
+
export class ExtensionsCommand {
|
|
13
|
+
name = 'extensions';
|
|
14
|
+
description = 'Manage extensions.';
|
|
15
|
+
subCommands = [
|
|
16
|
+
new ListExtensionsCommand(),
|
|
17
|
+
new ExploreExtensionsCommand(),
|
|
18
|
+
new EnableExtensionCommand(),
|
|
19
|
+
new DisableExtensionCommand(),
|
|
20
|
+
new InstallExtensionCommand(),
|
|
21
|
+
new LinkExtensionCommand(),
|
|
22
|
+
new UninstallExtensionCommand(),
|
|
23
|
+
new RestartExtensionCommand(),
|
|
24
|
+
new UpdateExtensionCommand(),
|
|
25
|
+
];
|
|
26
|
+
async execute(context, _) {
|
|
27
|
+
return new ListExtensionsCommand().execute(context, _);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class ListExtensionsCommand {
|
|
31
|
+
name = 'extensions list';
|
|
32
|
+
description = 'Lists all installed extensions.';
|
|
33
|
+
async execute(context, _) {
|
|
34
|
+
const extensions = listExtensions(context.config);
|
|
35
|
+
const data = extensions.length ? extensions : 'No extensions installed.';
|
|
36
|
+
return { name: this.name, data };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class ExploreExtensionsCommand {
|
|
40
|
+
name = 'extensions explore';
|
|
41
|
+
description = 'Explore available extensions.';
|
|
42
|
+
async execute(_context, _) {
|
|
43
|
+
const extensionsUrl = 'https://geminicli.com/extensions/';
|
|
44
|
+
return {
|
|
45
|
+
name: this.name,
|
|
46
|
+
data: `View or install available extensions at ${extensionsUrl}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function getEnableDisableContext(config, args, invocationName) {
|
|
51
|
+
const extensionManager = config.getExtensionLoader();
|
|
52
|
+
if (!(extensionManager instanceof ExtensionManager)) {
|
|
53
|
+
return {
|
|
54
|
+
error: `Cannot ${invocationName} extensions in this environment.`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (args.length === 0) {
|
|
58
|
+
return {
|
|
59
|
+
error: `Usage: /extensions ${invocationName} <extension> [--scope=<user|workspace|session>]`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
let scope = SettingScope.User;
|
|
63
|
+
if (args.includes('--scope=workspace') || args.includes('workspace')) {
|
|
64
|
+
scope = SettingScope.Workspace;
|
|
65
|
+
}
|
|
66
|
+
else if (args.includes('--scope=session') || args.includes('session')) {
|
|
67
|
+
scope = SettingScope.Session;
|
|
68
|
+
}
|
|
69
|
+
const name = args.filter((a) => !a.startsWith('--scope') && !['user', 'workspace', 'session'].includes(a))[0];
|
|
70
|
+
let names = [];
|
|
71
|
+
if (name === '--all') {
|
|
72
|
+
let extensions = extensionManager.getExtensions();
|
|
73
|
+
if (invocationName === 'enable') {
|
|
74
|
+
extensions = extensions.filter((ext) => !ext.isActive);
|
|
75
|
+
}
|
|
76
|
+
if (invocationName === 'disable') {
|
|
77
|
+
extensions = extensions.filter((ext) => ext.isActive);
|
|
78
|
+
}
|
|
79
|
+
names = extensions.map((ext) => ext.name);
|
|
80
|
+
}
|
|
81
|
+
else if (name) {
|
|
82
|
+
names = [name];
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return { error: 'No extension name provided.' };
|
|
86
|
+
}
|
|
87
|
+
return { extensionManager, names, scope };
|
|
88
|
+
}
|
|
89
|
+
export class EnableExtensionCommand {
|
|
90
|
+
name = 'extensions enable';
|
|
91
|
+
description = 'Enable an extension.';
|
|
92
|
+
async execute(context, args) {
|
|
93
|
+
const enableContext = getEnableDisableContext(context.config, args, 'enable');
|
|
94
|
+
if ('error' in enableContext) {
|
|
95
|
+
return { name: this.name, data: enableContext.error };
|
|
96
|
+
}
|
|
97
|
+
const { names, scope, extensionManager } = enableContext;
|
|
98
|
+
const output = [];
|
|
99
|
+
for (const name of names) {
|
|
100
|
+
try {
|
|
101
|
+
await extensionManager.enableExtension(name, scope);
|
|
102
|
+
output.push(`Extension "${name}" enabled for scope "${scope}".`);
|
|
103
|
+
const extension = extensionManager
|
|
104
|
+
.getExtensions()
|
|
105
|
+
.find((e) => e.name === name);
|
|
106
|
+
if (extension?.mcpServers) {
|
|
107
|
+
const mcpEnablementManager = McpServerEnablementManager.getInstance();
|
|
108
|
+
const mcpClientManager = context.config.getMcpClientManager();
|
|
109
|
+
const enabledServers = await mcpEnablementManager.autoEnableServers(Object.keys(extension.mcpServers));
|
|
110
|
+
if (mcpClientManager && enabledServers.length > 0) {
|
|
111
|
+
const restartPromises = enabledServers.map((serverName) => mcpClientManager.restartServer(serverName).catch((error) => {
|
|
112
|
+
output.push(`Failed to restart MCP server '${serverName}': ${getErrorMessage(error)}`);
|
|
113
|
+
}));
|
|
114
|
+
await Promise.all(restartPromises);
|
|
115
|
+
output.push(`Re-enabled MCP servers: ${enabledServers.join(', ')}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
output.push(`Failed to enable "${name}": ${getErrorMessage(e)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return { name: this.name, data: output.join('\n') || 'No action taken.' };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export class DisableExtensionCommand {
|
|
127
|
+
name = 'extensions disable';
|
|
128
|
+
description = 'Disable an extension.';
|
|
129
|
+
async execute(context, args) {
|
|
130
|
+
const enableContext = getEnableDisableContext(context.config, args, 'disable');
|
|
131
|
+
if ('error' in enableContext) {
|
|
132
|
+
return { name: this.name, data: enableContext.error };
|
|
133
|
+
}
|
|
134
|
+
const { names, scope, extensionManager } = enableContext;
|
|
135
|
+
const output = [];
|
|
136
|
+
for (const name of names) {
|
|
137
|
+
try {
|
|
138
|
+
await extensionManager.disableExtension(name, scope);
|
|
139
|
+
output.push(`Extension "${name}" disabled for scope "${scope}".`);
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
output.push(`Failed to disable "${name}": ${getErrorMessage(e)}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { name: this.name, data: output.join('\n') || 'No action taken.' };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export class InstallExtensionCommand {
|
|
149
|
+
name = 'extensions install';
|
|
150
|
+
description = 'Install an extension from a git repo or local path.';
|
|
151
|
+
async execute(context, args) {
|
|
152
|
+
const extensionLoader = context.config.getExtensionLoader();
|
|
153
|
+
if (!(extensionLoader instanceof ExtensionManager)) {
|
|
154
|
+
return {
|
|
155
|
+
name: this.name,
|
|
156
|
+
data: 'Cannot install extensions in this environment.',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const source = args.join(' ').trim();
|
|
160
|
+
if (!source) {
|
|
161
|
+
return { name: this.name, data: `Usage: /extensions install <source>` };
|
|
162
|
+
}
|
|
163
|
+
if (/[;&|`'"]/.test(source)) {
|
|
164
|
+
return {
|
|
165
|
+
name: this.name,
|
|
166
|
+
data: `Invalid source: contains disallowed characters.`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const installMetadata = await inferInstallMetadata(source);
|
|
171
|
+
const extension = await extensionLoader.installOrUpdateExtension(installMetadata);
|
|
172
|
+
return {
|
|
173
|
+
name: this.name,
|
|
174
|
+
data: `Extension "${extension.name}" installed successfully.`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
return {
|
|
179
|
+
name: this.name,
|
|
180
|
+
data: `Failed to install extension from "${source}": ${getErrorMessage(error)}`,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
export class LinkExtensionCommand {
|
|
186
|
+
name = 'extensions link';
|
|
187
|
+
description = 'Link an extension from a local path.';
|
|
188
|
+
async execute(context, args) {
|
|
189
|
+
const extensionLoader = context.config.getExtensionLoader();
|
|
190
|
+
if (!(extensionLoader instanceof ExtensionManager)) {
|
|
191
|
+
return {
|
|
192
|
+
name: this.name,
|
|
193
|
+
data: 'Cannot link extensions in this environment.',
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const sourceFilepath = args.join(' ').trim();
|
|
197
|
+
if (!sourceFilepath) {
|
|
198
|
+
return { name: this.name, data: `Usage: /extensions link <source>` };
|
|
199
|
+
}
|
|
200
|
+
try {
|
|
201
|
+
await stat(sourceFilepath);
|
|
202
|
+
}
|
|
203
|
+
catch (_error) {
|
|
204
|
+
return { name: this.name, data: `Invalid source: ${sourceFilepath}` };
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const extension = await extensionLoader.installOrUpdateExtension({
|
|
208
|
+
source: sourceFilepath,
|
|
209
|
+
type: 'link',
|
|
210
|
+
});
|
|
211
|
+
return {
|
|
212
|
+
name: this.name,
|
|
213
|
+
data: `Extension "${extension.name}" linked successfully.`,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
return {
|
|
218
|
+
name: this.name,
|
|
219
|
+
data: `Failed to link extension: ${getErrorMessage(error)}`,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
export class UninstallExtensionCommand {
|
|
225
|
+
name = 'extensions uninstall';
|
|
226
|
+
description = 'Uninstall an extension.';
|
|
227
|
+
async execute(context, args) {
|
|
228
|
+
const extensionLoader = context.config.getExtensionLoader();
|
|
229
|
+
if (!(extensionLoader instanceof ExtensionManager)) {
|
|
230
|
+
return {
|
|
231
|
+
name: this.name,
|
|
232
|
+
data: 'Cannot uninstall extensions in this environment.',
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
const name = args.join(' ').trim();
|
|
236
|
+
if (!name) {
|
|
237
|
+
return {
|
|
238
|
+
name: this.name,
|
|
239
|
+
data: `Usage: /extensions uninstall <extension-name>`,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
await extensionLoader.uninstallExtension(name, false);
|
|
244
|
+
return {
|
|
245
|
+
name: this.name,
|
|
246
|
+
data: `Extension "${name}" uninstalled successfully.`,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
return {
|
|
251
|
+
name: this.name,
|
|
252
|
+
data: `Failed to uninstall extension "${name}": ${getErrorMessage(error)}`,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
export class RestartExtensionCommand {
|
|
258
|
+
name = 'extensions restart';
|
|
259
|
+
description = 'Restart an extension.';
|
|
260
|
+
async execute(context, args) {
|
|
261
|
+
const extensionLoader = context.config.getExtensionLoader();
|
|
262
|
+
if (!(extensionLoader instanceof ExtensionManager)) {
|
|
263
|
+
return { name: this.name, data: 'Cannot restart extensions.' };
|
|
264
|
+
}
|
|
265
|
+
const all = args.includes('--all');
|
|
266
|
+
const names = all ? null : args.filter((a) => !!a);
|
|
267
|
+
if (!all && names?.length === 0) {
|
|
268
|
+
return {
|
|
269
|
+
name: this.name,
|
|
270
|
+
data: 'Usage: /extensions restart <extension-names>|--all',
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
let extensionsToRestart = extensionLoader
|
|
274
|
+
.getExtensions()
|
|
275
|
+
.filter((e) => e.isActive);
|
|
276
|
+
if (names) {
|
|
277
|
+
extensionsToRestart = extensionsToRestart.filter((e) => names.includes(e.name));
|
|
278
|
+
}
|
|
279
|
+
if (extensionsToRestart.length === 0) {
|
|
280
|
+
return {
|
|
281
|
+
name: this.name,
|
|
282
|
+
data: 'No active extensions matched the request.',
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const output = [];
|
|
286
|
+
for (const extension of extensionsToRestart) {
|
|
287
|
+
try {
|
|
288
|
+
await extensionLoader.restartExtension(extension);
|
|
289
|
+
output.push(`Restarted "${extension.name}".`);
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
output.push(`Failed to restart "${extension.name}": ${getErrorMessage(e)}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return { name: this.name, data: output.join('\n') };
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
export class UpdateExtensionCommand {
|
|
299
|
+
name = 'extensions update';
|
|
300
|
+
description = 'Update an extension.';
|
|
301
|
+
async execute(context, args) {
|
|
302
|
+
const extensionLoader = context.config.getExtensionLoader();
|
|
303
|
+
if (!(extensionLoader instanceof ExtensionManager)) {
|
|
304
|
+
return { name: this.name, data: 'Cannot update extensions.' };
|
|
305
|
+
}
|
|
306
|
+
const all = args.includes('--all');
|
|
307
|
+
const names = all ? null : args.filter((a) => !!a);
|
|
308
|
+
if (!all && names?.length === 0) {
|
|
309
|
+
return {
|
|
310
|
+
name: this.name,
|
|
311
|
+
data: 'Usage: /extensions update <extension-names>|--all',
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
name: this.name,
|
|
316
|
+
data: 'Headless extension updating requires internal UI dispatches. Please use `gemini extensions update` directly in the terminal.',
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../src/zed-integration/commands/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Command, CommandContext, CommandExecutionResponse } from './types.js';
|
|
7
|
+
export declare class InitCommand implements Command {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
requiresWorkspace: boolean;
|
|
11
|
+
execute(context: CommandContext, _args?: string[]): Promise<CommandExecutionResponse>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import { performInit } from '@google/gemini-cli-core';
|
|
9
|
+
export class InitCommand {
|
|
10
|
+
name = 'init';
|
|
11
|
+
description = 'Analyzes the project and creates a tailored GEMINI.md file';
|
|
12
|
+
requiresWorkspace = true;
|
|
13
|
+
async execute(context, _args = []) {
|
|
14
|
+
const targetDir = context.config.getTargetDir();
|
|
15
|
+
if (!targetDir) {
|
|
16
|
+
throw new Error('Command requires a workspace.');
|
|
17
|
+
}
|
|
18
|
+
const geminiMdPath = path.join(targetDir, 'GEMINI.md');
|
|
19
|
+
const result = performInit(fs.existsSync(geminiMdPath));
|
|
20
|
+
switch (result.type) {
|
|
21
|
+
case 'message':
|
|
22
|
+
return {
|
|
23
|
+
name: this.name,
|
|
24
|
+
data: result,
|
|
25
|
+
};
|
|
26
|
+
case 'submit_prompt':
|
|
27
|
+
fs.writeFileSync(geminiMdPath, '', 'utf8');
|
|
28
|
+
if (typeof result.content !== 'string') {
|
|
29
|
+
throw new Error('Init command content must be a string.');
|
|
30
|
+
}
|
|
31
|
+
// Inform the user since we can't trigger the UI-based interactive agent loop here directly.
|
|
32
|
+
// We output the prompt text they can use to re-trigger the generation manually,
|
|
33
|
+
// or just seed the GEMINI.md file as we've done above.
|
|
34
|
+
return {
|
|
35
|
+
name: this.name,
|
|
36
|
+
data: {
|
|
37
|
+
type: 'message',
|
|
38
|
+
messageType: 'info',
|
|
39
|
+
content: `A template GEMINI.md has been created at ${geminiMdPath}.\n\nTo populate it with project context, you can run the following prompt in a new chat:\n\n${result.content}`,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
default:
|
|
43
|
+
throw new Error('Unknown result type from performInit');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/zed-integration/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,MAAM,OAAO,WAAW;IACtB,IAAI,GAAG,MAAM,CAAC;IACd,WAAW,GAAG,4DAA4D,CAAC;IAC3E,iBAAiB,GAAG,IAAI,CAAC;IAEzB,KAAK,CAAC,OAAO,CACX,OAAuB,EACvB,QAAkB,EAAE;QAEpB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAExD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,MAAM;iBACb,CAAC;YACJ,KAAK,eAAe;gBAClB,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;gBAE3C,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,CAAC;gBAED,4FAA4F;gBAC5F,gFAAgF;gBAChF,uDAAuD;gBACvD,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE;wBACJ,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,MAAM;wBACnB,OAAO,EAAE,4CAA4C,YAAY,gGAAgG,MAAM,CAAC,OAAO,EAAE;qBAClL;iBACF,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Command, CommandContext, CommandExecutionResponse } from './types.js';
|
|
7
|
+
export declare class MemoryCommand implements Command {
|
|
8
|
+
readonly name = "memory";
|
|
9
|
+
readonly description = "Manage memory.";
|
|
10
|
+
readonly subCommands: (ShowMemoryCommand | RefreshMemoryCommand | ListMemoryCommand | AddMemoryCommand)[];
|
|
11
|
+
readonly requiresWorkspace = true;
|
|
12
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ShowMemoryCommand implements Command {
|
|
15
|
+
readonly name = "memory show";
|
|
16
|
+
readonly description = "Shows the current memory contents.";
|
|
17
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
18
|
+
}
|
|
19
|
+
export declare class RefreshMemoryCommand implements Command {
|
|
20
|
+
readonly name = "memory refresh";
|
|
21
|
+
readonly aliases: string[];
|
|
22
|
+
readonly description = "Refreshes the memory from the source.";
|
|
23
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
24
|
+
}
|
|
25
|
+
export declare class ListMemoryCommand implements Command {
|
|
26
|
+
readonly name = "memory list";
|
|
27
|
+
readonly description = "Lists the paths of the GEMINI.md files in use.";
|
|
28
|
+
execute(context: CommandContext, _: string[]): Promise<CommandExecutionResponse>;
|
|
29
|
+
}
|
|
30
|
+
export declare class AddMemoryCommand implements Command {
|
|
31
|
+
readonly name = "memory add";
|
|
32
|
+
readonly description = "Add content to the memory.";
|
|
33
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { addMemory, listMemoryFiles, refreshMemory, showMemory, } from '@google/gemini-cli-core';
|
|
7
|
+
const DEFAULT_SANITIZATION_CONFIG = {
|
|
8
|
+
allowedEnvironmentVariables: [],
|
|
9
|
+
blockedEnvironmentVariables: [],
|
|
10
|
+
enableEnvironmentVariableRedaction: false,
|
|
11
|
+
};
|
|
12
|
+
export class MemoryCommand {
|
|
13
|
+
name = 'memory';
|
|
14
|
+
description = 'Manage memory.';
|
|
15
|
+
subCommands = [
|
|
16
|
+
new ShowMemoryCommand(),
|
|
17
|
+
new RefreshMemoryCommand(),
|
|
18
|
+
new ListMemoryCommand(),
|
|
19
|
+
new AddMemoryCommand(),
|
|
20
|
+
];
|
|
21
|
+
requiresWorkspace = true;
|
|
22
|
+
async execute(context, _) {
|
|
23
|
+
return new ShowMemoryCommand().execute(context, _);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class ShowMemoryCommand {
|
|
27
|
+
name = 'memory show';
|
|
28
|
+
description = 'Shows the current memory contents.';
|
|
29
|
+
async execute(context, _) {
|
|
30
|
+
const result = showMemory(context.config);
|
|
31
|
+
return { name: this.name, data: result.content };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class RefreshMemoryCommand {
|
|
35
|
+
name = 'memory refresh';
|
|
36
|
+
aliases = ['memory reload'];
|
|
37
|
+
description = 'Refreshes the memory from the source.';
|
|
38
|
+
async execute(context, _) {
|
|
39
|
+
const result = await refreshMemory(context.config);
|
|
40
|
+
return { name: this.name, data: result.content };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class ListMemoryCommand {
|
|
44
|
+
name = 'memory list';
|
|
45
|
+
description = 'Lists the paths of the GEMINI.md files in use.';
|
|
46
|
+
async execute(context, _) {
|
|
47
|
+
const result = listMemoryFiles(context.config);
|
|
48
|
+
return { name: this.name, data: result.content };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export class AddMemoryCommand {
|
|
52
|
+
name = 'memory add';
|
|
53
|
+
description = 'Add content to the memory.';
|
|
54
|
+
async execute(context, args) {
|
|
55
|
+
const textToAdd = args.join(' ').trim();
|
|
56
|
+
const result = addMemory(textToAdd);
|
|
57
|
+
if (result.type === 'message') {
|
|
58
|
+
return { name: this.name, data: result.content };
|
|
59
|
+
}
|
|
60
|
+
const toolRegistry = context.config.getToolRegistry();
|
|
61
|
+
const tool = toolRegistry.getTool(result.toolName);
|
|
62
|
+
if (tool) {
|
|
63
|
+
const abortController = new AbortController();
|
|
64
|
+
const signal = abortController.signal;
|
|
65
|
+
await context.sendMessage(`Saving memory via ${result.toolName}...`);
|
|
66
|
+
await tool.buildAndExecute(result.toolArgs, signal, undefined, {
|
|
67
|
+
sanitizationConfig: DEFAULT_SANITIZATION_CONFIG,
|
|
68
|
+
});
|
|
69
|
+
await refreshMemory(context.config);
|
|
70
|
+
return {
|
|
71
|
+
name: this.name,
|
|
72
|
+
data: `Added memory: "${textToAdd}"`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return {
|
|
77
|
+
name: this.name,
|
|
78
|
+
data: `Error: Tool ${result.toolName} not found.`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/zed-integration/commands/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Command, CommandContext, CommandExecutionResponse } from './types.js';
|
|
7
|
+
export declare class RestoreCommand implements Command {
|
|
8
|
+
readonly name = "restore";
|
|
9
|
+
readonly description = "Restore to a previous checkpoint, or list available checkpoints to restore. This will reset the conversation and file history to the state it was in when the checkpoint was created";
|
|
10
|
+
readonly requiresWorkspace = true;
|
|
11
|
+
readonly subCommands: ListCheckpointsCommand[];
|
|
12
|
+
execute(context: CommandContext, args: string[]): Promise<CommandExecutionResponse>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ListCheckpointsCommand implements Command {
|
|
15
|
+
readonly name = "restore list";
|
|
16
|
+
readonly description = "Lists all available checkpoints.";
|
|
17
|
+
execute(context: CommandContext): Promise<CommandExecutionResponse>;
|
|
18
|
+
}
|