ace-swarm 2.0.0 → 2.0.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.
@@ -0,0 +1,241 @@
1
+ /**
2
+ * ACE-TUI OpenAI-compatible streaming client.
3
+ *
4
+ * Supports providers routed through OpenAI-compatible chat/completions APIs.
5
+ * - codex: defaults to OpenAI API endpoint/key env vars
6
+ * - others: require provider-specific base URL + API key env vars
7
+ */
8
+ export class OpenAICompatibleError extends Error {
9
+ statusCode;
10
+ responseBody;
11
+ constructor(message, statusCode, responseBody) {
12
+ super(message);
13
+ this.statusCode = statusCode;
14
+ this.responseBody = responseBody;
15
+ this.name = "OpenAICompatibleError";
16
+ }
17
+ }
18
+ export class OpenAICompatibleClient {
19
+ abortControllers = new Map();
20
+ requestCounter = 0;
21
+ async *chat(request) {
22
+ const provider = normalizeProvider(request.provider);
23
+ const config = this.resolveProviderConfig(provider);
24
+ const key = `chat:${provider}:${Date.now()}:${++this.requestCounter}`;
25
+ const controller = new AbortController();
26
+ this.abortControllers.set(key, controller);
27
+ let doneSent = false;
28
+ let promptTokens;
29
+ let completionTokens;
30
+ try {
31
+ const body = {
32
+ model: request.model,
33
+ messages: request.messages,
34
+ stream: true,
35
+ temperature: request.temperature,
36
+ top_p: request.topP,
37
+ stream_options: { include_usage: true },
38
+ };
39
+ const res = await fetch(`${config.baseUrl}/chat/completions`, {
40
+ method: "POST",
41
+ signal: controller.signal,
42
+ headers: {
43
+ "Content-Type": "application/json",
44
+ Accept: "text/event-stream",
45
+ Authorization: `Bearer ${config.apiKey}`,
46
+ ...(config.headers ?? {}),
47
+ },
48
+ body: JSON.stringify(body),
49
+ });
50
+ if (!res.ok) {
51
+ const text = await res.text().catch(() => "");
52
+ throw new OpenAICompatibleError(`Provider '${provider}' API error: ${res.status} ${res.statusText}`, res.status, text);
53
+ }
54
+ if (!res.body) {
55
+ throw new OpenAICompatibleError(`Provider '${provider}' returned no response body.`);
56
+ }
57
+ for await (const data of this.streamSseData(res.body)) {
58
+ if (data === "[DONE]") {
59
+ if (!doneSent) {
60
+ doneSent = true;
61
+ yield {
62
+ text: "",
63
+ done: true,
64
+ promptTokens,
65
+ completionTokens,
66
+ };
67
+ }
68
+ continue;
69
+ }
70
+ let parsed;
71
+ try {
72
+ parsed = JSON.parse(data);
73
+ }
74
+ catch {
75
+ continue;
76
+ }
77
+ const usage = (parsed.usage ?? {});
78
+ if (typeof usage.prompt_tokens === "number")
79
+ promptTokens = usage.prompt_tokens;
80
+ if (typeof usage.completion_tokens === "number")
81
+ completionTokens = usage.completion_tokens;
82
+ const choices = Array.isArray(parsed.choices) ? parsed.choices : [];
83
+ const firstChoice = (choices[0] ?? {});
84
+ const delta = firstChoice.delta;
85
+ const text = typeof delta?.content === "string" ? delta.content : "";
86
+ if (text.length > 0) {
87
+ yield { text, done: false };
88
+ }
89
+ if (firstChoice.finish_reason != null && !doneSent) {
90
+ doneSent = true;
91
+ yield {
92
+ text: "",
93
+ done: true,
94
+ promptTokens,
95
+ completionTokens,
96
+ };
97
+ }
98
+ }
99
+ if (!doneSent) {
100
+ yield {
101
+ text: "",
102
+ done: true,
103
+ promptTokens,
104
+ completionTokens,
105
+ };
106
+ }
107
+ }
108
+ finally {
109
+ this.abortControllers.delete(key);
110
+ }
111
+ }
112
+ abort() {
113
+ for (const [key, controller] of this.abortControllers) {
114
+ controller.abort();
115
+ this.abortControllers.delete(key);
116
+ }
117
+ }
118
+ diagnoseProvider(provider) {
119
+ return diagnoseProviderRuntimeConfig(provider);
120
+ }
121
+ resolveProviderConfig(provider) {
122
+ const diagnosis = diagnoseProviderRuntimeConfig(provider);
123
+ if (!diagnosis.ok) {
124
+ throw new OpenAICompatibleError(diagnosis.message);
125
+ }
126
+ const upper = provider.toUpperCase();
127
+ const providerBase = process.env[`${upper}_BASE_URL`]?.trim();
128
+ const providerKey = process.env[`${upper}_API_KEY`]?.trim();
129
+ const genericBase = process.env.OPENAI_BASE_URL?.trim();
130
+ const genericKey = process.env.OPENAI_API_KEY?.trim();
131
+ if (provider === "codex") {
132
+ const baseUrl = stripTrailingSlash(providerBase || genericBase || "https://api.openai.com/v1");
133
+ const apiKey = (providerKey || genericKey || process.env.CODEX_API_KEY?.trim());
134
+ return { provider, baseUrl, apiKey };
135
+ }
136
+ const baseUrl = stripTrailingSlash(providerBase || genericBase || "");
137
+ const apiKey = (providerKey || genericKey || "");
138
+ return { provider, baseUrl, apiKey };
139
+ }
140
+ async *streamSseData(body) {
141
+ const reader = body.getReader();
142
+ const decoder = new TextDecoder();
143
+ let buffer = "";
144
+ try {
145
+ while (true) {
146
+ const { done, value } = await reader.read();
147
+ if (done)
148
+ break;
149
+ buffer += decoder.decode(value, { stream: true });
150
+ const lines = buffer.split("\n");
151
+ buffer = lines.pop() ?? "";
152
+ for (const line of lines) {
153
+ const trimmed = line.trim();
154
+ if (!trimmed || trimmed.startsWith(":"))
155
+ continue;
156
+ if (!trimmed.startsWith("data:"))
157
+ continue;
158
+ const data = trimmed.slice(5).trim();
159
+ if (!data)
160
+ continue;
161
+ yield data;
162
+ }
163
+ }
164
+ if (buffer.trim().startsWith("data:")) {
165
+ const data = buffer.trim().slice(5).trim();
166
+ if (data)
167
+ yield data;
168
+ }
169
+ }
170
+ finally {
171
+ reader.releaseLock();
172
+ }
173
+ }
174
+ }
175
+ function normalizeProvider(provider) {
176
+ const value = provider.trim().toLowerCase();
177
+ if (!value)
178
+ return "codex";
179
+ if (value === "openai")
180
+ return "codex";
181
+ if (value === "anthropic")
182
+ return "claude";
183
+ if (value === "google")
184
+ return "gemini";
185
+ return value;
186
+ }
187
+ function stripTrailingSlash(input) {
188
+ return input.replace(/\/$/, "");
189
+ }
190
+ function dedupe(values) {
191
+ return [...new Set(values)];
192
+ }
193
+ export function diagnoseProviderRuntimeConfig(providerInput) {
194
+ const provider = normalizeProvider(providerInput);
195
+ const upper = provider.toUpperCase();
196
+ const providerBase = process.env[`${upper}_BASE_URL`]?.trim();
197
+ const providerKey = process.env[`${upper}_API_KEY`]?.trim();
198
+ const genericBase = process.env.OPENAI_BASE_URL?.trim();
199
+ const genericKey = process.env.OPENAI_API_KEY?.trim();
200
+ if (provider === "codex") {
201
+ const apiKey = providerKey || genericKey || process.env.CODEX_API_KEY?.trim();
202
+ if (apiKey) {
203
+ return {
204
+ provider,
205
+ ok: true,
206
+ missing: [],
207
+ message: `Provider '${provider}' runtime config is ready.`,
208
+ };
209
+ }
210
+ return {
211
+ provider,
212
+ ok: false,
213
+ missing: dedupe(["CODEX_API_KEY", "OPENAI_API_KEY"]),
214
+ message: "Missing API key for provider 'codex'. Set CODEX_API_KEY or OPENAI_API_KEY before sending chat messages.",
215
+ };
216
+ }
217
+ const baseUrl = stripTrailingSlash(providerBase || genericBase || "");
218
+ const apiKey = providerKey || genericKey || "";
219
+ const missing = [];
220
+ if (!baseUrl) {
221
+ missing.push(`${upper}_BASE_URL`, "OPENAI_BASE_URL");
222
+ }
223
+ if (!apiKey) {
224
+ missing.push(`${upper}_API_KEY`, "OPENAI_API_KEY");
225
+ }
226
+ if (missing.length === 0) {
227
+ return {
228
+ provider,
229
+ ok: true,
230
+ missing: [],
231
+ message: `Provider '${provider}' runtime config is ready.`,
232
+ };
233
+ }
234
+ return {
235
+ provider,
236
+ ok: false,
237
+ missing: dedupe(missing),
238
+ message: `Missing runtime config for provider '${provider}'. Set ${upper}_BASE_URL/${upper}_API_KEY or OPENAI_BASE_URL/OPENAI_API_KEY.`,
239
+ };
240
+ }
241
+ //# sourceMappingURL=openai-compatible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/tui/openai-compatible.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ace-swarm",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "ACE Framework MCP server and CLI bootstrap for prompts, skills, handoffs, and stateful swarm orchestration.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",