summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/config/config.ts1
-rw-r--r--packages/cli/src/config/settings.ts1
-rw-r--r--packages/cli/src/services/CommandService.test.ts1
-rw-r--r--packages/cli/src/services/CommandService.ts2
-rw-r--r--packages/cli/src/ui/App.test.tsx3
-rw-r--r--packages/cli/src/ui/commands/backgroundCommand.ts262
6 files changed, 0 insertions, 270 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index 84ca6815..2d33daa3 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -382,7 +382,6 @@ export async function loadCliConfig(
toolCallCommand: settings.toolCallCommand,
mcpServerCommand: settings.mcpServerCommand,
mcpServers,
- backgroundAgents: settings.backgroundAgents,
userMemory: memoryContent,
geminiMdFileCount: fileCount,
approvalMode: argv.yolo || false ? ApprovalMode.YOLO : ApprovalMode.DEFAULT,
diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts
index 2da2e592..604e89dc 100644
--- a/packages/cli/src/config/settings.ts
+++ b/packages/cli/src/config/settings.ts
@@ -64,7 +64,6 @@ export interface Settings {
toolCallCommand?: string;
mcpServerCommand?: string;
mcpServers?: Record<string, MCPServerConfig>;
- backgroundAgents?: Record<string, MCPServerConfig>;
allowMCPServers?: string[];
excludeMCPServers?: string[];
showMemoryUsage?: boolean;
diff --git a/packages/cli/src/services/CommandService.test.ts b/packages/cli/src/services/CommandService.test.ts
index 5945e3f6..d03bf988 100644
--- a/packages/cli/src/services/CommandService.test.ts
+++ b/packages/cli/src/services/CommandService.test.ts
@@ -96,7 +96,6 @@ describe('CommandService', () => {
mockConfig = {
getIdeMode: vi.fn(),
getCheckpointingEnabled: vi.fn(),
- getBackgroundAgentManager: vi.fn(),
} as unknown as Mocked<Config>;
vi.mocked(ideCommand).mockReturnValue(null);
vi.mocked(restoreCommand).mockReturnValue(null);
diff --git a/packages/cli/src/services/CommandService.ts b/packages/cli/src/services/CommandService.ts
index 9db4e9e6..def8cfcc 100644
--- a/packages/cli/src/services/CommandService.ts
+++ b/packages/cli/src/services/CommandService.ts
@@ -7,7 +7,6 @@
import { Config } from '@google/gemini-cli-core';
import { SlashCommand } from '../ui/commands/types.js';
import { memoryCommand } from '../ui/commands/memoryCommand.js';
-import { backgroundCommand } from '../ui/commands/backgroundCommand.js';
import { helpCommand } from '../ui/commands/helpCommand.js';
import { clearCommand } from '../ui/commands/clearCommand.js';
import { corgiCommand } from '../ui/commands/corgiCommand.js';
@@ -34,7 +33,6 @@ const loadBuiltInCommands = async (
const allCommands = [
aboutCommand,
authCommand,
- backgroundCommand(config),
bugCommand,
chatCommand,
clearCommand,
diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx
index 24d30f74..e03c80ae 100644
--- a/packages/cli/src/ui/App.test.tsx
+++ b/packages/cli/src/ui/App.test.tsx
@@ -9,7 +9,6 @@ import { render } from 'ink-testing-library';
import { AppWrapper as App } from './App.js';
import {
Config as ServerConfig,
- BackgroundAgentManager,
MCPServerConfig,
ApprovalMode,
ToolRegistry,
@@ -52,7 +51,6 @@ interface MockServerConfig {
getSandbox: Mock<() => SandboxConfig | undefined>;
getTargetDir: Mock<() => string>;
getToolRegistry: Mock<() => ToolRegistry>; // Use imported ToolRegistry type
- getBackgroundAgentManager: Mock<() => BackgroundAgentManager>;
getDebugMode: Mock<() => boolean>;
getQuestion: Mock<() => string | undefined>;
getFullContext: Mock<() => boolean>;
@@ -119,7 +117,6 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
getSandbox: vi.fn(() => opts.sandbox),
getTargetDir: vi.fn(() => opts.targetDir || '/test/dir'),
getToolRegistry: vi.fn(() => ({}) as ToolRegistry), // Simple mock
- getBackgroundAgentManager: vi.fn(() => new BackgroundAgentManager([])),
getDebugMode: vi.fn(() => opts.debugMode || false),
getQuestion: vi.fn(() => opts.question),
getFullContext: vi.fn(() => opts.fullContext ?? false),
diff --git a/packages/cli/src/ui/commands/backgroundCommand.ts b/packages/cli/src/ui/commands/backgroundCommand.ts
deleted file mode 100644
index cbeb18df..00000000
--- a/packages/cli/src/ui/commands/backgroundCommand.ts
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- * @license
- * Copyright 2025 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-
-import { SlashCommand, CommandContext } from './types.js';
-import {
- Config,
- BackgroundAgentMessage,
- partListUnionToString,
-} from '@google/gemini-cli-core';
-
-const MAX_STATUS_MESSAGE_LENGTH = 100;
-
-function toMessageString(message?: BackgroundAgentMessage): string {
- return partListUnionToString(message?.parts ?? []).trim();
-}
-
-function toOneliner(input: string, maxlength: number) {
- let output = input.replace(/\r?\n|\r/g, ' ');
- if (output.length > maxlength) {
- output = output.substring(0, maxlength) + '...';
- }
- return output;
-}
-
-function getActiveAgent(context: CommandContext) {
- const agent =
- context.services.config?.getBackgroundAgentManager()?.activeAgent;
- if (!agent) {
- throw Error('There is no active background agent.');
- }
- return agent;
-}
-
-function addClientHistory(context: CommandContext, text: string) {
- context.services.config!.getGeminiClient().addHistory({
- role: 'user',
- parts: [{ text }],
- });
-
- context.services.config!.getGeminiClient().addHistory({
- role: 'model',
- parts: [{ text: 'Got it.' }],
- });
-}
-
-const startSubcommand: SlashCommand = {
- name: 'start',
- description:
- 'Start a new task with the provided prompt. Usage: /bg start <prompt>',
- action: async (context, args) => {
- if (!args || args.trim() === '') {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `start` command requires a prompt.',
- };
- }
-
- const agent = getActiveAgent(context);
- const task = await agent.startTask(args);
-
- addClientHistory(
- context,
- `I started a background task with id '${task.id}' and prompt:\n${args}`,
- );
-
- return {
- type: 'message',
- messageType: 'info',
- content: `Started background task with id '${task.id}' and prompt:\n${args}`,
- };
- },
-};
-
-const stopSubcommand: SlashCommand = {
- name: 'stop',
- description: 'Stops a running task. Usage: /bg stop <task_id>',
- action: async (context, args) => {
- if (!args || args.trim() === '') {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `stop` command requires a task id.',
- };
- }
- const agent = getActiveAgent(context);
- await agent.cancelTask(args);
- addClientHistory(context, `I canceled the background task with id ${args}`);
- return {
- type: 'message',
- messageType: 'info',
- content: `Stopped background task with id ${args}.`,
- };
- },
-};
-
-const listSubcommand: SlashCommand = {
- name: 'list',
- description: 'List all tasks',
- action: async (context, args) => {
- if (args && args.trim() !== '') {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `list` command takes no arguments.',
- };
- }
-
- const agent = getActiveAgent(context);
- const tasks = await agent.listTasks();
- let content: string;
- if (tasks.length === 0) {
- content = 'No background tasks found.';
- } else {
- const taskList = tasks
- .map((task) => {
- const shortStatus = toOneliner(
- toMessageString(task.status.message),
- MAX_STATUS_MESSAGE_LENGTH,
- );
- return ` - ${task.id}: (${task.status.state}) ${shortStatus}`;
- })
- .join('\n');
- content = `Background tasks:\n${taskList}`;
- }
- return {
- type: 'message',
- messageType: 'info',
- content,
- };
- },
-};
-
-const getSubcommand: SlashCommand = {
- name: 'get',
- description: 'View a task. Usage: /bg get <task_id>',
- action: async (context, args) => {
- if (!args || args.trim() === '') {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `get` command requires a task id.',
- };
- }
- const agent = getActiveAgent(context);
- const task = await agent.getTask(args);
- const content = `Task Details for ${task.id}:
-Status: (${task.status.state}) ${toMessageString(task.status.message)}}`;
-
- return {
- type: 'message',
- messageType: 'info',
- content,
- };
- },
-};
-
-const logsSubcommand: SlashCommand = {
- name: 'logs',
- description: "View a task's recent logs. Usage: /bg log <task_id>",
- action: async (context, args) => {
- if (!args || args.trim() === '') {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `log` command requires a task id.',
- };
- }
- const agent = getActiveAgent(context);
- const task = await agent.getTask(args, 5);
- const contents = [
- `Task logs for ${task.id}. status: (${task.status.state})`,
- ];
- (task.history ?? []).forEach((message) => {
- contents.push(toMessageString(message));
- });
- return {
- type: 'message',
- messageType: 'info',
- content: contents.join('\n\n'),
- };
- },
-};
-
-const messageSubcommand: SlashCommand = {
- name: 'message',
- description:
- 'Send a message to a task. Usage: /bg message <task_id> <message>',
- action: async (context, args) => {
- if (!args || args.trim() === '' || !args.trim().includes(' ')) {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `message` command requires a task id and a message.',
- };
- }
-
- const firstSpaceIndex = args.indexOf(' ');
- const id = args.substring(0, firstSpaceIndex);
- const message = args.substring(firstSpaceIndex + 1);
-
- const agent = getActiveAgent(context);
- await agent.messageTask(id, message);
- addClientHistory(
- context,
- `I sent a message to the background task with id '${id}':\n${message}`,
- );
-
- return {
- type: 'message',
- messageType: 'info',
- content: `Sent a message to the background task with id '${id}':\n${message}`,
- };
- },
-};
-
-const deleteSubcommand: SlashCommand = {
- name: 'delete',
- description: 'Deletes a task. Usage: /bg delete <task_id>',
- action: async (context, args) => {
- if (!args) {
- return {
- type: 'message',
- messageType: 'error',
- content: 'The `delete` command requires a task id.',
- };
- }
- const agent = getActiveAgent(context);
- await agent.deleteTask(args);
- addClientHistory(context, `I deleted the background task with id ${args}`);
- return {
- type: 'message',
- messageType: 'info',
- content: `Task ${args} deleted.`,
- };
- },
-};
-
-export const backgroundCommand = (
- config: Config | null,
-): SlashCommand | null => {
- if (!config?.getBackgroundAgentManager()?.activeAgent) {
- return null;
- }
- return {
- name: 'background',
- altName: 'bg',
- description: "Commands for managing the background agent's tasks",
- subCommands: [
- startSubcommand,
- stopSubcommand,
- listSubcommand,
- getSubcommand,
- logsSubcommand,
- messageSubcommand,
- deleteSubcommand,
- ],
- };
-};