@apteva/apteva-darwin-arm64 0.4.53 → 0.4.56
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.
- package/apteva +0 -0
- package/dist/ActivityPage.nx7edj1s.js +3 -0
- package/dist/{ActivityPage.9v5ha2p7.js.map → ActivityPage.nx7edj1s.js.map} +2 -2
- package/dist/ApiDocsPage.rwys8wpd.js +4 -0
- package/dist/{ApiDocsPage.qsehxvkb.js.map → ApiDocsPage.rwys8wpd.js.map} +2 -2
- package/dist/App.2j4tpeys.js +61 -0
- package/dist/{App.anvw0hjc.js.map → App.2j4tpeys.js.map} +3 -3
- package/dist/{App.jdkx6eqd.js → App.8cvz3ngj.js} +2 -2
- package/dist/{App.jdkx6eqd.js.map → App.8cvz3ngj.js.map} +1 -1
- package/dist/App.a2rb0ne3.js +4 -0
- package/dist/{App.sd685nt9.js.map → App.a2rb0ne3.js.map} +2 -2
- package/dist/App.aybz4ae0.js +53 -0
- package/dist/{App.d9vcm6zs.js.map → App.aybz4ae0.js.map} +3 -3
- package/dist/App.bjefj5zs.js +4 -0
- package/dist/{App.aexwv4rk.js.map → App.bjefj5zs.js.map} +2 -2
- package/dist/App.cnbb1872.js +4 -0
- package/dist/{App.x6x8s16g.js.map → App.cnbb1872.js.map} +2 -2
- package/dist/App.cv6e5yds.js +4 -0
- package/dist/App.cv6e5yds.js.map +10 -0
- package/dist/App.eqd061d2.js +4 -0
- package/dist/{App.dmvykj97.js.map → App.eqd061d2.js.map} +3 -3
- package/dist/App.fy5bef1p.js +20 -0
- package/dist/{App.shfd8tp9.js.map → App.fy5bef1p.js.map} +6 -5
- package/dist/App.mxcz65n1.js +4 -0
- package/dist/{App.cjcyr5aj.js.map → App.mxcz65n1.js.map} +2 -2
- package/dist/App.nvpvg5yh.js +13 -0
- package/dist/{App.j4ec9k18.js.map → App.nvpvg5yh.js.map} +2 -2
- package/dist/{App.2j20h2gt.js → App.rvnjekh6.js} +3 -3
- package/dist/{App.2j20h2gt.js.map → App.rvnjekh6.js.map} +2 -2
- package/dist/App.was53rtk.js +4 -0
- package/dist/{App.kz3qyyre.js.map → App.was53rtk.js.map} +2 -2
- package/dist/App.wqjbggrj.js +4 -0
- package/dist/{App.e2kkda2a.js.map → App.wqjbggrj.js.map} +2 -2
- package/dist/App.z92hp4k3.js +221 -0
- package/dist/{App.j0xwtdd7.js.map → App.z92hp4k3.js.map} +11 -11
- package/dist/{App.wghtdzsk.js → App.zn4mw16t.js} +1 -1
- package/dist/ConnectionsPage.qfyks0xm.js +3 -0
- package/dist/McpPage.y6vgt9ej.js +3 -0
- package/dist/SettingsPage.fkw8berr.js +3 -0
- package/dist/SkillsPage.48zztx44.js +3 -0
- package/dist/TasksPage.v930en79.js +3 -0
- package/dist/TelemetryPage.xxebs3s9.js +3 -0
- package/dist/TelemetryPage.xxebs3s9.js.map +9 -0
- package/dist/TestsPage.1xtfmbrg.js +3 -0
- package/dist/ThreadsPage.xazwab60.js +3 -0
- package/dist/ThreadsPage.xazwab60.js.map +9 -0
- package/dist/apteva-kit.css +1 -1
- package/dist/index.html +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/ActivityPage.9v5ha2p7.js +0 -3
- package/dist/ApiDocsPage.qsehxvkb.js +0 -4
- package/dist/App.2md3x3z7.js +0 -4
- package/dist/App.2md3x3z7.js.map +0 -10
- package/dist/App.aexwv4rk.js +0 -4
- package/dist/App.anvw0hjc.js +0 -61
- package/dist/App.cjcyr5aj.js +0 -4
- package/dist/App.d9vcm6zs.js +0 -53
- package/dist/App.dmvykj97.js +0 -4
- package/dist/App.e2kkda2a.js +0 -4
- package/dist/App.j0xwtdd7.js +0 -221
- package/dist/App.j4ec9k18.js +0 -13
- package/dist/App.kz3qyyre.js +0 -4
- package/dist/App.sd685nt9.js +0 -4
- package/dist/App.shfd8tp9.js +0 -20
- package/dist/App.x6x8s16g.js +0 -4
- package/dist/ConnectionsPage.1dyyfqbk.js +0 -3
- package/dist/McpPage.xvr8hk05.js +0 -3
- package/dist/SettingsPage.4r1nbxvp.js +0 -3
- package/dist/SkillsPage.jw7carjq.js +0 -3
- package/dist/TasksPage.r8txe0e9.js +0 -3
- package/dist/TelemetryPage.sqnsfrht.js +0 -3
- package/dist/TelemetryPage.sqnsfrht.js.map +0 -9
- package/dist/TestsPage.pkymr7yt.js +0 -3
- package/dist/ThreadsPage.49tgq4fq.js +0 -3
- package/dist/ThreadsPage.49tgq4fq.js.map +0 -9
- /package/dist/{ConnectionsPage.1dyyfqbk.js.map → ConnectionsPage.qfyks0xm.js.map} +0 -0
- /package/dist/{McpPage.xvr8hk05.js.map → McpPage.y6vgt9ej.js.map} +0 -0
- /package/dist/{SettingsPage.4r1nbxvp.js.map → SettingsPage.fkw8berr.js.map} +0 -0
- /package/dist/{SkillsPage.jw7carjq.js.map → SkillsPage.48zztx44.js.map} +0 -0
- /package/dist/{TasksPage.r8txe0e9.js.map → TasksPage.v930en79.js.map} +0 -0
- /package/dist/{TestsPage.pkymr7yt.js.map → TestsPage.1xtfmbrg.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import React, { useState, useEffect, useCallback, useRef, useMemo } from \"react\";\nimport { TasksIcon, CloseIcon, RecurringIcon, ScheduledIcon, TaskOnceIcon } from \"../common/Icons\";\nimport { Select } from \"../common/Select\";\nimport { useConfirm } from \"../common/Modal\";\nimport { useAuth, useProjects } from \"../../context\";\nimport { useTelemetry } from \"../../context/TelemetryContext\";\nimport type { Task, TaskTrajectoryStep, ToolUseBlock, ToolResultBlock, Agent } from \"../../types\";\n\ninterface TasksPageProps {\n onSelectAgent?: (agentId: string) => void;\n}\n\nexport function TasksPage({ onSelectAgent }: TasksPageProps) {\n const { authFetch } = useAuth();\n const { currentProjectId } = useProjects();\n const [tasks, setTasks] = useState<Task[]>([]);\n const [loading, setLoading] = useState(true);\n const [filter, setFilter] = useState<string>(\"all\");\n const [agentFilter, setAgentFilter] = useState<string>(\"all\");\n const [selectedTask, setSelectedTask] = useState<Task | null>(null);\n const [loadingTask, setLoadingTask] = useState(false);\n const [showCreateModal, setShowCreateModal] = useState(false);\n const lastProcessedEventRef = useRef<string | null>(null);\n\n // Subscribe to task telemetry events for real-time updates\n const { events: taskEvents } = useTelemetry({ category: \"TASK\" });\n\n const fetchTasks = useCallback(async () => {\n try {\n let url = `/api/tasks?status=${filter}`;\n if (currentProjectId !== null) {\n url += `&project_id=${encodeURIComponent(currentProjectId)}`;\n }\n const res = await authFetch(url);\n const data = await res.json();\n setTasks(data.tasks || []);\n } catch (e) {\n console.error(\"Failed to fetch tasks:\", e);\n } finally {\n setLoading(false);\n }\n }, [authFetch, filter, currentProjectId]);\n\n // Initial fetch\n useEffect(() => {\n fetchTasks();\n }, [fetchTasks]);\n\n // Handle real-time task events from telemetry - use as trigger to refetch\n // since telemetry data is incomplete (missing id, agentId, status, etc.)\n useEffect(() => {\n if (!taskEvents.length) return;\n\n const latestEvent = taskEvents[0];\n if (!latestEvent || latestEvent.id === lastProcessedEventRef.current) return;\n\n // Only react to task mutation events\n const eventType = latestEvent.type;\n if (eventType === \"task_created\" || eventType === \"task_updated\" || eventType === \"task_deleted\") {\n lastProcessedEventRef.current = latestEvent.id;\n console.log(\"[TasksPage] Telemetry event:\", eventType);\n // Refetch to get complete task data\n fetchTasks();\n }\n }, [taskEvents, fetchTasks]);\n\n // Fetch full task details (including trajectory) when selecting a task\n const selectTask = useCallback(async (task: Task) => {\n // Set task immediately for quick feedback\n setSelectedTask(task);\n setLoadingTask(true);\n\n try {\n const res = await authFetch(`/api/tasks/${task.agentId}/${task.id}`);\n console.log(\"[TasksPage] Fetch task response status:\", res.status);\n if (res.ok) {\n const data = await res.json();\n console.log(\"[TasksPage] Task data:\", data);\n console.log(\"[TasksPage] Has trajectory:\", !!data.task?.trajectory, \"Length:\", data.task?.trajectory?.length);\n if (data.task) {\n // Merge with agentId/agentName since API might not include them\n setSelectedTask({ ...data.task, agentId: task.agentId, agentName: task.agentName });\n }\n } else {\n console.error(\"[TasksPage] Failed to fetch task:\", res.status, await res.text());\n }\n } catch (e) {\n console.error(\"Failed to fetch task details:\", e);\n } finally {\n setLoadingTask(false);\n }\n }, [authFetch]);\n\n // Extract unique agents from tasks for the agent filter\n const uniqueAgents = useMemo(() => {\n const map = new Map<string, string>();\n for (const t of tasks) {\n const id = t.agentId || (t as any).agent_id;\n const name = t.agentName || (t as any).agent_name;\n if (id && name && !map.has(id)) {\n map.set(id, name);\n }\n }\n return Array.from(map.entries()).sort((a, b) => a[1].localeCompare(b[1]));\n }, [tasks]);\n\n // Sort tasks: running first, then pending by next execution (soonest first), then completed/failed by date\n const sortedTasks = useMemo(() => {\n const filtered = agentFilter === \"all\" ? tasks : tasks.filter(t => (t.agentId || (t as any).agent_id) === agentFilter);\n return [...filtered].sort((a, b) => {\n // Running tasks first\n if (a.status === \"running\" && b.status !== \"running\") return -1;\n if (b.status === \"running\" && a.status !== \"running\") return 1;\n // Pending tasks next\n const aIsPending = a.status === \"pending\";\n const bIsPending = b.status === \"pending\";\n if (aIsPending && !bIsPending) return -1;\n if (bIsPending && !aIsPending) return 1;\n // For running/pending: sort by next execution time (soonest first)\n if (aIsPending && bIsPending || a.status === \"running\" && b.status === \"running\") {\n const aTime = a.next_run || a.execute_at || null;\n const bTime = b.next_run || b.execute_at || null;\n const aTs = aTime ? new Date(aTime).getTime() : Infinity;\n const bTs = bTime ? new Date(bTime).getTime() : Infinity;\n return aTs - bTs;\n }\n // For completed/failed: most recent first\n const aDate = a.completed_at || a.executed_at || a.created_at;\n const bDate = b.completed_at || b.executed_at || b.created_at;\n return new Date(bDate).getTime() - new Date(aDate).getTime();\n });\n }, [tasks, agentFilter]);\n\n const statusColors: Record<string, string> = {\n pending: \"bg-yellow-500/20 text-yellow-400\",\n running: \"bg-blue-500/20 text-blue-400\",\n completed: \"bg-green-500/20 text-green-400\",\n failed: \"bg-red-500/20 text-red-400\",\n cancelled: \"bg-gray-500/20 text-gray-400\",\n };\n\n const filterOptions = [\n { value: \"all\", label: \"All\" },\n { value: \"pending\", label: \"Pending\" },\n { value: \"running\", label: \"Running\" },\n { value: \"completed\", label: \"Completed\" },\n { value: \"failed\", label: \"Failed\" },\n ];\n\n return (\n <div className=\"flex-1 flex overflow-hidden\">\n {/* Task List */}\n <div className={`flex-1 p-4 md:p-6 overflow-auto ${selectedTask ? 'hidden md:block md:w-1/2 lg:w-2/3' : ''}`}>\n <div className=\"max-w-4xl\">\n <div className=\"mb-6\">\n <div className=\"mb-4 flex items-start justify-between\">\n <div>\n <h1 className=\"text-xl md:text-2xl font-semibold mb-1\">Tasks</h1>\n <p className=\"text-sm text-[var(--color-text-muted)]\">\n View tasks from all running agents\n </p>\n </div>\n <button\n onClick={() => setShowCreateModal(true)}\n className=\"px-3 py-1.5 rounded text-sm bg-[var(--color-accent)] text-black hover:opacity-90 transition flex items-center gap-1.5 flex-shrink-0\"\n >\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" /></svg>\n Create Task\n </button>\n </div>\n <div className=\"flex items-center gap-3 flex-wrap pb-1\">\n <div className=\"flex gap-2 overflow-x-auto scrollbar-hide\">\n {filterOptions.map(opt => (\n <button\n key={opt.value}\n onClick={() => setFilter(opt.value)}\n className={`px-3 py-1.5 rounded text-sm transition whitespace-nowrap ${\n filter === opt.value\n ? \"bg-[var(--color-accent)] text-black\"\n : \"bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)]\"\n }`}\n >\n {opt.label}\n </button>\n ))}\n </div>\n {uniqueAgents.length > 0 && (\n <div className=\"w-48\">\n <Select\n value={agentFilter}\n onChange={setAgentFilter}\n placeholder=\"All agents\"\n compact\n options={[\n { value: \"all\", label: \"All agents\" },\n ...uniqueAgents.map(([id, name]) => ({ value: id, label: name })),\n ]}\n />\n </div>\n )}\n </div>\n </div>\n\n {loading ? (\n <div className=\"text-center py-12 text-[var(--color-text-muted)]\">Loading tasks...</div>\n ) : sortedTasks.length === 0 ? (\n <div className=\"text-center py-12\">\n <TasksIcon className=\"w-12 h-12 mx-auto mb-4 text-[var(--color-border-light)]\" />\n <p className=\"text-[var(--color-text-muted)]\">No tasks found</p>\n <p className=\"text-sm text-[var(--color-text-faint)] mt-1\">\n Tasks will appear here when agents create them\n </p>\n </div>\n ) : (\n <div className=\"space-y-3\">\n {sortedTasks.map(task => (\n <div\n key={`${task.agentId}-${task.id}`}\n onClick={() => selectTask(task)}\n className={`bg-[var(--color-surface)] border rounded-lg p-4 cursor-pointer transition ${\n selectedTask?.id === task.id && selectedTask?.agentId === task.agentId\n ? \"border-[var(--color-accent)]\"\n : \"border-[var(--color-border)] hover:border-[var(--color-border-light)]\"\n }`}\n >\n <div className=\"flex items-start justify-between mb-2\">\n <div className=\"flex-1\">\n <h3 className=\"font-medium\">{task.title}</h3>\n <p className=\"text-sm text-[var(--color-text-muted)]\">{task.agentName}</p>\n </div>\n <span className={`px-2 py-1 rounded text-xs font-medium ${statusColors[task.status] || statusColors.pending}`}>\n {task.status}\n </span>\n </div>\n\n {task.description && (\n <p className=\"text-sm text-[var(--color-text-secondary)] mb-2 line-clamp-2\">\n {task.description}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-[var(--color-text-faint)]\">\n <span className=\"flex items-center gap-1\">\n {task.type === \"recurring\"\n ? <RecurringIcon className=\"w-3.5 h-3.5\" />\n : task.execute_at\n ? <ScheduledIcon className=\"w-3.5 h-3.5\" />\n : <TaskOnceIcon className=\"w-3.5 h-3.5\" />\n }\n {task.type === \"recurring\" && task.recurrence ? formatCron(task.recurrence) : task.type}\n </span>\n <span>Priority: {task.priority}</span>\n {task.next_run && (\n <span className=\"text-[var(--color-accent)]\">{formatRelativeTime(task.next_run)}</span>\n )}\n {!task.next_run && task.execute_at && (\n <span className=\"text-[var(--color-accent)]\">{formatRelativeTime(task.execute_at)}</span>\n )}\n <span>Created: {new Date(task.created_at).toLocaleDateString()}</span>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* Task Detail Panel */}\n {selectedTask && (\n <TaskDetailPanel\n task={selectedTask}\n statusColors={statusColors}\n onClose={() => setSelectedTask(null)}\n onSelectAgent={onSelectAgent}\n loading={loadingTask}\n authFetch={authFetch}\n onRefresh={() => { fetchTasks(); setSelectedTask(null); }}\n />\n )}\n\n {/* Create Task Modal */}\n {showCreateModal && (\n <CreateTaskModal\n authFetch={authFetch}\n currentProjectId={currentProjectId}\n onClose={() => setShowCreateModal(false)}\n onCreated={() => { fetchTasks(); setShowCreateModal(false); }}\n />\n )}\n </div>\n );\n}\n\nexport interface TaskDetailPanelProps {\n task: Task;\n statusColors: Record<string, string>;\n onClose: () => void;\n onSelectAgent?: (agentId: string) => void;\n loading?: boolean;\n authFetch?: (url: string, options?: RequestInit) => Promise<Response>;\n onRefresh?: () => void;\n}\n\nexport function TaskDetailPanel({ task, statusColors, onClose, onSelectAgent, loading, authFetch, onRefresh }: TaskDetailPanelProps) {\n const [executing, setExecuting] = useState(false);\n const [deleting, setDeleting] = useState(false);\n const [editing, setEditing] = useState(false);\n const [saving, setSaving] = useState(false);\n const [editForm, setEditForm] = useState({\n title: task.title,\n description: task.description || \"\",\n type: task.type as \"once\" | \"recurring\",\n priority: task.priority,\n execute_at: task.execute_at ? new Date(task.execute_at).toISOString().slice(0, 16) : \"\",\n recurrence: task.recurrence || \"\",\n });\n const { confirm, ConfirmDialog } = useConfirm();\n\n // Reset edit form when task changes\n useEffect(() => {\n setEditForm({\n title: task.title,\n description: task.description || \"\",\n type: task.type as \"once\" | \"recurring\",\n priority: task.priority,\n execute_at: task.execute_at ? new Date(task.execute_at).toISOString().slice(0, 16) : \"\",\n recurrence: task.recurrence || \"\",\n });\n setEditing(false);\n }, [task.id, task.agentId]);\n\n const handleSave = async () => {\n if (!authFetch || saving) return;\n setSaving(true);\n try {\n const body: Record<string, unknown> = {\n title: editForm.title.trim(),\n description: editForm.description.trim() || undefined,\n type: editForm.type,\n priority: editForm.priority,\n };\n if (editForm.type === \"once\" && editForm.execute_at) {\n body.execute_at = new Date(editForm.execute_at).toISOString();\n }\n if (editForm.type === \"recurring\" && editForm.recurrence.trim()) {\n body.recurrence = editForm.recurrence.trim();\n }\n const res = await authFetch(`/api/tasks/${task.agentId}/${task.id}`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (res.ok) {\n setEditing(false);\n onRefresh?.();\n }\n } catch (e) {\n console.error(\"Failed to update task:\", e);\n } finally {\n setSaving(false);\n }\n };\n\n const handleExecute = async () => {\n if (!authFetch || executing) return;\n setExecuting(true);\n try {\n await authFetch(`/api/tasks/${task.agentId}/${task.id}/execute`, { method: \"POST\" });\n onRefresh?.();\n } catch (e) {\n console.error(\"Failed to execute task:\", e);\n } finally {\n setExecuting(false);\n }\n };\n\n const handleDelete = async () => {\n if (!authFetch || deleting) return;\n const ok = await confirm(`Are you sure you want to delete \"${task.title}\"?`, {\n title: \"Delete Task\",\n confirmText: \"Delete\",\n confirmVariant: \"danger\",\n });\n if (!ok) return;\n setDeleting(true);\n try {\n await authFetch(`/api/tasks/${task.agentId}/${task.id}`, { method: \"DELETE\" });\n onRefresh?.();\n } catch (e) {\n console.error(\"Failed to delete task:\", e);\n } finally {\n setDeleting(false);\n }\n };\n\n const inputClass = \"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-2 py-1.5 text-sm focus:outline-none focus:border-[var(--color-accent)] text-[var(--color-text)]\";\n\n return (\n <div className=\"w-full md:w-1/2 lg:w-1/3 border-l border-[var(--color-border)] bg-[var(--color-bg)] flex flex-col overflow-hidden\">\n {ConfirmDialog}\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-[var(--color-border)]\">\n <h2 className=\"font-medium truncate pr-2\">{editing ? \"Edit Task\" : \"Task Details\"}</h2>\n <div className=\"flex items-center gap-2\">\n {authFetch && !editing && (task.status === \"pending\" || task.status === \"completed\" || task.status === \"failed\") && (\n <button\n onClick={() => setEditing(true)}\n title=\"Edit task\"\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-accent)] transition\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z\" /></svg>\n </button>\n )}\n {authFetch && !editing && (task.status === \"pending\" || task.status === \"completed\") && (\n <button\n onClick={handleExecute}\n disabled={executing}\n title=\"Execute now\"\n className=\"text-[var(--color-accent)] hover:opacity-80 transition disabled:opacity-50\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z\" /><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>\n </button>\n )}\n {authFetch && !editing && (\n <button\n onClick={handleDelete}\n disabled={deleting}\n title=\"Delete task\"\n className=\"text-red-400 hover:text-red-300 transition disabled:opacity-50\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16\" /></svg>\n </button>\n )}\n {editing && (\n <>\n <button\n onClick={() => {\n setEditing(false);\n setEditForm({\n title: task.title,\n description: task.description || \"\",\n type: task.type as \"once\" | \"recurring\",\n priority: task.priority,\n execute_at: task.execute_at ? new Date(task.execute_at).toISOString().slice(0, 16) : \"\",\n recurrence: task.recurrence || \"\",\n });\n }}\n className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] text-sm transition\"\n >\n Cancel\n </button>\n <button\n onClick={handleSave}\n disabled={saving || !editForm.title.trim()}\n className=\"px-3 py-1 rounded text-sm bg-[var(--color-accent)] text-black hover:opacity-90 transition disabled:opacity-50\"\n >\n {saving ? \"Saving...\" : \"Save\"}\n </button>\n </>\n )}\n {!editing && (\n <button onClick={onClose} className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition\">\n <CloseIcon />\n </button>\n )}\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-auto p-4 space-y-4\">\n {/* Title & Status */}\n <div>\n <div className=\"flex items-start justify-between gap-2 mb-2\">\n {editing ? (\n <input\n type=\"text\"\n value={editForm.title}\n onChange={e => setEditForm({ ...editForm, title: e.target.value })}\n className={`${inputClass} text-lg font-medium`}\n placeholder=\"Task title\"\n />\n ) : (\n <h3 className=\"text-lg font-medium\">{task.title}</h3>\n )}\n {!editing && (\n <span className={`px-2 py-1 rounded text-xs font-medium flex-shrink-0 ${statusColors[task.status]}`}>\n {task.status}\n </span>\n )}\n </div>\n {!editing && (\n <button\n onClick={() => onSelectAgent?.(task.agentId)}\n className=\"text-sm text-[var(--color-accent)] hover:underline\"\n >\n {task.agentName}\n </button>\n )}\n </div>\n\n {/* Description */}\n {editing ? (\n <div>\n <h4 className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1\">Description</h4>\n <textarea\n value={editForm.description}\n onChange={e => setEditForm({ ...editForm, description: e.target.value })}\n className={`${inputClass} resize-none`}\n rows={3}\n placeholder=\"Task description...\"\n />\n </div>\n ) : task.description ? (\n <div>\n <h4 className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1\">Description</h4>\n <p className=\"text-sm text-[var(--color-text-secondary)] whitespace-pre-wrap\">{task.description}</p>\n </div>\n ) : null}\n\n {/* Metadata */}\n {editing ? (\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1 block\">Type</label>\n <select\n value={editForm.type}\n onChange={e => setEditForm({ ...editForm, type: e.target.value as \"once\" | \"recurring\" })}\n className={inputClass}\n >\n <option value=\"once\">One-time</option>\n <option value=\"recurring\">Recurring</option>\n </select>\n </div>\n <div>\n <label className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1 block\">Priority</label>\n <input\n type=\"number\"\n min={1}\n max={10}\n value={editForm.priority}\n onChange={e => setEditForm({ ...editForm, priority: Number(e.target.value) })}\n className={inputClass}\n />\n </div>\n </div>\n ) : (\n <div className=\"grid grid-cols-2 gap-3 text-sm\">\n <div>\n <span className=\"text-[var(--color-text-muted)]\">Type</span>\n <p className=\"capitalize\">{task.type}</p>\n </div>\n <div>\n <span className=\"text-[var(--color-text-muted)]\">Priority</span>\n <p>{task.priority}</p>\n </div>\n <div>\n <span className=\"text-[var(--color-text-muted)]\">Source</span>\n <p className=\"capitalize\">{task.source}</p>\n </div>\n {task.recurrence && (\n <div>\n <span className=\"text-[var(--color-text-muted)]\">Recurrence</span>\n <p>{formatCron(task.recurrence)}</p>\n <p className=\"text-xs text-[var(--color-text-faint)] mt-0.5 font-mono\">{task.recurrence}</p>\n </div>\n )}\n </div>\n )}\n\n {/* Schedule (edit mode) */}\n {editing && editForm.type === \"once\" && (\n <div>\n <label className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1 block\">Schedule</label>\n <input\n type=\"datetime-local\"\n value={editForm.execute_at}\n onChange={e => setEditForm({ ...editForm, execute_at: e.target.value })}\n className={inputClass}\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">Leave empty for manual execution</p>\n </div>\n )}\n {editing && editForm.type === \"recurring\" && (\n <div>\n <label className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-1 block\">Cron Schedule</label>\n <input\n type=\"text\"\n value={editForm.recurrence}\n onChange={e => setEditForm({ ...editForm, recurrence: e.target.value })}\n className={`${inputClass} font-mono`}\n placeholder=\"*/30 * * * *\"\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">e.g. */30 * * * * = every 30 min</p>\n </div>\n )}\n\n {/* Timestamps (view mode only) */}\n {!editing && (\n <div className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--color-text-muted)]\">Created</span>\n <span>{new Date(task.created_at).toLocaleString()}</span>\n </div>\n {task.execute_at && (\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--color-text-muted)]\">Scheduled</span>\n <span className=\"text-[var(--color-accent)]\">{formatRelativeTime(task.execute_at)}</span>\n </div>\n )}\n {task.executed_at && (\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--color-text-muted)]\">Started</span>\n <span>{new Date(task.executed_at).toLocaleString()}</span>\n </div>\n )}\n {task.completed_at && (\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--color-text-muted)]\">Completed</span>\n <span>{new Date(task.completed_at).toLocaleString()}</span>\n </div>\n )}\n {task.next_run && (\n <div className=\"flex justify-between\">\n <span className=\"text-[var(--color-text-muted)]\">Next Run</span>\n <span className=\"text-[var(--color-accent)]\">{formatRelativeTime(task.next_run)}</span>\n </div>\n )}\n </div>\n )}\n\n {/* Error */}\n {task.status === \"failed\" && task.error && (\n <div className=\"min-w-0\">\n <h4 className=\"text-xs text-red-400 uppercase tracking-wider mb-1\">Error</h4>\n <div className=\"bg-red-500/10 border border-red-500/20 rounded p-3 overflow-x-auto\">\n <pre className=\"text-sm text-red-400 whitespace-pre-wrap break-words\">{task.error}</pre>\n </div>\n </div>\n )}\n\n {/* Result */}\n {task.status === \"completed\" && task.result && (\n <div className=\"min-w-0\">\n <h4 className=\"text-xs text-green-400 uppercase tracking-wider mb-1\">Result</h4>\n <div className=\"bg-green-500/10 border border-green-500/20 rounded p-3 overflow-x-auto\">\n <pre className=\"text-sm text-green-400 whitespace-pre-wrap break-words\">\n {typeof task.result === \"string\" ? task.result : JSON.stringify(task.result, null, 2)}\n </pre>\n </div>\n </div>\n )}\n\n {/* Trajectory */}\n {loading && !task.trajectory && (\n <div>\n <h4 className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-2\">Trajectory</h4>\n <div className=\"text-sm text-[var(--color-text-faint)]\">Loading trajectory...</div>\n </div>\n )}\n {task.trajectory && task.trajectory.length > 0 && (\n <div>\n <h4 className=\"text-xs text-[var(--color-text-muted)] uppercase tracking-wider mb-2\">\n Trajectory ({task.trajectory.length} steps)\n </h4>\n <TrajectoryView trajectory={task.trajectory} />\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport function TrajectoryView({ trajectory }: { trajectory: TaskTrajectoryStep[] }) {\n const [expanded, setExpanded] = useState<Set<string>>(new Set());\n\n const toggleStep = (id: string) => {\n setExpanded(prev => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const roleStyles = {\n user: { bg: \"bg-blue-500/10\", text: \"text-blue-400\", icon: \"👤\", label: \"User\" },\n assistant: { bg: \"bg-purple-500/10\", text: \"text-purple-400\", icon: \"🤖\", label: \"Assistant\" },\n };\n\n // Render content which can be string or array of blocks\n const renderContent = (step: TaskTrajectoryStep) => {\n const content = step.content;\n\n // String content (text message)\n if (typeof content === \"string\") {\n const isLong = content.length > 200;\n const isExpanded = expanded.has(step.id);\n\n return (\n <div>\n <p className={`text-sm text-[var(--color-text)] whitespace-pre-wrap break-words ${!isExpanded && isLong ? 'line-clamp-4' : ''}`}>\n {content}\n </p>\n {isLong && (\n <button\n onClick={() => toggleStep(step.id)}\n className=\"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)] mt-1\"\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\n }\n\n // Array content (tool_use or tool_result blocks)\n return (\n <div className=\"space-y-2\">\n {content.map((block, idx) => {\n if (block.type === \"tool_use\") {\n const inputStr = JSON.stringify(block.input, null, 2);\n const isLong = inputStr.length > 150;\n const blockId = `${step.id}-${idx}`;\n const isExpanded = expanded.has(blockId);\n\n return (\n <div key={idx} className=\"bg-orange-500/10 border border-orange-500/20 rounded p-2\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"text-orange-400\">🔧</span>\n <span className=\"text-xs font-medium text-orange-400\">Tool Call</span>\n <span className=\"text-xs text-[var(--color-text-secondary)]\">{block.name}</span>\n </div>\n <pre className={`text-xs text-[var(--color-text-secondary)] overflow-x-auto ${!isExpanded && isLong ? 'line-clamp-3' : ''}`}>\n {inputStr}\n </pre>\n {isLong && (\n <button\n onClick={() => toggleStep(blockId)}\n className=\"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)] mt-1\"\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\n }\n\n if (block.type === \"tool_result\") {\n const isError = block.is_error;\n const blockId = `${step.id}-${idx}`;\n const isExpanded = expanded.has(blockId);\n const isLong = block.content.length > 150;\n\n return (\n <div\n key={idx}\n className={`${isError ? 'bg-red-500/10 border-red-500/20' : 'bg-teal-500/10 border-teal-500/20'} border rounded p-2`}\n >\n <div className=\"flex items-center gap-2 mb-1\">\n <span>{isError ? \"❌\" : \"📋\"}</span>\n <span className={`text-xs font-medium ${isError ? 'text-red-400' : 'text-teal-400'}`}>\n Tool Result\n </span>\n </div>\n <pre className={`text-xs text-[var(--color-text-secondary)] overflow-x-auto whitespace-pre-wrap break-words ${!isExpanded && isLong ? 'line-clamp-3' : ''}`}>\n {block.content}\n </pre>\n {isLong && (\n <button\n onClick={() => toggleStep(blockId)}\n className=\"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)] mt-1\"\n >\n {isExpanded ? \"Show less\" : \"Show more...\"}\n </button>\n )}\n </div>\n );\n }\n\n return null;\n })}\n </div>\n );\n };\n\n return (\n <div className=\"space-y-2\">\n {trajectory.map((step) => {\n const style = roleStyles[step.role] || roleStyles.assistant;\n\n return (\n <div\n key={step.id}\n className={`${style.bg} border border-[var(--color-border)] rounded overflow-hidden p-3`}\n >\n <div className=\"flex items-center gap-2 mb-2\">\n <span>{style.icon}</span>\n <span className={`text-xs font-medium ${style.text}`}>{style.label}</span>\n {step.model && (\n <span className=\"text-xs text-[var(--color-text-faint)]\">· {step.model}</span>\n )}\n <span className=\"text-xs text-[var(--color-text-faint)]\">\n · {new Date(step.created_at).toLocaleTimeString()}\n </span>\n </div>\n {renderContent(step)}\n </div>\n );\n })}\n </div>\n );\n}\n\n// --- Create Task Modal ---\n\ninterface CreateTaskModalProps {\n authFetch: (url: string, options?: RequestInit) => Promise<Response>;\n currentProjectId: string | null;\n onClose: () => void;\n onCreated: () => void;\n}\n\nfunction CreateTaskModal({ authFetch, currentProjectId, onClose, onCreated }: CreateTaskModalProps) {\n const [agents, setAgents] = useState<{ id: string; name: string }[]>([]);\n const [agentId, setAgentId] = useState(\"\");\n const [title, setTitle] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [type, setType] = useState<\"once\" | \"recurring\">(\"once\");\n const [priority, setPriority] = useState(5);\n const [executeAt, setExecuteAt] = useState(\"\");\n const [recurrence, setRecurrence] = useState(\"\");\n const [creating, setCreating] = useState(false);\n const [error, setError] = useState(\"\");\n\n useEffect(() => {\n authFetch(\"/api/agents\").then(r => r.json()).then(data => {\n const running = (data.agents || []).filter((a: Agent) => a.status === \"running\" && a.features?.tasks);\n setAgents(running.map((a: Agent) => ({ id: a.id, name: a.name })));\n if (running.length === 1) setAgentId(running[0].id);\n }).catch(() => {});\n }, [authFetch]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!agentId || !title.trim()) return;\n setCreating(true);\n setError(\"\");\n\n const body: Record<string, unknown> = {\n title: title.trim(),\n description: description.trim() || undefined,\n type,\n priority,\n };\n if (type === \"once\" && executeAt) {\n body.execute_at = new Date(executeAt).toISOString();\n }\n if (type === \"recurring\" && recurrence.trim()) {\n body.recurrence = recurrence.trim();\n }\n\n try {\n const res = await authFetch(`/api/tasks/${agentId}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n setError(data.error || `HTTP ${res.status}`);\n return;\n }\n onCreated();\n } catch (err) {\n setError(String(err));\n } finally {\n setCreating(false);\n }\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4\" onClick={onClose}>\n <div className=\"bg-[var(--color-surface)] card w-full max-w-md\" onClick={e => e.stopPropagation()}>\n <div className=\"flex items-center justify-between p-4 border-b border-[var(--color-border)]\">\n <h2 className=\"font-medium\">Create Task</h2>\n <button onClick={onClose} className=\"text-[var(--color-text-muted)] hover:text-[var(--color-text)] transition\">\n <CloseIcon />\n </button>\n </div>\n <form onSubmit={handleSubmit} className=\"p-4 space-y-4\">\n {/* Agent */}\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Agent</label>\n {agents.length === 0 ? (\n <p className=\"text-sm text-[var(--color-text-faint)]\">No running agents with tasks enabled</p>\n ) : (\n <select\n value={agentId}\n onChange={e => setAgentId(e.target.value)}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm\"\n required\n >\n <option value=\"\">Select agent...</option>\n {agents.map(a => <option key={a.id} value={a.id}>{a.name}</option>)}\n </select>\n )}\n </div>\n\n {/* Title */}\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Title</label>\n <input\n type=\"text\"\n value={title}\n onChange={e => setTitle(e.target.value)}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm\"\n placeholder=\"e.g. Check email for new orders\"\n required\n />\n </div>\n\n {/* Description */}\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Description</label>\n <textarea\n value={description}\n onChange={e => setDescription(e.target.value)}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm resize-none\"\n rows={2}\n placeholder=\"Optional instructions for the agent...\"\n />\n </div>\n\n {/* Type & Priority */}\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Type</label>\n <select\n value={type}\n onChange={e => setType(e.target.value as \"once\" | \"recurring\")}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm\"\n >\n <option value=\"once\">One-time</option>\n <option value=\"recurring\">Recurring</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Priority</label>\n <input\n type=\"number\"\n min={1}\n max={10}\n value={priority}\n onChange={e => setPriority(Number(e.target.value))}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm\"\n />\n </div>\n </div>\n\n {/* Schedule */}\n {type === \"once\" && (\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Schedule (optional)</label>\n <input\n type=\"datetime-local\"\n value={executeAt}\n onChange={e => setExecuteAt(e.target.value)}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm\"\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">Leave empty to execute immediately</p>\n </div>\n )}\n\n {type === \"recurring\" && (\n <div>\n <label className=\"block text-sm text-[var(--color-text-muted)] mb-1\">Cron Schedule</label>\n <input\n type=\"text\"\n value={recurrence}\n onChange={e => setRecurrence(e.target.value)}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border)] rounded px-3 py-2 text-sm font-mono\"\n placeholder=\"*/30 * * * *\"\n required\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">e.g. */30 * * * * = every 30 min, 0 9 * * 1-5 = weekdays at 9am</p>\n </div>\n )}\n\n {error && (\n <p className=\"text-sm text-red-400\">{error}</p>\n )}\n\n <div className=\"flex justify-end gap-2 pt-2\">\n <button\n type=\"button\"\n onClick={onClose}\n className=\"px-4 py-2 rounded text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-border)] transition\"\n >\n Cancel\n </button>\n <button\n type=\"submit\"\n disabled={creating || !agentId || !title.trim() || agents.length === 0}\n className=\"px-4 py-2 rounded text-sm bg-[var(--color-accent)] text-black hover:opacity-90 transition disabled:opacity-50\"\n >\n {creating ? \"Creating...\" : \"Create Task\"}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n}\n\n// --- Schedule formatting helpers ---\n\nconst DAY_NAMES = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\nexport function formatCron(cron: string): string {\n try {\n const parts = cron.trim().split(/\\s+/);\n if (parts.length !== 5) return cron;\n const [minute, hour, dayOfMonth, month, dayOfWeek] = parts;\n\n // Every N minutes: */N * * * *\n if (minute.startsWith(\"*/\") && hour === \"*\" && dayOfMonth === \"*\" && month === \"*\" && dayOfWeek === \"*\") {\n const n = parseInt(minute.slice(2));\n if (n === 1) return \"Every minute\";\n return `Every ${n} minutes`;\n }\n\n // Every hour: 0 * * * *\n if (minute !== \"*\" && !minute.includes(\"/\") && hour === \"*\" && dayOfMonth === \"*\" && month === \"*\" && dayOfWeek === \"*\") {\n return \"Every hour\";\n }\n\n // Every N hours: 0 */N * * *\n if (hour.startsWith(\"*/\") && dayOfMonth === \"*\" && month === \"*\" && dayOfWeek === \"*\") {\n const n = parseInt(hour.slice(2));\n if (n === 1) return \"Every hour\";\n return `Every ${n} hours`;\n }\n\n const formatTime = (h: string, m: string): string => {\n const hr = parseInt(h);\n const mn = parseInt(m);\n if (isNaN(hr)) return \"\";\n const ampm = hr >= 12 ? \"PM\" : \"AM\";\n const h12 = hr === 0 ? 12 : hr > 12 ? hr - 12 : hr;\n return `${h12}:${mn.toString().padStart(2, \"0\")} ${ampm}`;\n };\n\n if (hour !== \"*\" && !hour.includes(\"/\") && dayOfMonth === \"*\" && month === \"*\") {\n const timeStr = formatTime(hour, minute);\n\n if (dayOfWeek === \"*\") return `Daily at ${timeStr}`;\n\n const days = dayOfWeek.split(\",\").map(d => {\n const num = parseInt(d.trim());\n return DAY_NAMES[num] || d;\n });\n\n if (days.length === 7) return `Daily at ${timeStr}`;\n if (days.length === 5 && !days.includes(\"Sat\") && !days.includes(\"Sun\")) {\n return `Weekdays at ${timeStr}`;\n }\n if (days.length === 1) return `Weekly on ${days[0]} at ${timeStr}`;\n return `${days.join(\" & \")} at ${timeStr}`;\n }\n\n return cron;\n } catch {\n return cron;\n }\n}\n\nexport function formatRelativeTime(dateStr: string): string {\n const date = new Date(dateStr);\n const now = new Date();\n const diffMs = date.getTime() - now.getTime();\n const absDiffMs = Math.abs(diffMs);\n const isFuture = diffMs > 0;\n\n const minutes = Math.floor(absDiffMs / 60000);\n const hours = Math.floor(absDiffMs / 3600000);\n const days = Math.floor(absDiffMs / 86400000);\n\n const timeStr = date.toLocaleTimeString([], { hour: \"numeric\", minute: \"2-digit\" });\n\n const isToday = date.toDateString() === now.toDateString();\n const tomorrow = new Date(now);\n tomorrow.setDate(tomorrow.getDate() + 1);\n const isTomorrow = date.toDateString() === tomorrow.toDateString();\n const yesterday = new Date(now);\n yesterday.setDate(yesterday.getDate() - 1);\n const isYesterday = date.toDateString() === yesterday.toDateString();\n\n if (isToday) {\n if (minutes < 1) return isFuture ? \"now\" : \"just now\";\n if (minutes < 60) return isFuture ? `in ${minutes} min (${timeStr})` : `${minutes} min ago`;\n return isFuture ? `in ${hours}h (${timeStr})` : `${hours}h ago`;\n }\n\n if (isTomorrow) return `Tomorrow at ${timeStr}`;\n if (isYesterday) return `Yesterday at ${timeStr}`;\n\n if (days < 7) {\n const dayName = DAY_NAMES[date.getDay()];\n return `${dayName} at ${timeStr}`;\n }\n\n return date.toLocaleDateString([], { month: \"short\", day: \"numeric\" }) + ` at ${timeStr}`;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "BFBB171C34E7F8ED64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{O as Oz,P as Wz}from"./App.wqjbggrj.js";import{V as j}from"./App.a2rb0ne3.js";import{Y as n,aa as Qz,ba as zz,ka as Jz,na as Kz}from"./App.fy5bef1p.js";var W=n(Qz(),1);var z=n(zz(),1);function Rz(){let{authFetch:K}=Jz(),{projects:Z,currentProjectId:Y}=Kz(),[B,N]=W.useState([]),[y,M]=W.useState(!0),[X,U]=W.useState("installed"),[G,Q]=W.useState(!1),[C,H]=W.useState(!1),[v,T]=W.useState(null),{confirm:f,ConfirmDialog:w}=Oz(),{alert:P,AlertDialog:d}=Wz(),_=Z.length>0,[m,p]=W.useState(""),[h,Xz]=W.useState([]),[c,r]=W.useState(!1),[Yz,o]=W.useState(null),[a,i]=W.useState(""),[R,t]=W.useState([]),[I,u]=W.useState(!1),[V,b]=W.useState(null),[q,l]=W.useState(null),[e,S]=W.useState(null),[x,Zz]=W.useState(Y&&Y!=="unassigned"?Y:null),D=B.filter((J)=>{if(!Y)return!0;if(Y==="unassigned")return J.project_id===null;return J.project_id===null||J.project_id===Y}),F=async()=>{try{let O=await(await K("/api/skills")).json();N(O.skills||[])}catch(J){console.error("Failed to fetch skills:",J)}M(!1)},E=async(J)=>{r(!0);try{let O=J!==void 0?J:m,$=O?`/api/skills/marketplace/search?q=${encodeURIComponent(O)}`:"/api/skills/marketplace/featured",A=await(await K($)).json();Xz(A.skills||[])}catch(O){console.error("Failed to search marketplace:",O)}r(!1)};W.useEffect(()=>{F()},[K]),W.useEffect(()=>{if(X==="marketplace"&&h.length===0)E("")},[X]);let _z=async(J)=>{try{await K(`/api/skills/${J}/toggle`,{method:"POST"}),F()}catch(O){console.error("Failed to toggle skill:",O)}},$z=async(J)=>{if(!await f("Delete this skill?",{confirmText:"Delete",title:"Delete Skill"}))return;try{if(await K(`/api/skills/${J}`,{method:"DELETE"}),v?.id===J)T(null);F()}catch($){console.error("Failed to delete skill:",$)}},Bz=async(J)=>{o(J.id);try{let O=await K(`/api/skills/marketplace/${J.id}/install`,{method:"POST"}),$=await O.json();if(O.ok)await P(`Installed "${J.name}" successfully!`,{title:"Skill Installed"}),F(),U("installed");else await P($.error||"Failed to install skill",{title:"Installation Failed"})}catch(O){console.error("Failed to install skill:",O),await P("Failed to install skill",{title:"Error"})}o(null)},g=(J)=>B.some((O)=>O.name===J),s=async(J)=>{let O=J||a;if(!O.trim())return;let $="",L="";if(O.includes("github.com")){let A=O.match(/github\.com\/([^/]+)\/([^/]+)/);if(A)$=A[1],L=A[2].replace(/\.git$/,"")}else if(O.includes("/")){let A=O.split("/");$=A[0],L=A[1]}if(!$||!L){b("Invalid repo format. Use 'owner/repo' or GitHub URL");return}u(!0),b(null),t([]),l(null);try{let A=await K(`/api/skills/github/${$}/${L}`),k=await A.json();if(!A.ok){b(k.error||"Failed to fetch repository"),u(!1);return}t(k.skills||[]),l(k.repo||null)}catch(A){b("Failed to fetch repository")}u(!1)},Nz=async(J)=>{if(!q)return;S(J.name);try{let O=await K("/api/skills/github/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({owner:q.owner,repo:q.repo,skillName:J.name,downloadUrl:J.downloadUrl,projectId:x})}),$=await O.json();if(O.ok)await P(`Installed "${J.name}" successfully!`,{title:"Skill Installed"}),F();else await P($.error||"Failed to install skill",{title:"Installation Failed",variant:"error"})}catch(O){await P("Failed to install skill",{title:"Error",variant:"error"})}S(null)},Uz=async()=>{if(!q||R.length===0)return;let J=R.filter((L)=>!g(L.name));if(J.length===0){await P("All skills are already installed",{title:"Info"});return}if(!await f(`Install ${J.length} skill(s) from ${q.owner}/${q.repo}?`,{confirmText:"Install All",title:"Install Skills"}))return;let $=0;for(let L of J){S(L.name);try{if((await K("/api/skills/github/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({owner:q.owner,repo:q.repo,skillName:L.name,downloadUrl:L.downloadUrl,projectId:x})})).ok)$++}catch(A){}}S(null),F(),await P(`Installed ${$} of ${J.length} skills`,{title:"Installation Complete"})};return z.jsxDEV(z.Fragment,{children:[w,d,z.jsxDEV("div",{className:"flex-1 overflow-auto p-6",children:z.jsxDEV("div",{className:"max-w-6xl",children:[z.jsxDEV("div",{className:"flex items-center justify-between mb-6",children:[z.jsxDEV("div",{children:[z.jsxDEV("h1",{className:"text-2xl font-semibold mb-1",children:"Skills"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-[var(--color-text-muted)]",children:"Manage agent skills - instructions that teach agents how to perform tasks."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X==="installed"&&z.jsxDEV("div",{className:"flex gap-2",children:[z.jsxDEV("button",{onClick:()=>H(!0),className:"bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] text-white px-4 py-2 rounded font-medium transition border border-[var(--color-border-light)]",children:"Import"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:()=>Q(!0),className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-black px-4 py-2 rounded font-medium transition",children:"+ Create Skill"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"flex gap-1 mb-6 bg-[var(--color-surface)] card p-1 w-fit",children:[z.jsxDEV("button",{onClick:()=>U("installed"),className:`px-4 py-2 rounded text-sm font-medium transition ${X==="installed"?"bg-[var(--color-surface-raised)] text-white":"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]"}`,children:["Installed (",D.length,")"]},void 0,!0,void 0,this),z.jsxDEV("button",{onClick:()=>U("github"),className:`px-4 py-2 rounded text-sm font-medium transition ${X==="github"?"bg-[var(--color-surface-raised)] text-white":"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]"}`,children:"Browse GitHub"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:()=>U("marketplace"),className:`px-4 py-2 rounded text-sm font-medium transition ${X==="marketplace"?"bg-[var(--color-surface-raised)] text-white":"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]"}`,children:"Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X==="installed"&&z.jsxDEV(z.Fragment,{children:y?z.jsxDEV("div",{className:"text-[var(--color-text-muted)]",children:"Loading skills..."},void 0,!1,void 0,this):B.length===0?z.jsxDEV("div",{className:"text-center py-20 text-[var(--color-text-muted)]",children:[z.jsxDEV("p",{className:"text-lg",children:"No skills installed"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-sm mt-1",children:"Create a skill or browse the marketplace"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:()=>U("marketplace"),className:"mt-4 bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-black px-4 py-2 rounded font-medium transition",children:"Browse Marketplace"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):D.length===0?z.jsxDEV("div",{className:"bg-[var(--color-surface)] card p-6 text-center",children:z.jsxDEV("p",{className:"text-[var(--color-text-muted)]",children:"No skills match this filter."},void 0,!1,void 0,this)},void 0,!1,void 0,this):z.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:D.map((J)=>{let O=_&&J.project_id?Z.find(($)=>$.id===J.project_id):null;return z.jsxDEV(Hz,{skill:J,project:O,onToggle:()=>_z(J.id),onDelete:()=>$z(J.id),onView:()=>T(J)},J.id,!1,void 0,this)})},void 0,!1,void 0,this)},void 0,!1,void 0,this),X==="github"&&z.jsxDEV("div",{className:"space-y-6",children:[z.jsxDEV("form",{onSubmit:(J)=>{J.preventDefault(),s()},className:"flex gap-2",children:[z.jsxDEV("input",{type:"text",value:a,onChange:(J)=>i(J.target.value),placeholder:"Enter GitHub repo (e.g., WordPress/agent-skills)",className:"flex-1 bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg px-4 py-3 focus:outline-none focus:border-[var(--color-accent)]"},void 0,!1,void 0,this),z.jsxDEV("button",{type:"submit",disabled:I,className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-6 py-3 rounded-lg font-medium transition",children:I?"...":"Browse"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),_&&R.length>0&&z.jsxDEV("div",{className:"flex items-center gap-3 p-3 bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg",children:[z.jsxDEV("span",{className:"text-sm text-[var(--color-text-muted)]",children:"Install to:"},void 0,!1,void 0,this),z.jsxDEV(j,{value:x||"",onChange:(J)=>Zz(J||null),options:[{value:"",label:"Global (all projects)"},...Z.map((J)=>({value:J.id,label:J.name}))],placeholder:"Select scope..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V&&z.jsxDEV("div",{className:"text-red-400 text-sm p-3 bg-red-500/10 border border-red-500/20 rounded-lg",children:V},void 0,!1,void 0,this),q&&R.length>0&&z.jsxDEV("div",{className:"flex items-center justify-between",children:[z.jsxDEV("div",{className:"flex items-center gap-3",children:[z.jsxDEV("a",{href:q.url,target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-accent)] hover:underline font-medium",children:[q.owner,"/",q.repo]},void 0,!0,void 0,this),z.jsxDEV("span",{className:"text-sm text-[var(--color-text-muted)]",children:[R.length," skill",R.length!==1?"s":""," found"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),R.some((J)=>!g(J.name))&&z.jsxDEV("button",{onClick:Uz,disabled:!!e,className:"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-4 py-2 rounded transition disabled:opacity-50",children:"Install All"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I&&z.jsxDEV("div",{className:"text-center py-8 text-[var(--color-text-muted)]",children:"Fetching skills from repository..."},void 0,!1,void 0,this),!I&&!q&&!V&&z.jsxDEV("div",{className:"bg-[var(--color-surface)] card p-8 text-center",children:[z.jsxDEV("div",{className:"text-4xl mb-4",children:"\uD83D\uDCE6"},void 0,!1,void 0,this),z.jsxDEV("h3",{className:"text-lg font-medium mb-2",children:"Browse Skills from GitHub"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-[var(--color-text-muted)] mb-6 max-w-md mx-auto",children:"Enter a GitHub repository to browse and install skills. Skills are markdown files with instructions that teach agents how to perform specific tasks."},void 0,!1,void 0,this),z.jsxDEV("div",{className:"flex flex-wrap gap-2 justify-center",children:[{label:"WordPress Skills",repo:"WordPress/agent-skills"}].map(({label:J,repo:O})=>z.jsxDEV("button",{onClick:()=>{i(O),s(O)},className:"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition",children:J},O,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!I&&q&&R.length===0&&z.jsxDEV("div",{className:"text-center py-8 text-[var(--color-text-muted)]",children:"No skills found in this repository. Skills should be in subdirectories with a SKILL.md file."},void 0,!1,void 0,this),R.length>0&&z.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2",children:R.map((J)=>{let O=g(J.name),$=e===J.name;return z.jsxDEV("div",{className:`bg-[var(--color-surface)] border rounded-lg p-4 transition ${O?"border-green-500/30":"border-[var(--color-border)] hover:border-[var(--color-border-light)]"}`,children:z.jsxDEV("div",{className:"flex items-start justify-between gap-3",children:[z.jsxDEV("div",{className:"flex-1 min-w-0",children:[z.jsxDEV("div",{className:"flex items-center gap-2",children:[z.jsxDEV("h3",{className:"font-medium truncate",children:J.name},void 0,!1,void 0,this),O&&z.jsxDEV("span",{className:"text-xs text-green-400",children:"✓ Installed"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("p",{className:"text-sm text-[var(--color-text-muted)] mt-1 line-clamp-2",children:J.description||"No description"},void 0,!1,void 0,this),z.jsxDEV("div",{className:"flex items-center gap-2 mt-2 text-xs text-[var(--color-text-faint)]",children:[z.jsxDEV("span",{children:[(J.size/1024).toFixed(1),"KB"]},void 0,!0,void 0,this),z.jsxDEV("span",{className:"px-1.5 py-0.5 rounded bg-blue-500/10 text-blue-400",children:"GitHub"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"flex-shrink-0",children:O?z.jsxDEV("span",{className:"text-xs text-[var(--color-text-faint)] px-3 py-1.5",children:"Added"},void 0,!1,void 0,this):z.jsxDEV("button",{onClick:()=>Nz(J),disabled:$,className:"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition disabled:opacity-50",children:$?"Installing...":"Install"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},J.name,!1,void 0,this)})},void 0,!1,void 0,this),z.jsxDEV("div",{className:"p-4 bg-[var(--color-surface)] card text-sm text-[var(--color-text-muted)]",children:z.jsxDEV("p",{children:["Skills are sourced from GitHub repositories. Each skill should be in its own directory with a"," ",z.jsxDEV("code",{className:"text-[var(--color-text-secondary)] bg-[var(--color-bg)] px-1 rounded",children:"SKILL.md"},void 0,!1,void 0,this)," file containing instructions."]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),X==="marketplace"&&z.jsxDEV(z.Fragment,{children:[z.jsxDEV("div",{className:"mb-6",children:z.jsxDEV("div",{className:"flex gap-2",children:[z.jsxDEV("input",{type:"text",value:m,onChange:(J)=>p(J.target.value),onKeyDown:(J)=>J.key==="Enter"&&E(),placeholder:"Search skills...",className:"flex-1 bg-[var(--color-surface)] border border-[var(--color-border)] rounded px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:()=>E(),disabled:c,className:"bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] text-white px-4 py-2 rounded font-medium transition border border-[var(--color-border-light)]",children:c?"...":"Search"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),c?z.jsxDEV("div",{className:"text-[var(--color-text-muted)]",children:"Loading..."},void 0,!1,void 0,this):h.length===0?z.jsxDEV("div",{className:"text-center py-20 text-[var(--color-text-muted)]",children:[z.jsxDEV("p",{className:"text-lg",children:"No skills found"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-sm mt-1",children:"Try a different search term"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):z.jsxDEV("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:h.map((J)=>z.jsxDEV(qz,{skill:J,installed:g(J.name),installing:Yz===J.id,onInstall:()=>Bz(J)},J.id,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),G&&z.jsxDEV(Az,{authFetch:K,onClose:()=>Q(!1),onCreated:()=>{Q(!1),F()},projects:_?Z:void 0,defaultProjectId:Y&&Y!=="unassigned"?Y:null},void 0,!1,void 0,this),C&&z.jsxDEV(yz,{authFetch:K,onClose:()=>H(!1),onImported:()=>{H(!1),F()}},void 0,!1,void 0,this),v&&z.jsxDEV(Mz,{skill:v,authFetch:K,onClose:()=>T(null),onUpdated:()=>{T(null),F()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Hz({skill:K,project:Z,onToggle:Y,onDelete:B,onView:N}){let y={local:"Local",skillsmp:"SkillsMP",github:"GitHub",import:"Imported"}[K.source],M=()=>{if(Z)return z.jsxDEV("span",{className:"text-xs px-1.5 py-0.5 rounded",style:{backgroundColor:`${Z.color}20`,color:Z.color},children:Z.name},void 0,!1,void 0,this);if(K.project_id===null)return z.jsxDEV("span",{className:"text-xs text-[var(--color-text-muted)] bg-[var(--color-surface-raised)] px-1.5 py-0.5 rounded",children:"Global"},void 0,!1,void 0,this);return null};return z.jsxDEV("div",{className:`bg-[var(--color-surface)] rounded-lg p-5 border transition cursor-pointer ${K.enabled?"border-[var(--color-border)]":"border-[var(--color-border)] opacity-60"} hover:border-[var(--color-border-light)]`,onClick:N,children:[z.jsxDEV("div",{className:"flex items-start justify-between mb-3",children:[z.jsxDEV("div",{className:"flex-1 min-w-0",children:[z.jsxDEV("div",{className:"flex items-center gap-2",children:[z.jsxDEV("h3",{className:"font-semibold text-lg truncate",children:K.name},void 0,!1,void 0,this),M()]},void 0,!0,void 0,this),z.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)] flex items-center gap-2 mt-0.5",children:[z.jsxDEV("span",{className:`px-1.5 py-0.5 rounded text-[10px] ${K.source==="skillsmp"?"bg-purple-500/20 text-purple-400":K.source==="github"?"bg-blue-500/20 text-blue-400":"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]"}`,children:y},void 0,!1,void 0,this),K.metadata?.version&&z.jsxDEV("span",{children:["v",K.metadata.version]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("button",{onClick:(X)=>{X.stopPropagation(),Y()},className:`w-10 h-5 rounded-full transition-colors relative ${K.enabled?"bg-[var(--color-accent)]":"bg-[var(--color-surface-raised)]"}`,children:z.jsxDEV("span",{className:`absolute top-0.5 w-4 h-4 rounded-full bg-white transition-transform ${K.enabled?"left-5":"left-0.5"}`},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("p",{className:"text-sm text-[var(--color-text-secondary)] line-clamp-2 mb-4",children:K.description},void 0,!1,void 0,this),z.jsxDEV("div",{className:"flex items-center justify-between",children:[z.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:[K.allowed_tools.slice(0,2).map((X)=>z.jsxDEV("span",{className:"text-xs bg-[var(--color-surface-raised)] px-2 py-0.5 rounded text-[var(--color-text-muted)]",children:X},X,!1,void 0,this)),K.allowed_tools.length>2&&z.jsxDEV("span",{className:"text-xs text-[var(--color-text-muted)]",children:["+",K.allowed_tools.length-2]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("button",{onClick:(X)=>{X.stopPropagation(),B()},className:"text-red-400 hover:text-red-300 text-sm",children:"Delete"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function qz({skill:K,installed:Z,installing:Y,onInstall:B}){return z.jsxDEV("div",{className:"bg-[var(--color-surface)] rounded-lg p-5 border border-[var(--color-border)] hover:border-[var(--color-border-light)] transition",children:[z.jsxDEV("div",{className:"flex items-start justify-between mb-3",children:[z.jsxDEV("div",{className:"flex-1 min-w-0",children:[z.jsxDEV("h3",{className:"font-semibold text-lg truncate",children:K.name},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)] mt-0.5",children:["by ",K.author," · v",K.version]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"flex items-center gap-1 text-yellow-500 text-sm",children:["★ ",K.rating.toFixed(1)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("p",{className:"text-sm text-[var(--color-text-secondary)] line-clamp-2 mb-4",children:K.description},void 0,!1,void 0,this),z.jsxDEV("div",{className:"flex items-center justify-between",children:[z.jsxDEV("div",{className:"flex gap-1 flex-wrap",children:K.tags.slice(0,3).map((N)=>z.jsxDEV("span",{className:"text-xs bg-[var(--color-surface-raised)] px-2 py-0.5 rounded text-[var(--color-text-muted)]",children:N},N,!1,void 0,this))},void 0,!1,void 0,this),Z?z.jsxDEV("span",{className:"text-green-400 text-sm",children:"✓ Installed"},void 0,!1,void 0,this):z.jsxDEV("button",{onClick:B,disabled:Y,className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-3 py-1 rounded text-sm font-medium transition",children:Y?"Installing...":"Install"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"mt-3 text-xs text-[var(--color-text-faint)]",children:[K.downloads.toLocaleString()," downloads"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Az({authFetch:K,onClose:Z,onCreated:Y,projects:B,defaultProjectId:N}){let[y,M]=W.useState(""),[X,U]=W.useState(""),[G,Q]=W.useState(""),[C,H]=W.useState(N||null),[v,T]=W.useState(!1),[f,w]=W.useState(null),P=B&&B.length>0,d=async()=>{if(!y||!X||!G){w("All fields are required");return}T(!0),w(null);try{let _={name:y,description:X,content:G,source:"local"};if(C)_.project_id=C;let m=await K("/api/skills",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(_)}),p=await m.json();if(!m.ok){w(p.error||"Failed to create skill"),T(!1);return}Y()}catch(_){w("Failed to create skill"),T(!1)}};return z.jsxDEV("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4",onClick:Z,children:z.jsxDEV("div",{className:"bg-[var(--color-surface)] card w-full max-w-2xl max-h-[90vh] overflow-auto",onClick:(_)=>_.stopPropagation(),children:[z.jsxDEV("div",{className:"p-6 border-b border-[var(--color-border)]",children:z.jsxDEV("h2",{className:"text-xl font-semibold",children:"Create Skill"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z.jsxDEV("div",{className:"p-6 space-y-4",children:[f&&z.jsxDEV("div",{className:"bg-red-500/10 border border-red-500/30 rounded p-3 text-red-400 text-sm",children:f},void 0,!1,void 0,this),z.jsxDEV("div",{children:[z.jsxDEV("label",{className:"block text-sm text-[var(--color-text-secondary)] mb-1",children:"Name"},void 0,!1,void 0,this),z.jsxDEV("input",{type:"text",value:y,onChange:(_)=>M(_.target.value.toLowerCase().replace(/[^a-z0-9-]/g,"-")),placeholder:"my-skill-name",className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)]"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-xs text-[var(--color-text-faint)] mt-1",children:"Lowercase letters, numbers, and hyphens only"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{children:[z.jsxDEV("label",{className:"block text-sm text-[var(--color-text-secondary)] mb-1",children:"Description"},void 0,!1,void 0,this),z.jsxDEV("input",{type:"text",value:X,onChange:(_)=>U(_.target.value),placeholder:"What this skill does and when to use it...",className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P&&z.jsxDEV("div",{children:[z.jsxDEV("label",{className:"block text-sm text-[var(--color-text-secondary)] mb-1",children:"Scope"},void 0,!1,void 0,this),z.jsxDEV(j,{value:C||"",onChange:(_)=>H(_||null),options:[{value:"",label:"Global (all projects)"},...B.map((_)=>({value:_.id,label:_.name}))],placeholder:"Select scope..."},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-xs text-[var(--color-text-faint)] mt-1",children:"Global skills are available to all agents. Project-scoped skills are only available to agents in that project."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{children:[z.jsxDEV("label",{className:"block text-sm text-[var(--color-text-secondary)] mb-1",children:"Instructions (Markdown)"},void 0,!1,void 0,this),z.jsxDEV("textarea",{value:G,onChange:(_)=>Q(_.target.value),placeholder:`# Skill Instructions
|
|
2
|
+
|
|
3
|
+
Write detailed instructions here...`,rows:12,className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"p-6 border-t border-[var(--color-border)] flex justify-end gap-3",children:[z.jsxDEV("button",{onClick:Z,className:"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition",children:"Cancel"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:d,disabled:v,className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition",children:v?"Creating...":"Create Skill"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function yz({authFetch:K,onClose:Z,onImported:Y}){let[B,N]=W.useState(""),[y,M]=W.useState(!1),[X,U]=W.useState(null);return z.jsxDEV("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4",onClick:Z,children:z.jsxDEV("div",{className:"bg-[var(--color-surface)] card w-full max-w-2xl max-h-[90vh] overflow-auto",onClick:(Q)=>Q.stopPropagation(),children:[z.jsxDEV("div",{className:"p-6 border-b border-[var(--color-border)]",children:[z.jsxDEV("h2",{className:"text-xl font-semibold",children:"Import Skill"},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:"Paste the contents of a SKILL.md file"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"p-6 space-y-4",children:[X&&z.jsxDEV("div",{className:"bg-red-500/10 border border-red-500/30 rounded p-3 text-red-400 text-sm",children:X},void 0,!1,void 0,this),z.jsxDEV("textarea",{value:B,onChange:(Q)=>N(Q.target.value),placeholder:`---
|
|
4
|
+
name: skill-name
|
|
5
|
+
description: What this skill does...
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Instructions
|
|
9
|
+
|
|
10
|
+
Your skill instructions here...`,rows:16,className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"p-6 border-t border-[var(--color-border)] flex justify-end gap-3",children:[z.jsxDEV("button",{onClick:Z,className:"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition",children:"Cancel"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:async()=>{if(!B.trim()){U("Paste SKILL.md content");return}M(!0),U(null);try{let Q=await K("/api/skills/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:B})}),C=await Q.json();if(!Q.ok){U(C.error||"Failed to import skill"),M(!1);return}Y()}catch(Q){U("Failed to import skill"),M(!1)}},disabled:y,className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition",children:y?"Importing...":"Import Skill"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function Mz({skill:K,authFetch:Z,onClose:Y,onUpdated:B}){let[N,y]=W.useState(!1),[M,X]=W.useState(K.content),[U,G]=W.useState(!1),Q=async()=>{G(!0);try{await Z(`/api/skills/${K.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:M})}),B()}catch(H){console.error("Failed to save:",H)}G(!1)},C=async()=>{try{let v=await(await Z(`/api/skills/${K.id}/export`)).text(),T=new Blob([v],{type:"text/markdown"}),f=URL.createObjectURL(T),w=document.createElement("a");w.href=f,w.download=`${K.name}-SKILL.md`,w.click(),URL.revokeObjectURL(f)}catch(H){console.error("Failed to export:",H)}};return z.jsxDEV("div",{className:"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4",onClick:Y,children:z.jsxDEV("div",{className:"bg-[var(--color-surface)] card w-full max-w-3xl max-h-[90vh] overflow-auto",onClick:(H)=>H.stopPropagation(),children:[z.jsxDEV("div",{className:"p-6 border-b border-[var(--color-border)] flex items-center justify-between",children:[z.jsxDEV("div",{children:[z.jsxDEV("h2",{className:"text-xl font-semibold",children:K.name},void 0,!1,void 0,this),z.jsxDEV("p",{className:"text-sm text-[var(--color-text-muted)] mt-0.5",children:K.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"flex gap-2",children:[z.jsxDEV("button",{onClick:C,className:"text-sm text-[var(--color-text-secondary)] hover:text-white transition px-3 py-1 rounded border border-[var(--color-border-light)]",children:"Export"},void 0,!1,void 0,this),z.jsxDEV("button",{onClick:()=>y(!N),className:"text-sm text-[var(--color-text-secondary)] hover:text-white transition px-3 py-1 rounded border border-[var(--color-border-light)]",children:N?"View":"Edit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV("div",{className:"p-6",children:N?z.jsxDEV("textarea",{value:M,onChange:(H)=>X(H.target.value),rows:20,className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm"},void 0,!1,void 0,this):z.jsxDEV("pre",{className:"bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded p-4 font-mono text-sm overflow-auto max-h-[60vh] whitespace-pre-wrap",children:K.content},void 0,!1,void 0,this)},void 0,!1,void 0,this),z.jsxDEV("div",{className:"p-6 border-t border-[var(--color-border)] flex justify-between",children:[z.jsxDEV("div",{className:"text-xs text-[var(--color-text-faint)]",children:K.source!=="local"&&K.source_url&&z.jsxDEV("a",{href:K.source_url,target:"_blank",rel:"noopener noreferrer",className:"text-[var(--color-accent)] hover:underline",children:"View source →"},void 0,!1,void 0,this)},void 0,!1,void 0,this),z.jsxDEV("div",{className:"flex gap-3",children:[z.jsxDEV("button",{onClick:Y,className:"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition",children:"Close"},void 0,!1,void 0,this),N&&z.jsxDEV("button",{onClick:Q,disabled:U,className:"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition",children:U?"Saving...":"Save Changes"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}
|
|
11
|
+
export{Rz as L};
|
|
12
|
+
|
|
13
|
+
//# debugId=CBC947DAC8C3887164756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import React, { useState, useEffect } from \"react\";\nimport { useAuth, useProjects } from \"../../context\";\nimport { useConfirm, useAlert } from \"../common/Modal\";\nimport { Select } from \"../common/Select\";\n\ninterface Skill {\n id: string;\n name: string;\n description: string;\n content: string;\n license: string | null;\n compatibility: string | null;\n metadata: Record<string, string>;\n allowed_tools: string[];\n source: \"local\" | \"skillsmp\" | \"github\" | \"import\";\n source_url: string | null;\n enabled: boolean;\n project_id: string | null; // null = global\n created_at: string;\n updated_at: string;\n}\n\ninterface MarketplaceSkill {\n id: string;\n name: string;\n description: string;\n content: string;\n author: string;\n version: string;\n license: string | null;\n compatibility: string | null;\n tags: string[];\n downloads: number;\n rating: number;\n repository: string | null;\n}\n\ninterface GitHubSkill {\n name: string;\n description: string;\n path: string;\n size: number;\n downloadUrl: string;\n}\n\nexport function SkillsPage() {\n const { authFetch } = useAuth();\n const { projects, currentProjectId } = useProjects();\n const [skills, setSkills] = useState<Skill[]>([]);\n const [loading, setLoading] = useState(true);\n const [activeTab, setActiveTab] = useState<\"installed\" | \"marketplace\" | \"github\">(\"installed\");\n const [showCreate, setShowCreate] = useState(false);\n const [showImport, setShowImport] = useState(false);\n const [selectedSkill, setSelectedSkill] = useState<Skill | null>(null);\n const { confirm, ConfirmDialog } = useConfirm();\n const { alert, AlertDialog } = useAlert();\n\n const hasProjects = projects.length > 0;\n\n // Marketplace state\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [marketplaceSkills, setMarketplaceSkills] = useState<MarketplaceSkill[]>([]);\n const [marketplaceLoading, setMarketplaceLoading] = useState(false);\n const [installing, setInstalling] = useState<string | null>(null);\n\n // GitHub state\n const [githubRepo, setGithubRepo] = useState(\"\");\n const [githubSkills, setGithubSkills] = useState<GitHubSkill[]>([]);\n const [githubLoading, setGithubLoading] = useState(false);\n const [githubError, setGithubError] = useState<string | null>(null);\n const [githubRepoInfo, setGithubRepoInfo] = useState<{ owner: string; repo: string; url: string } | null>(null);\n const [installingGithub, setInstallingGithub] = useState<string | null>(null);\n const [githubProjectId, setGithubProjectId] = useState<string | null>(\n currentProjectId && currentProjectId !== \"unassigned\" ? currentProjectId : null\n );\n\n // Filter skills based on global project selector\n // When a project is selected, show global + that project's skills\n const filteredSkills = skills.filter(skill => {\n if (!currentProjectId) return true; // \"All Projects\" - show everything\n if (currentProjectId === \"unassigned\") return skill.project_id === null; // Only global\n // Project selected: show global + project-specific\n return skill.project_id === null || skill.project_id === currentProjectId;\n });\n\n const fetchSkills = async () => {\n try {\n const res = await authFetch(\"/api/skills\");\n const data = await res.json();\n setSkills(data.skills || []);\n } catch (e) {\n console.error(\"Failed to fetch skills:\", e);\n }\n setLoading(false);\n };\n\n const searchMarketplace = async (query?: string) => {\n setMarketplaceLoading(true);\n try {\n const q = query !== undefined ? query : searchQuery;\n const endpoint = q\n ? `/api/skills/marketplace/search?q=${encodeURIComponent(q)}`\n : \"/api/skills/marketplace/featured\";\n const res = await authFetch(endpoint);\n const data = await res.json();\n setMarketplaceSkills(data.skills || []);\n } catch (e) {\n console.error(\"Failed to search marketplace:\", e);\n }\n setMarketplaceLoading(false);\n };\n\n useEffect(() => {\n fetchSkills();\n }, [authFetch]);\n\n useEffect(() => {\n if (activeTab === \"marketplace\" && marketplaceSkills.length === 0) {\n searchMarketplace(\"\");\n }\n }, [activeTab]);\n\n const toggleSkill = async (id: string) => {\n try {\n await authFetch(`/api/skills/${id}/toggle`, { method: \"POST\" });\n fetchSkills();\n } catch (e) {\n console.error(\"Failed to toggle skill:\", e);\n }\n };\n\n const deleteSkill = async (id: string) => {\n const confirmed = await confirm(\"Delete this skill?\", { confirmText: \"Delete\", title: \"Delete Skill\" });\n if (!confirmed) return;\n try {\n await authFetch(`/api/skills/${id}`, { method: \"DELETE\" });\n if (selectedSkill?.id === id) {\n setSelectedSkill(null);\n }\n fetchSkills();\n } catch (e) {\n console.error(\"Failed to delete skill:\", e);\n }\n };\n\n const installFromMarketplace = async (skill: MarketplaceSkill) => {\n setInstalling(skill.id);\n try {\n const res = await authFetch(`/api/skills/marketplace/${skill.id}/install`, { method: \"POST\" });\n const data = await res.json();\n if (res.ok) {\n await alert(`Installed \"${skill.name}\" successfully!`, { title: \"Skill Installed\" });\n fetchSkills();\n setActiveTab(\"installed\");\n } else {\n await alert(data.error || \"Failed to install skill\", { title: \"Installation Failed\" });\n }\n } catch (e) {\n console.error(\"Failed to install skill:\", e);\n await alert(\"Failed to install skill\", { title: \"Error\" });\n }\n setInstalling(null);\n };\n\n const isInstalled = (name: string) => skills.some((s) => s.name === name);\n\n // GitHub functions\n const browseGitHubRepo = async (repoInput?: string) => {\n const input = repoInput || githubRepo;\n if (!input.trim()) return;\n\n // Parse repo input: \"owner/repo\" or full URL\n let owner = \"\";\n let repo = \"\";\n\n if (input.includes(\"github.com\")) {\n const match = input.match(/github\\.com\\/([^/]+)\\/([^/]+)/);\n if (match) {\n owner = match[1];\n repo = match[2].replace(/\\.git$/, \"\");\n }\n } else if (input.includes(\"/\")) {\n const parts = input.split(\"/\");\n owner = parts[0];\n repo = parts[1];\n }\n\n if (!owner || !repo) {\n setGithubError(\"Invalid repo format. Use 'owner/repo' or GitHub URL\");\n return;\n }\n\n setGithubLoading(true);\n setGithubError(null);\n setGithubSkills([]);\n setGithubRepoInfo(null);\n\n try {\n const res = await authFetch(`/api/skills/github/${owner}/${repo}`);\n const data = await res.json();\n\n if (!res.ok) {\n setGithubError(data.error || \"Failed to fetch repository\");\n setGithubLoading(false);\n return;\n }\n\n setGithubSkills(data.skills || []);\n setGithubRepoInfo(data.repo || null);\n } catch (e) {\n setGithubError(\"Failed to fetch repository\");\n }\n setGithubLoading(false);\n };\n\n const installFromGitHub = async (skill: GitHubSkill) => {\n if (!githubRepoInfo) return;\n\n setInstallingGithub(skill.name);\n try {\n const res = await authFetch(\"/api/skills/github/install\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n owner: githubRepoInfo.owner,\n repo: githubRepoInfo.repo,\n skillName: skill.name,\n downloadUrl: skill.downloadUrl,\n projectId: githubProjectId,\n }),\n });\n\n const data = await res.json();\n if (res.ok) {\n await alert(`Installed \"${skill.name}\" successfully!`, { title: \"Skill Installed\" });\n fetchSkills();\n } else {\n await alert(data.error || \"Failed to install skill\", { title: \"Installation Failed\", variant: \"error\" });\n }\n } catch (e) {\n await alert(\"Failed to install skill\", { title: \"Error\", variant: \"error\" });\n }\n setInstallingGithub(null);\n };\n\n const installAllFromGitHub = async () => {\n if (!githubRepoInfo || githubSkills.length === 0) return;\n\n const uninstalled = githubSkills.filter(s => !isInstalled(s.name));\n if (uninstalled.length === 0) {\n await alert(\"All skills are already installed\", { title: \"Info\" });\n return;\n }\n\n const confirmed = await confirm(\n `Install ${uninstalled.length} skill(s) from ${githubRepoInfo.owner}/${githubRepoInfo.repo}?`,\n { confirmText: \"Install All\", title: \"Install Skills\" }\n );\n if (!confirmed) return;\n\n let installed = 0;\n for (const skill of uninstalled) {\n setInstallingGithub(skill.name);\n try {\n const res = await authFetch(\"/api/skills/github/install\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n owner: githubRepoInfo.owner,\n repo: githubRepoInfo.repo,\n skillName: skill.name,\n downloadUrl: skill.downloadUrl,\n projectId: githubProjectId,\n }),\n });\n if (res.ok) installed++;\n } catch (e) {\n // Continue with others\n }\n }\n setInstallingGithub(null);\n fetchSkills();\n await alert(`Installed ${installed} of ${uninstalled.length} skills`, { title: \"Installation Complete\" });\n };\n\n return (\n <>\n {ConfirmDialog}\n {AlertDialog}\n <div className=\"flex-1 overflow-auto p-6\">\n <div className=\"max-w-6xl\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-6\">\n <div>\n <h1 className=\"text-2xl font-semibold mb-1\">Skills</h1>\n <p className=\"text-[var(--color-text-muted)]\">\n Manage agent skills - instructions that teach agents how to perform tasks.\n </p>\n </div>\n {activeTab === \"installed\" && (\n <div className=\"flex gap-2\">\n <button\n onClick={() => setShowImport(true)}\n className=\"bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] text-white px-4 py-2 rounded font-medium transition border border-[var(--color-border-light)]\"\n >\n Import\n </button>\n <button\n onClick={() => setShowCreate(true)}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-black px-4 py-2 rounded font-medium transition\"\n >\n + Create Skill\n </button>\n </div>\n )}\n </div>\n\n {/* Tabs */}\n <div className=\"flex gap-1 mb-6 bg-[var(--color-surface)] card p-1 w-fit\">\n <button\n onClick={() => setActiveTab(\"installed\")}\n className={`px-4 py-2 rounded text-sm font-medium transition ${\n activeTab === \"installed\"\n ? \"bg-[var(--color-surface-raised)] text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]\"\n }`}\n >\n Installed ({filteredSkills.length})\n </button>\n <button\n onClick={() => setActiveTab(\"github\")}\n className={`px-4 py-2 rounded text-sm font-medium transition ${\n activeTab === \"github\"\n ? \"bg-[var(--color-surface-raised)] text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]\"\n }`}\n >\n Browse GitHub\n </button>\n <button\n onClick={() => setActiveTab(\"marketplace\")}\n className={`px-4 py-2 rounded text-sm font-medium transition ${\n activeTab === \"marketplace\"\n ? \"bg-[var(--color-surface-raised)] text-white\"\n : \"text-[var(--color-text-muted)] hover:text-[var(--color-text-secondary)]\"\n }`}\n >\n Marketplace\n </button>\n </div>\n\n {/* Installed Tab */}\n {activeTab === \"installed\" && (\n <>\n {loading ? (\n <div className=\"text-[var(--color-text-muted)]\">Loading skills...</div>\n ) : skills.length === 0 ? (\n <div className=\"text-center py-20 text-[var(--color-text-muted)]\">\n <p className=\"text-lg\">No skills installed</p>\n <p className=\"text-sm mt-1\">Create a skill or browse the marketplace</p>\n <button\n onClick={() => setActiveTab(\"marketplace\")}\n className=\"mt-4 bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-black px-4 py-2 rounded font-medium transition\"\n >\n Browse Marketplace\n </button>\n </div>\n ) : filteredSkills.length === 0 ? (\n <div className=\"bg-[var(--color-surface)] card p-6 text-center\">\n <p className=\"text-[var(--color-text-muted)]\">No skills match this filter.</p>\n </div>\n ) : (\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-3\">\n {filteredSkills.map((skill) => {\n const project = hasProjects && skill.project_id\n ? projects.find(p => p.id === skill.project_id)\n : null;\n return (\n <SkillCard\n key={skill.id}\n skill={skill}\n project={project}\n onToggle={() => toggleSkill(skill.id)}\n onDelete={() => deleteSkill(skill.id)}\n onView={() => setSelectedSkill(skill)}\n />\n );\n })}\n </div>\n )}\n </>\n )}\n\n {/* GitHub Tab */}\n {activeTab === \"github\" && (\n <div className=\"space-y-6\">\n {/* Search */}\n <form\n onSubmit={(e) => {\n e.preventDefault();\n browseGitHubRepo();\n }}\n className=\"flex gap-2\"\n >\n <input\n type=\"text\"\n value={githubRepo}\n onChange={(e) => setGithubRepo(e.target.value)}\n placeholder=\"Enter GitHub repo (e.g., WordPress/agent-skills)\"\n className=\"flex-1 bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg px-4 py-3 focus:outline-none focus:border-[var(--color-accent)]\"\n />\n <button\n type=\"submit\"\n disabled={githubLoading}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-6 py-3 rounded-lg font-medium transition\"\n >\n {githubLoading ? \"...\" : \"Browse\"}\n </button>\n </form>\n\n {/* Project Scope Selector */}\n {hasProjects && githubSkills.length > 0 && (\n <div className=\"flex items-center gap-3 p-3 bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg\">\n <span className=\"text-sm text-[var(--color-text-muted)]\">Install to:</span>\n <Select\n value={githubProjectId || \"\"}\n onChange={(value) => setGithubProjectId(value || null)}\n options={[\n { value: \"\", label: \"Global (all projects)\" },\n ...projects.map(p => ({ value: p.id, label: p.name }))\n ]}\n placeholder=\"Select scope...\"\n />\n </div>\n )}\n\n {/* Error */}\n {githubError && (\n <div className=\"text-red-400 text-sm p-3 bg-red-500/10 border border-red-500/20 rounded-lg\">\n {githubError}\n </div>\n )}\n\n {/* Repo Info Header */}\n {githubRepoInfo && githubSkills.length > 0 && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <a\n href={githubRepoInfo.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-[var(--color-accent)] hover:underline font-medium\"\n >\n {githubRepoInfo.owner}/{githubRepoInfo.repo}\n </a>\n <span className=\"text-sm text-[var(--color-text-muted)]\">\n {githubSkills.length} skill{githubSkills.length !== 1 ? \"s\" : \"\"} found\n </span>\n </div>\n {githubSkills.some(s => !isInstalled(s.name)) && (\n <button\n onClick={installAllFromGitHub}\n disabled={!!installingGithub}\n className=\"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-4 py-2 rounded transition disabled:opacity-50\"\n >\n Install All\n </button>\n )}\n </div>\n )}\n\n {/* Loading */}\n {githubLoading && (\n <div className=\"text-center py-8 text-[var(--color-text-muted)]\">\n Fetching skills from repository...\n </div>\n )}\n\n {/* Empty State */}\n {!githubLoading && !githubRepoInfo && !githubError && (\n <div className=\"bg-[var(--color-surface)] card p-8 text-center\">\n <div className=\"text-4xl mb-4\">📦</div>\n <h3 className=\"text-lg font-medium mb-2\">Browse Skills from GitHub</h3>\n <p className=\"text-[var(--color-text-muted)] mb-6 max-w-md mx-auto\">\n Enter a GitHub repository to browse and install skills. Skills are markdown files with instructions that teach agents how to perform specific tasks.\n </p>\n <div className=\"flex flex-wrap gap-2 justify-center\">\n {[\n { label: \"WordPress Skills\", repo: \"WordPress/agent-skills\" },\n ].map(({ label, repo }) => (\n <button\n key={repo}\n onClick={() => {\n setGithubRepo(repo);\n browseGitHubRepo(repo);\n }}\n className=\"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition\"\n >\n {label}\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* No Skills Found */}\n {!githubLoading && githubRepoInfo && githubSkills.length === 0 && (\n <div className=\"text-center py-8 text-[var(--color-text-muted)]\">\n No skills found in this repository. Skills should be in subdirectories with a SKILL.md file.\n </div>\n )}\n\n {/* Skills Grid */}\n {githubSkills.length > 0 && (\n <div className=\"grid gap-4 md:grid-cols-2\">\n {githubSkills.map((skill) => {\n const installed = isInstalled(skill.name);\n const isInstalling = installingGithub === skill.name;\n\n return (\n <div\n key={skill.name}\n className={`bg-[var(--color-surface)] border rounded-lg p-4 transition ${\n installed ? \"border-green-500/30\" : \"border-[var(--color-border)] hover:border-[var(--color-border-light)]\"\n }`}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-medium truncate\">{skill.name}</h3>\n {installed && (\n <span className=\"text-xs text-green-400\">✓ Installed</span>\n )}\n </div>\n <p className=\"text-sm text-[var(--color-text-muted)] mt-1 line-clamp-2\">\n {skill.description || \"No description\"}\n </p>\n <div className=\"flex items-center gap-2 mt-2 text-xs text-[var(--color-text-faint)]\">\n <span>{(skill.size / 1024).toFixed(1)}KB</span>\n <span className=\"px-1.5 py-0.5 rounded bg-blue-500/10 text-blue-400\">\n GitHub\n </span>\n </div>\n </div>\n <div className=\"flex-shrink-0\">\n {installed ? (\n <span className=\"text-xs text-[var(--color-text-faint)] px-3 py-1.5\">Added</span>\n ) : (\n <button\n onClick={() => installFromGitHub(skill)}\n disabled={isInstalling}\n className=\"text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition disabled:opacity-50\"\n >\n {isInstalling ? \"Installing...\" : \"Install\"}\n </button>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Info */}\n <div className=\"p-4 bg-[var(--color-surface)] card text-sm text-[var(--color-text-muted)]\">\n <p>\n Skills are sourced from GitHub repositories. Each skill should be in its own directory with a{\" \"}\n <code className=\"text-[var(--color-text-secondary)] bg-[var(--color-bg)] px-1 rounded\">SKILL.md</code> file containing instructions.\n </p>\n </div>\n </div>\n )}\n\n {/* Marketplace Tab */}\n {activeTab === \"marketplace\" && (\n <>\n {/* Search */}\n <div className=\"mb-6\">\n <div className=\"flex gap-2\">\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={(e) => e.key === \"Enter\" && searchMarketplace()}\n placeholder=\"Search skills...\"\n className=\"flex-1 bg-[var(--color-surface)] border border-[var(--color-border)] rounded px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]\"\n />\n <button\n onClick={() => searchMarketplace()}\n disabled={marketplaceLoading}\n className=\"bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] text-white px-4 py-2 rounded font-medium transition border border-[var(--color-border-light)]\"\n >\n {marketplaceLoading ? \"...\" : \"Search\"}\n </button>\n </div>\n </div>\n\n {marketplaceLoading ? (\n <div className=\"text-[var(--color-text-muted)]\">Loading...</div>\n ) : marketplaceSkills.length === 0 ? (\n <div className=\"text-center py-20 text-[var(--color-text-muted)]\">\n <p className=\"text-lg\">No skills found</p>\n <p className=\"text-sm mt-1\">Try a different search term</p>\n </div>\n ) : (\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-3\">\n {marketplaceSkills.map((skill) => (\n <MarketplaceSkillCard\n key={skill.id}\n skill={skill}\n installed={isInstalled(skill.name)}\n installing={installing === skill.id}\n onInstall={() => installFromMarketplace(skill)}\n />\n ))}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Create Modal */}\n {showCreate && (\n <CreateSkillModal\n authFetch={authFetch}\n onClose={() => setShowCreate(false)}\n onCreated={() => {\n setShowCreate(false);\n fetchSkills();\n }}\n projects={hasProjects ? projects : undefined}\n defaultProjectId={currentProjectId && currentProjectId !== \"unassigned\" ? currentProjectId : null}\n />\n )}\n\n {/* Import Modal */}\n {showImport && (\n <ImportSkillModal\n authFetch={authFetch}\n onClose={() => setShowImport(false)}\n onImported={() => {\n setShowImport(false);\n fetchSkills();\n }}\n />\n )}\n\n {/* View/Edit Modal */}\n {selectedSkill && (\n <ViewSkillModal\n skill={selectedSkill}\n authFetch={authFetch}\n onClose={() => setSelectedSkill(null)}\n onUpdated={() => {\n setSelectedSkill(null);\n fetchSkills();\n }}\n />\n )}\n </>\n );\n}\n\nfunction SkillCard({\n skill,\n project,\n onToggle,\n onDelete,\n onView,\n}: {\n skill: Skill;\n project?: { id: string; name: string; color: string } | null;\n onToggle: () => void;\n onDelete: () => void;\n onView: () => void;\n}) {\n const sourceLabel = {\n local: \"Local\",\n skillsmp: \"SkillsMP\",\n github: \"GitHub\",\n import: \"Imported\",\n }[skill.source];\n\n // Scope badge: Global or Project name\n const getScopeBadge = () => {\n if (project) {\n return (\n <span\n className=\"text-xs px-1.5 py-0.5 rounded\"\n style={{ backgroundColor: `${project.color}20`, color: project.color }}\n >\n {project.name}\n </span>\n );\n }\n if (skill.project_id === null) {\n return (\n <span className=\"text-xs text-[var(--color-text-muted)] bg-[var(--color-surface-raised)] px-1.5 py-0.5 rounded\">\n Global\n </span>\n );\n }\n return null;\n };\n\n return (\n <div\n className={`bg-[var(--color-surface)] rounded-lg p-5 border transition cursor-pointer ${\n skill.enabled ? \"border-[var(--color-border)]\" : \"border-[var(--color-border)] opacity-60\"\n } hover:border-[var(--color-border-light)]`}\n onClick={onView}\n >\n <div className=\"flex items-start justify-between mb-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-semibold text-lg truncate\">{skill.name}</h3>\n {getScopeBadge()}\n </div>\n <p className=\"text-xs text-[var(--color-text-muted)] flex items-center gap-2 mt-0.5\">\n <span className={`px-1.5 py-0.5 rounded text-[10px] ${\n skill.source === \"skillsmp\" ? \"bg-purple-500/20 text-purple-400\" :\n skill.source === \"github\" ? \"bg-blue-500/20 text-blue-400\" :\n \"bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)]\"\n }`}>\n {sourceLabel}\n </span>\n {skill.metadata?.version && <span>v{skill.metadata.version}</span>}\n </p>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onToggle();\n }}\n className={`w-10 h-5 rounded-full transition-colors relative ${\n skill.enabled ? \"bg-[var(--color-accent)]\" : \"bg-[var(--color-surface-raised)]\"\n }`}\n >\n <span\n className={`absolute top-0.5 w-4 h-4 rounded-full bg-white transition-transform ${\n skill.enabled ? \"left-5\" : \"left-0.5\"\n }`}\n />\n </button>\n </div>\n\n <p className=\"text-sm text-[var(--color-text-secondary)] line-clamp-2 mb-4\">{skill.description}</p>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-1 flex-wrap\">\n {skill.allowed_tools.slice(0, 2).map((tool) => (\n <span key={tool} className=\"text-xs bg-[var(--color-surface-raised)] px-2 py-0.5 rounded text-[var(--color-text-muted)]\">\n {tool}\n </span>\n ))}\n {skill.allowed_tools.length > 2 && (\n <span className=\"text-xs text-[var(--color-text-muted)]\">+{skill.allowed_tools.length - 2}</span>\n )}\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDelete();\n }}\n className=\"text-red-400 hover:text-red-300 text-sm\"\n >\n Delete\n </button>\n </div>\n </div>\n );\n}\n\nfunction MarketplaceSkillCard({\n skill,\n installed,\n installing,\n onInstall,\n}: {\n skill: MarketplaceSkill;\n installed: boolean;\n installing: boolean;\n onInstall: () => void;\n}) {\n return (\n <div className=\"bg-[var(--color-surface)] rounded-lg p-5 border border-[var(--color-border)] hover:border-[var(--color-border-light)] transition\">\n <div className=\"flex items-start justify-between mb-3\">\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-semibold text-lg truncate\">{skill.name}</h3>\n <p className=\"text-xs text-[var(--color-text-muted)] mt-0.5\">\n by {skill.author} · v{skill.version}\n </p>\n </div>\n <div className=\"flex items-center gap-1 text-yellow-500 text-sm\">\n ★ {skill.rating.toFixed(1)}\n </div>\n </div>\n\n <p className=\"text-sm text-[var(--color-text-secondary)] line-clamp-2 mb-4\">{skill.description}</p>\n\n <div className=\"flex items-center justify-between\">\n <div className=\"flex gap-1 flex-wrap\">\n {skill.tags.slice(0, 3).map((tag) => (\n <span key={tag} className=\"text-xs bg-[var(--color-surface-raised)] px-2 py-0.5 rounded text-[var(--color-text-muted)]\">\n {tag}\n </span>\n ))}\n </div>\n {installed ? (\n <span className=\"text-green-400 text-sm\">✓ Installed</span>\n ) : (\n <button\n onClick={onInstall}\n disabled={installing}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-3 py-1 rounded text-sm font-medium transition\"\n >\n {installing ? \"Installing...\" : \"Install\"}\n </button>\n )}\n </div>\n\n <div className=\"mt-3 text-xs text-[var(--color-text-faint)]\">\n {skill.downloads.toLocaleString()} downloads\n </div>\n </div>\n );\n}\n\nfunction CreateSkillModal({\n authFetch,\n onClose,\n onCreated,\n projects,\n defaultProjectId,\n}: {\n authFetch: (url: string, options?: RequestInit) => Promise<Response>;\n onClose: () => void;\n onCreated: () => void;\n projects?: Array<{ id: string; name: string; color: string }>;\n defaultProjectId?: string | null;\n}) {\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [content, setContent] = useState(\"\");\n const [projectId, setProjectId] = useState<string | null>(defaultProjectId || null);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const hasProjects = projects && projects.length > 0;\n\n const handleSave = async () => {\n if (!name || !description || !content) {\n setError(\"All fields are required\");\n return;\n }\n\n setSaving(true);\n setError(null);\n\n try {\n const body: Record<string, unknown> = {\n name,\n description,\n content, // Just the instructions, not wrapped in frontmatter\n source: \"local\",\n };\n\n // Add project_id if selected\n if (projectId) {\n body.project_id = projectId;\n }\n\n const res = await authFetch(\"/api/skills\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n\n const data = await res.json();\n if (!res.ok) {\n setError(data.error || \"Failed to create skill\");\n setSaving(false);\n return;\n }\n\n onCreated();\n } catch (e) {\n setError(\"Failed to create skill\");\n setSaving(false);\n }\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4\" onClick={onClose}>\n <div\n className=\"bg-[var(--color-surface)] card w-full max-w-2xl max-h-[90vh] overflow-auto\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"p-6 border-b border-[var(--color-border)]\">\n <h2 className=\"text-xl font-semibold\">Create Skill</h2>\n </div>\n\n <div className=\"p-6 space-y-4\">\n {error && (\n <div className=\"bg-red-500/10 border border-red-500/30 rounded p-3 text-red-400 text-sm\">\n {error}\n </div>\n )}\n\n <div>\n <label className=\"block text-sm text-[var(--color-text-secondary)] mb-1\">Name</label>\n <input\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value.toLowerCase().replace(/[^a-z0-9-]/g, \"-\"))}\n placeholder=\"my-skill-name\"\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)]\"\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">Lowercase letters, numbers, and hyphens only</p>\n </div>\n\n <div>\n <label className=\"block text-sm text-[var(--color-text-secondary)] mb-1\">Description</label>\n <input\n type=\"text\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"What this skill does and when to use it...\"\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)]\"\n />\n </div>\n\n {/* Project Scope - only show when projects exist */}\n {hasProjects && (\n <div>\n <label className=\"block text-sm text-[var(--color-text-secondary)] mb-1\">Scope</label>\n <Select\n value={projectId || \"\"}\n onChange={(value) => setProjectId(value || null)}\n options={[\n { value: \"\", label: \"Global (all projects)\" },\n ...projects!.map(p => ({ value: p.id, label: p.name }))\n ]}\n placeholder=\"Select scope...\"\n />\n <p className=\"text-xs text-[var(--color-text-faint)] mt-1\">\n Global skills are available to all agents. Project-scoped skills are only available to agents in that project.\n </p>\n </div>\n )}\n\n <div>\n <label className=\"block text-sm text-[var(--color-text-secondary)] mb-1\">Instructions (Markdown)</label>\n <textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n placeholder=\"# Skill Instructions Write detailed instructions here...\"\n rows={12}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm\"\n />\n </div>\n </div>\n\n <div className=\"p-6 border-t border-[var(--color-border)] flex justify-end gap-3\">\n <button\n onClick={onClose}\n className=\"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition\"\n >\n Cancel\n </button>\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition\"\n >\n {saving ? \"Creating...\" : \"Create Skill\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nfunction ImportSkillModal({\n authFetch,\n onClose,\n onImported,\n}: {\n authFetch: (url: string, options?: RequestInit) => Promise<Response>;\n onClose: () => void;\n onImported: () => void;\n}) {\n const [content, setContent] = useState(\"\");\n const [importing, setImporting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const handleImport = async () => {\n if (!content.trim()) {\n setError(\"Paste SKILL.md content\");\n return;\n }\n\n setImporting(true);\n setError(null);\n\n try {\n const res = await authFetch(\"/api/skills/import\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ content }),\n });\n\n const data = await res.json();\n if (!res.ok) {\n setError(data.error || \"Failed to import skill\");\n setImporting(false);\n return;\n }\n\n onImported();\n } catch (e) {\n setError(\"Failed to import skill\");\n setImporting(false);\n }\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4\" onClick={onClose}>\n <div\n className=\"bg-[var(--color-surface)] card w-full max-w-2xl max-h-[90vh] overflow-auto\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"p-6 border-b border-[var(--color-border)]\">\n <h2 className=\"text-xl font-semibold\">Import Skill</h2>\n <p className=\"text-sm text-[var(--color-text-muted)] mt-1\">Paste the contents of a SKILL.md file</p>\n </div>\n\n <div className=\"p-6 space-y-4\">\n {error && (\n <div className=\"bg-red-500/10 border border-red-500/30 rounded p-3 text-red-400 text-sm\">\n {error}\n </div>\n )}\n\n <textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n placeholder={`---\nname: skill-name\ndescription: What this skill does...\n---\n\n# Instructions\n\nYour skill instructions here...`}\n rows={16}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm\"\n />\n </div>\n\n <div className=\"p-6 border-t border-[var(--color-border)] flex justify-end gap-3\">\n <button\n onClick={onClose}\n className=\"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition\"\n >\n Cancel\n </button>\n <button\n onClick={handleImport}\n disabled={importing}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition\"\n >\n {importing ? \"Importing...\" : \"Import Skill\"}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nfunction ViewSkillModal({\n skill,\n authFetch,\n onClose,\n onUpdated,\n}: {\n skill: Skill;\n authFetch: (url: string, options?: RequestInit) => Promise<Response>;\n onClose: () => void;\n onUpdated: () => void;\n}) {\n const [editing, setEditing] = useState(false);\n const [content, setContent] = useState(skill.content);\n const [saving, setSaving] = useState(false);\n\n const handleSave = async () => {\n setSaving(true);\n try {\n await authFetch(`/api/skills/${skill.id}`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ content }),\n });\n onUpdated();\n } catch (e) {\n console.error(\"Failed to save:\", e);\n }\n setSaving(false);\n };\n\n const handleExport = async () => {\n try {\n const res = await authFetch(`/api/skills/${skill.id}/export`);\n const text = await res.text();\n const blob = new Blob([text], { type: \"text/markdown\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = `${skill.name}-SKILL.md`;\n a.click();\n URL.revokeObjectURL(url);\n } catch (e) {\n console.error(\"Failed to export:\", e);\n }\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/60 flex items-center justify-center z-50 p-4\" onClick={onClose}>\n <div\n className=\"bg-[var(--color-surface)] card w-full max-w-3xl max-h-[90vh] overflow-auto\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"p-6 border-b border-[var(--color-border)] flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-semibold\">{skill.name}</h2>\n <p className=\"text-sm text-[var(--color-text-muted)] mt-0.5\">{skill.description}</p>\n </div>\n <div className=\"flex gap-2\">\n <button\n onClick={handleExport}\n className=\"text-sm text-[var(--color-text-secondary)] hover:text-white transition px-3 py-1 rounded border border-[var(--color-border-light)]\"\n >\n Export\n </button>\n <button\n onClick={() => setEditing(!editing)}\n className=\"text-sm text-[var(--color-text-secondary)] hover:text-white transition px-3 py-1 rounded border border-[var(--color-border-light)]\"\n >\n {editing ? \"View\" : \"Edit\"}\n </button>\n </div>\n </div>\n\n <div className=\"p-6\">\n {editing ? (\n <textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n rows={20}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded px-3 py-2 focus:outline-none focus:border-[var(--color-accent)] font-mono text-sm\"\n />\n ) : (\n <pre className=\"bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded p-4 font-mono text-sm overflow-auto max-h-[60vh] whitespace-pre-wrap\">\n {skill.content}\n </pre>\n )}\n </div>\n\n <div className=\"p-6 border-t border-[var(--color-border)] flex justify-between\">\n <div className=\"text-xs text-[var(--color-text-faint)]\">\n {skill.source !== \"local\" && skill.source_url && (\n <a href={skill.source_url} target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-[var(--color-accent)] hover:underline\">\n View source →\n </a>\n )}\n </div>\n <div className=\"flex gap-3\">\n <button\n onClick={onClose}\n className=\"px-4 py-2 text-[var(--color-text-secondary)] hover:text-white transition\"\n >\n Close\n </button>\n {editing && (\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] disabled:opacity-50 text-black px-4 py-2 rounded font-medium transition\"\n >\n {saving ? \"Saving...\" : \"Save Changes\"}\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "CBC947DAC8C3887164756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Y as $,Z as U,aa as P}from"./App.fy5bef1p.js";var I=U((C)=>{var Y=$(P());(function(){function z(){}function K(q){return""+q}function L(q,A,w){var M=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;try{K(M);var Q=!1}catch(X){Q=!0}return Q&&(console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",typeof Symbol==="function"&&Symbol.toStringTag&&M[Symbol.toStringTag]||M.constructor.name||"Object"),K(M)),{$$typeof:J,key:M==null?null:""+M,children:q,containerInfo:A,implementation:w}}function B(q,A){if(q==="font")return"";if(typeof A==="string")return A==="use-credentials"?A:""}function G(q){return q===null?"`null`":q===void 0?"`undefined`":q===""?"an empty string":'something with type "'+typeof q+'"'}function N(q){return q===null?"`null`":q===void 0?"`undefined`":q===""?"an empty string":typeof q==="string"?JSON.stringify(q):typeof q==="number"?"`"+q+"`":'something with type "'+typeof q+'"'}function Z(){var q=R.H;return q===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
|
|
2
2
|
1. You might have mismatching versions of React and the renderer (such as React DOM)
|
|
3
3
|
2. You might be breaking the Rules of Hooks
|
|
4
4
|
3. You might have more than one copy of React in the same app
|
|
5
5
|
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),q}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var H={d:{f:z,r:function(){throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.")},D:z,C:z,L:z,m:z,X:z,S:z,M:z},p:0,findDOMNode:null},J=Symbol.for("react.portal"),R=Y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;typeof Map==="function"&&Map.prototype!=null&&typeof Map.prototype.forEach==="function"&&typeof Set==="function"&&Set.prototype!=null&&typeof Set.prototype.clear==="function"&&typeof Set.prototype.forEach==="function"||console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),C.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=H,C.createPortal=function(q,A){var w=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!A||A.nodeType!==1&&A.nodeType!==9&&A.nodeType!==11)throw Error("Target container is not a DOM element.");return L(q,A,null,w)},C.flushSync=function(q){var A=R.T,w=H.p;try{if(R.T=null,H.p=2,q)return q()}finally{R.T=A,H.p=w,H.d.f()&&console.error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.")}},C.preconnect=function(q,A){typeof q==="string"&&q?A!=null&&typeof A!=="object"?console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",N(A)):A!=null&&typeof A.crossOrigin!=="string"&&console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",G(A.crossOrigin)):console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",G(q)),typeof q==="string"&&(A?(A=A.crossOrigin,A=typeof A==="string"?A==="use-credentials"?A:"":void 0):A=null,H.d.C(q,A))},C.prefetchDNS=function(q){if(typeof q!=="string"||!q)console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",G(q));else if(1<arguments.length){var A=arguments[1];typeof A==="object"&&A.hasOwnProperty("crossOrigin")?console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",N(A)):console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",N(A))}typeof q==="string"&&H.d.D(q)},C.preinit=function(q,A){if(typeof q==="string"&&q?A==null||typeof A!=="object"?console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",N(A)):A.as!=="style"&&A.as!=="script"&&console.error('ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',N(A.as)):console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",G(q)),typeof q==="string"&&A&&typeof A.as==="string"){var w=A.as,M=B(w,A.crossOrigin),Q=typeof A.integrity==="string"?A.integrity:void 0,X=typeof A.fetchPriority==="string"?A.fetchPriority:void 0;w==="style"?H.d.S(q,typeof A.precedence==="string"?A.precedence:void 0,{crossOrigin:M,integrity:Q,fetchPriority:X}):w==="script"&&H.d.X(q,{crossOrigin:M,integrity:Q,fetchPriority:X,nonce:typeof A.nonce==="string"?A.nonce:void 0})}},C.preinitModule=function(q,A){var w="";if(typeof q==="string"&&q||(w+=" The `href` argument encountered was "+G(q)+"."),A!==void 0&&typeof A!=="object"?w+=" The `options` argument encountered was "+G(A)+".":A&&("as"in A)&&A.as!=="script"&&(w+=" The `as` option encountered was "+N(A.as)+"."),w)console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",w);else switch(w=A&&typeof A.as==="string"?A.as:"script",w){case"script":break;default:w=N(w),console.error('ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',w,q)}if(typeof q==="string")if(typeof A==="object"&&A!==null){if(A.as==null||A.as==="script")w=B(A.as,A.crossOrigin),H.d.M(q,{crossOrigin:w,integrity:typeof A.integrity==="string"?A.integrity:void 0,nonce:typeof A.nonce==="string"?A.nonce:void 0})}else A==null&&H.d.M(q)},C.preload=function(q,A){var w="";if(typeof q==="string"&&q||(w+=" The `href` argument encountered was "+G(q)+"."),A==null||typeof A!=="object"?w+=" The `options` argument encountered was "+G(A)+".":typeof A.as==="string"&&A.as||(w+=" The `as` option encountered was "+G(A.as)+"."),w&&console.error('ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',w),typeof q==="string"&&typeof A==="object"&&A!==null&&typeof A.as==="string"){w=A.as;var M=B(w,A.crossOrigin);H.d.L(q,w,{crossOrigin:M,integrity:typeof A.integrity==="string"?A.integrity:void 0,nonce:typeof A.nonce==="string"?A.nonce:void 0,type:typeof A.type==="string"?A.type:void 0,fetchPriority:typeof A.fetchPriority==="string"?A.fetchPriority:void 0,referrerPolicy:typeof A.referrerPolicy==="string"?A.referrerPolicy:void 0,imageSrcSet:typeof A.imageSrcSet==="string"?A.imageSrcSet:void 0,imageSizes:typeof A.imageSizes==="string"?A.imageSizes:void 0,media:typeof A.media==="string"?A.media:void 0})}},C.preloadModule=function(q,A){var w="";typeof q==="string"&&q||(w+=" The `href` argument encountered was "+G(q)+"."),A!==void 0&&typeof A!=="object"?w+=" The `options` argument encountered was "+G(A)+".":A&&("as"in A)&&typeof A.as!=="string"&&(w+=" The `as` option encountered was "+G(A.as)+"."),w&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',w),typeof q==="string"&&(A?(w=B(A.as,A.crossOrigin),H.d.m(q,{as:typeof A.as==="string"&&A.as!=="script"?A.as:void 0,crossOrigin:w,integrity:typeof A.integrity==="string"?A.integrity:void 0})):H.d.m(q))},C.requestFormReset=function(q){H.d.r(q)},C.unstable_batchedUpdates=function(q,A){return q(A)},C.useFormState=function(q,A,w){return Z().useFormState(q,A,w)},C.useFormStatus=function(){return Z().useHostTransitionStatus()},C.version="19.2.4",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var _=U((g,T)=>{var S=$(I());T.exports=S});function v(z){var K,L,B="";if(typeof z=="string"||typeof z=="number")B+=z;else if(typeof z=="object")if(Array.isArray(z)){var G=z.length;for(K=0;K<G;K++)z[K]&&(L=v(z[K]))&&(B&&(B+=" "),B+=L)}else for(L in z)z[L]&&(B&&(B+=" "),B+=L);return B}function f(){for(var z,K,L=0,B="",G=arguments.length;L<G;L++)(z=arguments[L])&&(K=v(z))&&(B&&(B+=" "),B+=K);return B}
|
|
6
|
-
export{_ as
|
|
6
|
+
export{_ as W,f as X};
|
|
7
7
|
|
|
8
|
-
//# debugId=
|
|
8
|
+
//# debugId=2BA55B82AC99F89464756E2164756E21
|