@octo-cyber/ai 0.5.5 → 0.5.7
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/BranchDecisionEngine.d.ts +73 -0
- package/dist/BranchDecisionEngine.d.ts.map +1 -0
- package/dist/BranchDecisionEngine.js +195 -0
- package/dist/BranchDecisionEngine.js.map +1 -0
- package/dist/agent/coding-tools.d.ts +7 -0
- package/dist/agent/coding-tools.d.ts.map +1 -0
- package/dist/agent/coding-tools.js +181 -0
- package/dist/agent/coding-tools.js.map +1 -0
- package/dist/ai.module.d.ts +14 -2
- package/dist/ai.module.d.ts.map +1 -1
- package/dist/ai.module.js +61 -14
- package/dist/ai.module.js.map +1 -1
- package/dist/cli/adapters/antigravity.adapter.d.ts +2 -0
- package/dist/cli/adapters/antigravity.adapter.d.ts.map +1 -1
- package/dist/cli/adapters/antigravity.adapter.js +78 -0
- package/dist/cli/adapters/antigravity.adapter.js.map +1 -1
- package/dist/cli/adapters/claude-cli.adapter.d.ts.map +1 -1
- package/dist/cli/adapters/claude-cli.adapter.js +2 -0
- package/dist/cli/adapters/claude-cli.adapter.js.map +1 -1
- package/dist/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
- package/dist/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
- package/dist/cli/adapters/cli-proxy-api.adapter.js +239 -0
- package/dist/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
- package/dist/cli/cli-executor.service.d.ts +2 -0
- package/dist/cli/cli-executor.service.d.ts.map +1 -1
- package/dist/cli/cli-executor.service.js +21 -1
- package/dist/cli/cli-executor.service.js.map +1 -1
- package/dist/cli/cli-registry.service.d.ts.map +1 -1
- package/dist/cli/cli-registry.service.js +3 -1
- package/dist/cli/cli-registry.service.js.map +1 -1
- package/dist/cli/controllers/ai-cli.controller.d.ts +4 -0
- package/dist/cli/controllers/ai-cli.controller.d.ts.map +1 -1
- package/dist/cli/controllers/ai-cli.controller.js +33 -4
- package/dist/cli/controllers/ai-cli.controller.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/types.d.ts +23 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/workspace.service.d.ts +11 -3
- package/dist/cli/workspace.service.d.ts.map +1 -1
- package/dist/cli/workspace.service.js +61 -6
- package/dist/cli/workspace.service.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/session/claude-code-session-manager.service.d.ts +28 -0
- package/dist/session/claude-code-session-manager.service.d.ts.map +1 -0
- package/dist/session/claude-code-session-manager.service.js +177 -0
- package/dist/session/claude-code-session-manager.service.js.map +1 -0
- 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/skill/controllers/skill-market.controller.d.ts +18 -0
- package/dist/skill/controllers/skill-market.controller.d.ts.map +1 -0
- package/dist/skill/controllers/skill-market.controller.js +128 -0
- package/dist/skill/controllers/skill-market.controller.js.map +1 -0
- package/dist/skill/controllers/skill.controller.d.ts +4 -0
- package/dist/skill/controllers/skill.controller.d.ts.map +1 -1
- package/dist/skill/controllers/skill.controller.js +31 -0
- package/dist/skill/controllers/skill.controller.js.map +1 -1
- package/dist/skill/index.d.ts +3 -1
- package/dist/skill/index.d.ts.map +1 -1
- package/dist/skill/index.js +5 -1
- package/dist/skill/index.js.map +1 -1
- package/dist/skill/services/skill-installer.service.d.ts +27 -0
- package/dist/skill/services/skill-installer.service.d.ts.map +1 -1
- package/dist/skill/services/skill-installer.service.js +108 -0
- package/dist/skill/services/skill-installer.service.js.map +1 -1
- package/dist/skill/services/skill-market.service.d.ts +60 -0
- package/dist/skill/services/skill-market.service.d.ts.map +1 -0
- package/dist/skill/services/skill-market.service.js +244 -0
- package/dist/skill/services/skill-market.service.js.map +1 -0
- package/dist/skill/services/skill-registry.service.js +4 -4
- package/dist/skill/services/skill-registry.service.js.map +1 -1
- package/dist/skill/types.d.ts +32 -1
- package/dist/skill/types.d.ts.map +1 -1
- 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-persistence.service.d.ts +82 -0
- package/dist/src/agent/agent-run-persistence.service.d.ts.map +1 -0
- package/dist/src/agent/agent-run-persistence.service.js +171 -0
- package/dist/src/agent/agent-run-persistence.service.js.map +1 -0
- package/dist/src/agent/agent-run-step.entity.d.ts +23 -0
- package/dist/src/agent/agent-run-step.entity.d.ts.map +1 -0
- package/dist/src/agent/agent-run-step.entity.js +76 -0
- package/dist/src/agent/agent-run-step.entity.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/src/cli/adapters/antigravity.adapter.d.ts +31 -0
- package/dist/src/cli/adapters/antigravity.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/antigravity.adapter.js +248 -0
- package/dist/src/cli/adapters/antigravity.adapter.js.map +1 -0
- package/dist/src/cli/adapters/claude-cli.adapter.d.ts +23 -0
- package/dist/src/cli/adapters/claude-cli.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/claude-cli.adapter.js +81 -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 +22 -0
- package/dist/src/cli/adapters/codex-cli.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/codex-cli.adapter.js +76 -0
- package/dist/src/cli/adapters/codex-cli.adapter.js.map +1 -0
- package/dist/src/cli/adapters/detect-cli.d.ts +11 -0
- package/dist/src/cli/adapters/detect-cli.d.ts.map +1 -0
- package/dist/src/cli/adapters/detect-cli.js +40 -0
- package/dist/src/cli/adapters/detect-cli.js.map +1 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.d.ts +21 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.d.ts.map +1 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.js +72 -0
- package/dist/src/cli/adapters/gemini-cli.adapter.js.map +1 -0
- package/dist/src/cli/adapters/index.d.ts +4 -0
- package/dist/src/cli/adapters/index.d.ts.map +1 -0
- package/dist/src/cli/adapters/index.js +10 -0
- package/dist/src/cli/adapters/index.js.map +1 -0
- package/dist/src/cli/cli-executor.service.d.ts +25 -0
- package/dist/src/cli/cli-executor.service.d.ts.map +1 -0
- package/dist/src/cli/cli-executor.service.js +170 -0
- package/dist/src/cli/cli-executor.service.js.map +1 -0
- package/dist/src/cli/cli-registry.service.d.ts +38 -0
- package/dist/src/cli/cli-registry.service.d.ts.map +1 -0
- package/dist/src/cli/cli-registry.service.js +114 -0
- package/dist/src/cli/cli-registry.service.js.map +1 -0
- package/dist/src/cli/controllers/ai-cli.controller.d.ts +40 -0
- package/dist/src/cli/controllers/ai-cli.controller.d.ts.map +1 -0
- package/dist/src/cli/controllers/ai-cli.controller.js +208 -0
- package/dist/src/cli/controllers/ai-cli.controller.js.map +1 -0
- package/dist/src/cli/index.d.ts +8 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +17 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/types.d.ts +153 -0
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/src/cli/types.js +9 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/cli/workspace.service.d.ts +42 -0
- package/dist/src/cli/workspace.service.d.ts.map +1 -0
- package/dist/src/cli/workspace.service.js +249 -0
- 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/src/skill/controllers/skill.controller.d.ts +37 -0
- package/dist/src/skill/controllers/skill.controller.d.ts.map +1 -0
- package/dist/src/skill/controllers/skill.controller.js +295 -0
- package/dist/src/skill/controllers/skill.controller.js.map +1 -0
- package/dist/src/skill/entities/octo-skill.entity.d.ts +22 -0
- package/dist/src/skill/entities/octo-skill.entity.d.ts.map +1 -0
- package/dist/src/skill/entities/octo-skill.entity.js +91 -0
- package/dist/src/skill/entities/octo-skill.entity.js.map +1 -0
- package/dist/src/skill/index.d.ts +9 -0
- package/dist/src/skill/index.d.ts.map +1 -0
- package/dist/src/skill/index.js +21 -0
- package/dist/src/skill/index.js.map +1 -0
- package/dist/src/skill/services/skill-generator.service.d.ts +47 -0
- package/dist/src/skill/services/skill-generator.service.d.ts.map +1 -0
- package/dist/src/skill/services/skill-generator.service.js +232 -0
- package/dist/src/skill/services/skill-generator.service.js.map +1 -0
- package/dist/src/skill/services/skill-installer.service.d.ts +65 -0
- package/dist/src/skill/services/skill-installer.service.d.ts.map +1 -0
- package/dist/src/skill/services/skill-installer.service.js +258 -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-utils.d.ts +25 -0
- package/dist/src/skill/services/skill-market-utils.d.ts.map +1 -0
- package/dist/src/skill/services/skill-market-utils.js +22 -0
- package/dist/src/skill/services/skill-market-utils.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 +61 -0
- package/dist/src/skill/services/skill-registry.service.d.ts.map +1 -0
- package/dist/src/skill/services/skill-registry.service.js +159 -0
- package/dist/src/skill/services/skill-registry.service.js.map +1 -0
- package/dist/src/skill/types.d.ts +76 -0
- package/dist/src/skill/types.d.ts.map +1 -0
- package/dist/src/skill/types.js +6 -0
- package/dist/src/skill/types.js.map +1 -0
- 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/WorkflowAssembler.d.ts +10 -0
- package/dist/src/workflow-design/WorkflowAssembler.d.ts.map +1 -0
- package/dist/src/workflow-design/WorkflowAssembler.js +81 -0
- package/dist/src/workflow-design/WorkflowAssembler.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/n8n-node-templates-data.d.ts +4 -0
- package/dist/src/workflow-design/n8n-node-templates-data.d.ts.map +1 -0
- package/dist/src/workflow-design/n8n-node-templates-data.js +290 -0
- package/dist/src/workflow-design/n8n-node-templates-data.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/dist/workflow-design/DocumentExtractorAgent.d.ts +47 -0
- package/dist/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
- package/dist/workflow-design/DocumentExtractorAgent.js +118 -0
- package/dist/workflow-design/DocumentExtractorAgent.js.map +1 -0
- package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
- package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
- package/dist/workflow-design/N8nNodeKnowledgeBase.js +320 -0
- package/dist/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
- package/dist/workflow-design/OctoAgentClient.d.ts +42 -0
- package/dist/workflow-design/OctoAgentClient.d.ts.map +1 -0
- package/dist/workflow-design/OctoAgentClient.js +166 -0
- package/dist/workflow-design/OctoAgentClient.js.map +1 -0
- package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
- package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
- package/dist/workflow-design/WorkflowDesignOrchestrator.js +265 -0
- package/dist/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
- package/dist/workflow-design/agents/ActionChainAgent.d.ts +9 -0
- package/dist/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
- package/dist/workflow-design/agents/ActionChainAgent.js +79 -0
- package/dist/workflow-design/agents/ActionChainAgent.js.map +1 -0
- package/dist/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
- package/dist/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
- package/dist/workflow-design/agents/CodeScriptAgent.js +96 -0
- package/dist/workflow-design/agents/CodeScriptAgent.js.map +1 -0
- package/dist/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
- package/dist/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
- package/dist/workflow-design/agents/LogicFlowAgent.js +78 -0
- package/dist/workflow-design/agents/LogicFlowAgent.js.map +1 -0
- package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
- package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
- package/dist/workflow-design/agents/TriggerAnalystAgent.js +65 -0
- package/dist/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
- package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
- package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
- package/dist/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
- package/dist/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
- package/dist/workflow-design/index.d.ts +12 -0
- package/dist/workflow-design/index.d.ts.map +1 -0
- package/dist/workflow-design/index.js +23 -0
- package/dist/workflow-design/index.js.map +1 -0
- package/dist/workflow-design/types.d.ts +155 -0
- package/dist/workflow-design/types.d.ts.map +1 -0
- package/dist/workflow-design/types.js +6 -0
- package/dist/workflow-design/types.js.map +1 -0
- package/package.json +21 -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/dist/module.iife.js +254 -0
- package/web/dynamic-entry.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
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Requirement type accepted by the decision engine.
|
|
3
|
+
* Maps directly to `FeedbackItem.type` values used in the self-iteration
|
|
4
|
+
* pipeline.
|
|
5
|
+
*/
|
|
6
|
+
export type RequirementType = 'bug' | 'enhancement' | 'new_feature' | 'arch';
|
|
7
|
+
/**
|
|
8
|
+
* Branch strategy produced by the decision engine.
|
|
9
|
+
*
|
|
10
|
+
* | Strategy | Meaning |
|
|
11
|
+
* |--------------|----------------------------------------------------------------|
|
|
12
|
+
* | `hotfix` | Minimal patch on the current stable branch (bug fixes, typos) |
|
|
13
|
+
* | `feature` | Feature branch off the current integration branch |
|
|
14
|
+
* | `experiment` | Isolated long-lived branch for architectural exploration |
|
|
15
|
+
*/
|
|
16
|
+
export type BranchStrategy = 'hotfix' | 'feature' | 'experiment';
|
|
17
|
+
/**
|
|
18
|
+
* Full decision record returned by {@link BranchDecisionEngine.decide}.
|
|
19
|
+
*/
|
|
20
|
+
export interface BranchDecision {
|
|
21
|
+
/** Chosen branch strategy. */
|
|
22
|
+
strategy: BranchStrategy;
|
|
23
|
+
/**
|
|
24
|
+
* Human-readable explanation of why this strategy was selected.
|
|
25
|
+
* Recorded in the generated TASK.md for traceability.
|
|
26
|
+
*/
|
|
27
|
+
rationale: string;
|
|
28
|
+
/**
|
|
29
|
+
* Confidence score in the range [0, 1].
|
|
30
|
+
* Scores below 0.8 should trigger a human-confirmation step before
|
|
31
|
+
* automatically dispatching a worktree (per n8n workflow design).
|
|
32
|
+
*/
|
|
33
|
+
confidence: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Input to the decision engine.
|
|
37
|
+
*/
|
|
38
|
+
export interface DecisionInput {
|
|
39
|
+
/** Requirement type from the feedback item. */
|
|
40
|
+
type: RequirementType;
|
|
41
|
+
/**
|
|
42
|
+
* Full text of the requirement (title + content).
|
|
43
|
+
* Used for keyword matching when the type alone is ambiguous.
|
|
44
|
+
*/
|
|
45
|
+
text: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Rule-based branch strategy decision engine for the Octo self-iteration
|
|
49
|
+
* pipeline.
|
|
50
|
+
*
|
|
51
|
+
* Evaluates a prioritised rule table against the requirement type and
|
|
52
|
+
* free-text content to select the appropriate git branch strategy.
|
|
53
|
+
*
|
|
54
|
+
* This is a pure, stateless function object — no DI, no I/O.
|
|
55
|
+
* It can be unit-tested without any infrastructure setup.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const engine = new BranchDecisionEngine();
|
|
60
|
+
* const decision = engine.decide({ type: 'bug', text: '登录页崩溃 null error' });
|
|
61
|
+
* // → { strategy: 'hotfix', confidence: 0.95, rationale: '...' }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare class BranchDecisionEngine {
|
|
65
|
+
/**
|
|
66
|
+
* Evaluates the rule table and returns the first matching branch decision.
|
|
67
|
+
*
|
|
68
|
+
* @param input - Requirement type and full text content.
|
|
69
|
+
* @returns The selected {@link BranchDecision}.
|
|
70
|
+
*/
|
|
71
|
+
decide(input: DecisionInput): BranchDecision;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=BranchDecisionEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BranchDecisionEngine.d.ts","sourceRoot":"","sources":["../src/BranchDecisionEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,IAAI,EAAE,eAAe,CAAC;IACtB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AA8LD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc;CAoB7C"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BranchDecisionEngine = void 0;
|
|
4
|
+
// ── Keyword lists ─────────────────────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* Keywords that strongly indicate a production defect requiring an urgent
|
|
7
|
+
* hotfix regardless of the nominal `type` field.
|
|
8
|
+
*/
|
|
9
|
+
const CRASH_KEYWORDS = [
|
|
10
|
+
'错误',
|
|
11
|
+
'崩溃',
|
|
12
|
+
'报错',
|
|
13
|
+
'exception',
|
|
14
|
+
'null',
|
|
15
|
+
'undefined',
|
|
16
|
+
'crash',
|
|
17
|
+
'fatal',
|
|
18
|
+
'panic',
|
|
19
|
+
'异常',
|
|
20
|
+
'挂了',
|
|
21
|
+
'无法启动',
|
|
22
|
+
'白屏',
|
|
23
|
+
'500',
|
|
24
|
+
'error',
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Keywords that suggest the requirement involves introducing a brand-new
|
|
28
|
+
* `@octo-cyber/*` package or cross-module architecture work, pushing the
|
|
29
|
+
* decision toward the `experiment` strategy.
|
|
30
|
+
*/
|
|
31
|
+
const ARCH_KEYWORDS = [
|
|
32
|
+
'arch',
|
|
33
|
+
'架构',
|
|
34
|
+
'breaking',
|
|
35
|
+
'refactor',
|
|
36
|
+
'重构',
|
|
37
|
+
'new package',
|
|
38
|
+
'新包',
|
|
39
|
+
'@octo-cyber',
|
|
40
|
+
'major',
|
|
41
|
+
'v0.6',
|
|
42
|
+
'v1.0',
|
|
43
|
+
'跨模块',
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Keywords that indicate a new, self-contained feature that can be developed
|
|
47
|
+
* on a regular feature branch.
|
|
48
|
+
*/
|
|
49
|
+
const NEW_MODULE_KEYWORDS = [
|
|
50
|
+
'new module',
|
|
51
|
+
'新模块',
|
|
52
|
+
'new page',
|
|
53
|
+
'新页面',
|
|
54
|
+
'new feature',
|
|
55
|
+
'新功能',
|
|
56
|
+
'integration',
|
|
57
|
+
'集成',
|
|
58
|
+
];
|
|
59
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
60
|
+
function containsAny(text, keywords) {
|
|
61
|
+
const lower = text.toLowerCase();
|
|
62
|
+
return keywords.some((kw) => lower.includes(kw.toLowerCase()));
|
|
63
|
+
}
|
|
64
|
+
// Pre-sorted by priority so decide() incurs no per-call sort overhead.
|
|
65
|
+
const RULES = [
|
|
66
|
+
// ── P0: Crash / error keywords override everything ──────────────────────────
|
|
67
|
+
{
|
|
68
|
+
priority: 0,
|
|
69
|
+
description: 'Crash/error keywords detected — urgent hotfix',
|
|
70
|
+
matches: ({ text }) => containsAny(text, CRASH_KEYWORDS),
|
|
71
|
+
strategy: 'hotfix',
|
|
72
|
+
rationale: () => '检测到崩溃/错误关键词,判定为紧急缺陷,采用 hotfix 策略直接基于稳定分支修复',
|
|
73
|
+
confidence: 0.95,
|
|
74
|
+
},
|
|
75
|
+
// ── P1: Explicit bug type ────────────────────────────────────────────────────
|
|
76
|
+
{
|
|
77
|
+
priority: 1,
|
|
78
|
+
description: 'type=bug — hotfix',
|
|
79
|
+
matches: ({ type }) => type === 'bug',
|
|
80
|
+
strategy: 'hotfix',
|
|
81
|
+
rationale: () => 'type=bug,采用 hotfix 策略,基于当前稳定分支修复缺陷',
|
|
82
|
+
confidence: 0.9,
|
|
83
|
+
},
|
|
84
|
+
// ── P2: Arch / breaking change ───────────────────────────────────────────────
|
|
85
|
+
{
|
|
86
|
+
priority: 2,
|
|
87
|
+
description: 'type=arch OR arch keywords — experiment branch',
|
|
88
|
+
matches: ({ type, text }) => type === 'arch' || containsAny(text, ARCH_KEYWORDS),
|
|
89
|
+
strategy: 'experiment',
|
|
90
|
+
rationale: ({ type, text }) => {
|
|
91
|
+
if (type === 'arch') {
|
|
92
|
+
return 'type=arch,架构级变更采用独立 experiment 分支,需人工确认后合并';
|
|
93
|
+
}
|
|
94
|
+
return `检测到架构关键词(${ARCH_KEYWORDS.find((kw) => text.toLowerCase().includes(kw.toLowerCase()))}),涉及跨模块或大型重构,采用 experiment 分支隔离风险`;
|
|
95
|
+
},
|
|
96
|
+
confidence: 0.85,
|
|
97
|
+
},
|
|
98
|
+
// ── P3: new_feature with new @octo-cyber/* package signals ──────────────────
|
|
99
|
+
{
|
|
100
|
+
priority: 3,
|
|
101
|
+
description: 'new_feature + new-module keywords — experiment branch',
|
|
102
|
+
matches: ({ type, text }) => type === 'new_feature' && containsAny(text, ARCH_KEYWORDS),
|
|
103
|
+
strategy: 'experiment',
|
|
104
|
+
rationale: () => 'new_feature 需要新建 @octo-cyber/* 包或涉及跨模块架构,采用 experiment 分支独立演进',
|
|
105
|
+
confidence: 0.8,
|
|
106
|
+
},
|
|
107
|
+
// ── P4: new_feature within existing modules ──────────────────────────────────
|
|
108
|
+
{
|
|
109
|
+
priority: 4,
|
|
110
|
+
description: 'new_feature — feature branch',
|
|
111
|
+
matches: ({ type }) => type === 'new_feature',
|
|
112
|
+
strategy: 'feature',
|
|
113
|
+
rationale: ({ text }) => {
|
|
114
|
+
if (containsAny(text, NEW_MODULE_KEYWORDS)) {
|
|
115
|
+
return 'new_feature 涉及新页面或新功能模块,在现有模块内扩展,采用 feature 分支开发';
|
|
116
|
+
}
|
|
117
|
+
return 'new_feature 在现有模块可扩展范围内,采用 feature 分支,合并到 v0.5 主干';
|
|
118
|
+
},
|
|
119
|
+
confidence: 0.85,
|
|
120
|
+
},
|
|
121
|
+
// ── P5: Small enhancement (≤200 chars) ──────────────────────────────────────
|
|
122
|
+
{
|
|
123
|
+
priority: 5,
|
|
124
|
+
description: 'enhancement + short content — hotfix',
|
|
125
|
+
matches: ({ type, text }) => type === 'enhancement' && text.length <= 200,
|
|
126
|
+
strategy: 'hotfix',
|
|
127
|
+
rationale: () => 'enhancement 内容较短(≤200字),判定为小改动,采用 hotfix 策略快速交付',
|
|
128
|
+
confidence: 0.8,
|
|
129
|
+
},
|
|
130
|
+
// ── P6: Larger enhancement ───────────────────────────────────────────────────
|
|
131
|
+
{
|
|
132
|
+
priority: 6,
|
|
133
|
+
description: 'enhancement + longer content — feature branch',
|
|
134
|
+
matches: ({ type }) => type === 'enhancement',
|
|
135
|
+
strategy: 'feature',
|
|
136
|
+
rationale: () => 'enhancement 内容较长(>200字),可能涉及新字段或新流程,采用 feature 分支开发,功能开关控制上线',
|
|
137
|
+
confidence: 0.75,
|
|
138
|
+
},
|
|
139
|
+
// ── P7: Fallback ─────────────────────────────────────────────────────────────
|
|
140
|
+
{
|
|
141
|
+
priority: 7,
|
|
142
|
+
description: 'fallback — feature branch, low confidence',
|
|
143
|
+
matches: () => true,
|
|
144
|
+
strategy: 'feature',
|
|
145
|
+
rationale: () => '无法匹配明确规则,默认采用 feature 分支,置信度较低,建议人工确认分支策略',
|
|
146
|
+
confidence: 0.5,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
// ── Engine ────────────────────────────────────────────────────────────────────
|
|
150
|
+
/**
|
|
151
|
+
* Rule-based branch strategy decision engine for the Octo self-iteration
|
|
152
|
+
* pipeline.
|
|
153
|
+
*
|
|
154
|
+
* Evaluates a prioritised rule table against the requirement type and
|
|
155
|
+
* free-text content to select the appropriate git branch strategy.
|
|
156
|
+
*
|
|
157
|
+
* This is a pure, stateless function object — no DI, no I/O.
|
|
158
|
+
* It can be unit-tested without any infrastructure setup.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```typescript
|
|
162
|
+
* const engine = new BranchDecisionEngine();
|
|
163
|
+
* const decision = engine.decide({ type: 'bug', text: '登录页崩溃 null error' });
|
|
164
|
+
* // → { strategy: 'hotfix', confidence: 0.95, rationale: '...' }
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
class BranchDecisionEngine {
|
|
168
|
+
/**
|
|
169
|
+
* Evaluates the rule table and returns the first matching branch decision.
|
|
170
|
+
*
|
|
171
|
+
* @param input - Requirement type and full text content.
|
|
172
|
+
* @returns The selected {@link BranchDecision}.
|
|
173
|
+
*/
|
|
174
|
+
decide(input) {
|
|
175
|
+
for (const rule of RULES) {
|
|
176
|
+
if (rule.matches(input)) {
|
|
177
|
+
return {
|
|
178
|
+
strategy: rule.strategy,
|
|
179
|
+
rationale: rule.rationale(input),
|
|
180
|
+
confidence: rule.confidence,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// The fallback rule (priority 7) always matches, so this is unreachable.
|
|
185
|
+
// Included for TypeScript exhaustiveness.
|
|
186
|
+
/* istanbul ignore next */
|
|
187
|
+
return {
|
|
188
|
+
strategy: 'feature',
|
|
189
|
+
rationale: '未匹配任何规则,使用默认 feature 策略',
|
|
190
|
+
confidence: 0.5,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.BranchDecisionEngine = BranchDecisionEngine;
|
|
195
|
+
//# sourceMappingURL=BranchDecisionEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BranchDecisionEngine.js","sourceRoot":"","sources":["../src/BranchDecisionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../workflow-design/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the standard coding tool set for a Claude Code agent session.
|
|
4
|
+
* All tools operate strictly within the given worktree directory.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createCodingTools(worktreePath: string): ToolDefinition[];
|
|
7
|
+
//# sourceMappingURL=coding-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-tools.d.ts","sourceRoot":"","sources":["../../src/agent/coding-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAmClE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE,CAExE"}
|
|
@@ -0,0 +1,181 @@
|
|
|
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.createCodingTools = createCodingTools;
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const node_util_1 = require("node:util");
|
|
11
|
+
const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
12
|
+
const BASH_TIMEOUT_MS = 60_000;
|
|
13
|
+
const STDOUT_MAX_BYTES = 8 * 1024; // 8 KB
|
|
14
|
+
// ============================================================
|
|
15
|
+
// Path safety
|
|
16
|
+
// ============================================================
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a user-supplied path relative to worktreePath and ensures it does
|
|
19
|
+
* not escape the worktree directory (path traversal guard).
|
|
20
|
+
*
|
|
21
|
+
* @throws Error if the resolved path is outside the worktree.
|
|
22
|
+
*/
|
|
23
|
+
function resolveJailed(userPath, worktreePath) {
|
|
24
|
+
// Reject absolute paths that don't start with the worktree
|
|
25
|
+
const base = node_path_1.default.resolve(worktreePath);
|
|
26
|
+
const resolved = node_path_1.default.resolve(base, userPath);
|
|
27
|
+
if (!resolved.startsWith(base + node_path_1.default.sep) && resolved !== base) {
|
|
28
|
+
throw new Error(`Path "${userPath}" resolves to "${resolved}" which is outside the worktree "${base}"`);
|
|
29
|
+
}
|
|
30
|
+
return resolved;
|
|
31
|
+
}
|
|
32
|
+
// ============================================================
|
|
33
|
+
// Tool factory
|
|
34
|
+
// ============================================================
|
|
35
|
+
/**
|
|
36
|
+
* Creates the standard coding tool set for a Claude Code agent session.
|
|
37
|
+
* All tools operate strictly within the given worktree directory.
|
|
38
|
+
*/
|
|
39
|
+
function createCodingTools(worktreePath) {
|
|
40
|
+
return [bashTool(worktreePath), fileEditTool(worktreePath), readFileTool(worktreePath), gitTool(worktreePath)];
|
|
41
|
+
}
|
|
42
|
+
// ── bash ──────────────────────────────────────────────────────
|
|
43
|
+
function bashTool(worktreePath) {
|
|
44
|
+
return {
|
|
45
|
+
name: 'bash',
|
|
46
|
+
description: 'Execute a shell command inside the worktree directory. Use for build, test, and inspection commands. Output is truncated to 8 KB.',
|
|
47
|
+
parameters: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
command: { type: 'string', description: 'Shell command to run (e.g. "pnpm build")' },
|
|
51
|
+
cwd: {
|
|
52
|
+
type: 'string',
|
|
53
|
+
description: 'Optional subdirectory (relative to worktree root) in which to run the command.',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
required: ['command'],
|
|
57
|
+
},
|
|
58
|
+
async execute(args) {
|
|
59
|
+
const { command, cwd: cwdArg } = args;
|
|
60
|
+
const effectiveCwd = cwdArg ? resolveJailed(cwdArg, worktreePath) : worktreePath;
|
|
61
|
+
let stdout;
|
|
62
|
+
let stderr;
|
|
63
|
+
try {
|
|
64
|
+
const result = await execAsync(command, {
|
|
65
|
+
cwd: effectiveCwd,
|
|
66
|
+
timeout: BASH_TIMEOUT_MS,
|
|
67
|
+
maxBuffer: STDOUT_MAX_BYTES * 4,
|
|
68
|
+
env: { ...process.env, FORCE_COLOR: '0' },
|
|
69
|
+
});
|
|
70
|
+
stdout = result.stdout;
|
|
71
|
+
stderr = result.stderr;
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const execErr = err;
|
|
75
|
+
stdout = execErr.stdout ?? '';
|
|
76
|
+
stderr = execErr.stderr ?? execErr.message ?? 'Unknown error';
|
|
77
|
+
}
|
|
78
|
+
const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
|
|
79
|
+
const truncated = Buffer.byteLength(combined) > STDOUT_MAX_BYTES
|
|
80
|
+
? combined.slice(0, STDOUT_MAX_BYTES) + '\n[output truncated]'
|
|
81
|
+
: combined;
|
|
82
|
+
return truncated || '(no output)';
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// ── file_edit ─────────────────────────────────────────────────
|
|
87
|
+
function fileEditTool(worktreePath) {
|
|
88
|
+
return {
|
|
89
|
+
name: 'file_edit',
|
|
90
|
+
description: 'Write or overwrite a file inside the worktree.',
|
|
91
|
+
parameters: {
|
|
92
|
+
type: 'object',
|
|
93
|
+
properties: {
|
|
94
|
+
path: { type: 'string', description: 'File path relative to the worktree root.' },
|
|
95
|
+
content: { type: 'string', description: 'New file content (complete, not a diff).' },
|
|
96
|
+
},
|
|
97
|
+
required: ['path', 'content'],
|
|
98
|
+
},
|
|
99
|
+
async execute(args) {
|
|
100
|
+
const { path: filePath, content } = args;
|
|
101
|
+
const resolved = resolveJailed(filePath, worktreePath);
|
|
102
|
+
// Create intermediate directories if needed
|
|
103
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(resolved), { recursive: true });
|
|
104
|
+
await promises_1.default.writeFile(resolved, content, 'utf-8');
|
|
105
|
+
return `Written ${resolved}`;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// ── read_file ─────────────────────────────────────────────────
|
|
110
|
+
function readFileTool(worktreePath) {
|
|
111
|
+
return {
|
|
112
|
+
name: 'read_file',
|
|
113
|
+
description: 'Read the contents of a file inside the worktree.',
|
|
114
|
+
parameters: {
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {
|
|
117
|
+
path: { type: 'string', description: 'File path relative to the worktree root.' },
|
|
118
|
+
},
|
|
119
|
+
required: ['path'],
|
|
120
|
+
},
|
|
121
|
+
async execute(args) {
|
|
122
|
+
const { path: filePath } = args;
|
|
123
|
+
const resolved = resolveJailed(filePath, worktreePath);
|
|
124
|
+
let content;
|
|
125
|
+
try {
|
|
126
|
+
content = await promises_1.default.readFile(resolved, 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return `Error: file "${resolved}" not found or unreadable.`;
|
|
130
|
+
}
|
|
131
|
+
const truncated = Buffer.byteLength(content) > STDOUT_MAX_BYTES
|
|
132
|
+
? content.slice(0, STDOUT_MAX_BYTES) + '\n[file truncated]'
|
|
133
|
+
: content;
|
|
134
|
+
return truncated;
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// ── git ───────────────────────────────────────────────────────
|
|
139
|
+
function gitTool(worktreePath) {
|
|
140
|
+
return {
|
|
141
|
+
name: 'git',
|
|
142
|
+
description: 'Run a git command inside the worktree. Pass args as an array (e.g. ["add", "-A"] or ["commit", "-m", "feat: add login"]).',
|
|
143
|
+
parameters: {
|
|
144
|
+
type: 'object',
|
|
145
|
+
properties: {
|
|
146
|
+
args: {
|
|
147
|
+
type: 'array',
|
|
148
|
+
items: { type: 'string' },
|
|
149
|
+
description: 'Git subcommand and arguments (without the "git" prefix).',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
required: ['args'],
|
|
153
|
+
},
|
|
154
|
+
async execute(args) {
|
|
155
|
+
const { args: gitArgs } = args;
|
|
156
|
+
if (!Array.isArray(gitArgs) || gitArgs.length === 0) {
|
|
157
|
+
return 'Error: args must be a non-empty array of strings.';
|
|
158
|
+
}
|
|
159
|
+
const command = `git ${gitArgs.map((a) => JSON.stringify(a)).join(' ')}`;
|
|
160
|
+
let stdout;
|
|
161
|
+
let stderr;
|
|
162
|
+
try {
|
|
163
|
+
const result = await execAsync(command, {
|
|
164
|
+
cwd: worktreePath,
|
|
165
|
+
timeout: BASH_TIMEOUT_MS,
|
|
166
|
+
maxBuffer: STDOUT_MAX_BYTES * 4,
|
|
167
|
+
});
|
|
168
|
+
stdout = result.stdout;
|
|
169
|
+
stderr = result.stderr;
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
const execErr = err;
|
|
173
|
+
stdout = execErr.stdout ?? '';
|
|
174
|
+
stderr = execErr.stderr ?? execErr.message ?? 'git command failed';
|
|
175
|
+
}
|
|
176
|
+
const combined = [stdout, stderr].filter(Boolean).join('\n').trim();
|
|
177
|
+
return combined || '(no output)';
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=coding-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-tools.js","sourceRoot":"","sources":["../../src/agent/coding-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/ai.module.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import type { IModule } from '@octo-cyber/core';
|
|
1
|
+
import type { IModule, IModuleContext, Express } from '@octo-cyber/core';
|
|
2
|
+
import { OctoSkill } from './skill/entities/octo-skill.entity.js';
|
|
2
3
|
import './skill/services/skill-generator.service.js';
|
|
3
|
-
|
|
4
|
+
/**
|
|
5
|
+
* AI module — CLI tool management (Claude/Gemini/Codex) + Skill system.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AiModule implements IModule {
|
|
8
|
+
readonly name = "ai";
|
|
9
|
+
readonly version = "0.5.5";
|
|
10
|
+
readonly entities: (typeof OctoSkill)[];
|
|
11
|
+
initialize(_ctx: IModuleContext): Promise<void>;
|
|
12
|
+
private registerAiQueryHandler;
|
|
13
|
+
registerRoutes(app: Express, _ctx: IModuleContext): void;
|
|
14
|
+
destroy(): Promise<void>;
|
|
15
|
+
}
|
|
4
16
|
//# sourceMappingURL=ai.module.d.ts.map
|
package/dist/ai.module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.module.d.ts","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"ai.module.d.ts","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAezE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAOlE,OAAO,6CAA6C,CAAC;AAErD;;GAEG;AACH,qBAAa,QAAS,YAAW,OAAO;IACtC,QAAQ,CAAC,IAAI,QAAQ;IACrB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,QAAQ,uBAAe;IAE1B,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrD,OAAO,CAAC,sBAAsB;IA+B9B,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAsBlD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
package/dist/ai.module.js
CHANGED
|
@@ -3,24 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AiModule = void 0;
|
|
4
4
|
const core_1 = require("@octo-cyber/core");
|
|
5
5
|
const auth_1 = require("@octo-cyber/auth");
|
|
6
|
-
|
|
6
|
+
const cli_executor_service_js_1 = require("./cli/cli-executor.service.js");
|
|
7
7
|
const cli_registry_service_js_1 = require("./cli/cli-registry.service.js");
|
|
8
|
+
// CLI integration (imported at top for EventBus handler)
|
|
8
9
|
const workspace_service_js_1 = require("./cli/workspace.service.js");
|
|
9
10
|
const claude_cli_adapter_js_1 = require("./cli/adapters/claude-cli.adapter.js");
|
|
10
11
|
const gemini_cli_adapter_js_1 = require("./cli/adapters/gemini-cli.adapter.js");
|
|
11
12
|
const codex_cli_adapter_js_1 = require("./cli/adapters/codex-cli.adapter.js");
|
|
12
13
|
const antigravity_adapter_js_1 = require("./cli/adapters/antigravity.adapter.js");
|
|
14
|
+
const cli_proxy_api_adapter_js_1 = require("./cli/adapters/cli-proxy-api.adapter.js");
|
|
13
15
|
const ai_cli_controller_js_1 = require("./cli/controllers/ai-cli.controller.js");
|
|
14
16
|
// Skill system
|
|
15
17
|
const octo_skill_entity_js_1 = require("./skill/entities/octo-skill.entity.js");
|
|
16
18
|
const skill_registry_service_js_1 = require("./skill/services/skill-registry.service.js");
|
|
17
19
|
const skill_installer_service_js_1 = require("./skill/services/skill-installer.service.js");
|
|
18
20
|
const skill_controller_js_1 = require("./skill/controllers/skill.controller.js");
|
|
21
|
+
const skill_market_service_js_1 = require("./skill/services/skill-market.service.js");
|
|
22
|
+
const skill_market_controller_js_1 = require("./skill/controllers/skill-market.controller.js");
|
|
19
23
|
// Ensure SkillGeneratorService is registered in DI
|
|
20
24
|
require("./skill/services/skill-generator.service.js");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
/**
|
|
26
|
+
* AI module — CLI tool management (Claude/Gemini/Codex) + Skill system.
|
|
27
|
+
*/
|
|
28
|
+
class AiModule {
|
|
29
|
+
name = 'ai';
|
|
30
|
+
version = '0.5.5';
|
|
31
|
+
entities = [octo_skill_entity_js_1.OctoSkill];
|
|
24
32
|
async initialize(_ctx) {
|
|
25
33
|
// Initialize CLI registry with built-in adapters
|
|
26
34
|
const cliRegistry = core_1.Container.get(cli_registry_service_js_1.CliRegistryService);
|
|
@@ -28,6 +36,7 @@ exports.AiModule = {
|
|
|
28
36
|
cliRegistry.registerAdapter(new gemini_cli_adapter_js_1.GeminiCliAdapter());
|
|
29
37
|
cliRegistry.registerAdapter(new codex_cli_adapter_js_1.CodexCliAdapter());
|
|
30
38
|
cliRegistry.registerAdapter(new antigravity_adapter_js_1.AntigravityAdapter());
|
|
39
|
+
cliRegistry.registerAdapter(new cli_proxy_api_adapter_js_1.CliProxyApiAdapter());
|
|
31
40
|
// Initialize workspace service
|
|
32
41
|
const dataDir = process.env.DATA_DIR || './data';
|
|
33
42
|
const workspaceService = core_1.Container.get(workspace_service_js_1.WorkspaceService);
|
|
@@ -35,25 +44,63 @@ exports.AiModule = {
|
|
|
35
44
|
// Initialize skill services
|
|
36
45
|
const skillRegistry = core_1.Container.get(skill_registry_service_js_1.SkillRegistryService);
|
|
37
46
|
skillRegistry.initialize();
|
|
38
|
-
// Ensure installer
|
|
47
|
+
// Ensure installer and market services are available in DI
|
|
39
48
|
core_1.Container.get(skill_installer_service_js_1.SkillInstallerService);
|
|
49
|
+
core_1.Container.get(skill_market_service_js_1.SkillMarketService);
|
|
40
50
|
const logger = core_1.Container.get(core_1.LoggerService);
|
|
51
|
+
// Register EventBus handler so other modules (e.g. CRM) can delegate AI calls
|
|
52
|
+
// without directly importing AI internals — respects module dependency chain.
|
|
53
|
+
this.registerAiQueryHandler(logger);
|
|
41
54
|
logger.info('[AiModule] CLI registry, workspace, and skill services initialized');
|
|
42
|
-
}
|
|
55
|
+
}
|
|
56
|
+
registerAiQueryHandler(logger) {
|
|
57
|
+
const executor = core_1.Container.get(cli_executor_service_js_1.CliExecutorService);
|
|
58
|
+
const registry = core_1.Container.get(cli_registry_service_js_1.CliRegistryService);
|
|
59
|
+
core_1.EventBus.on('crm:ai:ask', async (payload) => {
|
|
60
|
+
try {
|
|
61
|
+
const tools = await registry.getAvailableTools();
|
|
62
|
+
const available = tools.find((t) => t.isAvailable);
|
|
63
|
+
if (!available) {
|
|
64
|
+
payload.reject(new Error('No AI CLI tool is currently available'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const result = await executor.execute({ tool: available.name, prompt: payload.prompt });
|
|
68
|
+
if (result.success) {
|
|
69
|
+
payload.resolve(result.output.trim());
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
payload.reject(new Error(result.error ?? 'AI execution failed'));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
logger.error(`[AiModule] crm:ai:ask handler error: ${String(err)}`);
|
|
77
|
+
payload.reject(err instanceof Error ? err : new Error(String(err)));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
logger.info('[AiModule] Registered crm:ai:ask EventBus handler');
|
|
81
|
+
}
|
|
43
82
|
registerRoutes(app, _ctx) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
83
|
+
core_1.MenuRegistry.register('ai', [
|
|
84
|
+
{ path: '/ai-tools', titleKey: 'aiTools.pages.tools' },
|
|
85
|
+
{ path: '/ai-tools/workspaces', titleKey: 'aiTools.pages.workspaces' },
|
|
86
|
+
{ path: '/ai-tools/skills', titleKey: 'aiTools.pages.skills' },
|
|
87
|
+
{ path: '/ai-tools/skill-market', titleKey: 'aiTools.pages.skillMarket' },
|
|
88
|
+
]);
|
|
89
|
+
const controllers = [core_1.Container.get(ai_cli_controller_js_1.AiCliController)];
|
|
90
|
+
(0, core_1.registerControllers)(app, controllers, { module: 'ai', middlewares: [(0, auth_1.authMiddleware)()] });
|
|
48
91
|
// Skill routes (require auth for install/uninstall/generate)
|
|
49
|
-
const skillControllers = [
|
|
92
|
+
const skillControllers = [
|
|
93
|
+
core_1.Container.get(skill_controller_js_1.SkillController),
|
|
94
|
+
core_1.Container.get(skill_market_controller_js_1.SkillMarketController),
|
|
95
|
+
];
|
|
50
96
|
(0, core_1.registerControllers)(app, skillControllers, {
|
|
51
97
|
module: 'ai',
|
|
52
98
|
middlewares: [(0, auth_1.authMiddleware)()],
|
|
53
99
|
});
|
|
54
|
-
}
|
|
100
|
+
}
|
|
55
101
|
async destroy() {
|
|
56
102
|
// No cleanup needed
|
|
57
|
-
}
|
|
58
|
-
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.AiModule = AiModule;
|
|
59
106
|
//# sourceMappingURL=ai.module.js.map
|
package/dist/ai.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"ai.module.js","sourceRoot":"","sources":["../src/ai.module.ts"],"names":[],"mappings":"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"}
|