@octo-cyber/ai 0.5.6 → 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.
Files changed (175) hide show
  1. package/dist/BranchDecisionEngine.d.ts +73 -0
  2. package/dist/BranchDecisionEngine.d.ts.map +1 -0
  3. package/dist/BranchDecisionEngine.js +195 -0
  4. package/dist/BranchDecisionEngine.js.map +1 -0
  5. package/dist/agent/coding-tools.d.ts +7 -0
  6. package/dist/agent/coding-tools.d.ts.map +1 -0
  7. package/dist/agent/coding-tools.js +181 -0
  8. package/dist/agent/coding-tools.js.map +1 -0
  9. package/dist/ai.module.d.ts +16 -0
  10. package/dist/ai.module.d.ts.map +1 -0
  11. package/dist/ai.module.js +106 -0
  12. package/dist/ai.module.js.map +1 -0
  13. package/dist/cli/adapters/antigravity.adapter.d.ts +31 -0
  14. package/dist/cli/adapters/antigravity.adapter.d.ts.map +1 -0
  15. package/dist/cli/adapters/antigravity.adapter.js +248 -0
  16. package/dist/cli/adapters/antigravity.adapter.js.map +1 -0
  17. package/dist/cli/adapters/claude-cli.adapter.d.ts +23 -0
  18. package/dist/cli/adapters/claude-cli.adapter.d.ts.map +1 -0
  19. package/dist/cli/adapters/claude-cli.adapter.js +81 -0
  20. package/dist/cli/adapters/claude-cli.adapter.js.map +1 -0
  21. package/dist/cli/adapters/cli-proxy-api.adapter.d.ts +32 -0
  22. package/dist/cli/adapters/cli-proxy-api.adapter.d.ts.map +1 -0
  23. package/dist/cli/adapters/cli-proxy-api.adapter.js +239 -0
  24. package/dist/cli/adapters/cli-proxy-api.adapter.js.map +1 -0
  25. package/dist/cli/adapters/codex-cli.adapter.d.ts +22 -0
  26. package/dist/cli/adapters/codex-cli.adapter.d.ts.map +1 -0
  27. package/dist/cli/adapters/codex-cli.adapter.js +76 -0
  28. package/dist/cli/adapters/codex-cli.adapter.js.map +1 -0
  29. package/dist/cli/adapters/detect-cli.d.ts +11 -0
  30. package/dist/cli/adapters/detect-cli.d.ts.map +1 -0
  31. package/dist/cli/adapters/detect-cli.js +40 -0
  32. package/dist/cli/adapters/detect-cli.js.map +1 -0
  33. package/dist/cli/adapters/gemini-cli.adapter.d.ts +21 -0
  34. package/dist/cli/adapters/gemini-cli.adapter.d.ts.map +1 -0
  35. package/dist/cli/adapters/gemini-cli.adapter.js +72 -0
  36. package/dist/cli/adapters/gemini-cli.adapter.js.map +1 -0
  37. package/dist/cli/adapters/index.d.ts +4 -0
  38. package/dist/cli/adapters/index.d.ts.map +1 -0
  39. package/dist/cli/adapters/index.js +10 -0
  40. package/dist/cli/adapters/index.js.map +1 -0
  41. package/dist/cli/cli-executor.service.d.ts +25 -0
  42. package/dist/cli/cli-executor.service.d.ts.map +1 -0
  43. package/dist/cli/cli-executor.service.js +170 -0
  44. package/dist/cli/cli-executor.service.js.map +1 -0
  45. package/dist/cli/cli-registry.service.d.ts +38 -0
  46. package/dist/cli/cli-registry.service.d.ts.map +1 -0
  47. package/dist/cli/cli-registry.service.js +114 -0
  48. package/dist/cli/cli-registry.service.js.map +1 -0
  49. package/dist/cli/controllers/ai-cli.controller.d.ts +40 -0
  50. package/dist/cli/controllers/ai-cli.controller.d.ts.map +1 -0
  51. package/dist/cli/controllers/ai-cli.controller.js +208 -0
  52. package/dist/cli/controllers/ai-cli.controller.js.map +1 -0
  53. package/dist/cli/index.d.ts +8 -0
  54. package/dist/cli/index.d.ts.map +1 -0
  55. package/dist/cli/index.js +17 -0
  56. package/dist/cli/index.js.map +1 -0
  57. package/dist/cli/types.d.ts +153 -0
  58. package/dist/cli/types.d.ts.map +1 -0
  59. package/dist/cli/types.js +9 -0
  60. package/dist/cli/types.js.map +1 -0
  61. package/dist/cli/workspace.service.d.ts +42 -0
  62. package/dist/cli/workspace.service.d.ts.map +1 -0
  63. package/dist/cli/workspace.service.js +249 -0
  64. package/dist/cli/workspace.service.js.map +1 -0
  65. package/dist/index.d.ts +10 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +44 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/session/claude-code-session-manager.service.d.ts +28 -0
  70. package/dist/session/claude-code-session-manager.service.d.ts.map +1 -0
  71. package/dist/session/claude-code-session-manager.service.js +177 -0
  72. package/dist/session/claude-code-session-manager.service.js.map +1 -0
  73. package/dist/skill/controllers/skill-market.controller.d.ts +18 -0
  74. package/dist/skill/controllers/skill-market.controller.d.ts.map +1 -0
  75. package/dist/skill/controllers/skill-market.controller.js +128 -0
  76. package/dist/skill/controllers/skill-market.controller.js.map +1 -0
  77. package/dist/skill/controllers/skill.controller.d.ts +37 -0
  78. package/dist/skill/controllers/skill.controller.d.ts.map +1 -0
  79. package/dist/skill/controllers/skill.controller.js +295 -0
  80. package/dist/skill/controllers/skill.controller.js.map +1 -0
  81. package/dist/skill/entities/octo-skill.entity.d.ts +22 -0
  82. package/dist/skill/entities/octo-skill.entity.d.ts.map +1 -0
  83. package/dist/skill/entities/octo-skill.entity.js +91 -0
  84. package/dist/skill/entities/octo-skill.entity.js.map +1 -0
  85. package/dist/skill/index.d.ts +9 -0
  86. package/dist/skill/index.d.ts.map +1 -0
  87. package/dist/skill/index.js +21 -0
  88. package/dist/skill/index.js.map +1 -0
  89. package/dist/skill/services/skill-generator.service.d.ts +47 -0
  90. package/dist/skill/services/skill-generator.service.d.ts.map +1 -0
  91. package/dist/skill/services/skill-generator.service.js +232 -0
  92. package/dist/skill/services/skill-generator.service.js.map +1 -0
  93. package/dist/skill/services/skill-installer.service.d.ts +65 -0
  94. package/dist/skill/services/skill-installer.service.d.ts.map +1 -0
  95. package/dist/skill/services/skill-installer.service.js +258 -0
  96. package/dist/skill/services/skill-installer.service.js.map +1 -0
  97. package/dist/skill/services/skill-market.service.d.ts +60 -0
  98. package/dist/skill/services/skill-market.service.d.ts.map +1 -0
  99. package/dist/skill/services/skill-market.service.js +244 -0
  100. package/dist/skill/services/skill-market.service.js.map +1 -0
  101. package/dist/skill/services/skill-registry.service.d.ts +61 -0
  102. package/dist/skill/services/skill-registry.service.d.ts.map +1 -0
  103. package/dist/skill/services/skill-registry.service.js +159 -0
  104. package/dist/skill/services/skill-registry.service.js.map +1 -0
  105. package/dist/skill/types.d.ts +76 -0
  106. package/dist/skill/types.d.ts.map +1 -0
  107. package/dist/skill/types.js +6 -0
  108. package/dist/skill/types.js.map +1 -0
  109. package/dist/src/agent/agent-run-persistence.service.d.ts +82 -0
  110. package/dist/src/agent/agent-run-persistence.service.d.ts.map +1 -0
  111. package/dist/src/agent/agent-run-persistence.service.js +171 -0
  112. package/dist/src/agent/agent-run-persistence.service.js.map +1 -0
  113. package/dist/src/agent/agent-run-step.entity.d.ts +23 -0
  114. package/dist/src/agent/agent-run-step.entity.d.ts.map +1 -0
  115. package/dist/src/agent/agent-run-step.entity.js +76 -0
  116. package/dist/src/agent/agent-run-step.entity.js.map +1 -0
  117. package/dist/src/skill/services/skill-market-utils.d.ts +25 -0
  118. package/dist/src/skill/services/skill-market-utils.d.ts.map +1 -0
  119. package/dist/src/skill/services/skill-market-utils.js +22 -0
  120. package/dist/src/skill/services/skill-market-utils.js.map +1 -0
  121. package/dist/src/workflow-design/WorkflowAssembler.d.ts +10 -0
  122. package/dist/src/workflow-design/WorkflowAssembler.d.ts.map +1 -0
  123. package/dist/src/workflow-design/WorkflowAssembler.js +81 -0
  124. package/dist/src/workflow-design/WorkflowAssembler.js.map +1 -0
  125. package/dist/src/workflow-design/n8n-node-templates-data.d.ts +4 -0
  126. package/dist/src/workflow-design/n8n-node-templates-data.d.ts.map +1 -0
  127. package/dist/src/workflow-design/n8n-node-templates-data.js +290 -0
  128. package/dist/src/workflow-design/n8n-node-templates-data.js.map +1 -0
  129. package/dist/workflow-design/DocumentExtractorAgent.d.ts +47 -0
  130. package/dist/workflow-design/DocumentExtractorAgent.d.ts.map +1 -0
  131. package/dist/workflow-design/DocumentExtractorAgent.js +118 -0
  132. package/dist/workflow-design/DocumentExtractorAgent.js.map +1 -0
  133. package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts +26 -0
  134. package/dist/workflow-design/N8nNodeKnowledgeBase.d.ts.map +1 -0
  135. package/dist/workflow-design/N8nNodeKnowledgeBase.js +320 -0
  136. package/dist/workflow-design/N8nNodeKnowledgeBase.js.map +1 -0
  137. package/dist/workflow-design/OctoAgentClient.d.ts +42 -0
  138. package/dist/workflow-design/OctoAgentClient.d.ts.map +1 -0
  139. package/dist/workflow-design/OctoAgentClient.js +166 -0
  140. package/dist/workflow-design/OctoAgentClient.js.map +1 -0
  141. package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts +45 -0
  142. package/dist/workflow-design/WorkflowDesignOrchestrator.d.ts.map +1 -0
  143. package/dist/workflow-design/WorkflowDesignOrchestrator.js +265 -0
  144. package/dist/workflow-design/WorkflowDesignOrchestrator.js.map +1 -0
  145. package/dist/workflow-design/agents/ActionChainAgent.d.ts +9 -0
  146. package/dist/workflow-design/agents/ActionChainAgent.d.ts.map +1 -0
  147. package/dist/workflow-design/agents/ActionChainAgent.js +79 -0
  148. package/dist/workflow-design/agents/ActionChainAgent.js.map +1 -0
  149. package/dist/workflow-design/agents/CodeScriptAgent.d.ts +15 -0
  150. package/dist/workflow-design/agents/CodeScriptAgent.d.ts.map +1 -0
  151. package/dist/workflow-design/agents/CodeScriptAgent.js +96 -0
  152. package/dist/workflow-design/agents/CodeScriptAgent.js.map +1 -0
  153. package/dist/workflow-design/agents/LogicFlowAgent.d.ts +9 -0
  154. package/dist/workflow-design/agents/LogicFlowAgent.d.ts.map +1 -0
  155. package/dist/workflow-design/agents/LogicFlowAgent.js +78 -0
  156. package/dist/workflow-design/agents/LogicFlowAgent.js.map +1 -0
  157. package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts +9 -0
  158. package/dist/workflow-design/agents/TriggerAnalystAgent.d.ts.map +1 -0
  159. package/dist/workflow-design/agents/TriggerAnalystAgent.js +65 -0
  160. package/dist/workflow-design/agents/TriggerAnalystAgent.js.map +1 -0
  161. package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts +9 -0
  162. package/dist/workflow-design/agents/WorkflowValidatorAgent.d.ts.map +1 -0
  163. package/dist/workflow-design/agents/WorkflowValidatorAgent.js +117 -0
  164. package/dist/workflow-design/agents/WorkflowValidatorAgent.js.map +1 -0
  165. package/dist/workflow-design/index.d.ts +12 -0
  166. package/dist/workflow-design/index.d.ts.map +1 -0
  167. package/dist/workflow-design/index.js +23 -0
  168. package/dist/workflow-design/index.js.map +1 -0
  169. package/dist/workflow-design/types.d.ts +155 -0
  170. package/dist/workflow-design/types.d.ts.map +1 -0
  171. package/dist/workflow-design/types.js +6 -0
  172. package/dist/workflow-design/types.js.map +1 -0
  173. package/package.json +2 -1
  174. package/web/dist/module.iife.js +254 -0
  175. package/web/dynamic-entry.tsx +94 -0
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CliRegistryService = void 0;
10
+ const core_1 = require("@octo-cyber/core");
11
+ /**
12
+ * Registry of available AI CLI tools.
13
+ *
14
+ * Manages CLI adapter registration, tool detection, and health checks.
15
+ * Adapters are registered at module initialization time;
16
+ * detection runs lazily on first query or explicitly via refresh().
17
+ */
18
+ let CliRegistryService = class CliRegistryService {
19
+ logger = core_1.Container.get(core_1.LoggerService);
20
+ adapters = new Map();
21
+ toolInfoCache = new Map();
22
+ hasDetected = false;
23
+ /** Register a CLI adapter */
24
+ registerAdapter(adapter) {
25
+ this.adapters.set(adapter.toolName, adapter);
26
+ this.logger.info(`[CliRegistry] Registered adapter: ${adapter.displayName}`);
27
+ }
28
+ /** Get adapter by tool name */
29
+ getAdapter(name) {
30
+ return this.adapters.get(name);
31
+ }
32
+ /** Get all registered adapter names */
33
+ getRegisteredTools() {
34
+ return [...this.adapters.keys()];
35
+ }
36
+ /** Check if a specific tool is available (installed and detected) */
37
+ async isToolAvailable(name) {
38
+ await this.ensureDetected();
39
+ const info = this.toolInfoCache.get(name);
40
+ return info?.isAvailable ?? false;
41
+ }
42
+ /** Get info for a specific tool */
43
+ async getToolInfo(name) {
44
+ await this.ensureDetected();
45
+ return this.toolInfoCache.get(name) ?? null;
46
+ }
47
+ /** Get info for all registered tools */
48
+ async getAvailableTools() {
49
+ await this.ensureDetected();
50
+ return [...this.toolInfoCache.values()];
51
+ }
52
+ /** Force re-detection of all tools */
53
+ async refresh() {
54
+ this.hasDetected = false;
55
+ this.toolInfoCache.clear();
56
+ return this.getAvailableTools();
57
+ }
58
+ /**
59
+ * Health check for a specific tool.
60
+ * Re-detects the tool regardless of cache.
61
+ */
62
+ async healthCheck(name) {
63
+ const adapter = this.adapters.get(name);
64
+ if (!adapter)
65
+ return null;
66
+ const info = await this.detectSingleTool(adapter);
67
+ this.toolInfoCache.set(name, info);
68
+ return info;
69
+ }
70
+ /** Get available models for a specific tool */
71
+ async getModels(name) {
72
+ const adapter = this.adapters.get(name);
73
+ if (!adapter?.listModels)
74
+ return [];
75
+ return adapter.listModels();
76
+ }
77
+ // ─── Private ────────────────────────────────────────────────
78
+ async ensureDetected() {
79
+ if (this.hasDetected)
80
+ return;
81
+ const detectionPromises = [...this.adapters.values()].map((adapter) => this.detectSingleTool(adapter));
82
+ const results = await Promise.all(detectionPromises);
83
+ for (const info of results) {
84
+ this.toolInfoCache.set(info.name, info);
85
+ }
86
+ this.hasDetected = true;
87
+ const available = results.filter((r) => r.isAvailable);
88
+ this.logger.info(`[CliRegistry] Detection complete: ${available.length}/${results.length} tools available`);
89
+ }
90
+ async detectSingleTool(adapter) {
91
+ const toolType = adapter.executionType === 'spawn' ? 'cli' : 'api';
92
+ try {
93
+ const info = await adapter.detectInstallation();
94
+ if (info)
95
+ return { ...info, toolType };
96
+ }
97
+ catch (err) {
98
+ this.logger.warn(`[CliRegistry] Detection failed for ${adapter.toolName}: ${err}`);
99
+ }
100
+ return {
101
+ name: adapter.toolName,
102
+ displayName: adapter.displayName,
103
+ version: '',
104
+ executablePath: '',
105
+ isAvailable: false,
106
+ toolType,
107
+ };
108
+ }
109
+ };
110
+ exports.CliRegistryService = CliRegistryService;
111
+ exports.CliRegistryService = CliRegistryService = __decorate([
112
+ (0, core_1.Service)()
113
+ ], CliRegistryService);
114
+ //# sourceMappingURL=cli-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-registry.service.js","sourceRoot":"","sources":["../../src/cli/cli-registry.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { Request, Response } from '@octo-cyber/core';
2
+ /**
3
+ * REST API controller for AI CLI operations.
4
+ *
5
+ * Endpoints:
6
+ * - GET /api/v1/ai-cli/tools — List available CLI tools
7
+ * - GET /api/v1/ai-cli/tools/:name/health — Health check for a tool
8
+ * - GET /api/v1/ai-cli/tools/:name/models — List models for a tool
9
+ * - POST /api/v1/ai-cli/execute — Execute a CLI tool
10
+ * - GET /api/v1/ai-cli/workspaces — List workspaces
11
+ * - POST /api/v1/ai-cli/workspaces — Create workspace (local or github)
12
+ * - POST /api/v1/ai-cli/workspaces/:id/pull — Pull latest for github workspace
13
+ * - POST /api/v1/ai-cli/workspaces/:id/delete — Delete workspace
14
+ */
15
+ export declare class AiCliController {
16
+ private registry;
17
+ private executor;
18
+ private workspace;
19
+ /** List all registered CLI tools with availability status */
20
+ listTools(_req: Request, res: Response): Promise<void>;
21
+ /** Health check for a specific CLI tool */
22
+ healthCheck(req: Request, res: Response): Promise<void>;
23
+ /** List available models for a specific tool */
24
+ listModels(req: Request, res: Response): Promise<void>;
25
+ /** Execute an AI CLI tool */
26
+ execute(req: Request, res: Response): Promise<void>;
27
+ /** Browse directories at a given path */
28
+ browseDir(req: Request, res: Response): Promise<void>;
29
+ /** Detect git info for a directory */
30
+ detectGit(req: Request, res: Response): Promise<void>;
31
+ /** List all workspaces */
32
+ listWorkspaces(_req: Request, res: Response): Promise<void>;
33
+ /** Create a new workspace (local or github) */
34
+ createWorkspace(req: Request, res: Response): Promise<void>;
35
+ /** Pull latest changes for a github workspace */
36
+ pullWorkspace(req: Request, res: Response): Promise<void>;
37
+ /** Delete a workspace */
38
+ deleteWorkspace(req: Request, res: Response): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=ai-cli.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-cli.controller.d.ts","sourceRoot":"","sources":["../../../src/cli/controllers/ai-cli.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;;;;;;;;;;GAYG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,SAAS,CAAmC;IAEpD,6DAA6D;IAEvD,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,2CAA2C;IAErC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,gDAAgD;IAE1C,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,6BAA6B;IAEvB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BzD,yCAAyC;IAEnC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,sCAAsC;IAEhC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,0BAA0B;IAEpB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,+CAA+C;IAEzC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjE,iDAAiD;IAE3C,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,yBAAyB;IAEnB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlE"}
@@ -0,0 +1,208 @@
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.AiCliController = void 0;
13
+ const node_os_1 = require("node:os");
14
+ const core_1 = require("@octo-cyber/core");
15
+ const cli_registry_service_js_1 = require("../cli-registry.service.js");
16
+ const cli_executor_service_js_1 = require("../cli-executor.service.js");
17
+ const workspace_service_js_1 = require("../workspace.service.js");
18
+ const VALID_TOOLS = new Set(['claude', 'gemini', 'codex', 'antigravity', 'cli-proxy-api']);
19
+ /**
20
+ * REST API controller for AI CLI operations.
21
+ *
22
+ * Endpoints:
23
+ * - GET /api/v1/ai-cli/tools — List available CLI tools
24
+ * - GET /api/v1/ai-cli/tools/:name/health — Health check for a tool
25
+ * - GET /api/v1/ai-cli/tools/:name/models — List models for a tool
26
+ * - POST /api/v1/ai-cli/execute — Execute a CLI tool
27
+ * - GET /api/v1/ai-cli/workspaces — List workspaces
28
+ * - POST /api/v1/ai-cli/workspaces — Create workspace (local or github)
29
+ * - POST /api/v1/ai-cli/workspaces/:id/pull — Pull latest for github workspace
30
+ * - POST /api/v1/ai-cli/workspaces/:id/delete — Delete workspace
31
+ */
32
+ let AiCliController = class AiCliController {
33
+ registry = core_1.Container.get(cli_registry_service_js_1.CliRegistryService);
34
+ executor = core_1.Container.get(cli_executor_service_js_1.CliExecutorService);
35
+ workspace = core_1.Container.get(workspace_service_js_1.WorkspaceService);
36
+ /** List all registered CLI tools with availability status */
37
+ async listTools(_req, res) {
38
+ const tools = await this.registry.getAvailableTools();
39
+ res.json(core_1.ApiResponse.ok(tools));
40
+ }
41
+ /** Health check for a specific CLI tool */
42
+ async healthCheck(req, res) {
43
+ const name = req.params.name;
44
+ if (!VALID_TOOLS.has(name)) {
45
+ throw core_1.AppError.badRequest(`Invalid tool name: ${name}`);
46
+ }
47
+ const info = await this.registry.healthCheck(name);
48
+ if (!info) {
49
+ throw core_1.AppError.notFound(`Tool not registered: ${name}`);
50
+ }
51
+ res.json(core_1.ApiResponse.ok(info));
52
+ }
53
+ /** List available models for a specific tool */
54
+ async listModels(req, res) {
55
+ const name = req.params.name;
56
+ if (!VALID_TOOLS.has(name)) {
57
+ throw core_1.AppError.badRequest(`Invalid tool name: ${name}`);
58
+ }
59
+ const models = await this.registry.getModels(name);
60
+ res.json(core_1.ApiResponse.ok(models));
61
+ }
62
+ /** Execute an AI CLI tool */
63
+ async execute(req, res) {
64
+ const { tool, prompt, model, workingDir, timeoutMs, args, jsonOutput } = req.body;
65
+ if (!tool || !VALID_TOOLS.has(tool)) {
66
+ throw core_1.AppError.badRequest(`Invalid or missing tool. Must be one of: ${[...VALID_TOOLS].join(', ')}`);
67
+ }
68
+ if (!prompt || typeof prompt !== 'string') {
69
+ throw core_1.AppError.badRequest('Missing or invalid prompt');
70
+ }
71
+ const result = await this.executor.execute({
72
+ tool: tool,
73
+ prompt,
74
+ model: model && typeof model === 'string' ? model : undefined,
75
+ workingDir: workingDir || (0, node_os_1.tmpdir)(),
76
+ timeoutMs: timeoutMs ? Number(timeoutMs) : undefined,
77
+ args: Array.isArray(args) ? args : undefined,
78
+ jsonOutput: Boolean(jsonOutput),
79
+ });
80
+ res.json(core_1.ApiResponse.ok(result));
81
+ }
82
+ /** Browse directories at a given path */
83
+ async browseDir(req, res) {
84
+ const dirPath = req.query.path || '/';
85
+ const entries = await this.workspace.browseDir(dirPath);
86
+ res.json(core_1.ApiResponse.ok(entries));
87
+ }
88
+ /** Detect git info for a directory */
89
+ async detectGit(req, res) {
90
+ const { path: dirPath } = req.body;
91
+ if (!dirPath || typeof dirPath !== 'string') {
92
+ throw core_1.AppError.badRequest('Directory path is required');
93
+ }
94
+ const info = await this.workspace.detectGitInfo(dirPath);
95
+ res.json(core_1.ApiResponse.ok(info));
96
+ }
97
+ /** List all workspaces */
98
+ async listWorkspaces(_req, res) {
99
+ const workspaces = await this.workspace.listWorkspaces();
100
+ res.json(core_1.ApiResponse.ok(workspaces));
101
+ }
102
+ /** Create a new workspace (local or github) */
103
+ async createWorkspace(req, res) {
104
+ const { type, name, localPath, repoUrl, branch, description } = req.body;
105
+ if (!name || typeof name !== 'string') {
106
+ throw core_1.AppError.badRequest('Workspace name is required');
107
+ }
108
+ if (type === 'local') {
109
+ if (!localPath || typeof localPath !== 'string') {
110
+ throw core_1.AppError.badRequest('Local workspace requires a localPath');
111
+ }
112
+ const ws = await this.workspace.createLocalWorkspace(name, localPath, {
113
+ description, repoUrl, branch,
114
+ });
115
+ res.status(201).json(core_1.ApiResponse.ok(ws, 'Workspace created'));
116
+ }
117
+ else if (type === 'github') {
118
+ if (!repoUrl || typeof repoUrl !== 'string') {
119
+ throw core_1.AppError.badRequest('GitHub workspace requires a repoUrl');
120
+ }
121
+ if (!branch || typeof branch !== 'string') {
122
+ throw core_1.AppError.badRequest('GitHub workspace requires a branch');
123
+ }
124
+ const ws = await this.workspace.createGithubWorkspace(name, repoUrl, branch, description);
125
+ res.status(201).json(core_1.ApiResponse.ok(ws, 'Workspace created'));
126
+ }
127
+ else {
128
+ throw core_1.AppError.badRequest('Invalid workspace type. Must be "local" or "github"');
129
+ }
130
+ }
131
+ /** Pull latest changes for a github workspace */
132
+ async pullWorkspace(req, res) {
133
+ const id = req.params.id;
134
+ await this.workspace.pullWorkspace(id);
135
+ res.json(core_1.ApiResponse.ok(null, 'Workspace pulled'));
136
+ }
137
+ /** Delete a workspace */
138
+ async deleteWorkspace(req, res) {
139
+ const id = req.params.id;
140
+ await this.workspace.deleteWorkspace(id);
141
+ res.json(core_1.ApiResponse.ok(null, 'Workspace deleted'));
142
+ }
143
+ };
144
+ exports.AiCliController = AiCliController;
145
+ __decorate([
146
+ (0, core_1.Get)('/tools'),
147
+ __metadata("design:type", Function),
148
+ __metadata("design:paramtypes", [Object, Object]),
149
+ __metadata("design:returntype", Promise)
150
+ ], AiCliController.prototype, "listTools", null);
151
+ __decorate([
152
+ (0, core_1.Get)('/tools/:name/health'),
153
+ __metadata("design:type", Function),
154
+ __metadata("design:paramtypes", [Object, Object]),
155
+ __metadata("design:returntype", Promise)
156
+ ], AiCliController.prototype, "healthCheck", null);
157
+ __decorate([
158
+ (0, core_1.Get)('/tools/:name/models'),
159
+ __metadata("design:type", Function),
160
+ __metadata("design:paramtypes", [Object, Object]),
161
+ __metadata("design:returntype", Promise)
162
+ ], AiCliController.prototype, "listModels", null);
163
+ __decorate([
164
+ (0, core_1.Post)('/execute'),
165
+ __metadata("design:type", Function),
166
+ __metadata("design:paramtypes", [Object, Object]),
167
+ __metadata("design:returntype", Promise)
168
+ ], AiCliController.prototype, "execute", null);
169
+ __decorate([
170
+ (0, core_1.Get)('/browse-dir'),
171
+ __metadata("design:type", Function),
172
+ __metadata("design:paramtypes", [Object, Object]),
173
+ __metadata("design:returntype", Promise)
174
+ ], AiCliController.prototype, "browseDir", null);
175
+ __decorate([
176
+ (0, core_1.Post)('/detect-git'),
177
+ __metadata("design:type", Function),
178
+ __metadata("design:paramtypes", [Object, Object]),
179
+ __metadata("design:returntype", Promise)
180
+ ], AiCliController.prototype, "detectGit", null);
181
+ __decorate([
182
+ (0, core_1.Get)('/workspaces'),
183
+ __metadata("design:type", Function),
184
+ __metadata("design:paramtypes", [Object, Object]),
185
+ __metadata("design:returntype", Promise)
186
+ ], AiCliController.prototype, "listWorkspaces", null);
187
+ __decorate([
188
+ (0, core_1.Post)('/workspaces'),
189
+ __metadata("design:type", Function),
190
+ __metadata("design:paramtypes", [Object, Object]),
191
+ __metadata("design:returntype", Promise)
192
+ ], AiCliController.prototype, "createWorkspace", null);
193
+ __decorate([
194
+ (0, core_1.Post)('/workspaces/:id/pull'),
195
+ __metadata("design:type", Function),
196
+ __metadata("design:paramtypes", [Object, Object]),
197
+ __metadata("design:returntype", Promise)
198
+ ], AiCliController.prototype, "pullWorkspace", null);
199
+ __decorate([
200
+ (0, core_1.Post)('/workspaces/:id/delete'),
201
+ __metadata("design:type", Function),
202
+ __metadata("design:paramtypes", [Object, Object]),
203
+ __metadata("design:returntype", Promise)
204
+ ], AiCliController.prototype, "deleteWorkspace", null);
205
+ exports.AiCliController = AiCliController = __decorate([
206
+ (0, core_1.Controller)('/api/v1/ai-cli')
207
+ ], AiCliController);
208
+ //# sourceMappingURL=ai-cli.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-cli.controller.js","sourceRoot":"","sources":["../../../src/cli/controllers/ai-cli.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { CliToolName, CliToolInfo, CliExecuteOptions, CliExecuteResult, ICliAdapter, FileInput, FileOutput, WorkspaceType, WorkspaceMetadata, Workspace, DetectedGitInfo, DirEntry, } from './types.js';
2
+ export { CliRegistryService } from './cli-registry.service.js';
3
+ export { CliExecutorService } from './cli-executor.service.js';
4
+ export { WorkspaceService } from './workspace.service.js';
5
+ export { ClaudeCliAdapter } from './adapters/claude-cli.adapter.js';
6
+ export { GeminiCliAdapter } from './adapters/gemini-cli.adapter.js';
7
+ export { CodexCliAdapter } from './adapters/codex-cli.adapter.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodexCliAdapter = exports.GeminiCliAdapter = exports.ClaudeCliAdapter = exports.WorkspaceService = exports.CliExecutorService = exports.CliRegistryService = void 0;
4
+ var cli_registry_service_js_1 = require("./cli-registry.service.js");
5
+ Object.defineProperty(exports, "CliRegistryService", { enumerable: true, get: function () { return cli_registry_service_js_1.CliRegistryService; } });
6
+ var cli_executor_service_js_1 = require("./cli-executor.service.js");
7
+ Object.defineProperty(exports, "CliExecutorService", { enumerable: true, get: function () { return cli_executor_service_js_1.CliExecutorService; } });
8
+ var workspace_service_js_1 = require("./workspace.service.js");
9
+ Object.defineProperty(exports, "WorkspaceService", { enumerable: true, get: function () { return workspace_service_js_1.WorkspaceService; } });
10
+ // Adapters
11
+ var claude_cli_adapter_js_1 = require("./adapters/claude-cli.adapter.js");
12
+ Object.defineProperty(exports, "ClaudeCliAdapter", { enumerable: true, get: function () { return claude_cli_adapter_js_1.ClaudeCliAdapter; } });
13
+ var gemini_cli_adapter_js_1 = require("./adapters/gemini-cli.adapter.js");
14
+ Object.defineProperty(exports, "GeminiCliAdapter", { enumerable: true, get: function () { return gemini_cli_adapter_js_1.GeminiCliAdapter; } });
15
+ var codex_cli_adapter_js_1 = require("./adapters/codex-cli.adapter.js");
16
+ Object.defineProperty(exports, "CodexCliAdapter", { enumerable: true, get: function () { return codex_cli_adapter_js_1.CodexCliAdapter; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAeA,qEAA+D;AAAtD,6HAAA,kBAAkB,OAAA;AAC3B,qEAA+D;AAAtD,6HAAA,kBAAkB,OAAA;AAC3B,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AAEzB,WAAW;AACX,0EAAoE;AAA3D,yHAAA,gBAAgB,OAAA;AACzB,0EAAoE;AAA3D,yHAAA,gBAAgB,OAAA;AACzB,wEAAkE;AAAzD,uHAAA,eAAe,OAAA"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * AI CLI integration type definitions.
3
+ *
4
+ * Defines interfaces for CLI tool adapters, execution options/results,
5
+ * and workspace management.
6
+ */
7
+ /** Supported CLI tool identifiers */
8
+ export type CliToolName = 'claude' | 'gemini' | 'codex' | 'antigravity' | 'cli-proxy-api';
9
+ /** High-level tool category: spawns a local process vs calls an HTTP API */
10
+ export type ToolType = 'cli' | 'api';
11
+ /** How the adapter executes: spawn a child process or call an HTTP API */
12
+ export type AdapterExecutionType = 'spawn' | 'http';
13
+ /** Information about an installed CLI tool */
14
+ export interface CliToolInfo {
15
+ name: CliToolName;
16
+ displayName: string;
17
+ version: string;
18
+ executablePath: string;
19
+ isAvailable: boolean;
20
+ /** cli = spawns a local process; api = calls an HTTP API. Set by CliRegistryService. */
21
+ toolType?: ToolType;
22
+ /** Available models for this tool */
23
+ models?: string[];
24
+ /** Default model identifier */
25
+ defaultModel?: string;
26
+ }
27
+ /** File passed as input to a CLI execution */
28
+ export interface FileInput {
29
+ /** Relative path within the workspace */
30
+ path: string;
31
+ /** File content (text) or absolute path to existing file */
32
+ content?: string;
33
+ sourcePath?: string;
34
+ }
35
+ /** File produced by a CLI execution */
36
+ export interface FileOutput {
37
+ /** Relative path within the workspace */
38
+ path: string;
39
+ /** Size in bytes */
40
+ size: number;
41
+ }
42
+ /** Options for executing an AI CLI tool */
43
+ export interface CliExecuteOptions {
44
+ /** Which CLI tool to use */
45
+ tool: CliToolName;
46
+ /** The prompt to send to the CLI */
47
+ prompt: string;
48
+ /** System prompt (used by HTTP/API adapters that support separate system message role) */
49
+ systemPrompt?: string;
50
+ /** Model to use (tool-specific, e.g. 'sonnet', 'gemini-2.5-flash') */
51
+ model?: string;
52
+ /** Working directory for the CLI process (default: temp workspace) */
53
+ workingDir?: string;
54
+ /** Files to place in the workspace before execution */
55
+ files?: FileInput[];
56
+ /** Timeout in milliseconds (default: 300_000, max: 600_000) */
57
+ timeoutMs?: number;
58
+ /** Extra CLI arguments */
59
+ args?: string[];
60
+ /** Extra environment variables for the CLI process */
61
+ env?: Record<string, string>;
62
+ /** Request JSON output format from the CLI */
63
+ jsonOutput?: boolean;
64
+ }
65
+ /** Result of a CLI execution */
66
+ export interface CliExecuteResult {
67
+ success: boolean;
68
+ /** CLI stdout content */
69
+ output: string;
70
+ /** CLI stderr content (if any) */
71
+ error?: string;
72
+ /** Process exit code */
73
+ exitCode: number;
74
+ /** Execution duration in milliseconds */
75
+ durationMs: number;
76
+ /** Files generated or modified by the CLI */
77
+ files?: FileOutput[];
78
+ /** The tool that was executed */
79
+ tool: CliToolName;
80
+ }
81
+ /**
82
+ * Adapter for a specific CLI tool.
83
+ * Each CLI (claude, gemini, codex) implements this interface
84
+ * to handle tool-specific argument construction and output parsing.
85
+ */
86
+ export interface ICliAdapter {
87
+ /** Tool identifier */
88
+ readonly toolName: CliToolName;
89
+ /** Human-readable display name */
90
+ readonly displayName: string;
91
+ /** How this adapter executes: spawn a child process or call HTTP API */
92
+ readonly executionType: AdapterExecutionType;
93
+ /** Build CLI command-line arguments from execution options */
94
+ buildArgs(options: CliExecuteOptions): string[];
95
+ /**
96
+ * Build environment variables for the CLI process.
97
+ * Returns only tool-specific env vars (merged with system env at execution time).
98
+ */
99
+ buildEnv(options: CliExecuteOptions): Record<string, string>;
100
+ /** Parse raw CLI output into structured result */
101
+ parseOutput(stdout: string, stderr: string, exitCode: number, durationMs: number): CliExecuteResult;
102
+ /** Detect if this CLI tool is installed and get its info */
103
+ detectInstallation(): Promise<CliToolInfo | null>;
104
+ /** Execute via HTTP (only for http-type adapters) */
105
+ executeHttp?(options: CliExecuteOptions): Promise<CliExecuteResult>;
106
+ /** Execute via HTTP with streaming chunks (only for http-type adapters) */
107
+ executeHttpStream?(options: CliExecuteOptions, onChunk: (chunk: string) => void): Promise<CliExecuteResult>;
108
+ /** List available models for this tool */
109
+ listModels?(): Promise<string[]>;
110
+ /** Default model identifier */
111
+ getDefaultModel?(): string;
112
+ }
113
+ export type WorkspaceType = 'local' | 'github';
114
+ /** Workspace metadata stored in .workspace.json */
115
+ export interface WorkspaceMetadata {
116
+ id: string;
117
+ type: WorkspaceType;
118
+ name: string;
119
+ description?: string;
120
+ createdAt: string;
121
+ /** Original local directory path (local type) */
122
+ localPath?: string;
123
+ /** GitHub repository URL (github type) */
124
+ repoUrl?: string;
125
+ /** Git branch name (github type) */
126
+ branch?: string;
127
+ }
128
+ /** Workspace information returned by WorkspaceService */
129
+ export interface Workspace {
130
+ id: string;
131
+ type: WorkspaceType;
132
+ name: string;
133
+ description?: string;
134
+ /** Effective working directory path */
135
+ path: string;
136
+ createdAt: Date;
137
+ localPath?: string;
138
+ repoUrl?: string;
139
+ branch?: string;
140
+ }
141
+ /** Git info detected from a local directory */
142
+ export interface DetectedGitInfo {
143
+ isGitRepo: boolean;
144
+ remoteUrl?: string;
145
+ branch?: string;
146
+ }
147
+ /** Directory entry for browsing */
148
+ export interface DirEntry {
149
+ name: string;
150
+ path: string;
151
+ isDirectory: boolean;
152
+ }
153
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * AI CLI integration type definitions.
4
+ *
5
+ * Defines interfaces for CLI tool adapters, execution options/results,
6
+ * and workspace management.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cli/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,42 @@
1
+ import type { Workspace, DetectedGitInfo, DirEntry } from './types.js';
2
+ /**
3
+ * Manages workspaces for AI CLI executions.
4
+ *
5
+ * Two workspace types:
6
+ * - **local**: References an existing local directory (no file copying)
7
+ * - **github**: Clones a GitHub repo + branch to a managed directory
8
+ */
9
+ export declare class WorkspaceService {
10
+ private readonly logger;
11
+ private basePath;
12
+ /** Initialize with base data directory */
13
+ initialize(dataDir: string): void;
14
+ /** Create a workspace pointing to an existing local directory */
15
+ createLocalWorkspace(name: string, localPath: string, options?: {
16
+ description?: string;
17
+ repoUrl?: string;
18
+ branch?: string;
19
+ }): Promise<Workspace>;
20
+ /** Create a workspace by cloning a GitHub repository */
21
+ createGithubWorkspace(name: string, repoUrl: string, branch: string, description?: string): Promise<Workspace>;
22
+ /** Pull latest changes for a github workspace */
23
+ pullWorkspace(id: string): Promise<void>;
24
+ /** Get workspace by ID */
25
+ getWorkspace(id: string): Promise<Workspace | null>;
26
+ /** List all workspaces */
27
+ listWorkspaces(): Promise<Workspace[]>;
28
+ /** Delete a workspace */
29
+ deleteWorkspace(id: string): Promise<void>;
30
+ /** Detect git info (remote URL + branch) for a given directory */
31
+ detectGitInfo(dirPath: string): Promise<DetectedGitInfo>;
32
+ /** Browse directory contents — returns subdirectories at the given path */
33
+ browseDir(dirPath: string): Promise<DirEntry[]>;
34
+ private resolveMetaPath;
35
+ private resolveClonePath;
36
+ private readWorkspace;
37
+ private metadataToWorkspace;
38
+ private ensureBaseDir;
39
+ private slugify;
40
+ private gitExec;
41
+ }
42
+ //# sourceMappingURL=workspace.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.service.d.ts","sourceRoot":"","sources":["../../src/cli/workspace.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAqB,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI1F;;;;;;GAMG;AACH,qBACa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAM;IAEtB,0CAA0C;IAC1C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,iEAAiE;IAC3D,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACpE,OAAO,CAAC,SAAS,CAAC;IA0BrB,wDAAwD;IAClD,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,CAAC;IA2BrB,iDAAiD;IAC3C,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C,0BAA0B;IACpB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IASzD,0BAA0B;IACpB,cAAc,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAuB5C,yBAAyB;IACnB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD,kEAAkE;IAC5D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2B9D,2EAA2E;IACrE,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAyBrD,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,gBAAgB;YAIV,aAAa;IAW3B,OAAO,CAAC,mBAAmB;YAkBb,aAAa;IAI3B,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,OAAO;CAWhB"}