diff options
| author | Abhi <[email protected]> | 2025-07-23 16:11:23 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-23 20:11:23 +0000 |
| commit | bbe95f1eaa8f5351c58e0866ba938415db7891e4 (patch) | |
| tree | 045bd725f24d5b197b5cebaad3a4074c14a99ba1 /packages/cli/src/services/prompt-processors/argumentProcessor.ts | |
| parent | 2d1eafae95b7a140ac42ea5899f2f4ff6bca80ae (diff) | |
feat(commands): Implement argument handling for custom commands via a prompt pipeline (#4702)
Diffstat (limited to 'packages/cli/src/services/prompt-processors/argumentProcessor.ts')
| -rw-r--r-- | packages/cli/src/services/prompt-processors/argumentProcessor.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/cli/src/services/prompt-processors/argumentProcessor.ts b/packages/cli/src/services/prompt-processors/argumentProcessor.ts new file mode 100644 index 00000000..a7efeea9 --- /dev/null +++ b/packages/cli/src/services/prompt-processors/argumentProcessor.ts @@ -0,0 +1,34 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { IPromptProcessor, SHORTHAND_ARGS_PLACEHOLDER } from './types.js'; +import { CommandContext } from '../../ui/commands/types.js'; + +/** + * Replaces all instances of `{{args}}` in a prompt with the user-provided + * argument string. + */ +export class ShorthandArgumentProcessor implements IPromptProcessor { + async process(prompt: string, context: CommandContext): Promise<string> { + return prompt.replaceAll( + SHORTHAND_ARGS_PLACEHOLDER, + context.invocation!.args, + ); + } +} + +/** + * Appends the user's full command invocation to the prompt if arguments are + * provided, allowing the model to perform its own argument parsing. + */ +export class DefaultArgumentProcessor implements IPromptProcessor { + async process(prompt: string, context: CommandContext): Promise<string> { + if (context.invocation!.args) { + return `${prompt}\n\n${context.invocation!.raw}`; + } + return prompt; + } +} |
