@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 @@
1
+ {"version":3,"file":"antigravity.adapter.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/antigravity.adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAcrB;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAC3C,QAAQ,CAAC,WAAW,uBAAuB;IAC3C,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAU;IAEtD,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,MAAM,CAAmB;IAEjC,OAAO,KAAK,OAAO,GAElB;IAID,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAIhD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI7D,WAAW,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,gBAAgB;IAYb,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAmBjD,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiElE,iBAAiB,CACrB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,gBAAgB,CAAC;YA4Cd,aAAa;IAyCrB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrC,eAAe,IAAI,MAAM;YAMX,UAAU;YAYV,WAAW;YAYX,WAAW;CAkB1B"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AntigravityAdapter = void 0;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_os_1 = require("node:os");
6
+ const node_path_1 = require("node:path");
7
+ const CONFIG_PATH = (0, node_path_1.join)((0, node_os_1.homedir)(), '.antigravity_tools', 'gui_config.json');
8
+ const DEFAULT_PORT = 8045;
9
+ const DEFAULT_API_KEY = 'sk-antigravity';
10
+ const DEFAULT_MODEL = 'gemini-2.5-flash';
11
+ /**
12
+ * Adapter for Antigravity Tools (local OpenAI-compatible HTTP proxy).
13
+ *
14
+ * Unlike CLI adapters, this adapter communicates via HTTP:
15
+ * - POST /v1/chat/completions — execute prompt
16
+ * - GET /v1/models — list available models
17
+ *
18
+ * Config read from ~/.antigravity_tools/gui_config.json
19
+ */
20
+ class AntigravityAdapter {
21
+ toolName = 'antigravity';
22
+ displayName = 'Antigravity Tools';
23
+ executionType = 'http';
24
+ port = DEFAULT_PORT;
25
+ apiKey = DEFAULT_API_KEY;
26
+ get baseUrl() {
27
+ return `http://127.0.0.1:${this.port}`;
28
+ }
29
+ // ─── CLI interface stubs (not used for HTTP adapters) ──────
30
+ buildArgs(_options) {
31
+ return [];
32
+ }
33
+ buildEnv(_options) {
34
+ return {};
35
+ }
36
+ parseOutput(stdout, _stderr, exitCode, durationMs) {
37
+ return {
38
+ success: exitCode === 0,
39
+ output: stdout,
40
+ exitCode,
41
+ durationMs,
42
+ tool: this.toolName,
43
+ };
44
+ }
45
+ // ─── Detection ─────────────────────────────────────────────
46
+ async detectInstallation() {
47
+ await this.loadConfig();
48
+ const isAvailable = await this.checkHealth();
49
+ const models = isAvailable ? await this.fetchModels() : [];
50
+ return {
51
+ name: this.toolName,
52
+ displayName: this.displayName,
53
+ version: '',
54
+ executablePath: this.baseUrl,
55
+ isAvailable,
56
+ models,
57
+ defaultModel: DEFAULT_MODEL,
58
+ };
59
+ }
60
+ // ─── HTTP execution ────────────────────────────────────────
61
+ async executeHttp(options) {
62
+ const model = options.model || DEFAULT_MODEL;
63
+ const startTime = Date.now();
64
+ const timeoutMs = options.timeoutMs ?? 300_000;
65
+ try {
66
+ const controller = new AbortController();
67
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
68
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
69
+ method: 'POST',
70
+ headers: {
71
+ 'Content-Type': 'application/json',
72
+ Authorization: `Bearer ${this.apiKey}`,
73
+ },
74
+ body: JSON.stringify({
75
+ model,
76
+ messages: [{ role: 'user', content: options.prompt }],
77
+ }),
78
+ signal: controller.signal,
79
+ });
80
+ clearTimeout(timer);
81
+ const durationMs = Date.now() - startTime;
82
+ if (!res.ok) {
83
+ const text = await res.text();
84
+ return {
85
+ success: false,
86
+ output: '',
87
+ error: `HTTP ${res.status}: ${text}`,
88
+ exitCode: 1,
89
+ durationMs,
90
+ tool: this.toolName,
91
+ };
92
+ }
93
+ const data = await res.json();
94
+ const content = data.choices?.[0]?.message?.content ?? '';
95
+ return {
96
+ success: true,
97
+ output: content,
98
+ exitCode: 0,
99
+ durationMs,
100
+ tool: this.toolName,
101
+ };
102
+ }
103
+ catch (err) {
104
+ const durationMs = Date.now() - startTime;
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ return {
107
+ success: false,
108
+ output: '',
109
+ error: message.includes('abort')
110
+ ? `Execution timed out after ${timeoutMs}ms`
111
+ : `Request failed: ${message}`,
112
+ exitCode: 1,
113
+ durationMs,
114
+ tool: this.toolName,
115
+ };
116
+ }
117
+ }
118
+ async executeHttpStream(options, onChunk) {
119
+ await this.loadConfig();
120
+ const model = options.model || DEFAULT_MODEL;
121
+ const startTime = Date.now();
122
+ const timeoutMs = options.timeoutMs ?? 300_000;
123
+ const controller = new AbortController();
124
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
125
+ try {
126
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
127
+ method: 'POST',
128
+ headers: {
129
+ 'Content-Type': 'application/json',
130
+ Authorization: `Bearer ${this.apiKey}`,
131
+ },
132
+ body: JSON.stringify({
133
+ model,
134
+ stream: true,
135
+ messages: [{ role: 'user', content: options.prompt }],
136
+ }),
137
+ signal: controller.signal,
138
+ });
139
+ clearTimeout(timer);
140
+ if (!res.ok) {
141
+ const text = await res.text();
142
+ return { success: false, output: '', error: `HTTP ${res.status}: ${text}`, exitCode: 1, durationMs: Date.now() - startTime, tool: this.toolName };
143
+ }
144
+ return await this.consumeStream(res, onChunk, startTime);
145
+ }
146
+ catch (err) {
147
+ clearTimeout(timer);
148
+ const durationMs = Date.now() - startTime;
149
+ const message = err instanceof Error ? err.message : String(err);
150
+ return {
151
+ success: false, output: '',
152
+ error: message.includes('abort') ? `Execution timed out after ${timeoutMs}ms` : `Request failed: ${message}`,
153
+ exitCode: 1, durationMs, tool: this.toolName,
154
+ };
155
+ }
156
+ }
157
+ async consumeStream(res, onChunk, startTime) {
158
+ const reader = res.body?.getReader();
159
+ if (!reader)
160
+ return { success: false, output: '', error: 'No response body', exitCode: 1, durationMs: Date.now() - startTime, tool: this.toolName };
161
+ const decoder = new TextDecoder();
162
+ let fullContent = '';
163
+ let buffer = '';
164
+ try {
165
+ while (true) {
166
+ const { done, value } = await reader.read();
167
+ if (done)
168
+ break;
169
+ buffer += decoder.decode(value, { stream: true });
170
+ const lines = buffer.split('\n');
171
+ buffer = lines.pop() ?? '';
172
+ for (const line of lines) {
173
+ const trimmed = line.trim();
174
+ if (!trimmed.startsWith('data: '))
175
+ continue;
176
+ const data = trimmed.slice(6);
177
+ if (data === '[DONE]')
178
+ continue;
179
+ try {
180
+ const parsed = JSON.parse(data);
181
+ const chunk = parsed.choices?.[0]?.delta?.content;
182
+ if (chunk) {
183
+ fullContent += chunk;
184
+ onChunk(chunk);
185
+ }
186
+ }
187
+ catch { /* ignore */ }
188
+ }
189
+ }
190
+ }
191
+ finally {
192
+ reader.releaseLock();
193
+ }
194
+ return { success: true, output: fullContent, exitCode: 0, durationMs: Date.now() - startTime, tool: this.toolName };
195
+ }
196
+ // ─── Model management ──────────────────────────────────────
197
+ async listModels() {
198
+ await this.loadConfig();
199
+ return this.fetchModels();
200
+ }
201
+ getDefaultModel() {
202
+ return DEFAULT_MODEL;
203
+ }
204
+ // ─── Private helpers ───────────────────────────────────────
205
+ async loadConfig() {
206
+ try {
207
+ const raw = await (0, promises_1.readFile)(CONFIG_PATH, 'utf-8');
208
+ const config = JSON.parse(raw);
209
+ this.port = config.proxy?.port ?? DEFAULT_PORT;
210
+ this.apiKey = config.proxy?.api_key ?? DEFAULT_API_KEY;
211
+ }
212
+ catch {
213
+ this.port = DEFAULT_PORT;
214
+ this.apiKey = DEFAULT_API_KEY;
215
+ }
216
+ }
217
+ async checkHealth() {
218
+ try {
219
+ const res = await fetch(`${this.baseUrl}/v1/models`, {
220
+ headers: { Authorization: `Bearer ${this.apiKey}` },
221
+ signal: AbortSignal.timeout(5000),
222
+ });
223
+ return res.ok;
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ async fetchModels() {
230
+ try {
231
+ const res = await fetch(`${this.baseUrl}/v1/models`, {
232
+ headers: { Authorization: `Bearer ${this.apiKey}` },
233
+ signal: AbortSignal.timeout(5000),
234
+ });
235
+ if (!res.ok)
236
+ return [];
237
+ const data = await res.json();
238
+ return (data.data ?? [])
239
+ .map((m) => m.id)
240
+ .filter((id) => typeof id === 'string');
241
+ }
242
+ catch {
243
+ return [];
244
+ }
245
+ }
246
+ }
247
+ exports.AntigravityAdapter = AntigravityAdapter;
248
+ //# sourceMappingURL=antigravity.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.adapter.js","sourceRoot":"","sources":["../../../src/cli/adapters/antigravity.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ICliAdapter, CliToolInfo, CliExecuteOptions, CliExecuteResult, AdapterExecutionType } from '../types.js';
2
+ /**
3
+ * Adapter for Claude CLI (Anthropic).
4
+ *
5
+ * Claude CLI supports:
6
+ * - `-p` / `--print`: Single-shot print mode (non-interactive)
7
+ * - `--output-format json`: JSON structured output
8
+ * - `--max-turns N`: Limit agentic turns
9
+ * - stdin: Accepts prompt via stdin
10
+ */
11
+ export declare class ClaudeCliAdapter implements ICliAdapter {
12
+ readonly toolName: "claude";
13
+ readonly displayName = "Claude CLI";
14
+ readonly executionType: AdapterExecutionType;
15
+ private static readonly MODELS;
16
+ buildArgs(options: CliExecuteOptions): string[];
17
+ buildEnv(_options: CliExecuteOptions): Record<string, string>;
18
+ parseOutput(stdout: string, stderr: string, exitCode: number, durationMs: number): CliExecuteResult;
19
+ detectInstallation(): Promise<CliToolInfo | null>;
20
+ listModels(): Promise<string[]>;
21
+ getDefaultModel(): string;
22
+ }
23
+ //# sourceMappingURL=claude-cli.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-cli.adapter.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/claude-cli.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAW;IAEvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAI5B;IAEF,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAyB/C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAK7D,WAAW,CACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,gBAAgB;IAcb,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiBjD,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeCliAdapter = void 0;
4
+ const detect_cli_js_1 = require("./detect-cli.js");
5
+ /**
6
+ * Adapter for Claude CLI (Anthropic).
7
+ *
8
+ * Claude CLI supports:
9
+ * - `-p` / `--print`: Single-shot print mode (non-interactive)
10
+ * - `--output-format json`: JSON structured output
11
+ * - `--max-turns N`: Limit agentic turns
12
+ * - stdin: Accepts prompt via stdin
13
+ */
14
+ class ClaudeCliAdapter {
15
+ toolName = 'claude';
16
+ displayName = 'Claude CLI';
17
+ executionType = 'spawn';
18
+ static MODELS = [
19
+ 'sonnet',
20
+ 'opus',
21
+ 'haiku',
22
+ ];
23
+ buildArgs(options) {
24
+ const args = ['-p'];
25
+ // Claude CLI uses cwd (set via spawn options in CliExecutorService) for workspace context.
26
+ // The -p flag runs in single-shot mode within the cwd directory.
27
+ if (options.model) {
28
+ args.push('--model', options.model);
29
+ }
30
+ if (options.jsonOutput) {
31
+ args.push('--output-format', 'json');
32
+ }
33
+ // Prompt is passed via stdin in CliExecutorService,
34
+ // but Claude CLI also accepts it as the last positional argument
35
+ args.push(options.prompt);
36
+ if (options.args) {
37
+ args.push(...options.args);
38
+ }
39
+ return args;
40
+ }
41
+ buildEnv(_options) {
42
+ // Claude CLI uses ANTHROPIC_API_KEY from system env
43
+ return {};
44
+ }
45
+ parseOutput(stdout, stderr, exitCode, durationMs) {
46
+ const isSuccess = exitCode === 0;
47
+ // CLI tools may output informational messages to stderr even on success
48
+ // Only treat stderr as error when exitCode !== 0
49
+ return {
50
+ success: isSuccess,
51
+ output: stdout.trim(),
52
+ error: isSuccess ? undefined : (stderr.trim() || undefined),
53
+ exitCode,
54
+ durationMs,
55
+ tool: this.toolName,
56
+ };
57
+ }
58
+ async detectInstallation() {
59
+ const executablePath = await (0, detect_cli_js_1.findExecutable)('claude');
60
+ if (!executablePath)
61
+ return null;
62
+ const version = await (0, detect_cli_js_1.getCliVersion)(executablePath);
63
+ return {
64
+ name: this.toolName,
65
+ displayName: this.displayName,
66
+ version,
67
+ executablePath,
68
+ isAvailable: true,
69
+ models: ClaudeCliAdapter.MODELS,
70
+ defaultModel: this.getDefaultModel(),
71
+ };
72
+ }
73
+ async listModels() {
74
+ return ClaudeCliAdapter.MODELS;
75
+ }
76
+ getDefaultModel() {
77
+ return 'sonnet';
78
+ }
79
+ }
80
+ exports.ClaudeCliAdapter = ClaudeCliAdapter;
81
+ //# sourceMappingURL=claude-cli.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-cli.adapter.js","sourceRoot":"","sources":["../../../src/cli/adapters/claude-cli.adapter.ts"],"names":[],"mappings":";;;AAOA,mDAAgE;AAEhE;;;;;;;;GAQG;AACH,MAAa,gBAAgB;IAClB,QAAQ,GAAG,QAAiB,CAAC;IAC7B,WAAW,GAAG,YAAY,CAAC;IAC3B,aAAa,GAAyB,OAAO,CAAC;IAE/C,MAAM,CAAU,MAAM,GAAG;QAC/B,QAAQ;QACR,MAAM;QACN,OAAO;KACR,CAAC;IAEF,SAAS,CAAC,OAA0B;QAClC,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,CAAC;QAE9B,2FAA2F;QAC3F,iEAAiE;QAEjE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,oDAAoD;QACpD,iEAAiE;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,QAA2B;QAClC,oDAAoD;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,CACT,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,UAAkB;QAElB,MAAM,SAAS,GAAG,QAAQ,KAAK,CAAC,CAAC;QACjC,wEAAwE;QACxE,iDAAiD;QACjD,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;YAC3D,QAAQ;YACR,UAAU;YACV,IAAI,EAAE,IAAI,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,cAAc,GAAG,MAAM,IAAA,8BAAc,EAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QAEjC,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAa,EAAC,cAAc,CAAC,CAAC;QAEpD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO;YACP,cAAc;YACd,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,gBAAgB,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAnFH,4CAoFC"}
@@ -0,0 +1,32 @@
1
+ import type { ICliAdapter, CliToolInfo, CliExecuteOptions, CliExecuteResult, AdapterExecutionType } from '../types.js';
2
+ /**
3
+ * Adapter for CLIProxyAPI — a local OpenAI-compatible HTTP proxy.
4
+ *
5
+ * Connects to the local proxy server at 127.0.0.1:8317 which exposes
6
+ * an OpenAI-compatible /v1/chat/completions endpoint.
7
+ *
8
+ * Usage example:
9
+ * curl http://127.0.0.1:8317/v1/chat/completions \
10
+ * -H "Authorization: Bearer metagpt-key" \
11
+ * -H "Content-Type: application/json" \
12
+ * -d '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"你好"}]}'
13
+ */
14
+ export declare class CliProxyApiAdapter implements ICliAdapter {
15
+ readonly toolName: "cli-proxy-api";
16
+ readonly displayName = "CLI Proxy API";
17
+ readonly executionType: AdapterExecutionType;
18
+ private get baseUrl();
19
+ private get apiKey();
20
+ buildArgs(_options: CliExecuteOptions): string[];
21
+ buildEnv(_options: CliExecuteOptions): Record<string, string>;
22
+ parseOutput(stdout: string, _stderr: string, exitCode: number, durationMs: number): CliExecuteResult;
23
+ detectInstallation(): Promise<CliToolInfo | null>;
24
+ executeHttp(options: CliExecuteOptions): Promise<CliExecuteResult>;
25
+ executeHttpStream(options: CliExecuteOptions, onChunk: (chunk: string) => void): Promise<CliExecuteResult>;
26
+ private consumeStream;
27
+ listModels(): Promise<string[]>;
28
+ getDefaultModel(): string;
29
+ private checkHealth;
30
+ private fetchModels;
31
+ }
32
+ //# sourceMappingURL=cli-proxy-api.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-proxy-api.adapter.d.ts","sourceRoot":"","sources":["../../../src/cli/adapters/cli-proxy-api.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAMrB;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;IAC7C,QAAQ,CAAC,WAAW,mBAAmB;IACvC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAU;IAEtD,OAAO,KAAK,OAAO,GAElB;IAED,OAAO,KAAK,MAAM,GAEjB;IAID,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAIhD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI7D,WAAW,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,gBAAgB;IAYb,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiBjD,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqElE,iBAAiB,CACrB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,gBAAgB,CAAC;YA8Cd,aAAa;IAyCrB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrC,eAAe,IAAI,MAAM;YAMX,WAAW;YAYX,WAAW;CAmB1B"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CliProxyApiAdapter = void 0;
4
+ const DEFAULT_BASE_URL = 'http://127.0.0.1:8317';
5
+ const DEFAULT_API_KEY = 'metagpt-key';
6
+ const DEFAULT_MODEL = 'claude-sonnet-4-6';
7
+ /**
8
+ * Adapter for CLIProxyAPI — a local OpenAI-compatible HTTP proxy.
9
+ *
10
+ * Connects to the local proxy server at 127.0.0.1:8317 which exposes
11
+ * an OpenAI-compatible /v1/chat/completions endpoint.
12
+ *
13
+ * Usage example:
14
+ * curl http://127.0.0.1:8317/v1/chat/completions \
15
+ * -H "Authorization: Bearer metagpt-key" \
16
+ * -H "Content-Type: application/json" \
17
+ * -d '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"你好"}]}'
18
+ */
19
+ class CliProxyApiAdapter {
20
+ toolName = 'cli-proxy-api';
21
+ displayName = 'CLI Proxy API';
22
+ executionType = 'http';
23
+ get baseUrl() {
24
+ return process.env.CLI_PROXY_API_URL ?? DEFAULT_BASE_URL;
25
+ }
26
+ get apiKey() {
27
+ return process.env.CLI_PROXY_API_KEY ?? DEFAULT_API_KEY;
28
+ }
29
+ // ─── CLI interface stubs (not used for HTTP adapters) ──────
30
+ buildArgs(_options) {
31
+ return [];
32
+ }
33
+ buildEnv(_options) {
34
+ return {};
35
+ }
36
+ parseOutput(stdout, _stderr, exitCode, durationMs) {
37
+ return {
38
+ success: exitCode === 0,
39
+ output: stdout,
40
+ exitCode,
41
+ durationMs,
42
+ tool: this.toolName,
43
+ };
44
+ }
45
+ // ─── Detection ─────────────────────────────────────────────
46
+ async detectInstallation() {
47
+ const isAvailable = await this.checkHealth();
48
+ const models = isAvailable ? await this.fetchModels() : [DEFAULT_MODEL];
49
+ return {
50
+ name: this.toolName,
51
+ displayName: this.displayName,
52
+ version: '',
53
+ executablePath: this.baseUrl,
54
+ isAvailable,
55
+ models,
56
+ defaultModel: DEFAULT_MODEL,
57
+ };
58
+ }
59
+ // ─── HTTP execution ────────────────────────────────────────
60
+ async executeHttp(options) {
61
+ const model = options.model || DEFAULT_MODEL;
62
+ const startTime = Date.now();
63
+ const timeoutMs = options.timeoutMs ?? 300_000;
64
+ try {
65
+ const controller = new AbortController();
66
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
67
+ const messages = options.systemPrompt
68
+ ? [
69
+ { role: 'system', content: options.systemPrompt },
70
+ { role: 'user', content: options.prompt },
71
+ ]
72
+ : [{ role: 'user', content: options.prompt }];
73
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
74
+ method: 'POST',
75
+ headers: {
76
+ 'Content-Type': 'application/json',
77
+ Authorization: `Bearer ${this.apiKey}`,
78
+ },
79
+ body: JSON.stringify({ model, messages }),
80
+ signal: controller.signal,
81
+ });
82
+ clearTimeout(timer);
83
+ const durationMs = Date.now() - startTime;
84
+ if (!res.ok) {
85
+ const text = await res.text();
86
+ return {
87
+ success: false,
88
+ output: '',
89
+ error: `HTTP ${res.status}: ${text}`,
90
+ exitCode: 1,
91
+ durationMs,
92
+ tool: this.toolName,
93
+ };
94
+ }
95
+ const data = await res.json();
96
+ const content = data.choices?.[0]?.message?.content ?? '';
97
+ return {
98
+ success: true,
99
+ output: content,
100
+ exitCode: 0,
101
+ durationMs,
102
+ tool: this.toolName,
103
+ };
104
+ }
105
+ catch (err) {
106
+ const durationMs = Date.now() - startTime;
107
+ const message = err instanceof Error ? err.message : String(err);
108
+ return {
109
+ success: false,
110
+ output: '',
111
+ error: message.includes('abort')
112
+ ? `Execution timed out after ${timeoutMs}ms`
113
+ : `Request failed: ${message}`,
114
+ exitCode: 1,
115
+ durationMs,
116
+ tool: this.toolName,
117
+ };
118
+ }
119
+ }
120
+ async executeHttpStream(options, onChunk) {
121
+ const model = options.model || DEFAULT_MODEL;
122
+ const startTime = Date.now();
123
+ const timeoutMs = options.timeoutMs ?? 300_000;
124
+ const controller = new AbortController();
125
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
126
+ try {
127
+ const streamMessages = options.systemPrompt
128
+ ? [
129
+ { role: 'system', content: options.systemPrompt },
130
+ { role: 'user', content: options.prompt },
131
+ ]
132
+ : [{ role: 'user', content: options.prompt }];
133
+ const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
134
+ method: 'POST',
135
+ headers: {
136
+ 'Content-Type': 'application/json',
137
+ Authorization: `Bearer ${this.apiKey}`,
138
+ },
139
+ body: JSON.stringify({ model, stream: true, messages: streamMessages }),
140
+ signal: controller.signal,
141
+ });
142
+ clearTimeout(timer);
143
+ if (!res.ok) {
144
+ const text = await res.text();
145
+ return { success: false, output: '', error: `HTTP ${res.status}: ${text}`, exitCode: 1, durationMs: Date.now() - startTime, tool: this.toolName };
146
+ }
147
+ return await this.consumeStream(res, onChunk, startTime);
148
+ }
149
+ catch (err) {
150
+ clearTimeout(timer);
151
+ const durationMs = Date.now() - startTime;
152
+ const message = err instanceof Error ? err.message : String(err);
153
+ return {
154
+ success: false, output: '',
155
+ error: message.includes('abort') ? `Execution timed out after ${timeoutMs}ms` : `Request failed: ${message}`,
156
+ exitCode: 1, durationMs, tool: this.toolName,
157
+ };
158
+ }
159
+ }
160
+ async consumeStream(res, onChunk, startTime) {
161
+ const reader = res.body?.getReader();
162
+ if (!reader)
163
+ return { success: false, output: '', error: 'No response body', exitCode: 1, durationMs: Date.now() - startTime, tool: this.toolName };
164
+ const decoder = new TextDecoder();
165
+ let fullContent = '';
166
+ let buffer = '';
167
+ try {
168
+ while (true) {
169
+ const { done, value } = await reader.read();
170
+ if (done)
171
+ break;
172
+ buffer += decoder.decode(value, { stream: true });
173
+ const lines = buffer.split('\n');
174
+ buffer = lines.pop() ?? '';
175
+ for (const line of lines) {
176
+ const trimmed = line.trim();
177
+ if (!trimmed.startsWith('data: '))
178
+ continue;
179
+ const data = trimmed.slice(6);
180
+ if (data === '[DONE]')
181
+ continue;
182
+ try {
183
+ const parsed = JSON.parse(data);
184
+ const chunk = parsed.choices?.[0]?.delta?.content;
185
+ if (chunk) {
186
+ fullContent += chunk;
187
+ onChunk(chunk);
188
+ }
189
+ }
190
+ catch { /* ignore */ }
191
+ }
192
+ }
193
+ }
194
+ finally {
195
+ reader.releaseLock();
196
+ }
197
+ return { success: true, output: fullContent, exitCode: 0, durationMs: Date.now() - startTime, tool: this.toolName };
198
+ }
199
+ // ─── Model management ──────────────────────────────────────
200
+ async listModels() {
201
+ return this.fetchModels();
202
+ }
203
+ getDefaultModel() {
204
+ return DEFAULT_MODEL;
205
+ }
206
+ // ─── Private helpers ───────────────────────────────────────
207
+ async checkHealth() {
208
+ try {
209
+ const res = await fetch(`${this.baseUrl}/v1/models`, {
210
+ headers: { Authorization: `Bearer ${this.apiKey}` },
211
+ signal: AbortSignal.timeout(5000),
212
+ });
213
+ return res.ok;
214
+ }
215
+ catch {
216
+ return false;
217
+ }
218
+ }
219
+ async fetchModels() {
220
+ try {
221
+ const res = await fetch(`${this.baseUrl}/v1/models`, {
222
+ headers: { Authorization: `Bearer ${this.apiKey}` },
223
+ signal: AbortSignal.timeout(5000),
224
+ });
225
+ if (!res.ok)
226
+ return [DEFAULT_MODEL];
227
+ const data = await res.json();
228
+ const ids = (data.data ?? [])
229
+ .map((m) => m.id)
230
+ .filter((id) => typeof id === 'string');
231
+ return ids.length > 0 ? ids : [DEFAULT_MODEL];
232
+ }
233
+ catch {
234
+ return [DEFAULT_MODEL];
235
+ }
236
+ }
237
+ }
238
+ exports.CliProxyApiAdapter = CliProxyApiAdapter;
239
+ //# sourceMappingURL=cli-proxy-api.adapter.js.map