summaryrefslogtreecommitdiff
path: root/packages/cli/src/services/prompt-processors/argumentProcessor.ts
diff options
context:
space:
mode:
authorAbhi <[email protected]>2025-07-23 16:11:23 -0400
committerGitHub <[email protected]>2025-07-23 20:11:23 +0000
commitbbe95f1eaa8f5351c58e0866ba938415db7891e4 (patch)
tree045bd725f24d5b197b5cebaad3a4074c14a99ba1 /packages/cli/src/services/prompt-processors/argumentProcessor.ts
parent2d1eafae95b7a140ac42ea5899f2f4ff6bca80ae (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.ts34
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;
+ }
+}