@toolplex/client
Version:
The official ToolPlex client for AI agent tool discovery and execution
159 lines (158 loc) • 4.68 kB
JavaScript
// src/types/types.ts
import { z } from "zod";
// --------------------
// Enums
// --------------------
export const TransportTypeSchema = z.enum(["stdio", "sse"]);
export const RuntimeSchema = z.enum(["node", "python", "go", "docker"]);
// --------------------
// LLMContext
// --------------------
export const LLMContextSchema = z
.object({
model_family: z.string(),
model_name: z.string().min(1),
model_version: z.string(),
chat_client: z.string().optional(),
})
.strict();
// --------------------
// ServerConfig
// --------------------
export const ServerConfigSchema = z.object({
server_name: z.string().optional(),
description: z.string().optional(),
command: z.string().optional(),
args: z.array(z.string()).optional(),
runtime: RuntimeSchema.optional(),
env: z.record(z.string()).optional(),
url: z.string().optional(),
transport: TransportTypeSchema,
});
// --------------------
// InitializeToolplexParams
// --------------------
export const InitializeToolplexParamsSchema = z.object({
llm_context: LLMContextSchema,
});
// --------------------
// SearchParams
// --------------------
export const SearchParamsSchema = z.object({
query: z.string(),
expanded_keywords: z.array(z.string()).optional(),
filter: z.enum(["all", "servers_only", "playbooks_only"]).optional(),
size: z.number().int().min(1).max(25).optional(),
scope: z.enum(["all", "public_only", "private_only"]).optional(),
});
// --------------------
// LookupEntityParams
// --------------------
export const LookupEntityParamsSchema = z.object({
entity_type: z.enum(["server", "playbook", "feedback"]),
entity_id: z.string(),
});
// --------------------
// InstallParams
// --------------------
export const InstallParamsSchema = z.object({
server_id: z.string(),
server_name: z.string(),
description: z.string(),
config: ServerConfigSchema,
});
// --------------------
// ListToolsParams
// --------------------
export const ListToolsParamsSchema = z.object({
server_id: z.string().optional(),
});
// --------------------
// GetServerConfigParams
// --------------------
export const GetServerConfigParamsSchema = z.object({
server_id: z.string().optional(),
});
// --------------------
// CallToolParams
// --------------------
export const CallToolParamsSchema = z.object({
server_id: z.string(),
tool_name: z.string(),
arguments: z.record(z.any()),
});
// --------------------
// UninstallParams
// --------------------
export const UninstallParamsSchema = z.object({
server_id: z.string(),
});
// --------------------
// PlaybookAction (shared type for actions)
// --------------------
export const PlaybookActionSchema = z.object({
do: z.string(),
call: z.string().optional(),
args: z
.record(z.object({
type: z.enum([
"string",
"number",
"boolean",
"array",
"object",
"placeholder",
]),
example: z.any(),
}))
.optional(),
});
// --------------------
// SavePlaybookParams
// --------------------
export const SavePlaybookParamsSchema = z.object({
playbook_name: z.string(),
description: z.string(),
// Requires at least one action to have a "call" property
actions: z
.array(PlaybookActionSchema)
.refine((actions) => actions.some((action) => typeof action.call === "string" && action.call.length > 0), {
message: 'At least one action must include a "call" property',
path: ["actions"],
}),
domain: z.string().optional(),
keywords: z.array(z.string()).optional(),
requirements: z.array(z.string()).optional(),
privacy: z.enum(["public", "private"]).optional(),
source_playbook_id: z.string().optional(),
fork_reason: z.string().optional(),
});
// --------------------
// LogPlaybookUsageParams
// --------------------
export const LogPlaybookUsageParamsSchema = z.object({
playbook_id: z.string(),
success: z.boolean(),
error_message: z.string().optional(),
});
// --------------------
// SubmitFeedbackParams
// --------------------
export const SubmitFeedbackParamsSchema = z.object({
target_type: z.enum(["server", "playbook"]),
target_id: z.string(),
vote: z.enum(["up", "down"]),
message: z.string().optional(),
security_assessment: z
.object({
security_flags: z.array(z.union([
z.string(),
z.object({
custom_flag: z.string(),
}),
])),
risk_assessment: z.string(),
context_note: z.string().optional(),
})
.optional(),
});