@elizaos/plugin-task-coordinator 2.0.3-beta.2 → 2.0.3-beta.3
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/assets/hero.png +0 -0
- package/dist/AgentTabsSection.d.ts +16 -0
- package/dist/AgentTabsSection.d.ts.map +1 -0
- package/dist/AgentTabsSection.js +169 -0
- package/dist/AgentTabsSection.js.map +1 -0
- package/dist/CodingAgentControlChip.d.ts +2 -0
- package/dist/CodingAgentControlChip.d.ts.map +1 -0
- package/dist/CodingAgentControlChip.js +73 -0
- package/dist/CodingAgentControlChip.js.map +1 -0
- package/dist/CodingAgentSettingsSection.d.ts +2 -0
- package/dist/CodingAgentSettingsSection.d.ts.map +1 -0
- package/dist/CodingAgentSettingsSection.js +379 -0
- package/dist/CodingAgentSettingsSection.js.map +1 -0
- package/dist/CodingAgentTasksPanel.d.ts +4 -0
- package/dist/CodingAgentTasksPanel.d.ts.map +1 -0
- package/dist/CodingAgentTasksPanel.interact.d.ts +2 -0
- package/dist/CodingAgentTasksPanel.interact.d.ts.map +1 -0
- package/dist/CodingAgentTasksPanel.interact.js +46 -0
- package/dist/CodingAgentTasksPanel.interact.js.map +1 -0
- package/dist/CodingAgentTasksPanel.js +740 -0
- package/dist/CodingAgentTasksPanel.js.map +1 -0
- package/dist/GitHubConnectionCard.d.ts +2 -0
- package/dist/GitHubConnectionCard.d.ts.map +1 -0
- package/dist/GitHubConnectionCard.js +172 -0
- package/dist/GitHubConnectionCard.js.map +1 -0
- package/dist/GlobalPrefsSection.d.ts +10 -0
- package/dist/GlobalPrefsSection.d.ts.map +1 -0
- package/dist/GlobalPrefsSection.js +166 -0
- package/dist/GlobalPrefsSection.js.map +1 -0
- package/dist/LlmProviderSection.d.ts +10 -0
- package/dist/LlmProviderSection.d.ts.map +1 -0
- package/dist/LlmProviderSection.js +161 -0
- package/dist/LlmProviderSection.js.map +1 -0
- package/dist/ModelConfigSection.d.ts +15 -0
- package/dist/ModelConfigSection.d.ts.map +1 -0
- package/dist/ModelConfigSection.js +86 -0
- package/dist/ModelConfigSection.js.map +1 -0
- package/dist/OrchestratorView.d.ts +20 -0
- package/dist/OrchestratorView.d.ts.map +1 -0
- package/dist/OrchestratorView.js +231 -0
- package/dist/OrchestratorView.js.map +1 -0
- package/dist/OrchestratorWorkbench.d.ts +32 -0
- package/dist/OrchestratorWorkbench.d.ts.map +1 -0
- package/dist/OrchestratorWorkbench.js +3200 -0
- package/dist/OrchestratorWorkbench.js.map +1 -0
- package/dist/PtyConsoleBase.d.ts +9 -0
- package/dist/PtyConsoleBase.d.ts.map +1 -0
- package/dist/PtyConsoleBase.js +174 -0
- package/dist/PtyConsoleBase.js.map +1 -0
- package/dist/PtyConsoleDrawer.d.ts +10 -0
- package/dist/PtyConsoleDrawer.d.ts.map +1 -0
- package/dist/PtyConsoleDrawer.js +77 -0
- package/dist/PtyConsoleDrawer.js.map +1 -0
- package/dist/PtyConsoleSidePanel.d.ts +8 -0
- package/dist/PtyConsoleSidePanel.d.ts.map +1 -0
- package/dist/PtyConsoleSidePanel.js +9 -0
- package/dist/PtyConsoleSidePanel.js.map +1 -0
- package/dist/PtyTerminalPane.d.ts +10 -0
- package/dist/PtyTerminalPane.d.ts.map +1 -0
- package/dist/PtyTerminalPane.js +147 -0
- package/dist/PtyTerminalPane.js.map +1 -0
- package/dist/TaskCardList.d.ts +76 -0
- package/dist/TaskCardList.d.ts.map +1 -0
- package/dist/TaskCardList.js +327 -0
- package/dist/TaskCardList.js.map +1 -0
- package/dist/TaskCoordinatorView.d.ts +20 -0
- package/dist/TaskCoordinatorView.d.ts.map +1 -0
- package/dist/TaskCoordinatorView.js +146 -0
- package/dist/TaskCoordinatorView.js.map +1 -0
- package/dist/__e2e__/dashboard-fixture.d.ts +9 -0
- package/dist/__e2e__/dashboard-fixture.d.ts.map +1 -0
- package/dist/__e2e__/dashboard-fixture.js +123 -0
- package/dist/__e2e__/dashboard-fixture.js.map +1 -0
- package/dist/api/coding-agents-auth-sanitize.d.ts +23 -0
- package/dist/api/coding-agents-auth-sanitize.d.ts.map +1 -0
- package/dist/api/coding-agents-auth-sanitize.js +22 -0
- package/dist/api/coding-agents-auth-sanitize.js.map +1 -0
- package/dist/api/coding-agents-preflight-normalize.d.ts +29 -0
- package/dist/api/coding-agents-preflight-normalize.d.ts.map +1 -0
- package/dist/api/coding-agents-preflight-normalize.js +20 -0
- package/dist/api/coding-agents-preflight-normalize.js.map +1 -0
- package/dist/coding-agent-settings-shared.d.ts +42 -0
- package/dist/coding-agent-settings-shared.d.ts.map +1 -0
- package/dist/coding-agent-settings-shared.js +121 -0
- package/dist/coding-agent-settings-shared.js.map +1 -0
- package/dist/components/OrchestratorSpatialView.d.ts +56 -0
- package/dist/components/OrchestratorSpatialView.d.ts.map +1 -0
- package/dist/components/OrchestratorSpatialView.js +501 -0
- package/dist/components/OrchestratorSpatialView.js.map +1 -0
- package/dist/components/TaskCoordinatorSpatialView.d.ts +59 -0
- package/dist/components/TaskCoordinatorSpatialView.d.ts.map +1 -0
- package/dist/components/TaskCoordinatorSpatialView.js +294 -0
- package/dist/components/TaskCoordinatorSpatialView.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +286 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator-capabilities.d.ts +3 -0
- package/dist/orchestrator-capabilities.d.ts.map +1 -0
- package/dist/orchestrator-capabilities.js +136 -0
- package/dist/orchestrator-capabilities.js.map +1 -0
- package/dist/orchestrator-command.d.ts +39 -0
- package/dist/orchestrator-command.d.ts.map +1 -0
- package/dist/orchestrator-command.js +52 -0
- package/dist/orchestrator-command.js.map +1 -0
- package/dist/orchestrator-diff.d.ts +19 -0
- package/dist/orchestrator-diff.d.ts.map +1 -0
- package/dist/orchestrator-diff.helpers.d.ts +18 -0
- package/dist/orchestrator-diff.helpers.d.ts.map +1 -0
- package/dist/orchestrator-diff.helpers.js +76 -0
- package/dist/orchestrator-diff.helpers.js.map +1 -0
- package/dist/orchestrator-diff.js +119 -0
- package/dist/orchestrator-diff.js.map +1 -0
- package/dist/orchestrator-markdown.d.ts +5 -0
- package/dist/orchestrator-markdown.d.ts.map +1 -0
- package/dist/orchestrator-markdown.helpers.d.ts +2 -0
- package/dist/orchestrator-markdown.helpers.d.ts.map +1 -0
- package/dist/orchestrator-markdown.helpers.js +21 -0
- package/dist/orchestrator-markdown.helpers.js.map +1 -0
- package/dist/orchestrator-markdown.js +199 -0
- package/dist/orchestrator-markdown.js.map +1 -0
- package/dist/orchestrator-params.d.ts +8 -0
- package/dist/orchestrator-params.d.ts.map +1 -0
- package/dist/orchestrator-params.js +27 -0
- package/dist/orchestrator-params.js.map +1 -0
- package/dist/orchestrator-plan.d.ts +5 -0
- package/dist/orchestrator-plan.d.ts.map +1 -0
- package/dist/orchestrator-plan.js +95 -0
- package/dist/orchestrator-plan.js.map +1 -0
- package/dist/orchestrator-reasoning.d.ts +21 -0
- package/dist/orchestrator-reasoning.d.ts.map +1 -0
- package/dist/orchestrator-reasoning.js +105 -0
- package/dist/orchestrator-reasoning.js.map +1 -0
- package/dist/orchestrator-stream.d.ts +15 -0
- package/dist/orchestrator-stream.d.ts.map +1 -0
- package/dist/orchestrator-stream.helpers.d.ts +89 -0
- package/dist/orchestrator-stream.helpers.d.ts.map +1 -0
- package/dist/orchestrator-stream.helpers.js +361 -0
- package/dist/orchestrator-stream.helpers.js.map +1 -0
- package/dist/orchestrator-stream.js +307 -0
- package/dist/orchestrator-stream.js.map +1 -0
- package/dist/pty-status-dots.d.ts +2 -0
- package/dist/pty-status-dots.d.ts.map +1 -0
- package/dist/pty-status-dots.js +6 -0
- package/dist/pty-status-dots.js.map +1 -0
- package/dist/register-slots.d.ts +20 -0
- package/dist/register-slots.d.ts.map +1 -0
- package/dist/register-slots.js +50 -0
- package/dist/register-slots.js.map +1 -0
- package/dist/register-terminal-view.d.ts +21 -0
- package/dist/register-terminal-view.d.ts.map +1 -0
- package/dist/register-terminal-view.js +46 -0
- package/dist/register-terminal-view.js.map +1 -0
- package/dist/register.d.ts +2 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +23 -0
- package/dist/register.js.map +1 -0
- package/dist/session-hydration.d.ts +2 -0
- package/dist/session-hydration.d.ts.map +1 -0
- package/dist/session-hydration.js +9 -0
- package/dist/session-hydration.js.map +1 -0
- package/dist/task-coordinator-view-bundle.d.ts +4 -0
- package/dist/task-coordinator-view-bundle.d.ts.map +1 -0
- package/dist/task-coordinator-view-bundle.js +9 -0
- package/dist/task-coordinator-view-bundle.js.map +1 -0
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +13 -0
- package/dist/ui.js.map +1 -0
- package/dist/view-format.d.ts +25 -0
- package/dist/view-format.d.ts.map +1 -0
- package/dist/view-format.js +64 -0
- package/dist/view-format.js.map +1 -0
- package/dist/views/bundle.js +1383 -0
- package/dist/views/bundle.js.map +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","names":[],"sources":["../../src/orchestrator-params.ts","../../src/orchestrator-capabilities.ts","../../src/CodingAgentTasksPanel.interact.ts","../../src/components/OrchestratorSpatialView.tsx","../../src/OrchestratorView.tsx","../../src/components/TaskCoordinatorSpatialView.tsx","../../src/TaskCoordinatorView.tsx"],"sourcesContent":["// Shared orchestrator param coercion helpers + small constants used by both\n// OrchestratorWorkbench.tsx (the React workbench) and the capability dispatcher\n// in orchestrator-capabilities.ts. Kept out of the .tsx so that file exports\n// only React components and stays Fast-Refresh-compatible in dev.\nimport type { CodingAgentTaskThread } from \"@elizaos/ui\";\n\nexport type TaskPriority = CodingAgentTaskThread[\"priority\"];\n\nexport const TASK_LIST_LIMIT = 100;\n\nexport function paramString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nexport function paramPriority(value: unknown): TaskPriority | undefined {\n return value === \"low\" ||\n value === \"normal\" ||\n value === \"high\" ||\n value === \"urgent\"\n ? value\n : undefined;\n}\n\nexport function paramStringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const items = value.filter(\n (entry): entry is string =>\n typeof entry === \"string\" && entry.trim() !== \"\",\n );\n return items.length > 0 ? items.map((entry) => entry.trim()) : undefined;\n}\n\nexport function requireTaskId(params?: Record<string, unknown>): string {\n const taskId = paramString(params?.taskId);\n if (!taskId) throw new Error(\"taskId is required for this capability.\");\n return taskId;\n}\n","// Voice/chat capability dispatch for the `/orchestrator` view, split out of\n// OrchestratorWorkbench.tsx so that file exports only React components and\n// stays Fast-Refresh-compatible. These ids are declared on the `/orchestrator`\n// view and routed through the bundle's shared `interact` export so the agent\n// can drive the workbench by voice or chat. Every handler maps 1:1 to a client\n// method.\nimport { client } from \"@elizaos/ui\";\nimport {\n paramPriority,\n paramString,\n paramStringArray,\n requireTaskId,\n TASK_LIST_LIMIT,\n} from \"./orchestrator-params\";\n\nexport const ORCHESTRATOR_CAPABILITY_IDS: ReadonlySet<string> = new Set([\n \"orchestrator-status\",\n \"orchestrator-list-tasks\",\n \"orchestrator-open-task\",\n \"orchestrator-create-task\",\n \"orchestrator-pause-task\",\n \"orchestrator-resume-task\",\n \"orchestrator-pause-all\",\n \"orchestrator-resume-all\",\n \"orchestrator-delete-task\",\n \"orchestrator-fork-task\",\n \"orchestrator-update-task\",\n \"orchestrator-validate-task\",\n \"orchestrator-add-agent\",\n \"orchestrator-stop-agent\",\n \"orchestrator-send-message\",\n]);\n\nexport async function runOrchestratorCapability(\n capability: string,\n params?: Record<string, unknown>,\n): Promise<unknown> {\n switch (capability) {\n case \"orchestrator-status\":\n return client.getOrchestratorStatus();\n case \"orchestrator-list-tasks\":\n return client.listCodingAgentTaskThreads({\n includeArchived: params?.includeArchived === true,\n status: paramString(params?.status),\n search: paramString(params?.search),\n limit:\n typeof params?.limit === \"number\" ? params.limit : TASK_LIST_LIMIT,\n });\n case \"orchestrator-open-task\": {\n const taskId = paramString(params?.taskId);\n if (taskId) return client.getCodingAgentTaskThread(taskId);\n const [first] = await client.listCodingAgentTaskThreads({ limit: 1 });\n return first ? client.getCodingAgentTaskThread(first.id) : null;\n }\n case \"orchestrator-create-task\": {\n const title = paramString(params?.title);\n const goal = paramString(params?.goal);\n if (!title || !goal) {\n throw new Error(\"title and goal are required to create a task.\");\n }\n return client.createOrchestratorTask({\n title,\n goal,\n originalRequest: paramString(params?.originalRequest),\n kind: paramString(params?.kind),\n priority: paramPriority(params?.priority),\n acceptanceCriteria: paramStringArray(params?.acceptanceCriteria),\n });\n }\n case \"orchestrator-pause-task\":\n return client.pauseOrchestratorTask(requireTaskId(params));\n case \"orchestrator-resume-task\":\n return client.resumeOrchestratorTask(requireTaskId(params));\n case \"orchestrator-pause-all\":\n return { paused: await client.pauseAllOrchestratorTasks() };\n case \"orchestrator-resume-all\":\n return { resumed: await client.resumeAllOrchestratorTasks() };\n case \"orchestrator-delete-task\":\n return {\n deleted: await client.deleteOrchestratorTask(requireTaskId(params)),\n };\n case \"orchestrator-fork-task\":\n return client.forkOrchestratorTask(requireTaskId(params), {\n title: paramString(params?.title),\n goal: paramString(params?.goal),\n priority: paramPriority(params?.priority),\n acceptanceCriteria: paramStringArray(params?.acceptanceCriteria),\n });\n case \"orchestrator-update-task\":\n return client.updateOrchestratorTask(requireTaskId(params), {\n title: paramString(params?.title),\n goal: paramString(params?.goal),\n summary: paramString(params?.summary),\n priority: paramPriority(params?.priority),\n acceptanceCriteria: paramStringArray(params?.acceptanceCriteria),\n });\n case \"orchestrator-validate-task\": {\n if (typeof params?.passed !== \"boolean\") {\n throw new Error(\"passed (boolean) is required to validate a task.\");\n }\n return client.validateOrchestratorTask(requireTaskId(params), {\n passed: params.passed,\n summary: paramString(params?.summary),\n evidence: paramString(params?.evidence),\n verifier: paramString(params?.verifier),\n humanOverride: params?.humanOverride === true,\n });\n }\n case \"orchestrator-add-agent\":\n return client.addOrchestratorAgent(requireTaskId(params), {\n framework: paramString(params?.framework),\n providerSource: paramString(params?.providerSource),\n model: paramString(params?.model),\n workdir: paramString(params?.workdir),\n repo: paramString(params?.repo),\n label: paramString(params?.label),\n task: paramString(params?.task),\n });\n case \"orchestrator-stop-agent\": {\n const sessionId = paramString(params?.sessionId);\n if (!sessionId)\n throw new Error(\"sessionId is required to stop an agent.\");\n return {\n stopped: await client.stopOrchestratorAgent(\n requireTaskId(params),\n sessionId,\n ),\n };\n }\n case \"orchestrator-send-message\": {\n const content = paramString(params?.content);\n if (!content) throw new Error(\"content is required to send a message.\");\n return {\n sent: await client.postOrchestratorTaskMessage(\n requireTaskId(params),\n content,\n ),\n };\n }\n default:\n throw new Error(`Orchestrator view does not support \"${capability}\".`);\n }\n}\n","// View-bundle `interact` capability handler, split out of\n// CodingAgentTasksPanel.tsx so that file exports only React components and\n// stays Fast-Refresh-compatible (Vite would full-reload a component file that\n// also exports a plain function). The view bundle re-exports `interact` via\n// ./task-coordinator-view-bundle.ts. Orchestrator capabilities are delegated to\n// runOrchestratorCapability; the remaining ids drive the task-coordinator view.\nimport { client } from \"@elizaos/ui\";\nimport {\n ORCHESTRATOR_CAPABILITY_IDS,\n runOrchestratorCapability,\n} from \"./orchestrator-capabilities\";\n\nexport async function interact(\n capability: string,\n params?: Record<string, unknown>,\n): Promise<unknown> {\n if (ORCHESTRATOR_CAPABILITY_IDS.has(capability)) {\n return runOrchestratorCapability(capability, params);\n }\n\n if (capability === \"list-sessions\" || capability === \"refresh\") {\n return client.getCodingAgentStatus();\n }\n\n if (capability === \"list-task-threads\") {\n return client.listCodingAgentTaskThreads({\n includeArchived: params?.includeArchived === true,\n search: typeof params?.search === \"string\" ? params.search : undefined,\n limit: typeof params?.limit === \"number\" ? params.limit : 30,\n });\n }\n\n if (capability === \"open-thread\") {\n const threadId =\n typeof params?.threadId === \"string\" ? params.threadId.trim() : \"\";\n if (threadId) {\n return client.getCodingAgentTaskThread(threadId);\n }\n const [firstThread] = await client.listCodingAgentTaskThreads({\n includeArchived: false,\n limit: 1,\n });\n return firstThread ? client.getCodingAgentTaskThread(firstThread.id) : null;\n }\n\n if (capability === \"stop-session\") {\n const sessionId =\n typeof params?.sessionId === \"string\" ? params.sessionId.trim() : \"\";\n if (!sessionId) {\n return {\n stopped: false,\n reason: \"sessionId is required to stop a coding agent session\",\n };\n }\n return client.stopCodingAgent(sessionId);\n }\n\n throw new Error(`Task Coordinator TUI does not support \"${capability}\".`);\n}\n","/**\n * OrchestratorSpatialView — the task-orchestration workbench authored once with\n * the spatial vocabulary, so it renders correctly wherever it is displayed:\n *\n * - GUI / XR — mounted in `<SpatialSurface>` (DOM; XR scales up).\n * - TUI — rendered to real terminal lines by the agent terminal, via\n * `registerSpatialTerminalView` (see `register-terminal-view.tsx`).\n *\n * It is purely presentational (a typed snapshot + an action callback in,\n * primitives out) and imports only the cross-modality primitives plus a\n * type-only view of the orchestrator records from `@elizaos/ui`, so it is safe\n * to render in the Node agent process where the terminal lives (no host runtime\n * import — the `import type` is erased).\n *\n * Two modes:\n * - list — paginated task threads with status, priority, session counts, and\n * cost; the workbench landing.\n * - detail — drill-down for one thread: sessions, decisions, artifacts, events,\n * transcripts, pending user inputs, and plan steps.\n */\n\nimport type {\n CodingAgentOrchestratorStatus,\n CodingAgentPendingDecisionRecord,\n CodingAgentTaskArtifactRecord,\n CodingAgentTaskDecisionRecord,\n CodingAgentTaskEventRecord,\n CodingAgentTaskSessionRecord,\n CodingAgentTaskThread,\n CodingAgentTaskThreadDetail,\n CodingAgentTaskTranscriptRecord,\n} from \"@elizaos/ui\";\nimport {\n Button,\n Card,\n Divider,\n Field,\n HStack,\n List,\n type SpatialTone,\n Text,\n VStack,\n} from \"@elizaos/ui/spatial\";\n\ntype TaskStatus = CodingAgentTaskThread[\"status\"];\ntype TaskPriority = CodingAgentTaskThread[\"priority\"];\n\n/** One plan step distilled from a thread's current plan, for display. */\nexport interface OrchestratorPlanStep {\n id: string;\n label: string;\n state: \"pending\" | \"active\" | \"done\" | \"blocked\";\n}\n\n/** The full snapshot the workbench renders from. `detail` is present only when a\n * thread is open; absent means the list landing. */\nexport interface OrchestratorSnapshot {\n status: CodingAgentOrchestratorStatus | null;\n /** The current page of task threads (server-paginated). */\n threads: CodingAgentTaskThread[];\n /** True when more threads exist beyond this page. */\n hasMore: boolean;\n /** The open thread's drill-down, or null on the list landing. */\n detail: CodingAgentTaskThreadDetail | null;\n /** Plan steps distilled for the open thread. */\n planSteps: OrchestratorPlanStep[];\n /** Pending user inputs awaiting a human on the open thread. */\n pendingInputs: CodingAgentPendingDecisionRecord[];\n loading?: boolean;\n error?: string | null;\n}\n\nconst STATUS_TONE: Record<TaskStatus, SpatialTone> = {\n open: \"primary\",\n active: \"success\",\n validating: \"primary\",\n waiting_on_user: \"warning\",\n blocked: \"warning\",\n interrupted: \"warning\",\n done: \"success\",\n failed: \"danger\",\n archived: \"muted\",\n};\n\nconst STATUS_MARK: Record<TaskStatus, string> = {\n open: \"o\",\n active: \">\",\n validating: \"~\",\n waiting_on_user: \"?\",\n blocked: \"!\",\n interrupted: \"!\",\n done: \"+\",\n failed: \"x\",\n archived: \".\",\n};\n\nconst PRIORITY_TONE: Record<TaskPriority, SpatialTone> = {\n low: \"muted\",\n normal: \"default\",\n high: \"warning\",\n urgent: \"danger\",\n};\n\nconst PLAN_TONE: Record<OrchestratorPlanStep[\"state\"], SpatialTone> = {\n pending: \"muted\",\n active: \"primary\",\n done: \"success\",\n blocked: \"danger\",\n};\n\nconst PLAN_MARK: Record<OrchestratorPlanStep[\"state\"], string> = {\n pending: \"[ ]\",\n active: \"[>]\",\n done: \"[x]\",\n blocked: \"[!]\",\n};\n\nconst VERIFY_TONE: Record<\n CodingAgentTaskArtifactRecord[\"verificationStatus\"],\n SpatialTone\n> = {\n passed: \"success\",\n failed: \"danger\",\n pending: \"warning\",\n unknown: \"muted\",\n};\n\nfunction statusTone(status: string): SpatialTone {\n return STATUS_TONE[status as TaskStatus] ?? \"muted\";\n}\n\nfunction statusMark(status: string): string {\n return STATUS_MARK[status as TaskStatus] ?? \".\";\n}\n\nfunction statusLabel(status: string): string {\n return status.replace(/_/g, \" \");\n}\n\nfunction formatUsd(value: number): string {\n if (value === 0) return \"$0\";\n if (value < 1) return `$${value.toFixed(4)}`;\n return `$${value.toFixed(2)}`;\n}\n\nfunction formatTokens(value: number): string {\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}K`;\n return String(value);\n}\n\nfunction clamp(text: string, max: number): string {\n if (text.length <= max) return text;\n return `${text.slice(0, Math.max(0, max - 1))}…`;\n}\n\nexport interface OrchestratorSpatialViewProps {\n snapshot: OrchestratorSnapshot;\n /**\n * Dispatch by agent id. List: `open:<taskId>`, `pause-all`, `resume-all`,\n * `refresh`. Detail: `back`, `pause`, `resume`, `validate`, `fork`,\n * `delete`, `archive`, `reopen`, `restart`, `add-agent`, `copy-link`,\n * `priority:<low|normal|high|urgent>`, `stop-session:<sessionId>`.\n */\n onAction?: (action: string) => void;\n}\n\nexport function OrchestratorSpatialView({\n snapshot,\n onAction,\n}: OrchestratorSpatialViewProps) {\n const dispatch = (action: string) => () => onAction?.(action);\n if (snapshot.detail) {\n return (\n <OrchestratorDetail\n detail={snapshot.detail}\n planSteps={snapshot.planSteps}\n pendingInputs={snapshot.pendingInputs}\n dispatch={dispatch}\n />\n );\n }\n return (\n <OrchestratorList\n status={snapshot.status}\n threads={snapshot.threads}\n hasMore={snapshot.hasMore}\n loading={snapshot.loading}\n error={snapshot.error}\n dispatch={dispatch}\n />\n );\n}\n\nfunction OrchestratorList({\n status,\n threads,\n hasMore,\n loading,\n error,\n dispatch,\n}: {\n status: CodingAgentOrchestratorStatus | null;\n threads: CodingAgentTaskThread[];\n hasMore: boolean;\n loading?: boolean;\n error?: string | null;\n dispatch: (action: string) => () => void;\n}) {\n return (\n <Card gap={1} padding={1}>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone=\"muted\" grow={1}>\n {loading ? \"loading\" : `${threads.length} threads`}\n </Text>\n {status ? (\n <>\n <Text style=\"caption\" tone=\"success\">\n {`${status.activeTaskCount} active`}\n </Text>\n <Text style=\"caption\" tone=\"warning\">\n {`${status.blockedTaskCount} blocked`}\n </Text>\n <Text style=\"caption\" tone=\"muted\">\n {`${status.sessionCount} sessions`}\n </Text>\n <Text style=\"caption\" tone=\"primary\">\n {formatUsd(status.usage.costUsd)}\n </Text>\n </>\n ) : null}\n </HStack>\n\n {error ? (\n <Text tone=\"danger\" style=\"caption\">\n {error}\n </Text>\n ) : null}\n\n <HStack gap={1} wrap>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"pause-all\"\n onPress={dispatch(\"pause-all\")}\n >\n Pause all\n </Button>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"resume-all\"\n onPress={dispatch(\"resume-all\")}\n >\n Resume all\n </Button>\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"refresh\"\n onPress={dispatch(\"refresh\")}\n >\n Refresh\n </Button>\n </HStack>\n\n <Divider label=\"tasks\" />\n {threads.length === 0 ? (\n <Text tone=\"muted\" align=\"center\" style=\"caption\">\n None\n </Text>\n ) : (\n <List gap={1}>\n {threads.map((thread) => (\n <TaskThreadRow\n key={thread.id}\n thread={thread}\n dispatch={dispatch}\n />\n ))}\n </List>\n )}\n {hasMore ? (\n <Text tone=\"muted\" align=\"center\" style=\"caption\">\n more…\n </Text>\n ) : null}\n </Card>\n );\n}\n\nfunction TaskThreadRow({\n thread,\n dispatch,\n}: {\n thread: CodingAgentTaskThread;\n dispatch: (action: string) => () => void;\n}) {\n return (\n <VStack gap={0} agent={`task-${thread.id}`}>\n <HStack gap={1} align=\"center\">\n <Text tone={statusTone(thread.status)}>\n {statusMark(thread.status)}\n </Text>\n <Text bold wrap={false} grow={1}>\n {thread.title}\n </Text>\n <Text style=\"caption\" tone={PRIORITY_TONE[thread.priority]}>\n {thread.priority}\n </Text>\n </HStack>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone={statusTone(thread.status)}>\n {statusLabel(thread.status)}\n </Text>\n <Text style=\"caption\" tone=\"muted\">\n {`${thread.activeSessionCount}/${thread.sessionCount} sess`}\n </Text>\n <Text style=\"caption\" tone=\"muted\">\n {`${thread.decisionCount} dec`}\n </Text>\n <Text style=\"caption\" tone=\"muted\">\n {formatTokens(thread.usage.totalTokens)}\n </Text>\n <Text style=\"caption\" tone=\"primary\" grow={1}>\n {formatUsd(thread.usage.costUsd)}\n </Text>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent={`open-${thread.id}`}\n onPress={dispatch(`open:${thread.id}`)}\n >\n Open\n </Button>\n </HStack>\n </VStack>\n );\n}\n\nfunction OrchestratorDetail({\n detail,\n planSteps,\n pendingInputs,\n dispatch,\n}: {\n detail: CodingAgentTaskThreadDetail;\n planSteps: OrchestratorPlanStep[];\n pendingInputs: CodingAgentPendingDecisionRecord[];\n dispatch: (action: string) => () => void;\n}) {\n const isTerminal =\n detail.status === \"done\" ||\n detail.status === \"failed\" ||\n detail.status === \"archived\";\n return (\n <Card gap={1} padding={1}>\n <HStack gap={1} align=\"center\">\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"back\"\n onPress={dispatch(\"back\")}\n >\n {\"< Back\"}\n </Button>\n <Text style=\"caption\" tone={statusTone(detail.status)} grow={1}>\n {statusLabel(detail.status)}\n </Text>\n <Text style=\"caption\" tone={PRIORITY_TONE[detail.priority]}>\n {detail.priority}\n </Text>\n </HStack>\n\n <Text style=\"subheading\" bold wrap>\n {detail.title}\n </Text>\n {detail.goal ? (\n <Text style=\"caption\" tone=\"muted\" wrap>\n {clamp(detail.goal, 200)}\n </Text>\n ) : null}\n\n <HStack gap={1} wrap>\n {detail.paused ? (\n <Button agent=\"resume\" onPress={dispatch(\"resume\")}>\n Resume\n </Button>\n ) : (\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"pause\"\n onPress={dispatch(\"pause\")}\n >\n Pause\n </Button>\n )}\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"validate\"\n onPress={dispatch(\"validate\")}\n >\n Validate\n </Button>\n {/* The Edit-group (Fork, Restart, Add agent) is hidden on terminal\n tasks, mirroring the GUI workbench's TaskInspector guard. */}\n {isTerminal ? null : (\n <>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"fork\"\n onPress={dispatch(\"fork\")}\n >\n Fork\n </Button>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"restart\"\n onPress={dispatch(\"restart\")}\n >\n Restart\n </Button>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"add-agent\"\n onPress={dispatch(\"add-agent\")}\n >\n Add agent\n </Button>\n </>\n )}\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"copy-link\"\n onPress={dispatch(\"copy-link\")}\n >\n Copy link\n </Button>\n {detail.status === \"archived\" ? (\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent=\"reopen\"\n onPress={dispatch(\"reopen\")}\n >\n Reopen\n </Button>\n ) : (\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"archive\"\n onPress={dispatch(\"archive\")}\n >\n Archive\n </Button>\n )}\n <Button\n variant=\"ghost\"\n tone=\"danger\"\n agent=\"delete\"\n onPress={dispatch(\"delete\")}\n >\n Delete\n </Button>\n </HStack>\n\n {isTerminal ? null : (\n <Field\n label=\"priority\"\n kind=\"select\"\n value={detail.priority}\n options={[\"low\", \"normal\", \"high\", \"urgent\"]}\n agent=\"priority\"\n onChange={(value) => dispatch(`priority:${value}`)()}\n />\n )}\n\n {pendingInputs.length > 0 ? (\n <PendingInputs inputs={pendingInputs} />\n ) : null}\n\n {planSteps.length > 0 ? <PlanSection steps={planSteps} /> : null}\n\n <SessionsSection sessions={detail.sessions} dispatch={dispatch} />\n\n {detail.decisions.length > 0 ? (\n <DecisionsSection decisions={detail.decisions} />\n ) : null}\n\n {detail.artifacts.length > 0 ? (\n <ArtifactsSection artifacts={detail.artifacts} />\n ) : null}\n\n {detail.events.length > 0 ? (\n <EventsSection events={detail.events} />\n ) : null}\n\n {detail.transcripts.length > 0 ? (\n <TranscriptsSection transcripts={detail.transcripts} />\n ) : null}\n </Card>\n );\n}\n\nfunction PendingInputs({\n inputs,\n}: {\n inputs: CodingAgentPendingDecisionRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label=\"awaiting you\" />\n <List gap={0}>\n {inputs.slice(0, 4).map((input) => (\n <VStack\n key={input.sessionId}\n gap={0}\n agent={`pending-${input.sessionId}`}\n >\n <Text tone=\"warning\" bold wrap>\n {clamp(input.promptText, 120)}\n </Text>\n {input.recentOutput ? (\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {clamp(input.recentOutput, 80)}\n </Text>\n ) : null}\n </VStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction PlanSection({ steps }: { steps: OrchestratorPlanStep[] }) {\n return (\n <VStack gap={0}>\n <Divider label=\"plan\" />\n <List gap={0}>\n {steps.slice(0, 10).map((step) => (\n <HStack\n key={step.id}\n gap={1}\n align=\"center\"\n agent={`plan-${step.id}`}\n >\n <Text tone={PLAN_TONE[step.state]}>{PLAN_MARK[step.state]}</Text>\n <Text\n grow={1}\n wrap={false}\n tone={step.state === \"done\" ? \"muted\" : \"default\"}\n >\n {step.label}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction SessionsSection({\n sessions,\n dispatch,\n}: {\n sessions: CodingAgentTaskSessionRecord[];\n dispatch: (action: string) => () => void;\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`sessions (${sessions.length})`} />\n {sessions.length === 0 ? (\n <Text tone=\"muted\" align=\"center\" style=\"caption\">\n None\n </Text>\n ) : (\n <List gap={1}>\n {sessions.slice(0, 8).map((session) => (\n <VStack\n key={session.id}\n gap={0}\n agent={`session-${session.sessionId}`}\n >\n <HStack gap={1} align=\"center\">\n <Text tone={statusTone(session.status)}>\n {statusMark(session.status)}\n </Text>\n <Text bold wrap={false} grow={1}>\n {session.label}\n </Text>\n <Button\n variant=\"ghost\"\n tone=\"danger\"\n agent={`stop-${session.sessionId}`}\n onPress={dispatch(`stop-session:${session.sessionId}`)}\n >\n Stop\n </Button>\n </HStack>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone=\"muted\">\n {session.framework}\n </Text>\n {session.model ? (\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {session.model}\n </Text>\n ) : null}\n <Text style=\"caption\" tone=\"muted\">\n {formatTokens(session.totalTokens)}\n </Text>\n <Text style=\"caption\" tone=\"primary\" grow={1}>\n {formatUsd(session.costUsd)}\n </Text>\n {session.activeTool ? (\n <Text style=\"caption\" tone=\"success\" wrap={false}>\n {session.activeTool}\n </Text>\n ) : null}\n </HStack>\n </VStack>\n ))}\n </List>\n )}\n </VStack>\n );\n}\n\nfunction DecisionsSection({\n decisions,\n}: {\n decisions: CodingAgentTaskDecisionRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`decisions (${decisions.length})`} />\n <List gap={0}>\n {decisions.slice(0, 6).map((decision) => (\n <HStack\n key={decision.id}\n gap={1}\n align=\"center\"\n agent={`decision-${decision.id}`}\n >\n <Text tone=\"primary\" wrap={false}>\n {decision.decision}\n </Text>\n <Text grow={1} wrap={false}>\n {clamp(decision.promptText, 100)}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction ArtifactsSection({\n artifacts,\n}: {\n artifacts: CodingAgentTaskArtifactRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`artifacts (${artifacts.length})`} />\n <List gap={0}>\n {artifacts.slice(0, 6).map((artifact) => (\n <HStack\n key={artifact.id}\n gap={1}\n align=\"center\"\n agent={`artifact-${artifact.id}`}\n >\n <Text tone={VERIFY_TONE[artifact.verificationStatus]} wrap={false}>\n {artifact.verificationStatus === \"passed\"\n ? \"+\"\n : artifact.verificationStatus === \"failed\"\n ? \"x\"\n : artifact.verificationStatus === \"pending\"\n ? \"~\"\n : \".\"}\n </Text>\n <Text grow={1} wrap={false}>\n {artifact.title}\n </Text>\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {artifact.artifactType}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction EventsSection({ events }: { events: CodingAgentTaskEventRecord[] }) {\n return (\n <VStack gap={0}>\n <Divider label={`events (${events.length})`} />\n <List gap={0}>\n {events.slice(0, 6).map((event) => (\n <HStack\n key={event.id}\n gap={1}\n align=\"center\"\n agent={`event-${event.id}`}\n >\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {event.eventType}\n </Text>\n <Text style=\"caption\" grow={1} wrap={false}>\n {clamp(event.summary, 90)}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction TranscriptsSection({\n transcripts,\n}: {\n transcripts: CodingAgentTaskTranscriptRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`transcript (${transcripts.length})`} />\n <List gap={0}>\n {transcripts.slice(-6).map((line) => (\n <Text\n key={line.id}\n style=\"caption\"\n tone={line.direction === \"stderr\" ? \"danger\" : \"muted\"}\n wrap={false}\n >\n {clamp(line.content.replace(/\\s+/g, \" \").trim(), 110)}\n </Text>\n ))}\n </List>\n </VStack>\n );\n}\n","/**\n * OrchestratorView — the single GUI/XR/TUI data wrapper for the Orchestrator\n * surface.\n *\n * It owns a focused live subset of the workbench's data (orchestrator status +\n * the task-thread page on a 5s poll, plus the open thread's detail) and renders\n * the one presentational {@link OrchestratorSpatialView} inside a\n * {@link SpatialSurface}. Omitting the `modality` prop lets `SpatialSurface`\n * auto-detect GUI vs XR via `window.__elizaXRContext`, so the SAME component\n * serves both surfaces. The TUI surface renders the same `OrchestratorSpatialView`\n * through the terminal registry (see `register-terminal-view.tsx`).\n *\n * The rich GUI route (`/orchestrator`, {@link OrchestratorWorkbench}) keeps the\n * full mutation/SSE/inspector surface — this wrapper is the cross-modality\n * dashboard, not a replacement for it. `onAction` maps each spatial affordance\n * 1:1 to a client method (or, for richer flows like adding an agent, navigates\n * to the workbench).\n */\n\nimport {\n type CodingAgentOrchestratorStatus,\n type CodingAgentPendingDecisionRecord,\n type CodingAgentTaskThread,\n type CodingAgentTaskThreadDetail,\n client,\n} from \"@elizaos/ui\";\nimport { SpatialSurface } from \"@elizaos/ui/spatial\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n type OrchestratorPlanStep,\n type OrchestratorSnapshot,\n OrchestratorSpatialView,\n} from \"./components/OrchestratorSpatialView.tsx\";\n\nconst TASK_LIST_LIMIT = 30;\n\n/** Map the free-form `currentPlan` record into the renderable plan-step shape. */\nfunction derivePlanSteps(\n plan: Record<string, unknown> | null | undefined,\n): OrchestratorPlanStep[] {\n if (!plan) return [];\n const rawSteps = Array.isArray(plan.steps) ? plan.steps : [];\n const steps: OrchestratorPlanStep[] = [];\n for (const raw of rawSteps) {\n if (typeof raw === \"string\" && raw.trim()) {\n steps.push({\n id: `step-${steps.length}`,\n label: raw.trim(),\n state: \"pending\",\n });\n continue;\n }\n if (raw && typeof raw === \"object\") {\n const obj = raw as Record<string, unknown>;\n const label =\n (typeof obj.title === \"string\" && obj.title) ||\n (typeof obj.label === \"string\" && obj.label) ||\n (typeof obj.description === \"string\" && obj.description) ||\n null;\n if (!label) continue;\n const status = typeof obj.status === \"string\" ? obj.status : \"\";\n steps.push({\n id: `step-${steps.length}`,\n label,\n state:\n status === \"done\" || status === \"complete\" || status === \"completed\"\n ? \"done\"\n : status === \"active\" ||\n status === \"in_progress\" ||\n status === \"running\"\n ? \"active\"\n : status === \"blocked\" || status === \"failed\"\n ? \"blocked\"\n : \"pending\",\n });\n }\n }\n return steps;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/** Open the rich Orchestrator workbench route via the navigation bus. */\nfunction openWorkbench(): void {\n if (typeof window === \"undefined\") return;\n window.dispatchEvent(\n new CustomEvent(\"eliza:navigate:view\", {\n detail: { viewId: \"orchestrator\", viewPath: \"/orchestrator\" },\n }),\n );\n}\n\n/** Copy a deep link to the open task to the clipboard. */\nfunction copyTaskLink(taskId: string): void {\n if (typeof window === \"undefined\") return;\n const url = `${window.location.origin}/orchestrator?task=${encodeURIComponent(taskId)}`;\n void navigator.clipboard?.writeText(url).catch(() => {\n // Clipboard access is best-effort; a denied permission is not an error\n // worth surfacing in the dashboard.\n });\n}\n\nexport function OrchestratorView() {\n const [status, setStatus] =\n useState<CodingAgentOrchestratorStatus | null>(null);\n const [threads, setThreads] = useState<CodingAgentTaskThread[]>([]);\n const [hasMore, setHasMore] = useState(false);\n const [selectedTaskId, setSelectedTaskId] = useState<string | null>(null);\n const [detail, setDetail] = useState<CodingAgentTaskThreadDetail | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const refreshList = useCallback(\n async (silent = false) => {\n if (!silent) setLoading(true);\n try {\n const [nextStatus, nextThreads] = await Promise.all([\n client.getOrchestratorStatus(),\n client.listCodingAgentTaskThreads({ limit: TASK_LIST_LIMIT }),\n ]);\n setStatus(nextStatus);\n setThreads(nextThreads);\n setHasMore(nextThreads.length >= TASK_LIST_LIMIT);\n setError(null);\n } catch (err) {\n if (!silent) {\n setError(errorMessage(err));\n setStatus(null);\n setThreads([]);\n setHasMore(false);\n }\n } finally {\n if (!silent) setLoading(false);\n }\n },\n [],\n );\n\n const loadDetail = useCallback(async (taskId: string) => {\n try {\n const next = await client.getCodingAgentTaskThread(taskId);\n setDetail(next);\n setError(null);\n } catch (err) {\n setError(errorMessage(err));\n setDetail(null);\n }\n }, []);\n\n // Load the task list on mount, then keep it fresh with a quiet 5s poll.\n const autoLoadedRef = useRef(false);\n useEffect(() => {\n if (!autoLoadedRef.current) {\n autoLoadedRef.current = true;\n void refreshList(false);\n }\n const interval = setInterval(() => {\n void refreshList(true);\n if (selectedTaskId) void loadDetail(selectedTaskId);\n }, 5_000);\n return () => clearInterval(interval);\n }, [refreshList, loadDetail, selectedTaskId]);\n\n // Load the open thread's detail whenever the selection changes.\n useEffect(() => {\n if (!selectedTaskId) {\n setDetail(null);\n return;\n }\n void loadDetail(selectedTaskId);\n }, [selectedTaskId, loadDetail]);\n\n const runMutation = useCallback(\n async (mutate: () => Promise<unknown>) => {\n try {\n await mutate();\n await refreshList(true);\n if (selectedTaskId) await loadDetail(selectedTaskId);\n } catch (err) {\n setError(errorMessage(err));\n }\n },\n [refreshList, loadDetail, selectedTaskId],\n );\n\n const onAction = useCallback(\n (action: string) => {\n if (action.startsWith(\"open:\")) {\n setSelectedTaskId(action.slice(\"open:\".length));\n return;\n }\n if (action.startsWith(\"stop-session:\")) {\n const sessionId = action.slice(\"stop-session:\".length);\n if (selectedTaskId) {\n void runMutation(() =>\n client.stopOrchestratorAgent(selectedTaskId, sessionId),\n );\n }\n return;\n }\n if (action.startsWith(\"priority:\")) {\n const priority = action.slice(\"priority:\".length);\n if (\n selectedTaskId &&\n (priority === \"low\" ||\n priority === \"normal\" ||\n priority === \"high\" ||\n priority === \"urgent\")\n ) {\n void runMutation(() =>\n client.updateOrchestratorTask(selectedTaskId, { priority }),\n );\n }\n return;\n }\n switch (action) {\n case \"refresh\":\n void refreshList(false);\n return;\n case \"pause-all\":\n void runMutation(() => client.pauseAllOrchestratorTasks());\n return;\n case \"resume-all\":\n void runMutation(() => client.resumeAllOrchestratorTasks());\n return;\n case \"back\":\n setSelectedTaskId(null);\n return;\n case \"add-agent\":\n openWorkbench();\n return;\n }\n if (!selectedTaskId) return;\n switch (action) {\n case \"pause\":\n void runMutation(() => client.pauseOrchestratorTask(selectedTaskId));\n return;\n case \"resume\":\n void runMutation(() => client.resumeOrchestratorTask(selectedTaskId));\n return;\n case \"validate\":\n void runMutation(() =>\n client.validateOrchestratorTask(selectedTaskId, { passed: true }),\n );\n return;\n case \"fork\":\n void runMutation(() => client.forkOrchestratorTask(selectedTaskId));\n return;\n case \"restart\":\n void runMutation(() =>\n client.restartOrchestratorTask(selectedTaskId),\n );\n return;\n case \"delete\":\n void runMutation(async () => {\n await client.deleteOrchestratorTask(selectedTaskId);\n setSelectedTaskId(null);\n });\n return;\n case \"archive\":\n void runMutation(async () => {\n await client.archiveCodingAgentTaskThread(selectedTaskId);\n setSelectedTaskId(null);\n });\n return;\n case \"reopen\":\n void runMutation(() =>\n client.reopenCodingAgentTaskThread(selectedTaskId),\n );\n return;\n case \"copy-link\":\n copyTaskLink(selectedTaskId);\n return;\n }\n },\n [refreshList, runMutation, selectedTaskId],\n );\n\n const pendingInputs: CodingAgentPendingDecisionRecord[] =\n detail?.pendingDecisions ?? [];\n\n const snapshot: OrchestratorSnapshot = {\n status,\n threads,\n hasMore,\n detail,\n planSteps: detail ? derivePlanSteps(detail.currentPlan) : [],\n pendingInputs,\n loading,\n error,\n };\n\n return (\n <SpatialSurface>\n <OrchestratorSpatialView snapshot={snapshot} onAction={onAction} />\n </SpatialSurface>\n );\n}\n","/**\n * TaskCoordinatorSpatialView — the coding-agent task coordinator authored once\n * with the spatial vocabulary, so it renders correctly wherever it is displayed:\n *\n * - GUI / XR — mounted in `<SpatialSurface>` (DOM; XR scales up).\n * - TUI — rendered to real terminal lines by the agent terminal, via\n * `registerSpatialTerminalView` (see `register-terminal-view.tsx`).\n *\n * It is purely presentational (a typed snapshot + an action callback in,\n * primitives out) and imports only the cross-modality primitives plus a\n * type-only view of the task-thread records from `@elizaos/ui`, so it is safe to\n * render in the Node agent process where the terminal lives (the `import type`\n * is erased).\n *\n * Two modes:\n * - list — the searchable task-thread list with count chips and a\n * show-archived toggle; the coordinator landing.\n * - detail — drill-down for one thread: acceptance criteria, sessions,\n * artifacts, decisions, events, and recent messages, with\n * Delete/Reopen affordances.\n */\n\nimport type {\n CodingAgentTaskArtifactRecord,\n CodingAgentTaskDecisionRecord,\n CodingAgentTaskEventRecord,\n CodingAgentTaskSessionRecord,\n CodingAgentTaskThread,\n CodingAgentTaskThreadDetail,\n} from \"@elizaos/ui\";\nimport {\n Button,\n Card,\n Divider,\n Field,\n HStack,\n List,\n type SpatialTone,\n Text,\n VStack,\n} from \"@elizaos/ui/spatial\";\n\ntype TaskStatus = CodingAgentTaskThread[\"status\"];\n\n/** A task-thread row distilled for list display. */\nexport interface TaskCoordinatorRow {\n id: string;\n title: string;\n subtitle?: string;\n status: string;\n sessionCount: number;\n decisionCount: number;\n}\n\nexport interface TaskCoordinatorSnapshot {\n /** The current page of task threads (server-filtered). */\n threads: TaskCoordinatorRow[];\n /** The open thread id, or null on the list landing. */\n selectedThreadId: string | null;\n /** The open thread's drill-down, or null on the list landing. */\n detail: CodingAgentTaskThreadDetail | null;\n /** Whether the archived threads are included in the current list. */\n showArchived: boolean;\n /** The current search query. */\n search: string;\n loading?: boolean;\n error?: string | null;\n}\n\nexport const EMPTY_TASK_COORDINATOR_SNAPSHOT: TaskCoordinatorSnapshot = {\n threads: [],\n selectedThreadId: null,\n detail: null,\n showArchived: false,\n search: \"\",\n};\n\nconst STATUS_TONE: Record<TaskStatus, SpatialTone> = {\n open: \"primary\",\n active: \"success\",\n validating: \"primary\",\n waiting_on_user: \"warning\",\n blocked: \"warning\",\n interrupted: \"warning\",\n done: \"success\",\n failed: \"danger\",\n archived: \"muted\",\n};\n\nconst STATUS_MARK: Record<TaskStatus, string> = {\n open: \"o\",\n active: \">\",\n validating: \"~\",\n waiting_on_user: \"?\",\n blocked: \"!\",\n interrupted: \"!\",\n done: \"+\",\n failed: \"x\",\n archived: \".\",\n};\n\nfunction statusTone(status: string): SpatialTone {\n return STATUS_TONE[status as TaskStatus] ?? \"muted\";\n}\n\nfunction statusMark(status: string): string {\n return STATUS_MARK[status as TaskStatus] ?? \".\";\n}\n\nfunction statusLabel(status: string): string {\n return status.replace(/_/g, \" \");\n}\n\nfunction clamp(text: string, max: number): string {\n if (text.length <= max) return text;\n return `${text.slice(0, Math.max(0, max - 1))}…`;\n}\n\n/** Distil a thread record into the presentational row shape. */\nexport function toTaskCoordinatorRow(\n thread: CodingAgentTaskThread,\n): TaskCoordinatorRow {\n return {\n id: thread.id,\n title: thread.title,\n subtitle: thread.summary || thread.originalRequest || undefined,\n status: thread.status,\n sessionCount: thread.sessionCount,\n decisionCount: thread.decisionCount,\n };\n}\n\nexport interface TaskCoordinatorSpatialViewProps {\n snapshot: TaskCoordinatorSnapshot;\n /**\n * Dispatch by agent id. List: `open:<threadId>`, `search:<text>`,\n * `toggle-archived`, `refresh`. Detail: `back`, `delete-thread`,\n * `reopen-thread`.\n */\n onAction?: (action: string) => void;\n}\n\nexport function TaskCoordinatorSpatialView({\n snapshot,\n onAction,\n}: TaskCoordinatorSpatialViewProps) {\n const dispatch = (action: string) => () => onAction?.(action);\n if (snapshot.detail) {\n return (\n <TaskDetail\n detail={snapshot.detail}\n dispatch={dispatch}\n onAction={onAction}\n />\n );\n }\n return (\n <TaskList\n threads={snapshot.threads}\n showArchived={snapshot.showArchived}\n search={snapshot.search}\n loading={snapshot.loading}\n error={snapshot.error}\n dispatch={dispatch}\n onAction={onAction}\n />\n );\n}\n\nfunction TaskList({\n threads,\n showArchived,\n search,\n loading,\n error,\n dispatch,\n onAction,\n}: {\n threads: TaskCoordinatorRow[];\n showArchived: boolean;\n search: string;\n loading?: boolean;\n error?: string | null;\n dispatch: (action: string) => () => void;\n onAction?: (action: string) => void;\n}) {\n const activeCount = threads.filter((t) => t.status === \"active\").length;\n const doneCount = threads.filter((t) => t.status === \"done\").length;\n return (\n <Card gap={1} padding={1}>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone=\"muted\" grow={1}>\n {loading ? \"loading\" : `${threads.length} total`}\n </Text>\n {activeCount > 0 ? (\n <Text style=\"caption\" tone=\"success\">\n {`${activeCount} active`}\n </Text>\n ) : null}\n {doneCount > 0 ? (\n <Text style=\"caption\" tone=\"primary\">\n {`${doneCount} done`}\n </Text>\n ) : null}\n </HStack>\n\n {error ? (\n <Text tone=\"danger\" style=\"caption\">\n {error}\n </Text>\n ) : null}\n\n <HStack gap={1} align=\"center\" wrap>\n <Field\n placeholder=\"Search tasks\"\n value={search}\n agent=\"search\"\n grow={1}\n onChange={(value) => onAction?.(`search:${value}`)}\n />\n <Button\n variant={showArchived ? \"solid\" : \"outline\"}\n tone=\"default\"\n agent=\"toggle-archived\"\n onPress={dispatch(\"toggle-archived\")}\n >\n {showArchived ? \"Hide archived\" : \"Show archived\"}\n </Button>\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"refresh\"\n onPress={dispatch(\"refresh\")}\n >\n Refresh\n </Button>\n </HStack>\n\n <Divider label=\"tasks\" />\n {threads.length === 0 ? (\n <Text tone=\"muted\" align=\"center\" style=\"caption\">\n {loading ? \"Loading\" : \"None\"}\n </Text>\n ) : (\n <List gap={1}>\n {threads.map((thread) => (\n <TaskRow key={thread.id} thread={thread} dispatch={dispatch} />\n ))}\n </List>\n )}\n </Card>\n );\n}\n\nfunction TaskRow({\n thread,\n dispatch,\n}: {\n thread: TaskCoordinatorRow;\n dispatch: (action: string) => () => void;\n}) {\n return (\n <VStack gap={0} agent={`task-${thread.id}`}>\n <HStack gap={1} align=\"center\">\n <Text tone={statusTone(thread.status)}>\n {statusMark(thread.status)}\n </Text>\n <Text bold wrap={false} grow={1}>\n {thread.title}\n </Text>\n <Button\n variant=\"outline\"\n tone=\"default\"\n agent={`open-${thread.id}`}\n onPress={dispatch(`open:${thread.id}`)}\n >\n Open\n </Button>\n </HStack>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone={statusTone(thread.status)}>\n {statusLabel(thread.status)}\n </Text>\n {thread.sessionCount > 0 ? (\n <Text style=\"caption\" tone=\"muted\">\n {`${thread.sessionCount} sess`}\n </Text>\n ) : null}\n {thread.decisionCount > 0 ? (\n <Text style=\"caption\" tone=\"muted\">\n {`${thread.decisionCount} dec`}\n </Text>\n ) : null}\n {thread.subtitle ? (\n <Text style=\"caption\" tone=\"muted\" grow={1} wrap={false}>\n {clamp(thread.subtitle, 80)}\n </Text>\n ) : null}\n </HStack>\n </VStack>\n );\n}\n\nfunction TaskDetail({\n detail,\n dispatch,\n}: {\n detail: CodingAgentTaskThreadDetail;\n dispatch: (action: string) => () => void;\n onAction?: (action: string) => void;\n}) {\n return (\n <Card gap={1} padding={1}>\n <HStack gap={1} align=\"center\">\n <Button\n variant=\"ghost\"\n tone=\"default\"\n agent=\"back\"\n onPress={dispatch(\"back\")}\n >\n {\"< Tasks\"}\n </Button>\n <Text style=\"caption\" tone={statusTone(detail.status)} grow={1}>\n {statusLabel(detail.status)}\n </Text>\n </HStack>\n\n <Text style=\"subheading\" bold wrap>\n {detail.title}\n </Text>\n {detail.originalRequest ? (\n <Text style=\"caption\" tone=\"muted\" wrap>\n {clamp(detail.originalRequest, 200)}\n </Text>\n ) : null}\n\n <HStack gap={1} wrap>\n {detail.status === \"archived\" ? (\n <Button agent=\"reopen-thread\" onPress={dispatch(\"reopen-thread\")}>\n Reopen\n </Button>\n ) : (\n <Button\n variant=\"ghost\"\n tone=\"danger\"\n agent=\"delete-thread\"\n onPress={dispatch(\"delete-thread\")}\n >\n Delete\n </Button>\n )}\n </HStack>\n\n {detail.acceptanceCriteria.length > 0 ? (\n <AcceptanceSection criteria={detail.acceptanceCriteria} />\n ) : null}\n\n <SessionsSection sessions={detail.sessions} />\n\n {detail.artifacts.length > 0 ? (\n <ArtifactsSection artifacts={detail.artifacts} />\n ) : null}\n\n {detail.decisions.length > 0 ? (\n <DecisionsSection decisions={detail.decisions} />\n ) : null}\n\n {detail.events.length > 0 ? (\n <EventsSection events={detail.events} />\n ) : null}\n </Card>\n );\n}\n\nfunction AcceptanceSection({ criteria }: { criteria: string[] }) {\n return (\n <VStack gap={0}>\n <Divider label=\"acceptance\" />\n <List gap={0}>\n {criteria.slice(0, 8).map((criterion) => (\n <Text key={criterion} style=\"caption\" wrap>\n {clamp(criterion, 110)}\n </Text>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction SessionsSection({\n sessions,\n}: {\n sessions: CodingAgentTaskSessionRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`sessions (${sessions.length})`} />\n {sessions.length === 0 ? (\n <Text tone=\"muted\" align=\"center\" style=\"caption\">\n None\n </Text>\n ) : (\n <List gap={0}>\n {sessions\n .slice(-6)\n .reverse()\n .map((session) => (\n <VStack key={session.id} gap={0} agent={`session-${session.id}`}>\n <Text bold wrap={false}>\n {session.label}\n </Text>\n <HStack gap={1} align=\"center\" wrap>\n <Text style=\"caption\" tone={statusTone(session.status)}>\n {statusLabel(session.status)}\n </Text>\n <Text style=\"caption\" tone=\"muted\">\n {session.framework}\n </Text>\n <Text style=\"caption\" tone=\"muted\" grow={1} wrap={false}>\n {session.workdir || session.repo || \"no workspace\"}\n </Text>\n </HStack>\n </VStack>\n ))}\n </List>\n )}\n </VStack>\n );\n}\n\nfunction ArtifactsSection({\n artifacts,\n}: {\n artifacts: CodingAgentTaskArtifactRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`artifacts (${artifacts.length})`} />\n <List gap={0}>\n {artifacts\n .slice(-6)\n .reverse()\n .map((artifact) => (\n <HStack\n key={artifact.id}\n gap={1}\n align=\"center\"\n agent={`artifact-${artifact.id}`}\n >\n <Text grow={1} wrap={false}>\n {artifact.title}\n </Text>\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {artifact.artifactType}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction DecisionsSection({\n decisions,\n}: {\n decisions: CodingAgentTaskDecisionRecord[];\n}) {\n return (\n <VStack gap={0}>\n <Divider label={`decisions (${decisions.length})`} />\n <List gap={0}>\n {decisions\n .slice(-6)\n .reverse()\n .map((decision) => (\n <HStack\n key={decision.id}\n gap={1}\n align=\"center\"\n agent={`decision-${decision.id}`}\n >\n <Text tone=\"primary\" wrap={false}>\n {decision.decision}\n </Text>\n <Text grow={1} wrap={false}>\n {clamp(decision.reasoning || decision.promptText, 100)}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n\nfunction EventsSection({ events }: { events: CodingAgentTaskEventRecord[] }) {\n return (\n <VStack gap={0}>\n <Divider label={`events (${events.length})`} />\n <List gap={0}>\n {events\n .slice(-6)\n .reverse()\n .map((event) => (\n <HStack\n key={event.id}\n gap={1}\n align=\"center\"\n agent={`event-${event.id}`}\n >\n <Text style=\"caption\" tone=\"muted\" wrap={false}>\n {event.eventType.replace(/_/g, \" \")}\n </Text>\n <Text style=\"caption\" grow={1} wrap={false}>\n {clamp(event.summary, 90)}\n </Text>\n </HStack>\n ))}\n </List>\n </VStack>\n );\n}\n","/**\n * TaskCoordinatorView — the single GUI/XR/TUI data wrapper for the Task\n * Coordinator surface.\n *\n * It owns the live coding-agent task data (the searchable thread list on a 5s\n * poll, the open thread's detail, and the archive/reopen mutations) and renders\n * the one presentational {@link TaskCoordinatorSpatialView} inside a\n * {@link SpatialSurface}. Omitting the `modality` prop lets `SpatialSurface`\n * auto-detect GUI vs XR via `window.__elizaXRContext`, so the SAME component\n * serves both surfaces. The TUI surface renders the same\n * `TaskCoordinatorSpatialView` through the terminal registry (see\n * `register-terminal-view.tsx`).\n *\n * The legacy GUI panel ({@link CodingAgentTasksPanel}) still mounts through the\n * app-core slot registry (the packages/ui Tasks page); this wrapper is the\n * cross-modality view-bundle surface. Each spatial affordance maps 1:1 to a\n * client method.\n */\n\nimport {\n ApiError,\n type CodingAgentTaskThread,\n type CodingAgentTaskThreadDetail,\n client,\n} from \"@elizaos/ui\";\nimport { SpatialSurface } from \"@elizaos/ui/spatial\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n type TaskCoordinatorSnapshot,\n TaskCoordinatorSpatialView,\n toTaskCoordinatorRow,\n} from \"./components/TaskCoordinatorSpatialView.tsx\";\n\nconst TASK_LIST_LIMIT = 30;\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function TaskCoordinatorView() {\n const [threads, setThreads] = useState<CodingAgentTaskThread[]>([]);\n const [selectedThreadId, setSelectedThreadId] = useState<string | null>(null);\n const [detail, setDetail] = useState<CodingAgentTaskThreadDetail | null>(null);\n const [showArchived, setShowArchived] = useState(false);\n const [search, setSearch] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n const refreshThreads = useCallback(\n async (silent = false) => {\n if (!silent) setLoading(true);\n try {\n const next = await client.listCodingAgentTaskThreads({\n includeArchived: showArchived,\n search: search.trim() || undefined,\n limit: TASK_LIST_LIMIT,\n });\n setThreads(next);\n setError(null);\n setSelectedThreadId((current) =>\n current && next.some((t) => t.id === current) ? current : current,\n );\n } catch (err) {\n // The task-thread endpoint is owned by the Node-only orchestrator and is\n // absent on mobile/web surfaces. A 404 there means \"no coding tasks\",\n // not a load failure — render the empty list instead of an error.\n if (err instanceof ApiError && err.status === 404) {\n setThreads([]);\n setError(null);\n return;\n }\n if (!silent) {\n setError(errorMessage(err));\n setThreads([]);\n }\n } finally {\n if (!silent) setLoading(false);\n }\n },\n [showArchived, search],\n );\n\n const loadDetail = useCallback(async (threadId: string) => {\n try {\n const next = await client.getCodingAgentTaskThread(threadId);\n setDetail(next);\n setError(null);\n } catch (err) {\n setError(errorMessage(err));\n setDetail(null);\n }\n }, []);\n\n // Load the thread list on mount + whenever the filters change, then keep it\n // fresh with a quiet 5s poll.\n const autoLoadedRef = useRef(false);\n useEffect(() => {\n autoLoadedRef.current = true;\n void refreshThreads(false);\n const interval = setInterval(() => {\n void refreshThreads(true);\n if (selectedThreadId) void loadDetail(selectedThreadId);\n }, 5_000);\n return () => clearInterval(interval);\n }, [refreshThreads, loadDetail, selectedThreadId]);\n\n // Load the open thread's detail whenever the selection changes.\n useEffect(() => {\n if (!selectedThreadId) {\n setDetail(null);\n return;\n }\n void loadDetail(selectedThreadId);\n }, [selectedThreadId, loadDetail]);\n\n const runMutation = useCallback(\n async (mutate: () => Promise<unknown>) => {\n try {\n await mutate();\n setSelectedThreadId(null);\n await refreshThreads(true);\n } catch (err) {\n setError(errorMessage(err));\n }\n },\n [refreshThreads],\n );\n\n const onAction = useCallback(\n (action: string) => {\n if (action.startsWith(\"open:\")) {\n setSelectedThreadId(action.slice(\"open:\".length));\n return;\n }\n if (action.startsWith(\"search:\")) {\n setSearch(action.slice(\"search:\".length));\n return;\n }\n switch (action) {\n case \"toggle-archived\":\n setShowArchived((value) => !value);\n return;\n case \"refresh\":\n void refreshThreads(false);\n return;\n case \"back\":\n setSelectedThreadId(null);\n return;\n case \"delete-thread\":\n if (selectedThreadId) {\n void runMutation(() =>\n client.archiveCodingAgentTaskThread(selectedThreadId),\n );\n }\n return;\n case \"reopen-thread\":\n if (selectedThreadId) {\n setShowArchived(false);\n void runMutation(() =>\n client.reopenCodingAgentTaskThread(selectedThreadId),\n );\n }\n return;\n }\n },\n [refreshThreads, runMutation, selectedThreadId],\n );\n\n const snapshot: TaskCoordinatorSnapshot = {\n threads: threads.map(toTaskCoordinatorRow),\n selectedThreadId,\n detail,\n showArchived,\n search,\n loading,\n error,\n };\n\n return (\n <SpatialSurface>\n <TaskCoordinatorSpatialView snapshot={snapshot} onAction={onAction} />\n </SpatialSurface>\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-task-coordinator",
|
|
3
|
-
"version": "2.0.3-beta.
|
|
3
|
+
"version": "2.0.3-beta.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@elizaos/core": "2.0.3-beta.
|
|
32
|
-
"@elizaos/plugin-
|
|
33
|
-
"@elizaos/shared": "2.0.3-beta.
|
|
34
|
-
"@elizaos/ui": "2.0.3-beta.
|
|
31
|
+
"@elizaos/core": "2.0.3-beta.3",
|
|
32
|
+
"@elizaos/plugin-commands": "2.0.3-beta.3",
|
|
33
|
+
"@elizaos/shared": "2.0.3-beta.3",
|
|
34
|
+
"@elizaos/ui": "2.0.3-beta.3",
|
|
35
35
|
"@xterm/addon-fit": "^0.10.0",
|
|
36
36
|
"@xterm/xterm": "^5.5.0",
|
|
37
37
|
"lucide-react": "^1.0.0",
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"types": "./dist/index.d.ts",
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build": "bun run build:js && bun run build:views && bun run build:types",
|
|
53
|
+
"typecheck": "tsc --noEmit -p tsconfig.build.json",
|
|
53
54
|
"clean": "rm -rf dist",
|
|
54
55
|
"build:js": "tsup --config ../tsup.plugin-packages.shared.ts",
|
|
55
56
|
"build:views": "bunx --bun vite build --config vite.config.views.ts",
|
|
@@ -66,5 +67,5 @@
|
|
|
66
67
|
"tsup": "^8.5.1",
|
|
67
68
|
"vite": "^8.0.0"
|
|
68
69
|
},
|
|
69
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "f54b0f4eaed317d59fa7dbcdce20f4cdb0734420"
|
|
70
71
|
}
|