/**
* relay_policies_list Tool
*
* List all configured policies for standardized AI execution patterns.
* Policies encapsulate model selection, fallback behavior, and cost controls.
*/
import { z } from 'zod';
import { relay } from '@relayplane/sdk';
export const relayPoliciesListSchema = z.object({});
export type RelayPoliciesListInput = z.infer<typeof relayPoliciesListSchema>;
export interface PolicySummary {
id: string;
name?: string;
description?: string;
model: string;
fallback?: string[];
hasCostCaps: boolean;
hasRetry: boolean;
}
export interface RelayPoliciesListResponse {
policies: PolicySummary[];
total: number;
}
export async function relayPoliciesList(
_input: RelayPoliciesListInput
): Promise<RelayPoliciesListResponse> {
const allPolicies = relay.getAllPolicies();
const summaries: PolicySummary[] = Object.entries(allPolicies).map(([id, policy]) => ({
id,
name: policy.name,
description: policy.description,
model: policy.model,
fallback: policy.fallback,
hasCostCaps: Boolean(policy.costCaps),
hasRetry: Boolean(policy.retry),
}));
// Sort by ID for consistent ordering
summaries.sort((a, b) => a.id.localeCompare(b.id));
return {
policies: summaries,
total: summaries.length,
};
}
export const relayPoliciesListDefinition = {
name: 'relay_policies_list',
description:
'List all configured policies. Policies are pre-defined execution patterns with model selection, fallbacks, and cost controls. Returns policy IDs, models, and configuration flags.',
inputSchema: {
type: 'object' as const,
properties: {},
},
};