agent-orcha 0.0.4 → 0.0.5
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 +197 -221
- package/dist/lib/agents/agent-executor.d.ts +13 -4
- package/dist/lib/agents/agent-executor.d.ts.map +1 -1
- package/dist/lib/agents/agent-executor.js +307 -73
- package/dist/lib/agents/agent-executor.js.map +1 -1
- package/dist/lib/agents/agent-loader.d.ts +1 -1
- package/dist/lib/agents/agent-loader.d.ts.map +1 -1
- package/dist/lib/agents/agent-loader.js +10 -3
- package/dist/lib/agents/agent-loader.js.map +1 -1
- package/dist/lib/agents/index.d.ts +5 -5
- package/dist/lib/agents/index.js +4 -4
- package/dist/lib/agents/react-loop.d.ts +30 -0
- package/dist/lib/agents/react-loop.d.ts.map +1 -0
- package/dist/lib/agents/react-loop.js +155 -0
- package/dist/lib/agents/react-loop.js.map +1 -0
- package/dist/lib/agents/structured-output-wrapper.d.ts +3 -3
- package/dist/lib/agents/structured-output-wrapper.d.ts.map +1 -1
- package/dist/lib/agents/structured-output-wrapper.js +2 -2
- package/dist/lib/agents/structured-output-wrapper.js.map +1 -1
- package/dist/lib/agents/types.d.ts +132 -8
- package/dist/lib/agents/types.d.ts.map +1 -1
- package/dist/lib/agents/types.js +16 -2
- package/dist/lib/agents/types.js.map +1 -1
- package/dist/lib/functions/function-loader.d.ts +1 -1
- package/dist/lib/functions/function-loader.js +13 -5
- package/dist/lib/functions/function-loader.js.map +1 -1
- package/dist/lib/functions/index.d.ts +2 -2
- package/dist/lib/functions/index.js +1 -1
- package/dist/lib/functions/simple-function-wrapper.d.ts +2 -11
- package/dist/lib/functions/simple-function-wrapper.d.ts.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/index.d.ts +29 -17
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +21 -9
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/integrations/collabnook.d.ts +56 -0
- package/dist/lib/integrations/collabnook.d.ts.map +1 -0
- package/dist/lib/integrations/collabnook.js +307 -0
- package/dist/lib/integrations/collabnook.js.map +1 -0
- package/dist/lib/integrations/integration-manager.d.ts +14 -0
- package/dist/lib/integrations/integration-manager.d.ts.map +1 -0
- package/dist/lib/integrations/integration-manager.js +109 -0
- package/dist/lib/integrations/integration-manager.js.map +1 -0
- package/dist/lib/integrations/types.d.ts +49 -0
- package/dist/lib/integrations/types.d.ts.map +1 -0
- package/dist/lib/integrations/types.js +14 -0
- package/dist/lib/integrations/types.js.map +1 -0
- package/dist/lib/knowledge/direct-mapper.d.ts +21 -0
- package/dist/lib/knowledge/direct-mapper.d.ts.map +1 -0
- package/dist/lib/knowledge/direct-mapper.js +134 -0
- package/dist/lib/knowledge/direct-mapper.js.map +1 -0
- package/dist/lib/knowledge/index.d.ts +9 -8
- package/dist/lib/knowledge/index.d.ts.map +1 -1
- package/dist/lib/knowledge/index.js +9 -7
- package/dist/lib/knowledge/index.js.map +1 -1
- package/dist/lib/knowledge/knowledge-store-metadata.d.ts +40 -0
- package/dist/lib/knowledge/knowledge-store-metadata.d.ts.map +1 -0
- package/dist/lib/knowledge/knowledge-store-metadata.js +93 -0
- package/dist/lib/knowledge/knowledge-store-metadata.js.map +1 -0
- package/dist/lib/knowledge/knowledge-store.d.ts +43 -0
- package/dist/lib/knowledge/knowledge-store.d.ts.map +1 -0
- package/dist/lib/knowledge/knowledge-store.js +603 -0
- package/dist/lib/knowledge/knowledge-store.js.map +1 -0
- package/dist/lib/knowledge/loaders/database-loader.d.ts +5 -5
- package/dist/lib/knowledge/loaders/database-loader.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/database-loader.js +21 -10
- package/dist/lib/knowledge/loaders/database-loader.js.map +1 -1
- package/dist/lib/knowledge/loaders/file-loaders.d.ts +39 -0
- package/dist/lib/knowledge/loaders/file-loaders.d.ts.map +1 -0
- package/dist/lib/knowledge/loaders/file-loaders.js +131 -0
- package/dist/lib/knowledge/loaders/file-loaders.js.map +1 -0
- package/dist/lib/knowledge/loaders/index.d.ts +3 -3
- package/dist/lib/knowledge/loaders/index.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/index.js +3 -3
- package/dist/lib/knowledge/loaders/index.js.map +1 -1
- package/dist/lib/knowledge/loaders/web-loader.d.ts +2 -2
- package/dist/lib/knowledge/loaders/web-loader.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/web-loader.js +22 -21
- package/dist/lib/knowledge/loaders/web-loader.js.map +1 -1
- package/dist/lib/knowledge/sqlite-store.d.ts +107 -0
- package/dist/lib/knowledge/sqlite-store.d.ts.map +1 -0
- package/dist/lib/knowledge/sqlite-store.js +327 -0
- package/dist/lib/knowledge/sqlite-store.js.map +1 -0
- package/dist/lib/knowledge/types.d.ts +72 -1432
- package/dist/lib/knowledge/types.d.ts.map +1 -1
- package/dist/lib/knowledge/types.js +36 -57
- package/dist/lib/knowledge/types.js.map +1 -1
- package/dist/lib/knowledge/utils/connection-pool.d.ts +3 -2
- package/dist/lib/knowledge/utils/connection-pool.d.ts.map +1 -1
- package/dist/lib/knowledge/utils/connection-pool.js +20 -10
- package/dist/lib/knowledge/utils/connection-pool.js.map +1 -1
- package/dist/lib/knowledge/utils/index.d.ts +2 -2
- package/dist/lib/knowledge/utils/index.js +2 -2
- package/dist/lib/llm/index.d.ts +5 -5
- package/dist/lib/llm/index.d.ts.map +1 -1
- package/dist/lib/llm/index.js +3 -3
- package/dist/lib/llm/index.js.map +1 -1
- package/dist/lib/llm/llm-call-logger.d.ts +37 -0
- package/dist/lib/llm/llm-call-logger.d.ts.map +1 -0
- package/dist/lib/llm/llm-call-logger.js +105 -0
- package/dist/lib/llm/llm-call-logger.js.map +1 -0
- package/dist/lib/llm/llm-config.d.ts +22 -16
- package/dist/lib/llm/llm-config.d.ts.map +1 -1
- package/dist/lib/llm/llm-config.js +19 -3
- package/dist/lib/llm/llm-config.js.map +1 -1
- package/dist/lib/llm/llm-factory.d.ts +3 -16
- package/dist/lib/llm/llm-factory.d.ts.map +1 -1
- package/dist/lib/llm/llm-factory.js +30 -48
- package/dist/lib/llm/llm-factory.js.map +1 -1
- package/dist/lib/llm/provider-detector.d.ts +1 -1
- package/dist/lib/llm/providers/anthropic-chat-model.d.ts +27 -0
- package/dist/lib/llm/providers/anthropic-chat-model.d.ts.map +1 -0
- package/dist/lib/llm/providers/anthropic-chat-model.js +186 -0
- package/dist/lib/llm/providers/anthropic-chat-model.js.map +1 -0
- package/dist/lib/llm/providers/gemini-chat-model.d.ts +29 -0
- package/dist/lib/llm/providers/gemini-chat-model.d.ts.map +1 -0
- package/dist/lib/llm/providers/gemini-chat-model.js +241 -0
- package/dist/lib/llm/providers/gemini-chat-model.js.map +1 -0
- package/dist/lib/llm/providers/gemini-embeddings.d.ts +14 -0
- package/dist/lib/llm/providers/gemini-embeddings.d.ts.map +1 -0
- package/dist/lib/llm/providers/gemini-embeddings.js +20 -0
- package/dist/lib/llm/providers/gemini-embeddings.js.map +1 -0
- package/dist/lib/llm/providers/openai-chat-model.d.ts +30 -0
- package/dist/lib/llm/providers/openai-chat-model.d.ts.map +1 -0
- package/dist/lib/llm/providers/openai-chat-model.js +196 -0
- package/dist/lib/llm/providers/openai-chat-model.js.map +1 -0
- package/dist/lib/llm/providers/openai-embeddings.d.ts +17 -0
- package/dist/lib/llm/providers/openai-embeddings.d.ts.map +1 -0
- package/dist/lib/llm/providers/openai-embeddings.js +35 -0
- package/dist/lib/llm/providers/openai-embeddings.js.map +1 -0
- package/dist/lib/llm/types.d.ts +2 -2
- package/dist/lib/llm/types.js +1 -1
- package/dist/lib/logger.d.ts +7 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +43 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/mcp/index.d.ts +3 -3
- package/dist/lib/mcp/index.js +2 -2
- package/dist/lib/mcp/mcp-client.d.ts +3 -2
- package/dist/lib/mcp/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp/mcp-client.js +5 -2
- package/dist/lib/mcp/mcp-client.js.map +1 -1
- package/dist/lib/mcp/types.d.ts +33 -23
- package/dist/lib/mcp/types.d.ts.map +1 -1
- package/dist/lib/mcp/types.js +11 -2
- package/dist/lib/mcp/types.js.map +1 -1
- package/dist/lib/memory/conversation-store.d.ts +2 -2
- package/dist/lib/memory/conversation-store.d.ts.map +1 -1
- package/dist/lib/memory/conversation-store.js +1 -1
- package/dist/lib/memory/index.d.ts +3 -2
- package/dist/lib/memory/index.d.ts.map +1 -1
- package/dist/lib/memory/index.js +3 -2
- package/dist/lib/memory/index.js.map +1 -1
- package/dist/lib/memory/memory-manager.d.ts +9 -0
- package/dist/lib/memory/memory-manager.d.ts.map +1 -0
- package/dist/lib/memory/memory-manager.js +34 -0
- package/dist/lib/memory/memory-manager.js.map +1 -0
- package/dist/lib/memory/types.d.ts +1 -1
- package/dist/lib/memory/types.d.ts.map +1 -1
- package/dist/lib/orchestrator.d.ts +78 -18
- package/dist/lib/orchestrator.d.ts.map +1 -1
- package/dist/lib/orchestrator.js +247 -55
- package/dist/lib/orchestrator.js.map +1 -1
- package/dist/lib/sandbox/html-to-markdown.d.ts +2 -0
- package/dist/lib/sandbox/html-to-markdown.d.ts.map +1 -0
- package/dist/lib/sandbox/html-to-markdown.js +64 -0
- package/dist/lib/sandbox/html-to-markdown.js.map +1 -0
- package/dist/lib/sandbox/index.d.ts +7 -0
- package/dist/lib/sandbox/index.d.ts.map +1 -0
- package/dist/lib/sandbox/index.js +6 -0
- package/dist/lib/sandbox/index.js.map +1 -0
- package/dist/lib/sandbox/sandbox-exec.d.ts +5 -0
- package/dist/lib/sandbox/sandbox-exec.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-exec.js +35 -0
- package/dist/lib/sandbox/sandbox-exec.js.map +1 -0
- package/dist/lib/sandbox/sandbox-web.d.ts +5 -0
- package/dist/lib/sandbox/sandbox-web.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-web.js +211 -0
- package/dist/lib/sandbox/sandbox-web.js.map +1 -0
- package/dist/lib/sandbox/types.d.ts +21 -0
- package/dist/lib/sandbox/types.d.ts.map +1 -0
- package/dist/lib/sandbox/types.js +7 -0
- package/dist/lib/sandbox/types.js.map +1 -0
- package/dist/lib/sandbox/vm-executor.d.ts +12 -0
- package/dist/lib/sandbox/vm-executor.d.ts.map +1 -0
- package/dist/lib/sandbox/vm-executor.js +101 -0
- package/dist/lib/sandbox/vm-executor.js.map +1 -0
- package/dist/lib/skills/index.d.ts +4 -0
- package/dist/lib/skills/index.d.ts.map +1 -0
- package/dist/lib/skills/index.js +3 -0
- package/dist/lib/skills/index.js.map +1 -0
- package/dist/lib/skills/skill-loader.d.ts +19 -0
- package/dist/lib/skills/skill-loader.d.ts.map +1 -0
- package/dist/lib/skills/skill-loader.js +105 -0
- package/dist/lib/skills/skill-loader.js.map +1 -0
- package/dist/lib/skills/types.d.ts +17 -0
- package/dist/lib/skills/types.d.ts.map +1 -0
- package/dist/lib/skills/types.js +6 -0
- package/dist/lib/skills/types.js.map +1 -0
- package/dist/lib/tasks/index.d.ts +4 -0
- package/dist/lib/tasks/index.d.ts.map +1 -0
- package/dist/lib/tasks/index.js +4 -0
- package/dist/lib/tasks/index.js.map +1 -0
- package/dist/lib/tasks/task-manager.d.ts +25 -0
- package/dist/lib/tasks/task-manager.d.ts.map +1 -0
- package/dist/lib/tasks/task-manager.js +189 -0
- package/dist/lib/tasks/task-manager.js.map +1 -0
- package/dist/lib/tasks/task-store.d.ts +20 -0
- package/dist/lib/tasks/task-store.d.ts.map +1 -0
- package/dist/lib/tasks/task-store.js +102 -0
- package/dist/lib/tasks/task-store.js.map +1 -0
- package/dist/lib/tasks/types.d.ts +38 -0
- package/dist/lib/tasks/types.d.ts.map +1 -0
- package/dist/lib/tasks/types.js +2 -0
- package/dist/lib/tasks/types.js.map +1 -0
- package/dist/lib/templates/resource-templates.d.ts +6 -0
- package/dist/lib/templates/resource-templates.d.ts.map +1 -0
- package/dist/lib/templates/resource-templates.js +146 -0
- package/dist/lib/templates/resource-templates.js.map +1 -0
- package/dist/lib/tools/agent-tool-wrapper.d.ts +5 -5
- package/dist/lib/tools/agent-tool-wrapper.js +3 -3
- package/dist/lib/tools/agent-tool-wrapper.js.map +1 -1
- package/dist/lib/tools/built-in/ask-user.tool.d.ts +1 -1
- package/dist/lib/tools/built-in/ask-user.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/ask-user.tool.js +2 -2
- package/dist/lib/tools/built-in/ask-user.tool.js.map +1 -1
- package/dist/lib/tools/built-in/index.d.ts +9 -2
- package/dist/lib/tools/built-in/index.d.ts.map +1 -1
- package/dist/lib/tools/built-in/index.js +9 -2
- package/dist/lib/tools/built-in/index.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts +9 -0
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js +102 -0
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.d.ts +9 -0
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js +96 -0
- package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-search.tool.d.ts +2 -2
- package/dist/lib/tools/built-in/knowledge-search.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-search.tool.js +1 -1
- package/dist/lib/tools/built-in/knowledge-search.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-sql.tool.d.ts +7 -0
- package/dist/lib/tools/built-in/knowledge-sql.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/knowledge-sql.tool.js +127 -0
- package/dist/lib/tools/built-in/knowledge-sql.tool.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-tools-factory.d.ts +17 -0
- package/dist/lib/tools/built-in/knowledge-tools-factory.d.ts.map +1 -0
- package/dist/lib/tools/built-in/knowledge-tools-factory.js +54 -0
- package/dist/lib/tools/built-in/knowledge-tools-factory.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts +9 -0
- package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/knowledge-traverse.tool.js +91 -0
- package/dist/lib/tools/built-in/knowledge-traverse.tool.js.map +1 -0
- package/dist/lib/tools/built-in/memory-save.tool.d.ts +4 -0
- package/dist/lib/tools/built-in/memory-save.tool.d.ts.map +1 -0
- package/dist/lib/tools/built-in/memory-save.tool.js +21 -0
- package/dist/lib/tools/built-in/memory-save.tool.js.map +1 -0
- package/dist/lib/tools/built-in/query-validators.d.ts +18 -0
- package/dist/lib/tools/built-in/query-validators.d.ts.map +1 -0
- package/dist/lib/tools/built-in/query-validators.js +87 -0
- package/dist/lib/tools/built-in/query-validators.js.map +1 -0
- package/dist/lib/tools/index.d.ts +4 -4
- package/dist/lib/tools/index.js +4 -4
- package/dist/lib/tools/tool-discovery.d.ts +11 -33
- package/dist/lib/tools/tool-discovery.d.ts.map +1 -1
- package/dist/lib/tools/tool-discovery.js +16 -43
- package/dist/lib/tools/tool-discovery.js.map +1 -1
- package/dist/lib/tools/tool-registry.d.ts +10 -18
- package/dist/lib/tools/tool-registry.d.ts.map +1 -1
- package/dist/lib/tools/tool-registry.js +37 -23
- package/dist/lib/tools/tool-registry.js.map +1 -1
- package/dist/lib/tools/workspace/workspace-tools.d.ts +60 -0
- package/dist/lib/tools/workspace/workspace-tools.d.ts.map +1 -0
- package/dist/lib/tools/workspace/workspace-tools.js +140 -0
- package/dist/lib/tools/workspace/workspace-tools.js.map +1 -0
- package/dist/lib/triggers/cron-trigger.d.ts +12 -0
- package/dist/lib/triggers/cron-trigger.d.ts.map +1 -0
- package/dist/lib/triggers/cron-trigger.js +45 -0
- package/dist/lib/triggers/cron-trigger.js.map +1 -0
- package/dist/lib/triggers/index.d.ts +6 -0
- package/dist/lib/triggers/index.d.ts.map +1 -0
- package/dist/lib/triggers/index.js +5 -0
- package/dist/lib/triggers/index.js.map +1 -0
- package/dist/lib/triggers/trigger-manager.d.ts +11 -0
- package/dist/lib/triggers/trigger-manager.d.ts.map +1 -0
- package/dist/lib/triggers/trigger-manager.js +51 -0
- package/dist/lib/triggers/trigger-manager.js.map +1 -0
- package/dist/lib/triggers/types.d.ts +57 -0
- package/dist/lib/triggers/types.d.ts.map +1 -0
- package/dist/lib/triggers/types.js +16 -0
- package/dist/lib/triggers/types.js.map +1 -0
- package/dist/lib/triggers/webhook-trigger.d.ts +12 -0
- package/dist/lib/triggers/webhook-trigger.d.ts.map +1 -0
- package/dist/lib/triggers/webhook-trigger.js +34 -0
- package/dist/lib/triggers/webhook-trigger.js.map +1 -0
- package/dist/lib/types/llm-types.d.ts +54 -0
- package/dist/lib/types/llm-types.d.ts.map +1 -0
- package/dist/lib/types/llm-types.js +22 -0
- package/dist/lib/types/llm-types.js.map +1 -0
- package/dist/lib/types/text-splitters.d.ts +27 -0
- package/dist/lib/types/text-splitters.d.ts.map +1 -0
- package/dist/lib/types/text-splitters.js +114 -0
- package/dist/lib/types/text-splitters.js.map +1 -0
- package/dist/lib/types/tool-factory.d.ts +9 -0
- package/dist/lib/types/tool-factory.d.ts.map +1 -0
- package/dist/lib/types/tool-factory.js +12 -0
- package/dist/lib/types/tool-factory.js.map +1 -0
- package/dist/lib/utils/file-utils.d.ts +11 -0
- package/dist/lib/utils/file-utils.d.ts.map +1 -0
- package/dist/lib/utils/file-utils.js +86 -0
- package/dist/lib/utils/file-utils.js.map +1 -0
- package/dist/lib/workflows/index.d.ts +6 -6
- package/dist/lib/workflows/index.d.ts.map +1 -1
- package/dist/lib/workflows/index.js +5 -5
- package/dist/lib/workflows/index.js.map +1 -1
- package/dist/lib/workflows/interrupt-manager.d.ts +1 -1
- package/dist/lib/workflows/interrupt-manager.js +1 -1
- package/dist/lib/workflows/react-workflow-executor.d.ts +26 -0
- package/dist/lib/workflows/react-workflow-executor.d.ts.map +1 -0
- package/dist/lib/workflows/react-workflow-executor.js +333 -0
- package/dist/lib/workflows/react-workflow-executor.js.map +1 -0
- package/dist/lib/workflows/types.d.ts +96 -97
- package/dist/lib/workflows/types.d.ts.map +1 -1
- package/dist/lib/workflows/types.js +5 -5
- package/dist/lib/workflows/types.js.map +1 -1
- package/dist/lib/workflows/workflow-executor.d.ts +3 -3
- package/dist/lib/workflows/workflow-executor.js +2 -2
- package/dist/lib/workflows/workflow-executor.js.map +1 -1
- package/dist/lib/workflows/workflow-loader.d.ts +1 -1
- package/dist/lib/workflows/workflow-loader.d.ts.map +1 -1
- package/dist/lib/workflows/workflow-loader.js +10 -3
- package/dist/lib/workflows/workflow-loader.js.map +1 -1
- package/dist/public/index.html +32 -0
- package/dist/public/src/components/AgentsView.js +298 -44
- package/dist/public/src/components/AppRoot.js +124 -4
- package/dist/public/src/components/GraphView.js +336 -0
- package/dist/public/src/components/IdeView.js +462 -7
- package/dist/public/src/components/KnowledgeView.js +443 -66
- package/dist/public/src/components/MonitorView.js +388 -0
- package/dist/public/src/components/NavBar.js +3 -0
- package/dist/public/src/components/SkillsView.js +137 -0
- package/dist/public/src/components/WorkflowsView.js +287 -114
- package/dist/public/src/services/ApiService.js +165 -25
- package/dist/public/src/store.js +3 -2
- package/dist/public/src/utils/markdown.js +1 -0
- package/dist/src/cli/commands/init.js +2 -2
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/start.d.ts +0 -1
- package/dist/src/cli/commands/start.d.ts.map +1 -1
- package/dist/src/cli/commands/start.js +23 -14
- package/dist/src/cli/commands/start.js.map +1 -1
- package/dist/src/cli/index.js +3 -3
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +23 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +3 -0
- package/dist/src/middleware/auth.d.ts.map +1 -0
- package/dist/src/middleware/auth.js +107 -0
- package/dist/src/middleware/auth.js.map +1 -0
- package/dist/src/routes/agents.route.d.ts.map +1 -1
- package/dist/src/routes/agents.route.js +31 -2
- package/dist/src/routes/agents.route.js.map +1 -1
- package/dist/src/routes/files.route.d.ts.map +1 -1
- package/dist/src/routes/files.route.js +128 -87
- package/dist/src/routes/files.route.js.map +1 -1
- package/dist/src/routes/functions.route.js +1 -1
- package/dist/src/routes/graph.route.d.ts +3 -0
- package/dist/src/routes/graph.route.d.ts.map +1 -0
- package/dist/src/routes/graph.route.js +173 -0
- package/dist/src/routes/graph.route.js.map +1 -0
- package/dist/src/routes/knowledge.route.d.ts.map +1 -1
- package/dist/src/routes/knowledge.route.js +172 -69
- package/dist/src/routes/knowledge.route.js.map +1 -1
- package/dist/src/routes/llm.route.d.ts.map +1 -1
- package/dist/src/routes/llm.route.js +48 -7
- package/dist/src/routes/llm.route.js.map +1 -1
- package/dist/src/routes/mcp.route.js +1 -1
- package/dist/src/routes/skills.route.d.ts +3 -0
- package/dist/src/routes/skills.route.d.ts.map +1 -0
- package/dist/src/routes/skills.route.js +23 -0
- package/dist/src/routes/skills.route.js.map +1 -0
- package/dist/src/routes/tasks.route.d.ts +3 -0
- package/dist/src/routes/tasks.route.d.ts.map +1 -0
- package/dist/src/routes/tasks.route.js +135 -0
- package/dist/src/routes/tasks.route.js.map +1 -0
- package/dist/src/routes/workflows.route.d.ts.map +1 -1
- package/dist/src/routes/workflows.route.js +9 -1
- package/dist/src/routes/workflows.route.js.map +1 -1
- package/dist/src/server.d.ts +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +21 -8
- package/dist/src/server.js.map +1 -1
- package/dist/templates/.env.example +4 -19
- package/dist/templates/README.md +18 -10
- package/dist/templates/agents/architect.agent.yaml +49 -0
- package/dist/templates/agents/chatbot.agent.yaml +58 -0
- package/dist/templates/agents/knowledge-broker.agent.yaml +39 -0
- package/dist/templates/agents/sandbox.agent.yaml +56 -0
- package/dist/templates/knowledge/example.knowledge.yaml +0 -3
- package/dist/templates/knowledge/org-chart/personnel.csv +21 -0
- package/dist/templates/knowledge/org-chart.knowledge.yaml +49 -0
- package/dist/templates/knowledge/pet-store/pet-store.db +0 -0
- package/dist/templates/knowledge/pet-store.knowledge.yaml +78 -0
- package/dist/templates/knowledge/web-docs.knowledge.yaml +20 -0
- package/dist/templates/llm.json +2 -2
- package/dist/templates/mcp.json +3 -0
- package/dist/templates/skills/orcha-builder/SKILL.md +339 -0
- package/dist/templates/skills/sandbox/SKILL.md +63 -0
- package/dist/templates/workflows/example.workflow.yaml +25 -30
- package/dist/templates/workflows/react-example.workflow.yaml +53 -0
- package/package.json +17 -20
- package/dist/lib/knowledge/graph-rag/community-detector.d.ts +0 -16
- package/dist/lib/knowledge/graph-rag/community-detector.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/community-detector.js +0 -81
- package/dist/lib/knowledge/graph-rag/community-detector.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts +0 -17
- package/dist/lib/knowledge/graph-rag/community-summarizer.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/community-summarizer.js +0 -87
- package/dist/lib/knowledge/graph-rag/community-summarizer.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts +0 -36
- package/dist/lib/knowledge/graph-rag/entity-extractor.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/entity-extractor.js +0 -192
- package/dist/lib/knowledge/graph-rag/entity-extractor.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts +0 -30
- package/dist/lib/knowledge/graph-rag/extraction-cache.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/extraction-cache.js +0 -88
- package/dist/lib/knowledge/graph-rag/extraction-cache.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/global-search.d.ts +0 -19
- package/dist/lib/knowledge/graph-rag/global-search.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/global-search.js +0 -96
- package/dist/lib/knowledge/graph-rag/global-search.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts +0 -24
- package/dist/lib/knowledge/graph-rag/graph-rag-factory.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/graph-rag-factory.js +0 -239
- package/dist/lib/knowledge/graph-rag/graph-rag-factory.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/index.d.ts +0 -14
- package/dist/lib/knowledge/graph-rag/index.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/index.js +0 -12
- package/dist/lib/knowledge/graph-rag/index.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/local-search.d.ts +0 -20
- package/dist/lib/knowledge/graph-rag/local-search.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/local-search.js +0 -110
- package/dist/lib/knowledge/graph-rag/local-search.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts +0 -31
- package/dist/lib/knowledge/graph-rag/memory-graph-store.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/memory-graph-store.js +0 -165
- package/dist/lib/knowledge/graph-rag/memory-graph-store.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts +0 -38
- package/dist/lib/knowledge/graph-rag/neo4j-graph-store.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js +0 -190
- package/dist/lib/knowledge/graph-rag/neo4j-graph-store.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts +0 -11
- package/dist/lib/knowledge/graph-rag/search-mode-detector.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/search-mode-detector.js +0 -50
- package/dist/lib/knowledge/graph-rag/search-mode-detector.js.map +0 -1
- package/dist/lib/knowledge/graph-rag/types.d.ts +0 -368
- package/dist/lib/knowledge/graph-rag/types.d.ts.map +0 -1
- package/dist/lib/knowledge/graph-rag/types.js +0 -48
- package/dist/lib/knowledge/graph-rag/types.js.map +0 -1
- package/dist/lib/knowledge/knowledge-store-factory.d.ts +0 -16
- package/dist/lib/knowledge/knowledge-store-factory.d.ts.map +0 -1
- package/dist/lib/knowledge/knowledge-store-factory.js +0 -376
- package/dist/lib/knowledge/knowledge-store-factory.js.map +0 -1
- package/dist/lib/knowledge/knowledge-store-manager.d.ts +0 -18
- package/dist/lib/knowledge/knowledge-store-manager.d.ts.map +0 -1
- package/dist/lib/knowledge/knowledge-store-manager.js +0 -98
- package/dist/lib/knowledge/knowledge-store-manager.js.map +0 -1
- package/dist/lib/knowledge/loaders/s3-loader.d.ts +0 -17
- package/dist/lib/knowledge/loaders/s3-loader.d.ts.map +0 -1
- package/dist/lib/knowledge/loaders/s3-loader.js +0 -185
- package/dist/lib/knowledge/loaders/s3-loader.js.map +0 -1
- package/dist/lib/workflows/langgraph-executor.d.ts +0 -51
- package/dist/lib/workflows/langgraph-executor.d.ts.map +0 -1
- package/dist/lib/workflows/langgraph-executor.js +0 -297
- package/dist/lib/workflows/langgraph-executor.js.map +0 -1
- package/dist/templates/agents/call-center-analyst-simple.agent.yaml +0 -36
- package/dist/templates/agents/math.agent.yaml +0 -28
- package/dist/templates/agents/sentiment-structured.agent.yaml +0 -42
- package/dist/templates/llm.md +0 -1195
- package/dist/templates/workflows/langgraph-example.workflow.yaml +0 -84
|
@@ -8,6 +8,10 @@ export class AgentsView extends Component {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super();
|
|
10
10
|
this.isLoading = false;
|
|
11
|
+
this.currentAbortController = null;
|
|
12
|
+
this.streamStartTime = null;
|
|
13
|
+
this.streamTimerInterval = null;
|
|
14
|
+
this.streamUsageData = null;
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
async connectedCallback() {
|
|
@@ -15,6 +19,100 @@ export class AgentsView extends Component {
|
|
|
15
19
|
await Promise.all([this.loadAgents(), this.loadLLMs()]);
|
|
16
20
|
}
|
|
17
21
|
|
|
22
|
+
disconnectedCallback() {
|
|
23
|
+
this.stopStreamTimer();
|
|
24
|
+
if (this.currentAbortController) {
|
|
25
|
+
this.currentAbortController.abort();
|
|
26
|
+
this.currentAbortController = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
formatElapsedTime(ms) {
|
|
31
|
+
if (ms < 1000) return `${ms}ms`;
|
|
32
|
+
const seconds = ms / 1000;
|
|
33
|
+
if (seconds < 60) return `${seconds.toFixed(1)}s`;
|
|
34
|
+
const minutes = Math.floor(seconds / 60);
|
|
35
|
+
const remainingSeconds = (seconds % 60).toFixed(0);
|
|
36
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
estimateTokens(text) {
|
|
40
|
+
return Math.round((text || '').length / 4);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
cancelCurrentStream() {
|
|
44
|
+
if (this.currentAbortController) {
|
|
45
|
+
this.currentAbortController.abort();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
startStreamTimer(responseId) {
|
|
50
|
+
this.streamStartTime = Date.now();
|
|
51
|
+
this.streamTimerInterval = setInterval(() => {
|
|
52
|
+
const elapsed = Date.now() - this.streamStartTime;
|
|
53
|
+
const bubble = this.querySelector(`#${responseId}`);
|
|
54
|
+
if (!bubble) return;
|
|
55
|
+
const timerEl = bubble.parentElement.querySelector('.stream-elapsed');
|
|
56
|
+
if (timerEl) {
|
|
57
|
+
timerEl.textContent = this.formatElapsedTime(elapsed);
|
|
58
|
+
}
|
|
59
|
+
}, 100);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
stopStreamTimer(responseId, inputMessage, finalContent, wasCancelled) {
|
|
63
|
+
if (this.streamTimerInterval) {
|
|
64
|
+
clearInterval(this.streamTimerInterval);
|
|
65
|
+
this.streamTimerInterval = null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const elapsed = this.streamStartTime ? Date.now() - this.streamStartTime : 0;
|
|
69
|
+
this.streamStartTime = null;
|
|
70
|
+
|
|
71
|
+
const bubble = this.querySelector(`#${responseId}`);
|
|
72
|
+
if (!bubble) return;
|
|
73
|
+
|
|
74
|
+
const wrapper = bubble.parentElement;
|
|
75
|
+
const statusBar = wrapper.querySelector('.stream-status-bar');
|
|
76
|
+
const statsBar = wrapper.querySelector('.stream-stats-bar');
|
|
77
|
+
|
|
78
|
+
if (statusBar) statusBar.classList.add('hidden');
|
|
79
|
+
|
|
80
|
+
if (statsBar) {
|
|
81
|
+
const elapsedEl = statsBar.querySelector('.stats-elapsed');
|
|
82
|
+
const inputTokensEl = statsBar.querySelector('.stats-input-tokens');
|
|
83
|
+
const outputTokensEl = statsBar.querySelector('.stats-output-tokens');
|
|
84
|
+
const tpsEl = statsBar.querySelector('.stats-tps');
|
|
85
|
+
|
|
86
|
+
const usage = this.streamUsageData;
|
|
87
|
+
const hasRealUsage = usage && (usage.input_tokens > 0 || usage.output_tokens > 0);
|
|
88
|
+
|
|
89
|
+
const inputTokens = hasRealUsage ? usage.input_tokens : this.estimateTokens(inputMessage);
|
|
90
|
+
const outputTokens = hasRealUsage ? usage.output_tokens : this.estimateTokens(finalContent);
|
|
91
|
+
const prefix = hasRealUsage ? '' : '~';
|
|
92
|
+
|
|
93
|
+
if (elapsedEl) elapsedEl.textContent = this.formatElapsedTime(elapsed);
|
|
94
|
+
if (inputTokensEl) inputTokensEl.textContent = `${prefix}${inputTokens} input`;
|
|
95
|
+
if (outputTokensEl) outputTokensEl.textContent = `${prefix}${outputTokens} output`;
|
|
96
|
+
|
|
97
|
+
if (tpsEl) {
|
|
98
|
+
const seconds = elapsed / 1000;
|
|
99
|
+
const tps = seconds > 0 ? (outputTokens / seconds).toFixed(1) : 0;
|
|
100
|
+
tpsEl.textContent = `${prefix}${tps} tok/s`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
this.streamUsageData = null;
|
|
104
|
+
|
|
105
|
+
if (wasCancelled) {
|
|
106
|
+
const cancelBadge = document.createElement('span');
|
|
107
|
+
cancelBadge.className = 'text-xs text-amber-400 font-medium ml-2';
|
|
108
|
+
cancelBadge.textContent = 'Cancelled';
|
|
109
|
+
statsBar.appendChild(cancelBadge);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
statsBar.classList.remove('hidden');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
18
116
|
async loadAgents() {
|
|
19
117
|
try {
|
|
20
118
|
const agents = await api.getAgents();
|
|
@@ -189,15 +287,28 @@ export class AgentsView extends Component {
|
|
|
189
287
|
const responseId = 'response-' + Date.now();
|
|
190
288
|
this.createResponseBubble(responseId);
|
|
191
289
|
|
|
290
|
+
this.currentAbortController = new AbortController();
|
|
291
|
+
this.streamUsageData = null;
|
|
292
|
+
this.startStreamTimer(responseId);
|
|
293
|
+
|
|
294
|
+
let finalContent = '';
|
|
295
|
+
let wasCancelled = false;
|
|
296
|
+
|
|
192
297
|
try {
|
|
193
298
|
if (selectionType === 'agent') {
|
|
194
|
-
await this.sendAgentMessage(agent, message, responseId);
|
|
299
|
+
finalContent = await this.sendAgentMessage(agent, message, responseId);
|
|
195
300
|
} else if (selectionType === 'llm') {
|
|
196
|
-
await this.sendLlmMessage(llm, message, responseId);
|
|
301
|
+
finalContent = await this.sendLlmMessage(llm, message, responseId);
|
|
197
302
|
}
|
|
198
303
|
} catch (e) {
|
|
199
|
-
|
|
304
|
+
if (e.name === 'AbortError') {
|
|
305
|
+
wasCancelled = true;
|
|
306
|
+
} else {
|
|
307
|
+
this.updateResponseError(responseId, `Error: ${e.message}`);
|
|
308
|
+
}
|
|
200
309
|
} finally {
|
|
310
|
+
this.stopStreamTimer(responseId, message, finalContent, wasCancelled);
|
|
311
|
+
this.currentAbortController = null;
|
|
201
312
|
this.isLoading = false;
|
|
202
313
|
this.updateUiState();
|
|
203
314
|
input.focus();
|
|
@@ -209,7 +320,7 @@ export class AgentsView extends Component {
|
|
|
209
320
|
const inputObj = {};
|
|
210
321
|
inputObj[inputVars[0] || 'message'] = message;
|
|
211
322
|
|
|
212
|
-
const res = await api.streamAgent(agent.name, inputObj, store.get('sessionId'));
|
|
323
|
+
const res = await api.streamAgent(agent.name, inputObj, store.get('sessionId'), { signal: this.currentAbortController?.signal });
|
|
213
324
|
const reader = res.body.getReader();
|
|
214
325
|
const decoder = new TextDecoder();
|
|
215
326
|
|
|
@@ -224,6 +335,7 @@ export class AgentsView extends Component {
|
|
|
224
335
|
|
|
225
336
|
let currentContent = '';
|
|
226
337
|
let buffer = '';
|
|
338
|
+
let hasToolCalls = false;
|
|
227
339
|
|
|
228
340
|
while (true) {
|
|
229
341
|
const { done, value } = await reader.read();
|
|
@@ -233,7 +345,6 @@ export class AgentsView extends Component {
|
|
|
233
345
|
buffer += chunk;
|
|
234
346
|
|
|
235
347
|
const lines = buffer.split('\n');
|
|
236
|
-
// Keep the last partial line in the buffer
|
|
237
348
|
buffer = lines.pop() || '';
|
|
238
349
|
|
|
239
350
|
for (const line of lines) {
|
|
@@ -245,9 +356,19 @@ export class AgentsView extends Component {
|
|
|
245
356
|
|
|
246
357
|
try {
|
|
247
358
|
const event = JSON.parse(data);
|
|
359
|
+
|
|
360
|
+
// Handle server-side errors
|
|
361
|
+
if (event.error) {
|
|
362
|
+
this.updateResponseError(responseId, `Error: ${event.error}`);
|
|
363
|
+
return currentContent;
|
|
364
|
+
}
|
|
365
|
+
|
|
248
366
|
if (event.type === 'content') {
|
|
249
367
|
currentContent += event.content;
|
|
250
368
|
}
|
|
369
|
+
if (event.type === 'tool_start' || event.type === 'tool_end') {
|
|
370
|
+
hasToolCalls = true;
|
|
371
|
+
}
|
|
251
372
|
this.handleStreamEvent(event, responseId, currentContent, thinkingState);
|
|
252
373
|
} catch (e) {
|
|
253
374
|
console.error('Error parsing stream event', e, data);
|
|
@@ -255,10 +376,24 @@ export class AgentsView extends Component {
|
|
|
255
376
|
}
|
|
256
377
|
}
|
|
257
378
|
}
|
|
379
|
+
|
|
380
|
+
// If tools were called but no text content was produced, clear loading state
|
|
381
|
+
if (hasToolCalls && !currentContent.trim()) {
|
|
382
|
+
const loadingDots = contentDiv.querySelector('.loading-dots');
|
|
383
|
+
if (loadingDots) {
|
|
384
|
+
loadingDots.remove();
|
|
385
|
+
bubble.querySelector('.response-bubble-inner').classList.remove('py-4');
|
|
386
|
+
bubble.querySelector('.response-bubble-inner').classList.add('py-3');
|
|
387
|
+
contentDiv.classList.remove('flex', 'items-center', 'whitespace-pre-wrap');
|
|
388
|
+
contentDiv.innerHTML = '';
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
return currentContent;
|
|
258
393
|
}
|
|
259
394
|
|
|
260
395
|
async sendLlmMessage(llm, message, responseId) {
|
|
261
|
-
const res = await api.streamLLM(llm.name, message);
|
|
396
|
+
const res = await api.streamLLM(llm.name, message, { signal: this.currentAbortController?.signal });
|
|
262
397
|
const reader = res.body.getReader();
|
|
263
398
|
const decoder = new TextDecoder();
|
|
264
399
|
|
|
@@ -269,8 +404,8 @@ export class AgentsView extends Component {
|
|
|
269
404
|
|
|
270
405
|
if (loadingDots) {
|
|
271
406
|
loadingDots.remove();
|
|
272
|
-
bubble.querySelector('.
|
|
273
|
-
bubble.querySelector('.
|
|
407
|
+
bubble.querySelector('.response-bubble-inner').classList.remove('py-4');
|
|
408
|
+
bubble.querySelector('.response-bubble-inner').classList.add('py-3');
|
|
274
409
|
contentDiv.classList.remove('flex', 'items-center', 'whitespace-pre-wrap');
|
|
275
410
|
contentDiv.innerHTML = '';
|
|
276
411
|
}
|
|
@@ -305,7 +440,17 @@ export class AgentsView extends Component {
|
|
|
305
440
|
const parsed = JSON.parse(data);
|
|
306
441
|
|
|
307
442
|
if (parsed.error) {
|
|
308
|
-
|
|
443
|
+
this.updateResponseError(responseId, `Error: ${parsed.error}`);
|
|
444
|
+
return fullContent;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
if (parsed.type === 'usage') {
|
|
448
|
+
this.streamUsageData = {
|
|
449
|
+
input_tokens: parsed.input_tokens || 0,
|
|
450
|
+
output_tokens: parsed.output_tokens || 0,
|
|
451
|
+
total_tokens: parsed.total_tokens || 0,
|
|
452
|
+
};
|
|
453
|
+
continue;
|
|
309
454
|
}
|
|
310
455
|
|
|
311
456
|
const text = parsed.content || '';
|
|
@@ -321,6 +466,8 @@ export class AgentsView extends Component {
|
|
|
321
466
|
}
|
|
322
467
|
}
|
|
323
468
|
}
|
|
469
|
+
|
|
470
|
+
return fullContent;
|
|
324
471
|
}
|
|
325
472
|
|
|
326
473
|
renderLlmContentStreaming(contentDiv, fullContent, responseId, state) {
|
|
@@ -475,22 +622,70 @@ export class AgentsView extends Component {
|
|
|
475
622
|
|
|
476
623
|
createResponseBubble(id) {
|
|
477
624
|
const container = this.querySelector('#chatMessages');
|
|
625
|
+
const wrapper = document.createElement('div');
|
|
626
|
+
wrapper.className = 'response-wrapper';
|
|
627
|
+
|
|
478
628
|
const div = document.createElement('div');
|
|
479
629
|
div.id = id;
|
|
480
630
|
div.className = 'flex justify-start';
|
|
481
631
|
div.innerHTML = `
|
|
482
|
-
<div class="max-w-4xl bg-dark-surface border border-dark-border rounded-3xl px-5 py-4 text-gray-100 text-[15px] leading-relaxed relative group">
|
|
632
|
+
<div class="response-bubble-inner max-w-4xl bg-dark-surface border border-dark-border rounded-3xl px-5 py-4 text-gray-100 text-[15px] leading-relaxed relative group">
|
|
483
633
|
<div class="response-content whitespace-pre-wrap flex items-center">
|
|
484
634
|
<div class="loading-dots flex gap-1">
|
|
485
635
|
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce"></div>
|
|
486
|
-
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce
|
|
487
|
-
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce
|
|
636
|
+
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce animation-delay-200"></div>
|
|
637
|
+
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce animation-delay-400"></div>
|
|
488
638
|
</div>
|
|
489
639
|
</div>
|
|
490
|
-
<div class="tool-invocations
|
|
640
|
+
<div class="tool-invocations flex flex-wrap gap-1.5 mt-2"></div>
|
|
491
641
|
</div>
|
|
492
642
|
`;
|
|
493
|
-
|
|
643
|
+
|
|
644
|
+
wrapper.appendChild(div);
|
|
645
|
+
|
|
646
|
+
// Stream status bar (visible during streaming)
|
|
647
|
+
const statusBar = document.createElement('div');
|
|
648
|
+
statusBar.className = 'stream-status-bar flex items-center gap-2 mt-1.5 ml-1 text-xs text-gray-400';
|
|
649
|
+
statusBar.innerHTML = `
|
|
650
|
+
<div class="w-2 h-2 bg-blue-500 rounded-full animate-pulse-dot"></div>
|
|
651
|
+
<span class="stream-status-text">Generating...</span>
|
|
652
|
+
<span class="stream-elapsed text-gray-500">0.0s</span>
|
|
653
|
+
<button class="stream-cancel-btn ml-auto text-gray-500 hover:text-gray-300 text-xs px-2 py-0.5 rounded border border-dark-border hover:border-gray-500 transition-colors">
|
|
654
|
+
Stop
|
|
655
|
+
</button>
|
|
656
|
+
`;
|
|
657
|
+
wrapper.appendChild(statusBar);
|
|
658
|
+
|
|
659
|
+
// Wire up cancel button
|
|
660
|
+
statusBar.querySelector('.stream-cancel-btn').addEventListener('click', () => this.cancelCurrentStream());
|
|
661
|
+
|
|
662
|
+
// Stats bar (visible after completion)
|
|
663
|
+
const statsBar = document.createElement('div');
|
|
664
|
+
statsBar.className = 'stream-stats-bar hidden flex items-center gap-3 mt-1.5 ml-1 text-xs text-gray-500';
|
|
665
|
+
statsBar.innerHTML = `
|
|
666
|
+
<span class="flex items-center gap-1">
|
|
667
|
+
<i class="far fa-clock"></i>
|
|
668
|
+
<span class="stats-elapsed"></span>
|
|
669
|
+
</span>
|
|
670
|
+
<span class="text-dark-border">|</span>
|
|
671
|
+
<span class="flex items-center gap-1">
|
|
672
|
+
<i class="fas fa-arrow-up text-[9px]"></i>
|
|
673
|
+
<span class="stats-input-tokens"></span>
|
|
674
|
+
</span>
|
|
675
|
+
<span class="text-dark-border">|</span>
|
|
676
|
+
<span class="flex items-center gap-1">
|
|
677
|
+
<i class="fas fa-arrow-down text-[9px]"></i>
|
|
678
|
+
<span class="stats-output-tokens"></span>
|
|
679
|
+
</span>
|
|
680
|
+
<span class="text-dark-border">|</span>
|
|
681
|
+
<span class="flex items-center gap-1">
|
|
682
|
+
<i class="fas fa-bolt text-[9px]"></i>
|
|
683
|
+
<span class="stats-tps"></span>
|
|
684
|
+
</span>
|
|
685
|
+
`;
|
|
686
|
+
wrapper.appendChild(statsBar);
|
|
687
|
+
|
|
688
|
+
container.appendChild(wrapper);
|
|
494
689
|
container.scrollTop = container.scrollHeight;
|
|
495
690
|
}
|
|
496
691
|
|
|
@@ -506,57 +701,98 @@ export class AgentsView extends Component {
|
|
|
506
701
|
if (event.type === 'content') {
|
|
507
702
|
if (loadingDots) {
|
|
508
703
|
loadingDots.remove();
|
|
509
|
-
|
|
510
|
-
bubble.querySelector('.
|
|
511
|
-
bubble.querySelector('.max-w-4xl').classList.add('py-3');
|
|
704
|
+
bubble.querySelector('.response-bubble-inner').classList.remove('py-4');
|
|
705
|
+
bubble.querySelector('.response-bubble-inner').classList.add('py-3');
|
|
512
706
|
contentDiv.classList.remove('flex', 'items-center', 'whitespace-pre-wrap');
|
|
513
|
-
// Clear any whitespace
|
|
514
707
|
contentDiv.innerHTML = '';
|
|
515
708
|
}
|
|
516
|
-
// Use the same rendering method as LLMs to handle [THINK] tags
|
|
517
709
|
this.renderLlmContentStreaming(contentDiv, currentContent, responseId, thinkingState);
|
|
518
|
-
// Scroll to bottom as content streams in
|
|
519
710
|
container.scrollTop = container.scrollHeight;
|
|
520
711
|
} else if (event.type === 'tool_start') {
|
|
521
712
|
const toolId = `tool-${event.runId}`;
|
|
522
713
|
const toolEl = document.createElement('div');
|
|
523
714
|
toolEl.id = toolId;
|
|
524
|
-
toolEl.className = 'bg-dark-bg/50 border border-dark-border rounded-
|
|
715
|
+
toolEl.className = 'tool-pill inline-flex items-center gap-1.5 bg-dark-bg/50 border border-dark-border/60 rounded-full px-2.5 py-1 text-xs text-gray-400 font-mono';
|
|
716
|
+
toolEl.dataset.toolInput = typeof event.input === 'string' ? event.input : JSON.stringify(event.input, null, 2);
|
|
525
717
|
toolEl.innerHTML = `
|
|
526
|
-
<i class="fas fa-
|
|
527
|
-
<span
|
|
718
|
+
<i class="fas fa-circle-notch animate-spin text-blue-400 text-[10px]"></i>
|
|
719
|
+
<span>${this.escapeHtml(event.tool)}</span>
|
|
528
720
|
`;
|
|
529
721
|
toolsDiv.appendChild(toolEl);
|
|
530
|
-
// Scroll to bottom when tool starts
|
|
531
722
|
container.scrollTop = container.scrollHeight;
|
|
532
723
|
|
|
533
|
-
// If we have loading dots, keep them until text arrives
|
|
534
724
|
} else if (event.type === 'tool_end') {
|
|
535
725
|
const toolId = `tool-${event.runId}`;
|
|
536
726
|
const toolEl = toolsDiv.querySelector(`#${toolId}`);
|
|
537
727
|
if (toolEl) {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
728
|
+
const toolInput = toolEl.dataset.toolInput || '';
|
|
729
|
+
const toolOutput = typeof event.output === 'string' ? event.output : JSON.stringify(event.output, null, 2);
|
|
730
|
+
|
|
731
|
+
toolEl.className = 'tool-pill relative inline-flex items-center gap-1.5 bg-dark-bg/30 border border-dark-border/50 rounded-full px-2.5 py-1 text-xs text-gray-500 font-mono cursor-pointer hover:bg-dark-bg/60 hover:border-dark-border transition-colors';
|
|
732
|
+
toolEl.innerHTML = '';
|
|
733
|
+
|
|
734
|
+
// Pill content (icon + name)
|
|
735
|
+
const pillContent = document.createElement('span');
|
|
736
|
+
pillContent.className = 'inline-flex items-center gap-1.5';
|
|
737
|
+
pillContent.innerHTML = `
|
|
738
|
+
<i class="fas fa-check text-green-500 text-[10px]"></i>
|
|
739
|
+
<span>${this.escapeHtml(event.tool)}</span>
|
|
545
740
|
`;
|
|
741
|
+
toolEl.appendChild(pillContent);
|
|
742
|
+
|
|
743
|
+
// Popover details panel (positioned below the pill)
|
|
744
|
+
const details = document.createElement('div');
|
|
745
|
+
details.className = 'tool-invocation-details hidden absolute left-0 top-full mt-1 z-50 bg-dark-surface border border-dark-border rounded-lg shadow-xl w-[400px] max-w-[90vw]';
|
|
746
|
+
|
|
747
|
+
// Input section
|
|
748
|
+
if (toolInput) {
|
|
749
|
+
const inputSection = document.createElement('div');
|
|
750
|
+
inputSection.className = 'p-3 border-b border-dark-border/50';
|
|
751
|
+
inputSection.innerHTML = `<div class="text-xs font-semibold text-gray-400 mb-1">Input</div>`;
|
|
752
|
+
const inputPre = document.createElement('pre');
|
|
753
|
+
inputPre.className = 'text-xs text-gray-400 bg-dark-bg/60 rounded-md p-2 overflow-x-auto max-h-48 overflow-y-auto whitespace-pre-wrap break-all custom-scrollbar';
|
|
754
|
+
inputPre.textContent = toolInput;
|
|
755
|
+
inputSection.appendChild(inputPre);
|
|
756
|
+
details.appendChild(inputSection);
|
|
757
|
+
}
|
|
546
758
|
|
|
547
|
-
//
|
|
548
|
-
const
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
759
|
+
// Output section
|
|
760
|
+
const outputSection = document.createElement('div');
|
|
761
|
+
outputSection.className = 'p-3';
|
|
762
|
+
outputSection.innerHTML = `<div class="text-xs font-semibold text-gray-400 mb-1">Output</div>`;
|
|
763
|
+
const outputPre = document.createElement('pre');
|
|
764
|
+
outputPre.className = 'text-xs text-gray-400 bg-dark-bg/60 rounded-md p-2 overflow-x-auto max-h-48 overflow-y-auto whitespace-pre-wrap break-all custom-scrollbar';
|
|
765
|
+
outputPre.textContent = toolOutput;
|
|
766
|
+
outputSection.appendChild(outputPre);
|
|
767
|
+
details.appendChild(outputSection);
|
|
768
|
+
|
|
769
|
+
toolEl.appendChild(details);
|
|
770
|
+
|
|
771
|
+
// Toggle popover on click
|
|
772
|
+
toolEl.addEventListener('click', (e) => {
|
|
773
|
+
e.preventDefault();
|
|
774
|
+
e.stopPropagation();
|
|
775
|
+
// Close any other open popovers
|
|
776
|
+
toolsDiv.querySelectorAll('.tool-invocation-details:not(.hidden)').forEach(d => {
|
|
777
|
+
if (d !== details) d.classList.add('hidden');
|
|
778
|
+
});
|
|
779
|
+
details.classList.toggle('hidden');
|
|
780
|
+
});
|
|
781
|
+
|
|
782
|
+
// Close popover when clicking outside
|
|
783
|
+
const closeHandler = (e) => {
|
|
784
|
+
if (!toolEl.contains(e.target)) {
|
|
785
|
+
details.classList.add('hidden');
|
|
786
|
+
}
|
|
787
|
+
};
|
|
788
|
+
document.addEventListener('click', closeHandler, { capture: true });
|
|
553
789
|
container.scrollTop = container.scrollHeight;
|
|
554
790
|
}
|
|
555
791
|
} else if (event.type === 'result') {
|
|
556
792
|
if (loadingDots) {
|
|
557
793
|
loadingDots.remove();
|
|
558
|
-
bubble.querySelector('.
|
|
559
|
-
bubble.querySelector('.
|
|
794
|
+
bubble.querySelector('.response-bubble-inner').classList.remove('py-4');
|
|
795
|
+
bubble.querySelector('.response-bubble-inner').classList.add('py-3');
|
|
560
796
|
contentDiv.classList.remove('flex', 'items-center', 'whitespace-pre-wrap');
|
|
561
797
|
contentDiv.innerHTML = '';
|
|
562
798
|
}
|
|
@@ -574,6 +810,24 @@ export class AgentsView extends Component {
|
|
|
574
810
|
|
|
575
811
|
// Scroll to bottom
|
|
576
812
|
container.scrollTop = container.scrollHeight;
|
|
813
|
+
} else if (event.type === 'error') {
|
|
814
|
+
if (loadingDots) {
|
|
815
|
+
loadingDots.remove();
|
|
816
|
+
bubble.querySelector('.response-bubble-inner').classList.remove('py-4');
|
|
817
|
+
bubble.querySelector('.response-bubble-inner').classList.add('py-3');
|
|
818
|
+
contentDiv.classList.remove('flex', 'items-center', 'whitespace-pre-wrap');
|
|
819
|
+
}
|
|
820
|
+
const errorDiv = document.createElement('div');
|
|
821
|
+
errorDiv.className = 'text-red-400 text-sm mt-2';
|
|
822
|
+
errorDiv.textContent = `Error: ${event.error}`;
|
|
823
|
+
contentDiv.appendChild(errorDiv);
|
|
824
|
+
container.scrollTop = container.scrollHeight;
|
|
825
|
+
} else if (event.type === 'usage') {
|
|
826
|
+
this.streamUsageData = {
|
|
827
|
+
input_tokens: event.input_tokens || 0,
|
|
828
|
+
output_tokens: event.output_tokens || 0,
|
|
829
|
+
total_tokens: event.total_tokens || 0,
|
|
830
|
+
};
|
|
577
831
|
}
|
|
578
832
|
}
|
|
579
833
|
|
|
@@ -637,8 +891,8 @@ export class AgentsView extends Component {
|
|
|
637
891
|
<div class="max-w-4xl bg-dark-surface border border-dark-border rounded-3xl px-5 py-4">
|
|
638
892
|
<div class="flex gap-1">
|
|
639
893
|
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce"></div>
|
|
640
|
-
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce
|
|
641
|
-
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce
|
|
894
|
+
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce animation-delay-200"></div>
|
|
895
|
+
<div class="w-2 h-2 bg-blue-500 rounded-full animate-bounce animation-delay-400"></div>
|
|
642
896
|
</div>
|
|
643
897
|
</div>
|
|
644
898
|
`;
|
|
@@ -675,8 +929,8 @@ export class AgentsView extends Component {
|
|
|
675
929
|
`;
|
|
676
930
|
container.appendChild(div);
|
|
677
931
|
|
|
678
|
-
//
|
|
679
|
-
store.set('sessionId',
|
|
932
|
+
// Generate a new session ID for fresh conversation
|
|
933
|
+
store.set('sessionId', 'session-' + Date.now() + '-' + Math.random().toString(36).substring(2, 9));
|
|
680
934
|
}
|
|
681
935
|
|
|
682
936
|
postRender() {
|
|
@@ -5,11 +5,18 @@ import './NavBar.js';
|
|
|
5
5
|
import './AgentsView.js';
|
|
6
6
|
import './WorkflowsView.js';
|
|
7
7
|
import './KnowledgeView.js';
|
|
8
|
+
import './GraphView.js';
|
|
8
9
|
import './McpView.js';
|
|
10
|
+
import './SkillsView.js';
|
|
11
|
+
import './MonitorView.js';
|
|
9
12
|
import './IdeView.js';
|
|
10
13
|
|
|
11
14
|
export class AppRoot extends Component {
|
|
12
15
|
postRender() {
|
|
16
|
+
this._checkAuth();
|
|
17
|
+
|
|
18
|
+
window.addEventListener('auth:required', () => this._showLogin());
|
|
19
|
+
|
|
13
20
|
store.addEventListener('state-change', (e) => {
|
|
14
21
|
if (e.detail.key === 'activeTab') {
|
|
15
22
|
this.switchTab(e.detail.value);
|
|
@@ -32,6 +39,112 @@ export class AppRoot extends Component {
|
|
|
32
39
|
this.switchTab(initialTab);
|
|
33
40
|
}
|
|
34
41
|
|
|
42
|
+
async _checkAuth() {
|
|
43
|
+
try {
|
|
44
|
+
const res = await fetch('/api/auth/check');
|
|
45
|
+
const data = await res.json();
|
|
46
|
+
if (data.required && !data.authenticated) {
|
|
47
|
+
this._showLogin();
|
|
48
|
+
}
|
|
49
|
+
if (data.required && data.authenticated) {
|
|
50
|
+
this._showLogoutButton();
|
|
51
|
+
}
|
|
52
|
+
} catch {
|
|
53
|
+
// Server unreachable — will fail on actual API calls
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_showLogin() {
|
|
58
|
+
if (this.querySelector('#auth-overlay')) return;
|
|
59
|
+
|
|
60
|
+
const overlay = document.createElement('div');
|
|
61
|
+
overlay.id = 'auth-overlay';
|
|
62
|
+
overlay.className = 'fixed inset-0 z-50 flex items-center justify-center bg-black/70';
|
|
63
|
+
overlay.innerHTML = `
|
|
64
|
+
<div class="bg-[#1e1e2e] border border-[#313244] rounded-lg shadow-xl w-full max-w-sm mx-4 p-6">
|
|
65
|
+
<h2 class="text-xl font-semibold text-gray-100 mb-4">
|
|
66
|
+
<i class="fas fa-lock mr-2 text-blue-400"></i>Authentication Required
|
|
67
|
+
</h2>
|
|
68
|
+
<div id="auth-error" class="hidden text-red-400 text-sm mb-3"></div>
|
|
69
|
+
<input id="auth-password" type="password" placeholder="Password"
|
|
70
|
+
class="w-full bg-[#11111b] border border-[#313244] rounded px-3 py-2 text-gray-100
|
|
71
|
+
focus:outline-none focus:border-blue-500 mb-4" />
|
|
72
|
+
<button id="auth-submit"
|
|
73
|
+
class="w-full bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-4
|
|
74
|
+
rounded transition-colors">
|
|
75
|
+
Sign In
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
`;
|
|
79
|
+
this.appendChild(overlay);
|
|
80
|
+
|
|
81
|
+
const passwordInput = overlay.querySelector('#auth-password');
|
|
82
|
+
const submitBtn = overlay.querySelector('#auth-submit');
|
|
83
|
+
const errorDiv = overlay.querySelector('#auth-error');
|
|
84
|
+
|
|
85
|
+
const submit = async () => {
|
|
86
|
+
const password = passwordInput.value;
|
|
87
|
+
if (!password) return;
|
|
88
|
+
|
|
89
|
+
submitBtn.disabled = true;
|
|
90
|
+
submitBtn.textContent = 'Signing in...';
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const res = await fetch('/api/auth/login', {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: { 'Content-Type': 'application/json' },
|
|
96
|
+
body: JSON.stringify({ password }),
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (res.ok) {
|
|
100
|
+
this._hideLogin();
|
|
101
|
+
this._showLogoutButton();
|
|
102
|
+
this.switchTab(store.get('activeTab'));
|
|
103
|
+
} else {
|
|
104
|
+
errorDiv.textContent = 'Invalid password';
|
|
105
|
+
errorDiv.classList.remove('hidden');
|
|
106
|
+
passwordInput.value = '';
|
|
107
|
+
passwordInput.focus();
|
|
108
|
+
}
|
|
109
|
+
} catch {
|
|
110
|
+
errorDiv.textContent = 'Connection error';
|
|
111
|
+
errorDiv.classList.remove('hidden');
|
|
112
|
+
} finally {
|
|
113
|
+
submitBtn.disabled = false;
|
|
114
|
+
submitBtn.textContent = 'Sign In';
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
submitBtn.addEventListener('click', submit);
|
|
119
|
+
passwordInput.addEventListener('keydown', (e) => {
|
|
120
|
+
if (e.key === 'Enter') submit();
|
|
121
|
+
});
|
|
122
|
+
passwordInput.focus();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
_hideLogin() {
|
|
126
|
+
const overlay = this.querySelector('#auth-overlay');
|
|
127
|
+
if (overlay) overlay.remove();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
_showLogoutButton() {
|
|
131
|
+
if (this.querySelector('#auth-logout-btn')) return;
|
|
132
|
+
const header = this.querySelector('#app-header');
|
|
133
|
+
if (!header) return;
|
|
134
|
+
|
|
135
|
+
const btn = document.createElement('button');
|
|
136
|
+
btn.id = 'auth-logout-btn';
|
|
137
|
+
btn.className = 'text-gray-400 hover:text-white transition-colors';
|
|
138
|
+
btn.title = 'Logout';
|
|
139
|
+
btn.innerHTML = '<i class="fas fa-right-from-bracket"></i>';
|
|
140
|
+
btn.addEventListener('click', async () => {
|
|
141
|
+
await fetch('/api/auth/logout', { method: 'POST' });
|
|
142
|
+
btn.remove();
|
|
143
|
+
this._showLogin();
|
|
144
|
+
});
|
|
145
|
+
header.appendChild(btn);
|
|
146
|
+
}
|
|
147
|
+
|
|
35
148
|
switchTab(tabId) {
|
|
36
149
|
const container = this.querySelector('#tabContent');
|
|
37
150
|
if (!container) return;
|
|
@@ -42,7 +155,10 @@ export class AppRoot extends Component {
|
|
|
42
155
|
case 'agents': el = document.createElement('agents-view'); break;
|
|
43
156
|
case 'workflows': el = document.createElement('workflows-view'); break;
|
|
44
157
|
case 'knowledge': el = document.createElement('knowledge-view'); break;
|
|
158
|
+
case 'graph': el = document.createElement('graph-view'); break;
|
|
45
159
|
case 'mcp': el = document.createElement('mcp-view'); break;
|
|
160
|
+
case 'skills': el = document.createElement('skills-view'); break;
|
|
161
|
+
case 'monitor': el = document.createElement('monitor-view'); break;
|
|
46
162
|
case 'ide': el = document.createElement('ide-view'); break;
|
|
47
163
|
default: el = document.createElement('agents-view'); break;
|
|
48
164
|
}
|
|
@@ -57,10 +173,14 @@ export class AppRoot extends Component {
|
|
|
57
173
|
return `
|
|
58
174
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8 h-screen flex flex-col">
|
|
59
175
|
<div class="mb-4 flex-shrink-0">
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
176
|
+
<div id="app-header" class="flex items-center justify-between">
|
|
177
|
+
<div>
|
|
178
|
+
<h1 class="text-4xl font-bold bg-gradient-to-r from-blue-400 to-purple-500 bg-clip-text text-transparent">
|
|
179
|
+
Agent Orcha
|
|
180
|
+
</h1>
|
|
181
|
+
<p class="text-gray-400 mt-2">Declare the system. Orcha handles the REST.</p>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
64
184
|
</div>
|
|
65
185
|
|
|
66
186
|
<nav-bar class="flex-shrink-0"></nav-bar>
|