@iflow-mcp/ejmockler-brutalist
Version:
Deploy Claude, Codex & Gemini CLI agents to demolish your work before users do. Real file analysis. Brutal honesty. Now with conversation continuation & intelligent pagination.
121 lines • 3.99 kB
TypeScript
/**
* Core abstraction: ArgumentSpace
*
* Defines the parameter schema for a tool - what arguments it accepts.
* Argument spaces are composable and reusable across tools.
*/
import { z } from 'zod';
export interface ArgumentSpace {
/** Unique identifier */
id: string;
/** Human-readable name */
name: string;
/** Base arguments that all tools share */
base: z.ZodObject<any>;
/** Domain-specific arguments */
domain: z.ZodObject<any>;
/** Optional: compute additional arguments from user input */
computed?: (args: any) => Record<string, any>;
/** Optional: validate arguments beyond schema */
validate?: (args: any) => {
valid: boolean;
errors?: string[];
};
}
/**
* Standard base arguments shared by all tools
*/
export declare const BASE_ARGUMENTS: z.ZodObject<{
context: z.ZodOptional<z.ZodString>;
models: z.ZodOptional<z.ZodObject<{
claude: z.ZodOptional<z.ZodString>;
codex: z.ZodOptional<z.ZodString>;
gemini: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
claude?: string | undefined;
codex?: string | undefined;
gemini?: string | undefined;
}, {
claude?: string | undefined;
codex?: string | undefined;
gemini?: string | undefined;
}>>;
clis: z.ZodOptional<z.ZodArray<z.ZodEnum<["claude", "codex", "gemini"]>, "many">>;
force_refresh: z.ZodOptional<z.ZodBoolean>;
context_id: z.ZodOptional<z.ZodString>;
resume: z.ZodOptional<z.ZodBoolean>;
limit: z.ZodOptional<z.ZodNumber>;
offset: z.ZodOptional<z.ZodNumber>;
cursor: z.ZodOptional<z.ZodString>;
verbose: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
context?: string | undefined;
models?: {
claude?: string | undefined;
codex?: string | undefined;
gemini?: string | undefined;
} | undefined;
clis?: ("claude" | "codex" | "gemini")[] | undefined;
force_refresh?: boolean | undefined;
context_id?: string | undefined;
resume?: boolean | undefined;
limit?: number | undefined;
offset?: number | undefined;
cursor?: string | undefined;
verbose?: boolean | undefined;
}, {
context?: string | undefined;
models?: {
claude?: string | undefined;
codex?: string | undefined;
gemini?: string | undefined;
} | undefined;
clis?: ("claude" | "codex" | "gemini")[] | undefined;
force_refresh?: boolean | undefined;
context_id?: string | undefined;
resume?: boolean | undefined;
limit?: number | undefined;
offset?: number | undefined;
cursor?: string | undefined;
verbose?: boolean | undefined;
}>;
/**
* Common argument space: Filesystem-based analysis
*/
export declare const FILESYSTEM_ARGUMENT_SPACE: ArgumentSpace;
/**
* Common argument space: Text-based input
*/
export declare const TEXT_INPUT_ARGUMENT_SPACE: ArgumentSpace;
/**
* Argument space: Filesystem with depth control
*/
export declare const FILESYSTEM_WITH_DEPTH: ArgumentSpace;
/**
* Argument space: Package manifest analysis
*/
export declare const PACKAGE_MANIFEST_SPACE: ArgumentSpace;
/**
* Argument space: Git repository analysis
*/
export declare const GIT_REPOSITORY_SPACE: ArgumentSpace;
/**
* Argument space: Test suite analysis
*/
export declare const TEST_SUITE_SPACE: ArgumentSpace;
/**
* Helper to merge multiple argument spaces
*/
export declare function mergeArgumentSpaces(...spaces: ArgumentSpace[]): ArgumentSpace;
/**
* Helper to infer cache key fields from an argument space
*
* NOTE: Excludes pagination/continuation fields (context_id, resume, offset, limit, cursor, force_refresh)
* as these don't affect the actual analysis content.
*/
export declare function inferCacheKeys(space: ArgumentSpace): string[];
/**
* Helper to infer the primary argument field
*/
export declare function inferPrimaryArg(space: ArgumentSpace): string;
//# sourceMappingURL=argument-space.d.ts.map