summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/hooks/slashCommandProcessor.ts
diff options
context:
space:
mode:
authorShreya Keshive <[email protected]>2025-07-29 16:20:37 -0400
committerGitHub <[email protected]>2025-07-29 20:20:37 +0000
commit293bb820193a41aee6f1421367a2d1fc6d836422 (patch)
tree639f1cb516ea4f0dd772a0a54a20790f5a63520c /packages/cli/src/ui/hooks/slashCommandProcessor.ts
parent80079cd2a5741d7024c8500853fe7a3af5e6ba0a (diff)
Adds centralized support to log slash commands + sub commands (#5128)
Diffstat (limited to 'packages/cli/src/ui/hooks/slashCommandProcessor.ts')
-rw-r--r--packages/cli/src/ui/hooks/slashCommandProcessor.ts15
1 files changed, 15 insertions, 0 deletions
diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.ts
index be32de11..e315ba97 100644
--- a/packages/cli/src/ui/hooks/slashCommandProcessor.ts
+++ b/packages/cli/src/ui/hooks/slashCommandProcessor.ts
@@ -13,6 +13,8 @@ import {
Config,
GitService,
Logger,
+ logSlashCommand,
+ SlashCommandEvent,
ToolConfirmationOutcome,
} from '@google/gemini-cli-core';
import { useSessionStats } from '../contexts/SessionContext.js';
@@ -233,6 +235,7 @@ export const useSlashCommandProcessor = (
let currentCommands = commands;
let commandToExecute: SlashCommand | undefined;
let pathIndex = 0;
+ const canonicalPath: string[] = [];
for (const part of commandPath) {
// TODO: For better performance and architectural clarity, this two-pass
@@ -253,6 +256,7 @@ export const useSlashCommandProcessor = (
if (foundCommand) {
commandToExecute = foundCommand;
+ canonicalPath.push(foundCommand.name);
pathIndex++;
if (foundCommand.subCommands) {
currentCommands = foundCommand.subCommands;
@@ -268,6 +272,17 @@ export const useSlashCommandProcessor = (
const args = parts.slice(pathIndex).join(' ');
if (commandToExecute.action) {
+ if (config) {
+ const resolvedCommandPath = canonicalPath;
+ const event = new SlashCommandEvent(
+ resolvedCommandPath[0],
+ resolvedCommandPath.length > 1
+ ? resolvedCommandPath.slice(1).join(' ')
+ : undefined,
+ );
+ logSlashCommand(config, event);
+ }
+
const fullCommandContext: CommandContext = {
...commandContext,
invocation: {