@agent-native/core 0.12.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"ResourceEditor.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiBnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qFAAqF;IACrF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkiCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,MAAM,EACN,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,GACZ,EAAE,mBAAmB,2CAuLrB"}
|
|
@@ -546,6 +546,7 @@ function VisualMarkdownEditor({ content, onChange, resourcePath, }) {
|
|
|
546
546
|
StarterKit.configure({
|
|
547
547
|
heading: { levels: [1, 2, 3] },
|
|
548
548
|
codeBlock: {},
|
|
549
|
+
link: false,
|
|
549
550
|
dropcursor: { color: "hsl(var(--ring))", width: 2 },
|
|
550
551
|
}),
|
|
551
552
|
Placeholder.configure({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceEditor.js","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n} from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { cn } from \"../utils.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport type { Resource } from \"./use-resources.js\";\nimport {\n type ParsedFrontmatter,\n getRemoteAgentIdFromPath,\n getFrontmatterValue,\n isCustomAgentPath,\n isRemoteAgentPath,\n isSkillPath,\n parseFrontmatter,\n serializeFrontmatter,\n} from \"../../resources/metadata.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\n\nexport interface ResourceEditorProps {\n resource: Resource;\n onSave: (content: string) => void;\n /** Controlled view mode — if provided, the editor won't manage its own view state */\n view?: \"visual\" | \"code\";\n onViewChange?: (v: \"visual\" | \"code\") => void;\n /** Called whenever save status changes */\n onSaveStatusChange?: (status: \"idle\" | \"saving\" | \"saved\") => void;\n /** When true, the editor's internal toolbar row is hidden */\n hideToolbar?: boolean;\n}\n\nconst CONTROL_STYLE = { fontSize: 12, lineHeight: 1 } as const;\n\nconst VIEW_PREF_KEY = \"resource-editor-view\";\n\nfunction getViewPref(): \"visual\" | \"code\" {\n try {\n const v = localStorage.getItem(VIEW_PREF_KEY);\n if (v === \"code\") return \"code\";\n } catch {}\n return \"visual\";\n}\n\nfunction setViewPref(v: \"visual\" | \"code\") {\n try {\n localStorage.setItem(VIEW_PREF_KEY, v);\n } catch {}\n}\n\nconst FM_INPUT_STYLE: React.CSSProperties = {\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n color: \"inherit\",\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n width: \"100%\",\n padding: 0,\n};\n\nfunction FrontmatterBar({\n resourcePath,\n frontmatter,\n onChange,\n}: {\n resourcePath: string;\n frontmatter: ParsedFrontmatter;\n onChange: (updated: ParsedFrontmatter) => void;\n}) {\n const getField = (key: string) => getFrontmatterValue(frontmatter, key) ?? \"\";\n\n const updateField = (key: string, value: string) => {\n const exists = frontmatter.fields.some((f) => f.key === key);\n const newFields = exists\n ? frontmatter.fields.map((f) => (f.key === key ? { ...f, value } : f))\n : [...frontmatter.fields, { key, value }];\n const updated: ParsedFrontmatter = {\n ...frontmatter,\n raw: serializeFrontmatter(newFields),\n fields: newFields,\n };\n onChange(updated);\n };\n\n const name = getField(\"name\");\n const description = getField(\"description\");\n const isUserInvocable = getField(\"user-invocable\") === \"true\";\n const model = getField(\"model\") || \"inherit\";\n const tools = getField(\"tools\") || \"inherit\";\n const isCustomAgent = isCustomAgentPath(resourcePath);\n const isSkill = isSkillPath(resourcePath);\n\n return (\n <div\n style={{\n padding: \"8px 12px\",\n marginBottom: 8,\n borderRadius: 6,\n background: \"hsl(var(--muted) / 0.5)\",\n border: \"1px solid hsl(var(--border) / 0.5)\",\n fontSize: 12,\n lineHeight: 1.5,\n color: \"hsl(var(--muted-foreground))\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <input\n value={name}\n onChange={(e) => updateField(\"name\", e.target.value)}\n placeholder={isCustomAgent ? \"Agent name\" : \"Skill name\"}\n style={{\n ...FM_INPUT_STYLE,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontSize: 13,\n flex: 1,\n }}\n />\n {isSkill ? (\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n fontSize: 10,\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n padding: \"1px 5px\",\n borderRadius: 3,\n background: isUserInvocable\n ? \"hsl(var(--primary) / 0.15)\"\n : \"transparent\",\n color: isUserInvocable\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--muted-foreground))\",\n border: isUserInvocable\n ? \"none\"\n : \"1px dashed hsl(var(--border))\",\n fontWeight: 500,\n }}\n >\n <input\n type=\"checkbox\"\n checked={isUserInvocable}\n onChange={(e) =>\n updateField(\n \"user-invocable\",\n e.target.checked ? \"true\" : \"false\",\n )\n }\n style={{ display: \"none\" }}\n />\n /{name || \"command\"}\n </label>\n ) : null}\n {isCustomAgent ? (\n <select\n value={model}\n onChange={(e) => updateField(\"model\", e.target.value)}\n style={{\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--background))\",\n color: \"hsl(var(--foreground))\",\n fontSize: 11,\n padding: \"2px 6px\",\n }}\n >\n <option value=\"inherit\">Default model</option>\n <option value=\"claude-sonnet-4-6\">Claude Sonnet 4.6</option>\n <option value=\"claude-haiku-4-5-20251001\">Claude Haiku 4.5</option>\n </select>\n ) : null}\n </div>\n <input\n value={description}\n onChange={(e) => updateField(\"description\", e.target.value)}\n placeholder={\n isCustomAgent\n ? \"Description — what this agent should handle\"\n : \"Description — what this skill does\"\n }\n style={{\n ...FM_INPUT_STYLE,\n marginTop: 2,\n opacity: 0.8,\n color: \"hsl(var(--muted-foreground))\",\n }}\n />\n {isCustomAgent ? (\n <div\n style={{\n display: \"flex\",\n gap: 8,\n marginTop: 6,\n alignItems: \"center\",\n }}\n >\n <label\n style={{\n fontSize: 10,\n color: \"hsl(var(--muted-foreground))\",\n minWidth: 28,\n }}\n >\n Tools\n </label>\n <select\n value={tools}\n onChange={(e) => updateField(\"tools\", e.target.value)}\n style={{\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--background))\",\n color: \"hsl(var(--foreground))\",\n fontSize: 11,\n padding: \"2px 6px\",\n }}\n >\n <option value=\"inherit\">Inherit</option>\n <option value=\"allowlist\">Allowlist later</option>\n <option value=\"denylist\">Denylist later</option>\n </select>\n </div>\n ) : null}\n </div>\n );\n}\n\n// --- Slash Command Menu ---\n\ninterface CommandItem {\n title: string;\n description: string;\n icon: string;\n action: (editor: any) => void;\n}\n\nconst slashCommands: CommandItem[] = [\n {\n title: \"Text\",\n description: \"Plain text\",\n icon: \"T\",\n action: (editor) => editor.chain().focus().setParagraph().run(),\n },\n {\n title: \"Heading 1\",\n description: \"Large heading\",\n icon: \"H1\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 1 }).run(),\n },\n {\n title: \"Heading 2\",\n description: \"Medium heading\",\n icon: \"H2\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 2 }).run(),\n },\n {\n title: \"Heading 3\",\n description: \"Small heading\",\n icon: \"H3\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 3 }).run(),\n },\n {\n title: \"Bullet List\",\n description: \"Unordered list\",\n icon: \"•\",\n action: (editor) => editor.chain().focus().toggleBulletList().run(),\n },\n {\n title: \"Numbered List\",\n description: \"Ordered list\",\n icon: \"1.\",\n action: (editor) => editor.chain().focus().toggleOrderedList().run(),\n },\n {\n title: \"Code Block\",\n description: \"Code snippet\",\n icon: \"<>\",\n action: (editor) => editor.chain().focus().toggleCodeBlock().run(),\n },\n {\n title: \"Quote\",\n description: \"Block quote\",\n icon: '\"',\n action: (editor) => editor.chain().focus().toggleBlockquote().run(),\n },\n {\n title: \"Divider\",\n description: \"Horizontal rule\",\n icon: \"—\",\n action: (editor) => editor.chain().focus().setHorizontalRule().run(),\n },\n];\n\nfunction SlashMenu({ editor }: { editor: any }) {\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n flipUp: boolean;\n } | null>(null);\n const slashPosRef = useRef<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filteredCommands = useMemo(\n () =>\n slashCommands.filter(\n (cmd) =>\n cmd.title.toLowerCase().includes(query.toLowerCase()) ||\n cmd.description.toLowerCase().includes(query.toLowerCase()),\n ),\n [query],\n );\n\n const executeCommand = useCallback(\n (cmd: CommandItem) => {\n if (slashPosRef.current !== null) {\n const { from } = editor.state.selection;\n editor\n .chain()\n .focus()\n .deleteRange({ from: slashPosRef.current, to: from })\n .run();\n }\n cmd.action(editor);\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n },\n [editor],\n );\n\n useEffect(() => {\n if (!editor) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isOpen) return;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((i) => (i + 1) % filteredCommands.length);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex(\n (i) => (i - 1 + filteredCommands.length) % filteredCommands.length,\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (filteredCommands[selectedIndex]) {\n executeCommand(filteredCommands[selectedIndex]);\n }\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n return () => document.removeEventListener(\"keydown\", handleKeyDown, true);\n }, [isOpen, selectedIndex, filteredCommands, executeCommand, editor]);\n\n useEffect(() => {\n if (!editor) return;\n\n const handleTransaction = () => {\n const { state } = editor;\n const { from } = state.selection;\n const textBefore = state.doc.textBetween(\n Math.max(0, from - 20),\n from,\n \"\\n\",\n );\n\n const slashMatch = textBefore.match(/\\/([a-zA-Z0-9]*)$/);\n\n if (slashMatch) {\n const slashStart = from - slashMatch[0].length;\n slashPosRef.current = slashStart;\n setQuery(slashMatch[1]);\n setSelectedIndex(0);\n\n const coords = editor.view.coordsAtPos(from);\n // Estimate menu height (~320px max) and check if it fits below\n const menuHeight = 320;\n const spaceBelow = window.innerHeight - coords.bottom;\n const flipUp = spaceBelow < menuHeight && coords.top > menuHeight;\n\n setPosition({\n top: flipUp ? coords.top : coords.bottom + 4,\n left: Math.min(coords.left, window.innerWidth - 240),\n flipUp,\n });\n setIsOpen(true);\n } else {\n if (isOpen) {\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n }\n }\n };\n\n editor.on(\"transaction\", handleTransaction);\n return () => {\n editor.off(\"transaction\", handleTransaction);\n };\n }, [editor, isOpen]);\n\n if (!isOpen || !position || filteredCommands.length === 0) return null;\n\n return (\n <div\n ref={menuRef}\n style={{\n position: \"fixed\",\n ...(position.flipUp\n ? { bottom: window.innerHeight - position.top + 4 }\n : { top: position.top }),\n left: position.left,\n zIndex: 9999,\n }}\n className=\"re-slash-menu\"\n >\n <div className=\"py-1\">\n <div\n style={{\n padding: \"4px 10px\",\n fontSize: 10,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n opacity: 0.5,\n }}\n >\n Blocks\n </div>\n {filteredCommands.map((cmd, i) => (\n <button\n key={cmd.title}\n onClick={() => executeCommand(cmd)}\n onMouseEnter={() => setSelectedIndex(i)}\n className={cn(\n \"re-slash-item\",\n i === selectedIndex && \"re-slash-item--active\",\n )}\n >\n <span className=\"re-slash-icon\">{cmd.icon}</span>\n <span>\n <span className=\"re-slash-title\">{cmd.title}</span>\n <span className=\"re-slash-desc\">{cmd.description}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n}\n\n// --- Inline Bubble Toolbar ---\n\nfunction InlineBubbleToolbar({ editor }: { editor: any }) {\n const [visible, setVisible] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n const [showLinkInput, setShowLinkInput] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const toolbarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!editor) return;\n const update = () => {\n const { from, to } = editor.state.selection;\n if (from === to || !editor.isFocused) {\n setVisible(false);\n return;\n }\n const domSelection = window.getSelection();\n if (!domSelection || domSelection.rangeCount === 0) {\n setVisible(false);\n return;\n }\n const range = domSelection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n if (rect.width === 0) {\n setVisible(false);\n return;\n }\n // Use fixed positioning with viewport coordinates\n setCoords({\n top: rect.top - 8,\n left: rect.left + rect.width / 2,\n });\n setVisible(true);\n };\n editor.on(\"selectionUpdate\", update);\n const onBlur = () => {\n // Delay so clicks on toolbar buttons register before hiding\n setTimeout(() => {\n if (!editor.isFocused) setVisible(false);\n }, 150);\n };\n editor.on(\"blur\", onBlur);\n return () => {\n editor.off(\"selectionUpdate\", update);\n editor.off(\"blur\", onBlur);\n };\n }, [editor]);\n\n const handleSetLink = () => {\n if (linkUrl.trim()) {\n editor\n .chain()\n .focus()\n .extendMarkRange(\"link\")\n .setLink({ href: linkUrl.trim() })\n .run();\n } else {\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n }\n setShowLinkInput(false);\n setLinkUrl(\"\");\n };\n\n const toggleLink = () => {\n if (editor.isActive(\"link\")) {\n editor.chain().focus().unsetLink().run();\n return;\n }\n const previousUrl = editor.getAttributes(\"link\").href || \"\";\n setLinkUrl(previousUrl);\n setShowLinkInput(true);\n };\n\n const items = [\n {\n label: \"B\",\n title: \"Bold\",\n action: () => editor.chain().focus().toggleBold().run(),\n isActive: () => editor.isActive(\"bold\"),\n style: { fontWeight: 700 } as React.CSSProperties,\n },\n {\n label: \"I\",\n title: \"Italic\",\n action: () => editor.chain().focus().toggleItalic().run(),\n isActive: () => editor.isActive(\"italic\"),\n style: { fontStyle: \"italic\" } as React.CSSProperties,\n },\n {\n label: \"S\",\n title: \"Strikethrough\",\n action: () => editor.chain().focus().toggleStrike().run(),\n isActive: () => editor.isActive(\"strike\"),\n style: { textDecoration: \"line-through\" } as React.CSSProperties,\n },\n {\n label: \"<>\",\n title: \"Code\",\n action: () => editor.chain().focus().toggleCode().run(),\n isActive: () => editor.isActive(\"code\"),\n style: { fontFamily: \"monospace\", fontSize: 11 } as React.CSSProperties,\n },\n { type: \"divider\" as const },\n {\n label: \"H1\",\n title: \"Heading 1\",\n action: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 1 }),\n },\n {\n label: \"H2\",\n title: \"Heading 2\",\n action: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 2 }),\n },\n {\n label: \"H3\",\n title: \"Heading 3\",\n action: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 3 }),\n },\n { type: \"divider\" as const },\n {\n label: \"Link\",\n title: \"Link\",\n action: toggleLink,\n isActive: () => editor.isActive(\"link\"),\n },\n ];\n\n if (!visible) return null;\n\n return (\n <div\n ref={toolbarRef}\n className=\"re-bubble-toolbar\"\n onMouseDown={(e) => e.preventDefault()}\n style={{\n position: \"fixed\",\n top: coords.top,\n left: coords.left,\n transform: \"translate(-50%, -100%)\",\n zIndex: 9999,\n }}\n >\n {showLinkInput ? (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 4, padding: 4 }}\n onMouseDown={(e) => e.preventDefault()}\n >\n <input\n autoFocus\n type=\"url\"\n placeholder=\"Paste link...\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSetLink();\n if (e.key === \"Escape\") {\n setShowLinkInput(false);\n setLinkUrl(\"\");\n }\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n color: \"white\",\n fontSize: 12,\n width: 160,\n padding: \"2px 4px\",\n }}\n />\n <button\n onClick={handleSetLink}\n style={{\n fontSize: 11,\n color: \"#60a5fa\",\n padding: \"2px 6px\",\n fontWeight: 500,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n >\n Apply\n </button>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 2 }}\n onMouseDown={(e) => e.preventDefault()}\n >\n {items.map((item, i) => {\n if (\"type\" in item && item.type === \"divider\") {\n return (\n <div\n key={`d-${i}`}\n style={{\n width: 1,\n height: 16,\n background: \"rgba(255,255,255,0.2)\",\n margin: \"0 2px\",\n }}\n />\n );\n }\n const { label, title, action, isActive, style } = item as {\n label: string;\n title: string;\n action: () => void;\n isActive: () => boolean;\n style?: React.CSSProperties;\n };\n return (\n <Tooltip key={title}>\n <TooltipTrigger asChild>\n <button\n onClick={action}\n className={cn(\n \"re-bubble-btn\",\n isActive() && \"re-bubble-btn--active\",\n )}\n style={style}\n >\n {label}\n </button>\n </TooltipTrigger>\n <TooltipContent>{title}</TooltipContent>\n </Tooltip>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\n// --- Visual Markdown Editor ---\n\n// --- Syntax-highlighted code editor (textarea + overlay) ---\n\nfunction highlightJson(text: string): string {\n // Escape HTML first\n const esc = text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n // Tokenize JSON with regex\n return esc.replace(\n /(\"(?:\\\\.|[^\"\\\\])*\")\\s*:|(\"(?:\\\\.|[^\"\\\\])*\")|((?:-?\\d+)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(\\btrue\\b|\\bfalse\\b|\\bnull\\b)/g,\n (match, key, str, num, lit) => {\n if (key) return `<span class=\"sh-key\">${key}</span>:`;\n if (str) return `<span class=\"sh-str\">${str}</span>`;\n if (num) return `<span class=\"sh-num\">${num}</span>`;\n if (lit) return `<span class=\"sh-lit\">${lit}</span>`;\n return match;\n },\n );\n}\n\nconst shStyles = `\n.sh-key { color: #7dd3fc; }\n.sh-str { color: #86efac; }\n.sh-num { color: #fca5a5; }\n.sh-lit { color: #c4b5fd; }\n`;\n\nfunction SyntaxHighlightEditor({\n value,\n onChange,\n language: _language,\n}: {\n value: string;\n onChange: (v: string) => void;\n language: \"json\";\n}) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const preRef = useRef<HTMLPreElement>(null);\n\n const highlighted = useMemo(() => highlightJson(value), [value]);\n\n const syncScroll = useCallback(() => {\n if (textareaRef.current && preRef.current) {\n preRef.current.scrollTop = textareaRef.current.scrollTop;\n preRef.current.scrollLeft = textareaRef.current.scrollLeft;\n }\n }, []);\n\n const monoFont =\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace';\n const sharedStyle: React.CSSProperties = {\n fontFamily: monoFont,\n fontSize: 13,\n lineHeight: 1.6,\n padding: 12,\n margin: 0,\n border: \"none\",\n whiteSpace: \"pre\",\n wordWrap: \"normal\",\n overflowWrap: \"normal\",\n tabSize: 2,\n };\n\n return (\n <>\n <style>{shStyles}</style>\n <div\n className=\"flex-1 min-h-0\"\n style={{ position: \"relative\", overflow: \"hidden\" }}\n >\n <pre\n ref={preRef}\n aria-hidden\n style={{\n ...sharedStyle,\n position: \"absolute\",\n inset: 0,\n overflow: \"auto\",\n pointerEvents: \"none\",\n color: \"hsl(var(--muted-foreground))\",\n background: \"transparent\",\n }}\n dangerouslySetInnerHTML={{ __html: highlighted + \"\\n\" }}\n />\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onScroll={syncScroll}\n spellCheck={false}\n style={{\n ...sharedStyle,\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n resize: \"none\",\n background: \"transparent\",\n color: \"transparent\",\n caretColor: \"hsl(var(--foreground))\",\n outline: \"none\",\n WebkitTextFillColor: \"transparent\",\n }}\n />\n </div>\n </>\n );\n}\n\nfunction VisualMarkdownEditor({\n content,\n onChange,\n resourcePath,\n}: {\n content: string;\n onChange: (md: string) => void;\n resourcePath: string;\n}) {\n const isSettingContent = useRef(false);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n // Parse frontmatter — strip it from tiptap content, re-prepend on save\n const parsed = useMemo(() => parseFrontmatter(content), [content]);\n const frontmatterRef = useRef(parsed);\n frontmatterRef.current = parsed;\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n codeBlock: {},\n dropcursor: { color: \"hsl(var(--ring))\", width: 2 },\n }),\n Placeholder.configure({\n placeholder: ({ node }) => {\n if (node.type.name === \"heading\") {\n const level = node.attrs.level;\n if (level === 1) return \"Heading 1\";\n if (level === 2) return \"Heading 2\";\n return \"Heading 3\";\n }\n return \"Type '/' for commands...\";\n },\n showOnlyWhenEditable: true,\n showOnlyCurrent: true,\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: { class: \"re-link\" },\n }),\n Markdown.configure({\n html: true,\n transformPastedText: true,\n transformCopiedText: true,\n }),\n ],\n content: parsed?.body ?? content,\n editorProps: {\n attributes: {\n class: \"re-prose\",\n },\n },\n onUpdate: ({ editor }) => {\n if (isSettingContent.current) return;\n try {\n const md = (editor.storage as any).markdown.getMarkdown();\n // Re-prepend frontmatter if it existed\n const fm = frontmatterRef.current;\n const full = fm ? fm.raw + md : md;\n onChangeRef.current(full);\n } catch (err) {\n console.error(\"Markdown serialization error:\", err);\n }\n },\n });\n\n useEffect(() => {\n if (!editor || editor.isDestroyed) return;\n const currentMd = (editor.storage as any).markdown.getMarkdown();\n if (currentMd !== (parsed?.body ?? content)) {\n if (editor.isFocused) return;\n isSettingContent.current = true;\n editor.commands.setContent(parsed?.body ?? content);\n isSettingContent.current = false;\n }\n }, [content, editor, parsed]);\n\n useEffect(() => {\n return () => {\n editor?.destroy();\n };\n }, [editor]);\n\n if (!editor) return null;\n\n const handleWrapperClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // If the click was on the wrapper (empty area), not on editor content, focus at end\n const target = e.target as HTMLElement;\n if (\n target.classList.contains(\"re-editor-clickable\") ||\n target.classList.contains(\"re-editor-wrapper\")\n ) {\n editor.chain().focus(\"end\").run();\n }\n };\n\n return (\n <div\n className=\"re-editor-wrapper re-editor-clickable\"\n onClick={handleWrapperClick}\n style={{ position: \"relative\", minHeight: \"100%\", cursor: \"text\" }}\n >\n {parsed && (\n <FrontmatterBar\n resourcePath={resourcePath}\n frontmatter={parsed}\n onChange={(updated) => {\n frontmatterRef.current = updated;\n // Get current body and combine with updated frontmatter\n try {\n const md = (editor.storage as any).markdown.getMarkdown();\n onChangeRef.current(updated.raw + md);\n } catch {\n // fallback\n }\n }}\n />\n )}\n <InlineBubbleToolbar editor={editor} />\n <SlashMenu editor={editor} />\n <EditorContent editor={editor} />\n </div>\n );\n}\n\n// --- Main ResourceEditor ---\n\ninterface RemoteAgentFormValue {\n id?: string;\n name: string;\n description: string;\n url: string;\n color: string;\n}\n\nfunction parseRemoteAgentContent(\n content: string,\n path: string,\n): RemoteAgentFormValue {\n const fallbackId = getRemoteAgentIdFromPath(path);\n try {\n const data = JSON.parse(content || \"{}\");\n return {\n id: data.id || fallbackId,\n name: data.name ?? \"\",\n description: data.description ?? \"\",\n url: data.url ?? \"\",\n color: data.color ?? \"#6B7280\",\n };\n } catch {\n return {\n id: fallbackId,\n name: \"\",\n description: \"\",\n url: \"\",\n color: \"#6B7280\",\n };\n }\n}\n\nfunction serializeRemoteAgent(value: RemoteAgentFormValue): string {\n return (\n JSON.stringify(\n {\n id: value.id,\n name: value.name,\n description: value.description || undefined,\n url: value.url,\n color: value.color,\n },\n null,\n 2,\n ) + \"\\n\"\n );\n}\n\nfunction RemoteAgentFormEditor({\n resource,\n onChange,\n}: {\n resource: Resource;\n onChange: (content: string) => void;\n}) {\n const [value, setValue] = useState<RemoteAgentFormValue>(() =>\n parseRemoteAgentContent(resource.content, resource.path),\n );\n const prevIdRef = useRef(resource.id);\n\n useEffect(() => {\n if (prevIdRef.current !== resource.id) {\n setValue(parseRemoteAgentContent(resource.content, resource.path));\n prevIdRef.current = resource.id;\n }\n }, [resource.id, resource.content, resource.path]);\n\n const update = (patch: Partial<RemoteAgentFormValue>) => {\n const next = { ...value, ...patch };\n setValue(next);\n onChange(serializeRemoteAgent(next));\n };\n\n const inputClass =\n \"w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent\";\n const labelClass = \"block text-[11px] font-medium text-muted-foreground mb-1\";\n\n return (\n <div className=\"flex flex-1 min-h-0 flex-col overflow-y-auto p-4\">\n <div className=\"max-w-md space-y-3\">\n <p className=\"text-[11px] text-muted-foreground/70 leading-snug\">\n Connected remote agent over the A2A protocol. @-mention it in chat to\n delegate tasks.\n </p>\n <div>\n <label className={labelClass}>Name</label>\n <input\n className={inputClass}\n value={value.name}\n onChange={(e) => update({ name: e.target.value })}\n placeholder=\"Analytics\"\n />\n </div>\n <div>\n <label className={labelClass}>URL</label>\n <input\n className={inputClass}\n value={value.url}\n onChange={(e) => update({ url: e.target.value })}\n placeholder=\"https://analytics.example.com\"\n />\n <p className=\"mt-1 text-[10px] text-muted-foreground/50\">\n A2A endpoint. The agent card is served at{\" \"}\n <code>/.well-known/agent-card.json</code>.\n </p>\n </div>\n <div>\n <label className={labelClass}>Description</label>\n <textarea\n className={cn(inputClass, \"resize-y\")}\n rows={3}\n value={value.description}\n onChange={(e) => update({ description: e.target.value })}\n placeholder=\"What this agent is good at — helps the main agent decide when to delegate.\"\n />\n </div>\n <div>\n <label className={labelClass}>Color</label>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"color\"\n value={value.color}\n onChange={(e) => update({ color: e.target.value })}\n className=\"h-8 w-10 cursor-pointer rounded border border-border bg-transparent\"\n />\n <input\n className={cn(inputClass, \"flex-1\")}\n value={value.color}\n onChange={(e) => update({ color: e.target.value })}\n placeholder=\"#6B7280\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function ResourceEditor({\n resource,\n onSave,\n view: controlledView,\n onViewChange,\n onSaveStatusChange,\n hideToolbar,\n}: ResourceEditorProps) {\n const [content, setContent] = useState(resource.content);\n const [internalView, setInternalView] = useState<\"visual\" | \"code\">(\n getViewPref,\n );\n const view = controlledView ?? internalView;\n const [saveStatus, setSaveStatus] = useState<\"idle\" | \"saving\" | \"saved\">(\n \"idle\",\n );\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const prevIdRef = useRef(resource.id);\n\n // Reset content when resource changes\n useEffect(() => {\n if (prevIdRef.current !== resource.id) {\n setContent(resource.content);\n setSaveStatus(\"idle\");\n onSaveStatusChange?.(\"idle\");\n prevIdRef.current = resource.id;\n }\n }, [resource.id, resource.content, onSaveStatusChange]);\n\n const handleChange = useCallback(\n (newContent: string) => {\n setContent(newContent);\n setSaveStatus(\"idle\");\n onSaveStatusChange?.(\"idle\");\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n setSaveStatus(\"saving\");\n onSaveStatusChange?.(\"saving\");\n onSave(newContent);\n setTimeout(() => {\n setSaveStatus(\"saved\");\n onSaveStatusChange?.(\"saved\");\n }, 300);\n }, 1000);\n },\n [onSave, onSaveStatusChange],\n );\n\n const switchView = useCallback(\n (v: \"visual\" | \"code\") => {\n setInternalView(v);\n setViewPref(v);\n onViewChange?.(v);\n },\n [onViewChange],\n );\n\n // Cleanup debounce on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const isMarkdown =\n resource.mimeType === \"text/markdown\" || resource.path.endsWith(\".md\");\n const isImage = resource.mimeType.startsWith(\"image/\");\n const isRemoteAgent = isRemoteAgentPath(resource.path);\n\n // Remote-agent manifest → form editor\n if (isRemoteAgent) {\n return (\n <div className=\"flex h-full flex-col\">\n <RemoteAgentFormEditor resource={resource} onChange={handleChange} />\n </div>\n );\n }\n\n // Image preview\n if (isImage) {\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex flex-1 items-center justify-center overflow-auto p-4\">\n <img\n src={agentNativePath(`/_agent-native/resources/${resource.id}?raw`)}\n alt={resource.path}\n className=\"max-h-full max-w-full object-contain\"\n />\n </div>\n </div>\n );\n }\n\n // Markdown files get visual/code toggle\n if (isMarkdown) {\n return (\n <div className=\"flex h-full flex-col\">\n <style>{editorStyles}</style>\n {!hideToolbar && (\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2\">\n <div className=\"flex items-center gap-1\">\n <button\n onClick={() => switchView(\"visual\")}\n className={cn(\n \"rounded-md px-2 py-1.5 text-[12px] leading-none\",\n view === \"visual\"\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:bg-accent/50 hover:text-foreground\",\n )}\n style={CONTROL_STYLE}\n >\n Visual\n </button>\n <button\n onClick={() => switchView(\"code\")}\n className={cn(\n \"rounded-md px-2 py-1.5 text-[12px] leading-none\",\n view === \"code\"\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:bg-accent/50 hover:text-foreground\",\n )}\n style={CONTROL_STYLE}\n >\n Code\n </button>\n </div>\n <span className=\"text-[11px] text-muted-foreground/60\">\n {saveStatus === \"saving\"\n ? \"Saving...\"\n : saveStatus === \"saved\"\n ? \"Saved\"\n : \"\"}\n </span>\n </div>\n )}\n {view === \"visual\" ? (\n <div\n className=\"flex-1 min-h-0 overflow-y-auto p-3\"\n key={resource.id + \"-visual\"}\n >\n <VisualMarkdownEditor\n content={content}\n onChange={handleChange}\n resourcePath={resource.path}\n />\n </div>\n ) : (\n <textarea\n value={content}\n onChange={(e) => handleChange(e.target.value)}\n className=\"flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50\"\n style={{\n fontFamily:\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n lineHeight: 1.6,\n }}\n spellCheck={false}\n />\n )}\n </div>\n );\n }\n\n // Non-markdown text files\n const isJson =\n resource.mimeType === \"application/json\" || resource.path.endsWith(\".json\");\n\n return (\n <div className=\"flex h-full flex-col\">\n {isJson ? (\n <SyntaxHighlightEditor\n value={content}\n onChange={handleChange}\n language=\"json\"\n />\n ) : (\n <textarea\n value={content}\n onChange={(e) => handleChange(e.target.value)}\n className=\"flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50\"\n style={{\n fontFamily:\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n lineHeight: 1.6,\n }}\n spellCheck={false}\n />\n )}\n </div>\n );\n}\n\n// --- Scoped editor styles (injected inline so no external CSS needed) ---\n\nconst editorStyles = `\n/* Prose styling for the visual editor */\n.re-prose {\n outline: none;\n color: hsl(var(--foreground));\n line-height: 1.65;\n font-size: 13px;\n min-height: 100%;\n}\n.re-prose > *:first-child { margin-top: 0; }\n\n.re-prose h1 {\n font-size: 1.5em;\n font-weight: 700;\n margin: 1em 0 0.25em;\n line-height: 1.25;\n}\n.re-prose h2 {\n font-size: 1.25em;\n font-weight: 600;\n margin: 0.8em 0 0.2em;\n line-height: 1.3;\n}\n.re-prose h3 {\n font-size: 1.1em;\n font-weight: 600;\n margin: 0.6em 0 0.15em;\n line-height: 1.35;\n}\n.re-prose p {\n margin: 0.35em 0;\n min-height: 1.65em;\n}\n.re-prose ul {\n list-style-type: disc;\n padding-left: 1.4em;\n margin: 0.2em 0;\n}\n.re-prose ol {\n list-style-type: decimal;\n padding-left: 1.4em;\n margin: 0.2em 0;\n}\n.re-prose li { margin: 0.05em 0; }\n.re-prose li p { margin: 0; }\n\n.re-prose blockquote {\n border-left: 2px solid hsl(var(--border));\n padding-left: 0.8em;\n margin: 0.3em 0;\n color: hsl(var(--muted-foreground));\n}\n.re-prose code {\n font-family: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;\n font-size: 0.88em;\n background: hsl(var(--muted));\n padding: 0.1em 0.3em;\n border-radius: 3px;\n}\n.re-prose pre {\n font-family: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;\n font-size: 12px;\n background: hsl(var(--muted));\n border-radius: 4px;\n padding: 0.7em 0.9em;\n margin: 0.3em 0;\n overflow-x: auto;\n line-height: 1.5;\n}\n.re-prose pre code {\n background: none;\n padding: 0;\n border: none;\n font-size: inherit;\n}\n.re-prose hr {\n border: none;\n border-top: 1px solid hsl(var(--border));\n margin: 1em 0;\n}\n.re-prose strong { font-weight: 600; }\n.re-prose em { font-style: italic; }\n.re-prose s { text-decoration: line-through; }\n\n.re-link {\n color: hsl(var(--foreground));\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-color: hsl(var(--muted-foreground));\n cursor: pointer;\n}\n.re-link:hover {\n text-decoration-color: hsl(var(--foreground));\n}\n\n/* Placeholder */\n.re-prose p.is-editor-empty:first-child::before,\n.re-prose p.is-empty::before,\n.re-prose h1.is-empty::before,\n.re-prose h2.is-empty::before,\n.re-prose h3.is-empty::before {\n content: attr(data-placeholder);\n float: left;\n color: hsl(var(--muted-foreground));\n opacity: 0.5;\n pointer-events: none;\n height: 0;\n}\n\n/* Selection */\n.re-prose ::selection {\n background: hsl(210 100% 52% / 0.2);\n}\n\n/* Bubble toolbar */\n.re-bubble-toolbar {\n display: flex;\n align-items: center;\n background: hsl(0 0% 15%);\n border-radius: 6px;\n padding: 3px;\n box-shadow: 0 4px 16px rgb(0 0 0 / 0.25), 0 0 0 1px rgb(255 255 255 / 0.06);\n}\n.re-bubble-btn {\n padding: 3px 6px;\n border-radius: 4px;\n font-size: 12px;\n color: rgba(255,255,255,0.75);\n background: none;\n border: none;\n cursor: pointer;\n line-height: 1;\n}\n.re-bubble-btn:hover {\n background: rgba(255,255,255,0.12);\n color: white;\n}\n.re-bubble-btn--active {\n background: rgba(255,255,255,0.18);\n color: white;\n}\n\n/* Slash command menu */\n.re-slash-menu {\n background: hsl(var(--popover));\n border: 1px solid hsl(var(--border));\n border-radius: 6px;\n box-shadow: 0 4px 20px rgb(0 0 0 / 0.12), 0 0 0 1px rgb(0 0 0 / 0.04);\n min-width: 220px;\n max-height: 320px;\n overflow-y: auto;\n color: hsl(var(--foreground));\n}\n.re-slash-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 10px;\n text-align: left;\n background: none;\n border: none;\n cursor: pointer;\n color: hsl(var(--foreground));\n font-size: 13px;\n}\n.re-slash-item:hover,\n.re-slash-item--active {\n background: hsl(var(--accent));\n}\n.re-slash-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: 1px solid hsl(var(--border));\n background: hsl(var(--background));\n font-size: 12px;\n font-weight: 600;\n color: hsl(var(--muted-foreground));\n flex-shrink: 0;\n}\n.re-slash-title {\n display: block;\n font-weight: 500;\n font-size: 13px;\n}\n.re-slash-desc {\n display: block;\n font-size: 11px;\n color: hsl(var(--muted-foreground));\n}\n`;\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceEditor.js","sourceRoot":"","sources":["../../../src/client/resources/ResourceEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n} from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport Link from \"@tiptap/extension-link\";\nimport { Markdown } from \"tiptap-markdown\";\nimport { cn } from \"../utils.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport type { Resource } from \"./use-resources.js\";\nimport {\n type ParsedFrontmatter,\n getRemoteAgentIdFromPath,\n getFrontmatterValue,\n isCustomAgentPath,\n isRemoteAgentPath,\n isSkillPath,\n parseFrontmatter,\n serializeFrontmatter,\n} from \"../../resources/metadata.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\n\nexport interface ResourceEditorProps {\n resource: Resource;\n onSave: (content: string) => void;\n /** Controlled view mode — if provided, the editor won't manage its own view state */\n view?: \"visual\" | \"code\";\n onViewChange?: (v: \"visual\" | \"code\") => void;\n /** Called whenever save status changes */\n onSaveStatusChange?: (status: \"idle\" | \"saving\" | \"saved\") => void;\n /** When true, the editor's internal toolbar row is hidden */\n hideToolbar?: boolean;\n}\n\nconst CONTROL_STYLE = { fontSize: 12, lineHeight: 1 } as const;\n\nconst VIEW_PREF_KEY = \"resource-editor-view\";\n\nfunction getViewPref(): \"visual\" | \"code\" {\n try {\n const v = localStorage.getItem(VIEW_PREF_KEY);\n if (v === \"code\") return \"code\";\n } catch {}\n return \"visual\";\n}\n\nfunction setViewPref(v: \"visual\" | \"code\") {\n try {\n localStorage.setItem(VIEW_PREF_KEY, v);\n } catch {}\n}\n\nconst FM_INPUT_STYLE: React.CSSProperties = {\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n color: \"inherit\",\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n width: \"100%\",\n padding: 0,\n};\n\nfunction FrontmatterBar({\n resourcePath,\n frontmatter,\n onChange,\n}: {\n resourcePath: string;\n frontmatter: ParsedFrontmatter;\n onChange: (updated: ParsedFrontmatter) => void;\n}) {\n const getField = (key: string) => getFrontmatterValue(frontmatter, key) ?? \"\";\n\n const updateField = (key: string, value: string) => {\n const exists = frontmatter.fields.some((f) => f.key === key);\n const newFields = exists\n ? frontmatter.fields.map((f) => (f.key === key ? { ...f, value } : f))\n : [...frontmatter.fields, { key, value }];\n const updated: ParsedFrontmatter = {\n ...frontmatter,\n raw: serializeFrontmatter(newFields),\n fields: newFields,\n };\n onChange(updated);\n };\n\n const name = getField(\"name\");\n const description = getField(\"description\");\n const isUserInvocable = getField(\"user-invocable\") === \"true\";\n const model = getField(\"model\") || \"inherit\";\n const tools = getField(\"tools\") || \"inherit\";\n const isCustomAgent = isCustomAgentPath(resourcePath);\n const isSkill = isSkillPath(resourcePath);\n\n return (\n <div\n style={{\n padding: \"8px 12px\",\n marginBottom: 8,\n borderRadius: 6,\n background: \"hsl(var(--muted) / 0.5)\",\n border: \"1px solid hsl(var(--border) / 0.5)\",\n fontSize: 12,\n lineHeight: 1.5,\n color: \"hsl(var(--muted-foreground))\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 6 }}>\n <input\n value={name}\n onChange={(e) => updateField(\"name\", e.target.value)}\n placeholder={isCustomAgent ? \"Agent name\" : \"Skill name\"}\n style={{\n ...FM_INPUT_STYLE,\n fontWeight: 600,\n color: \"hsl(var(--foreground))\",\n fontSize: 13,\n flex: 1,\n }}\n />\n {isSkill ? (\n <label\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 4,\n fontSize: 10,\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n padding: \"1px 5px\",\n borderRadius: 3,\n background: isUserInvocable\n ? \"hsl(var(--primary) / 0.15)\"\n : \"transparent\",\n color: isUserInvocable\n ? \"hsl(var(--primary))\"\n : \"hsl(var(--muted-foreground))\",\n border: isUserInvocable\n ? \"none\"\n : \"1px dashed hsl(var(--border))\",\n fontWeight: 500,\n }}\n >\n <input\n type=\"checkbox\"\n checked={isUserInvocable}\n onChange={(e) =>\n updateField(\n \"user-invocable\",\n e.target.checked ? \"true\" : \"false\",\n )\n }\n style={{ display: \"none\" }}\n />\n /{name || \"command\"}\n </label>\n ) : null}\n {isCustomAgent ? (\n <select\n value={model}\n onChange={(e) => updateField(\"model\", e.target.value)}\n style={{\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--background))\",\n color: \"hsl(var(--foreground))\",\n fontSize: 11,\n padding: \"2px 6px\",\n }}\n >\n <option value=\"inherit\">Default model</option>\n <option value=\"claude-sonnet-4-6\">Claude Sonnet 4.6</option>\n <option value=\"claude-haiku-4-5-20251001\">Claude Haiku 4.5</option>\n </select>\n ) : null}\n </div>\n <input\n value={description}\n onChange={(e) => updateField(\"description\", e.target.value)}\n placeholder={\n isCustomAgent\n ? \"Description — what this agent should handle\"\n : \"Description — what this skill does\"\n }\n style={{\n ...FM_INPUT_STYLE,\n marginTop: 2,\n opacity: 0.8,\n color: \"hsl(var(--muted-foreground))\",\n }}\n />\n {isCustomAgent ? (\n <div\n style={{\n display: \"flex\",\n gap: 8,\n marginTop: 6,\n alignItems: \"center\",\n }}\n >\n <label\n style={{\n fontSize: 10,\n color: \"hsl(var(--muted-foreground))\",\n minWidth: 28,\n }}\n >\n Tools\n </label>\n <select\n value={tools}\n onChange={(e) => updateField(\"tools\", e.target.value)}\n style={{\n borderRadius: 4,\n border: \"1px solid hsl(var(--border))\",\n background: \"hsl(var(--background))\",\n color: \"hsl(var(--foreground))\",\n fontSize: 11,\n padding: \"2px 6px\",\n }}\n >\n <option value=\"inherit\">Inherit</option>\n <option value=\"allowlist\">Allowlist later</option>\n <option value=\"denylist\">Denylist later</option>\n </select>\n </div>\n ) : null}\n </div>\n );\n}\n\n// --- Slash Command Menu ---\n\ninterface CommandItem {\n title: string;\n description: string;\n icon: string;\n action: (editor: any) => void;\n}\n\nconst slashCommands: CommandItem[] = [\n {\n title: \"Text\",\n description: \"Plain text\",\n icon: \"T\",\n action: (editor) => editor.chain().focus().setParagraph().run(),\n },\n {\n title: \"Heading 1\",\n description: \"Large heading\",\n icon: \"H1\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 1 }).run(),\n },\n {\n title: \"Heading 2\",\n description: \"Medium heading\",\n icon: \"H2\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 2 }).run(),\n },\n {\n title: \"Heading 3\",\n description: \"Small heading\",\n icon: \"H3\",\n action: (editor) =>\n editor.chain().focus().toggleHeading({ level: 3 }).run(),\n },\n {\n title: \"Bullet List\",\n description: \"Unordered list\",\n icon: \"•\",\n action: (editor) => editor.chain().focus().toggleBulletList().run(),\n },\n {\n title: \"Numbered List\",\n description: \"Ordered list\",\n icon: \"1.\",\n action: (editor) => editor.chain().focus().toggleOrderedList().run(),\n },\n {\n title: \"Code Block\",\n description: \"Code snippet\",\n icon: \"<>\",\n action: (editor) => editor.chain().focus().toggleCodeBlock().run(),\n },\n {\n title: \"Quote\",\n description: \"Block quote\",\n icon: '\"',\n action: (editor) => editor.chain().focus().toggleBlockquote().run(),\n },\n {\n title: \"Divider\",\n description: \"Horizontal rule\",\n icon: \"—\",\n action: (editor) => editor.chain().focus().setHorizontalRule().run(),\n },\n];\n\nfunction SlashMenu({ editor }: { editor: any }) {\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [position, setPosition] = useState<{\n top: number;\n left: number;\n flipUp: boolean;\n } | null>(null);\n const slashPosRef = useRef<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filteredCommands = useMemo(\n () =>\n slashCommands.filter(\n (cmd) =>\n cmd.title.toLowerCase().includes(query.toLowerCase()) ||\n cmd.description.toLowerCase().includes(query.toLowerCase()),\n ),\n [query],\n );\n\n const executeCommand = useCallback(\n (cmd: CommandItem) => {\n if (slashPosRef.current !== null) {\n const { from } = editor.state.selection;\n editor\n .chain()\n .focus()\n .deleteRange({ from: slashPosRef.current, to: from })\n .run();\n }\n cmd.action(editor);\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n },\n [editor],\n );\n\n useEffect(() => {\n if (!editor) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isOpen) return;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((i) => (i + 1) % filteredCommands.length);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex(\n (i) => (i - 1 + filteredCommands.length) % filteredCommands.length,\n );\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (filteredCommands[selectedIndex]) {\n executeCommand(filteredCommands[selectedIndex]);\n }\n } else if (e.key === \"Escape\") {\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n }\n };\n\n document.addEventListener(\"keydown\", handleKeyDown, true);\n return () => document.removeEventListener(\"keydown\", handleKeyDown, true);\n }, [isOpen, selectedIndex, filteredCommands, executeCommand, editor]);\n\n useEffect(() => {\n if (!editor) return;\n\n const handleTransaction = () => {\n const { state } = editor;\n const { from } = state.selection;\n const textBefore = state.doc.textBetween(\n Math.max(0, from - 20),\n from,\n \"\\n\",\n );\n\n const slashMatch = textBefore.match(/\\/([a-zA-Z0-9]*)$/);\n\n if (slashMatch) {\n const slashStart = from - slashMatch[0].length;\n slashPosRef.current = slashStart;\n setQuery(slashMatch[1]);\n setSelectedIndex(0);\n\n const coords = editor.view.coordsAtPos(from);\n // Estimate menu height (~320px max) and check if it fits below\n const menuHeight = 320;\n const spaceBelow = window.innerHeight - coords.bottom;\n const flipUp = spaceBelow < menuHeight && coords.top > menuHeight;\n\n setPosition({\n top: flipUp ? coords.top : coords.bottom + 4,\n left: Math.min(coords.left, window.innerWidth - 240),\n flipUp,\n });\n setIsOpen(true);\n } else {\n if (isOpen) {\n setIsOpen(false);\n setQuery(\"\");\n slashPosRef.current = null;\n }\n }\n };\n\n editor.on(\"transaction\", handleTransaction);\n return () => {\n editor.off(\"transaction\", handleTransaction);\n };\n }, [editor, isOpen]);\n\n if (!isOpen || !position || filteredCommands.length === 0) return null;\n\n return (\n <div\n ref={menuRef}\n style={{\n position: \"fixed\",\n ...(position.flipUp\n ? { bottom: window.innerHeight - position.top + 4 }\n : { top: position.top }),\n left: position.left,\n zIndex: 9999,\n }}\n className=\"re-slash-menu\"\n >\n <div className=\"py-1\">\n <div\n style={{\n padding: \"4px 10px\",\n fontSize: 10,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n opacity: 0.5,\n }}\n >\n Blocks\n </div>\n {filteredCommands.map((cmd, i) => (\n <button\n key={cmd.title}\n onClick={() => executeCommand(cmd)}\n onMouseEnter={() => setSelectedIndex(i)}\n className={cn(\n \"re-slash-item\",\n i === selectedIndex && \"re-slash-item--active\",\n )}\n >\n <span className=\"re-slash-icon\">{cmd.icon}</span>\n <span>\n <span className=\"re-slash-title\">{cmd.title}</span>\n <span className=\"re-slash-desc\">{cmd.description}</span>\n </span>\n </button>\n ))}\n </div>\n </div>\n );\n}\n\n// --- Inline Bubble Toolbar ---\n\nfunction InlineBubbleToolbar({ editor }: { editor: any }) {\n const [visible, setVisible] = useState(false);\n const [coords, setCoords] = useState({ top: 0, left: 0 });\n const [showLinkInput, setShowLinkInput] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const toolbarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!editor) return;\n const update = () => {\n const { from, to } = editor.state.selection;\n if (from === to || !editor.isFocused) {\n setVisible(false);\n return;\n }\n const domSelection = window.getSelection();\n if (!domSelection || domSelection.rangeCount === 0) {\n setVisible(false);\n return;\n }\n const range = domSelection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n if (rect.width === 0) {\n setVisible(false);\n return;\n }\n // Use fixed positioning with viewport coordinates\n setCoords({\n top: rect.top - 8,\n left: rect.left + rect.width / 2,\n });\n setVisible(true);\n };\n editor.on(\"selectionUpdate\", update);\n const onBlur = () => {\n // Delay so clicks on toolbar buttons register before hiding\n setTimeout(() => {\n if (!editor.isFocused) setVisible(false);\n }, 150);\n };\n editor.on(\"blur\", onBlur);\n return () => {\n editor.off(\"selectionUpdate\", update);\n editor.off(\"blur\", onBlur);\n };\n }, [editor]);\n\n const handleSetLink = () => {\n if (linkUrl.trim()) {\n editor\n .chain()\n .focus()\n .extendMarkRange(\"link\")\n .setLink({ href: linkUrl.trim() })\n .run();\n } else {\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n }\n setShowLinkInput(false);\n setLinkUrl(\"\");\n };\n\n const toggleLink = () => {\n if (editor.isActive(\"link\")) {\n editor.chain().focus().unsetLink().run();\n return;\n }\n const previousUrl = editor.getAttributes(\"link\").href || \"\";\n setLinkUrl(previousUrl);\n setShowLinkInput(true);\n };\n\n const items = [\n {\n label: \"B\",\n title: \"Bold\",\n action: () => editor.chain().focus().toggleBold().run(),\n isActive: () => editor.isActive(\"bold\"),\n style: { fontWeight: 700 } as React.CSSProperties,\n },\n {\n label: \"I\",\n title: \"Italic\",\n action: () => editor.chain().focus().toggleItalic().run(),\n isActive: () => editor.isActive(\"italic\"),\n style: { fontStyle: \"italic\" } as React.CSSProperties,\n },\n {\n label: \"S\",\n title: \"Strikethrough\",\n action: () => editor.chain().focus().toggleStrike().run(),\n isActive: () => editor.isActive(\"strike\"),\n style: { textDecoration: \"line-through\" } as React.CSSProperties,\n },\n {\n label: \"<>\",\n title: \"Code\",\n action: () => editor.chain().focus().toggleCode().run(),\n isActive: () => editor.isActive(\"code\"),\n style: { fontFamily: \"monospace\", fontSize: 11 } as React.CSSProperties,\n },\n { type: \"divider\" as const },\n {\n label: \"H1\",\n title: \"Heading 1\",\n action: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 1 }),\n },\n {\n label: \"H2\",\n title: \"Heading 2\",\n action: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 2 }),\n },\n {\n label: \"H3\",\n title: \"Heading 3\",\n action: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),\n isActive: () => editor.isActive(\"heading\", { level: 3 }),\n },\n { type: \"divider\" as const },\n {\n label: \"Link\",\n title: \"Link\",\n action: toggleLink,\n isActive: () => editor.isActive(\"link\"),\n },\n ];\n\n if (!visible) return null;\n\n return (\n <div\n ref={toolbarRef}\n className=\"re-bubble-toolbar\"\n onMouseDown={(e) => e.preventDefault()}\n style={{\n position: \"fixed\",\n top: coords.top,\n left: coords.left,\n transform: \"translate(-50%, -100%)\",\n zIndex: 9999,\n }}\n >\n {showLinkInput ? (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 4, padding: 4 }}\n onMouseDown={(e) => e.preventDefault()}\n >\n <input\n autoFocus\n type=\"url\"\n placeholder=\"Paste link...\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleSetLink();\n if (e.key === \"Escape\") {\n setShowLinkInput(false);\n setLinkUrl(\"\");\n }\n }}\n style={{\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n color: \"white\",\n fontSize: 12,\n width: 160,\n padding: \"2px 4px\",\n }}\n />\n <button\n onClick={handleSetLink}\n style={{\n fontSize: 11,\n color: \"#60a5fa\",\n padding: \"2px 6px\",\n fontWeight: 500,\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n }}\n >\n Apply\n </button>\n </div>\n ) : (\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 2 }}\n onMouseDown={(e) => e.preventDefault()}\n >\n {items.map((item, i) => {\n if (\"type\" in item && item.type === \"divider\") {\n return (\n <div\n key={`d-${i}`}\n style={{\n width: 1,\n height: 16,\n background: \"rgba(255,255,255,0.2)\",\n margin: \"0 2px\",\n }}\n />\n );\n }\n const { label, title, action, isActive, style } = item as {\n label: string;\n title: string;\n action: () => void;\n isActive: () => boolean;\n style?: React.CSSProperties;\n };\n return (\n <Tooltip key={title}>\n <TooltipTrigger asChild>\n <button\n onClick={action}\n className={cn(\n \"re-bubble-btn\",\n isActive() && \"re-bubble-btn--active\",\n )}\n style={style}\n >\n {label}\n </button>\n </TooltipTrigger>\n <TooltipContent>{title}</TooltipContent>\n </Tooltip>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\n// --- Visual Markdown Editor ---\n\n// --- Syntax-highlighted code editor (textarea + overlay) ---\n\nfunction highlightJson(text: string): string {\n // Escape HTML first\n const esc = text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n // Tokenize JSON with regex\n return esc.replace(\n /(\"(?:\\\\.|[^\"\\\\])*\")\\s*:|(\"(?:\\\\.|[^\"\\\\])*\")|((?:-?\\d+)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(\\btrue\\b|\\bfalse\\b|\\bnull\\b)/g,\n (match, key, str, num, lit) => {\n if (key) return `<span class=\"sh-key\">${key}</span>:`;\n if (str) return `<span class=\"sh-str\">${str}</span>`;\n if (num) return `<span class=\"sh-num\">${num}</span>`;\n if (lit) return `<span class=\"sh-lit\">${lit}</span>`;\n return match;\n },\n );\n}\n\nconst shStyles = `\n.sh-key { color: #7dd3fc; }\n.sh-str { color: #86efac; }\n.sh-num { color: #fca5a5; }\n.sh-lit { color: #c4b5fd; }\n`;\n\nfunction SyntaxHighlightEditor({\n value,\n onChange,\n language: _language,\n}: {\n value: string;\n onChange: (v: string) => void;\n language: \"json\";\n}) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const preRef = useRef<HTMLPreElement>(null);\n\n const highlighted = useMemo(() => highlightJson(value), [value]);\n\n const syncScroll = useCallback(() => {\n if (textareaRef.current && preRef.current) {\n preRef.current.scrollTop = textareaRef.current.scrollTop;\n preRef.current.scrollLeft = textareaRef.current.scrollLeft;\n }\n }, []);\n\n const monoFont =\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace';\n const sharedStyle: React.CSSProperties = {\n fontFamily: monoFont,\n fontSize: 13,\n lineHeight: 1.6,\n padding: 12,\n margin: 0,\n border: \"none\",\n whiteSpace: \"pre\",\n wordWrap: \"normal\",\n overflowWrap: \"normal\",\n tabSize: 2,\n };\n\n return (\n <>\n <style>{shStyles}</style>\n <div\n className=\"flex-1 min-h-0\"\n style={{ position: \"relative\", overflow: \"hidden\" }}\n >\n <pre\n ref={preRef}\n aria-hidden\n style={{\n ...sharedStyle,\n position: \"absolute\",\n inset: 0,\n overflow: \"auto\",\n pointerEvents: \"none\",\n color: \"hsl(var(--muted-foreground))\",\n background: \"transparent\",\n }}\n dangerouslySetInnerHTML={{ __html: highlighted + \"\\n\" }}\n />\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onScroll={syncScroll}\n spellCheck={false}\n style={{\n ...sharedStyle,\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n resize: \"none\",\n background: \"transparent\",\n color: \"transparent\",\n caretColor: \"hsl(var(--foreground))\",\n outline: \"none\",\n WebkitTextFillColor: \"transparent\",\n }}\n />\n </div>\n </>\n );\n}\n\nfunction VisualMarkdownEditor({\n content,\n onChange,\n resourcePath,\n}: {\n content: string;\n onChange: (md: string) => void;\n resourcePath: string;\n}) {\n const isSettingContent = useRef(false);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n // Parse frontmatter — strip it from tiptap content, re-prepend on save\n const parsed = useMemo(() => parseFrontmatter(content), [content]);\n const frontmatterRef = useRef(parsed);\n frontmatterRef.current = parsed;\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n codeBlock: {},\n link: false,\n dropcursor: { color: \"hsl(var(--ring))\", width: 2 },\n }),\n Placeholder.configure({\n placeholder: ({ node }) => {\n if (node.type.name === \"heading\") {\n const level = node.attrs.level;\n if (level === 1) return \"Heading 1\";\n if (level === 2) return \"Heading 2\";\n return \"Heading 3\";\n }\n return \"Type '/' for commands...\";\n },\n showOnlyWhenEditable: true,\n showOnlyCurrent: true,\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: { class: \"re-link\" },\n }),\n Markdown.configure({\n html: true,\n transformPastedText: true,\n transformCopiedText: true,\n }),\n ],\n content: parsed?.body ?? content,\n editorProps: {\n attributes: {\n class: \"re-prose\",\n },\n },\n onUpdate: ({ editor }) => {\n if (isSettingContent.current) return;\n try {\n const md = (editor.storage as any).markdown.getMarkdown();\n // Re-prepend frontmatter if it existed\n const fm = frontmatterRef.current;\n const full = fm ? fm.raw + md : md;\n onChangeRef.current(full);\n } catch (err) {\n console.error(\"Markdown serialization error:\", err);\n }\n },\n });\n\n useEffect(() => {\n if (!editor || editor.isDestroyed) return;\n const currentMd = (editor.storage as any).markdown.getMarkdown();\n if (currentMd !== (parsed?.body ?? content)) {\n if (editor.isFocused) return;\n isSettingContent.current = true;\n editor.commands.setContent(parsed?.body ?? content);\n isSettingContent.current = false;\n }\n }, [content, editor, parsed]);\n\n useEffect(() => {\n return () => {\n editor?.destroy();\n };\n }, [editor]);\n\n if (!editor) return null;\n\n const handleWrapperClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // If the click was on the wrapper (empty area), not on editor content, focus at end\n const target = e.target as HTMLElement;\n if (\n target.classList.contains(\"re-editor-clickable\") ||\n target.classList.contains(\"re-editor-wrapper\")\n ) {\n editor.chain().focus(\"end\").run();\n }\n };\n\n return (\n <div\n className=\"re-editor-wrapper re-editor-clickable\"\n onClick={handleWrapperClick}\n style={{ position: \"relative\", minHeight: \"100%\", cursor: \"text\" }}\n >\n {parsed && (\n <FrontmatterBar\n resourcePath={resourcePath}\n frontmatter={parsed}\n onChange={(updated) => {\n frontmatterRef.current = updated;\n // Get current body and combine with updated frontmatter\n try {\n const md = (editor.storage as any).markdown.getMarkdown();\n onChangeRef.current(updated.raw + md);\n } catch {\n // fallback\n }\n }}\n />\n )}\n <InlineBubbleToolbar editor={editor} />\n <SlashMenu editor={editor} />\n <EditorContent editor={editor} />\n </div>\n );\n}\n\n// --- Main ResourceEditor ---\n\ninterface RemoteAgentFormValue {\n id?: string;\n name: string;\n description: string;\n url: string;\n color: string;\n}\n\nfunction parseRemoteAgentContent(\n content: string,\n path: string,\n): RemoteAgentFormValue {\n const fallbackId = getRemoteAgentIdFromPath(path);\n try {\n const data = JSON.parse(content || \"{}\");\n return {\n id: data.id || fallbackId,\n name: data.name ?? \"\",\n description: data.description ?? \"\",\n url: data.url ?? \"\",\n color: data.color ?? \"#6B7280\",\n };\n } catch {\n return {\n id: fallbackId,\n name: \"\",\n description: \"\",\n url: \"\",\n color: \"#6B7280\",\n };\n }\n}\n\nfunction serializeRemoteAgent(value: RemoteAgentFormValue): string {\n return (\n JSON.stringify(\n {\n id: value.id,\n name: value.name,\n description: value.description || undefined,\n url: value.url,\n color: value.color,\n },\n null,\n 2,\n ) + \"\\n\"\n );\n}\n\nfunction RemoteAgentFormEditor({\n resource,\n onChange,\n}: {\n resource: Resource;\n onChange: (content: string) => void;\n}) {\n const [value, setValue] = useState<RemoteAgentFormValue>(() =>\n parseRemoteAgentContent(resource.content, resource.path),\n );\n const prevIdRef = useRef(resource.id);\n\n useEffect(() => {\n if (prevIdRef.current !== resource.id) {\n setValue(parseRemoteAgentContent(resource.content, resource.path));\n prevIdRef.current = resource.id;\n }\n }, [resource.id, resource.content, resource.path]);\n\n const update = (patch: Partial<RemoteAgentFormValue>) => {\n const next = { ...value, ...patch };\n setValue(next);\n onChange(serializeRemoteAgent(next));\n };\n\n const inputClass =\n \"w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-1 focus:ring-accent\";\n const labelClass = \"block text-[11px] font-medium text-muted-foreground mb-1\";\n\n return (\n <div className=\"flex flex-1 min-h-0 flex-col overflow-y-auto p-4\">\n <div className=\"max-w-md space-y-3\">\n <p className=\"text-[11px] text-muted-foreground/70 leading-snug\">\n Connected remote agent over the A2A protocol. @-mention it in chat to\n delegate tasks.\n </p>\n <div>\n <label className={labelClass}>Name</label>\n <input\n className={inputClass}\n value={value.name}\n onChange={(e) => update({ name: e.target.value })}\n placeholder=\"Analytics\"\n />\n </div>\n <div>\n <label className={labelClass}>URL</label>\n <input\n className={inputClass}\n value={value.url}\n onChange={(e) => update({ url: e.target.value })}\n placeholder=\"https://analytics.example.com\"\n />\n <p className=\"mt-1 text-[10px] text-muted-foreground/50\">\n A2A endpoint. The agent card is served at{\" \"}\n <code>/.well-known/agent-card.json</code>.\n </p>\n </div>\n <div>\n <label className={labelClass}>Description</label>\n <textarea\n className={cn(inputClass, \"resize-y\")}\n rows={3}\n value={value.description}\n onChange={(e) => update({ description: e.target.value })}\n placeholder=\"What this agent is good at — helps the main agent decide when to delegate.\"\n />\n </div>\n <div>\n <label className={labelClass}>Color</label>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"color\"\n value={value.color}\n onChange={(e) => update({ color: e.target.value })}\n className=\"h-8 w-10 cursor-pointer rounded border border-border bg-transparent\"\n />\n <input\n className={cn(inputClass, \"flex-1\")}\n value={value.color}\n onChange={(e) => update({ color: e.target.value })}\n placeholder=\"#6B7280\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function ResourceEditor({\n resource,\n onSave,\n view: controlledView,\n onViewChange,\n onSaveStatusChange,\n hideToolbar,\n}: ResourceEditorProps) {\n const [content, setContent] = useState(resource.content);\n const [internalView, setInternalView] = useState<\"visual\" | \"code\">(\n getViewPref,\n );\n const view = controlledView ?? internalView;\n const [saveStatus, setSaveStatus] = useState<\"idle\" | \"saving\" | \"saved\">(\n \"idle\",\n );\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const prevIdRef = useRef(resource.id);\n\n // Reset content when resource changes\n useEffect(() => {\n if (prevIdRef.current !== resource.id) {\n setContent(resource.content);\n setSaveStatus(\"idle\");\n onSaveStatusChange?.(\"idle\");\n prevIdRef.current = resource.id;\n }\n }, [resource.id, resource.content, onSaveStatusChange]);\n\n const handleChange = useCallback(\n (newContent: string) => {\n setContent(newContent);\n setSaveStatus(\"idle\");\n onSaveStatusChange?.(\"idle\");\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n setSaveStatus(\"saving\");\n onSaveStatusChange?.(\"saving\");\n onSave(newContent);\n setTimeout(() => {\n setSaveStatus(\"saved\");\n onSaveStatusChange?.(\"saved\");\n }, 300);\n }, 1000);\n },\n [onSave, onSaveStatusChange],\n );\n\n const switchView = useCallback(\n (v: \"visual\" | \"code\") => {\n setInternalView(v);\n setViewPref(v);\n onViewChange?.(v);\n },\n [onViewChange],\n );\n\n // Cleanup debounce on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const isMarkdown =\n resource.mimeType === \"text/markdown\" || resource.path.endsWith(\".md\");\n const isImage = resource.mimeType.startsWith(\"image/\");\n const isRemoteAgent = isRemoteAgentPath(resource.path);\n\n // Remote-agent manifest → form editor\n if (isRemoteAgent) {\n return (\n <div className=\"flex h-full flex-col\">\n <RemoteAgentFormEditor resource={resource} onChange={handleChange} />\n </div>\n );\n }\n\n // Image preview\n if (isImage) {\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex flex-1 items-center justify-center overflow-auto p-4\">\n <img\n src={agentNativePath(`/_agent-native/resources/${resource.id}?raw`)}\n alt={resource.path}\n className=\"max-h-full max-w-full object-contain\"\n />\n </div>\n </div>\n );\n }\n\n // Markdown files get visual/code toggle\n if (isMarkdown) {\n return (\n <div className=\"flex h-full flex-col\">\n <style>{editorStyles}</style>\n {!hideToolbar && (\n <div className=\"flex items-center justify-between border-b border-border px-3 py-2\">\n <div className=\"flex items-center gap-1\">\n <button\n onClick={() => switchView(\"visual\")}\n className={cn(\n \"rounded-md px-2 py-1.5 text-[12px] leading-none\",\n view === \"visual\"\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:bg-accent/50 hover:text-foreground\",\n )}\n style={CONTROL_STYLE}\n >\n Visual\n </button>\n <button\n onClick={() => switchView(\"code\")}\n className={cn(\n \"rounded-md px-2 py-1.5 text-[12px] leading-none\",\n view === \"code\"\n ? \"bg-accent text-foreground\"\n : \"text-muted-foreground hover:bg-accent/50 hover:text-foreground\",\n )}\n style={CONTROL_STYLE}\n >\n Code\n </button>\n </div>\n <span className=\"text-[11px] text-muted-foreground/60\">\n {saveStatus === \"saving\"\n ? \"Saving...\"\n : saveStatus === \"saved\"\n ? \"Saved\"\n : \"\"}\n </span>\n </div>\n )}\n {view === \"visual\" ? (\n <div\n className=\"flex-1 min-h-0 overflow-y-auto p-3\"\n key={resource.id + \"-visual\"}\n >\n <VisualMarkdownEditor\n content={content}\n onChange={handleChange}\n resourcePath={resource.path}\n />\n </div>\n ) : (\n <textarea\n value={content}\n onChange={(e) => handleChange(e.target.value)}\n className=\"flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50\"\n style={{\n fontFamily:\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n lineHeight: 1.6,\n }}\n spellCheck={false}\n />\n )}\n </div>\n );\n }\n\n // Non-markdown text files\n const isJson =\n resource.mimeType === \"application/json\" || resource.path.endsWith(\".json\");\n\n return (\n <div className=\"flex h-full flex-col\">\n {isJson ? (\n <SyntaxHighlightEditor\n value={content}\n onChange={handleChange}\n language=\"json\"\n />\n ) : (\n <textarea\n value={content}\n onChange={(e) => handleChange(e.target.value)}\n className=\"flex-1 min-h-0 resize-none bg-transparent p-3 text-[13px] text-foreground outline-none placeholder:text-muted-foreground/50\"\n style={{\n fontFamily:\n 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace',\n lineHeight: 1.6,\n }}\n spellCheck={false}\n />\n )}\n </div>\n );\n}\n\n// --- Scoped editor styles (injected inline so no external CSS needed) ---\n\nconst editorStyles = `\n/* Prose styling for the visual editor */\n.re-prose {\n outline: none;\n color: hsl(var(--foreground));\n line-height: 1.65;\n font-size: 13px;\n min-height: 100%;\n}\n.re-prose > *:first-child { margin-top: 0; }\n\n.re-prose h1 {\n font-size: 1.5em;\n font-weight: 700;\n margin: 1em 0 0.25em;\n line-height: 1.25;\n}\n.re-prose h2 {\n font-size: 1.25em;\n font-weight: 600;\n margin: 0.8em 0 0.2em;\n line-height: 1.3;\n}\n.re-prose h3 {\n font-size: 1.1em;\n font-weight: 600;\n margin: 0.6em 0 0.15em;\n line-height: 1.35;\n}\n.re-prose p {\n margin: 0.35em 0;\n min-height: 1.65em;\n}\n.re-prose ul {\n list-style-type: disc;\n padding-left: 1.4em;\n margin: 0.2em 0;\n}\n.re-prose ol {\n list-style-type: decimal;\n padding-left: 1.4em;\n margin: 0.2em 0;\n}\n.re-prose li { margin: 0.05em 0; }\n.re-prose li p { margin: 0; }\n\n.re-prose blockquote {\n border-left: 2px solid hsl(var(--border));\n padding-left: 0.8em;\n margin: 0.3em 0;\n color: hsl(var(--muted-foreground));\n}\n.re-prose code {\n font-family: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;\n font-size: 0.88em;\n background: hsl(var(--muted));\n padding: 0.1em 0.3em;\n border-radius: 3px;\n}\n.re-prose pre {\n font-family: ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace;\n font-size: 12px;\n background: hsl(var(--muted));\n border-radius: 4px;\n padding: 0.7em 0.9em;\n margin: 0.3em 0;\n overflow-x: auto;\n line-height: 1.5;\n}\n.re-prose pre code {\n background: none;\n padding: 0;\n border: none;\n font-size: inherit;\n}\n.re-prose hr {\n border: none;\n border-top: 1px solid hsl(var(--border));\n margin: 1em 0;\n}\n.re-prose strong { font-weight: 600; }\n.re-prose em { font-style: italic; }\n.re-prose s { text-decoration: line-through; }\n\n.re-link {\n color: hsl(var(--foreground));\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-color: hsl(var(--muted-foreground));\n cursor: pointer;\n}\n.re-link:hover {\n text-decoration-color: hsl(var(--foreground));\n}\n\n/* Placeholder */\n.re-prose p.is-editor-empty:first-child::before,\n.re-prose p.is-empty::before,\n.re-prose h1.is-empty::before,\n.re-prose h2.is-empty::before,\n.re-prose h3.is-empty::before {\n content: attr(data-placeholder);\n float: left;\n color: hsl(var(--muted-foreground));\n opacity: 0.5;\n pointer-events: none;\n height: 0;\n}\n\n/* Selection */\n.re-prose ::selection {\n background: hsl(210 100% 52% / 0.2);\n}\n\n/* Bubble toolbar */\n.re-bubble-toolbar {\n display: flex;\n align-items: center;\n background: hsl(0 0% 15%);\n border-radius: 6px;\n padding: 3px;\n box-shadow: 0 4px 16px rgb(0 0 0 / 0.25), 0 0 0 1px rgb(255 255 255 / 0.06);\n}\n.re-bubble-btn {\n padding: 3px 6px;\n border-radius: 4px;\n font-size: 12px;\n color: rgba(255,255,255,0.75);\n background: none;\n border: none;\n cursor: pointer;\n line-height: 1;\n}\n.re-bubble-btn:hover {\n background: rgba(255,255,255,0.12);\n color: white;\n}\n.re-bubble-btn--active {\n background: rgba(255,255,255,0.18);\n color: white;\n}\n\n/* Slash command menu */\n.re-slash-menu {\n background: hsl(var(--popover));\n border: 1px solid hsl(var(--border));\n border-radius: 6px;\n box-shadow: 0 4px 20px rgb(0 0 0 / 0.12), 0 0 0 1px rgb(0 0 0 / 0.04);\n min-width: 220px;\n max-height: 320px;\n overflow-y: auto;\n color: hsl(var(--foreground));\n}\n.re-slash-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 10px;\n text-align: left;\n background: none;\n border: none;\n cursor: pointer;\n color: hsl(var(--foreground));\n font-size: 13px;\n}\n.re-slash-item:hover,\n.re-slash-item--active {\n background: hsl(var(--accent));\n}\n.re-slash-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: 1px solid hsl(var(--border));\n background: hsl(var(--background));\n font-size: 12px;\n font-weight: 600;\n color: hsl(var(--muted-foreground));\n flex-shrink: 0;\n}\n.re-slash-title {\n display: block;\n font-weight: 500;\n font-size: 13px;\n}\n.re-slash-desc {\n display: block;\n font-size: 11px;\n color: hsl(var(--muted-foreground));\n}\n`;\n"]}
|