@octo-cyber/ai 0.5.4 → 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/{skill → src/skill}/services/skill-registry.service.d.ts +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 +18 -6
- 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 +21 -15
- 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}/types.js +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session status for a Claude Code agent session.
|
|
3
|
+
*
|
|
4
|
+
* - `starting` — worktree created, process being launched
|
|
5
|
+
* - `running` — Claude Code agent is actively executing
|
|
6
|
+
* - `completed` — agent finished successfully (PR submitted or task done)
|
|
7
|
+
* - `failed` — agent exited with error or timed out
|
|
8
|
+
* - `cancelled` — session was manually stopped before completion
|
|
9
|
+
*/
|
|
10
|
+
export type ClaudeCodeSessionStatus = 'starting' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
11
|
+
/**
|
|
12
|
+
* Options passed when starting a new Claude Code session.
|
|
13
|
+
*/
|
|
14
|
+
export interface StartSessionOptions {
|
|
15
|
+
/** Identifier of the feedback requirement that triggered this session. */
|
|
16
|
+
requirementId: string;
|
|
17
|
+
/** Absolute path to the git worktree where Claude Code will run. */
|
|
18
|
+
worktreePath: string;
|
|
19
|
+
/** Branch name checked out in the worktree (e.g. `claude/task-042-fix-login`). */
|
|
20
|
+
branch: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional path to the TASK.md file inside the worktree.
|
|
23
|
+
* When provided, Claude Code reads this file as its primary directive.
|
|
24
|
+
*/
|
|
25
|
+
taskFilePath?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Maximum time (in milliseconds) to allow the session to run before
|
|
28
|
+
* it is treated as timed-out and killed. Defaults to 86_400_000 (24 h).
|
|
29
|
+
*/
|
|
30
|
+
timeoutMs?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Snapshot of a running or finished Claude Code session.
|
|
34
|
+
*/
|
|
35
|
+
export interface ClaudeCodeSession {
|
|
36
|
+
/** Unique session identifier (UUID). */
|
|
37
|
+
sessionId: string;
|
|
38
|
+
/** Requirement that triggered this session. */
|
|
39
|
+
requirementId: string;
|
|
40
|
+
/** Current lifecycle status of the session. */
|
|
41
|
+
status: ClaudeCodeSessionStatus;
|
|
42
|
+
/** Absolute path to the worktree where the agent is (or was) running. */
|
|
43
|
+
worktreePath: string;
|
|
44
|
+
/** Branch checked out in the worktree. */
|
|
45
|
+
branch: string;
|
|
46
|
+
/** Wall-clock time when the session was created. */
|
|
47
|
+
startedAt: Date;
|
|
48
|
+
/**
|
|
49
|
+
* Wall-clock time when the session reached a terminal state
|
|
50
|
+
* (`completed`, `failed`, or `cancelled`). Undefined while still active.
|
|
51
|
+
*/
|
|
52
|
+
endedAt?: Date;
|
|
53
|
+
/**
|
|
54
|
+
* URL of the pull request created by this session.
|
|
55
|
+
* Populated only after the agent calls `/ship` and the PR is opened.
|
|
56
|
+
*/
|
|
57
|
+
prUrl?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Human-readable error message when `status` is `failed`.
|
|
60
|
+
* Undefined for successful or in-progress sessions.
|
|
61
|
+
*/
|
|
62
|
+
error?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Result returned by {@link IClaudeCodeSessionManager.stopSession}.
|
|
66
|
+
*/
|
|
67
|
+
export interface StopSessionResult {
|
|
68
|
+
/** Whether the session was successfully stopped. */
|
|
69
|
+
success: boolean;
|
|
70
|
+
/** Final status after the stop attempt. */
|
|
71
|
+
finalStatus: ClaudeCodeSessionStatus;
|
|
72
|
+
/** Error message if the stop operation itself failed. */
|
|
73
|
+
error?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Contract for managing Claude Code agent sessions within the Octo
|
|
77
|
+
* self-iteration pipeline.
|
|
78
|
+
*
|
|
79
|
+
* Implementations are responsible for:
|
|
80
|
+
* 1. Spawning Claude Code processes inside git worktrees.
|
|
81
|
+
* 2. Tracking session lifecycle (starting → running → completed/failed).
|
|
82
|
+
* 3. Enforcing per-session timeouts and concurrency limits.
|
|
83
|
+
* 4. Persisting session state so callers can resume across service restarts.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const manager = Container.get(IClaudeCodeSessionManager);
|
|
88
|
+
*
|
|
89
|
+
* const session = await manager.startSession({
|
|
90
|
+
* requirementId: 'req-abc123',
|
|
91
|
+
* worktreePath: '/path/to/worktree',
|
|
92
|
+
* branch: 'claude/task-007-fix-auth',
|
|
93
|
+
* taskFilePath: '/path/to/worktree/doc/task/TASK-007-fix-auth.md',
|
|
94
|
+
* });
|
|
95
|
+
*
|
|
96
|
+
* console.log(session.sessionId); // 'f47ac10b-...'
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export interface IClaudeCodeSessionManager {
|
|
100
|
+
/**
|
|
101
|
+
* Launches a new Claude Code agent session inside the given worktree.
|
|
102
|
+
*
|
|
103
|
+
* The implementation MUST:
|
|
104
|
+
* - Be idempotent for the same `requirementId`: if a session is already
|
|
105
|
+
* `starting` or `running` for that requirement, return the existing session
|
|
106
|
+
* rather than spawning a second process.
|
|
107
|
+
* - Persist the session record before returning so that a crash of the host
|
|
108
|
+
* process does not silently lose in-flight work.
|
|
109
|
+
* - Enforce `timeoutMs`: kill the process and set status to `failed` if it
|
|
110
|
+
* runs longer than allowed.
|
|
111
|
+
*
|
|
112
|
+
* @param options - Configuration for the new session.
|
|
113
|
+
* @returns The created (or existing) session record.
|
|
114
|
+
* @throws {Error} If the worktree path does not exist or is not a git repo.
|
|
115
|
+
*/
|
|
116
|
+
startSession(options: StartSessionOptions): Promise<ClaudeCodeSession>;
|
|
117
|
+
/**
|
|
118
|
+
* Requests graceful termination of an active session.
|
|
119
|
+
*
|
|
120
|
+
* The implementation SHOULD:
|
|
121
|
+
* - Send SIGTERM first, then SIGKILL after a short grace period (default 5 s).
|
|
122
|
+
* - Set status to `cancelled` on success.
|
|
123
|
+
* - Be a no-op (return success) if the session is already in a terminal state.
|
|
124
|
+
*
|
|
125
|
+
* @param sessionId - The UUID of the session to stop.
|
|
126
|
+
* @returns Result indicating whether the session was successfully stopped.
|
|
127
|
+
*/
|
|
128
|
+
stopSession(sessionId: string): Promise<StopSessionResult>;
|
|
129
|
+
/**
|
|
130
|
+
* Returns the current snapshot of a session.
|
|
131
|
+
*
|
|
132
|
+
* @param sessionId - The UUID of the session to look up.
|
|
133
|
+
* @returns The session record, or `undefined` if no such session exists.
|
|
134
|
+
*/
|
|
135
|
+
getSessionStatus(sessionId: string): Promise<ClaudeCodeSession | undefined>;
|
|
136
|
+
/**
|
|
137
|
+
* Lists all sessions that are currently in an active state
|
|
138
|
+
* (`starting` or `running`).
|
|
139
|
+
*
|
|
140
|
+
* Useful for:
|
|
141
|
+
* - Dashboard display of in-progress AI development tasks.
|
|
142
|
+
* - Recovery logic on service startup (detect orphaned sessions).
|
|
143
|
+
* - Enforcing global concurrency limits.
|
|
144
|
+
*
|
|
145
|
+
* @returns Array of active session records, ordered by `startedAt` ascending.
|
|
146
|
+
*/
|
|
147
|
+
listActiveSessions(): Promise<ClaudeCodeSession[]>;
|
|
148
|
+
}
|
|
149
|
+
/** DI token for resolving {@link IClaudeCodeSessionManager} implementations. */
|
|
150
|
+
export declare const CLAUDE_CODE_SESSION_MANAGER: unique symbol;
|
|
151
|
+
//# sourceMappingURL=IClaudeCodeSessionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IClaudeCodeSessionManager.d.ts","sourceRoot":"","sources":["../../shared/IClaudeCodeSessionManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B,UAAU,GACV,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,MAAM,EAAE,uBAAuB,CAAC;IAChC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,SAAS,EAAE,IAAI,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,WAAW,EAAE,uBAAuB,CAAC;IACrC,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAE5E;;;;;;;;;;OAUG;IACH,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;CACpD;AAED,gFAAgF;AAChF,eAAO,MAAM,2BAA2B,eAAsC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLAUDE_CODE_SESSION_MANAGER = void 0;
|
|
4
|
+
/** DI token for resolving {@link IClaudeCodeSessionManager} implementations. */
|
|
5
|
+
exports.CLAUDE_CODE_SESSION_MANAGER = Symbol('IClaudeCodeSessionManager');
|
|
6
|
+
//# sourceMappingURL=IClaudeCodeSessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IClaudeCodeSessionManager.js","sourceRoot":"","sources":["../../shared/IClaudeCodeSessionManager.ts"],"names":[],"mappings":";;;AAiKA,gFAAgF;AACnE,QAAA,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
|
|
@@ -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":";;;AAkDA,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,cAAc,GAAsB;IACxC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,WAAW;IACX,MAAM;IACN,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;CACR,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAsB;IACvC,MAAM;IACN,IAAI;IACJ,UAAU;IACV,UAAU;IACV,IAAI;IACJ,aAAa;IACb,IAAI;IACJ,aAAa;IACb,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;CACN,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAsB;IAC7C,YAAY;IACZ,KAAK;IACL,UAAU;IACV,KAAK;IACL,aAAa;IACb,KAAK;IACL,aAAa;IACb,IAAI;CACL,CAAC;AAEF,iFAAiF;AAEjF,SAAS,WAAW,CAAC,IAAY,EAAE,QAA2B;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC;AAoBD,uEAAuE;AACvE,MAAM,KAAK,GAAoB;IAC7B,+EAA+E;IAC/E;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC;QACxD,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,GAAG,EAAE,CACd,4CAA4C;QAC9C,UAAU,EAAE,IAAI;KACjB;IAED,gFAAgF;IAChF;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK;QACrC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,GAAG,EAAE,CAAC,oCAAoC;QACrD,UAAU,EAAE,GAAG;KAChB;IAED,gFAAgF;IAChF;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAC1B,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;QACrD,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YAC5B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,OAAO,4CAA4C,CAAC;YACtD,CAAC;YACD,OAAO,YAAY,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAC3C,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAC9C,mCAAmC,CAAC;QACvC,CAAC;QACD,UAAU,EAAE,IAAI;KACjB;IAED,+EAA+E;IAC/E;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,uDAAuD;QACpE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAC1B,IAAI,KAAK,aAAa,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC;QAC5D,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,GAAG,EAAE,CACd,+DAA+D;QACjE,UAAU,EAAE,GAAG;KAChB;IAED,gFAAgF;IAChF;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa;QAC7C,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACtB,IAAI,WAAW,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBAC3C,OAAO,kDAAkD,CAAC;YAC5D,CAAC;YACD,OAAO,mDAAmD,CAAC;QAC7D,CAAC;QACD,UAAU,EAAE,IAAI;KACjB;IAED,+EAA+E;IAC/E;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QACzE,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,GAAG,EAAE,CACd,iDAAiD;QACnD,UAAU,EAAE,GAAG;KAChB;IAED,gFAAgF;IAChF;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,aAAa;QAC7C,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,GAAG,EAAE,CACd,8DAA8D;QAChE,UAAU,EAAE,IAAI;KACjB;IAED,gFAAgF;IAChF;QACE,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,GAAG,EAAE,CACd,2CAA2C;QAC7C,UAAU,EAAE,GAAG;KAChB;CACF,CAAC;AAEF,iFAAiF;AAEjF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,KAAoB;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBAChC,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,0CAA0C;QAC1C,0BAA0B;QAC1B,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,yBAAyB;YACpC,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;CACF;AA3BD,oDA2BC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Request, Response } from '@octo-cyber/core';
|
|
2
|
+
/**
|
|
3
|
+
* AgentApprovalController — human-in-the-loop approval API.
|
|
4
|
+
*
|
|
5
|
+
* Endpoints:
|
|
6
|
+
* POST /api/v1/ai/agent/approval — Create an approval request
|
|
7
|
+
* GET /api/v1/ai/agent/approval/pending — List pending approvals
|
|
8
|
+
* GET /api/v1/ai/agent/approval/:id — Get a specific approval
|
|
9
|
+
* POST /api/v1/ai/agent/approval/:id/approve — Approve a request
|
|
10
|
+
* POST /api/v1/ai/agent/approval/:id/reject — Reject a request
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgentApprovalController {
|
|
13
|
+
private get service();
|
|
14
|
+
createApproval(req: Request, res: Response): Promise<void>;
|
|
15
|
+
listPending(_req: Request, res: Response): Promise<void>;
|
|
16
|
+
getApproval(req: Request, res: Response): Promise<void>;
|
|
17
|
+
approveRequest(req: Request, res: Response): Promise<void>;
|
|
18
|
+
rejectRequest(req: Request, res: Response): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=agent-approval.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.controller.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-approval.controller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1D;;;;;;;;;GASG;AACH,qBACa,uBAAuB;IAClC,OAAO,KAAK,OAAO,GAElB;IAGK,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1D,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAOhE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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.AgentApprovalController = void 0;
|
|
13
|
+
const core_1 = require("@octo-cyber/core");
|
|
14
|
+
const agent_approval_service_js_1 = require("./agent-approval.service.js");
|
|
15
|
+
/**
|
|
16
|
+
* AgentApprovalController — human-in-the-loop approval API.
|
|
17
|
+
*
|
|
18
|
+
* Endpoints:
|
|
19
|
+
* POST /api/v1/ai/agent/approval — Create an approval request
|
|
20
|
+
* GET /api/v1/ai/agent/approval/pending — List pending approvals
|
|
21
|
+
* GET /api/v1/ai/agent/approval/:id — Get a specific approval
|
|
22
|
+
* POST /api/v1/ai/agent/approval/:id/approve — Approve a request
|
|
23
|
+
* POST /api/v1/ai/agent/approval/:id/reject — Reject a request
|
|
24
|
+
*/
|
|
25
|
+
let AgentApprovalController = class AgentApprovalController {
|
|
26
|
+
get service() {
|
|
27
|
+
return core_1.Container.get(agent_approval_service_js_1.AgentApprovalService);
|
|
28
|
+
}
|
|
29
|
+
async createApproval(req, res) {
|
|
30
|
+
const body = req.body;
|
|
31
|
+
if (!body.runId || typeof body.runId !== 'string' || body.runId.trim().length === 0) {
|
|
32
|
+
throw core_1.AppError.badRequest('Missing or invalid runId');
|
|
33
|
+
}
|
|
34
|
+
if (!body.question || typeof body.question !== 'string' || body.question.trim().length === 0) {
|
|
35
|
+
throw core_1.AppError.badRequest('Missing or invalid question');
|
|
36
|
+
}
|
|
37
|
+
const context = typeof body.context === 'string' ? body.context : undefined;
|
|
38
|
+
const approval = await this.service.create(body.runId.trim(), body.question.trim(), context);
|
|
39
|
+
res.json(core_1.ApiResponse.ok(this.service.toDto(approval)));
|
|
40
|
+
}
|
|
41
|
+
async listPending(_req, res) {
|
|
42
|
+
const approvals = await this.service.getPending();
|
|
43
|
+
res.json(core_1.ApiResponse.ok(approvals.map((a) => this.service.toDto(a))));
|
|
44
|
+
}
|
|
45
|
+
async getApproval(req, res) {
|
|
46
|
+
const id = String(req.params['id'] ?? '');
|
|
47
|
+
const approval = await this.service.getById(id);
|
|
48
|
+
if (!approval)
|
|
49
|
+
throw core_1.AppError.notFound(`Agent approval not found: ${id}`);
|
|
50
|
+
res.json(core_1.ApiResponse.ok(this.service.toDto(approval)));
|
|
51
|
+
}
|
|
52
|
+
async approveRequest(req, res) {
|
|
53
|
+
const id = String(req.params['id'] ?? '');
|
|
54
|
+
const body = req.body;
|
|
55
|
+
const response = typeof body.response === 'string' ? body.response : undefined;
|
|
56
|
+
const approval = await this.service.respond(id, true, response);
|
|
57
|
+
res.json(core_1.ApiResponse.ok(this.service.toDto(approval)));
|
|
58
|
+
}
|
|
59
|
+
async rejectRequest(req, res) {
|
|
60
|
+
const id = String(req.params['id'] ?? '');
|
|
61
|
+
const body = req.body;
|
|
62
|
+
const response = typeof body.response === 'string' ? body.response : undefined;
|
|
63
|
+
const approval = await this.service.respond(id, false, response);
|
|
64
|
+
res.json(core_1.ApiResponse.ok(this.service.toDto(approval)));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.AgentApprovalController = AgentApprovalController;
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, core_1.Post)('/approval'),
|
|
70
|
+
__metadata("design:type", Function),
|
|
71
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
72
|
+
__metadata("design:returntype", Promise)
|
|
73
|
+
], AgentApprovalController.prototype, "createApproval", null);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, core_1.Get)('/approval/pending'),
|
|
76
|
+
__metadata("design:type", Function),
|
|
77
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
78
|
+
__metadata("design:returntype", Promise)
|
|
79
|
+
], AgentApprovalController.prototype, "listPending", null);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, core_1.Get)('/approval/:id'),
|
|
82
|
+
__metadata("design:type", Function),
|
|
83
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
84
|
+
__metadata("design:returntype", Promise)
|
|
85
|
+
], AgentApprovalController.prototype, "getApproval", null);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, core_1.Post)('/approval/:id/approve'),
|
|
88
|
+
__metadata("design:type", Function),
|
|
89
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
90
|
+
__metadata("design:returntype", Promise)
|
|
91
|
+
], AgentApprovalController.prototype, "approveRequest", null);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, core_1.Post)('/approval/:id/reject'),
|
|
94
|
+
__metadata("design:type", Function),
|
|
95
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
96
|
+
__metadata("design:returntype", Promise)
|
|
97
|
+
], AgentApprovalController.prototype, "rejectRequest", null);
|
|
98
|
+
exports.AgentApprovalController = AgentApprovalController = __decorate([
|
|
99
|
+
(0, core_1.Controller)('/api/v1/ai/agent')
|
|
100
|
+
], AgentApprovalController);
|
|
101
|
+
//# sourceMappingURL=agent-approval.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.controller.js","sourceRoot":"","sources":["../../../src/agent/agent-approval.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type AgentApprovalStatus = 'pending' | 'approved' | 'rejected';
|
|
2
|
+
export declare class AgentApproval {
|
|
3
|
+
id: string;
|
|
4
|
+
runId: string;
|
|
5
|
+
/** The question or action description requiring human approval. */
|
|
6
|
+
question: string;
|
|
7
|
+
/** Optional JSON or text context to help the reviewer decide. */
|
|
8
|
+
context: string | null;
|
|
9
|
+
status: AgentApprovalStatus;
|
|
10
|
+
/** Optional response message from the human reviewer. */
|
|
11
|
+
response: string | null;
|
|
12
|
+
respondedAt: Date | null;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=agent-approval.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-approval.entity.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-approval.entity.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,qBACa,aAAa;IAExB,EAAE,EAAG,MAAM,CAAC;IAGZ,KAAK,EAAG,MAAM,CAAC;IAEf,mEAAmE;IAEnE,QAAQ,EAAG,MAAM,CAAC;IAElB,iEAAiE;IAEjE,OAAO,EAAG,MAAM,GAAG,IAAI,CAAC;IAGxB,MAAM,EAAG,mBAAmB,CAAC;IAE7B,yDAAyD;IAEzD,QAAQ,EAAG,MAAM,GAAG,IAAI,CAAC;IAGzB,WAAW,EAAG,IAAI,GAAG,IAAI,CAAC;IAG1B,SAAS,EAAG,IAAI,CAAC;CAClB"}
|