superoc 0.1.0

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 (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/bin/nimsuper.js +21 -0
  4. package/bin/nimsuper.ts +10 -0
  5. package/bin/superoc.js +21 -0
  6. package/bin/superoc.ts +10 -0
  7. package/dist/antigravity.d.ts +59 -0
  8. package/dist/antigravity.d.ts.map +1 -0
  9. package/dist/antigravity.js +423 -0
  10. package/dist/antigravity.js.map +1 -0
  11. package/dist/errors.d.ts +22 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +122 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/errors.test.d.ts +2 -0
  16. package/dist/errors.test.d.ts.map +1 -0
  17. package/dist/errors.test.js +137 -0
  18. package/dist/errors.test.js.map +1 -0
  19. package/dist/index.d.ts +5 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +809 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/opencode-sync.d.ts +9 -0
  24. package/dist/opencode-sync.d.ts.map +1 -0
  25. package/dist/opencode-sync.js +157 -0
  26. package/dist/opencode-sync.js.map +1 -0
  27. package/dist/provider.d.ts +5 -0
  28. package/dist/provider.d.ts.map +1 -0
  29. package/dist/provider.js +100 -0
  30. package/dist/provider.js.map +1 -0
  31. package/dist/provider.test.d.ts +2 -0
  32. package/dist/provider.test.d.ts.map +1 -0
  33. package/dist/provider.test.js +94 -0
  34. package/dist/provider.test.js.map +1 -0
  35. package/dist/quota.d.ts +12 -0
  36. package/dist/quota.d.ts.map +1 -0
  37. package/dist/quota.js +105 -0
  38. package/dist/quota.js.map +1 -0
  39. package/dist/quota.test.d.ts +2 -0
  40. package/dist/quota.test.d.ts.map +1 -0
  41. package/dist/quota.test.js +20 -0
  42. package/dist/quota.test.js.map +1 -0
  43. package/dist/storage.d.ts +43 -0
  44. package/dist/storage.d.ts.map +1 -0
  45. package/dist/storage.js +447 -0
  46. package/dist/storage.js.map +1 -0
  47. package/dist/themes.d.ts +64 -0
  48. package/dist/themes.d.ts.map +1 -0
  49. package/dist/themes.js +424 -0
  50. package/dist/themes.js.map +1 -0
  51. package/dist/tui/actions.d.ts +14 -0
  52. package/dist/tui/actions.d.ts.map +1 -0
  53. package/dist/tui/actions.js +464 -0
  54. package/dist/tui/actions.js.map +1 -0
  55. package/dist/tui/app.d.ts +2 -0
  56. package/dist/tui/app.d.ts.map +1 -0
  57. package/dist/tui/app.js +323 -0
  58. package/dist/tui/app.js.map +1 -0
  59. package/dist/tui/benchmark.d.ts +42 -0
  60. package/dist/tui/benchmark.d.ts.map +1 -0
  61. package/dist/tui/benchmark.js +379 -0
  62. package/dist/tui/benchmark.js.map +1 -0
  63. package/dist/tui/screens.d.ts +23 -0
  64. package/dist/tui/screens.d.ts.map +1 -0
  65. package/dist/tui/screens.js +791 -0
  66. package/dist/tui/screens.js.map +1 -0
  67. package/dist/tui/state.d.ts +54 -0
  68. package/dist/tui/state.d.ts.map +1 -0
  69. package/dist/tui/state.js +85 -0
  70. package/dist/tui/state.js.map +1 -0
  71. package/dist/tui/types.d.ts +16 -0
  72. package/dist/tui/types.d.ts.map +1 -0
  73. package/dist/tui/types.js +2 -0
  74. package/dist/tui/types.js.map +1 -0
  75. package/dist/tui/ui.d.ts +17 -0
  76. package/dist/tui/ui.d.ts.map +1 -0
  77. package/dist/tui/ui.js +77 -0
  78. package/dist/tui/ui.js.map +1 -0
  79. package/dist/types.d.ts +52 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +68 -0
  84. package/scripts/postinstall.js +77 -0
  85. package/scripts/uninstall.js +119 -0
@@ -0,0 +1,379 @@
1
+ import { state, callRenderApp } from "./state.js";
2
+ import { getAntigravityHeaders, getOrRefreshAntigravityAccessToken } from "../antigravity.js";
3
+ const NIM_CHAT_URL = "https://integrate.api.nvidia.com/v1/chat/completions";
4
+ const GEMINI_STREAM_URL = "https://generativelanguage.googleapis.com/v1beta/models";
5
+ const ANTIGRAVITY_STREAM_URL = "https://cloudcode-pa.googleapis.com/v1internal:streamGenerateContent?alt=sse";
6
+ const FETCH_TIMEOUT_MS = 30_000;
7
+ const STREAM_CHUNK_TIMEOUT_MS = 30_000;
8
+ const TPS_UPDATE_INTERVAL_MS = 2_000;
9
+ const SPINNER_INTERVAL_MS = 80;
10
+ const CHARS_PER_TOKEN = 4;
11
+ export class BenchmarkRunner {
12
+ generation = 0;
13
+ controller = null;
14
+ spinnerInterval = null;
15
+ _phase = "idle";
16
+ _metrics = {
17
+ ttfb: undefined,
18
+ tps: undefined,
19
+ tokenCount: 0,
20
+ };
21
+ _error;
22
+ _modelId;
23
+ _cancelled = false;
24
+ lastGoodTps;
25
+ provider;
26
+ constructor(provider) {
27
+ this.provider = provider;
28
+ }
29
+ setTps(value) {
30
+ if (value != null && Number.isFinite(value) && value >= 0) {
31
+ this._metrics.tps = value;
32
+ this.lastGoodTps = value;
33
+ }
34
+ else if (this.lastGoodTps != null) {
35
+ this._metrics.tps = this.lastGoodTps;
36
+ }
37
+ }
38
+ get phase() {
39
+ return this._phase;
40
+ }
41
+ get metrics() {
42
+ return { ...this._metrics };
43
+ }
44
+ get error() {
45
+ return this._error;
46
+ }
47
+ get modelId() {
48
+ return this._modelId;
49
+ }
50
+ get isRunning() {
51
+ return this._phase === "connecting" || this._phase === "streaming";
52
+ }
53
+ getState() {
54
+ return {
55
+ phase: this._phase,
56
+ metrics: { ...this._metrics },
57
+ error: this._error,
58
+ };
59
+ }
60
+ cancel() {
61
+ this._cancelled = true;
62
+ if (this.controller) {
63
+ this.controller.abort();
64
+ }
65
+ this.teardown();
66
+ this._phase = "cancelled";
67
+ this._error = undefined;
68
+ }
69
+ async run(model, apiKey) {
70
+ this.cancel();
71
+ this.generation++;
72
+ const gen = this.generation;
73
+ this._cancelled = false;
74
+ this.controller = new AbortController();
75
+ this._phase = "connecting";
76
+ this._metrics = { ttfb: undefined, tps: undefined, tokenCount: 0 };
77
+ this._error = undefined;
78
+ this._modelId = model.id;
79
+ this.startSpinner();
80
+ try {
81
+ await this.execute(model, apiKey, gen);
82
+ if (this.generation !== gen) {
83
+ return this.getState();
84
+ }
85
+ this._phase = "done";
86
+ }
87
+ catch (err) {
88
+ if (this.generation !== gen) {
89
+ return this.getState();
90
+ }
91
+ if (this._cancelled) {
92
+ this._phase = "cancelled";
93
+ this._error = undefined;
94
+ }
95
+ else {
96
+ this._phase = "error";
97
+ this._error = err instanceof Error ? err.message : "Benchmark failed";
98
+ }
99
+ }
100
+ finally {
101
+ if (this.generation === gen) {
102
+ this.teardown();
103
+ }
104
+ }
105
+ return this.getState();
106
+ }
107
+ applyResultToModel(model) {
108
+ if (this._phase === "done") {
109
+ model.benchmarkStatus = "done";
110
+ model.benchmarkTtfb =
111
+ this._metrics.ttfb != null && Number.isFinite(this._metrics.ttfb)
112
+ ? this._metrics.ttfb
113
+ : undefined;
114
+ model.benchmarkTps =
115
+ this._metrics.tps != null &&
116
+ Number.isFinite(this._metrics.tps) &&
117
+ this._metrics.tps > 0
118
+ ? this._metrics.tps
119
+ : undefined;
120
+ if (model.benchmarkTps == null) {
121
+ model.benchmarkStatus = "error";
122
+ model.benchmarkError = "TPS calculation failed";
123
+ }
124
+ }
125
+ else if (this._phase === "error") {
126
+ model.benchmarkStatus = "error";
127
+ model.benchmarkError = this._error;
128
+ }
129
+ else if (this._phase === "cancelled") {
130
+ model.benchmarkStatus = "idle";
131
+ delete model.benchmarkTtfb;
132
+ delete model.benchmarkTps;
133
+ delete model.benchmarkError;
134
+ }
135
+ }
136
+ resetModel(model) {
137
+ model.benchmarkStatus = "idle";
138
+ delete model.benchmarkTtfb;
139
+ delete model.benchmarkTps;
140
+ delete model.benchmarkError;
141
+ }
142
+ async execute(model, apiKey, gen) {
143
+ const signal = this.controller.signal;
144
+ const startTime = Date.now();
145
+ const fetchTimeout = AbortSignal.timeout(FETCH_TIMEOUT_MS);
146
+ const combinedSignal = AbortSignal.any([signal, fetchTimeout]);
147
+ let url;
148
+ let headers;
149
+ let body;
150
+ let res;
151
+ if (this.provider === "nvidia") {
152
+ url = NIM_CHAT_URL;
153
+ headers = {
154
+ Authorization: `Bearer ${apiKey}`,
155
+ authorization: `Bearer ${apiKey}`,
156
+ "Content-Type": "application/json",
157
+ };
158
+ body = JSON.stringify({
159
+ model: model.id,
160
+ messages: [
161
+ {
162
+ role: "user",
163
+ content: "Write a function that takes an array of integers and returns the two numbers that sum to a given target. Explain your approach.",
164
+ },
165
+ ],
166
+ max_tokens: 1024,
167
+ stream: true,
168
+ });
169
+ res = await fetch(url, { method: "POST", headers, body, signal: combinedSignal });
170
+ }
171
+ else if (this.provider === "antigravity") {
172
+ const auth = await getOrRefreshAntigravityAccessToken(apiKey);
173
+ if (!auth) {
174
+ throw new Error("Failed to resolve Antigravity access token");
175
+ }
176
+ headers = {
177
+ ...getAntigravityHeaders(auth.accessToken),
178
+ "Content-Type": "application/json",
179
+ Accept: "text/event-stream",
180
+ };
181
+ const cleanModelId = model.id.replace(/^antigravity-/, "");
182
+ body = JSON.stringify({
183
+ project: auth.projectId || "rising-fact-p41fc",
184
+ model: cleanModelId,
185
+ request: {
186
+ model: cleanModelId,
187
+ contents: [
188
+ {
189
+ role: "user",
190
+ parts: [
191
+ {
192
+ text: "Write a function that takes an array of integers and returns the two numbers that sum to a given target. Explain your approach.",
193
+ },
194
+ ],
195
+ },
196
+ ],
197
+ generationConfig: { maxOutputTokens: 1024 },
198
+ },
199
+ requestType: "agent",
200
+ userAgent: "antigravity",
201
+ });
202
+ const endpoints = [
203
+ "https://daily-cloudcode-pa.sandbox.googleapis.com",
204
+ "https://cloudcode-pa.googleapis.com",
205
+ ];
206
+ let lastRes = null;
207
+ for (const ep of endpoints) {
208
+ url = `${ep}/v1internal:streamGenerateContent?alt=sse`;
209
+ lastRes = await fetch(url, { method: "POST", headers, body, signal: combinedSignal });
210
+ if (lastRes.ok)
211
+ break;
212
+ }
213
+ if (!lastRes)
214
+ throw new Error("No response from Antigravity endpoints");
215
+ res = lastRes;
216
+ }
217
+ else {
218
+ url = `${GEMINI_STREAM_URL}/${model.id}:streamGenerateContent?key=${apiKey}`;
219
+ headers = { "Content-Type": "application/json" };
220
+ body = JSON.stringify({
221
+ contents: [
222
+ {
223
+ parts: [
224
+ {
225
+ text: "Write a function that takes an array of integers and returns the two numbers that sum to a given target. Explain your approach.",
226
+ },
227
+ ],
228
+ },
229
+ ],
230
+ generationConfig: { maxOutputTokens: 1024 },
231
+ });
232
+ res = await fetch(url, { method: "POST", headers, body, signal: combinedSignal });
233
+ }
234
+ if (this.generation !== gen)
235
+ return;
236
+ const firstByteTime = Date.now();
237
+ this._metrics.ttfb = firstByteTime - startTime;
238
+ this._phase = "streaming";
239
+ callRenderApp();
240
+ if (!res.ok) {
241
+ throw new Error(`HTTP ${res.status}`);
242
+ }
243
+ const reader = res.body?.getReader();
244
+ if (!reader) {
245
+ throw new Error("Response body is empty");
246
+ }
247
+ await this.readStream(reader, gen, firstByteTime);
248
+ }
249
+ async readStream(reader, gen, ttfbTime) {
250
+ let streamStart = 0;
251
+ let lastTpsUpdate = 0;
252
+ let charCount = 0;
253
+ let contentChunks = 0;
254
+ let buffer = "";
255
+ const decoder = new TextDecoder();
256
+ let chunkTimeoutId = null;
257
+ const resetChunkTimeout = () => {
258
+ if (chunkTimeoutId)
259
+ clearTimeout(chunkTimeoutId);
260
+ chunkTimeoutId = setTimeout(() => {
261
+ try {
262
+ reader.cancel();
263
+ }
264
+ catch { }
265
+ }, STREAM_CHUNK_TIMEOUT_MS);
266
+ };
267
+ resetChunkTimeout();
268
+ try {
269
+ while (true) {
270
+ if (this.generation !== gen)
271
+ return;
272
+ let chunk;
273
+ try {
274
+ chunk = await reader.read();
275
+ }
276
+ catch (e) {
277
+ if (e instanceof Error && (e.name === "AbortError" || e.name === "CanceledError")) {
278
+ throw new Error("Stream timeout");
279
+ }
280
+ throw e;
281
+ }
282
+ if (this.generation !== gen)
283
+ return;
284
+ const { done, value } = chunk;
285
+ if (done)
286
+ break;
287
+ resetChunkTimeout();
288
+ if (value) {
289
+ buffer += decoder.decode(value, { stream: true });
290
+ const lines = buffer.split("\n");
291
+ buffer = lines.pop() || "";
292
+ for (const line of lines) {
293
+ const trimmed = line.trim();
294
+ if (!trimmed.startsWith("data: "))
295
+ continue;
296
+ const data = trimmed.slice(6);
297
+ if (data === "[DONE]")
298
+ continue;
299
+ try {
300
+ const parsed = JSON.parse(data);
301
+ let content;
302
+ if (this.provider === "nvidia") {
303
+ content = parsed?.choices?.[0]?.delta?.content;
304
+ }
305
+ else if (this.provider === "antigravity") {
306
+ const candidate = parsed?.response?.candidates?.[0] ?? parsed?.candidates?.[0];
307
+ content = candidate?.content?.parts?.[0]?.text;
308
+ }
309
+ else {
310
+ content = parsed?.candidates?.[0]?.content?.parts?.[0]?.text;
311
+ }
312
+ if (content) {
313
+ charCount += content.length;
314
+ contentChunks++;
315
+ if (streamStart === 0) {
316
+ streamStart = ttfbTime;
317
+ }
318
+ }
319
+ }
320
+ catch { }
321
+ }
322
+ }
323
+ if (charCount === 0 || contentChunks < 2)
324
+ continue;
325
+ const estimatedTokens = Math.max(1, Math.round(charCount / CHARS_PER_TOKEN));
326
+ this._metrics.tokenCount = estimatedTokens;
327
+ const now = Date.now();
328
+ const elapsed = Math.max(1, now - streamStart);
329
+ const calculatedTps = (estimatedTokens / elapsed) * 1000;
330
+ if (lastTpsUpdate === 0) {
331
+ this.setTps(calculatedTps);
332
+ lastTpsUpdate = now;
333
+ callRenderApp();
334
+ }
335
+ else if (now - lastTpsUpdate >= TPS_UPDATE_INTERVAL_MS) {
336
+ this.setTps(calculatedTps);
337
+ lastTpsUpdate = now;
338
+ callRenderApp();
339
+ }
340
+ }
341
+ }
342
+ finally {
343
+ if (chunkTimeoutId)
344
+ clearTimeout(chunkTimeoutId);
345
+ try {
346
+ reader.releaseLock();
347
+ }
348
+ catch { }
349
+ }
350
+ if (charCount > 0 && streamStart > 0) {
351
+ const finalTokens = Math.max(1, Math.round(charCount / CHARS_PER_TOKEN));
352
+ this._metrics.tokenCount = finalTokens;
353
+ const streamDuration = Math.max(1, Date.now() - streamStart);
354
+ this.setTps((finalTokens / streamDuration) * 1000);
355
+ }
356
+ }
357
+ startSpinner() {
358
+ this.stopSpinner();
359
+ this.spinnerInterval = setInterval(() => {
360
+ if (this.isRunning && state.currentScreen === "fallback-chain") {
361
+ callRenderApp();
362
+ }
363
+ else if (!this.isRunning) {
364
+ this.stopSpinner();
365
+ }
366
+ }, SPINNER_INTERVAL_MS);
367
+ }
368
+ stopSpinner() {
369
+ if (this.spinnerInterval) {
370
+ clearInterval(this.spinnerInterval);
371
+ this.spinnerInterval = null;
372
+ }
373
+ }
374
+ teardown() {
375
+ this.stopSpinner();
376
+ this.controller = null;
377
+ }
378
+ }
379
+ //# sourceMappingURL=benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/tui/benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ScreenContent } from "./types.js";
2
+ export declare function buildProviderTabs(): ScreenContent;
3
+ export declare function buildMainMenu(): ScreenContent;
4
+ export declare function buildKeySelector(): ScreenContent;
5
+ export declare function buildKeyActions(): ScreenContent;
6
+ export declare function buildThemeSelector(): ScreenContent;
7
+ export declare function buildConfirmDelete(): ScreenContent;
8
+ export declare function buildAddNameInput(): ScreenContent;
9
+ export declare function buildAddKeyInput(): ScreenContent;
10
+ export declare function buildOAuthLoginScreen(): ScreenContent;
11
+ export declare function buildRenameInput(): ScreenContent;
12
+ export declare function buildExportPathInput(): ScreenContent;
13
+ export declare function buildImportPathInput(): ScreenContent;
14
+ export declare function buildConfirmImport(): ScreenContent;
15
+ export declare function buildFallbackMenu(): ScreenContent;
16
+ export declare function buildFallbackSettings(): ScreenContent;
17
+ export declare function buildFallbackChain(): ScreenContent;
18
+ export declare function getFilteredModelsForSelector(): Array<{
19
+ id: string;
20
+ name: string;
21
+ }>;
22
+ export declare function buildModelSelector(): ScreenContent;
23
+ //# sourceMappingURL=screens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../../src/tui/screens.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAC;AAoCrF,wBAAgB,iBAAiB,IAAI,aAAa,CA2CjD;AAgBD,wBAAgB,aAAa,IAAI,aAAa,CAyF7C;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAuChD;AAMD,wBAAgB,eAAe,IAAI,aAAa,CA+C/C;AAMD,wBAAgB,kBAAkB,IAAI,aAAa,CA+DlD;AAMD,wBAAgB,kBAAkB,IAAI,aAAa,CAwClD;AAMD,wBAAgB,iBAAiB,IAAI,aAAa,CA4BjD;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAyChD;AAMD,wBAAgB,qBAAqB,IAAI,aAAa,CAiDrD;AAMD,wBAAgB,gBAAgB,IAAI,aAAa,CAuChD;AAMD,wBAAgB,oBAAoB,IAAI,aAAa,CA4BpD;AAMD,wBAAgB,oBAAoB,IAAI,aAAa,CAiDpD;AAMD,wBAAgB,kBAAkB,IAAI,aAAa,CA6BlD;AAMD,wBAAgB,iBAAiB,IAAI,aAAa,CAkCjD;AAMD,wBAAgB,qBAAqB,IAAI,aAAa,CAmDrD;AAiBD,wBAAgB,kBAAkB,IAAI,aAAa,CAuHlD;AAMD,wBAAgB,4BAA4B,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAYlF;AAED,wBAAgB,kBAAkB,IAAI,aAAa,CA4GlD"}