feat: Add intelligent auto-router and enhanced integrations

- 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>
This commit is contained in:
admin
2026-01-28 00:27:56 +04:00
Unverified
parent 3b128ba3bd
commit b52318eeae
1724 changed files with 351216 additions and 0 deletions

View File

@@ -0,0 +1,154 @@
import { z } from 'zod';
/**
* Schema for validating file extensions (must start with a dot)
*/
const FileExtensionSchema = z
.string()
.regex(
/^\.[A-Za-z0-9][A-Za-z0-9._-]*$/,
'Extensions must start with a dot and may include alphanumerics, dot, underscore, or hyphen (e.g., .d.ts, .tar.gz)'
)
.describe('File extension pattern starting with a dot; supports multi-part extensions');
/**
* Schema for filesystem resource configuration
*/
const FileSystemResourceSchema = z
.object({
type: z.literal('filesystem'),
paths: z
.array(z.string())
.min(1)
.describe('File paths or directories to expose as resources (at least one required)'),
maxDepth: z
.number()
.min(1)
.max(10)
.default(3)
.describe('Maximum directory depth to traverse (default: 3)'),
maxFiles: z
.number()
.min(1)
.max(10000)
.default(1000)
.describe('Maximum number of files to include (default: 1000)'),
includeHidden: z
.boolean()
.default(false)
.describe('Include hidden files and directories (default: false)'),
includeExtensions: z
.array(FileExtensionSchema)
.default([
'.txt',
'.md',
'.js',
'.ts',
'.json',
'.html',
'.css',
'.py',
'.yaml',
'.yml',
'.xml',
'.jsx',
'.tsx',
'.vue',
'.php',
'.rb',
'.go',
'.rs',
'.java',
'.kt',
'.swift',
'.sql',
'.sh',
'.bash',
'.zsh',
])
.describe('File extensions to include (default: common text files)'),
})
.strict();
/**
* Validated filesystem resource configuration type
*/
export type ValidatedFileSystemResourceConfig = z.output<typeof FileSystemResourceSchema>;
/**
* Schema for blob storage resource configuration
*
* NOTE: This only enables the blob resource provider.
* Actual blob storage settings (size limits, backend, cleanup) are configured
* in the 'storage.blob' section of the agent config.
*/
const BlobResourceSchema = z
.object({
type: z.literal('blob').describe('Enable blob storage resource provider'),
})
.strict()
.describe(
'Blob resource provider configuration - actual storage settings are in storage.blob section'
);
/**
* Validated blob resource configuration type
*/
export type ValidatedBlobResourceConfig = z.output<typeof BlobResourceSchema>;
/**
* Union schema for all internal resource types (composed from individual schemas)
*/
export const InternalResourceConfigSchema = z.discriminatedUnion('type', [
FileSystemResourceSchema,
BlobResourceSchema,
]);
/**
* Validated union type for all internal resource configurations
*/
export type ValidatedInternalResourceConfig = z.output<typeof InternalResourceConfigSchema>;
/**
* Schema for internal resources configuration with smart auto-enable logic
*
* Design principles:
* - Clean input format: just specify resources array or object
* - Auto-enable when resources are specified
* - Backward compatibility with explicit enabled field
* - Empty/omitted = disabled
*/
export const InternalResourcesSchema = z
.union([
z.array(InternalResourceConfigSchema), // array-only form
z
.object({
enabled: z
.boolean()
.optional()
.describe('Explicit toggle; auto-enabled when resources are non-empty'),
resources: z
.array(InternalResourceConfigSchema)
.default([])
.describe('List of internal resource configurations'),
})
.strict(),
])
.default([])
.describe(
'Internal resource configuration. Can be an array of resources (auto-enabled) or object with enabled field'
)
.transform((input) => {
if (Array.isArray(input)) {
return { enabled: input.length > 0, resources: input };
}
const enabled = input.enabled !== undefined ? input.enabled : input.resources.length > 0;
return { enabled, resources: input.resources };
});
export type InternalResourcesConfig = z.input<typeof InternalResourcesSchema>;
export type ValidatedInternalResourcesConfig = z.output<typeof InternalResourcesSchema>;
export function isInternalResourcesEnabled(config: ValidatedInternalResourcesConfig): boolean {
return config.enabled && config.resources.length > 0;
}