@octo-cyber/ai 0.5.5 → 0.5.6
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/dist/shared/IClaudeCodeSessionManager.d.ts +151 -0
- package/dist/shared/IClaudeCodeSessionManager.d.ts.map +1 -0
- package/dist/shared/IClaudeCodeSessionManager.js +6 -0
- package/dist/shared/IClaudeCodeSessionManager.js.map +1 -0
- package/dist/src/BranchDecisionEngine.d.ts +73 -0
- package/dist/src/BranchDecisionEngine.d.ts.map +1 -0
- package/dist/src/BranchDecisionEngine.js +195 -0
- package/dist/src/BranchDecisionEngine.js.map +1 -0
- package/dist/src/agent/agent-approval.controller.d.ts +20 -0
- package/dist/src/agent/agent-approval.controller.d.ts.map +1 -0
- package/dist/src/agent/agent-approval.controller.js +101 -0
- package/dist/src/agent/agent-approval.controller.js.map +1 -0
- package/dist/src/agent/agent-approval.entity.d.ts +15 -0
- package/dist/src/agent/agent-approval.entity.d.ts.map +1 -0
- package/dist/src/agent/agent-approval.entity.js +63 -0
- package/dist/src/agent/agent-approval.entity.js.map +1 -0
- package/dist/src/agent/agent-approval.service.d.ts +35 -0
- package/dist/src/agent/agent-approval.service.d.ts.map +1 -0
- package/dist/src/agent/agent-approval.service.js +109 -0
- package/dist/src/agent/agent-approval.service.js.map +1 -0
- package/dist/src/agent/agent-gateway.controller.d.ts +30 -0
- package/dist/src/agent/agent-gateway.controller.d.ts.map +1 -0
- package/dist/src/agent/agent-gateway.controller.js +112 -0
- package/dist/src/agent/agent-gateway.controller.js.map +1 -0
- package/dist/src/agent/agent-gateway.service.d.ts +33 -0
- package/dist/src/agent/agent-gateway.service.d.ts.map +1 -0
- package/dist/src/agent/agent-gateway.service.js +84 -0
- package/dist/src/agent/agent-gateway.service.js.map +1 -0
- package/dist/src/agent/agent-registry.service.d.ts +30 -0
- package/dist/src/agent/agent-registry.service.d.ts.map +1 -0
- package/dist/src/agent/agent-registry.service.js +45 -0
- package/dist/src/agent/agent-registry.service.js.map +1 -0
- package/dist/src/agent/agent-run.controller.d.ts +42 -0
- package/dist/src/agent/agent-run.controller.d.ts.map +1 -0
- package/dist/src/agent/agent-run.controller.js +195 -0
- package/dist/src/agent/agent-run.controller.js.map +1 -0
- package/dist/src/agent/agent-run.entity.d.ts +35 -0
- package/dist/src/agent/agent-run.entity.d.ts.map +1 -0
- package/dist/src/agent/agent-run.entity.js +98 -0
- package/dist/src/agent/agent-run.entity.js.map +1 -0
- package/dist/src/agent/agent-run.service.d.ts +48 -0
- package/dist/src/agent/agent-run.service.d.ts.map +1 -0
- package/dist/src/agent/agent-run.service.js +155 -0
- package/dist/src/agent/agent-run.service.js.map +1 -0
- package/dist/src/agent/agent-session.controller.d.ts +20 -0
- package/dist/src/agent/agent-session.controller.d.ts.map +1 -0
- package/dist/src/agent/agent-session.controller.js +97 -0
- package/dist/src/agent/agent-session.controller.js.map +1 -0
- package/dist/src/agent/agent-session.entity.d.ts +13 -0
- package/dist/src/agent/agent-session.entity.d.ts.map +1 -0
- package/dist/src/agent/agent-session.entity.js +57 -0
- package/dist/src/agent/agent-session.entity.js.map +1 -0
- package/dist/src/agent/agent-session.service.d.ts +38 -0
- package/dist/src/agent/agent-session.service.d.ts.map +1 -0
- package/dist/src/agent/agent-session.service.js +112 -0
- package/dist/src/agent/agent-session.service.js.map +1 -0
- package/dist/src/agent/coding-tools.d.ts +7 -0
- package/dist/src/agent/coding-tools.d.ts.map +1 -0
- package/dist/src/agent/coding-tools.js +181 -0
- package/dist/src/agent/coding-tools.js.map +1 -0
- package/dist/src/agent/computer-use-tools.d.ts +15 -0
- package/dist/src/agent/computer-use-tools.d.ts.map +1 -0
- package/dist/src/agent/computer-use-tools.js +256 -0
- package/dist/src/agent/computer-use-tools.js.map +1 -0
- package/dist/src/agent/external-agent.controller.d.ts +41 -0
- package/dist/src/agent/external-agent.controller.d.ts.map +1 -0
- package/dist/src/agent/external-agent.controller.js +129 -0
- package/dist/src/agent/external-agent.controller.js.map +1 -0
- package/dist/src/agent/external-agent.entity.d.ts +22 -0
- package/dist/src/agent/external-agent.entity.d.ts.map +1 -0
- package/dist/src/agent/external-agent.entity.js +75 -0
- package/dist/src/agent/external-agent.entity.js.map +1 -0
- package/dist/src/agent/external-agent.service.d.ts +60 -0
- package/dist/src/agent/external-agent.service.d.ts.map +1 -0
- package/dist/src/agent/external-agent.service.js +143 -0
- package/dist/src/agent/external-agent.service.js.map +1 -0
- package/dist/src/ai.module.d.ts +22 -0
- package/dist/src/ai.module.d.ts.map +1 -0
- package/dist/src/ai.module.js +178 -0
- package/dist/src/ai.module.js.map +1 -0
- package/dist/{cli → src/cli}/adapters/antigravity.adapter.d.ts +2 -0
- package/dist/src/cli/adapters/antigravity.adapter.d.ts.map +1 -0
- package/dist/{cli → src/cli}/adapters/antigravity.adapter.js +78 -0
- package/dist/src/cli/adapters/antigravity.adapter.js.map +1 -0
- package/dist/src/cli/adapters/claude-cli.adapter.d.ts.map +1 -0
- package/dist/{cli → src/cli}/adapters/claude-cli.adapter.js +2 -0
- package/dist/src/cli/adapters/claude-cli.adapter.js.map +1 -0
- package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
- package/dist/src/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/cli-proxy-api.adapter.js +239 -0
- package/dist/src/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
- package/dist/src/cli/adapters/codex-cli.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/codex-cli.adapter.js.map +1 -0
- package/dist/src/cli/adapters/detect-cli.d.ts.map +1 -0
- package/dist/src/cli/adapters/detect-cli.js.map +1 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.js.map +1 -0
- package/dist/src/cli/adapters/index.d.ts.map +1 -0
- package/dist/src/cli/adapters/index.js.map +1 -0
- package/dist/{cli → src/cli}/cli-executor.service.d.ts +2 -0
- package/dist/src/cli/cli-executor.service.d.ts.map +1 -0
- package/dist/{cli → src/cli}/cli-executor.service.js +21 -1
- package/dist/src/cli/cli-executor.service.js.map +1 -0
- package/dist/src/cli/cli-registry.service.d.ts.map +1 -0
- package/dist/{cli → src/cli}/cli-registry.service.js +3 -1
- package/dist/src/cli/cli-registry.service.js.map +1 -0
- package/dist/{cli → src/cli}/controllers/ai-cli.controller.d.ts +4 -0
- package/dist/src/cli/controllers/ai-cli.controller.d.ts.map +1 -0
- package/dist/{cli → src/cli}/controllers/ai-cli.controller.js +33 -4
- package/dist/src/cli/controllers/ai-cli.controller.js.map +1 -0
- package/dist/{cli → src/cli}/index.d.ts +1 -1
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/{cli → src/cli}/types.d.ts +23 -1
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/{skill → src/cli}/types.js.map +1 -1
- package/dist/{cli → src/cli}/workspace.service.d.ts +11 -3
- package/dist/src/cli/workspace.service.d.ts.map +1 -0
- package/dist/{cli → src/cli}/workspace.service.js +61 -6
- package/dist/src/cli/workspace.service.js.map +1 -0
- package/dist/src/computer-use/computer-use.controller.d.ts +23 -0
- package/dist/src/computer-use/computer-use.controller.d.ts.map +1 -0
- package/dist/src/computer-use/computer-use.controller.js +87 -0
- package/dist/src/computer-use/computer-use.controller.js.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +51 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/orchestrator/orchestrator-plan.entity.d.ts +31 -0
- package/dist/src/orchestrator/orchestrator-plan.entity.d.ts.map +1 -0
- package/dist/src/orchestrator/orchestrator-plan.entity.js +69 -0
- package/dist/src/orchestrator/orchestrator-plan.entity.js.map +1 -0
- package/dist/src/orchestrator/orchestrator-plan.service.d.ts +27 -0
- package/dist/src/orchestrator/orchestrator-plan.service.d.ts.map +1 -0
- package/dist/src/orchestrator/orchestrator-plan.service.js +201 -0
- package/dist/src/orchestrator/orchestrator-plan.service.js.map +1 -0
- package/dist/src/orchestrator/orchestrator.controller.d.ts +29 -0
- package/dist/src/orchestrator/orchestrator.controller.d.ts.map +1 -0
- package/dist/src/orchestrator/orchestrator.controller.js +144 -0
- package/dist/src/orchestrator/orchestrator.controller.js.map +1 -0
- package/dist/src/orchestrator/workflow-feedback.entity.d.ts +12 -0
- package/dist/src/orchestrator/workflow-feedback.entity.d.ts.map +1 -0
- package/dist/src/orchestrator/workflow-feedback.entity.js +49 -0
- package/dist/src/orchestrator/workflow-feedback.entity.js.map +1 -0
- package/dist/src/orchestrator/workflow-feedback.service.d.ts +14 -0
- package/dist/src/orchestrator/workflow-feedback.service.d.ts.map +1 -0
- package/dist/src/orchestrator/workflow-feedback.service.js +51 -0
- package/dist/src/orchestrator/workflow-feedback.service.js.map +1 -0
- package/dist/src/session/claude-code-session-manager.service.d.ts +28 -0
- package/dist/src/session/claude-code-session-manager.service.d.ts.map +1 -0
- package/dist/src/session/claude-code-session-manager.service.js +177 -0
- package/dist/src/session/claude-code-session-manager.service.js.map +1 -0
- package/dist/src/skill/controllers/skill-market.controller.d.ts +18 -0
- package/dist/src/skill/controllers/skill-market.controller.d.ts.map +1 -0
- package/dist/src/skill/controllers/skill-market.controller.js +128 -0
- package/dist/src/skill/controllers/skill-market.controller.js.map +1 -0
- package/dist/{skill → src/skill}/controllers/skill.controller.d.ts +4 -0
- package/dist/src/skill/controllers/skill.controller.d.ts.map +1 -0
- package/dist/{skill → src/skill}/controllers/skill.controller.js +31 -0
- package/dist/src/skill/controllers/skill.controller.js.map +1 -0
- package/dist/src/skill/entities/octo-skill.entity.d.ts.map +1 -0
- package/dist/src/skill/entities/octo-skill.entity.js.map +1 -0
- package/dist/{skill → src/skill}/index.d.ts +3 -1
- package/dist/src/skill/index.d.ts.map +1 -0
- package/dist/{skill → src/skill}/index.js +5 -1
- package/dist/src/skill/index.js.map +1 -0
- package/dist/src/skill/services/skill-generator.service.d.ts.map +1 -0
- package/dist/src/skill/services/skill-generator.service.js.map +1 -0
- package/dist/{skill → src/skill}/services/skill-installer.service.d.ts +27 -0
- package/dist/src/skill/services/skill-installer.service.d.ts.map +1 -0
- package/dist/{skill → src/skill}/services/skill-installer.service.js +108 -0
- package/dist/src/skill/services/skill-installer.service.js.map +1 -0
- package/dist/src/skill/services/skill-market-helpers.d.ts +25 -0
- package/dist/src/skill/services/skill-market-helpers.d.ts.map +1 -0
- package/dist/src/skill/services/skill-market-helpers.js +22 -0
- package/dist/src/skill/services/skill-market-helpers.js.map +1 -0
- package/dist/src/skill/services/skill-market.service.d.ts +60 -0
- package/dist/src/skill/services/skill-market.service.d.ts.map +1 -0
- package/dist/src/skill/services/skill-market.service.js +228 -0
- package/dist/src/skill/services/skill-market.service.js.map +1 -0
- package/dist/src/skill/services/skill-registry.service.d.ts.map +1 -0
- package/dist/{skill → src/skill}/services/skill-registry.service.js +4 -4
- package/dist/src/skill/services/skill-registry.service.js.map +1 -0
- package/dist/{skill → src/skill}/types.d.ts +32 -1
- package/dist/src/skill/types.d.ts.map +1 -0
- package/dist/{cli → src/skill}/types.js.map +1 -1
- package/dist/src/workflow-design/DocumentExtractorAgent.d.ts +47 -0
- package/dist/src/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/DocumentExtractorAgent.js +118 -0
- package/dist/src/workflow-design/DocumentExtractorAgent.js.map +1 -0
- package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
- package/dist/src/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
- package/dist/src/workflow-design/N8nNodeKnowledgeBase.js +362 -0
- package/dist/src/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
- package/dist/src/workflow-design/OctoAgentClient.d.ts +42 -0
- package/dist/src/workflow-design/OctoAgentClient.d.ts.map +1 -0
- package/dist/src/workflow-design/OctoAgentClient.js +191 -0
- package/dist/src/workflow-design/OctoAgentClient.js.map +1 -0
- package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
- package/dist/src/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
- package/dist/src/workflow-design/WorkflowDesignOrchestrator.js +265 -0
- package/dist/src/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
- package/dist/src/workflow-design/agents/ActionChainAgent.d.ts +9 -0
- package/dist/src/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/agents/ActionChainAgent.js +79 -0
- package/dist/src/workflow-design/agents/ActionChainAgent.js.map +1 -0
- package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
- package/dist/src/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/agents/CodeScriptAgent.js +96 -0
- package/dist/src/workflow-design/agents/CodeScriptAgent.js.map +1 -0
- package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
- package/dist/src/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/agents/LogicFlowAgent.js +78 -0
- package/dist/src/workflow-design/agents/LogicFlowAgent.js.map +1 -0
- package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
- package/dist/src/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/agents/TriggerAnalystAgent.js +65 -0
- package/dist/src/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
- package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
- package/dist/src/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
- package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
- package/dist/src/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
- package/dist/src/workflow-design/index.d.ts +12 -0
- package/dist/src/workflow-design/index.d.ts.map +1 -0
- package/dist/src/workflow-design/index.js +23 -0
- package/dist/src/workflow-design/index.js.map +1 -0
- package/dist/src/workflow-design/types.d.ts +155 -0
- package/dist/src/workflow-design/types.d.ts.map +1 -0
- package/dist/src/workflow-design/types.js +6 -0
- package/dist/src/workflow-design/types.js.map +1 -0
- package/package.json +20 -14
- package/web/components/CreateWorkspaceDialog.tsx +157 -0
- package/web/components/DirBrowser.tsx +85 -0
- package/web/components/GithubTokenDialog.tsx +152 -0
- package/web/components/LocalPathSection.tsx +91 -0
- package/web/components/MarketInstallDialog.tsx +196 -0
- package/web/components/MarketSkillCard.tsx +74 -0
- package/web/components/RepoList.tsx +97 -0
- package/web/components/SearchResultsGrid.tsx +55 -0
- package/web/components/SkillCard.tsx +4 -1
- package/web/components/ToolCard.tsx +88 -0
- package/web/components/WorkspaceCard.tsx +146 -0
- package/web/components/WorkspaceItem.tsx +65 -0
- package/web/components/WorkspaceSelect.tsx +94 -0
- package/web/index.ts +18 -1
- package/web/manifest.ts +7 -0
- package/web/messages/en-US.json +231 -7
- package/web/messages/zh-CN.json +234 -7
- package/web/pages/AgentMarketPage.tsx +318 -0
- package/web/pages/AgentRunsPage.tsx +162 -0
- package/web/pages/AgentsPage.tsx +239 -0
- package/web/pages/AiCliToolsPage.tsx +17 -128
- package/web/pages/ApprovalsPage.tsx +260 -0
- package/web/pages/OrchestratorPage.tsx +384 -0
- package/web/pages/SessionsPage.tsx +248 -0
- package/web/pages/SkillMarketPage.tsx +25 -0
- package/web/pages/WorkspaceSection.tsx +13 -113
- package/web/pages/WorkspacesPage.tsx +29 -254
- package/web/services/agent-approval.service.ts +35 -0
- package/web/services/agent-gateway.service.ts +41 -0
- package/web/services/agent-run.service.ts +48 -0
- package/web/services/agent-session.service.ts +30 -0
- package/web/services/ai-cli-service.ts +33 -0
- package/web/services/external-agent.service.ts +38 -0
- package/web/services/orchestrator.service.ts +52 -0
- package/web/services/skill-market-service.ts +88 -0
- package/web/services/skill-service.ts +12 -0
- package/dist/ai.module.d.ts +0 -4
- package/dist/ai.module.d.ts.map +0 -1
- package/dist/ai.module.js +0 -59
- package/dist/ai.module.js.map +0 -1
- package/dist/cli/adapters/antigravity.adapter.d.ts.map +0 -1
- package/dist/cli/adapters/antigravity.adapter.js.map +0 -1
- package/dist/cli/adapters/claude-cli.adapter.d.ts.map +0 -1
- package/dist/cli/adapters/claude-cli.adapter.js.map +0 -1
- package/dist/cli/adapters/codex-cli.adapter.d.ts.map +0 -1
- package/dist/cli/adapters/codex-cli.adapter.js.map +0 -1
- package/dist/cli/adapters/detect-cli.d.ts.map +0 -1
- package/dist/cli/adapters/detect-cli.js.map +0 -1
- package/dist/cli/adapters/gemini-cli.adapter.d.ts.map +0 -1
- package/dist/cli/adapters/gemini-cli.adapter.js.map +0 -1
- package/dist/cli/adapters/index.d.ts.map +0 -1
- package/dist/cli/adapters/index.js.map +0 -1
- package/dist/cli/cli-executor.service.d.ts.map +0 -1
- package/dist/cli/cli-executor.service.js.map +0 -1
- package/dist/cli/cli-registry.service.d.ts.map +0 -1
- package/dist/cli/cli-registry.service.js.map +0 -1
- package/dist/cli/controllers/ai-cli.controller.d.ts.map +0 -1
- package/dist/cli/controllers/ai-cli.controller.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/workspace.service.d.ts.map +0 -1
- package/dist/cli/workspace.service.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +0 -1
- package/dist/skill/controllers/skill.controller.d.ts.map +0 -1
- package/dist/skill/controllers/skill.controller.js.map +0 -1
- package/dist/skill/entities/octo-skill.entity.d.ts.map +0 -1
- package/dist/skill/entities/octo-skill.entity.js.map +0 -1
- package/dist/skill/index.d.ts.map +0 -1
- package/dist/skill/index.js.map +0 -1
- package/dist/skill/services/skill-generator.service.d.ts.map +0 -1
- package/dist/skill/services/skill-generator.service.js.map +0 -1
- package/dist/skill/services/skill-installer.service.d.ts.map +0 -1
- package/dist/skill/services/skill-installer.service.js.map +0 -1
- package/dist/skill/services/skill-registry.service.d.ts.map +0 -1
- package/dist/skill/services/skill-registry.service.js.map +0 -1
- package/dist/skill/types.d.ts.map +0 -1
- /package/dist/{cli → src/cli}/adapters/claude-cli.adapter.d.ts +0 -0
- /package/dist/{cli → src/cli}/adapters/codex-cli.adapter.d.ts +0 -0
- /package/dist/{cli → src/cli}/adapters/codex-cli.adapter.js +0 -0
- /package/dist/{cli → src/cli}/adapters/detect-cli.d.ts +0 -0
- /package/dist/{cli → src/cli}/adapters/detect-cli.js +0 -0
- /package/dist/{cli → src/cli}/adapters/gemini-cli.adapter.d.ts +0 -0
- /package/dist/{cli → src/cli}/adapters/gemini-cli.adapter.js +0 -0
- /package/dist/{cli → src/cli}/adapters/index.d.ts +0 -0
- /package/dist/{cli → src/cli}/adapters/index.js +0 -0
- /package/dist/{cli → src/cli}/cli-registry.service.d.ts +0 -0
- /package/dist/{cli → src/cli}/index.js +0 -0
- /package/dist/{cli → src/cli}/types.js +0 -0
- /package/dist/{skill → src/skill}/entities/octo-skill.entity.d.ts +0 -0
- /package/dist/{skill → src/skill}/entities/octo-skill.entity.js +0 -0
- /package/dist/{skill → src/skill}/services/skill-generator.service.d.ts +0 -0
- /package/dist/{skill → src/skill}/services/skill-generator.service.js +0 -0
- /package/dist/{skill → src/skill}/services/skill-registry.service.d.ts +0 -0
- /package/dist/{skill → src/skill}/types.js +0 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OctoAgentClient = void 0;
|
|
7
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
8
|
+
const computer_use_tools_js_1 = require("../agent/computer-use-tools.js");
|
|
9
|
+
// ============================================================
|
|
10
|
+
// OctoAgentClient
|
|
11
|
+
// Wraps the Anthropic SDK pointed at cli-proxy-api.
|
|
12
|
+
// Supports single-call, agent-loop, and streaming.
|
|
13
|
+
// ============================================================
|
|
14
|
+
// ============================================================
|
|
15
|
+
// Tool result helpers
|
|
16
|
+
// ============================================================
|
|
17
|
+
/**
|
|
18
|
+
* Convert a tool execute() return value to an Anthropic tool result content.
|
|
19
|
+
* If the result carries the IMAGE_RESULT_PREFIX sentinel, it is wrapped as an
|
|
20
|
+
* ImageBlockParam so Claude can see the screenshot in the agent loop.
|
|
21
|
+
*/
|
|
22
|
+
function buildToolResultContent(result) {
|
|
23
|
+
if (result.startsWith(computer_use_tools_js_1.IMAGE_RESULT_PREFIX)) {
|
|
24
|
+
const base64Data = result.slice(computer_use_tools_js_1.IMAGE_RESULT_PREFIX.length);
|
|
25
|
+
return [
|
|
26
|
+
{
|
|
27
|
+
type: 'image',
|
|
28
|
+
source: { type: 'base64', media_type: 'image/png', data: base64Data },
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
const CLI_PROXY_BASE_URL = 'http://127.0.0.1:8317';
|
|
35
|
+
const DEFAULT_MODEL = 'claude-sonnet-4-5';
|
|
36
|
+
const DEFAULT_MAX_ROUNDS = 10;
|
|
37
|
+
const DEFAULT_TIMEOUT_MS = 300_000;
|
|
38
|
+
const SINGLE_CALL_TIMEOUT_MS = 60_000;
|
|
39
|
+
class OctoAgentClient {
|
|
40
|
+
model;
|
|
41
|
+
/**
|
|
42
|
+
* Exposed for test injection:
|
|
43
|
+
* vi.spyOn(client.anthropic.messages, 'create').mockResolvedValue(...)
|
|
44
|
+
*/
|
|
45
|
+
anthropic;
|
|
46
|
+
constructor(model, baseUrl) {
|
|
47
|
+
this.model = model ?? process.env['CLI_PROXY_MODEL'] ?? DEFAULT_MODEL;
|
|
48
|
+
this.anthropic = new sdk_1.default({
|
|
49
|
+
baseURL: baseUrl ?? CLI_PROXY_BASE_URL,
|
|
50
|
+
apiKey: 'cli-proxy',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Single-turn LLM call.
|
|
55
|
+
* @param messages Conversation turns (user/assistant only — no system).
|
|
56
|
+
* @param system System instructions: plain string or cached content blocks.
|
|
57
|
+
* @param tools Optional tool definitions (ignored in the Anthropic call here;
|
|
58
|
+
* use run() for tool-calling loops).
|
|
59
|
+
* @returns The assistant's text reply.
|
|
60
|
+
*/
|
|
61
|
+
async singleCall(messages, system, tools) {
|
|
62
|
+
const apiMessages = messages
|
|
63
|
+
.filter((m) => m.role !== 'system')
|
|
64
|
+
.map((m) => ({ role: m.role, content: m.content }));
|
|
65
|
+
const createPromise = this.anthropic.messages
|
|
66
|
+
.create({
|
|
67
|
+
model: this.model,
|
|
68
|
+
system: system, // SDK accepts string | TextBlockParam[]
|
|
69
|
+
messages: apiMessages,
|
|
70
|
+
max_tokens: 4096,
|
|
71
|
+
temperature: 0.2,
|
|
72
|
+
})
|
|
73
|
+
.then((response) => {
|
|
74
|
+
const textBlock = response.content.find((b) => b.type === 'text');
|
|
75
|
+
return textBlock?.text ?? '';
|
|
76
|
+
});
|
|
77
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
78
|
+
setTimeout(() => reject(new Error(`singleCall timed out after ${SINGLE_CALL_TIMEOUT_MS}ms`)), SINGLE_CALL_TIMEOUT_MS);
|
|
79
|
+
});
|
|
80
|
+
return Promise.race([createPromise, timeoutPromise]);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Run a full agent loop.
|
|
84
|
+
* Sends systemPrompt + userMessage, processes tool_calls until the model
|
|
85
|
+
* stops calling tools or maxRounds is reached.
|
|
86
|
+
*
|
|
87
|
+
* @returns The accumulated text output from all assistant turns.
|
|
88
|
+
*/
|
|
89
|
+
async run(options) {
|
|
90
|
+
const { systemPrompt, userMessage, tools = [], maxRounds = DEFAULT_MAX_ROUNDS, timeoutMs = DEFAULT_TIMEOUT_MS, onChunk, } = options;
|
|
91
|
+
const toolMap = new Map(tools.map((t) => [t.name, t]));
|
|
92
|
+
const messages = [{ role: 'user', content: userMessage }];
|
|
93
|
+
const outputParts = [];
|
|
94
|
+
const anthropicTools = tools.length > 0
|
|
95
|
+
? tools.map((t) => ({
|
|
96
|
+
name: t.name,
|
|
97
|
+
description: t.description,
|
|
98
|
+
input_schema: { type: 'object', ...t.parameters },
|
|
99
|
+
}))
|
|
100
|
+
: undefined;
|
|
101
|
+
const runLoop = async () => {
|
|
102
|
+
for (let round = 0; round < maxRounds; round++) {
|
|
103
|
+
const response = await this.anthropic.messages.create({
|
|
104
|
+
model: this.model,
|
|
105
|
+
system: systemPrompt,
|
|
106
|
+
messages,
|
|
107
|
+
tools: anthropicTools,
|
|
108
|
+
max_tokens: 4096,
|
|
109
|
+
temperature: 0.2,
|
|
110
|
+
});
|
|
111
|
+
// Collect text blocks
|
|
112
|
+
for (const block of response.content) {
|
|
113
|
+
if (block.type === 'text' && block.text) {
|
|
114
|
+
outputParts.push(block.text);
|
|
115
|
+
onChunk?.(block.text);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// No tool use → done
|
|
119
|
+
const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use');
|
|
120
|
+
if (toolUseBlocks.length === 0)
|
|
121
|
+
break;
|
|
122
|
+
// Add assistant turn with tool_use to history
|
|
123
|
+
messages.push({ role: 'assistant', content: response.content });
|
|
124
|
+
// Execute tools and collect results
|
|
125
|
+
const toolResults = [];
|
|
126
|
+
for (const toolUse of toolUseBlocks) {
|
|
127
|
+
const tool = toolMap.get(toolUse.name);
|
|
128
|
+
let result;
|
|
129
|
+
if (!tool) {
|
|
130
|
+
result = `Error: unknown tool "${toolUse.name}"`;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
try {
|
|
134
|
+
result = await tool.execute(toolUse.input);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
result = `Error executing tool: ${err.message}`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
toolResults.push({
|
|
141
|
+
type: 'tool_result',
|
|
142
|
+
tool_use_id: toolUse.id,
|
|
143
|
+
content: buildToolResultContent(result),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
messages.push({ role: 'user', content: toolResults });
|
|
147
|
+
}
|
|
148
|
+
return outputParts.join('\n');
|
|
149
|
+
};
|
|
150
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
151
|
+
setTimeout(() => reject(new Error(`Agent run timed out after ${timeoutMs}ms`)), timeoutMs);
|
|
152
|
+
});
|
|
153
|
+
return Promise.race([runLoop(), timeoutPromise]);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Streaming text generation — yields tokens as they arrive.
|
|
157
|
+
* @param messages Conversation turns (user/assistant).
|
|
158
|
+
* @param systemPrompt System instructions.
|
|
159
|
+
* @returns AsyncIterable of text chunks.
|
|
160
|
+
*/
|
|
161
|
+
async *stream(messages, systemPrompt) {
|
|
162
|
+
const stream = this.anthropic.messages.stream({
|
|
163
|
+
model: this.model,
|
|
164
|
+
system: systemPrompt,
|
|
165
|
+
messages,
|
|
166
|
+
max_tokens: 4096,
|
|
167
|
+
temperature: 0.2,
|
|
168
|
+
});
|
|
169
|
+
for await (const event of stream) {
|
|
170
|
+
if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
|
|
171
|
+
yield event.delta.text;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Parse a JSON block from an LLM response.
|
|
177
|
+
* The model often wraps JSON in markdown fences — this strips them.
|
|
178
|
+
*/
|
|
179
|
+
static parseJsonFromReply(reply) {
|
|
180
|
+
const fenceMatch = reply.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
181
|
+
const jsonText = fenceMatch ? fenceMatch[1] : reply;
|
|
182
|
+
try {
|
|
183
|
+
return JSON.parse(jsonText.trim());
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
throw new Error(`Failed to parse JSON from LLM reply: ${err.message}\nReply was:\n${reply}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.OctoAgentClient = OctoAgentClient;
|
|
191
|
+
//# sourceMappingURL=OctoAgentClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OctoAgentClient.js","sourceRoot":"","sources":["../../../src/workflow-design/OctoAgentClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { OctoAgentClient } from './OctoAgentClient.js';
|
|
2
|
+
import type { N8nWorkflow, WorkflowDraft } from './types.js';
|
|
3
|
+
export declare class WorkflowDesignOrchestrator {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private draft;
|
|
6
|
+
private readonly triggerAgent;
|
|
7
|
+
private readonly actionAgent;
|
|
8
|
+
private readonly logicAgent;
|
|
9
|
+
private readonly codeAgent;
|
|
10
|
+
private readonly validatorAgent;
|
|
11
|
+
constructor(client: OctoAgentClient);
|
|
12
|
+
/**
|
|
13
|
+
* First call: design a brand-new workflow from user intent.
|
|
14
|
+
*/
|
|
15
|
+
design(userMessage: string): Promise<N8nWorkflow>;
|
|
16
|
+
/**
|
|
17
|
+
* Subsequent calls: modify the existing workflow based on user follow-up.
|
|
18
|
+
* Only re-runs the sub-agents relevant to the detected modification scope.
|
|
19
|
+
*/
|
|
20
|
+
modify(userMessage: string): Promise<N8nWorkflow>;
|
|
21
|
+
/** Access the current draft (for debugging / partial progress). */
|
|
22
|
+
getDraft(): Readonly<WorkflowDraft>;
|
|
23
|
+
/** Reset state for a new conversation. */
|
|
24
|
+
reset(): void;
|
|
25
|
+
private runFullPipeline;
|
|
26
|
+
/** Phase 1: TriggerAnalystAgent (serial) */
|
|
27
|
+
private runPhase1;
|
|
28
|
+
/** Phase 2: ActionChainAgent + LogicFlowAgent (parallel) */
|
|
29
|
+
private runPhase2;
|
|
30
|
+
private runPhase2Actions;
|
|
31
|
+
private runPhase2Logic;
|
|
32
|
+
/** Phase 3: CodeScriptAgent (conditional) */
|
|
33
|
+
private runPhase3;
|
|
34
|
+
/** Phase 4: Assemble + Phase 5: Validate */
|
|
35
|
+
private runPhase4And5;
|
|
36
|
+
/** Phase 5: WorkflowValidatorAgent */
|
|
37
|
+
private runPhase5;
|
|
38
|
+
private assembleWorkflow;
|
|
39
|
+
private mergeActionAndLogic;
|
|
40
|
+
private specToNode;
|
|
41
|
+
private generateWorkflowName;
|
|
42
|
+
private repairFromValidationErrors;
|
|
43
|
+
private detectModificationScope;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=WorkflowDesignOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowDesignOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/workflow-design/WorkflowDesignOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,OAAO,KAAK,EAMV,WAAW,EAIX,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB,qBAAa,0BAA0B;IASzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC,OAAO,CAAC,KAAK,CAAgB;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;gBAE3B,MAAM,EAAE,eAAe;IAcpD;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYvD;;;OAGG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgCvD,mEAAmE;IACnE,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC;IAInC,0CAA0C;IAC1C,KAAK,IAAI,IAAI;YAQC,eAAe;IAO7B,4CAA4C;YAC9B,SAAS;IAQvB,4DAA4D;YAC9C,SAAS;YAOT,gBAAgB;YAahB,cAAc;IAW5B,6CAA6C;YAC/B,SAAS;IAmBvB,4CAA4C;YAC9B,aAAa;IAY3B,sCAAsC;YACxB,SAAS;IAQvB,OAAO,CAAC,gBAAgB;IA0DxB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,oBAAoB;YASd,0BAA0B;IA8BxC,OAAO,CAAC,uBAAuB;CAsBhC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkflowDesignOrchestrator = void 0;
|
|
4
|
+
const ActionChainAgent_js_1 = require("./agents/ActionChainAgent.js");
|
|
5
|
+
const CodeScriptAgent_js_1 = require("./agents/CodeScriptAgent.js");
|
|
6
|
+
const LogicFlowAgent_js_1 = require("./agents/LogicFlowAgent.js");
|
|
7
|
+
const TriggerAnalystAgent_js_1 = require("./agents/TriggerAnalystAgent.js");
|
|
8
|
+
const WorkflowValidatorAgent_js_1 = require("./agents/WorkflowValidatorAgent.js");
|
|
9
|
+
// ============================================================
|
|
10
|
+
// WorkflowDesignOrchestrator
|
|
11
|
+
// Main entry point. Maintains WorkflowDraft state and coordinates
|
|
12
|
+
// sub-agents through the 5-phase pipeline.
|
|
13
|
+
// ============================================================
|
|
14
|
+
class WorkflowDesignOrchestrator {
|
|
15
|
+
client;
|
|
16
|
+
draft;
|
|
17
|
+
triggerAgent;
|
|
18
|
+
actionAgent;
|
|
19
|
+
logicAgent;
|
|
20
|
+
codeAgent;
|
|
21
|
+
validatorAgent;
|
|
22
|
+
constructor(client) {
|
|
23
|
+
this.client = client;
|
|
24
|
+
this.triggerAgent = new TriggerAnalystAgent_js_1.TriggerAnalystAgent(client);
|
|
25
|
+
this.actionAgent = new ActionChainAgent_js_1.ActionChainAgent(client);
|
|
26
|
+
this.logicAgent = new LogicFlowAgent_js_1.LogicFlowAgent(client);
|
|
27
|
+
this.codeAgent = new CodeScriptAgent_js_1.CodeScriptAgent(client);
|
|
28
|
+
this.validatorAgent = new WorkflowValidatorAgent_js_1.WorkflowValidatorAgent(client);
|
|
29
|
+
this.draft = { intent: '', conversationHistory: [] };
|
|
30
|
+
}
|
|
31
|
+
// ============================================================
|
|
32
|
+
// Public API
|
|
33
|
+
// ============================================================
|
|
34
|
+
/**
|
|
35
|
+
* First call: design a brand-new workflow from user intent.
|
|
36
|
+
*/
|
|
37
|
+
async design(userMessage) {
|
|
38
|
+
this.draft.intent = userMessage;
|
|
39
|
+
this.draft.conversationHistory = [{ role: 'user', content: userMessage }];
|
|
40
|
+
await this.runFullPipeline();
|
|
41
|
+
if (!this.draft.finalWorkflow) {
|
|
42
|
+
throw new Error('WorkflowDesignOrchestrator: pipeline completed but finalWorkflow is not set');
|
|
43
|
+
}
|
|
44
|
+
return this.draft.finalWorkflow;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Subsequent calls: modify the existing workflow based on user follow-up.
|
|
48
|
+
* Only re-runs the sub-agents relevant to the detected modification scope.
|
|
49
|
+
*/
|
|
50
|
+
async modify(userMessage) {
|
|
51
|
+
this.draft.conversationHistory.push({ role: 'user', content: userMessage });
|
|
52
|
+
const modification = this.detectModificationScope(userMessage);
|
|
53
|
+
switch (modification.scope) {
|
|
54
|
+
case 'trigger':
|
|
55
|
+
await this.runPhase1();
|
|
56
|
+
break;
|
|
57
|
+
case 'actions':
|
|
58
|
+
await this.runPhase2Actions();
|
|
59
|
+
break;
|
|
60
|
+
case 'logic':
|
|
61
|
+
await this.runPhase2Logic();
|
|
62
|
+
break;
|
|
63
|
+
case 'code':
|
|
64
|
+
await this.runPhase3();
|
|
65
|
+
break;
|
|
66
|
+
case 'all':
|
|
67
|
+
await this.runFullPipeline();
|
|
68
|
+
return this.draft.finalWorkflow;
|
|
69
|
+
}
|
|
70
|
+
// Re-assemble and re-validate after partial update
|
|
71
|
+
await this.runPhase4And5();
|
|
72
|
+
if (!this.draft.finalWorkflow) {
|
|
73
|
+
throw new Error('WorkflowDesignOrchestrator: modification pipeline completed but finalWorkflow is not set');
|
|
74
|
+
}
|
|
75
|
+
return this.draft.finalWorkflow;
|
|
76
|
+
}
|
|
77
|
+
/** Access the current draft (for debugging / partial progress). */
|
|
78
|
+
getDraft() {
|
|
79
|
+
return this.draft;
|
|
80
|
+
}
|
|
81
|
+
/** Reset state for a new conversation. */
|
|
82
|
+
reset() {
|
|
83
|
+
this.draft = { intent: '', conversationHistory: [] };
|
|
84
|
+
}
|
|
85
|
+
// ============================================================
|
|
86
|
+
// Pipeline phases
|
|
87
|
+
// ============================================================
|
|
88
|
+
async runFullPipeline() {
|
|
89
|
+
await this.runPhase1();
|
|
90
|
+
await this.runPhase2();
|
|
91
|
+
await this.runPhase3();
|
|
92
|
+
await this.runPhase4And5();
|
|
93
|
+
}
|
|
94
|
+
/** Phase 1: TriggerAnalystAgent (serial) */
|
|
95
|
+
async runPhase1() {
|
|
96
|
+
const result = await this.triggerAgent.analyse(this.draft.intent, this.draft.conversationHistory);
|
|
97
|
+
this.draft.triggerSpec = result.spec;
|
|
98
|
+
}
|
|
99
|
+
/** Phase 2: ActionChainAgent + LogicFlowAgent (parallel) */
|
|
100
|
+
async runPhase2() {
|
|
101
|
+
await Promise.all([
|
|
102
|
+
this.runPhase2Actions(),
|
|
103
|
+
this.runPhase2Logic(),
|
|
104
|
+
]);
|
|
105
|
+
}
|
|
106
|
+
async runPhase2Actions() {
|
|
107
|
+
if (!this.draft.triggerSpec) {
|
|
108
|
+
await this.runPhase1();
|
|
109
|
+
}
|
|
110
|
+
const result = await this.actionAgent.design(this.draft.intent, this.draft.triggerSpec, this.draft.conversationHistory);
|
|
111
|
+
this.draft.actionSpecs = result.specs;
|
|
112
|
+
}
|
|
113
|
+
async runPhase2Logic() {
|
|
114
|
+
// LogicFlowAgent can run with an empty action list — it will return []
|
|
115
|
+
const actionSpecs = this.draft.actionSpecs ?? [];
|
|
116
|
+
const result = await this.logicAgent.design(this.draft.intent, actionSpecs, this.draft.conversationHistory);
|
|
117
|
+
this.draft.logicSpecs = result.specs;
|
|
118
|
+
}
|
|
119
|
+
/** Phase 3: CodeScriptAgent (conditional) */
|
|
120
|
+
async runPhase3() {
|
|
121
|
+
const actionSpecs = this.draft.actionSpecs ?? [];
|
|
122
|
+
const logicSpecs = this.draft.logicSpecs ?? [];
|
|
123
|
+
const hasCodeNodes = actionSpecs.some((s) => s.needsCodeGen);
|
|
124
|
+
if (!hasCodeNodes) {
|
|
125
|
+
this.draft.codeSpecs = {};
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const result = await this.codeAgent.generate(actionSpecs, logicSpecs, this.draft.conversationHistory);
|
|
129
|
+
this.draft.codeSpecs = result.codes;
|
|
130
|
+
}
|
|
131
|
+
/** Phase 4: Assemble + Phase 5: Validate */
|
|
132
|
+
async runPhase4And5() {
|
|
133
|
+
const workflow = this.assembleWorkflow();
|
|
134
|
+
this.draft.finalWorkflow = workflow;
|
|
135
|
+
const validation = await this.runPhase5(workflow);
|
|
136
|
+
this.draft.validationErrors = validation.errors;
|
|
137
|
+
if (!validation.valid) {
|
|
138
|
+
await this.repairFromValidationErrors(validation);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** Phase 5: WorkflowValidatorAgent */
|
|
142
|
+
async runPhase5(workflow) {
|
|
143
|
+
return this.validatorAgent.validate(workflow, this.draft.conversationHistory);
|
|
144
|
+
}
|
|
145
|
+
// ============================================================
|
|
146
|
+
// Workflow assembly (Phase 4)
|
|
147
|
+
// ============================================================
|
|
148
|
+
assembleWorkflow() {
|
|
149
|
+
const nodes = [];
|
|
150
|
+
const connections = {};
|
|
151
|
+
const triggerSpec = this.draft.triggerSpec;
|
|
152
|
+
if (!triggerSpec) {
|
|
153
|
+
throw new Error('Cannot assemble workflow: triggerSpec is missing');
|
|
154
|
+
}
|
|
155
|
+
// 1. Trigger node
|
|
156
|
+
const triggerId = 'trigger_0';
|
|
157
|
+
nodes.push(this.specToNode(triggerSpec, triggerId));
|
|
158
|
+
// 2. Build ordered list: merge actionSpecs and logicSpecs by insertAfterIndex
|
|
159
|
+
const actionSpecs = this.draft.actionSpecs ?? [];
|
|
160
|
+
const logicSpecs = this.draft.logicSpecs ?? [];
|
|
161
|
+
const ordered = this.mergeActionAndLogic(actionSpecs, logicSpecs);
|
|
162
|
+
// 3. Build nodes + connections in order
|
|
163
|
+
let prevNodeName = triggerSpec.name;
|
|
164
|
+
ordered.forEach((item, idx) => {
|
|
165
|
+
const nodeId = `node_${idx}`;
|
|
166
|
+
const node = this.specToNode(item, nodeId);
|
|
167
|
+
// Inject generated code if applicable
|
|
168
|
+
if ('needsCodeGen' in item && item.needsCodeGen && this.draft.codeSpecs) {
|
|
169
|
+
const codeKey = `action_${actionSpecs.indexOf(item)}`;
|
|
170
|
+
const code = this.draft.codeSpecs[codeKey];
|
|
171
|
+
if (code) {
|
|
172
|
+
node.parameters = { ...node.parameters, jsCode: code };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
nodes.push(node);
|
|
176
|
+
// Connect previous → current
|
|
177
|
+
if (!connections[prevNodeName]) {
|
|
178
|
+
connections[prevNodeName] = { main: [[]] };
|
|
179
|
+
}
|
|
180
|
+
connections[prevNodeName].main[0].push({
|
|
181
|
+
node: node.name,
|
|
182
|
+
type: 'main',
|
|
183
|
+
index: 0,
|
|
184
|
+
});
|
|
185
|
+
prevNodeName = node.name;
|
|
186
|
+
});
|
|
187
|
+
return {
|
|
188
|
+
name: this.generateWorkflowName(),
|
|
189
|
+
nodes,
|
|
190
|
+
connections,
|
|
191
|
+
active: false,
|
|
192
|
+
settings: { executionOrder: 'v1' },
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
mergeActionAndLogic(actionSpecs, logicSpecs) {
|
|
196
|
+
const result = [...actionSpecs];
|
|
197
|
+
// Insert logic nodes at their specified positions (descending order to preserve indices)
|
|
198
|
+
const sorted = [...logicSpecs].sort((a, b) => b.insertAfterIndex - a.insertAfterIndex);
|
|
199
|
+
for (const logic of sorted) {
|
|
200
|
+
const insertAt = logic.insertAfterIndex + 1;
|
|
201
|
+
result.splice(insertAt, 0, logic);
|
|
202
|
+
}
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
specToNode(spec, id) {
|
|
206
|
+
return {
|
|
207
|
+
id,
|
|
208
|
+
name: spec.name,
|
|
209
|
+
type: spec.type,
|
|
210
|
+
typeVersion: 1,
|
|
211
|
+
position: [spec.position.x, spec.position.y],
|
|
212
|
+
parameters: spec.parameters,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
generateWorkflowName() {
|
|
216
|
+
const words = this.draft.intent.split(/\s+/).slice(0, 5).join(' ');
|
|
217
|
+
return `Workflow: ${words}`;
|
|
218
|
+
}
|
|
219
|
+
// ============================================================
|
|
220
|
+
// Repair loop after validation errors
|
|
221
|
+
// ============================================================
|
|
222
|
+
async repairFromValidationErrors(validation) {
|
|
223
|
+
const MAX_REPAIR_ROUNDS = 2;
|
|
224
|
+
for (let round = 0; round < MAX_REPAIR_ROUNDS; round++) {
|
|
225
|
+
const errorSummary = validation.errors.join('; ');
|
|
226
|
+
// Classify which agents to re-run based on error messages
|
|
227
|
+
const needsTriggerRepair = /trigger/i.test(errorSummary);
|
|
228
|
+
const needsActionRepair = /node.*does not exist|missing.*name|duplicate/i.test(errorSummary);
|
|
229
|
+
if (needsTriggerRepair)
|
|
230
|
+
await this.runPhase1();
|
|
231
|
+
if (needsActionRepair) {
|
|
232
|
+
await this.runPhase2Actions();
|
|
233
|
+
await this.runPhase2Logic();
|
|
234
|
+
}
|
|
235
|
+
const repairedWorkflow = this.assembleWorkflow();
|
|
236
|
+
const reValidation = await this.runPhase5(repairedWorkflow);
|
|
237
|
+
this.draft.finalWorkflow = repairedWorkflow;
|
|
238
|
+
this.draft.validationErrors = reValidation.errors;
|
|
239
|
+
if (reValidation.valid)
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// ============================================================
|
|
244
|
+
// Modification intent detection
|
|
245
|
+
// ============================================================
|
|
246
|
+
detectModificationScope(userMessage) {
|
|
247
|
+
const lower = userMessage.toLowerCase();
|
|
248
|
+
if (/trigger|schedule|cron|webhook|每.*分钟|定时|触发/.test(lower)) {
|
|
249
|
+
return { scope: 'trigger', description: userMessage };
|
|
250
|
+
}
|
|
251
|
+
if (/代码|code|script|function|函数/.test(lower)) {
|
|
252
|
+
return { scope: 'code', description: userMessage };
|
|
253
|
+
}
|
|
254
|
+
if (/if|条件|判断|分支|error|错误|merge|合并|switch/.test(lower)) {
|
|
255
|
+
return { scope: 'logic', description: userMessage };
|
|
256
|
+
}
|
|
257
|
+
if (/add|remove|delete|step|节点|加一步|删掉|新增|修改步骤/.test(lower)) {
|
|
258
|
+
return { scope: 'actions', description: userMessage };
|
|
259
|
+
}
|
|
260
|
+
// Default: full re-design
|
|
261
|
+
return { scope: 'all', description: userMessage };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.WorkflowDesignOrchestrator = WorkflowDesignOrchestrator;
|
|
265
|
+
//# sourceMappingURL=WorkflowDesignOrchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowDesignOrchestrator.js","sourceRoot":"","sources":["../../../src/workflow-design/WorkflowDesignOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { OctoAgentClient } from '../OctoAgentClient.js';
|
|
2
|
+
import type { ActionChainResult, Message, TriggerNodeSpec } from '../types.js';
|
|
3
|
+
export declare class ActionChainAgent {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(client: OctoAgentClient);
|
|
6
|
+
design(intent: string, triggerSpec: TriggerNodeSpec, history: Message[]): Promise<ActionChainResult>;
|
|
7
|
+
private validateAndNormalise;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ActionChainAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionChainAgent.d.ts","sourceRoot":"","sources":["../../../../src/workflow-design/agents/ActionChainAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EACV,iBAAiB,EAEjB,OAAO,EACP,eAAe,EAChB,MAAM,aAAa,CAAC;AAqCrB,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE9C,MAAM,CACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,iBAAiB,CAAC;IAuB7B,OAAO,CAAC,oBAAoB;CAiB7B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActionChainAgent = void 0;
|
|
4
|
+
const OctoAgentClient_js_1 = require("../OctoAgentClient.js");
|
|
5
|
+
const N8nNodeKnowledgeBase_js_1 = require("../N8nNodeKnowledgeBase.js");
|
|
6
|
+
// ============================================================
|
|
7
|
+
// ActionChainAgent
|
|
8
|
+
// Designs the main execution chain of action nodes for a workflow.
|
|
9
|
+
// Runs in parallel with LogicFlowAgent (Phase 2).
|
|
10
|
+
// ============================================================
|
|
11
|
+
const SYSTEM_PROMPT_BASE = `You are an n8n workflow action chain designer.
|
|
12
|
+
Your job is to design the sequence of action nodes that fulfil the user's workflow requirement.
|
|
13
|
+
You will be told what trigger node was chosen; your nodes come AFTER the trigger.
|
|
14
|
+
|
|
15
|
+
Rules:
|
|
16
|
+
- Respond with ONLY a JSON object inside a markdown json fence.
|
|
17
|
+
- The JSON must match this shape exactly:
|
|
18
|
+
{
|
|
19
|
+
"specs": [
|
|
20
|
+
{
|
|
21
|
+
"type": "<n8n node type>",
|
|
22
|
+
"name": "<display name>",
|
|
23
|
+
"parameters": { <params> },
|
|
24
|
+
"position": { "x": <number>, "y": 300 },
|
|
25
|
+
"dependsOn": "<name of upstream node or null>",
|
|
26
|
+
"needsCodeGen": <true|false>,
|
|
27
|
+
"codeDescription": "<optional description when needsCodeGen=true>"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"reasoning": "<brief explanation>"
|
|
31
|
+
}
|
|
32
|
+
- Start the first node's x at 460, increment by 220 for each subsequent node.
|
|
33
|
+
- Set "dependsOn" to the name of the preceding node (trigger or action).
|
|
34
|
+
First action node's dependsOn = the trigger node name.
|
|
35
|
+
- Mark "needsCodeGen": true for any Function/Code node, and provide "codeDescription".
|
|
36
|
+
- Use realistic, minimal parameters; leave credentials as empty strings.
|
|
37
|
+
- Include at most 8 action nodes.
|
|
38
|
+
`;
|
|
39
|
+
class ActionChainAgent {
|
|
40
|
+
client;
|
|
41
|
+
constructor(client) {
|
|
42
|
+
this.client = client;
|
|
43
|
+
}
|
|
44
|
+
async design(intent, triggerSpec, history) {
|
|
45
|
+
const categories = N8nNodeKnowledgeBase_js_1.N8nNodeKnowledgeBase.inferCategories(intent);
|
|
46
|
+
const actionCategories = categories.filter((c) => c !== 'trigger');
|
|
47
|
+
const system = [
|
|
48
|
+
{ type: 'text', text: SYSTEM_PROMPT_BASE },
|
|
49
|
+
N8nNodeKnowledgeBase_js_1.N8nNodeKnowledgeBase.buildCachedBlock(actionCategories),
|
|
50
|
+
];
|
|
51
|
+
const contextBlock = `Trigger node chosen: "${triggerSpec.name}" (type: ${triggerSpec.type})
|
|
52
|
+
|
|
53
|
+
Workflow requirement: ${intent}`;
|
|
54
|
+
const messages = [
|
|
55
|
+
...history,
|
|
56
|
+
{ role: 'user', content: contextBlock },
|
|
57
|
+
];
|
|
58
|
+
const reply = await this.client.singleCall(messages, system);
|
|
59
|
+
const result = OctoAgentClient_js_1.OctoAgentClient.parseJsonFromReply(reply);
|
|
60
|
+
return this.validateAndNormalise(result);
|
|
61
|
+
}
|
|
62
|
+
validateAndNormalise(result) {
|
|
63
|
+
if (!Array.isArray(result.specs)) {
|
|
64
|
+
throw new Error('ActionChainAgent: specs must be an array');
|
|
65
|
+
}
|
|
66
|
+
const specs = result.specs.map((s, idx) => ({
|
|
67
|
+
type: s.type || 'n8n-nodes-base.set',
|
|
68
|
+
name: s.name || `Step ${idx + 1}`,
|
|
69
|
+
parameters: s.parameters ?? {},
|
|
70
|
+
position: s.position ?? { x: 460 + idx * 220, y: 300 },
|
|
71
|
+
dependsOn: s.dependsOn ?? undefined,
|
|
72
|
+
needsCodeGen: s.needsCodeGen ?? false,
|
|
73
|
+
codeDescription: s.codeDescription ?? undefined,
|
|
74
|
+
}));
|
|
75
|
+
return { specs, reasoning: result.reasoning ?? '' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.ActionChainAgent = ActionChainAgent;
|
|
79
|
+
//# sourceMappingURL=ActionChainAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionChainAgent.js","sourceRoot":"","sources":["../../../../src/workflow-design/agents/ActionChainAgent.ts"],"names":[],"mappings":";;;AAAA,8DAAwD;AACxD,wEAAkE;AAQlE,+DAA+D;AAC/D,mBAAmB;AACnB,mEAAmE;AACnE,kDAAkD;AAClD,+DAA+D;AAE/D,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1B,CAAC;AAEF,MAAa,gBAAgB;IACE;IAA7B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAExD,KAAK,CAAC,MAAM,CACV,MAAc,EACd,WAA4B,EAC5B,OAAkB;QAElB,MAAM,UAAU,GAAG,8CAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG;YACb,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACnD,8CAAoB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;SACxD,CAAC;QAEF,MAAM,YAAY,GAAG,yBAAyB,WAAW,CAAC,IAAI,YAAY,WAAW,CAAC,IAAI;;wBAEtE,MAAM,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAAc;YAC1B,GAAG,OAAO;YACV,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE;SACxC,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,oCAAe,CAAC,kBAAkB,CAAoB,KAAK,CAAC,CAAC;QAE5E,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,oBAAoB,CAAC,MAAyB;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,KAAK,GAAqB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,oBAAoB;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAE;YACjC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;YACtD,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACnC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK;YACrC,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,SAAS;SAChD,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;IACtD,CAAC;CACF;AA/CD,4CA+CC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OctoAgentClient } from '../OctoAgentClient.js';
|
|
2
|
+
import type { ActionNodeSpec, CodeScriptResult, LogicNodeSpec, Message } from '../types.js';
|
|
3
|
+
export declare class CodeScriptAgent {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(client: OctoAgentClient);
|
|
6
|
+
/**
|
|
7
|
+
* Generate code for all nodes marked needsCodeGen.
|
|
8
|
+
* @param actionSpecs Full action spec list (to find code nodes).
|
|
9
|
+
* @param logicSpecs Logic spec list (in case logic nodes also need code).
|
|
10
|
+
* @param history Conversation history for context.
|
|
11
|
+
*/
|
|
12
|
+
generate(actionSpecs: ActionNodeSpec[], logicSpecs: LogicNodeSpec[], history: Message[]): Promise<CodeScriptResult>;
|
|
13
|
+
private collectCodeRequests;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CodeScriptAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeScriptAgent.d.ts","sourceRoot":"","sources":["../../../../src/workflow-design/agents/CodeScriptAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA0C5F,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAEpD;;;;;OAKG;IACG,QAAQ,CACZ,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,aAAa,EAAE,EAC3B,OAAO,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,gBAAgB,CAAC;IA6B5B,OAAO,CAAC,mBAAmB;CAgC5B"}
|