| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { apiClient, tenantParams } from "./client";
- import type { JSONObject, ToolBinding, ToolCredential, ToolDefinition, ToolVersion } from "@/types";
- export async function listTools() {
- const { data } = await apiClient.get<ToolDefinition[]>("/tools", { params: tenantParams() });
- return data;
- }
- export async function listToolVersions(toolId?: string) {
- const { data } = await apiClient.get<ToolVersion[]>("/tools/versions", { params: tenantParams({ tool_id: toolId }) });
- return data;
- }
- export async function createToolVersion(payload: {
- tenant_id: string;
- tool_id: string;
- timeout_ms?: number | null;
- input_schema_json?: JSONObject;
- output_schema_json?: JSONObject;
- invoke_config_json?: JSONObject;
- retry_policy_json?: JSONObject;
- }) {
- const { data } = await apiClient.post<ToolVersion>("/tools/versions", {
- input_schema_json: {},
- output_schema_json: {},
- invoke_config_json: {},
- retry_policy_json: {},
- ...payload,
- });
- return data;
- }
- export async function listToolBindings(appId?: string) {
- const { data } = await apiClient.get<ToolBinding[]>("/tools/bindings", { params: tenantParams({ app_id: appId }) });
- return data;
- }
- export async function createTool(payload: {
- tenant_id: string;
- plugin_id?: string | null;
- code?: string;
- name: string;
- tool_type: string;
- description?: string | null;
- }) {
- const { data } = await apiClient.post<ToolDefinition>("/tools", {
- ...payload,
- code: payload.code || slugifyName(payload.name, "tool"),
- });
- return data;
- }
- export async function listToolCredentials() {
- const { data } = await apiClient.get<ToolCredential[]>("/tools/credentials", { params: tenantParams() });
- return data;
- }
- export async function createToolCredential(payload: {
- tenant_id: string;
- name: string;
- credential_type: string;
- secret_json: JSONObject;
- metadata_json?: JSONObject;
- }) {
- const { data } = await apiClient.post<ToolCredential>("/tools/credentials", payload);
- return data;
- }
- function slugifyName(value: string, fallback: string) {
- const slug = value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
- return slug || `${fallback}_${Date.now().toString(36)}`;
- }
|