agent-orcha 0.0.7 → 0.0.8
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/README.md +86 -28
- package/dist/lib/agents/agent-executor.d.ts.map +1 -1
- package/dist/lib/agents/agent-executor.js +23 -7
- package/dist/lib/agents/agent-executor.js.map +1 -1
- package/dist/lib/agents/react-loop.d.ts.map +1 -1
- package/dist/lib/agents/react-loop.js +27 -0
- package/dist/lib/agents/react-loop.js.map +1 -1
- package/dist/lib/functions/simple-function-wrapper.js +3 -3
- package/dist/lib/functions/simple-function-wrapper.js.map +1 -1
- package/dist/lib/knowledge/knowledge-store.d.ts +1 -1
- package/dist/lib/knowledge/knowledge-store.d.ts.map +1 -1
- package/dist/lib/knowledge/knowledge-store.js +25 -4
- package/dist/lib/knowledge/knowledge-store.js.map +1 -1
- package/dist/lib/knowledge/loaders/file-loaders.d.ts +0 -1
- package/dist/lib/knowledge/loaders/file-loaders.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/file-loaders.js +7 -15
- package/dist/lib/knowledge/loaders/file-loaders.js.map +1 -1
- package/dist/lib/knowledge/sqlite-store.d.ts.map +1 -1
- package/dist/lib/knowledge/sqlite-store.js +19 -10
- package/dist/lib/knowledge/sqlite-store.js.map +1 -1
- package/dist/lib/knowledge/types.d.ts +13 -13
- package/dist/lib/llm/index.d.ts +1 -1
- package/dist/lib/llm/index.d.ts.map +1 -1
- package/dist/lib/llm/index.js +1 -1
- package/dist/lib/llm/index.js.map +1 -1
- package/dist/lib/llm/llm-config.d.ts +51 -8
- package/dist/lib/llm/llm-config.d.ts.map +1 -1
- package/dist/lib/llm/llm-config.js +161 -17
- package/dist/lib/llm/llm-config.js.map +1 -1
- package/dist/lib/llm/llm-factory.d.ts +1 -2
- package/dist/lib/llm/llm-factory.d.ts.map +1 -1
- package/dist/lib/llm/llm-factory.js +41 -8
- package/dist/lib/llm/llm-factory.js.map +1 -1
- package/dist/lib/llm/providers/openai-chat-model.d.ts +10 -0
- package/dist/lib/llm/providers/openai-chat-model.d.ts.map +1 -1
- package/dist/lib/llm/providers/openai-chat-model.js +37 -5
- package/dist/lib/llm/providers/openai-chat-model.js.map +1 -1
- package/dist/lib/llm/providers/openai-embeddings.d.ts.map +1 -1
- package/dist/lib/llm/providers/openai-embeddings.js +41 -10
- package/dist/lib/llm/providers/openai-embeddings.js.map +1 -1
- package/dist/lib/local-llm/binary-manager.d.ts +66 -0
- package/dist/lib/local-llm/binary-manager.d.ts.map +1 -0
- package/dist/lib/local-llm/binary-manager.js +441 -0
- package/dist/lib/local-llm/binary-manager.js.map +1 -0
- package/dist/lib/local-llm/engine-interface.d.ts +47 -0
- package/dist/lib/local-llm/engine-interface.d.ts.map +1 -0
- package/dist/lib/local-llm/engine-interface.js +2 -0
- package/dist/lib/local-llm/engine-interface.js.map +1 -0
- package/dist/lib/local-llm/engine-registry.d.ts +20 -0
- package/dist/lib/local-llm/engine-registry.d.ts.map +1 -0
- package/dist/lib/local-llm/engine-registry.js +56 -0
- package/dist/lib/local-llm/engine-registry.js.map +1 -0
- package/dist/lib/local-llm/engines/llama-cpp-engine.d.ts +31 -0
- package/dist/lib/local-llm/engines/llama-cpp-engine.d.ts.map +1 -0
- package/dist/lib/local-llm/engines/llama-cpp-engine.js +164 -0
- package/dist/lib/local-llm/engines/llama-cpp-engine.js.map +1 -0
- package/dist/lib/local-llm/engines/mlx-serve-engine.d.ts +31 -0
- package/dist/lib/local-llm/engines/mlx-serve-engine.d.ts.map +1 -0
- package/dist/lib/local-llm/engines/mlx-serve-engine.js +161 -0
- package/dist/lib/local-llm/engines/mlx-serve-engine.js.map +1 -0
- package/dist/lib/local-llm/gguf-reader.d.ts +20 -0
- package/dist/lib/local-llm/gguf-reader.d.ts.map +1 -0
- package/dist/lib/local-llm/gguf-reader.js +190 -0
- package/dist/lib/local-llm/gguf-reader.js.map +1 -0
- package/dist/lib/local-llm/index.d.ts +9 -0
- package/dist/lib/local-llm/index.d.ts.map +1 -0
- package/dist/lib/local-llm/index.js +6 -0
- package/dist/lib/local-llm/index.js.map +1 -0
- package/dist/lib/local-llm/llama-server-process.d.ts +42 -0
- package/dist/lib/local-llm/llama-server-process.d.ts.map +1 -0
- package/dist/lib/local-llm/llama-server-process.js +237 -0
- package/dist/lib/local-llm/llama-server-process.js.map +1 -0
- package/dist/lib/local-llm/mlx-binary-manager.d.ts +33 -0
- package/dist/lib/local-llm/mlx-binary-manager.d.ts.map +1 -0
- package/dist/lib/local-llm/mlx-binary-manager.js +211 -0
- package/dist/lib/local-llm/mlx-binary-manager.js.map +1 -0
- package/dist/lib/local-llm/mlx-server-process.d.ts +26 -0
- package/dist/lib/local-llm/mlx-server-process.d.ts.map +1 -0
- package/dist/lib/local-llm/mlx-server-process.js +210 -0
- package/dist/lib/local-llm/mlx-server-process.js.map +1 -0
- package/dist/lib/local-llm/model-manager.d.ts +33 -0
- package/dist/lib/local-llm/model-manager.d.ts.map +1 -0
- package/dist/lib/local-llm/model-manager.js +591 -0
- package/dist/lib/local-llm/model-manager.js.map +1 -0
- package/dist/lib/local-llm/types.d.ts +51 -0
- package/dist/lib/local-llm/types.d.ts.map +1 -0
- package/dist/lib/local-llm/types.js +2 -0
- package/dist/lib/local-llm/types.js.map +1 -0
- package/dist/lib/logger.d.ts +2 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +68 -5
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/orchestrator.d.ts +9 -0
- package/dist/lib/orchestrator.d.ts.map +1 -1
- package/dist/lib/orchestrator.js +151 -3
- package/dist/lib/orchestrator.js.map +1 -1
- package/dist/lib/sandbox/cdp-client.d.ts +2 -1
- package/dist/lib/sandbox/cdp-client.d.ts.map +1 -1
- package/dist/lib/sandbox/cdp-client.js +33 -7
- package/dist/lib/sandbox/cdp-client.js.map +1 -1
- package/dist/lib/sandbox/index.d.ts +1 -0
- package/dist/lib/sandbox/index.d.ts.map +1 -1
- package/dist/lib/sandbox/index.js +1 -0
- package/dist/lib/sandbox/index.js.map +1 -1
- package/dist/lib/sandbox/page-readiness.d.ts.map +1 -1
- package/dist/lib/sandbox/page-readiness.js +33 -0
- package/dist/lib/sandbox/page-readiness.js.map +1 -1
- package/dist/lib/sandbox/sandbox-browser.d.ts.map +1 -1
- package/dist/lib/sandbox/sandbox-browser.js +14 -1
- package/dist/lib/sandbox/sandbox-browser.js.map +1 -1
- package/dist/lib/sandbox/sandbox-container.d.ts +39 -0
- package/dist/lib/sandbox/sandbox-container.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-container.js +176 -0
- package/dist/lib/sandbox/sandbox-container.js.map +1 -0
- package/dist/lib/sandbox/sandbox-file.d.ts.map +1 -1
- package/dist/lib/sandbox/sandbox-file.js +5 -4
- package/dist/lib/sandbox/sandbox-file.js.map +1 -1
- package/dist/lib/sandbox/sandbox-shell.d.ts +2 -1
- package/dist/lib/sandbox/sandbox-shell.d.ts.map +1 -1
- package/dist/lib/sandbox/sandbox-shell.js +42 -24
- package/dist/lib/sandbox/sandbox-shell.js.map +1 -1
- package/dist/lib/sandbox/sandbox-web.d.ts.map +1 -1
- package/dist/lib/sandbox/sandbox-web.js +27 -2
- package/dist/lib/sandbox/sandbox-web.js.map +1 -1
- package/dist/lib/sandbox/vision-browser.d.ts.map +1 -1
- package/dist/lib/sandbox/vision-browser.js +9 -0
- package/dist/lib/sandbox/vision-browser.js.map +1 -1
- package/dist/lib/sea/app-window.d.ts +7 -0
- package/dist/lib/sea/app-window.d.ts.map +1 -0
- package/dist/lib/sea/app-window.js +95 -0
- package/dist/lib/sea/app-window.js.map +1 -0
- package/dist/lib/sea/bootstrap.d.ts +18 -0
- package/dist/lib/sea/bootstrap.d.ts.map +1 -0
- package/dist/lib/sea/bootstrap.js +103 -0
- package/dist/lib/sea/bootstrap.js.map +1 -0
- package/dist/lib/sea/sqlite-vec-shim.d.ts +3 -0
- package/dist/lib/sea/sqlite-vec-shim.d.ts.map +1 -0
- package/dist/lib/sea/sqlite-vec-shim.js +10 -0
- package/dist/lib/sea/sqlite-vec-shim.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts +1 -2
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js +7 -13
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js +2 -4
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-search.tool.js +4 -4
- package/dist/lib/tools/built-in/knowledge-search.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-sql.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-sql.tool.js +70 -37
- package/dist/lib/tools/built-in/knowledge-sql.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-tools-factory.js +2 -2
- package/dist/lib/tools/built-in/knowledge-tools-factory.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts +1 -2
- package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-traverse.tool.js +5 -11
- package/dist/lib/tools/built-in/knowledge-traverse.tool.js.map +1 -1
- package/dist/lib/tools/workspace/workspace-tools.d.ts.map +1 -1
- package/dist/lib/tools/workspace/workspace-tools.js +5 -4
- package/dist/lib/tools/workspace/workspace-tools.js.map +1 -1
- package/dist/lib/types/tool-factory.d.ts.map +1 -1
- package/dist/lib/types/tool-factory.js +9 -2
- package/dist/lib/types/tool-factory.js.map +1 -1
- package/dist/lib/utils/document-extract.d.ts +10 -0
- package/dist/lib/utils/document-extract.d.ts.map +1 -0
- package/dist/lib/utils/document-extract.js +149 -0
- package/dist/lib/utils/document-extract.js.map +1 -0
- package/dist/lib/workflows/react-workflow-executor.d.ts.map +1 -1
- package/dist/lib/workflows/react-workflow-executor.js +20 -14
- package/dist/lib/workflows/react-workflow-executor.js.map +1 -1
- package/dist/lib/workflows/types.d.ts +71 -45
- package/dist/lib/workflows/types.d.ts.map +1 -1
- package/dist/lib/workflows/types.js +10 -0
- package/dist/lib/workflows/types.js.map +1 -1
- package/dist/public/assets/logo.png +0 -0
- package/dist/public/chat.html +3 -78
- package/dist/public/index.html +3 -330
- package/dist/public/src/components/AgentComposer.js +132 -132
- package/dist/public/src/components/AgentsView.js +1231 -350
- package/dist/public/src/components/AppRoot.js +101 -39
- package/dist/public/src/components/GraphView.js +11 -13
- package/dist/public/src/components/IdeView.js +133 -98
- package/dist/public/src/components/KnowledgeView.js +94 -130
- package/dist/public/src/components/LlmView.js +15 -19
- package/dist/public/src/components/LocalLlmView.js +2440 -0
- package/dist/public/src/components/LogViewer.js +155 -0
- package/dist/public/src/components/McpView.js +41 -49
- package/dist/public/src/components/MonitorView.js +79 -126
- package/dist/public/src/components/NavBar.js +16 -26
- package/dist/public/src/components/StandaloneChat.js +136 -150
- package/dist/public/src/services/ApiService.js +196 -2
- package/dist/public/src/services/SessionStore.js +6 -3
- package/dist/public/src/services/StreamManager.js +183 -0
- package/dist/public/src/store.js +1 -1
- package/dist/public/src/utils/card.js +21 -0
- package/dist/public/src/utils/markdown.js +1 -7
- package/dist/public/styles.css +2777 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +7 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/start.d.ts.map +1 -1
- package/dist/src/cli/commands/start.js +28 -5
- package/dist/src/cli/commands/start.js.map +1 -1
- package/dist/src/cli/index.js +13 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/index.js +7 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/routes/agents.route.d.ts.map +1 -1
- package/dist/src/routes/agents.route.js +2 -0
- package/dist/src/routes/agents.route.js.map +1 -1
- package/dist/src/routes/chat.route.d.ts.map +1 -1
- package/dist/src/routes/chat.route.js +3 -2
- package/dist/src/routes/chat.route.js.map +1 -1
- package/dist/src/routes/llm.route.d.ts.map +1 -1
- package/dist/src/routes/llm.route.js +227 -7
- package/dist/src/routes/llm.route.js.map +1 -1
- package/dist/src/routes/local-llm.route.d.ts +3 -0
- package/dist/src/routes/local-llm.route.d.ts.map +1 -0
- package/dist/src/routes/local-llm.route.js +688 -0
- package/dist/src/routes/local-llm.route.js.map +1 -0
- package/dist/src/routes/logs.route.d.ts +3 -0
- package/dist/src/routes/logs.route.d.ts.map +1 -0
- package/dist/src/routes/logs.route.js +24 -0
- package/dist/src/routes/logs.route.js.map +1 -0
- package/dist/src/routes/vnc.route.d.ts +10 -1
- package/dist/src/routes/vnc.route.d.ts.map +1 -1
- package/dist/src/routes/vnc.route.js +37 -12
- package/dist/src/routes/vnc.route.js.map +1 -1
- package/dist/src/routes/workflows.route.d.ts.map +1 -1
- package/dist/src/routes/workflows.route.js +24 -0
- package/dist/src/routes/workflows.route.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +24 -2
- package/dist/src/server.js.map +1 -1
- package/dist/templates/agents/actor.agent.yaml +34 -0
- package/dist/templates/agents/architect.agent.yaml +0 -1
- package/dist/templates/agents/chatbot.agent.yaml +0 -1
- package/dist/templates/agents/corporate.agent.yaml +0 -1
- package/dist/templates/agents/functions.agent.yaml +29 -0
- package/dist/templates/agents/investment-analyst.agent.yaml +0 -1
- package/dist/templates/agents/music-librarian.agent.yaml +3 -27
- package/dist/templates/agents/network-security.agent.yaml +0 -1
- package/dist/templates/agents/transport-security.agent.yaml +0 -1
- package/dist/templates/agents/web-engineer.agent.yaml +3 -4
- package/dist/templates/agents/web-pilot.agent.yaml +0 -1
- package/dist/templates/knowledge/patient-records.knowledge.yaml +20 -0
- package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_0.pdf +0 -0
- package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_1.pdf +0 -0
- package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_10.pdf +0 -0
- package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_11.pdf +0 -0
- package/dist/templates/knowledge/web-docs.knowledge.yaml +1 -1
- package/dist/templates/llm.json +73 -10
- package/dist/templates/skills/orcha-builder/SKILL.md +56 -3
- package/dist/templates/workflows/example.workflow.yaml +27 -35
- package/dist/templates/workflows/react-example.workflow.yaml +14 -19
- package/dist/templates/workflows/team-chat.workflow.yaml +47 -0
- package/package.json +14 -6
- package/dist/public/src/components/SkillsView.js +0 -137
- package/dist/public/src/components/WorkflowsView.js +0 -568
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { Component } from '../utils/Component.js';
|
|
3
3
|
import { api } from '../services/ApiService.js';
|
|
4
|
+
import { escapeHtml as sharedEscapeHtml } from '../utils/card.js';
|
|
4
5
|
|
|
5
6
|
const STATUS_CONFIG = {
|
|
6
7
|
submitted: { label: 'Submitted', color: 'gray', icon: 'fa-clock' },
|
|
@@ -77,8 +78,8 @@ export class MonitorView extends Component {
|
|
|
77
78
|
|
|
78
79
|
if (!this.tasks.length) {
|
|
79
80
|
container.innerHTML = `
|
|
80
|
-
<div class="
|
|
81
|
-
<i class="fas fa-tasks text-4xl mb-4
|
|
81
|
+
<div class="empty-state">
|
|
82
|
+
<i class="fas fa-tasks text-4xl mb-4 text-muted"></i>
|
|
82
83
|
<p class="text-lg mb-2">No tasks found</p>
|
|
83
84
|
<p class="text-sm">Submit a task via the API to see it here.</p>
|
|
84
85
|
</div>`;
|
|
@@ -92,22 +93,21 @@ export class MonitorView extends Component {
|
|
|
92
93
|
const isSelected = this.selectedTask?.id === task.id;
|
|
93
94
|
const elapsed = this.formatElapsed(task);
|
|
94
95
|
return `
|
|
95
|
-
<div class="task-row ${isSelected ?
|
|
96
|
-
data-task-id="${task.id}">
|
|
96
|
+
<div class="task-row card ${isSelected ? 'active' : ''}" data-task-id="${task.id}">
|
|
97
97
|
<div class="flex items-center justify-between">
|
|
98
98
|
<div class="flex items-center gap-3 min-w-0">
|
|
99
|
-
<i class="fas ${cfg.icon} text-${cfg.color}
|
|
99
|
+
<i class="fas ${cfg.icon} text-${cfg.color} text-sm flex-shrink-0"></i>
|
|
100
100
|
<div class="min-w-0">
|
|
101
101
|
<div class="flex items-center gap-2">
|
|
102
|
-
<span class="font-medium text-
|
|
103
|
-
<span class="
|
|
102
|
+
<span class="font-medium text-primary truncate">${task.target}</span>
|
|
103
|
+
<span class="badge badge-${kindBadgeVariant(task.kind)}">${task.kind}</span>
|
|
104
104
|
</div>
|
|
105
|
-
<div class="text-xs text-
|
|
105
|
+
<div class="text-xs text-muted mt-1 truncate">${task.id}</div>
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
|
108
108
|
<div class="flex items-center gap-3 flex-shrink-0">
|
|
109
|
-
<span class="text-xs text-
|
|
110
|
-
<span class="
|
|
109
|
+
<span class="text-xs text-muted">${elapsed}</span>
|
|
110
|
+
<span class="badge badge-pill badge-${cfg.color}">${cfg.label}</span>
|
|
111
111
|
</div>
|
|
112
112
|
</div>
|
|
113
113
|
</div>`;
|
|
@@ -156,31 +156,19 @@ export class MonitorView extends Component {
|
|
|
156
156
|
this.querySelector('#detailHeader').innerHTML = `
|
|
157
157
|
<div>
|
|
158
158
|
<div class="flex items-center gap-2">
|
|
159
|
-
<i class="fas ${cfg.icon} text-${cfg.color}
|
|
160
|
-
<span class="font-medium text-
|
|
161
|
-
<span class="
|
|
159
|
+
<i class="fas ${cfg.icon} text-${cfg.color}"></i>
|
|
160
|
+
<span class="font-medium text-primary">${task.target}</span>
|
|
161
|
+
<span class="badge badge-pill badge-${cfg.color}">${cfg.label}</span>
|
|
162
162
|
</div>
|
|
163
|
-
<div class="text-xs text-
|
|
163
|
+
<div class="text-xs text-muted mt-1">${task.id}</div>
|
|
164
164
|
</div>`;
|
|
165
165
|
|
|
166
166
|
this.querySelector('#detailMeta').innerHTML = `
|
|
167
|
-
<div class="grid grid-cols-
|
|
168
|
-
<div>
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
</div>
|
|
172
|
-
<div>
|
|
173
|
-
<span class="text-gray-500 block text-xs">Created</span>
|
|
174
|
-
<span class="text-gray-300">${created}</span>
|
|
175
|
-
</div>
|
|
176
|
-
<div>
|
|
177
|
-
<span class="text-gray-500 block text-xs">Updated</span>
|
|
178
|
-
<span class="text-gray-300">${updated}</span>
|
|
179
|
-
</div>
|
|
180
|
-
<div>
|
|
181
|
-
<span class="text-gray-500 block text-xs">Completed</span>
|
|
182
|
-
<span class="text-gray-300">${completed}</span>
|
|
183
|
-
</div>
|
|
167
|
+
<div class="grid grid-cols-4 gap-4 text-sm">
|
|
168
|
+
<div><span class="text-muted block text-xs">Kind</span><span class="text-primary">${task.kind}</span></div>
|
|
169
|
+
<div><span class="text-muted block text-xs">Created</span><span class="text-primary">${created}</span></div>
|
|
170
|
+
<div><span class="text-muted block text-xs">Updated</span><span class="text-primary">${updated}</span></div>
|
|
171
|
+
<div><span class="text-muted block text-xs">Completed</span><span class="text-primary">${completed}</span></div>
|
|
184
172
|
</div>`;
|
|
185
173
|
|
|
186
174
|
// Metrics section (react-loop telemetry)
|
|
@@ -188,90 +176,63 @@ export class MonitorView extends Component {
|
|
|
188
176
|
if (task.metrics) {
|
|
189
177
|
const m = task.metrics;
|
|
190
178
|
metricsContainer.innerHTML = `
|
|
191
|
-
<div class="
|
|
179
|
+
<div class="panel-dim">
|
|
192
180
|
<div class="flex items-center gap-2 mb-3">
|
|
193
|
-
<i class="fas fa-chart-line text-
|
|
194
|
-
<span class="text-sm font-medium text-
|
|
181
|
+
<i class="fas fa-chart-line text-accent text-sm"></i>
|
|
182
|
+
<span class="text-sm font-medium text-secondary">React-Loop Metrics</span>
|
|
195
183
|
</div>
|
|
196
|
-
<div class="grid grid-cols-
|
|
197
|
-
<div>
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
</div>
|
|
201
|
-
<div>
|
|
202
|
-
|
|
203
|
-
<span class="text-gray-200 font-mono">${m.messageCount}</span>
|
|
204
|
-
</div>
|
|
205
|
-
<div>
|
|
206
|
-
<span class="text-gray-500 block text-xs">Images</span>
|
|
207
|
-
<span class="text-gray-200 font-mono">${m.imageCount}</span>
|
|
208
|
-
</div>
|
|
209
|
-
<div>
|
|
210
|
-
<span class="text-gray-500 block text-xs">Context Size</span>
|
|
211
|
-
<span class="text-gray-200 font-mono">${formatContextSize(m.contextChars)}</span>
|
|
212
|
-
</div>
|
|
213
|
-
<div>
|
|
214
|
-
<span class="text-gray-500 block text-xs">Input Tokens</span>
|
|
215
|
-
<span class="text-gray-200 font-mono">${m.inputTokens ? m.inputTokens.toLocaleString() : '-'}</span>
|
|
216
|
-
</div>
|
|
217
|
-
<div>
|
|
218
|
-
<span class="text-gray-500 block text-xs">Output Tokens</span>
|
|
219
|
-
<span class="text-gray-200 font-mono">${m.outputTokens ? m.outputTokens.toLocaleString() : '-'}</span>
|
|
220
|
-
</div>
|
|
184
|
+
<div class="grid grid-cols-6 gap-4 text-sm">
|
|
185
|
+
<div><span class="text-muted block text-xs">Iteration</span><span class="text-primary font-mono">${m.iteration}</span></div>
|
|
186
|
+
<div><span class="text-muted block text-xs">Messages</span><span class="text-primary font-mono">${m.messageCount}</span></div>
|
|
187
|
+
<div><span class="text-muted block text-xs">Images</span><span class="text-primary font-mono">${m.imageCount}</span></div>
|
|
188
|
+
<div><span class="text-muted block text-xs">Context Size</span><span class="text-primary font-mono">${formatContextSize(m.contextChars)}</span></div>
|
|
189
|
+
<div><span class="text-muted block text-xs">Input Tokens</span><span class="text-primary font-mono">${m.inputTokens ? m.inputTokens.toLocaleString() : '-'}</span></div>
|
|
190
|
+
<div><span class="text-muted block text-xs">Output Tokens</span><span class="text-primary font-mono">${m.outputTokens ? m.outputTokens.toLocaleString() : '-'}</span></div>
|
|
221
191
|
</div>
|
|
222
192
|
</div>`;
|
|
223
193
|
} else {
|
|
224
194
|
metricsContainer.innerHTML = '';
|
|
225
195
|
}
|
|
226
196
|
|
|
227
|
-
// Input section
|
|
228
197
|
this.querySelector('#detailInput').innerHTML = `
|
|
229
|
-
<details
|
|
230
|
-
<summary class="
|
|
231
|
-
<i class="fas fa-chevron-right text-xs mr-1
|
|
232
|
-
Input
|
|
198
|
+
<details>
|
|
199
|
+
<summary class="text-sm font-medium text-secondary">
|
|
200
|
+
<i class="fas fa-chevron-right text-xs mr-1 chevron-icon"></i> Input
|
|
233
201
|
</summary>
|
|
234
|
-
<pre class="mt-2
|
|
202
|
+
<pre class="mt-2 panel-sm text-xs text-primary overflow-x-auto">${escapeHtml(JSON.stringify(task.input, null, 2))}</pre>
|
|
235
203
|
</details>`;
|
|
236
204
|
|
|
237
|
-
// Result / Error section
|
|
238
205
|
const resultContainer = this.querySelector('#detailResult');
|
|
239
206
|
if (task.error) {
|
|
240
207
|
resultContainer.innerHTML = `
|
|
241
208
|
<div>
|
|
242
|
-
<span class="text-sm font-medium text-red
|
|
243
|
-
<pre class="
|
|
209
|
+
<span class="text-sm font-medium text-red block mb-2">Error</span>
|
|
210
|
+
<pre class="badge-outline-red rounded-lg p-3 text-xs overflow-x-auto">${escapeHtml(task.error)}</pre>
|
|
244
211
|
</div>`;
|
|
245
212
|
} else if (task.result) {
|
|
246
213
|
resultContainer.innerHTML = `
|
|
247
|
-
<details open
|
|
248
|
-
<summary class="
|
|
249
|
-
<i class="fas fa-chevron-right text-xs mr-1
|
|
250
|
-
Result
|
|
214
|
+
<details open>
|
|
215
|
+
<summary class="text-sm font-medium text-secondary">
|
|
216
|
+
<i class="fas fa-chevron-right text-xs mr-1 chevron-icon"></i> Result
|
|
251
217
|
</summary>
|
|
252
|
-
<pre class="mt-2
|
|
218
|
+
<pre class="mt-2 panel-sm text-xs text-primary overflow-x-auto overflow-y-auto monitor-scroll-panel">${escapeHtml(JSON.stringify(task.result, null, 2))}</pre>
|
|
253
219
|
</details>`;
|
|
254
220
|
} else {
|
|
255
|
-
resultContainer.innerHTML =
|
|
256
|
-
<div class="text-sm text-gray-500 italic">Awaiting result...</div>`;
|
|
221
|
+
resultContainer.innerHTML = `<div class="text-sm text-muted italic">Awaiting result...</div>`;
|
|
257
222
|
}
|
|
258
223
|
|
|
259
|
-
// Input-required section
|
|
260
224
|
const inputReqContainer = this.querySelector('#detailInputRequest');
|
|
261
225
|
if (task.status === 'input-required' && task.inputRequest) {
|
|
262
226
|
inputReqContainer.innerHTML = `
|
|
263
|
-
<div class="
|
|
227
|
+
<div class="interrupt-prompt">
|
|
264
228
|
<div class="flex items-center gap-2 mb-3">
|
|
265
|
-
<i class="fas fa-question-circle text-amber
|
|
266
|
-
<span class="text-sm font-medium text-amber
|
|
229
|
+
<i class="fas fa-question-circle text-amber"></i>
|
|
230
|
+
<span class="text-sm font-medium text-amber">Input Required</span>
|
|
267
231
|
</div>
|
|
268
|
-
<p class="text-sm text-
|
|
232
|
+
<p class="text-sm text-primary mb-3">${escapeHtml(task.inputRequest.question)}</p>
|
|
269
233
|
<div class="flex gap-2">
|
|
270
|
-
<input id="respondInput" type="text" placeholder="Type your response..."
|
|
271
|
-
|
|
272
|
-
<button id="respondBtn" class="px-4 py-2 bg-amber-500 hover:bg-amber-600 text-white text-sm font-medium rounded-lg transition-colors">
|
|
273
|
-
Send
|
|
274
|
-
</button>
|
|
234
|
+
<input id="respondInput" type="text" placeholder="Type your response..." class="input flex-1 text-sm" />
|
|
235
|
+
<button id="respondBtn" class="btn btn-accent btn-sm">Send</button>
|
|
275
236
|
</div>
|
|
276
237
|
</div>`;
|
|
277
238
|
this.querySelector('#respondBtn').addEventListener('click', () => this.handleRespond());
|
|
@@ -286,8 +247,8 @@ export class MonitorView extends Component {
|
|
|
286
247
|
const actionsContainer = this.querySelector('#detailActions');
|
|
287
248
|
if (['submitted', 'working', 'input-required'].includes(task.status)) {
|
|
288
249
|
actionsContainer.innerHTML = `
|
|
289
|
-
<button id="cancelBtn" class="
|
|
290
|
-
<i class="fas fa-ban
|
|
250
|
+
<button id="cancelBtn" class="btn btn-danger btn-sm">
|
|
251
|
+
<i class="fas fa-ban"></i> Cancel Task
|
|
291
252
|
</button>`;
|
|
292
253
|
this.querySelector('#cancelBtn').addEventListener('click', () => this.handleCancel());
|
|
293
254
|
} else {
|
|
@@ -311,9 +272,9 @@ export class MonitorView extends Component {
|
|
|
311
272
|
if (evt.type === 'tool_start') {
|
|
312
273
|
const inputStr = typeof evt.input === 'string' ? evt.input : JSON.stringify(evt.input ?? {});
|
|
313
274
|
const truncInput = inputStr.length > 120 ? inputStr.slice(0, 120) + '...' : inputStr;
|
|
314
|
-
return `<div class="
|
|
315
|
-
<span class="
|
|
316
|
-
<span class="text-xs"><i class="fas fa-play text-blue
|
|
275
|
+
return `<div class="monitor-event">
|
|
276
|
+
<span class="monitor-event-time">${time}</span>
|
|
277
|
+
<span class="text-xs"><i class="fas fa-play text-blue mr-1"></i><span class="text-blue-300 font-medium">${escapeHtml(evt.tool)}</span> <span class="text-muted">${escapeHtml(truncInput)}</span></span>
|
|
317
278
|
</div>`;
|
|
318
279
|
}
|
|
319
280
|
if (evt.type === 'tool_end') {
|
|
@@ -324,35 +285,35 @@ export class MonitorView extends Component {
|
|
|
324
285
|
outputStr = evt.output;
|
|
325
286
|
}
|
|
326
287
|
const truncOutput = outputStr.length > 200 ? outputStr.slice(0, 200) + '...' : outputStr;
|
|
327
|
-
return `<div class="
|
|
328
|
-
<span class="
|
|
329
|
-
<span class="text-xs"><i class="fas fa-check text-green
|
|
288
|
+
return `<div class="monitor-event">
|
|
289
|
+
<span class="monitor-event-time">${time}</span>
|
|
290
|
+
<span class="text-xs"><i class="fas fa-check text-green mr-1"></i><span class="text-green-300 font-medium">${escapeHtml(evt.tool)}</span> <span class="text-secondary">${escapeHtml(truncOutput)}</span></span>
|
|
330
291
|
</div>`;
|
|
331
292
|
}
|
|
332
293
|
if (evt.type === 'thinking') {
|
|
333
294
|
const truncContent = (evt.content || '').length > 200 ? evt.content.slice(0, 200) + '...' : evt.content;
|
|
334
|
-
return `<div class="
|
|
335
|
-
<span class="
|
|
336
|
-
<span class="text-xs"><i class="fas fa-brain text-purple
|
|
295
|
+
return `<div class="monitor-event">
|
|
296
|
+
<span class="monitor-event-time">${time}</span>
|
|
297
|
+
<span class="text-xs"><i class="fas fa-brain text-purple mr-1"></i><span class="text-purple-300">${escapeHtml(truncContent)}</span></span>
|
|
337
298
|
</div>`;
|
|
338
299
|
}
|
|
339
300
|
if (evt.type === 'content') {
|
|
340
301
|
const truncContent = (evt.content || '').length > 300 ? evt.content.slice(0, 300) + '...' : evt.content;
|
|
341
|
-
return `<div class="
|
|
342
|
-
<span class="
|
|
343
|
-
<span class="text-xs"><i class="fas fa-comment text-
|
|
302
|
+
return `<div class="monitor-event">
|
|
303
|
+
<span class="monitor-event-time">${time}</span>
|
|
304
|
+
<span class="text-xs"><i class="fas fa-comment text-secondary mr-1"></i><span class="text-primary">${escapeHtml(truncContent)}</span></span>
|
|
344
305
|
</div>`;
|
|
345
306
|
}
|
|
346
307
|
return '';
|
|
347
308
|
}).join('');
|
|
348
309
|
|
|
349
310
|
container.innerHTML = `
|
|
350
|
-
<details open
|
|
351
|
-
<summary class="
|
|
352
|
-
<i class="fas fa-chevron-right text-xs mr-1
|
|
311
|
+
<details open>
|
|
312
|
+
<summary class="text-sm font-medium text-secondary">
|
|
313
|
+
<i class="fas fa-chevron-right text-xs mr-1 chevron-icon"></i>
|
|
353
314
|
Activity (${events.length} events)
|
|
354
315
|
</summary>
|
|
355
|
-
<div class="mt-2
|
|
316
|
+
<div class="mt-2 panel-sm overflow-y-auto monitor-scroll-panel">
|
|
356
317
|
${rows}
|
|
357
318
|
</div>
|
|
358
319
|
</details>`;
|
|
@@ -449,20 +410,20 @@ export class MonitorView extends Component {
|
|
|
449
410
|
|
|
450
411
|
template() {
|
|
451
412
|
return `
|
|
452
|
-
<div class="space-y-6 h-full overflow-y-auto pb-
|
|
453
|
-
<div class="flex items-center justify-between border-b
|
|
413
|
+
<div class="space-y-6 h-full overflow-y-auto pb-6 view-panel">
|
|
414
|
+
<div class="flex items-center justify-between border-b pb-4">
|
|
454
415
|
<div>
|
|
455
|
-
<h2 class="text-lg font-semibold text-
|
|
456
|
-
<p class="text-xs text-
|
|
416
|
+
<h2 class="text-lg font-semibold text-primary">Monitor</h2>
|
|
417
|
+
<p class="text-xs text-muted mt-1">Track async task execution in real time</p>
|
|
457
418
|
</div>
|
|
458
419
|
<div class="flex items-center gap-3">
|
|
459
|
-
<select id="filterKind" class="
|
|
420
|
+
<select id="filterKind" class="select text-sm">
|
|
460
421
|
<option value="">All kinds</option>
|
|
461
422
|
<option value="agent">Agent</option>
|
|
462
423
|
<option value="workflow">Workflow</option>
|
|
463
424
|
<option value="llm">LLM</option>
|
|
464
425
|
</select>
|
|
465
|
-
<select id="filterStatus" class="
|
|
426
|
+
<select id="filterStatus" class="select text-sm">
|
|
466
427
|
<option value="">All statuses</option>
|
|
467
428
|
<option value="submitted">Submitted</option>
|
|
468
429
|
<option value="working">Working</option>
|
|
@@ -471,7 +432,7 @@ export class MonitorView extends Component {
|
|
|
471
432
|
<option value="canceled">Canceled</option>
|
|
472
433
|
<option value="input-required">Input Required</option>
|
|
473
434
|
</select>
|
|
474
|
-
<button id="refreshBtn" class="
|
|
435
|
+
<button id="refreshBtn" class="btn-ghost" title="Refresh">
|
|
475
436
|
<i class="fas fa-sync-alt text-sm"></i>
|
|
476
437
|
</button>
|
|
477
438
|
</div>
|
|
@@ -479,17 +440,15 @@ export class MonitorView extends Component {
|
|
|
479
440
|
|
|
480
441
|
<div id="tasksListContainer"></div>
|
|
481
442
|
|
|
482
|
-
<div id="taskDetailArea" class="hidden border-t
|
|
483
|
-
<div class="
|
|
443
|
+
<div id="taskDetailArea" class="hidden border-t pt-4 space-y-4">
|
|
444
|
+
<div class="panel-dim">
|
|
484
445
|
<div class="flex items-center justify-between">
|
|
485
446
|
<div id="detailHeader"></div>
|
|
486
|
-
<button id="closeDetailBtn" class="
|
|
487
|
-
<i class="fas fa-times"></i>
|
|
488
|
-
</button>
|
|
447
|
+
<button id="closeDetailBtn" class="btn-ghost"><i class="fas fa-times"></i></button>
|
|
489
448
|
</div>
|
|
490
449
|
</div>
|
|
491
450
|
|
|
492
|
-
<div id="detailMeta" class="
|
|
451
|
+
<div id="detailMeta" class="panel-dim"></div>
|
|
493
452
|
<div id="detailMetrics"></div>
|
|
494
453
|
<div id="detailInputRequest"></div>
|
|
495
454
|
<div id="detailInput"></div>
|
|
@@ -503,18 +462,12 @@ export class MonitorView extends Component {
|
|
|
503
462
|
}
|
|
504
463
|
|
|
505
464
|
function escapeHtml(str) {
|
|
506
|
-
|
|
507
|
-
div.textContent = str;
|
|
508
|
-
return div.innerHTML;
|
|
465
|
+
return sharedEscapeHtml(str);
|
|
509
466
|
}
|
|
510
467
|
|
|
511
|
-
function
|
|
512
|
-
const map = {
|
|
513
|
-
|
|
514
|
-
workflow: 'bg-purple-500/20 text-purple-400',
|
|
515
|
-
llm: 'bg-emerald-500/20 text-emerald-400',
|
|
516
|
-
};
|
|
517
|
-
return map[kind] || 'bg-gray-500/20 text-gray-400';
|
|
468
|
+
function kindBadgeVariant(kind) {
|
|
469
|
+
const map = { agent: 'blue', workflow: 'purple', llm: 'emerald' };
|
|
470
|
+
return map[kind] || 'gray';
|
|
518
471
|
}
|
|
519
472
|
|
|
520
473
|
function formatContextSize(chars) {
|
|
@@ -6,14 +6,13 @@ export class NavBar extends Component {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
8
8
|
this.tabs = [
|
|
9
|
-
{ id: 'agents', label: 'Agents', icon: 'fa-robot'
|
|
10
|
-
{ id: '
|
|
11
|
-
{ id: '
|
|
12
|
-
{ id: '
|
|
13
|
-
{ id: '
|
|
14
|
-
{ id: '
|
|
15
|
-
{ id: '
|
|
16
|
-
{ id: 'ide', label: 'IDE', icon: 'fa-code', color: 'green' }
|
|
9
|
+
{ id: 'agents', label: 'Agents', icon: 'fa-robot' },
|
|
10
|
+
{ id: 'knowledge', label: 'Knowledge', icon: 'fa-brain' },
|
|
11
|
+
{ id: 'graph', label: 'Graph', icon: 'fa-network-wired' },
|
|
12
|
+
{ id: 'mcp', label: 'MCP', icon: 'fa-server' },
|
|
13
|
+
{ id: 'monitor', label: 'Monitor', icon: 'fa-tasks' },
|
|
14
|
+
{ id: 'llm', label: 'LLM', icon: 'fa-microchip' },
|
|
15
|
+
{ id: 'ide', label: 'IDE', icon: 'fa-code' }
|
|
17
16
|
];
|
|
18
17
|
}
|
|
19
18
|
|
|
@@ -27,41 +26,32 @@ export class NavBar extends Component {
|
|
|
27
26
|
});
|
|
28
27
|
});
|
|
29
28
|
|
|
30
|
-
// Sync visual state when tab changes externally (browser back/forward)
|
|
31
29
|
store.addEventListener('state-change', (e) => {
|
|
32
30
|
if (e.detail.key === 'activeTab') {
|
|
33
31
|
this.updateActiveState(e.detail.value);
|
|
34
32
|
}
|
|
35
33
|
});
|
|
36
34
|
|
|
37
|
-
// Initialize state
|
|
38
35
|
this.updateActiveState(store.get('activeTab'));
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
updateActiveState(activeId) {
|
|
42
39
|
this.querySelectorAll('.tab-btn').forEach(btn => {
|
|
43
|
-
|
|
44
|
-
const color = btn.dataset.color;
|
|
45
|
-
const isActive = tabId === activeId;
|
|
46
|
-
|
|
47
|
-
if (isActive) {
|
|
48
|
-
btn.classList.add(`border-${color}-500`, `text-${color}-400`);
|
|
49
|
-
btn.classList.remove('border-transparent', 'text-gray-400', 'hover:text-gray-300');
|
|
50
|
-
} else {
|
|
51
|
-
btn.classList.remove(`border-${color}-500`, `text-${color}-400`);
|
|
52
|
-
btn.classList.add('border-transparent', 'text-gray-400', 'hover:text-gray-300');
|
|
53
|
-
}
|
|
40
|
+
btn.classList.toggle('active', btn.dataset.tab === activeId);
|
|
54
41
|
});
|
|
55
42
|
}
|
|
56
43
|
|
|
57
44
|
template() {
|
|
58
45
|
return `
|
|
59
|
-
<div class="
|
|
60
|
-
<
|
|
46
|
+
<div class="flex flex-col h-full">
|
|
47
|
+
<div class="sidebar-brand">
|
|
48
|
+
<img src="/assets/logo.png" alt="Agent Orcha" class="sidebar-logo">
|
|
49
|
+
<span>Agent Orcha</span>
|
|
50
|
+
</div>
|
|
51
|
+
<nav class="flex-1 overflow-y-auto">
|
|
61
52
|
${this.tabs.map(tab => `
|
|
62
|
-
<button class="tab-btn
|
|
63
|
-
|
|
64
|
-
<i class="fas ${tab.icon} text-sm group-hover:scale-110 transition-transform"></i>
|
|
53
|
+
<button class="tab-btn" data-tab="${tab.id}">
|
|
54
|
+
<i class="fas ${tab.icon} tab-icon"></i>
|
|
65
55
|
<span>${tab.label}</span>
|
|
66
56
|
</button>
|
|
67
57
|
`).join('')}
|