@intrect/openswarm 0.5.0 → 0.8.1

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 (226) hide show
  1. package/LICENSE +21 -674
  2. package/README.md +97 -35
  3. package/config.example.yaml +8 -2
  4. package/dist/adapters/agenticLoop.d.ts +15 -1
  5. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  6. package/dist/adapters/agenticLoop.js +62 -4
  7. package/dist/adapters/agenticLoop.js.map +1 -1
  8. package/dist/adapters/chatStream.d.ts +55 -0
  9. package/dist/adapters/chatStream.d.ts.map +1 -0
  10. package/dist/adapters/chatStream.js +116 -0
  11. package/dist/adapters/chatStream.js.map +1 -0
  12. package/dist/adapters/codex.d.ts +6 -0
  13. package/dist/adapters/codex.d.ts.map +1 -1
  14. package/dist/adapters/codex.js +27 -1
  15. package/dist/adapters/codex.js.map +1 -1
  16. package/dist/adapters/codexModels.d.ts +20 -0
  17. package/dist/adapters/codexModels.d.ts.map +1 -0
  18. package/dist/adapters/codexModels.js +195 -0
  19. package/dist/adapters/codexModels.js.map +1 -0
  20. package/dist/adapters/codexResponses.d.ts +97 -0
  21. package/dist/adapters/codexResponses.d.ts.map +1 -0
  22. package/dist/adapters/codexResponses.js +302 -0
  23. package/dist/adapters/codexResponses.js.map +1 -0
  24. package/dist/adapters/gpt.d.ts.map +1 -1
  25. package/dist/adapters/gpt.js +17 -131
  26. package/dist/adapters/gpt.js.map +1 -1
  27. package/dist/adapters/index.d.ts +7 -0
  28. package/dist/adapters/index.d.ts.map +1 -1
  29. package/dist/adapters/index.js +11 -0
  30. package/dist/adapters/index.js.map +1 -1
  31. package/dist/adapters/local.d.ts.map +1 -1
  32. package/dist/adapters/local.js +17 -125
  33. package/dist/adapters/local.js.map +1 -1
  34. package/dist/adapters/openrouter.d.ts +5 -24
  35. package/dist/adapters/openrouter.d.ts.map +1 -1
  36. package/dist/adapters/openrouter.js +20 -121
  37. package/dist/adapters/openrouter.js.map +1 -1
  38. package/dist/adapters/resultParsing.d.ts +6 -0
  39. package/dist/adapters/resultParsing.d.ts.map +1 -0
  40. package/dist/adapters/resultParsing.js +139 -0
  41. package/dist/adapters/resultParsing.js.map +1 -0
  42. package/dist/adapters/tools.d.ts +0 -6
  43. package/dist/adapters/tools.d.ts.map +1 -1
  44. package/dist/adapters/tools.js +57 -3
  45. package/dist/adapters/tools.js.map +1 -1
  46. package/dist/adapters/types.d.ts +21 -1
  47. package/dist/adapters/types.d.ts.map +1 -1
  48. package/dist/adapters/webTools.d.ts +9 -0
  49. package/dist/adapters/webTools.d.ts.map +1 -0
  50. package/dist/adapters/webTools.js +195 -0
  51. package/dist/adapters/webTools.js.map +1 -0
  52. package/dist/agents/pairPipeline.d.ts +26 -1
  53. package/dist/agents/pairPipeline.d.ts.map +1 -1
  54. package/dist/agents/pairPipeline.js +82 -14
  55. package/dist/agents/pairPipeline.js.map +1 -1
  56. package/dist/agents/reflection.d.ts +56 -0
  57. package/dist/agents/reflection.d.ts.map +1 -0
  58. package/dist/agents/reflection.js +120 -0
  59. package/dist/agents/reflection.js.map +1 -0
  60. package/dist/agents/worker.d.ts +2 -0
  61. package/dist/agents/worker.d.ts.map +1 -1
  62. package/dist/agents/worker.js +1 -0
  63. package/dist/agents/worker.js.map +1 -1
  64. package/dist/auth/index.d.ts +1 -0
  65. package/dist/auth/index.d.ts.map +1 -1
  66. package/dist/auth/index.js +1 -0
  67. package/dist/auth/index.js.map +1 -1
  68. package/dist/auth/linearPkce.d.ts +22 -0
  69. package/dist/auth/linearPkce.d.ts.map +1 -0
  70. package/dist/auth/linearPkce.js +208 -0
  71. package/dist/auth/linearPkce.js.map +1 -0
  72. package/dist/auth/oauthPkce.d.ts.map +1 -1
  73. package/dist/auth/oauthPkce.js +18 -5
  74. package/dist/auth/oauthPkce.js.map +1 -1
  75. package/dist/auth/oauthStore.d.ts.map +1 -1
  76. package/dist/auth/oauthStore.js +10 -2
  77. package/dist/auth/oauthStore.js.map +1 -1
  78. package/dist/automation/autonomousRunner.d.ts +6 -6
  79. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  80. package/dist/automation/autonomousRunner.js +15 -13
  81. package/dist/automation/autonomousRunner.js.map +1 -1
  82. package/dist/automation/backlogGrooming.d.ts +21 -0
  83. package/dist/automation/backlogGrooming.d.ts.map +1 -0
  84. package/dist/automation/backlogGrooming.js +80 -0
  85. package/dist/automation/backlogGrooming.js.map +1 -0
  86. package/dist/automation/localCI.d.ts +24 -0
  87. package/dist/automation/localCI.d.ts.map +1 -0
  88. package/dist/automation/localCI.js +84 -0
  89. package/dist/automation/localCI.js.map +1 -0
  90. package/dist/automation/runnerExecution.d.ts +33 -7
  91. package/dist/automation/runnerExecution.d.ts.map +1 -1
  92. package/dist/automation/runnerExecution.js +202 -154
  93. package/dist/automation/runnerExecution.js.map +1 -1
  94. package/dist/automation/runnerTypes.d.ts +5 -1
  95. package/dist/automation/runnerTypes.d.ts.map +1 -1
  96. package/dist/automation/taskSource.d.ts +101 -0
  97. package/dist/automation/taskSource.d.ts.map +1 -0
  98. package/dist/automation/taskSource.js +136 -0
  99. package/dist/automation/taskSource.js.map +1 -0
  100. package/dist/automation/workerAuditLog.d.ts +29 -0
  101. package/dist/automation/workerAuditLog.d.ts.map +1 -0
  102. package/dist/automation/workerAuditLog.js +82 -0
  103. package/dist/automation/workerAuditLog.js.map +1 -0
  104. package/dist/cli/authHandler.d.ts +6 -0
  105. package/dist/cli/authHandler.d.ts.map +1 -1
  106. package/dist/cli/authHandler.js +37 -2
  107. package/dist/cli/authHandler.js.map +1 -1
  108. package/dist/cli/daemon.d.ts +5 -0
  109. package/dist/cli/daemon.d.ts.map +1 -1
  110. package/dist/cli/daemon.js +13 -0
  111. package/dist/cli/daemon.js.map +1 -1
  112. package/dist/cli/doctorHandler.d.ts +2 -0
  113. package/dist/cli/doctorHandler.d.ts.map +1 -0
  114. package/dist/cli/doctorHandler.js +114 -0
  115. package/dist/cli/doctorHandler.js.map +1 -0
  116. package/dist/cli/initWizard.d.ts +13 -0
  117. package/dist/cli/initWizard.d.ts.map +1 -0
  118. package/dist/cli/initWizard.js +334 -0
  119. package/dist/cli/initWizard.js.map +1 -0
  120. package/dist/cli.js +110 -37
  121. package/dist/cli.js.map +1 -1
  122. package/dist/core/config.d.ts +50 -2
  123. package/dist/core/config.d.ts.map +1 -1
  124. package/dist/core/config.js +69 -10
  125. package/dist/core/config.js.map +1 -1
  126. package/dist/core/envFile.d.ts +6 -0
  127. package/dist/core/envFile.d.ts.map +1 -1
  128. package/dist/core/envFile.js +39 -1
  129. package/dist/core/envFile.js.map +1 -1
  130. package/dist/core/providerOverride.d.ts +6 -0
  131. package/dist/core/providerOverride.d.ts.map +1 -0
  132. package/dist/core/providerOverride.js +37 -0
  133. package/dist/core/providerOverride.js.map +1 -0
  134. package/dist/core/service.d.ts.map +1 -1
  135. package/dist/core/service.js +41 -18
  136. package/dist/core/service.js.map +1 -1
  137. package/dist/core/types.d.ts +16 -2
  138. package/dist/core/types.d.ts.map +1 -1
  139. package/dist/discord/discordHandlers.d.ts.map +1 -1
  140. package/dist/discord/discordHandlers.js +15 -12
  141. package/dist/discord/discordHandlers.js.map +1 -1
  142. package/dist/index.js +12 -1
  143. package/dist/index.js.map +1 -1
  144. package/dist/issues/sqliteStore.d.ts.map +1 -1
  145. package/dist/issues/sqliteStore.js +7 -2
  146. package/dist/issues/sqliteStore.js.map +1 -1
  147. package/dist/knowledge/scanner.d.ts.map +1 -1
  148. package/dist/knowledge/scanner.js +5 -0
  149. package/dist/knowledge/scanner.js.map +1 -1
  150. package/dist/linear/linear.d.ts +45 -2
  151. package/dist/linear/linear.d.ts.map +1 -1
  152. package/dist/linear/linear.js +154 -3
  153. package/dist/linear/linear.js.map +1 -1
  154. package/dist/locale/prompts/en.d.ts.map +1 -1
  155. package/dist/locale/prompts/en.js +14 -2
  156. package/dist/locale/prompts/en.js.map +1 -1
  157. package/dist/locale/prompts/ko.d.ts.map +1 -1
  158. package/dist/locale/prompts/ko.js +14 -2
  159. package/dist/locale/prompts/ko.js.map +1 -1
  160. package/dist/mcp/mcpClient.d.ts +27 -0
  161. package/dist/mcp/mcpClient.d.ts.map +1 -0
  162. package/dist/mcp/mcpClient.js +145 -0
  163. package/dist/mcp/mcpClient.js.map +1 -0
  164. package/dist/memory/memoryCore.d.ts.map +1 -1
  165. package/dist/memory/memoryCore.js +8 -2
  166. package/dist/memory/memoryCore.js.map +1 -1
  167. package/dist/notify/notifier.d.ts +26 -0
  168. package/dist/notify/notifier.d.ts.map +1 -0
  169. package/dist/notify/notifier.js +131 -0
  170. package/dist/notify/notifier.js.map +1 -0
  171. package/dist/orchestration/conflictDetector.d.ts +5 -2
  172. package/dist/orchestration/conflictDetector.d.ts.map +1 -1
  173. package/dist/orchestration/conflictDetector.js +35 -6
  174. package/dist/orchestration/conflictDetector.js.map +1 -1
  175. package/dist/orchestration/decisionEngine.d.ts +20 -0
  176. package/dist/orchestration/decisionEngine.d.ts.map +1 -1
  177. package/dist/orchestration/decisionEngine.js +45 -0
  178. package/dist/orchestration/decisionEngine.js.map +1 -1
  179. package/dist/support/banner.d.ts +7 -0
  180. package/dist/support/banner.d.ts.map +1 -0
  181. package/dist/support/banner.js +32 -0
  182. package/dist/support/banner.js.map +1 -0
  183. package/dist/support/chat.js +28 -5
  184. package/dist/support/chat.js.map +1 -1
  185. package/dist/support/chatBackend.d.ts +6 -0
  186. package/dist/support/chatBackend.d.ts.map +1 -1
  187. package/dist/support/chatBackend.js +68 -0
  188. package/dist/support/chatBackend.js.map +1 -1
  189. package/dist/support/chatTui.d.ts.map +1 -1
  190. package/dist/support/chatTui.js +202 -9
  191. package/dist/support/chatTui.js.map +1 -1
  192. package/dist/support/colors.d.ts +15 -0
  193. package/dist/support/colors.d.ts.map +1 -0
  194. package/dist/support/colors.js +23 -0
  195. package/dist/support/colors.js.map +1 -0
  196. package/dist/support/planCommand.d.ts +17 -0
  197. package/dist/support/planCommand.d.ts.map +1 -0
  198. package/dist/support/planCommand.js +114 -0
  199. package/dist/support/planCommand.js.map +1 -0
  200. package/dist/support/planner.d.ts +9 -2
  201. package/dist/support/planner.d.ts.map +1 -1
  202. package/dist/support/planner.js +43 -111
  203. package/dist/support/planner.js.map +1 -1
  204. package/dist/support/promptHelper.d.ts +24 -0
  205. package/dist/support/promptHelper.d.ts.map +1 -0
  206. package/dist/support/promptHelper.js +94 -0
  207. package/dist/support/promptHelper.js.map +1 -0
  208. package/dist/support/rateLimiter.d.ts.map +1 -1
  209. package/dist/support/rateLimiter.js +6 -0
  210. package/dist/support/rateLimiter.js.map +1 -1
  211. package/dist/support/repoMetadata.d.ts +7 -0
  212. package/dist/support/repoMetadata.d.ts.map +1 -1
  213. package/dist/support/repoMetadata.js +13 -1
  214. package/dist/support/repoMetadata.js.map +1 -1
  215. package/dist/support/web.d.ts.map +1 -1
  216. package/dist/support/web.js +143 -65
  217. package/dist/support/web.js.map +1 -1
  218. package/dist/support/worktreeManager.d.ts +6 -1
  219. package/dist/support/worktreeManager.d.ts.map +1 -1
  220. package/dist/support/worktreeManager.js +23 -1
  221. package/dist/support/worktreeManager.js.map +1 -1
  222. package/dist/taskState/store.d.ts +1 -0
  223. package/dist/taskState/store.d.ts.map +1 -1
  224. package/dist/taskState/store.js +22 -1
  225. package/dist/taskState/store.js.map +1 -1
  226. package/package.json +4 -2
@@ -0,0 +1,302 @@
1
+ // ============================================
2
+ // OpenSwarm - Codex Responses-API Adapter
3
+ // Calls chatgpt.com/backend-api/codex/responses via ChatGPT OAuth — no codex CLI.
4
+ // Runs on OpenSwarm's OWN agentic loop so tools/verification stay under our control
5
+ // (unlike the codex `exec` CLI, which is a black box). INT-1586.
6
+ // ============================================
7
+ import { AuthProfileStore, ensureValidToken } from '../auth/index.js';
8
+ import { runAgenticLoop, loopResultToCliResult } from './agenticLoop.js';
9
+ import { parseWorkerResult, parseReviewerResult } from './resultParsing.js';
10
+ const CODEX_RESPONSES_URL = 'https://chatgpt.com/backend-api/codex/responses';
11
+ const DEFAULT_MODEL = 'gpt-5.5';
12
+ const PROFILE_KEY = 'openai-gpt:default';
13
+ // ---- Transforms (exported for unit tests) ----
14
+ /** ChatMessage[] → Responses `{ instructions, input[] }`. system → instructions. */
15
+ export function chatToResponsesInput(messages) {
16
+ const systemParts = [];
17
+ const input = [];
18
+ for (const m of messages) {
19
+ if (m.role === 'system') {
20
+ if (m.content)
21
+ systemParts.push(m.content);
22
+ }
23
+ else if (m.role === 'user') {
24
+ input.push({ role: 'user', content: m.content });
25
+ }
26
+ else if (m.role === 'assistant') {
27
+ if (m.content)
28
+ input.push({ role: 'assistant', content: m.content });
29
+ for (const tc of m.tool_calls ?? []) {
30
+ input.push({ type: 'function_call', call_id: tc.id, name: tc.function.name, arguments: tc.function.arguments });
31
+ }
32
+ }
33
+ else if (m.role === 'tool') {
34
+ input.push({ type: 'function_call_output', call_id: m.tool_call_id, output: m.content });
35
+ }
36
+ }
37
+ return { instructions: systemParts.join('\n\n'), input };
38
+ }
39
+ /** OpenSwarm ToolDefinition (nested `function:{}`) → Responses flat tool. */
40
+ export function toolsToResponsesTools(tools) {
41
+ return tools.map((t) => ({
42
+ type: 'function',
43
+ name: t.function.name,
44
+ description: t.function.description,
45
+ parameters: t.function.parameters,
46
+ }));
47
+ }
48
+ /**
49
+ * Reduce parsed Responses SSE events → a chat-completions-shaped response.
50
+ * Exported so the SSE→chat mapping is unit-testable without a live stream.
51
+ */
52
+ export function reduceResponsesEvents(events) {
53
+ let text = '';
54
+ // Keyed by the streaming item id; the emitted tool-call id is the call_id so it
55
+ // round-trips back as `function_call_output.call_id` on the next turn.
56
+ const calls = new Map();
57
+ let usage;
58
+ for (const ev of events) {
59
+ switch (ev.type) {
60
+ case 'response.output_text.delta':
61
+ if (ev.delta)
62
+ text += ev.delta;
63
+ break;
64
+ case 'response.output_item.added':
65
+ if (ev.item?.type === 'function_call' && ev.item.id) {
66
+ calls.set(ev.item.id, {
67
+ callId: ev.item.call_id || ev.item.id,
68
+ name: ev.item.name ?? '',
69
+ args: ev.item.arguments ?? '',
70
+ });
71
+ }
72
+ break;
73
+ case 'response.function_call_arguments.delta': {
74
+ const c = ev.item_id ? calls.get(ev.item_id) : undefined;
75
+ if (c && ev.delta)
76
+ c.args += ev.delta;
77
+ break;
78
+ }
79
+ case 'response.function_call_arguments.done': {
80
+ const c = ev.item_id ? calls.get(ev.item_id) : undefined;
81
+ if (c && typeof ev.arguments === 'string')
82
+ c.args = ev.arguments;
83
+ break;
84
+ }
85
+ case 'response.completed': {
86
+ const u = ev.response?.usage;
87
+ if (u) {
88
+ const pt = u.input_tokens ?? 0;
89
+ const ct = u.output_tokens ?? 0;
90
+ usage = { prompt_tokens: pt, completion_tokens: ct, total_tokens: pt + ct };
91
+ }
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ const toolCalls = [...calls.values()].map((c) => ({
97
+ id: c.callId,
98
+ type: 'function',
99
+ function: { name: c.name, arguments: c.args },
100
+ }));
101
+ return {
102
+ choices: [
103
+ {
104
+ message: {
105
+ role: 'assistant',
106
+ content: text || null,
107
+ tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
108
+ },
109
+ finish_reason: toolCalls.length > 0 ? 'tool_calls' : 'stop',
110
+ },
111
+ ],
112
+ usage,
113
+ };
114
+ }
115
+ /** Parse a `data: {json}` SSE line into an event, or null for keep-alives/[DONE]. */
116
+ function parseSseLine(line) {
117
+ const trimmed = line.trim();
118
+ if (!trimmed.startsWith('data:'))
119
+ return null;
120
+ const data = trimmed.slice(5).trim();
121
+ if (!data || data === '[DONE]')
122
+ return null;
123
+ try {
124
+ return JSON.parse(data);
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ }
130
+ /**
131
+ * Read the whole SSE body and reduce it to a chat-shaped response. When
132
+ * `onToken` is provided, each `response.output_text.delta` is emitted live so
133
+ * the chat TUI can stream tokens as they arrive.
134
+ */
135
+ async function consumeResponsesStream(res, onToken) {
136
+ const events = [];
137
+ const reader = res.body?.getReader();
138
+ if (!reader)
139
+ throw new Error('Codex responses: empty stream body');
140
+ const decoder = new TextDecoder();
141
+ let buffer = '';
142
+ const handle = (ev) => {
143
+ if (!ev)
144
+ return;
145
+ events.push(ev);
146
+ if (onToken && ev.type === 'response.output_text.delta' && ev.delta)
147
+ onToken(ev.delta);
148
+ };
149
+ for (;;) {
150
+ const { done, value } = await reader.read();
151
+ if (done)
152
+ break;
153
+ buffer += decoder.decode(value, { stream: true });
154
+ const lines = buffer.split('\n');
155
+ buffer = lines.pop() ?? '';
156
+ for (const line of lines)
157
+ handle(parseSseLine(line));
158
+ }
159
+ handle(parseSseLine(buffer));
160
+ return reduceResponsesEvents(events);
161
+ }
162
+ // ---- Adapter ----
163
+ export class CodexResponsesAdapter {
164
+ name = 'codex-responses';
165
+ capabilities = {
166
+ supportsStreaming: false, // the loop sees a single aggregated response per call
167
+ supportsJsonOutput: true,
168
+ supportsModelSelection: true,
169
+ managedGit: false,
170
+ supportedSkills: [],
171
+ };
172
+ async isAvailable() {
173
+ try {
174
+ const store = new AuthProfileStore();
175
+ const profile = store.getProfile(PROFILE_KEY);
176
+ // Needs a ChatGPT OAuth profile carrying the codex account_id.
177
+ return profile !== null && Boolean(profile.accountId);
178
+ }
179
+ catch {
180
+ return false;
181
+ }
182
+ }
183
+ buildCommand(_options) {
184
+ return { command: 'echo', args: ['"codex-responses adapter uses run() — not shell spawn"'] };
185
+ }
186
+ async run(options) {
187
+ const store = new AuthProfileStore();
188
+ const startTime = Date.now();
189
+ let accessToken;
190
+ let accountId;
191
+ try {
192
+ accessToken = await ensureValidToken(store, PROFILE_KEY);
193
+ accountId = store.getProfile(PROFILE_KEY)?.accountId ?? '';
194
+ if (!accountId) {
195
+ throw new Error('No chatgpt-account-id on the OAuth profile. Re-run: openswarm auth login --provider gpt');
196
+ }
197
+ }
198
+ catch (err) {
199
+ return {
200
+ exitCode: 1,
201
+ stdout: '',
202
+ stderr: `Auth error: ${err instanceof Error ? err.message : String(err)}`,
203
+ durationMs: Date.now() - startTime,
204
+ };
205
+ }
206
+ const model = options.model ?? DEFAULT_MODEL;
207
+ const callApi = this.createApiCaller(accessToken, accountId, store, model, options.onToken, options.signal);
208
+ const loopOptions = {
209
+ systemPrompt: options.systemPrompt,
210
+ prompt: options.prompt,
211
+ cwd: options.cwd ?? process.cwd(),
212
+ model,
213
+ callApi,
214
+ maxTurns: options.maxTurns ?? 15,
215
+ timeoutMs: options.timeoutMs || 300000,
216
+ onLog: options.onLog,
217
+ enableTools: options.enableTools ?? true,
218
+ nudgeMaxOnNoEdit: options.nudgeMaxOnNoEdit,
219
+ protectedFiles: options.protectedFiles,
220
+ bashTimeoutMs: options.bashTimeoutMs,
221
+ webTools: options.webTools,
222
+ mcpTools: options.mcpTools,
223
+ signal: options.signal,
224
+ };
225
+ try {
226
+ const result = await runAgenticLoop(loopOptions);
227
+ if (options.onLog) {
228
+ options.onLog(`[Codex ${model}] ${result.apiCallCount} API calls, ${result.toolCallCount} tool uses, ${result.totalTokens} tokens`);
229
+ }
230
+ return loopResultToCliResult(result);
231
+ }
232
+ catch (err) {
233
+ return {
234
+ exitCode: 1,
235
+ stdout: '',
236
+ stderr: `Codex responses loop failed: ${err instanceof Error ? err.message : String(err)}`,
237
+ durationMs: Date.now() - startTime,
238
+ };
239
+ }
240
+ }
241
+ /** Build the agentic-loop callApi: POST /responses + chat↔Responses conversion. */
242
+ createApiCaller(initialToken, accountId, store, model, onToken, signal) {
243
+ let token = initialToken;
244
+ let retried = false;
245
+ return async (messages, tools) => {
246
+ const { instructions, input } = chatToResponsesInput(messages);
247
+ const body = {
248
+ model,
249
+ input,
250
+ store: false,
251
+ stream: true,
252
+ };
253
+ if (instructions)
254
+ body.instructions = instructions;
255
+ if (tools.length > 0)
256
+ body.tools = toolsToResponsesTools(tools);
257
+ // NOTE: never set max_output_tokens — the Codex backend rejects it with HTTP 400.
258
+ const doCall = async (accessToken) => {
259
+ const res = await fetch(CODEX_RESPONSES_URL, {
260
+ method: 'POST',
261
+ headers: {
262
+ 'Content-Type': 'application/json',
263
+ 'Accept': 'text/event-stream',
264
+ 'Authorization': `Bearer ${accessToken}`,
265
+ 'chatgpt-account-id': accountId,
266
+ 'originator': 'openswarm',
267
+ 'OpenAI-Beta': 'responses=experimental',
268
+ },
269
+ body: JSON.stringify(body),
270
+ signal,
271
+ });
272
+ if (!res.ok) {
273
+ const errText = await res.text().catch(() => '');
274
+ // 401 → refresh once and retry.
275
+ if (res.status === 401 && !retried) {
276
+ retried = true;
277
+ token = await refreshAndRetry(store);
278
+ return doCall(token);
279
+ }
280
+ throw new Error(`Codex responses error (${res.status}): ${errText.slice(0, 500)}`);
281
+ }
282
+ return consumeResponsesStream(res, onToken);
283
+ };
284
+ return doCall(token);
285
+ };
286
+ }
287
+ parseWorkerOutput(raw) {
288
+ return parseWorkerResult(raw.stdout);
289
+ }
290
+ parseReviewerOutput(raw) {
291
+ return parseReviewerResult(raw.stdout);
292
+ }
293
+ }
294
+ async function refreshAndRetry(store) {
295
+ const profile = store.getProfile(PROFILE_KEY);
296
+ if (!profile)
297
+ throw new Error('No auth profile found');
298
+ profile.expires = 0; // force refresh
299
+ store.setProfile(PROFILE_KEY, profile);
300
+ return ensureValidToken(store, PROFILE_KEY);
301
+ }
302
+ //# sourceMappingURL=codexResponses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexResponses.js","sourceRoot":"","sources":["../../src/adapters/codexResponses.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt.d.ts","sourceRoot":"","sources":["../../src/adapters/gpt.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAUpB,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,IAAI,SAAS;IAEtB,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAMxC;IAEI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAKpE,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAqDxD;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiDvB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;IAKlD,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;CAKrD"}
1
+ {"version":3,"file":"gpt.d.ts","sourceRoot":"","sources":["../../src/adapters/gpt.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAWpB,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,IAAI,SAAS;IAEtB,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAMxC;IAEI,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAKpE,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAwDxD;;;OAGG;IACH,OAAO,CAAC,eAAe;IAsDvB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;IAIlD,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY;CAIrD"}
@@ -4,8 +4,9 @@
4
4
  // Agentic tool loop 지원 (read/write/edit/search/bash)
5
5
  // ============================================
6
6
  import { AuthProfileStore, ensureValidToken } from '../auth/index.js';
7
- import { t } from '../locale/index.js';
8
7
  import { runAgenticLoop, loopResultToCliResult } from './agenticLoop.js';
8
+ import { parseWorkerResult, parseReviewerResult } from './resultParsing.js';
9
+ import { consumeChatCompletionsStream } from './chatStream.js';
9
10
  const OPENAI_API_BASE = 'https://api.openai.com/v1';
10
11
  const DEFAULT_MODEL = 'gpt-4o';
11
12
  const PROFILE_KEY = 'openai-gpt:default';
@@ -50,7 +51,7 @@ export class GptCliAdapter {
50
51
  }
51
52
  const model = options.model ?? DEFAULT_MODEL;
52
53
  // 2. 에이전틱 루프로 실행 (도구 사용 가능)
53
- const callApi = this.createApiCaller(accessToken, store, model);
54
+ const callApi = this.createApiCaller(accessToken, store, model, options.onToken, options.signal);
54
55
  const loopOptions = {
55
56
  systemPrompt: options.systemPrompt,
56
57
  prompt: options.prompt,
@@ -60,10 +61,13 @@ export class GptCliAdapter {
60
61
  maxTurns: options.maxTurns ?? 15,
61
62
  timeoutMs: options.timeoutMs || 300000,
62
63
  onLog: options.onLog,
63
- enableTools: true,
64
+ enableTools: options.enableTools ?? true,
64
65
  nudgeMaxOnNoEdit: options.nudgeMaxOnNoEdit,
65
66
  protectedFiles: options.protectedFiles,
66
67
  bashTimeoutMs: options.bashTimeoutMs,
68
+ webTools: options.webTools,
69
+ mcpTools: options.mcpTools,
70
+ signal: options.signal,
67
71
  };
68
72
  try {
69
73
  const result = await runAgenticLoop(loopOptions);
@@ -85,7 +89,7 @@ export class GptCliAdapter {
85
89
  * OpenAI API 호출 함수 생성 (에이전틱 루프에 주입)
86
90
  * 401 시 토큰 갱신 + 1회 재시도 포함
87
91
  */
88
- createApiCaller(initialToken, store, model) {
92
+ createApiCaller(initialToken, store, model, onToken, signal) {
89
93
  let token = initialToken;
90
94
  let retried = false;
91
95
  return async (messages, tools) => {
@@ -94,6 +98,8 @@ export class GptCliAdapter {
94
98
  messages,
95
99
  temperature: 0.2,
96
100
  max_tokens: 16384,
101
+ stream: true,
102
+ stream_options: { include_usage: true },
97
103
  };
98
104
  if (tools.length > 0) {
99
105
  body.tools = tools;
@@ -106,6 +112,7 @@ export class GptCliAdapter {
106
112
  'Content-Type': 'application/json',
107
113
  },
108
114
  body: JSON.stringify(body),
115
+ signal,
109
116
  });
110
117
  if (!res.ok) {
111
118
  const errText = await res.text().catch(() => '');
@@ -117,20 +124,19 @@ export class GptCliAdapter {
117
124
  }
118
125
  throw new Error(`OpenAI API error (${res.status}): ${errText.slice(0, 500)}`);
119
126
  }
120
- return (await res.json());
127
+ return consumeChatCompletionsStream(res, onToken);
121
128
  };
122
129
  return doCall(token);
123
130
  };
124
131
  }
125
132
  parseWorkerOutput(raw) {
126
- const text = raw.stdout;
127
- return extractWorkerResultJson(text) ?? extractWorkerFromText(text);
133
+ return parseWorkerResult(raw.stdout);
128
134
  }
129
135
  parseReviewerOutput(raw) {
130
- const text = raw.stdout;
131
- return extractReviewerResultJson(text) ?? extractReviewerFromText(text);
136
+ return parseReviewerResult(raw.stdout);
132
137
  }
133
138
  }
139
+ // Streamed chat/completions responses are parsed by consumeChatCompletionsStream.
134
140
  async function refreshAndRetry(store) {
135
141
  const profile = store.getProfile(PROFILE_KEY);
136
142
  if (!profile) {
@@ -141,126 +147,6 @@ async function refreshAndRetry(store) {
141
147
  store.setProfile(PROFILE_KEY, profile);
142
148
  return ensureValidToken(store, PROFILE_KEY);
143
149
  }
144
- // Worker/Reviewer output parsing (Codex 어댑터와 동일한 로직)
145
- function extractWorkerResultJson(text) {
146
- const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/);
147
- const jsonStr = jsonMatch?.[1] ?? findJsonObject(text, '"success"');
148
- if (!jsonStr)
149
- return null;
150
- try {
151
- const parsed = JSON.parse(jsonStr);
152
- return {
153
- success: Boolean(parsed.success),
154
- summary: parsed.summary || t('common.fallback.noSummary'),
155
- filesChanged: Array.isArray(parsed.filesChanged) ? parsed.filesChanged : [],
156
- commands: Array.isArray(parsed.commands) ? parsed.commands : [],
157
- output: text,
158
- error: parsed.error,
159
- confidencePercent: typeof parsed.confidencePercent === 'number'
160
- ? parsed.confidencePercent : undefined,
161
- haltReason: parsed.haltReason || undefined,
162
- };
163
- }
164
- catch {
165
- return null;
166
- }
167
- }
168
- function extractWorkerFromText(text) {
169
- // Only an explicit failure phrase marks the run as failed. Loose words like
170
- // "error" or "fail" appear in normal coding prose ("error handling", "the
171
- // failing test") and used to cause false negatives. git-diff promotion in
172
- // worker.ts is the real success signal; this is just the non-repo fallback.
173
- const failed = isExplicitFailure(text);
174
- return {
175
- success: !failed,
176
- summary: extractSummary(text),
177
- filesChanged: [],
178
- commands: [],
179
- output: text,
180
- error: failed ? extractErrorMessage(text) : undefined,
181
- };
182
- }
183
- function extractReviewerResultJson(text) {
184
- const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/);
185
- const jsonStr = jsonMatch?.[1] ?? findJsonObject(text, '"decision"');
186
- if (!jsonStr)
187
- return null;
188
- try {
189
- const parsed = JSON.parse(jsonStr);
190
- const decision = parsed.decision === 'approve' || parsed.decision === 'reject'
191
- ? parsed.decision
192
- : 'revise';
193
- return {
194
- decision,
195
- feedback: typeof parsed.feedback === 'string' ? parsed.feedback : t('common.fallback.noSummary'),
196
- issues: Array.isArray(parsed.issues)
197
- ? parsed.issues.filter((v) => typeof v === 'string')
198
- : [],
199
- suggestions: Array.isArray(parsed.suggestions)
200
- ? parsed.suggestions.filter((v) => typeof v === 'string')
201
- : [],
202
- };
203
- }
204
- catch {
205
- return null;
206
- }
207
- }
208
- function extractReviewerFromText(text) {
209
- const lower = text.toLowerCase();
210
- const decision = lower.includes('approve')
211
- ? 'approve'
212
- : lower.includes('reject')
213
- ? 'reject'
214
- : 'revise';
215
- return {
216
- decision,
217
- feedback: extractSummary(text),
218
- issues: [],
219
- suggestions: [],
220
- };
221
- }
222
- // Helpers
223
- function findJsonObject(text, marker) {
224
- const idx = text.indexOf(marker);
225
- if (idx < 0)
226
- return null;
227
- // marker 앞의 '{' 찾기
228
- let start = text.lastIndexOf('{', idx);
229
- if (start < 0)
230
- return null;
231
- let depth = 0;
232
- for (let i = start; i < text.length; i++) {
233
- if (text[i] === '{')
234
- depth++;
235
- if (text[i] === '}') {
236
- depth--;
237
- if (depth === 0) {
238
- return text.slice(start, i + 1);
239
- }
240
- }
241
- }
242
- return null;
243
- }
244
- // Detect a real failure declaration, not incidental "error"/"fail" prose.
245
- // Matches explicit statements like "failed to", "unable to", "could not",
246
- // "cannot complete", or an explicit JSON success:false.
247
- function isExplicitFailure(text) {
248
- if (/"success"\s*:\s*false/i.test(text))
249
- return true;
250
- return /\b(failed to|unable to|could not|couldn['’]t|cannot (?:complete|finish|proceed|continue)|giving up|abort(?:ed|ing))\b/i.test(text);
251
- }
252
- function extractSummary(text) {
253
- const lines = text.split('\n').filter((l) => l.trim().length > 10);
254
- if (lines.length === 0)
255
- return t('common.fallback.noSummary');
256
- const summary = lines[0].trim();
257
- return summary.length > 200 ? `${summary.slice(0, 200)}...` : summary;
258
- }
259
- function extractErrorMessage(text) {
260
- const errorMatch = text.match(/(?:error|exception|failed?):\s*(.+)/i);
261
- if (errorMatch)
262
- return errorMatch[1].slice(0, 200);
263
- const lines = text.split('\n').filter((l) => /error|fail/i.test(l));
264
- return lines.length > 0 ? lines[0].slice(0, 200) : 'Unknown error';
265
- }
150
+ // Worker/Reviewer output parsing lives in ./resultParsing.ts (shared with the
151
+ // local, openrouter, and codex adapters — INT-1441).
266
152
  //# sourceMappingURL=gpt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpt.js","sourceRoot":"","sources":["../../src/adapters/gpt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gpt.js","sourceRoot":"","sources":["../../src/adapters/gpt.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export type { CliAdapter, CliRunOptions, CliRunResult, AdapterCapabilities, AdapterName, WorkerResult, ReviewResult, ProcessContext, } from './types.js';
2
2
  export { spawnCli } from './base.js';
3
3
  export { CodexCliAdapter } from './codex.js';
4
+ export { CodexResponsesAdapter } from './codexResponses.js';
4
5
  export { GptCliAdapter } from './gpt.js';
5
6
  export { LocalModelAdapter } from './local.js';
6
7
  export { LmStudioAdapter } from './lmstudio.js';
@@ -13,6 +14,12 @@ import type { AdapterName, CliAdapter } from './types.js';
13
14
  export declare function getAdapter(name?: string): CliAdapter;
14
15
  export declare function setDefaultAdapter(name: AdapterName): void;
15
16
  export declare function getDefaultAdapterName(): AdapterName;
17
+ /**
18
+ * True if `name` is a currently-registered adapter. Used to reject stale
19
+ * persisted provider names (e.g. an old chat session saved `claude` before the
20
+ * adapter was removed) instead of crashing downstream.
21
+ */
22
+ export declare function isKnownAdapter(name: string): name is AdapterName;
16
23
  /**
17
24
  * List adapters that are currently installed and available.
18
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAOxI,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY1D;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAuB,GAAG,UAAU,CAMpE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAKzD;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQxI,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAa1D;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAuB,GAAG,UAAU,CAMpE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAKzD;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,WAAW,CAEhE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ/D"}
@@ -4,18 +4,21 @@
4
4
  // ============================================
5
5
  export { spawnCli } from './base.js';
6
6
  export { CodexCliAdapter } from './codex.js';
7
+ export { CodexResponsesAdapter } from './codexResponses.js';
7
8
  export { GptCliAdapter } from './gpt.js';
8
9
  export { LocalModelAdapter } from './local.js';
9
10
  export { LmStudioAdapter } from './lmstudio.js';
10
11
  export { OpenRouterCliAdapter } from './openrouter.js';
11
12
  export { registerProcess, getProcess, getAllProcesses, killProcess, startHealthChecker, stopHealthChecker } from './processRegistry.js';
12
13
  import { CodexCliAdapter } from './codex.js';
14
+ import { CodexResponsesAdapter } from './codexResponses.js';
13
15
  import { GptCliAdapter } from './gpt.js';
14
16
  import { LocalModelAdapter } from './local.js';
15
17
  import { LmStudioAdapter } from './lmstudio.js';
16
18
  import { OpenRouterCliAdapter } from './openrouter.js';
17
19
  const adapters = {
18
20
  codex: new CodexCliAdapter(),
21
+ 'codex-responses': new CodexResponsesAdapter(),
19
22
  gpt: new GptCliAdapter(),
20
23
  local: new LocalModelAdapter(),
21
24
  lmstudio: new LmStudioAdapter(),
@@ -41,6 +44,14 @@ export function setDefaultAdapter(name) {
41
44
  export function getDefaultAdapterName() {
42
45
  return defaultAdapter;
43
46
  }
47
+ /**
48
+ * True if `name` is a currently-registered adapter. Used to reject stale
49
+ * persisted provider names (e.g. an old chat session saved `claude` before the
50
+ * adapter was removed) instead of crashing downstream.
51
+ */
52
+ export function isKnownAdapter(name) {
53
+ return Object.prototype.hasOwnProperty.call(adapters, name);
54
+ }
44
55
  /**
45
56
  * List adapters that are currently installed and available.
46
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mCAAmC;AACnC,kCAAkC;AAClC,+CAA+C;AAa/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExI,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE,IAAI,eAAe,EAAE;IAC5B,GAAG,EAAE,IAAI,aAAa,EAAE;IACxB,KAAK,EAAE,IAAI,iBAAiB,EAAE;IAC9B,QAAQ,EAAE,IAAI,eAAe,EAAE;IAC/B,UAAU,EAAE,IAAI,oBAAoB,EAAE;CACvC,CAAC;AAEF,IAAI,cAAc,GAAgB,OAAO,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,cAAc;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mCAAmC;AACnC,kCAAkC;AAClC,+CAA+C;AAa/C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExI,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE,IAAI,eAAe,EAAE;IAC5B,iBAAiB,EAAE,IAAI,qBAAqB,EAAE;IAC9C,GAAG,EAAE,IAAI,aAAa,EAAE;IACxB,KAAK,EAAE,IAAI,iBAAiB,EAAE;IAC9B,QAAQ,EAAE,IAAI,eAAe,EAAE;IAC/B,UAAU,EAAE,IAAI,oBAAoB,EAAE;CACvC,CAAC;AAEF,IAAI,cAAc,GAAgB,OAAO,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,cAAc;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}