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
|
@@ -2,10 +2,24 @@
|
|
|
2
2
|
import { Component } from '../utils/Component.js';
|
|
3
3
|
import { api } from '../services/ApiService.js';
|
|
4
4
|
|
|
5
|
+
const LOG_CONFIG = {
|
|
6
|
+
workflow_start: { icon: 'fa-play', color: 'blue' },
|
|
7
|
+
workflow_complete: { icon: 'fa-check-circle', color: 'green' },
|
|
8
|
+
workflow_error: { icon: 'fa-times-circle', color: 'red' },
|
|
9
|
+
workflow_interrupt: { icon: 'fa-pause-circle', color: 'amber' },
|
|
10
|
+
step_start: { icon: 'fa-arrow-right', color: 'blue' },
|
|
11
|
+
step_complete: { icon: 'fa-check', color: 'green' },
|
|
12
|
+
step_error: { icon: 'fa-exclamation-triangle', color: 'red' },
|
|
13
|
+
tool_discovery: { icon: 'fa-search', color: 'purple' },
|
|
14
|
+
react_iteration: { icon: 'fa-sync-alt', color: 'blue' },
|
|
15
|
+
tool_call: { icon: 'fa-wrench', color: 'cyan' },
|
|
16
|
+
tool_result: { icon: 'fa-reply', color: 'teal' },
|
|
17
|
+
};
|
|
18
|
+
|
|
5
19
|
export class WorkflowsView extends Component {
|
|
6
20
|
constructor() {
|
|
7
21
|
super();
|
|
8
|
-
this.
|
|
22
|
+
this.workflows = [];
|
|
9
23
|
this.selectedWorkflow = null;
|
|
10
24
|
this.chartInterval = null;
|
|
11
25
|
}
|
|
@@ -19,83 +33,193 @@ export class WorkflowsView extends Component {
|
|
|
19
33
|
this.stopChartUpdate();
|
|
20
34
|
}
|
|
21
35
|
|
|
36
|
+
// ── Data ──
|
|
37
|
+
|
|
22
38
|
async loadWorkflows() {
|
|
23
39
|
try {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
select.innerHTML = '<option value="">-- Select Workflow --</option>' +
|
|
27
|
-
workflows.map(wf => `<option value="${wf.name}">${wf.name} - ${wf.description}</option>`).join('');
|
|
40
|
+
this.workflows = await api.getWorkflows();
|
|
41
|
+
this.renderCards();
|
|
28
42
|
} catch (e) {
|
|
29
43
|
console.error('Failed to load workflows', e);
|
|
30
44
|
}
|
|
31
45
|
}
|
|
32
46
|
|
|
33
|
-
async
|
|
34
|
-
if (
|
|
35
|
-
this.selectedWorkflow = null;
|
|
36
|
-
this.renderDiagram([]);
|
|
37
|
-
this.querySelector('#workflowInputs').innerHTML = '';
|
|
38
|
-
this.querySelector('#runWorkflow').disabled = true;
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
47
|
+
async selectWorkflow(name) {
|
|
48
|
+
if (this.selectedWorkflow?.name === name) return;
|
|
41
49
|
|
|
42
50
|
try {
|
|
43
|
-
const
|
|
44
|
-
this.selectedWorkflow =
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.querySelector('#runWorkflow').disabled = false;
|
|
51
|
+
const full = await api.getWorkflow(name);
|
|
52
|
+
this.selectedWorkflow = full;
|
|
53
|
+
this.renderCards();
|
|
54
|
+
this.renderDetail();
|
|
48
55
|
} catch (e) {
|
|
49
56
|
console.error('Failed to load workflow details', e);
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
59
|
|
|
53
|
-
|
|
54
|
-
const container = this.querySelector('#workflowInputs');
|
|
55
|
-
container.innerHTML = '';
|
|
60
|
+
// ── Left sidebar: cards ──
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
renderCards() {
|
|
63
|
+
const container = this.querySelector('#workflowCards');
|
|
64
|
+
if (!container) return;
|
|
58
65
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
if (!this.workflows.length) {
|
|
67
|
+
container.innerHTML = `
|
|
68
|
+
<div class="text-gray-500 text-center py-12">
|
|
69
|
+
<i class="fas fa-project-diagram text-4xl mb-4 block text-gray-600"></i>
|
|
70
|
+
<p class="text-sm">No workflows found</p>
|
|
71
|
+
</div>`;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
container.innerHTML = this.workflows.map(wf => {
|
|
76
|
+
const isSelected = this.selectedWorkflow?.name === wf.name;
|
|
77
|
+
const isReact = wf.type === 'react';
|
|
78
|
+
const badgeClass = isReact ? 'bg-amber-500/20 text-amber-400' : 'bg-blue-500/20 text-blue-400';
|
|
79
|
+
|
|
80
|
+
return `
|
|
81
|
+
<div class="workflow-card cursor-pointer rounded-lg p-3 border transition-colors
|
|
82
|
+
${isSelected ? 'bg-dark-surface border-purple-500' : 'bg-dark-surface/50 border-dark-border hover:border-purple-500/50'}"
|
|
83
|
+
data-name="${wf.name}">
|
|
84
|
+
<div class="flex items-center justify-between mb-1">
|
|
85
|
+
<span class="font-semibold text-gray-100 text-sm truncate">${this.escapeHtml(wf.name)}</span>
|
|
86
|
+
<span class="text-xs px-1.5 py-0.5 rounded ${badgeClass} flex-shrink-0">${wf.type || 'steps'}</span>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="text-xs text-gray-500 line-clamp-2">${this.escapeHtml(wf.description || 'No description')}</div>
|
|
89
|
+
<div class="text-xs text-gray-600 mt-1">v${wf.version || '1.0.0'}${!isReact && wf.steps ? ` · ${wf.steps} steps` : ''}</div>
|
|
90
|
+
</div>`;
|
|
91
|
+
}).join('');
|
|
92
|
+
|
|
93
|
+
container.querySelectorAll('.workflow-card').forEach(card => {
|
|
94
|
+
card.addEventListener('click', () => this.selectWorkflow(card.dataset.name));
|
|
95
|
+
});
|
|
70
96
|
}
|
|
71
97
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
98
|
+
// ── Right panel: detail ──
|
|
99
|
+
|
|
100
|
+
renderDetail() {
|
|
101
|
+
const container = this.querySelector('#workflowDetail');
|
|
102
|
+
if (!container || !this.selectedWorkflow) {
|
|
103
|
+
if (container) container.innerHTML = '<div class="text-gray-500 italic text-center py-12">Select a workflow to view details</div>';
|
|
76
104
|
return;
|
|
77
105
|
}
|
|
78
106
|
|
|
107
|
+
const wf = this.selectedWorkflow;
|
|
108
|
+
const isReact = wf.type === 'react';
|
|
109
|
+
|
|
79
110
|
container.innerHTML = `
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
111
|
+
${this.buildInfoHtml(wf)}
|
|
112
|
+
${!isReact ? this.buildDiagramHtml(wf.steps || []) : ''}
|
|
113
|
+
${this.buildInputsHtml(wf.input?.schema || {})}
|
|
114
|
+
<button id="runWorkflow"
|
|
115
|
+
class="bg-purple-600 hover:bg-purple-700 disabled:bg-gray-700 disabled:cursor-not-allowed text-white font-medium px-5 py-2 rounded-lg transition-colors flex items-center gap-2 text-sm">
|
|
116
|
+
<i class="fas fa-play text-xs"></i>
|
|
117
|
+
Run Workflow
|
|
118
|
+
</button>
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
this.querySelector('#runWorkflow')?.addEventListener('click', () => this.runWorkflow());
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
buildInfoHtml(wf) {
|
|
125
|
+
const isReact = wf.type === 'react';
|
|
126
|
+
const badgeClass = isReact ? 'bg-amber-500/20 text-amber-400' : 'bg-blue-500/20 text-blue-400';
|
|
127
|
+
|
|
128
|
+
let metaHtml = '';
|
|
129
|
+
if (isReact) {
|
|
130
|
+
const g = wf.graph || {};
|
|
131
|
+
metaHtml = `
|
|
132
|
+
<div class="grid grid-cols-4 gap-3 mt-3 pt-3 border-t border-dark-border">
|
|
133
|
+
<div><span class="text-gray-500 text-xs block">Model</span><span class="text-gray-300 text-sm">${this.escapeHtml(g.model || 'default')}</span></div>
|
|
134
|
+
<div><span class="text-gray-500 text-xs block">Mode</span><span class="text-gray-300 text-sm">${g.executionMode || 'react'}</span></div>
|
|
135
|
+
<div><span class="text-gray-500 text-xs block">Max Iter</span><span class="text-gray-300 text-sm">${g.maxIterations ?? 10}</span></div>
|
|
136
|
+
<div><span class="text-gray-500 text-xs block">Tools</span><span class="text-gray-300 text-sm">${g.tools?.mode || 'all'}</span></div>
|
|
137
|
+
</div>`;
|
|
138
|
+
} else {
|
|
139
|
+
const c = wf.config || {};
|
|
140
|
+
metaHtml = `
|
|
141
|
+
<div class="grid grid-cols-3 gap-3 mt-3 pt-3 border-t border-dark-border">
|
|
142
|
+
<div><span class="text-gray-500 text-xs block">Steps</span><span class="text-gray-300 text-sm">${(wf.steps || []).length}</span></div>
|
|
143
|
+
<div><span class="text-gray-500 text-xs block">On Error</span><span class="text-gray-300 text-sm">${c.onError || 'stop'}</span></div>
|
|
144
|
+
<div><span class="text-gray-500 text-xs block">Timeout</span><span class="text-gray-300 text-sm">${((c.timeout || 300000) / 1000)}s</span></div>
|
|
145
|
+
</div>`;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return `
|
|
149
|
+
<div class="bg-dark-surface border border-dark-border rounded-lg p-4">
|
|
150
|
+
<div class="flex items-center gap-3">
|
|
151
|
+
<i class="fas ${isReact ? 'fa-atom' : 'fa-project-diagram'} text-purple-400"></i>
|
|
152
|
+
<div class="min-w-0">
|
|
153
|
+
<div class="flex items-center gap-2 flex-wrap">
|
|
154
|
+
<span class="font-semibold text-gray-100">${this.escapeHtml(wf.name)}</span>
|
|
155
|
+
<span class="text-xs px-2 py-0.5 rounded-full ${badgeClass}">${wf.type || 'steps'}</span>
|
|
156
|
+
<span class="text-xs text-gray-500">v${wf.version || '1.0.0'}</span>
|
|
157
|
+
</div>
|
|
158
|
+
<p class="text-xs text-gray-400 mt-0.5">${this.escapeHtml(wf.description || '')}</p>
|
|
159
|
+
</div>
|
|
83
160
|
</div>
|
|
84
|
-
${
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
161
|
+
${metaHtml}
|
|
162
|
+
</div>`;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
buildDiagramHtml(steps) {
|
|
166
|
+
if (!steps.length) return '';
|
|
167
|
+
|
|
168
|
+
const nodes = steps.map(step => `
|
|
169
|
+
<span class="text-gray-600 text-lg flex-shrink-0">→</span>
|
|
170
|
+
<div id="step-${step.id}" class="step-node flex flex-col items-center px-3 py-2 bg-blue-500/10 border border-blue-500/30 rounded-lg min-w-[100px] text-center transition-all">
|
|
171
|
+
<span class="font-semibold text-blue-300 text-xs">${step.id}</span>
|
|
172
|
+
<span class="text-xs text-gray-400">${step.agent}</span>
|
|
173
|
+
</div>
|
|
174
|
+
`).join('');
|
|
175
|
+
|
|
176
|
+
return `
|
|
177
|
+
<div class="bg-dark-surface border border-dark-border rounded-lg p-4 overflow-x-auto">
|
|
178
|
+
<div class="flex items-center gap-2 flex-nowrap min-w-max">
|
|
179
|
+
<div class="flex flex-col items-center px-3 py-2 bg-green-500/10 border border-green-500/30 rounded-lg min-w-[80px] text-center">
|
|
180
|
+
<span class="font-semibold text-green-400 text-xs">Input</span>
|
|
181
|
+
</div>
|
|
182
|
+
${nodes}
|
|
183
|
+
<span class="text-gray-600 text-lg flex-shrink-0">→</span>
|
|
184
|
+
<div class="flex flex-col items-center px-3 py-2 bg-green-500/10 border border-green-500/30 rounded-lg min-w-[80px] text-center">
|
|
185
|
+
<span class="font-semibold text-green-400 text-xs">Output</span>
|
|
89
186
|
</div>
|
|
90
|
-
`).join('')}
|
|
91
|
-
<span class="text-gray-600 text-xl flex-shrink-0">→</span>
|
|
92
|
-
<div class="flex flex-col items-center px-5 py-3 bg-green-500/10 border border-green-500/30 rounded-lg min-w-[100px] text-center">
|
|
93
|
-
<span class="font-semibold text-green-400 text-sm">Output</span>
|
|
94
187
|
</div>
|
|
188
|
+
</div>`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
buildInputsHtml(schema) {
|
|
192
|
+
const entries = Object.entries(schema);
|
|
193
|
+
if (!entries.length) return '';
|
|
194
|
+
|
|
195
|
+
const fields = entries.map(([key, field]) => `
|
|
196
|
+
<div class="bg-dark-surface/50 border border-dark-border rounded-lg p-3">
|
|
197
|
+
<div class="flex items-center justify-between mb-1">
|
|
198
|
+
<label class="text-sm font-medium text-gray-300" for="wf-${key}">
|
|
199
|
+
${this.escapeHtml(key)}${field.required ? '<span class="text-red-400 ml-1">*</span>' : ''}
|
|
200
|
+
</label>
|
|
201
|
+
<span class="text-xs px-1.5 py-0.5 rounded bg-gray-700 text-gray-500">${field.type || 'string'}</span>
|
|
202
|
+
</div>
|
|
203
|
+
<input type="text" id="wf-${key}"
|
|
204
|
+
placeholder="${field.default ? `Default: ${field.default}` : field.required ? 'Required' : 'Optional'}"
|
|
205
|
+
value="${field.default || ''}"
|
|
206
|
+
class="w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-2 text-sm text-gray-100 placeholder-gray-600 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent">
|
|
207
|
+
${field.description ? `<p class="text-xs text-gray-500 mt-1">${this.escapeHtml(field.description)}</p>` : ''}
|
|
95
208
|
</div>
|
|
96
|
-
|
|
209
|
+
`).join('');
|
|
210
|
+
|
|
211
|
+
return `
|
|
212
|
+
<div class="space-y-3">
|
|
213
|
+
<h3 class="text-sm font-semibold text-gray-300 flex items-center gap-2">
|
|
214
|
+
<i class="fas fa-keyboard text-gray-500 text-xs"></i>
|
|
215
|
+
Inputs
|
|
216
|
+
</h3>
|
|
217
|
+
${fields}
|
|
218
|
+
</div>`;
|
|
97
219
|
}
|
|
98
220
|
|
|
221
|
+
// ── Execution ──
|
|
222
|
+
|
|
99
223
|
async runWorkflow() {
|
|
100
224
|
if (!this.selectedWorkflow) return;
|
|
101
225
|
|
|
@@ -105,13 +229,16 @@ export class WorkflowsView extends Component {
|
|
|
105
229
|
if (input.value) inputs[key] = input.value;
|
|
106
230
|
});
|
|
107
231
|
|
|
108
|
-
const outputEl = this.querySelector('#workflowOutput');
|
|
109
|
-
const statusEl = this.querySelector('#workflowStatus');
|
|
110
232
|
const runBtn = this.querySelector('#runWorkflow');
|
|
233
|
+
const logEl = this.querySelector('#statusLog');
|
|
234
|
+
const outputEl = this.querySelector('#workflowOutput');
|
|
111
235
|
|
|
112
|
-
|
|
113
|
-
outputEl.textContent = '
|
|
114
|
-
|
|
236
|
+
logEl.innerHTML = '';
|
|
237
|
+
outputEl.textContent = 'No output yet';
|
|
238
|
+
outputEl.className = outputEl.className.replace('text-gray-300', 'text-gray-500');
|
|
239
|
+
this.querySelector('#statusMessage').textContent = 'Starting...';
|
|
240
|
+
this.querySelector('#statusDot').className = 'inline-block w-2 h-2 rounded-full bg-blue-400 animate-pulse';
|
|
241
|
+
if (runBtn) runBtn.disabled = true;
|
|
115
242
|
|
|
116
243
|
this.startChartUpdate();
|
|
117
244
|
|
|
@@ -125,23 +252,19 @@ export class WorkflowsView extends Component {
|
|
|
125
252
|
if (done) break;
|
|
126
253
|
|
|
127
254
|
const chunk = decoder.decode(value);
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
if (data === '[DONE]') continue;
|
|
134
|
-
try {
|
|
135
|
-
const update = JSON.parse(data);
|
|
136
|
-
this.handleStatusUpdate(update);
|
|
137
|
-
} catch (e) { }
|
|
138
|
-
}
|
|
255
|
+
for (const line of chunk.split('\n')) {
|
|
256
|
+
if (!line.startsWith('data: ')) continue;
|
|
257
|
+
const data = line.slice(6);
|
|
258
|
+
if (data === '[DONE]') continue;
|
|
259
|
+
try { this.handleStatusUpdate(JSON.parse(data)); } catch (e) { }
|
|
139
260
|
}
|
|
140
261
|
}
|
|
141
262
|
} catch (e) {
|
|
142
|
-
|
|
263
|
+
this.addLog(`Error: ${e.message}`, 'workflow_error');
|
|
264
|
+
this.querySelector('#statusMessage').textContent = 'Error';
|
|
265
|
+
this.querySelector('#statusDot').className = 'inline-block w-2 h-2 rounded-full bg-red-400';
|
|
143
266
|
} finally {
|
|
144
|
-
runBtn.disabled = false;
|
|
267
|
+
if (runBtn) runBtn.disabled = false;
|
|
145
268
|
this.stopChartUpdate();
|
|
146
269
|
}
|
|
147
270
|
}
|
|
@@ -149,91 +272,141 @@ export class WorkflowsView extends Component {
|
|
|
149
272
|
handleStatusUpdate(update) {
|
|
150
273
|
if (update.type === 'status') {
|
|
151
274
|
const { message, type, stepId } = update.data;
|
|
152
|
-
this.querySelector('#statusMessage')
|
|
275
|
+
const statusMsg = this.querySelector('#statusMessage');
|
|
276
|
+
const statusDot = this.querySelector('#statusDot');
|
|
277
|
+
|
|
278
|
+
if (type === 'workflow_complete') {
|
|
279
|
+
statusMsg.textContent = 'Completed';
|
|
280
|
+
statusDot.className = 'inline-block w-2 h-2 rounded-full bg-green-400';
|
|
281
|
+
} else if (type === 'workflow_error') {
|
|
282
|
+
statusMsg.textContent = 'Error';
|
|
283
|
+
statusDot.className = 'inline-block w-2 h-2 rounded-full bg-red-400';
|
|
284
|
+
} else if (type === 'workflow_interrupt') {
|
|
285
|
+
statusMsg.textContent = 'Interrupted — Awaiting input';
|
|
286
|
+
statusDot.className = 'inline-block w-2 h-2 rounded-full bg-amber-400';
|
|
287
|
+
} else {
|
|
288
|
+
statusMsg.textContent = message;
|
|
289
|
+
}
|
|
290
|
+
|
|
153
291
|
this.addLog(message, type);
|
|
154
292
|
|
|
155
293
|
if (stepId) {
|
|
156
294
|
const stepEl = this.querySelector(`#step-${stepId}`);
|
|
157
295
|
if (stepEl) {
|
|
158
|
-
if (type === 'step_start')
|
|
159
|
-
|
|
296
|
+
if (type === 'step_start') {
|
|
297
|
+
stepEl.className = stepEl.className
|
|
298
|
+
.replace('bg-blue-500/10', 'bg-yellow-500/10 animate-pulse')
|
|
299
|
+
.replace('border-blue-500/30', 'border-yellow-500/30');
|
|
300
|
+
}
|
|
301
|
+
if (type === 'step_complete') {
|
|
302
|
+
stepEl.className = stepEl.className
|
|
303
|
+
.replace('bg-yellow-500/10 animate-pulse', 'bg-green-500/10')
|
|
304
|
+
.replace('border-yellow-500/30', 'border-green-500/30');
|
|
305
|
+
}
|
|
160
306
|
}
|
|
161
307
|
}
|
|
162
308
|
} else if (update.type === 'result') {
|
|
163
309
|
const outputEl = this.querySelector('#workflowOutput');
|
|
164
|
-
outputEl.
|
|
310
|
+
outputEl.className = outputEl.className.replace('text-gray-500', 'text-gray-300');
|
|
311
|
+
outputEl.textContent = JSON.stringify(update.data.output || update.data, null, 2);
|
|
165
312
|
}
|
|
166
313
|
}
|
|
167
314
|
|
|
168
315
|
addLog(msg, type) {
|
|
169
316
|
const log = this.querySelector('#statusLog');
|
|
317
|
+
const config = LOG_CONFIG[type] || { icon: 'fa-circle', color: 'gray' };
|
|
318
|
+
|
|
170
319
|
const div = document.createElement('div');
|
|
171
|
-
div.className = 'text-xs font-mono';
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
320
|
+
div.className = 'text-xs font-mono flex items-start gap-2 py-0.5';
|
|
321
|
+
|
|
322
|
+
const time = new Date().toLocaleTimeString();
|
|
323
|
+
div.innerHTML = `
|
|
324
|
+
<span class="text-gray-600 flex-shrink-0">${time}</span>
|
|
325
|
+
<i class="fas ${config.icon} text-${config.color}-400 text-xs mt-0.5 flex-shrink-0 w-3 text-center"></i>
|
|
326
|
+
<span class="text-${config.color}-400">${this.escapeHtml(msg)}</span>
|
|
327
|
+
`;
|
|
175
328
|
|
|
176
|
-
div.textContent = `[${new Date().toLocaleTimeString()}] ${msg}`;
|
|
177
329
|
log.appendChild(div);
|
|
178
330
|
log.scrollTop = log.scrollHeight;
|
|
179
331
|
}
|
|
180
332
|
|
|
333
|
+
// ── Timer ──
|
|
334
|
+
|
|
181
335
|
startChartUpdate() {
|
|
336
|
+
this.stopChartUpdate();
|
|
182
337
|
const start = Date.now();
|
|
183
338
|
const timeEl = this.querySelector('#statusTime');
|
|
339
|
+
timeEl.textContent = '0s';
|
|
184
340
|
this.chartInterval = setInterval(() => {
|
|
185
|
-
|
|
186
|
-
timeEl.textContent = `${seconds}s`;
|
|
341
|
+
timeEl.textContent = `${Math.floor((Date.now() - start) / 1000)}s`;
|
|
187
342
|
}, 1000);
|
|
188
343
|
}
|
|
189
344
|
|
|
190
345
|
stopChartUpdate() {
|
|
191
|
-
if (this.chartInterval)
|
|
346
|
+
if (this.chartInterval) {
|
|
347
|
+
clearInterval(this.chartInterval);
|
|
348
|
+
this.chartInterval = null;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// ── Helpers ──
|
|
353
|
+
|
|
354
|
+
escapeHtml(text) {
|
|
355
|
+
if (!text) return '';
|
|
356
|
+
return String(text).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
192
357
|
}
|
|
193
358
|
|
|
194
359
|
postRender() {
|
|
195
|
-
|
|
196
|
-
this.onWorkflowSelected(e.target.value);
|
|
197
|
-
});
|
|
198
|
-
this.querySelector('#runWorkflow').addEventListener('click', () => {
|
|
199
|
-
this.runWorkflow();
|
|
200
|
-
});
|
|
360
|
+
// No static event bindings needed — cards and run button bind dynamically
|
|
201
361
|
}
|
|
202
362
|
|
|
203
363
|
template() {
|
|
204
364
|
return `
|
|
205
|
-
<div class="
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
<
|
|
209
|
-
class="
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
<div id="flowDiagram" class="bg-dark-surface border border-dark-border rounded-lg p-6 overflow-x-auto min-h-[120px] flex items-center justify-center">
|
|
215
|
-
<div class="text-gray-500 italic">Select a workflow</div>
|
|
216
|
-
</div>
|
|
217
|
-
|
|
218
|
-
<div id="workflowInputs" class="space-y-3"></div>
|
|
219
|
-
|
|
220
|
-
<div id="workflowStatus" class="bg-dark-surface border border-dark-border rounded-lg p-5 hidden">
|
|
221
|
-
<div class="flex justify-between items-center mb-3">
|
|
222
|
-
<div id="statusMessage" class="font-medium text-gray-200">Ready</div>
|
|
223
|
-
<div id="statusTime" class="text-sm text-gray-400">0s</div>
|
|
365
|
+
<div class="flex h-full gap-4">
|
|
366
|
+
<!-- Left sidebar -->
|
|
367
|
+
<div class="w-64 flex-shrink-0 overflow-y-auto custom-scrollbar pr-2">
|
|
368
|
+
<div class="flex items-center justify-between mb-3">
|
|
369
|
+
<h3 class="text-sm font-semibold text-gray-400 uppercase tracking-wider">Workflows</h3>
|
|
370
|
+
</div>
|
|
371
|
+
<div id="workflowCards" class="space-y-2">
|
|
372
|
+
<div class="text-gray-500 italic text-center py-8 text-sm">Loading...</div>
|
|
224
373
|
</div>
|
|
225
|
-
<div id="statusLog" class="bg-dark-bg rounded-lg p-3 h-32 overflow-y-auto space-y-1 border border-dark-border"></div>
|
|
226
374
|
</div>
|
|
227
375
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
376
|
+
<!-- Right panel -->
|
|
377
|
+
<div class="flex-1 flex flex-col h-full overflow-hidden pl-4 border-l border-dark-border">
|
|
378
|
+
<!-- Detail area (scrollable) -->
|
|
379
|
+
<div id="workflowDetail" class="flex-1 overflow-y-auto custom-scrollbar space-y-3 pb-3 min-h-0">
|
|
380
|
+
<div class="text-gray-500 italic text-center py-12">Select a workflow to view details</div>
|
|
381
|
+
</div>
|
|
232
382
|
|
|
233
|
-
|
|
234
|
-
<
|
|
235
|
-
|
|
236
|
-
|
|
383
|
+
<!-- Activity & Output (always visible, pinned bottom) -->
|
|
384
|
+
<div class="flex-shrink-0 pt-3 border-t border-dark-border space-y-3">
|
|
385
|
+
<!-- Activity log -->
|
|
386
|
+
<div>
|
|
387
|
+
<div class="flex justify-between items-center mb-1.5">
|
|
388
|
+
<h3 class="text-xs font-semibold text-gray-400 uppercase tracking-wider flex items-center gap-1.5">
|
|
389
|
+
<i class="fas fa-terminal"></i>
|
|
390
|
+
Activity
|
|
391
|
+
</h3>
|
|
392
|
+
<div class="flex items-center gap-2">
|
|
393
|
+
<span id="statusDot" class="inline-block w-2 h-2 rounded-full bg-gray-600"></span>
|
|
394
|
+
<span id="statusMessage" class="text-xs text-gray-500">Idle</span>
|
|
395
|
+
<span id="statusTime" class="text-xs font-mono text-gray-600">—</span>
|
|
396
|
+
</div>
|
|
397
|
+
</div>
|
|
398
|
+
<div id="statusLog" class="bg-dark-bg rounded-lg p-2.5 h-32 overflow-y-auto space-y-0.5 border border-dark-border custom-scrollbar"></div>
|
|
399
|
+
</div>
|
|
400
|
+
|
|
401
|
+
<!-- Output -->
|
|
402
|
+
<div>
|
|
403
|
+
<h3 class="text-xs font-semibold text-gray-400 uppercase tracking-wider mb-1.5 flex items-center gap-1.5">
|
|
404
|
+
<i class="fas fa-code"></i>
|
|
405
|
+
Output
|
|
406
|
+
</h3>
|
|
407
|
+
<div id="workflowOutput" class="bg-dark-bg border border-dark-border rounded-lg p-2.5 h-24 font-mono text-xs text-gray-500 whitespace-pre-wrap overflow-auto custom-scrollbar">No output yet</div>
|
|
408
|
+
</div>
|
|
409
|
+
</div>
|
|
237
410
|
</div>
|
|
238
411
|
</div>
|
|
239
412
|
`;
|