You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.1 KiB
58 lines
2.1 KiB
import { sqliteTable, text, integer, uniqueIndex, index } from "drizzle-orm/sqlite-core";
|
|
|
|
// ============ AgentToolType ENUM ============
|
|
export const AgentToolTypes = ["fetch"] as const;
|
|
export type AgentToolType = (typeof AgentToolTypes)[number];
|
|
|
|
// ============ AgentToolStatus ENUM ============
|
|
export const AgentToolLogStatuses = ["success", "error", "timeout"] as const;
|
|
export type AgentToolLogStatus = (typeof AgentToolLogStatuses)[number];
|
|
|
|
// ============ AgentTool(工具定义表)============
|
|
export const agentTools = sqliteTable(
|
|
"agent_tools",
|
|
{
|
|
id: text("id").primaryKey(),
|
|
name: text("name", { length: 50 }).notNull(),
|
|
slug: text("slug", { length: 50 }).notNull(),
|
|
description: text("description").notNull(),
|
|
type: text("type", { length: 30 }).notNull(),
|
|
config: text("config").notNull(),
|
|
enabled: integer("enabled").default(1).notNull(),
|
|
sortOrder: integer("sort_order").default(0).notNull(),
|
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
|
.defaultNow()
|
|
.notNull(),
|
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
|
.defaultNow()
|
|
.$onUpdate(() => new Date())
|
|
.notNull(),
|
|
},
|
|
(table) => [
|
|
uniqueIndex("agent_tools_slug_idx").on(table.slug),
|
|
index("agent_tools_enabled_idx").on(table.enabled),
|
|
],
|
|
);
|
|
|
|
// ============ AgentToolLog(工具执行日志表)============
|
|
export const agentToolLogs = sqliteTable(
|
|
"agent_tool_logs",
|
|
{
|
|
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
toolId: text("tool_id").notNull(),
|
|
toolSlug: text("tool_slug", { length: 50 }).notNull(),
|
|
userId: integer("user_id"),
|
|
input: text("input").notNull(),
|
|
output: text("output"),
|
|
status: text("status", { length: 20 }).notNull(),
|
|
errorMessage: text("error_message"),
|
|
durationMs: integer("duration_ms").notNull(),
|
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
|
.defaultNow()
|
|
.notNull(),
|
|
},
|
|
(table) => [
|
|
index("agent_tool_logs_tool_id_idx").on(table.toolId),
|
|
index("agent_tool_logs_created_at_idx").on(table.createdAt),
|
|
],
|
|
);
|
|
|