- Add intelligent-router.sh hook for automatic agent routing - Add AUTO-TRIGGER-SUMMARY.md documentation - Add FINAL-INTEGRATION-SUMMARY.md documentation - Complete Prometheus integration (6 commands + 4 tools) - Complete Dexto integration (12 commands + 5 tools) - Enhanced Ralph with access to all agents - Fix /clawd command (removed disable-model-invocation) - Update hooks.json to v5 with intelligent routing - 291 total skills now available - All 21 commands with automatic routing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
65 lines
2.5 KiB
TypeScript
65 lines
2.5 KiB
TypeScript
import { OpenAPIHono, createRoute, z } from '@hono/zod-openapi';
|
|
import { listAllProviders } from '@dexto/core';
|
|
|
|
const DiscoveredProviderSchema = z
|
|
.object({
|
|
type: z.string().describe('Provider type identifier'),
|
|
category: z
|
|
.enum(['blob', 'database', 'compaction', 'customTools'])
|
|
.describe('Provider category'),
|
|
metadata: z
|
|
.object({
|
|
displayName: z.string().optional().describe('Human-readable display name'),
|
|
description: z.string().optional().describe('Provider description'),
|
|
})
|
|
.passthrough()
|
|
.optional()
|
|
.describe('Optional metadata about the provider'),
|
|
})
|
|
.describe('Information about a registered provider');
|
|
|
|
const InternalToolSchema = z
|
|
.object({
|
|
name: z
|
|
.string()
|
|
.describe('Internal tool name identifier (e.g., "search_history", "ask_user")'),
|
|
description: z.string().describe('Human-readable description of what the tool does'),
|
|
})
|
|
.describe('Information about an internal tool');
|
|
|
|
const DiscoveryResponseSchema = z
|
|
.object({
|
|
blob: z.array(DiscoveredProviderSchema).describe('Blob storage providers'),
|
|
database: z.array(DiscoveredProviderSchema).describe('Database providers'),
|
|
compaction: z.array(DiscoveredProviderSchema).describe('Compaction strategy providers'),
|
|
customTools: z.array(DiscoveredProviderSchema).describe('Custom tool providers'),
|
|
internalTools: z
|
|
.array(InternalToolSchema)
|
|
.describe('Internal tools available for configuration'),
|
|
})
|
|
.describe('Discovery response with providers grouped by category');
|
|
|
|
export function createDiscoveryRouter() {
|
|
const app = new OpenAPIHono();
|
|
|
|
const discoveryRoute = createRoute({
|
|
method: 'get',
|
|
path: '/discovery',
|
|
summary: 'Discover Available Providers and Tools',
|
|
description:
|
|
'Returns all registered providers (blob storage, database, compaction, custom tools) and available internal tools. Useful for building UIs that need to display configurable options.',
|
|
tags: ['discovery'],
|
|
responses: {
|
|
200: {
|
|
description: 'Available providers grouped by category',
|
|
content: { 'application/json': { schema: DiscoveryResponseSchema } },
|
|
},
|
|
},
|
|
});
|
|
|
|
return app.openapi(discoveryRoute, async (ctx) => {
|
|
const providers = listAllProviders();
|
|
return ctx.json(providers);
|
|
});
|
|
}
|