@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,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AgentApproval = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
let AgentApproval = class AgentApproval {
|
|
15
|
+
id;
|
|
16
|
+
runId;
|
|
17
|
+
/** The question or action description requiring human approval. */
|
|
18
|
+
question;
|
|
19
|
+
/** Optional JSON or text context to help the reviewer decide. */
|
|
20
|
+
context;
|
|
21
|
+
status;
|
|
22
|
+
/** Optional response message from the human reviewer. */
|
|
23
|
+
response;
|
|
24
|
+
respondedAt;
|
|
25
|
+
createdAt;
|
|
26
|
+
};
|
|
27
|
+
exports.AgentApproval = AgentApproval;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, core_1.PrimaryGeneratedColumn)('uuid'),
|
|
30
|
+
__metadata("design:type", String)
|
|
31
|
+
], AgentApproval.prototype, "id", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, core_1.Column)({ type: 'varchar', length: 36, name: 'run_id' }),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], AgentApproval.prototype, "runId", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, core_1.Column)({ type: 'text' }),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], AgentApproval.prototype, "question", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, core_1.Column)({ type: 'text', nullable: true }),
|
|
42
|
+
__metadata("design:type", Object)
|
|
43
|
+
], AgentApproval.prototype, "context", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, core_1.Column)({ type: 'varchar', length: 32, default: 'pending' }),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], AgentApproval.prototype, "status", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, core_1.Column)({ type: 'text', nullable: true }),
|
|
50
|
+
__metadata("design:type", Object)
|
|
51
|
+
], AgentApproval.prototype, "response", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, core_1.Column)({ type: 'datetime', nullable: true, name: 'responded_at' }),
|
|
54
|
+
__metadata("design:type", Object)
|
|
55
|
+
], AgentApproval.prototype, "respondedAt", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, core_1.CreateDateColumn)({ name: 'created_at' }),
|
|
58
|
+
__metadata("design:type", Date)
|
|
59
|
+
], AgentApproval.prototype, "createdAt", void 0);
|
|
60
|
+
exports.AgentApproval = AgentApproval = __decorate([
|
|
61
|
+
(0, core_1.Entity)('agent_approval')
|
|
62
|
+
], AgentApproval);
|
|
63
|
+
//# sourceMappingURL=agent-approval.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.entity.js","sourceRoot":"","sources":["../../../src/agent/agent-approval.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAK0B;AAKnB,IAAM,aAAa,GAAnB,MAAM,aAAa;IAExB,EAAE,CAAU;IAGZ,KAAK,CAAU;IAEf,mEAAmE;IAEnE,QAAQ,CAAU;IAElB,iEAAiE;IAEjE,OAAO,CAAiB;IAGxB,MAAM,CAAuB;IAE7B,yDAAyD;IAEzD,QAAQ,CAAiB;IAGzB,WAAW,CAAe;IAG1B,SAAS,CAAQ;CAClB,CAAA;AA3BY,sCAAa;AAExB;IADC,IAAA,6BAAsB,EAAC,MAAM,CAAC;;yCACnB;AAGZ;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;4CACzC;AAIf;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CACP;AAIlB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACjB;AAGxB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;6CAC/B;AAI7B;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAChB;AAGzB;IADC,IAAA,aAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;;kDACzC;AAG1B;IADC,IAAA,uBAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC7B,IAAI;gDAAC;wBA1BN,aAAa;IADzB,IAAA,aAAM,EAAC,gBAAgB,CAAC;GACZ,aAAa,CA2BzB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Repository } from '@octo-cyber/core';
|
|
2
|
+
import { AgentApproval } from './agent-approval.entity.js';
|
|
3
|
+
export interface AgentApprovalDto {
|
|
4
|
+
id: string;
|
|
5
|
+
runId: string;
|
|
6
|
+
question: string;
|
|
7
|
+
context: string | null;
|
|
8
|
+
status: 'pending' | 'approved' | 'rejected';
|
|
9
|
+
response: string | null;
|
|
10
|
+
respondedAt: string | null;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* AgentApprovalService — human-in-the-loop approval mechanism.
|
|
15
|
+
*
|
|
16
|
+
* An agent creates an approval request when it needs a human to confirm a
|
|
17
|
+
* sensitive operation. The agent then calls waitForResponse() to block until
|
|
18
|
+
* a human approves or rejects, or until the timeout expires.
|
|
19
|
+
*/
|
|
20
|
+
export declare class AgentApprovalService {
|
|
21
|
+
private repo;
|
|
22
|
+
setRepository(repo: Repository<AgentApproval>): void;
|
|
23
|
+
private getRepo;
|
|
24
|
+
create(runId: string, question: string, context?: string): Promise<AgentApproval>;
|
|
25
|
+
getPending(): Promise<AgentApproval[]>;
|
|
26
|
+
getById(id: string): Promise<AgentApproval | null>;
|
|
27
|
+
respond(id: string, approved: boolean, response?: string): Promise<AgentApproval>;
|
|
28
|
+
/**
|
|
29
|
+
* Poll the database every 2 s until the approval is resolved or timeout expires.
|
|
30
|
+
* Returns the final decision or 'timeout'.
|
|
31
|
+
*/
|
|
32
|
+
waitForResponse(id: string, timeoutMs?: number): Promise<'approved' | 'rejected' | 'timeout'>;
|
|
33
|
+
toDto(approval: AgentApproval): AgentApprovalDto;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=agent-approval.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.service.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-approval.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBACa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAA0C;IAEtD,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI;IAIpD,OAAO,CAAC,OAAO;IAKT,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAajF,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAOtC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAIlD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBvF;;;OAGG;IACG,eAAe,CACnB,EAAE,EAAE,MAAM,EACV,SAAS,SAAU,GAClB,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAgB/C,KAAK,CAAC,QAAQ,EAAE,aAAa,GAAG,gBAAgB;CAYjD"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentApprovalService = void 0;
|
|
10
|
+
const core_1 = require("@octo-cyber/core");
|
|
11
|
+
const POLL_INTERVAL_MS = 2_000;
|
|
12
|
+
/**
|
|
13
|
+
* AgentApprovalService — human-in-the-loop approval mechanism.
|
|
14
|
+
*
|
|
15
|
+
* An agent creates an approval request when it needs a human to confirm a
|
|
16
|
+
* sensitive operation. The agent then calls waitForResponse() to block until
|
|
17
|
+
* a human approves or rejects, or until the timeout expires.
|
|
18
|
+
*/
|
|
19
|
+
let AgentApprovalService = class AgentApprovalService {
|
|
20
|
+
repo = null;
|
|
21
|
+
setRepository(repo) {
|
|
22
|
+
this.repo = repo;
|
|
23
|
+
}
|
|
24
|
+
getRepo() {
|
|
25
|
+
if (!this.repo)
|
|
26
|
+
throw new Error('AgentApprovalService: repository not initialized');
|
|
27
|
+
return this.repo;
|
|
28
|
+
}
|
|
29
|
+
async create(runId, question, context) {
|
|
30
|
+
const repo = this.getRepo();
|
|
31
|
+
const approval = repo.create({
|
|
32
|
+
runId,
|
|
33
|
+
question,
|
|
34
|
+
context: context ?? null,
|
|
35
|
+
status: 'pending',
|
|
36
|
+
response: null,
|
|
37
|
+
respondedAt: null,
|
|
38
|
+
});
|
|
39
|
+
return repo.save(approval);
|
|
40
|
+
}
|
|
41
|
+
async getPending() {
|
|
42
|
+
return this.getRepo().find({
|
|
43
|
+
where: { status: 'pending' },
|
|
44
|
+
order: { createdAt: 'DESC' },
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async getById(id) {
|
|
48
|
+
return this.getRepo().findOne({ where: { id } });
|
|
49
|
+
}
|
|
50
|
+
async respond(id, approved, response) {
|
|
51
|
+
const repo = this.getRepo();
|
|
52
|
+
const approval = await repo.findOne({ where: { id } });
|
|
53
|
+
if (!approval)
|
|
54
|
+
throw core_1.AppError.notFound(`Agent approval not found: ${id}`);
|
|
55
|
+
if (approval.status !== 'pending') {
|
|
56
|
+
throw core_1.AppError.badRequest(`Approval ${id} has already been resolved (${approval.status})`);
|
|
57
|
+
}
|
|
58
|
+
await repo.update(id, {
|
|
59
|
+
status: approved ? 'approved' : 'rejected',
|
|
60
|
+
response: response ?? null,
|
|
61
|
+
respondedAt: new Date(),
|
|
62
|
+
});
|
|
63
|
+
const updated = await repo.findOne({ where: { id } });
|
|
64
|
+
if (!updated)
|
|
65
|
+
throw core_1.AppError.notFound(`Agent approval not found after update: ${id}`);
|
|
66
|
+
return updated;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Poll the database every 2 s until the approval is resolved or timeout expires.
|
|
70
|
+
* Returns the final decision or 'timeout'.
|
|
71
|
+
*/
|
|
72
|
+
async waitForResponse(id, timeoutMs = 300_000) {
|
|
73
|
+
const repo = this.getRepo();
|
|
74
|
+
const deadline = Date.now() + timeoutMs;
|
|
75
|
+
while (Date.now() < deadline) {
|
|
76
|
+
const approval = await repo.findOne({ where: { id } });
|
|
77
|
+
if (!approval)
|
|
78
|
+
return 'timeout';
|
|
79
|
+
if (approval.status === 'approved')
|
|
80
|
+
return 'approved';
|
|
81
|
+
if (approval.status === 'rejected')
|
|
82
|
+
return 'rejected';
|
|
83
|
+
await sleep(POLL_INTERVAL_MS);
|
|
84
|
+
}
|
|
85
|
+
return 'timeout';
|
|
86
|
+
}
|
|
87
|
+
toDto(approval) {
|
|
88
|
+
return {
|
|
89
|
+
id: approval.id,
|
|
90
|
+
runId: approval.runId,
|
|
91
|
+
question: approval.question,
|
|
92
|
+
context: approval.context,
|
|
93
|
+
status: approval.status,
|
|
94
|
+
response: approval.response,
|
|
95
|
+
respondedAt: approval.respondedAt?.toISOString() ?? null,
|
|
96
|
+
createdAt: approval.createdAt.toISOString(),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.AgentApprovalService = AgentApprovalService;
|
|
101
|
+
exports.AgentApprovalService = AgentApprovalService = __decorate([
|
|
102
|
+
(0, core_1.Service)()
|
|
103
|
+
], AgentApprovalService);
|
|
104
|
+
function sleep(ms) {
|
|
105
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
106
|
+
}
|
|
107
|
+
// Ensure singleton is registered in DI at import time
|
|
108
|
+
core_1.Container.get(AgentApprovalService);
|
|
109
|
+
//# sourceMappingURL=agent-approval.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.service.js","sourceRoot":"","sources":["../../../src/agent/agent-approval.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Request, Response } from '@octo-cyber/core';
|
|
2
|
+
/**
|
|
3
|
+
* AgentGatewayController — unified agent capability registry and execution gateway.
|
|
4
|
+
*
|
|
5
|
+
* Endpoints:
|
|
6
|
+
* GET /api/v1/agents — List all registered agent capabilities
|
|
7
|
+
* GET /api/v1/agents/:type — Get a specific agent capability by type
|
|
8
|
+
* POST /api/v1/agents/execute — Universal execute (routes to the right agent adapter)
|
|
9
|
+
*/
|
|
10
|
+
export declare class AgentGatewayController {
|
|
11
|
+
private get registry();
|
|
12
|
+
private get gateway();
|
|
13
|
+
/** List all registered agent capabilities. */
|
|
14
|
+
listAgents(_req: Request, res: Response): void;
|
|
15
|
+
/** Get a specific agent capability by type. */
|
|
16
|
+
getAgent(req: Request, res: Response): void;
|
|
17
|
+
/**
|
|
18
|
+
* Execute an agent task via the unified gateway.
|
|
19
|
+
*
|
|
20
|
+
* Body:
|
|
21
|
+
* agentType {AgentType} — Target agent type
|
|
22
|
+
* prompt {string} — Task description
|
|
23
|
+
* maxRounds {number?} — Max LLM rounds (default 20, max 50)
|
|
24
|
+
* timeoutMs {number?} — Timeout in ms (default 300 000)
|
|
25
|
+
* async {boolean?} — If true, returns runId immediately (default false)
|
|
26
|
+
* metadata {object?} — Adapter-specific config
|
|
27
|
+
*/
|
|
28
|
+
executeAgent(req: Request, res: Response): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=agent-gateway.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-gateway.controller.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-gateway.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB1D;;;;;;;GAOG;AACH,qBACa,sBAAsB;IACjC,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,OAAO,GAElB;IAED,8CAA8C;IAE9C,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAK9C,+CAA+C;IAE/C,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAS3C;;;;;;;;;;OAUG;IAEG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC/D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AgentGatewayController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
const agent_registry_service_js_1 = require("./agent-registry.service.js");
|
|
15
|
+
const agent_gateway_service_js_1 = require("./agent-gateway.service.js");
|
|
16
|
+
const VALID_AGENT_TYPES = new Set([
|
|
17
|
+
'computer-use',
|
|
18
|
+
'coding',
|
|
19
|
+
'cli',
|
|
20
|
+
'dify',
|
|
21
|
+
'remote',
|
|
22
|
+
]);
|
|
23
|
+
const MAX_ROUNDS_DEFAULT = 20;
|
|
24
|
+
const MAX_ROUNDS_LIMIT = 50;
|
|
25
|
+
const TIMEOUT_MS_DEFAULT = 300_000;
|
|
26
|
+
/**
|
|
27
|
+
* AgentGatewayController — unified agent capability registry and execution gateway.
|
|
28
|
+
*
|
|
29
|
+
* Endpoints:
|
|
30
|
+
* GET /api/v1/agents — List all registered agent capabilities
|
|
31
|
+
* GET /api/v1/agents/:type — Get a specific agent capability by type
|
|
32
|
+
* POST /api/v1/agents/execute — Universal execute (routes to the right agent adapter)
|
|
33
|
+
*/
|
|
34
|
+
let AgentGatewayController = class AgentGatewayController {
|
|
35
|
+
get registry() {
|
|
36
|
+
return core_1.Container.get(agent_registry_service_js_1.AgentRegistryService);
|
|
37
|
+
}
|
|
38
|
+
get gateway() {
|
|
39
|
+
return core_1.Container.get(agent_gateway_service_js_1.AgentGatewayService);
|
|
40
|
+
}
|
|
41
|
+
/** List all registered agent capabilities. */
|
|
42
|
+
listAgents(_req, res) {
|
|
43
|
+
const capabilities = this.registry.list();
|
|
44
|
+
res.json(core_1.ApiResponse.ok(capabilities));
|
|
45
|
+
}
|
|
46
|
+
/** Get a specific agent capability by type. */
|
|
47
|
+
getAgent(req, res) {
|
|
48
|
+
const type = String(req.params['type'] ?? '');
|
|
49
|
+
const capability = this.registry.get(type);
|
|
50
|
+
if (!capability) {
|
|
51
|
+
throw core_1.AppError.notFound(`Agent type not registered: ${type}`);
|
|
52
|
+
}
|
|
53
|
+
res.json(core_1.ApiResponse.ok(capability));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute an agent task via the unified gateway.
|
|
57
|
+
*
|
|
58
|
+
* Body:
|
|
59
|
+
* agentType {AgentType} — Target agent type
|
|
60
|
+
* prompt {string} — Task description
|
|
61
|
+
* maxRounds {number?} — Max LLM rounds (default 20, max 50)
|
|
62
|
+
* timeoutMs {number?} — Timeout in ms (default 300 000)
|
|
63
|
+
* async {boolean?} — If true, returns runId immediately (default false)
|
|
64
|
+
* metadata {object?} — Adapter-specific config
|
|
65
|
+
*/
|
|
66
|
+
async executeAgent(req, res) {
|
|
67
|
+
const { agentType, prompt, maxRounds, timeoutMs, async: asyncMode, metadata } = req.body;
|
|
68
|
+
if (!prompt || typeof prompt !== 'string' || prompt.trim().length === 0) {
|
|
69
|
+
throw core_1.AppError.badRequest('Missing or invalid prompt');
|
|
70
|
+
}
|
|
71
|
+
if (!agentType || typeof agentType !== 'string') {
|
|
72
|
+
throw core_1.AppError.badRequest('Missing or invalid agentType');
|
|
73
|
+
}
|
|
74
|
+
if (!VALID_AGENT_TYPES.has(agentType)) {
|
|
75
|
+
throw core_1.AppError.badRequest(`Invalid agentType: ${agentType}. Valid types: ${[...VALID_AGENT_TYPES].join(', ')}`);
|
|
76
|
+
}
|
|
77
|
+
const result = await this.gateway.execute({
|
|
78
|
+
agentType: agentType,
|
|
79
|
+
prompt: prompt.trim(),
|
|
80
|
+
maxRounds: Math.min(typeof maxRounds === 'number' ? maxRounds : MAX_ROUNDS_DEFAULT, MAX_ROUNDS_LIMIT),
|
|
81
|
+
timeoutMs: typeof timeoutMs === 'number' ? timeoutMs : TIMEOUT_MS_DEFAULT,
|
|
82
|
+
async: asyncMode === true || asyncMode === 'true',
|
|
83
|
+
metadata: metadata && typeof metadata === 'object'
|
|
84
|
+
? metadata
|
|
85
|
+
: undefined,
|
|
86
|
+
});
|
|
87
|
+
res.json(core_1.ApiResponse.ok(result));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.AgentGatewayController = AgentGatewayController;
|
|
91
|
+
__decorate([
|
|
92
|
+
(0, core_1.Get)('/'),
|
|
93
|
+
__metadata("design:type", Function),
|
|
94
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
95
|
+
__metadata("design:returntype", void 0)
|
|
96
|
+
], AgentGatewayController.prototype, "listAgents", null);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, core_1.Get)('/:type'),
|
|
99
|
+
__metadata("design:type", Function),
|
|
100
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
101
|
+
__metadata("design:returntype", void 0)
|
|
102
|
+
], AgentGatewayController.prototype, "getAgent", null);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, core_1.Post)('/execute'),
|
|
105
|
+
__metadata("design:type", Function),
|
|
106
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
107
|
+
__metadata("design:returntype", Promise)
|
|
108
|
+
], AgentGatewayController.prototype, "executeAgent", null);
|
|
109
|
+
exports.AgentGatewayController = AgentGatewayController = __decorate([
|
|
110
|
+
(0, core_1.Controller)('/api/v1/agents')
|
|
111
|
+
], AgentGatewayController);
|
|
112
|
+
//# sourceMappingURL=agent-gateway.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-gateway.controller.js","sourceRoot":"","sources":["../../../src/agent/agent-gateway.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AgentType } from './agent-registry.service.js';
|
|
2
|
+
export interface GatewayExecuteOptions {
|
|
3
|
+
agentType: AgentType;
|
|
4
|
+
prompt: string;
|
|
5
|
+
maxRounds?: number;
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
metadata?: Record<string, unknown>;
|
|
8
|
+
async?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface GatewayExecuteResult {
|
|
11
|
+
runId?: string;
|
|
12
|
+
output?: string;
|
|
13
|
+
status: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* AgentGatewayService — routes execution requests to the correct agent adapter.
|
|
17
|
+
*
|
|
18
|
+
* Routing logic:
|
|
19
|
+
* async=true → delegates to AgentRunService.submit(), returns { runId, status: 'pending' }
|
|
20
|
+
* async=false → runs OctoAgentClient directly (computer-use), returns { output, status: 'completed' }
|
|
21
|
+
*
|
|
22
|
+
* Throws AppError if the requested agent type is not registered or not available.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AgentGatewayService {
|
|
25
|
+
private get registry();
|
|
26
|
+
private get agentRunService();
|
|
27
|
+
execute(opts: GatewayExecuteOptions): Promise<GatewayExecuteResult>;
|
|
28
|
+
private assertCapabilityAvailable;
|
|
29
|
+
private executeAsync;
|
|
30
|
+
private executeSync;
|
|
31
|
+
private runComputerUseSync;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=agent-gateway.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-gateway.service.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-gateway.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,qBACa,mBAAmB;IAC9B,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,eAAe,GAE1B;IAEK,OAAO,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAYzE,OAAO,CAAC,yBAAyB;YAUnB,YAAY;YAcZ,WAAW;YASX,kBAAkB;CAcjC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentGatewayService = void 0;
|
|
10
|
+
const core_1 = require("@octo-cyber/core");
|
|
11
|
+
const agent_registry_service_js_1 = require("./agent-registry.service.js");
|
|
12
|
+
const agent_run_service_js_1 = require("./agent-run.service.js");
|
|
13
|
+
const OctoAgentClient_js_1 = require("../workflow-design/OctoAgentClient.js");
|
|
14
|
+
const computer_use_tools_js_1 = require("./computer-use-tools.js");
|
|
15
|
+
/**
|
|
16
|
+
* AgentGatewayService — routes execution requests to the correct agent adapter.
|
|
17
|
+
*
|
|
18
|
+
* Routing logic:
|
|
19
|
+
* async=true → delegates to AgentRunService.submit(), returns { runId, status: 'pending' }
|
|
20
|
+
* async=false → runs OctoAgentClient directly (computer-use), returns { output, status: 'completed' }
|
|
21
|
+
*
|
|
22
|
+
* Throws AppError if the requested agent type is not registered or not available.
|
|
23
|
+
*/
|
|
24
|
+
let AgentGatewayService = class AgentGatewayService {
|
|
25
|
+
get registry() {
|
|
26
|
+
return core_1.Container.get(agent_registry_service_js_1.AgentRegistryService);
|
|
27
|
+
}
|
|
28
|
+
get agentRunService() {
|
|
29
|
+
return core_1.Container.get(agent_run_service_js_1.AgentRunService);
|
|
30
|
+
}
|
|
31
|
+
async execute(opts) {
|
|
32
|
+
this.assertCapabilityAvailable(opts.agentType);
|
|
33
|
+
if (opts.async === true) {
|
|
34
|
+
return this.executeAsync(opts);
|
|
35
|
+
}
|
|
36
|
+
return this.executeSync(opts);
|
|
37
|
+
}
|
|
38
|
+
// ─── Private helpers ──────────────────────────────────────────────────
|
|
39
|
+
assertCapabilityAvailable(type) {
|
|
40
|
+
const capability = this.registry.get(type);
|
|
41
|
+
if (!capability) {
|
|
42
|
+
throw core_1.AppError.notFound(`Agent type not registered: ${type}`);
|
|
43
|
+
}
|
|
44
|
+
if (!capability.isAvailable) {
|
|
45
|
+
throw core_1.AppError.badRequest(`Agent type not available: ${type}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async executeAsync(opts) {
|
|
49
|
+
// Normalize remote:{agentId} keys to 'remote' for AgentRunService storage
|
|
50
|
+
const agentType = (opts.agentType.startsWith('remote:') ? 'remote' : opts.agentType);
|
|
51
|
+
const run = await this.agentRunService.submit({
|
|
52
|
+
agentType,
|
|
53
|
+
prompt: opts.prompt,
|
|
54
|
+
maxRounds: opts.maxRounds,
|
|
55
|
+
timeoutMs: opts.timeoutMs,
|
|
56
|
+
metadata: opts.metadata,
|
|
57
|
+
});
|
|
58
|
+
return { runId: run.id, status: 'pending' };
|
|
59
|
+
}
|
|
60
|
+
async executeSync(opts) {
|
|
61
|
+
if (opts.agentType === 'computer-use') {
|
|
62
|
+
return this.runComputerUseSync(opts);
|
|
63
|
+
}
|
|
64
|
+
// All non-computer-use types fall back to async execution via AgentRunService
|
|
65
|
+
return this.executeAsync(opts);
|
|
66
|
+
}
|
|
67
|
+
async runComputerUseSync(opts) {
|
|
68
|
+
const client = new OctoAgentClient_js_1.OctoAgentClient();
|
|
69
|
+
const tools = (0, computer_use_tools_js_1.createComputerUseTools)();
|
|
70
|
+
const output = await client.run({
|
|
71
|
+
systemPrompt: computer_use_tools_js_1.SYSTEM_PROMPT_COMPUTER_USE,
|
|
72
|
+
userMessage: opts.prompt,
|
|
73
|
+
tools,
|
|
74
|
+
maxRounds: opts.maxRounds ?? 20,
|
|
75
|
+
timeoutMs: opts.timeoutMs ?? 300_000,
|
|
76
|
+
});
|
|
77
|
+
return { output, status: 'completed' };
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
exports.AgentGatewayService = AgentGatewayService;
|
|
81
|
+
exports.AgentGatewayService = AgentGatewayService = __decorate([
|
|
82
|
+
(0, core_1.Service)()
|
|
83
|
+
], AgentGatewayService);
|
|
84
|
+
//# sourceMappingURL=agent-gateway.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-gateway.service.js","sourceRoot":"","sources":["../../../src/agent/agent-gateway.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgE;AAChE,2EAAmE;AAEnE,iEAAyD;AAEzD,8EAAwE;AACxE,mEAA6F;AAiB7F;;;;;;;;GAQG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,IAAY,QAAQ;QAClB,OAAO,gBAAS,CAAC,GAAG,CAAC,gDAAoB,CAAC,CAAC;IAC7C,CAAC;IAED,IAAY,eAAe;QACzB,OAAO,gBAAS,CAAC,GAAG,CAAC,sCAAe,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAA2B;QACvC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,yEAAyE;IAEjE,yBAAyB,CAAC,IAAe;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,eAAQ,CAAC,QAAQ,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,eAAQ,CAAC,UAAU,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAA2B;QACpD,0EAA0E;QAC1E,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAiB,CAAC;QACrG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC5C,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAA2B;QACnD,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,8EAA8E;QAC9E,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAA2B;QAC1D,MAAM,MAAM,GAAG,IAAI,oCAAe,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAA,8CAAsB,GAAE,CAAC;QAEvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,YAAY,EAAE,kDAA0B;YACxC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO;SACrC,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;CACF,CAAA;AApEY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAO,GAAE;GACG,mBAAmB,CAoE/B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type BuiltinAgentType = 'computer-use' | 'coding' | 'cli' | 'dify' | 'remote';
|
|
2
|
+
export type AgentType = BuiltinAgentType | `remote:${string}`;
|
|
3
|
+
export interface AgentCapability {
|
|
4
|
+
type: AgentType;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
isAvailable: boolean;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* AgentRegistryService — maintains a registry of all agent capabilities.
|
|
12
|
+
*
|
|
13
|
+
* Provides a central catalog of what agent types are registered and available.
|
|
14
|
+
* Adapters register themselves during module initialization; the gateway
|
|
15
|
+
* queries this registry before routing execution requests.
|
|
16
|
+
*/
|
|
17
|
+
export declare class AgentRegistryService {
|
|
18
|
+
private readonly capabilities;
|
|
19
|
+
/** Register or update a capability. Overwrites any existing entry for the same type. */
|
|
20
|
+
register(capability: AgentCapability): void;
|
|
21
|
+
/** Remove a registered capability by type. No-op if not found. */
|
|
22
|
+
unregister(type: AgentType): void;
|
|
23
|
+
/** Get a capability by type. Returns undefined if not registered. */
|
|
24
|
+
get(type: AgentType): AgentCapability | undefined;
|
|
25
|
+
/** List all registered capabilities (available and unavailable). */
|
|
26
|
+
list(): AgentCapability[];
|
|
27
|
+
/** List only capabilities where isAvailable === true. */
|
|
28
|
+
getAvailable(): AgentCapability[];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=agent-registry.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.service.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-registry.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AACrF,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,UAAU,MAAM,EAAE,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IAEnE,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAI3C,kEAAkE;IAClE,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIjC,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS;IAIjD,oEAAoE;IACpE,IAAI,IAAI,eAAe,EAAE;IAIzB,yDAAyD;IACzD,YAAY,IAAI,eAAe,EAAE;CAGlC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentRegistryService = void 0;
|
|
10
|
+
const core_1 = require("@octo-cyber/core");
|
|
11
|
+
/**
|
|
12
|
+
* AgentRegistryService — maintains a registry of all agent capabilities.
|
|
13
|
+
*
|
|
14
|
+
* Provides a central catalog of what agent types are registered and available.
|
|
15
|
+
* Adapters register themselves during module initialization; the gateway
|
|
16
|
+
* queries this registry before routing execution requests.
|
|
17
|
+
*/
|
|
18
|
+
let AgentRegistryService = class AgentRegistryService {
|
|
19
|
+
capabilities = new Map();
|
|
20
|
+
/** Register or update a capability. Overwrites any existing entry for the same type. */
|
|
21
|
+
register(capability) {
|
|
22
|
+
this.capabilities.set(capability.type, { ...capability });
|
|
23
|
+
}
|
|
24
|
+
/** Remove a registered capability by type. No-op if not found. */
|
|
25
|
+
unregister(type) {
|
|
26
|
+
this.capabilities.delete(type);
|
|
27
|
+
}
|
|
28
|
+
/** Get a capability by type. Returns undefined if not registered. */
|
|
29
|
+
get(type) {
|
|
30
|
+
return this.capabilities.get(type);
|
|
31
|
+
}
|
|
32
|
+
/** List all registered capabilities (available and unavailable). */
|
|
33
|
+
list() {
|
|
34
|
+
return Array.from(this.capabilities.values());
|
|
35
|
+
}
|
|
36
|
+
/** List only capabilities where isAvailable === true. */
|
|
37
|
+
getAvailable() {
|
|
38
|
+
return this.list().filter((c) => c.isAvailable);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.AgentRegistryService = AgentRegistryService;
|
|
42
|
+
exports.AgentRegistryService = AgentRegistryService = __decorate([
|
|
43
|
+
(0, core_1.Service)()
|
|
44
|
+
], AgentRegistryService);
|
|
45
|
+
//# sourceMappingURL=agent-registry.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.service.js","sourceRoot":"","sources":["../../../src/agent/agent-registry.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2C;AAc3C;;;;;;GAMG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IACd,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEnE,wFAAwF;IACxF,QAAQ,CAAC,UAA2B;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAClE,UAAU,CAAC,IAAe;QACxB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,qEAAqE;IACrE,GAAG,CAAC,IAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,oEAAoE;IACpE,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,yDAAyD;IACzD,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AA3BY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,cAAO,GAAE;GACG,oBAAoB,CA2BhC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Request, Response } from '@octo-cyber/core';
|
|
2
|
+
/**
|
|
3
|
+
* AgentRunController — async agent execution API.
|
|
4
|
+
*
|
|
5
|
+
* Endpoints:
|
|
6
|
+
* POST /api/v1/ai/agent/run — Submit a new agent run (returns runId immediately)
|
|
7
|
+
* GET /api/v1/ai/agent/run — List recent runs
|
|
8
|
+
* GET /api/v1/ai/agent/run/:id — Get run status + result
|
|
9
|
+
* POST /api/v1/ai/agent/run/:id/cancel — Cancel a pending/running run
|
|
10
|
+
* GET /api/v1/ai/agent/run/:id/events — SSE stream of run events
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgentRunController {
|
|
13
|
+
private get service();
|
|
14
|
+
/**
|
|
15
|
+
* Submit a new agent run.
|
|
16
|
+
*
|
|
17
|
+
* Body:
|
|
18
|
+
* agentType {'computer-use'|'coding'|'cli'} — Agent type
|
|
19
|
+
* prompt {string} — Task description
|
|
20
|
+
* maxRounds {number?} — Max LLM rounds (default 20, max 50)
|
|
21
|
+
* timeoutMs {number?} — Timeout in ms (default 300 000)
|
|
22
|
+
* metadata {object?} — Adapter-specific config
|
|
23
|
+
*/
|
|
24
|
+
submitRun(req: Request, res: Response): Promise<void>;
|
|
25
|
+
/** List recent agent runs (newest first, max 20). */
|
|
26
|
+
listRuns(_req: Request, res: Response): Promise<void>;
|
|
27
|
+
/** Get status and result of a specific run. */
|
|
28
|
+
getRunStatus(req: Request, res: Response): Promise<void>;
|
|
29
|
+
/** Cancel a pending or running agent run. */
|
|
30
|
+
cancelRun(req: Request, res: Response): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* SSE stream — emits run lifecycle events until terminal state.
|
|
33
|
+
*
|
|
34
|
+
* Events:
|
|
35
|
+
* status — {status, output?, error?} on every state transition
|
|
36
|
+
* done — final event when run reaches completed/failed/cancelled
|
|
37
|
+
*
|
|
38
|
+
* Clients should close the connection on receiving `done`.
|
|
39
|
+
*/
|
|
40
|
+
streamRunEvents(req: Request, res: Response): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=agent-run.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run.controller.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-run.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAO1D;;;;;;;;;GASG;AACH,qBACa,kBAAkB;IAC7B,OAAO,KAAK,OAAO,GAElB;IAED;;;;;;;;;OASG;IAEG,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC3D,qDAAqD;IAE/C,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,+CAA+C;IAEzC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,6CAA6C;IAEvC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D;;;;;;;;OAQG;IAEG,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA8ElE"}
|