opencode-puter-auth 1.0.2 → 1.0.3

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,611 @@
1
+ /**
2
+ * Puter Provider Integration
3
+ *
4
+ * This module provides two transformation paths:
5
+ *
6
+ * 1. Google Generative Language API format (for google provider integration)
7
+ * - Used when Puter models are configured under provider.google
8
+ * - Transforms Google's format to Puter's format
9
+ *
10
+ * 2. OpenAI-compatible format (for standalone puter provider)
11
+ * - Used when Puter is configured as a separate provider with @ai-sdk/openai-compatible
12
+ * - Transforms OpenAI's format to Puter's format
13
+ *
14
+ * The custom fetch function intercepts requests and routes them to Puter's API.
15
+ */
16
+ const PUTER_API_URL = 'https://api.puter.com';
17
+ // Puter model prefix - models starting with this are routed to Puter
18
+ const PUTER_MODEL_PREFIX = 'puter-';
19
+ // Fake Puter API endpoint that we intercept
20
+ const PUTER_LOCAL_API = 'localhost:8080';
21
+ /**
22
+ * Check if a request is targeting the Puter provider
23
+ */
24
+ export function isPuterRequest(input) {
25
+ const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
26
+ // Check for localhost:8080 fake endpoint (OpenAI-compatible format)
27
+ if (url.includes(PUTER_LOCAL_API)) {
28
+ return true;
29
+ }
30
+ // Check for puter- prefix in Google API format
31
+ if (url.includes(`/models/${PUTER_MODEL_PREFIX}`)) {
32
+ return true;
33
+ }
34
+ return false;
35
+ }
36
+ /**
37
+ * Check if the request is using OpenAI format (vs Google format)
38
+ */
39
+ export function isOpenAIFormat(url) {
40
+ return url.includes('/chat/completions') || url.includes(PUTER_LOCAL_API);
41
+ }
42
+ /**
43
+ * Extract model ID from the request URL
44
+ */
45
+ export function extractModelFromUrl(url) {
46
+ // OpenAI format: model is in the request body, not URL
47
+ // Google format: .../models/puter-claude-opus-4-5:generateContent
48
+ const match = url.match(/\/models\/([^:\/]+)/);
49
+ const modelWithPrefix = match?.[1] || 'puter-claude-opus-4-5';
50
+ // Strip the puter- prefix to get the actual Puter model name
51
+ return modelWithPrefix.startsWith(PUTER_MODEL_PREFIX)
52
+ ? modelWithPrefix.slice(PUTER_MODEL_PREFIX.length)
53
+ : modelWithPrefix;
54
+ }
55
+ /**
56
+ * Check if the request is for streaming
57
+ */
58
+ export function isStreamingRequest(url) {
59
+ return url.includes('streamGenerateContent') || url.includes('alt=sse');
60
+ }
61
+ // ============================================================================
62
+ // OpenAI Format Transformations
63
+ // ============================================================================
64
+ /**
65
+ * Transform OpenAI chat completion request to Puter format
66
+ */
67
+ export function transformOpenAIToPuter(body, authToken) {
68
+ // Strip puter- prefix from model name if present
69
+ const model = body.model?.startsWith(PUTER_MODEL_PREFIX)
70
+ ? body.model.slice(PUTER_MODEL_PREFIX.length)
71
+ : body.model || 'claude-opus-4-5';
72
+ // Transform messages
73
+ const messages = body.messages?.map(msg => {
74
+ if (msg.role === 'tool') {
75
+ return {
76
+ role: 'tool',
77
+ content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
78
+ tool_call_id: msg.tool_call_id,
79
+ };
80
+ }
81
+ if (msg.role === 'assistant' && msg.tool_calls) {
82
+ return {
83
+ role: 'assistant',
84
+ content: typeof msg.content === 'string' ? msg.content : '',
85
+ tool_calls: msg.tool_calls.map(tc => ({
86
+ id: tc.id,
87
+ type: 'function',
88
+ function: {
89
+ name: tc.function.name,
90
+ arguments: tc.function.arguments,
91
+ },
92
+ })),
93
+ };
94
+ }
95
+ return {
96
+ role: msg.role,
97
+ content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
98
+ };
99
+ }) || [];
100
+ // Transform tools
101
+ let tools;
102
+ if (body.tools && body.tools.length > 0) {
103
+ tools = body.tools.map(tool => ({
104
+ type: 'function',
105
+ function: {
106
+ name: tool.function.name,
107
+ description: tool.function.description || '',
108
+ parameters: tool.function.parameters || { type: 'object', properties: {} },
109
+ },
110
+ }));
111
+ }
112
+ return {
113
+ interface: 'puter-chat-completion',
114
+ service: 'ai-chat',
115
+ method: 'complete',
116
+ args: {
117
+ messages,
118
+ model,
119
+ stream: body.stream || false,
120
+ max_tokens: body.max_tokens,
121
+ temperature: body.temperature,
122
+ tools,
123
+ },
124
+ auth_token: authToken,
125
+ };
126
+ }
127
+ /**
128
+ * Transform Puter response to OpenAI chat completion format
129
+ */
130
+ export function transformPuterToOpenAI(puterResponse) {
131
+ const message = puterResponse.message;
132
+ return {
133
+ id: `chatcmpl-${Date.now()}`,
134
+ object: 'chat.completion',
135
+ created: Math.floor(Date.now() / 1000),
136
+ model: 'puter',
137
+ choices: [{
138
+ index: 0,
139
+ message: {
140
+ role: 'assistant',
141
+ content: message?.content || null,
142
+ tool_calls: message?.tool_calls?.map(tc => ({
143
+ id: tc.id,
144
+ type: 'function',
145
+ function: {
146
+ name: tc.function.name,
147
+ arguments: tc.function.arguments,
148
+ },
149
+ })),
150
+ },
151
+ finish_reason: mapFinishReason(puterResponse.finish_reason),
152
+ }],
153
+ usage: puterResponse.usage ? {
154
+ prompt_tokens: puterResponse.usage.prompt_tokens,
155
+ completion_tokens: puterResponse.usage.completion_tokens,
156
+ total_tokens: puterResponse.usage.total_tokens,
157
+ } : undefined,
158
+ };
159
+ }
160
+ /**
161
+ * Transform Puter stream chunk to OpenAI SSE format
162
+ */
163
+ export function transformPuterStreamToOpenAI(chunk) {
164
+ const delta = {};
165
+ if (chunk.text) {
166
+ delta.content = chunk.text;
167
+ }
168
+ if (chunk.reasoning) {
169
+ // Include reasoning as a special field (some clients support this)
170
+ delta.content = (delta.content || '') + chunk.reasoning;
171
+ }
172
+ if (chunk.tool_calls && chunk.tool_calls.length > 0) {
173
+ delta.tool_calls = chunk.tool_calls.map((tc, idx) => ({
174
+ index: idx,
175
+ id: tc.id,
176
+ type: 'function',
177
+ function: {
178
+ name: tc.function.name,
179
+ arguments: tc.function.arguments,
180
+ },
181
+ }));
182
+ }
183
+ const response = {
184
+ id: `chatcmpl-${Date.now()}`,
185
+ object: 'chat.completion.chunk',
186
+ created: Math.floor(Date.now() / 1000),
187
+ model: 'puter',
188
+ choices: [{
189
+ index: 0,
190
+ delta,
191
+ finish_reason: chunk.done || chunk.finish_reason ? mapFinishReason(chunk.finish_reason) : null,
192
+ }],
193
+ };
194
+ return `data: ${JSON.stringify(response)}\n\n`;
195
+ }
196
+ function mapFinishReason(reason) {
197
+ if (!reason)
198
+ return null;
199
+ if (reason === 'tool_calls')
200
+ return 'tool_calls';
201
+ if (reason === 'length')
202
+ return 'length';
203
+ return 'stop';
204
+ }
205
+ // ============================================================================
206
+ // Google Format Transformations (for backward compatibility)
207
+ // ============================================================================
208
+ /**
209
+ * Transform Google Generative Language API content to Puter message format
210
+ */
211
+ function transformContentToPuterMessage(content) {
212
+ const role = content.role === 'model' ? 'assistant' : content.role;
213
+ if (Array.isArray(content.parts)) {
214
+ const textParts = content.parts
215
+ .filter((p) => 'text' in p && typeof p.text === 'string')
216
+ .map(p => p.text);
217
+ const functionCalls = content.parts
218
+ .filter((p) => 'functionCall' in p);
219
+ const functionResponses = content.parts
220
+ .filter((p) => 'functionResponse' in p);
221
+ if (functionCalls.length > 0) {
222
+ return {
223
+ role: 'assistant',
224
+ content: textParts.join('\n') || '',
225
+ tool_calls: functionCalls.map((fc, idx) => ({
226
+ id: `call_${idx}`,
227
+ type: 'function',
228
+ function: {
229
+ name: fc.functionCall.name,
230
+ arguments: JSON.stringify(fc.functionCall.args),
231
+ },
232
+ })),
233
+ };
234
+ }
235
+ if (functionResponses.length > 0) {
236
+ const fr = functionResponses[0];
237
+ return {
238
+ role: 'tool',
239
+ content: typeof fr.functionResponse.response === 'string'
240
+ ? fr.functionResponse.response
241
+ : JSON.stringify(fr.functionResponse.response),
242
+ tool_call_id: fr.functionResponse.id || `call_0`,
243
+ };
244
+ }
245
+ return {
246
+ role,
247
+ content: textParts.join('\n'),
248
+ };
249
+ }
250
+ return {
251
+ role,
252
+ content: '',
253
+ };
254
+ }
255
+ /**
256
+ * Transform Google Generative Language API request body to Puter format
257
+ */
258
+ export function transformRequestToPuter(body, model, streaming, authToken) {
259
+ const messages = [];
260
+ // Add system instruction if present
261
+ if (body.systemInstruction) {
262
+ const systemText = typeof body.systemInstruction === 'string'
263
+ ? body.systemInstruction
264
+ : body.systemInstruction.parts?.map(p => p.text).join('\n') || '';
265
+ if (systemText) {
266
+ messages.push({
267
+ role: 'system',
268
+ content: systemText,
269
+ });
270
+ }
271
+ }
272
+ // Transform contents
273
+ if (body.contents) {
274
+ for (const content of body.contents) {
275
+ messages.push(transformContentToPuterMessage(content));
276
+ }
277
+ }
278
+ // Transform tools
279
+ let tools;
280
+ if (body.tools && body.tools.length > 0) {
281
+ tools = [];
282
+ for (const tool of body.tools) {
283
+ if (tool.functionDeclarations) {
284
+ for (const fn of tool.functionDeclarations) {
285
+ tools.push({
286
+ type: 'function',
287
+ function: {
288
+ name: fn.name,
289
+ description: fn.description || '',
290
+ parameters: fn.parameters || { type: 'object', properties: {} },
291
+ },
292
+ });
293
+ }
294
+ }
295
+ }
296
+ }
297
+ return {
298
+ interface: 'puter-chat-completion',
299
+ service: 'ai-chat',
300
+ method: 'complete',
301
+ args: {
302
+ messages,
303
+ model,
304
+ stream: streaming,
305
+ max_tokens: body.generationConfig?.maxOutputTokens,
306
+ temperature: body.generationConfig?.temperature,
307
+ tools,
308
+ },
309
+ auth_token: authToken,
310
+ };
311
+ }
312
+ /**
313
+ * Transform Puter response to Google Generative Language API format
314
+ */
315
+ export function transformPuterResponseToGoogle(puterResponse) {
316
+ const content = puterResponse.message?.content || '';
317
+ const toolCalls = puterResponse.message?.tool_calls;
318
+ const parts = [];
319
+ if (content) {
320
+ parts.push({ text: content });
321
+ }
322
+ if (toolCalls && toolCalls.length > 0) {
323
+ for (const tc of toolCalls) {
324
+ parts.push({
325
+ functionCall: {
326
+ name: tc.function.name,
327
+ args: JSON.parse(tc.function.arguments),
328
+ },
329
+ });
330
+ }
331
+ }
332
+ let finishReason = 'STOP';
333
+ if (puterResponse.finish_reason === 'tool_calls') {
334
+ finishReason = 'TOOL_CALLS';
335
+ }
336
+ else if (puterResponse.finish_reason === 'length') {
337
+ finishReason = 'MAX_TOKENS';
338
+ }
339
+ return {
340
+ candidates: [{
341
+ content: {
342
+ role: 'model',
343
+ parts,
344
+ },
345
+ finishReason,
346
+ index: 0,
347
+ }],
348
+ usageMetadata: puterResponse.usage ? {
349
+ promptTokenCount: puterResponse.usage.prompt_tokens,
350
+ candidatesTokenCount: puterResponse.usage.completion_tokens,
351
+ totalTokenCount: puterResponse.usage.total_tokens,
352
+ } : undefined,
353
+ };
354
+ }
355
+ /**
356
+ * Transform a Puter streaming chunk to Google SSE format
357
+ */
358
+ export function transformPuterStreamChunkToGoogle(chunk) {
359
+ const parts = [];
360
+ if (chunk.text) {
361
+ parts.push({ text: chunk.text });
362
+ }
363
+ if (chunk.reasoning) {
364
+ parts.push({
365
+ thought: true,
366
+ text: chunk.reasoning,
367
+ });
368
+ }
369
+ if (chunk.tool_calls && chunk.tool_calls.length > 0) {
370
+ for (const tc of chunk.tool_calls) {
371
+ parts.push({
372
+ functionCall: {
373
+ name: tc.function.name,
374
+ args: JSON.parse(tc.function.arguments),
375
+ },
376
+ });
377
+ }
378
+ }
379
+ let finishReason;
380
+ if (chunk.done || chunk.finish_reason) {
381
+ finishReason = chunk.finish_reason === 'tool_calls' ? 'TOOL_CALLS' : 'STOP';
382
+ }
383
+ const response = {
384
+ candidates: [{
385
+ content: {
386
+ role: 'model',
387
+ parts,
388
+ },
389
+ finishReason,
390
+ index: 0,
391
+ }],
392
+ };
393
+ return `data: ${JSON.stringify(response)}\n\n`;
394
+ }
395
+ // ============================================================================
396
+ // Request Handler
397
+ // ============================================================================
398
+ /**
399
+ * Make a request to Puter API and return transformed response
400
+ */
401
+ export async function makePuterRequest(input, init, authToken, config = {}) {
402
+ const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
403
+ const useOpenAIFormat = isOpenAIFormat(url);
404
+ let puterBody;
405
+ let streaming = false;
406
+ if (useOpenAIFormat) {
407
+ // Parse OpenAI format request
408
+ let openaiBody = {};
409
+ if (init?.body) {
410
+ try {
411
+ openaiBody = JSON.parse(init.body);
412
+ }
413
+ catch {
414
+ // If parsing fails, use empty body
415
+ }
416
+ }
417
+ streaming = openaiBody.stream || false;
418
+ puterBody = transformOpenAIToPuter(openaiBody, authToken);
419
+ }
420
+ else {
421
+ // Parse Google format request
422
+ const model = extractModelFromUrl(url);
423
+ streaming = isStreamingRequest(url);
424
+ let googleBody = {};
425
+ if (init?.body) {
426
+ try {
427
+ googleBody = JSON.parse(init.body);
428
+ }
429
+ catch {
430
+ // If parsing fails, use empty body
431
+ }
432
+ }
433
+ puterBody = transformRequestToPuter(googleBody, model, streaming, authToken);
434
+ }
435
+ const apiUrl = config.api_base_url || PUTER_API_URL;
436
+ const timeout = config.api_timeout_ms || 120000;
437
+ const controller = new AbortController();
438
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
439
+ try {
440
+ const response = await fetch(`${apiUrl}/drivers/call`, {
441
+ method: 'POST',
442
+ headers: {
443
+ 'Content-Type': 'application/json',
444
+ },
445
+ body: JSON.stringify(puterBody),
446
+ signal: controller.signal,
447
+ });
448
+ clearTimeout(timeoutId);
449
+ if (!response.ok) {
450
+ const errorText = await response.text();
451
+ if (useOpenAIFormat) {
452
+ return new Response(JSON.stringify({
453
+ error: {
454
+ message: `Puter API error: ${errorText}`,
455
+ type: response.status >= 500 ? 'server_error' : 'invalid_request_error',
456
+ code: response.status,
457
+ },
458
+ }), {
459
+ status: response.status,
460
+ headers: { 'Content-Type': 'application/json' },
461
+ });
462
+ }
463
+ else {
464
+ return new Response(JSON.stringify({
465
+ error: {
466
+ code: response.status,
467
+ message: `Puter API error: ${errorText}`,
468
+ status: response.status >= 500 ? 'INTERNAL' : 'INVALID_ARGUMENT',
469
+ },
470
+ }), {
471
+ status: response.status,
472
+ headers: { 'Content-Type': 'application/json' },
473
+ });
474
+ }
475
+ }
476
+ if (streaming) {
477
+ return handleStreamingResponse(response, useOpenAIFormat);
478
+ }
479
+ else {
480
+ const puterResponse = await response.json();
481
+ if (useOpenAIFormat) {
482
+ const openaiResponse = transformPuterToOpenAI(puterResponse.result);
483
+ return new Response(JSON.stringify(openaiResponse), {
484
+ status: 200,
485
+ headers: { 'Content-Type': 'application/json' },
486
+ });
487
+ }
488
+ else {
489
+ const googleResponse = transformPuterResponseToGoogle(puterResponse.result);
490
+ return new Response(JSON.stringify(googleResponse), {
491
+ status: 200,
492
+ headers: { 'Content-Type': 'application/json' },
493
+ });
494
+ }
495
+ }
496
+ }
497
+ catch (error) {
498
+ clearTimeout(timeoutId);
499
+ const message = error instanceof Error ? error.message : 'Unknown error';
500
+ if (useOpenAIFormat) {
501
+ return new Response(JSON.stringify({
502
+ error: {
503
+ message: `Puter request failed: ${message}`,
504
+ type: 'server_error',
505
+ code: 500,
506
+ },
507
+ }), {
508
+ status: 500,
509
+ headers: { 'Content-Type': 'application/json' },
510
+ });
511
+ }
512
+ else {
513
+ return new Response(JSON.stringify({
514
+ error: {
515
+ code: 500,
516
+ message: `Puter request failed: ${message}`,
517
+ status: 'INTERNAL',
518
+ },
519
+ }), {
520
+ status: 500,
521
+ headers: { 'Content-Type': 'application/json' },
522
+ });
523
+ }
524
+ }
525
+ }
526
+ /**
527
+ * Handle streaming response from Puter
528
+ */
529
+ async function handleStreamingResponse(response, useOpenAIFormat) {
530
+ if (!response.body) {
531
+ return new Response('No response body', { status: 500 });
532
+ }
533
+ const decoder = new TextDecoder();
534
+ const encoder = new TextEncoder();
535
+ let buffer = '';
536
+ const transformStream = new TransformStream({
537
+ async transform(chunk, controller) {
538
+ buffer += decoder.decode(chunk, { stream: true });
539
+ const lines = buffer.split('\n');
540
+ buffer = lines.pop() || '';
541
+ for (const line of lines) {
542
+ if (!line.trim())
543
+ continue;
544
+ try {
545
+ const puterChunk = JSON.parse(line);
546
+ const transformedChunk = useOpenAIFormat
547
+ ? transformPuterStreamToOpenAI(puterChunk)
548
+ : transformPuterStreamChunkToGoogle(puterChunk);
549
+ controller.enqueue(encoder.encode(transformedChunk));
550
+ }
551
+ catch {
552
+ // Skip malformed lines
553
+ }
554
+ }
555
+ },
556
+ flush(controller) {
557
+ if (buffer.trim()) {
558
+ try {
559
+ const puterChunk = JSON.parse(buffer);
560
+ const transformedChunk = useOpenAIFormat
561
+ ? transformPuterStreamToOpenAI(puterChunk)
562
+ : transformPuterStreamChunkToGoogle(puterChunk);
563
+ controller.enqueue(encoder.encode(transformedChunk));
564
+ }
565
+ catch {
566
+ // Ignore
567
+ }
568
+ }
569
+ // Send [DONE] for OpenAI format
570
+ if (useOpenAIFormat) {
571
+ controller.enqueue(encoder.encode('data: [DONE]\n\n'));
572
+ }
573
+ },
574
+ });
575
+ const transformedBody = response.body.pipeThrough(transformStream);
576
+ return new Response(transformedBody, {
577
+ status: 200,
578
+ headers: {
579
+ 'Content-Type': 'text/event-stream',
580
+ 'Cache-Control': 'no-cache',
581
+ 'Connection': 'keep-alive',
582
+ },
583
+ });
584
+ }
585
+ // ============================================================================
586
+ // Custom Fetch Factory
587
+ // ============================================================================
588
+ /**
589
+ * Create a custom fetch function for Puter provider integration.
590
+ *
591
+ * This function intercepts requests to Puter endpoints and routes them
592
+ * through Puter's API with proper request/response transformation.
593
+ *
594
+ * Supports both OpenAI-compatible format (for standalone puter provider)
595
+ * and Google Generative Language API format (for google provider integration).
596
+ *
597
+ * @param authToken - The Puter authentication token
598
+ * @param config - Optional Puter configuration
599
+ * @returns A fetch function that can be used by OpenCode's AI SDK
600
+ */
601
+ export function createPuterFetch(authToken, config = {}) {
602
+ return async (input, init) => {
603
+ // Only intercept Puter requests, pass through everything else
604
+ if (!isPuterRequest(input)) {
605
+ return fetch(input, init);
606
+ }
607
+ // Route through Puter API with transformation
608
+ return makePuterRequest(input, init, authToken, config);
609
+ };
610
+ }
611
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-puter-auth",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Puter.com OAuth auth plugin for OpenCode - FREE UNLIMITED access to Claude Opus 4.5, Sonnet 4.5, GPT-5, Gemini, and 500+ AI models",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -69,6 +69,8 @@
69
69
  "vitest": "^4.0.0"
70
70
  },
71
71
  "dependencies": {
72
+ "@ai-sdk/provider": "^3.0.3",
73
+ "@ai-sdk/provider-utils": "^4.0.7",
72
74
  "open": "^11.0.0",
73
75
  "xdg-basedir": "^5.1.0",
74
76
  "zod": "^4.3.5"