- 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>
78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
/**
|
|
* AgentConfigEditor
|
|
*
|
|
* Monaco-based YAML editor component for editing agent configuration files.
|
|
* Provides syntax highlighting, line numbers, and configurable editor options.
|
|
* Validation is handled externally via the onValidate callback.
|
|
*/
|
|
|
|
import React, { useRef, useEffect } from 'react';
|
|
import Editor, { type OnMount } from '@monaco-editor/react';
|
|
import type { editor } from 'monaco-editor';
|
|
|
|
interface AgentConfigEditorProps {
|
|
value: string;
|
|
onChange: (value: string) => void;
|
|
onValidate?: (markers: editor.IMarker[]) => void;
|
|
readOnly?: boolean;
|
|
height?: string;
|
|
}
|
|
|
|
export default function AgentConfigEditor({
|
|
value,
|
|
onChange,
|
|
onValidate,
|
|
readOnly = false,
|
|
height = '100%',
|
|
}: AgentConfigEditorProps) {
|
|
const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);
|
|
|
|
useEffect(() => {
|
|
// Set up validation when editor is mounted
|
|
if (editorRef.current && onValidate) {
|
|
const model = editorRef.current.getModel();
|
|
if (model) {
|
|
// Server-side validation is handled via API
|
|
// Monaco provides basic YAML syntax highlighting
|
|
}
|
|
}
|
|
}, [onValidate]);
|
|
|
|
const handleEditorDidMount: OnMount = (editorInstance) => {
|
|
editorRef.current = editorInstance as editor.IStandaloneCodeEditor;
|
|
|
|
// Configure editor options
|
|
editorInstance.updateOptions({
|
|
minimap: { enabled: false },
|
|
scrollBeyondLastLine: false,
|
|
fontSize: 13,
|
|
lineNumbers: 'on',
|
|
renderLineHighlight: 'all',
|
|
folding: true,
|
|
automaticLayout: true,
|
|
});
|
|
};
|
|
|
|
const handleEditorChange = (value: string | undefined) => {
|
|
if (value !== undefined) {
|
|
onChange(value);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<Editor
|
|
height={height}
|
|
defaultLanguage="yaml"
|
|
value={value}
|
|
onChange={handleEditorChange}
|
|
onMount={handleEditorDidMount}
|
|
theme="vs-dark"
|
|
options={{
|
|
readOnly,
|
|
wordWrap: 'on',
|
|
tabSize: 2,
|
|
}}
|
|
/>
|
|
);
|
|
}
|