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
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component } from '../utils/Component.js';
|
|
2
|
+
import { api } from '../services/ApiService.js';
|
|
3
|
+
|
|
4
|
+
const LEVEL_CLASSES = {
|
|
5
|
+
trace: 'log-trace',
|
|
6
|
+
debug: 'log-debug',
|
|
7
|
+
info: 'log-info',
|
|
8
|
+
warn: 'log-warn',
|
|
9
|
+
error: 'log-error',
|
|
10
|
+
fatal: 'log-fatal',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const MAX_VISIBLE_LINES = 2000;
|
|
14
|
+
|
|
15
|
+
export class LogViewer extends Component {
|
|
16
|
+
postRender() {
|
|
17
|
+
this._eventSource = null;
|
|
18
|
+
this._open = false;
|
|
19
|
+
this._autoScroll = true;
|
|
20
|
+
this._lineCount = 0;
|
|
21
|
+
|
|
22
|
+
this.querySelector('#log-toggle').addEventListener('click', () => this._toggle());
|
|
23
|
+
this.querySelector('#log-clear').addEventListener('click', (e) => { e.stopPropagation(); this._clear(); });
|
|
24
|
+
this.querySelector('#log-autoscroll').addEventListener('click', (e) => { e.stopPropagation(); this._toggleAutoScroll(); });
|
|
25
|
+
|
|
26
|
+
const body = this.querySelector('#log-body');
|
|
27
|
+
body.addEventListener('scroll', () => {
|
|
28
|
+
const atBottom = body.scrollHeight - body.scrollTop - body.clientHeight < 40;
|
|
29
|
+
if (this._autoScroll !== atBottom) {
|
|
30
|
+
this._autoScroll = atBottom;
|
|
31
|
+
this._updateAutoScrollBtn();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
disconnectedCallback() {
|
|
37
|
+
this._disconnect();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
_toggle() {
|
|
41
|
+
this._open = !this._open;
|
|
42
|
+
const panel = this.querySelector('#log-panel');
|
|
43
|
+
const chevron = this.querySelector('#log-chevron');
|
|
44
|
+
|
|
45
|
+
if (this._open) {
|
|
46
|
+
panel.classList.remove('log-panel-closed');
|
|
47
|
+
panel.classList.add('log-panel-open');
|
|
48
|
+
chevron.classList.add('log-chevron-open');
|
|
49
|
+
this._connect();
|
|
50
|
+
} else {
|
|
51
|
+
panel.classList.remove('log-panel-open');
|
|
52
|
+
panel.classList.add('log-panel-closed');
|
|
53
|
+
chevron.classList.remove('log-chevron-open');
|
|
54
|
+
this._disconnect();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
_connect() {
|
|
59
|
+
if (this._eventSource) return;
|
|
60
|
+
this._eventSource = api.streamLogs();
|
|
61
|
+
this._eventSource.onmessage = (e) => {
|
|
62
|
+
try {
|
|
63
|
+
const entry = JSON.parse(e.data);
|
|
64
|
+
this._appendLine(entry);
|
|
65
|
+
} catch { /* ignore malformed */ }
|
|
66
|
+
};
|
|
67
|
+
this._eventSource.onerror = () => {
|
|
68
|
+
// Reconnect is automatic with EventSource
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
_disconnect() {
|
|
73
|
+
if (this._eventSource) {
|
|
74
|
+
this._eventSource.close();
|
|
75
|
+
this._eventSource = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_appendLine(entry) {
|
|
80
|
+
const body = this.querySelector('#log-body');
|
|
81
|
+
if (!body) return;
|
|
82
|
+
|
|
83
|
+
const line = document.createElement('div');
|
|
84
|
+
line.className = `log-line ${LEVEL_CLASSES[entry.level] || ''}`;
|
|
85
|
+
|
|
86
|
+
const time = entry.timestamp ? new Date(entry.timestamp).toLocaleTimeString('en-GB', { hour12: false }) : '';
|
|
87
|
+
const lvl = (entry.level || '').toUpperCase().padEnd(5);
|
|
88
|
+
const comp = entry.component ? `[${entry.component}] ` : '';
|
|
89
|
+
|
|
90
|
+
line.textContent = `${time} ${lvl} ${comp}${entry.message}`;
|
|
91
|
+
body.appendChild(line);
|
|
92
|
+
this._lineCount++;
|
|
93
|
+
|
|
94
|
+
// Prune old lines to prevent memory bloat
|
|
95
|
+
if (this._lineCount > MAX_VISIBLE_LINES) {
|
|
96
|
+
const excess = this._lineCount - MAX_VISIBLE_LINES;
|
|
97
|
+
for (let i = 0; i < excess; i++) {
|
|
98
|
+
body.firstChild?.remove();
|
|
99
|
+
}
|
|
100
|
+
this._lineCount = MAX_VISIBLE_LINES;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (this._autoScroll) {
|
|
104
|
+
body.scrollTop = body.scrollHeight;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
_clear() {
|
|
110
|
+
const body = this.querySelector('#log-body');
|
|
111
|
+
if (body) body.innerHTML = '';
|
|
112
|
+
this._lineCount = 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
_toggleAutoScroll() {
|
|
116
|
+
this._autoScroll = !this._autoScroll;
|
|
117
|
+
this._updateAutoScrollBtn();
|
|
118
|
+
if (this._autoScroll) {
|
|
119
|
+
const body = this.querySelector('#log-body');
|
|
120
|
+
if (body) body.scrollTop = body.scrollHeight;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_updateAutoScrollBtn() {
|
|
125
|
+
const btn = this.querySelector('#log-autoscroll');
|
|
126
|
+
if (btn) {
|
|
127
|
+
btn.classList.toggle('log-autoscroll-active', this._autoScroll);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
template() {
|
|
132
|
+
return `
|
|
133
|
+
<div id="log-panel" class="log-panel log-panel-closed">
|
|
134
|
+
<div id="log-toggle" class="log-header">
|
|
135
|
+
<div class="log-header-left">
|
|
136
|
+
<i id="log-chevron" class="fas fa-chevron-up log-chevron"></i>
|
|
137
|
+
<i class="fas fa-terminal log-terminal-icon"></i>
|
|
138
|
+
<span class="log-title">Console</span>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="log-header-right">
|
|
141
|
+
<button id="log-autoscroll" class="log-btn log-autoscroll-active" title="Auto-scroll">
|
|
142
|
+
<i class="fas fa-angles-down"></i>
|
|
143
|
+
</button>
|
|
144
|
+
<button id="log-clear" class="log-btn" title="Clear">
|
|
145
|
+
<i class="fas fa-ban"></i>
|
|
146
|
+
</button>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
<div id="log-body" class="log-body"></div>
|
|
150
|
+
</div>
|
|
151
|
+
`;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
customElements.define('log-viewer', LogViewer);
|
|
@@ -16,7 +16,7 @@ export class McpView extends Component {
|
|
|
16
16
|
|
|
17
17
|
async loadContent() {
|
|
18
18
|
const container = this.querySelector('#listContainer');
|
|
19
|
-
container.innerHTML = '<div class="text-
|
|
19
|
+
container.innerHTML = '<div class="text-muted text-center py-4">Loading...</div>';
|
|
20
20
|
|
|
21
21
|
try {
|
|
22
22
|
if (this.source === 'mcp') {
|
|
@@ -27,14 +27,14 @@ export class McpView extends Component {
|
|
|
27
27
|
this.renderFunctions(functions);
|
|
28
28
|
}
|
|
29
29
|
} catch (e) {
|
|
30
|
-
container.innerHTML = `<div class="text-red
|
|
30
|
+
container.innerHTML = `<div class="text-red text-center">Error: ${e.message}</div>`;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
async renderServers(servers) {
|
|
35
35
|
const container = this.querySelector('#listContainer');
|
|
36
36
|
if (!servers.length) {
|
|
37
|
-
container.innerHTML = '<div class="text-
|
|
37
|
+
container.innerHTML = '<div class="text-muted text-center py-4">No servers configured</div>';
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -42,19 +42,18 @@ export class McpView extends Component {
|
|
|
42
42
|
|
|
43
43
|
for (const server of servers) {
|
|
44
44
|
const section = document.createElement('div');
|
|
45
|
-
section.className = '
|
|
45
|
+
section.className = 'mcp-accordion';
|
|
46
46
|
|
|
47
|
-
// Initial render without tools
|
|
48
47
|
section.innerHTML = `
|
|
49
|
-
<div class="
|
|
48
|
+
<div class="mcp-accordion-header" onclick="this.parentElement.querySelector('.tools-grid').classList.toggle('hidden'); this.querySelector('svg').classList.toggle('rotate-180')">
|
|
50
49
|
<div class="flex-1">
|
|
51
|
-
<div class="font-medium text-
|
|
52
|
-
<div class="text-xs text-
|
|
50
|
+
<div class="font-medium text-primary">${server.name}</div>
|
|
51
|
+
<div class="text-xs text-muted mt-1">${server.transport}</div>
|
|
53
52
|
</div>
|
|
54
|
-
<svg class="
|
|
53
|
+
<svg class="text-secondary transition-transform" width="20" height="20" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>
|
|
55
54
|
</div>
|
|
56
|
-
<div class="tools-grid hidden p-4 pt-
|
|
57
|
-
<div class="text-
|
|
55
|
+
<div class="tools-grid hidden p-4 pt-3 border-t">
|
|
56
|
+
<div class="text-muted text-sm py-2">Loading tools...</div>
|
|
58
57
|
</div>
|
|
59
58
|
`;
|
|
60
59
|
|
|
@@ -62,15 +61,15 @@ export class McpView extends Component {
|
|
|
62
61
|
api.getMCPTools(server.name).then(tools => {
|
|
63
62
|
const grid = section.querySelector('.tools-grid');
|
|
64
63
|
if (!tools.length) {
|
|
65
|
-
grid.innerHTML = '<div class="text-
|
|
64
|
+
grid.innerHTML = '<div class="text-muted text-sm py-2">No tools available</div>';
|
|
66
65
|
return;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
grid.innerHTML = `<div class="grid
|
|
68
|
+
grid.innerHTML = `<div class="grid-auto mt-3">
|
|
70
69
|
${tools.map(tool => `
|
|
71
|
-
<div class="tool-card
|
|
72
|
-
<div class="
|
|
73
|
-
<div class="text-xs text-
|
|
70
|
+
<div class="tool-card mcp-tool-card" data-server="${server.name}" data-tool='${JSON.stringify(tool).replace(/'/g, "'")}'>
|
|
71
|
+
<div class="tool-name">${tool.name}</div>
|
|
72
|
+
<div class="text-xs text-muted line-clamp-2">${tool.description || ''}</div>
|
|
74
73
|
</div>
|
|
75
74
|
`).join('')}
|
|
76
75
|
</div>`;
|
|
@@ -91,15 +90,15 @@ export class McpView extends Component {
|
|
|
91
90
|
renderFunctions(functions) {
|
|
92
91
|
const container = this.querySelector('#listContainer');
|
|
93
92
|
if (!functions.length) {
|
|
94
|
-
container.innerHTML = '<div class="text-
|
|
93
|
+
container.innerHTML = '<div class="text-muted text-center py-4">No functions available</div>';
|
|
95
94
|
return;
|
|
96
95
|
}
|
|
97
96
|
|
|
98
|
-
container.innerHTML = `<div class="grid
|
|
97
|
+
container.innerHTML = `<div class="grid-auto">
|
|
99
98
|
${functions.map(func => `
|
|
100
|
-
<div class="func-card
|
|
101
|
-
<div class="
|
|
102
|
-
<div class="text-xs text-
|
|
99
|
+
<div class="func-card mcp-tool-card" data-func='${JSON.stringify(func).replace(/'/g, "'")}'>
|
|
100
|
+
<div class="tool-name">${func.name}</div>
|
|
101
|
+
<div class="text-xs text-muted line-clamp-2">${func.description || ''}</div>
|
|
103
102
|
</div>
|
|
104
103
|
`).join('')}
|
|
105
104
|
</div>`;
|
|
@@ -138,8 +137,7 @@ export class McpView extends Component {
|
|
|
138
137
|
|
|
139
138
|
// Highlight
|
|
140
139
|
this.querySelectorAll('.tool-card, .func-card').forEach(el => {
|
|
141
|
-
el.classList.remove('
|
|
142
|
-
el.classList.add('border-dark-border');
|
|
140
|
+
el.classList.remove('active');
|
|
143
141
|
});
|
|
144
142
|
// (Visual highlight logic omitted for brevity as it requires complex matching)
|
|
145
143
|
}
|
|
@@ -281,20 +279,16 @@ export class McpView extends Component {
|
|
|
281
279
|
|
|
282
280
|
mcpBtn.addEventListener('click', () => {
|
|
283
281
|
this.source = 'mcp';
|
|
284
|
-
mcpBtn.classList.
|
|
285
|
-
|
|
286
|
-
funcBtn.classList.replace('bg-cyan-600', 'bg-dark-surface');
|
|
287
|
-
funcBtn.classList.replace('text-white', 'text-gray-400');
|
|
282
|
+
mcpBtn.classList.add('active');
|
|
283
|
+
funcBtn.classList.remove('active');
|
|
288
284
|
this.querySelector('#executionArea').classList.add('hidden');
|
|
289
285
|
this.loadContent();
|
|
290
286
|
});
|
|
291
287
|
|
|
292
288
|
funcBtn.addEventListener('click', () => {
|
|
293
289
|
this.source = 'functions';
|
|
294
|
-
funcBtn.classList.
|
|
295
|
-
|
|
296
|
-
mcpBtn.classList.replace('bg-cyan-600', 'bg-dark-surface');
|
|
297
|
-
mcpBtn.classList.replace('text-white', 'text-gray-400');
|
|
290
|
+
funcBtn.classList.add('active');
|
|
291
|
+
mcpBtn.classList.remove('active');
|
|
298
292
|
this.querySelector('#executionArea').classList.add('hidden');
|
|
299
293
|
this.loadContent();
|
|
300
294
|
});
|
|
@@ -316,7 +310,7 @@ export class McpView extends Component {
|
|
|
316
310
|
} catch (e) {
|
|
317
311
|
outputArea.classList.remove('hidden');
|
|
318
312
|
outputEl.textContent = 'Error: Invalid JSON arguments';
|
|
319
|
-
outputEl.classList.add('text-red
|
|
313
|
+
outputEl.classList.add('text-red');
|
|
320
314
|
return;
|
|
321
315
|
}
|
|
322
316
|
|
|
@@ -324,7 +318,7 @@ export class McpView extends Component {
|
|
|
324
318
|
btn.textContent = 'Executing...';
|
|
325
319
|
outputArea.classList.remove('hidden');
|
|
326
320
|
outputEl.textContent = 'Running...';
|
|
327
|
-
outputEl.classList.remove('text-red
|
|
321
|
+
outputEl.classList.remove('text-red');
|
|
328
322
|
|
|
329
323
|
try {
|
|
330
324
|
let result;
|
|
@@ -342,7 +336,7 @@ export class McpView extends Component {
|
|
|
342
336
|
outputEl.textContent = content;
|
|
343
337
|
} catch (e) {
|
|
344
338
|
outputEl.textContent = 'Error: ' + e.message;
|
|
345
|
-
outputEl.classList.add('text-red
|
|
339
|
+
outputEl.classList.add('text-red');
|
|
346
340
|
} finally {
|
|
347
341
|
btn.disabled = false;
|
|
348
342
|
btn.textContent = 'Execute';
|
|
@@ -351,32 +345,30 @@ export class McpView extends Component {
|
|
|
351
345
|
|
|
352
346
|
template() {
|
|
353
347
|
return `
|
|
354
|
-
<div class="space-y-6 h-full overflow-y-auto pb-
|
|
355
|
-
<div class="
|
|
356
|
-
<button id="mcpBtn" class="
|
|
357
|
-
<button id="funcBtn" class="
|
|
348
|
+
<div class="space-y-6 h-full overflow-y-auto pb-6 view-panel">
|
|
349
|
+
<div class="mcp-tabs">
|
|
350
|
+
<button id="mcpBtn" class="mcp-tab active">MCP Servers</button>
|
|
351
|
+
<button id="funcBtn" class="mcp-tab">Internal Functions</button>
|
|
358
352
|
</div>
|
|
359
353
|
|
|
360
354
|
<div id="listContainer"></div>
|
|
361
355
|
|
|
362
|
-
<div id="executionArea" class="hidden border-t
|
|
363
|
-
<div class="
|
|
364
|
-
<div class="font-medium text-
|
|
365
|
-
<div class="text-xs text-
|
|
356
|
+
<div id="executionArea" class="hidden border-t pt-4">
|
|
357
|
+
<div class="panel-dim mb-4">
|
|
358
|
+
<div class="font-medium text-accent" id="selectedName"></div>
|
|
359
|
+
<div class="text-xs text-muted mt-1" id="selectedDesc"></div>
|
|
366
360
|
</div>
|
|
367
361
|
|
|
368
362
|
<div class="mb-4">
|
|
369
|
-
<label class="block text-sm font-medium text-
|
|
370
|
-
<textarea id="argsInput" rows="6" class="
|
|
363
|
+
<label class="block text-sm font-medium text-primary mb-2">Arguments (JSON)</label>
|
|
364
|
+
<textarea id="argsInput" rows="6" class="textarea font-mono text-sm"></textarea>
|
|
371
365
|
</div>
|
|
372
366
|
|
|
373
|
-
<button id="executeBtn" class="
|
|
374
|
-
Execute
|
|
375
|
-
</button>
|
|
367
|
+
<button id="executeBtn" class="btn btn-accent">Execute</button>
|
|
376
368
|
|
|
377
369
|
<div id="outputArea" class="mt-4 hidden">
|
|
378
|
-
<label class="block text-sm font-medium text-
|
|
379
|
-
<div id="mcpOutput" class="
|
|
370
|
+
<label class="block text-sm font-medium text-primary mb-2">Output</label>
|
|
371
|
+
<div id="mcpOutput" class="llm-output"></div>
|
|
380
372
|
</div>
|
|
381
373
|
</div>
|
|
382
374
|
</div>
|