// .kiro/plugins/database.ts
import { Plugin, Tool } from '@anthropic-ai/claude-code';
import { Pool } from 'pg';
import { z } from 'zod';
class DatabaseQueryTool implements Tool {
name = 'queryDatabase';
description = 'Execute SQL query';
inputSchema = z.object({
query: z.string(),
});
private pool: Pool;
constructor(pool: Pool) {
this.pool = pool;
}
async execute(input, context) {
try {
const result = await this.pool.query(input.query);
return {
success: true,
output: JSON.stringify(result.rows, null, 2),
};
} catch (error) {
return {
success: false,
error: error.message,
};
}
}
}
export default {
name: 'database-plugin',
version: '1.0.0',
description: 'Database query tools',
tools: [],
onLoad: async (context) => {
const config = await loadPluginConfig('database');
const pool = new Pool({
host: config.host,
database: config.database,
user: config.user,
password: config.password,
});
// 动态添加工具
context.registerTool(new DatabaseQueryTool(pool));
},
onUnload: async () => {
await pool.end();
},
} satisfies Plugin;