opencode-puter-auth 1.0.1 → 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.
- package/README.md +29 -3
- package/dist/ai-provider/index.d.ts +28 -0
- package/dist/ai-provider/index.d.ts.map +1 -0
- package/dist/ai-provider/index.js +28 -0
- package/dist/ai-provider/index.js.map +1 -0
- package/dist/ai-provider/puter-chat-language-model.d.ts +53 -0
- package/dist/ai-provider/puter-chat-language-model.d.ts.map +1 -0
- package/dist/ai-provider/puter-chat-language-model.js +405 -0
- package/dist/ai-provider/puter-chat-language-model.js.map +1 -0
- package/dist/ai-provider/puter-chat-settings.d.ts +106 -0
- package/dist/ai-provider/puter-chat-settings.d.ts.map +1 -0
- package/dist/ai-provider/puter-chat-settings.js +7 -0
- package/dist/ai-provider/puter-chat-settings.js.map +1 -0
- package/dist/ai-provider/puter-provider.d.ts +58 -0
- package/dist/ai-provider/puter-provider.d.ts.map +1 -0
- package/dist/ai-provider/puter-provider.js +149 -0
- package/dist/ai-provider/puter-provider.js.map +1 -0
- package/dist/client.d.ts +71 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +159 -66
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +18 -4
- package/dist/plugin.js.map +1 -1
- package/dist/provider.d.ts +228 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +611 -0
- package/dist/provider.js.map +1 -0
- package/dist/retry.d.ts +103 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +175 -0
- package/dist/retry.js.map +1 -0
- package/package.json +3 -1
package/dist/client.js
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Puter API Client
|
|
3
3
|
*
|
|
4
|
-
* Handles all communication with Puter.com's AI API
|
|
4
|
+
* Handles all communication with Puter.com's AI API.
|
|
5
|
+
* Includes automatic retry with exponential backoff for transient failures.
|
|
5
6
|
*/
|
|
7
|
+
import { withRetry } from './retry.js';
|
|
6
8
|
const DEFAULT_API_URL = 'https://api.puter.com';
|
|
7
9
|
const DEFAULT_TIMEOUT = 120000;
|
|
10
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
11
|
+
const DEFAULT_RETRY_DELAY = 1000;
|
|
8
12
|
export class PuterClient {
|
|
9
13
|
authToken;
|
|
10
14
|
config;
|
|
15
|
+
debug;
|
|
11
16
|
constructor(authToken, config = {}) {
|
|
12
17
|
this.authToken = authToken;
|
|
13
18
|
this.config = config;
|
|
19
|
+
this.debug = config.debug ?? false;
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
16
22
|
* Get the API base URL
|
|
@@ -24,6 +30,20 @@ export class PuterClient {
|
|
|
24
30
|
get timeout() {
|
|
25
31
|
return this.config.api_timeout_ms || DEFAULT_TIMEOUT;
|
|
26
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Get retry options from config
|
|
35
|
+
*/
|
|
36
|
+
get retryOptions() {
|
|
37
|
+
return {
|
|
38
|
+
maxRetries: this.config.max_retries ?? DEFAULT_MAX_RETRIES,
|
|
39
|
+
initialDelay: this.config.retry_delay_ms ?? DEFAULT_RETRY_DELAY,
|
|
40
|
+
onRetry: this.debug
|
|
41
|
+
? (attempt, error, delay) => {
|
|
42
|
+
console.warn(`[PuterClient] Retry ${attempt}: ${error.message} (waiting ${delay}ms)`);
|
|
43
|
+
}
|
|
44
|
+
: undefined,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
27
47
|
/**
|
|
28
48
|
* Update the auth token
|
|
29
49
|
*/
|
|
@@ -32,6 +52,22 @@ export class PuterClient {
|
|
|
32
52
|
}
|
|
33
53
|
/**
|
|
34
54
|
* Send a chat completion request (non-streaming)
|
|
55
|
+
*
|
|
56
|
+
* Automatically retries on transient failures (rate limits, server errors)
|
|
57
|
+
* using exponential backoff with jitter.
|
|
58
|
+
*
|
|
59
|
+
* @param messages - Array of chat messages
|
|
60
|
+
* @param options - Chat options (model, temperature, etc.)
|
|
61
|
+
* @returns Chat response with assistant message
|
|
62
|
+
* @throws Error if request fails after all retries
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* const response = await client.chat([
|
|
67
|
+
* { role: 'user', content: 'Hello!' }
|
|
68
|
+
* ], { model: 'claude-opus-4-5' });
|
|
69
|
+
* console.log(response.message.content);
|
|
70
|
+
* ```
|
|
35
71
|
*/
|
|
36
72
|
async chat(messages, options = {}) {
|
|
37
73
|
const response = await this.makeRequest('complete', {
|
|
@@ -46,36 +82,56 @@ export class PuterClient {
|
|
|
46
82
|
}
|
|
47
83
|
/**
|
|
48
84
|
* Send a streaming chat completion request
|
|
85
|
+
*
|
|
86
|
+
* Returns an async generator that yields chunks as they arrive.
|
|
87
|
+
* The initial connection is retried on transient failures.
|
|
88
|
+
*
|
|
89
|
+
* @param messages - Array of chat messages
|
|
90
|
+
* @param options - Chat options (model, temperature, etc.)
|
|
91
|
+
* @yields Chat stream chunks with text, reasoning, or tool calls
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* for await (const chunk of client.chatStream([
|
|
96
|
+
* { role: 'user', content: 'Tell me a story' }
|
|
97
|
+
* ])) {
|
|
98
|
+
* if (chunk.text) process.stdout.write(chunk.text);
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
49
101
|
*/
|
|
50
102
|
async *chatStream(messages, options = {}) {
|
|
51
103
|
const controller = new AbortController();
|
|
52
104
|
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
53
105
|
try {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
interface: 'puter-chat-completion',
|
|
61
|
-
service: 'ai-chat',
|
|
62
|
-
method: 'complete',
|
|
63
|
-
args: {
|
|
64
|
-
messages,
|
|
65
|
-
model: options.model || 'gpt-5-nano',
|
|
66
|
-
stream: true,
|
|
67
|
-
max_tokens: options.max_tokens,
|
|
68
|
-
temperature: options.temperature,
|
|
69
|
-
tools: options.tools,
|
|
106
|
+
// Retry the initial connection
|
|
107
|
+
const response = await withRetry(async () => {
|
|
108
|
+
const res = await fetch(`${this.apiUrl}/drivers/call`, {
|
|
109
|
+
method: 'POST',
|
|
110
|
+
headers: {
|
|
111
|
+
'Content-Type': 'application/json',
|
|
70
112
|
},
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
113
|
+
body: JSON.stringify({
|
|
114
|
+
interface: 'puter-chat-completion',
|
|
115
|
+
service: 'ai-chat',
|
|
116
|
+
method: 'complete',
|
|
117
|
+
args: {
|
|
118
|
+
messages,
|
|
119
|
+
model: options.model || 'gpt-5-nano',
|
|
120
|
+
stream: true,
|
|
121
|
+
max_tokens: options.max_tokens,
|
|
122
|
+
temperature: options.temperature,
|
|
123
|
+
tools: options.tools,
|
|
124
|
+
},
|
|
125
|
+
auth_token: this.authToken,
|
|
126
|
+
}),
|
|
127
|
+
signal: controller.signal,
|
|
128
|
+
});
|
|
129
|
+
if (!res.ok) {
|
|
130
|
+
const errorText = await res.text();
|
|
131
|
+
throw new Error(`Puter API error (${res.status}): ${errorText}`);
|
|
132
|
+
}
|
|
133
|
+
return res;
|
|
134
|
+
}, this.retryOptions);
|
|
79
135
|
if (!response.body) {
|
|
80
136
|
throw new Error('No response body for streaming');
|
|
81
137
|
}
|
|
@@ -121,24 +177,39 @@ export class PuterClient {
|
|
|
121
177
|
}
|
|
122
178
|
}
|
|
123
179
|
/**
|
|
124
|
-
* List available models
|
|
180
|
+
* List available models from Puter API
|
|
181
|
+
*
|
|
182
|
+
* Falls back to a default model list if the API is unavailable.
|
|
183
|
+
*
|
|
184
|
+
* @returns Array of available model information
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const models = await client.listModels();
|
|
189
|
+
* models.forEach(m => console.log(`${m.id}: ${m.name}`));
|
|
190
|
+
* ```
|
|
125
191
|
*/
|
|
126
192
|
async listModels() {
|
|
127
193
|
try {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
194
|
+
return await withRetry(async () => {
|
|
195
|
+
const response = await fetch(`${this.apiUrl}/puterai/chat/models/details`, {
|
|
196
|
+
method: 'GET',
|
|
197
|
+
headers: {
|
|
198
|
+
'Authorization': `Bearer ${this.authToken}`,
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
if (!response.ok) {
|
|
202
|
+
throw new Error(`Failed to fetch models (${response.status})`);
|
|
203
|
+
}
|
|
204
|
+
const data = await response.json();
|
|
205
|
+
return data.models || data || [];
|
|
206
|
+
}, this.retryOptions);
|
|
139
207
|
}
|
|
140
|
-
catch
|
|
141
|
-
// Return default models if API fails
|
|
208
|
+
catch {
|
|
209
|
+
// Return default models if API fails after retries
|
|
210
|
+
if (this.debug) {
|
|
211
|
+
console.warn('[PuterClient] Failed to fetch models, using defaults');
|
|
212
|
+
}
|
|
142
213
|
return this.getDefaultModels();
|
|
143
214
|
}
|
|
144
215
|
}
|
|
@@ -164,38 +235,60 @@ export class PuterClient {
|
|
|
164
235
|
}
|
|
165
236
|
/**
|
|
166
237
|
* Make a generic API request to the drivers endpoint
|
|
238
|
+
*
|
|
239
|
+
* Includes automatic retry with exponential backoff for transient failures.
|
|
240
|
+
*
|
|
241
|
+
* @param method - API method to call
|
|
242
|
+
* @param args - Arguments to pass to the method
|
|
243
|
+
* @returns API response
|
|
244
|
+
* @throws Error if request fails after all retries
|
|
167
245
|
*/
|
|
168
246
|
async makeRequest(method, args) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
247
|
+
return withRetry(async () => {
|
|
248
|
+
const controller = new AbortController();
|
|
249
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
250
|
+
try {
|
|
251
|
+
const response = await fetch(`${this.apiUrl}/drivers/call`, {
|
|
252
|
+
method: 'POST',
|
|
253
|
+
headers: {
|
|
254
|
+
'Content-Type': 'application/json',
|
|
255
|
+
},
|
|
256
|
+
body: JSON.stringify({
|
|
257
|
+
interface: 'puter-chat-completion',
|
|
258
|
+
service: 'ai-chat',
|
|
259
|
+
method,
|
|
260
|
+
args,
|
|
261
|
+
auth_token: this.authToken,
|
|
262
|
+
}),
|
|
263
|
+
signal: controller.signal,
|
|
264
|
+
});
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
const errorText = await response.text();
|
|
267
|
+
throw new Error(`Puter API error (${response.status}): ${errorText}`);
|
|
268
|
+
}
|
|
269
|
+
const data = await response.json();
|
|
270
|
+
return data;
|
|
189
271
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
clearTimeout(timeoutId);
|
|
195
|
-
}
|
|
272
|
+
finally {
|
|
273
|
+
clearTimeout(timeoutId);
|
|
274
|
+
}
|
|
275
|
+
}, this.retryOptions);
|
|
196
276
|
}
|
|
197
277
|
/**
|
|
198
|
-
* Test the connection and auth token
|
|
278
|
+
* Test the connection and auth token validity
|
|
279
|
+
*
|
|
280
|
+
* Makes a minimal API call to verify the token works.
|
|
281
|
+
*
|
|
282
|
+
* @returns true if connection is successful, false otherwise
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```ts
|
|
286
|
+
* if (await client.testConnection()) {
|
|
287
|
+
* console.log('Connected to Puter!');
|
|
288
|
+
* } else {
|
|
289
|
+
* console.log('Connection failed');
|
|
290
|
+
* }
|
|
291
|
+
* ```
|
|
199
292
|
*/
|
|
200
293
|
async testConnection() {
|
|
201
294
|
try {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,5 +8,9 @@
|
|
|
8
8
|
* @license MIT
|
|
9
9
|
*/
|
|
10
10
|
export { PuterAuthPlugin } from './plugin.js';
|
|
11
|
+
export { createPuter, puter } from './ai-provider/index.js';
|
|
12
|
+
export type { PuterProvider } from './ai-provider/index.js';
|
|
13
|
+
export { PuterChatLanguageModel } from './ai-provider/index.js';
|
|
14
|
+
export type { PuterChatSettings, PuterProviderConfig, PuterChatConfig } from './ai-provider/index.js';
|
|
11
15
|
export type { PuterConfig, PuterAccount, PuterChatOptions, PuterChatResponse, PuterChatMessage, PuterChatStreamChunk, PuterModelInfo } from './types.js';
|
|
12
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGtG,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,4 +12,8 @@
|
|
|
12
12
|
// OpenCode's plugin loader calls all exports as functions, so exporting
|
|
13
13
|
// classes (PuterClient, PuterAuthManager) causes "cannot call class without new" errors.
|
|
14
14
|
export { PuterAuthPlugin } from './plugin.js';
|
|
15
|
+
// AI SDK Provider exports
|
|
16
|
+
// These enable Puter to work as a proper AI SDK provider
|
|
17
|
+
export { createPuter, puter } from './ai-provider/index.js';
|
|
18
|
+
export { PuterChatLanguageModel } from './ai-provider/index.js';
|
|
15
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kDAAkD;AAClD,2DAA2D;AAC3D,wEAAwE;AACxE,yFAAyF;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kDAAkD;AAClD,2DAA2D;AAC3D,wEAAwE;AACxE,yFAAyF;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,0BAA0B;AAC1B,yDAAyD;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;AAwDtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAqS7B,CAAC"}
|
package/dist/plugin.js
CHANGED
|
@@ -14,6 +14,7 @@ import http from 'node:http';
|
|
|
14
14
|
import { URL } from 'node:url';
|
|
15
15
|
import { PuterClient } from './client.js';
|
|
16
16
|
import { PuterAuthManager } from './auth.js';
|
|
17
|
+
import { createPuterFetch } from './provider.js';
|
|
17
18
|
import { PuterConfigSchema } from './types.js';
|
|
18
19
|
// Default config directory
|
|
19
20
|
const getConfigDir = () => {
|
|
@@ -75,15 +76,28 @@ export const PuterAuthPlugin = async (_input) => {
|
|
|
75
76
|
// AUTH HOOK - OAuth with Puter
|
|
76
77
|
// ========================================
|
|
77
78
|
auth: {
|
|
79
|
+
// Use 'puter' as a standalone provider
|
|
80
|
+
// This registers Puter as its own provider in OpenCode's model picker
|
|
81
|
+
// The custom fetch intercepts all requests and routes them to Puter's API
|
|
82
|
+
// with proper request/response translation (OpenAI-compatible format)
|
|
78
83
|
provider: 'puter',
|
|
79
84
|
// Load auth credentials for Puter provider
|
|
80
|
-
async loader(_auth,
|
|
85
|
+
async loader(_auth, provider) {
|
|
81
86
|
const account = authManager?.getActiveAccount();
|
|
82
87
|
if (account) {
|
|
88
|
+
// Set all Puter models as FREE (cost = 0)
|
|
89
|
+
if (provider?.models) {
|
|
90
|
+
for (const model of Object.values(provider.models)) {
|
|
91
|
+
model.cost = { input: 0, output: 0, cache: { read: 0, write: 0 } };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Return custom fetch function that intercepts and transforms requests
|
|
95
|
+
// This enables Puter to work as a provider in OpenCode's model picker
|
|
96
|
+
// Using localhost as fake baseURL that gets intercepted by custom fetch
|
|
83
97
|
return {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
98
|
+
apiKey: account.authToken, // Real auth token for debugging
|
|
99
|
+
baseURL: 'http://localhost:8080', // Fake localhost URL intercepted by custom fetch
|
|
100
|
+
fetch: createPuterFetch(account.authToken, pluginConfig),
|
|
87
101
|
};
|
|
88
102
|
}
|
|
89
103
|
return {};
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|