opencode-puter-auth 1.0.35 → 1.0.37
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 +24 -10
- package/dist/ai-provider/puter-chat-language-model.d.ts +4 -0
- package/dist/ai-provider/puter-chat-language-model.d.ts.map +1 -1
- package/dist/ai-provider/puter-chat-language-model.js +35 -4
- package/dist/ai-provider/puter-chat-language-model.js.map +1 -1
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +97 -9
- package/dist/cli.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -147,13 +147,25 @@ https://raw.githubusercontent.com/Mihai-Codes/opencode-puter-auth/main/README.md
|
|
|
147
147
|
2. **Authenticate with Puter:**
|
|
148
148
|
|
|
149
149
|
```bash
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
#
|
|
150
|
+
# Using the included CLI
|
|
151
|
+
npx opencode-puter-auth login
|
|
152
|
+
|
|
153
|
+
# Or if you have the plugin installed globally
|
|
154
|
+
puter-auth login
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
This opens a browser window for Puter.com login. Enter your Puter username and password.
|
|
158
|
+
|
|
159
|
+
> **Note:** Puter is a custom provider, so it won't appear in `opencode auth login`. Use the CLI above to authenticate.
|
|
160
|
+
|
|
161
|
+
3. **Verify authentication:**
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
puter-auth status
|
|
165
|
+
# Or: npx opencode-puter-auth status
|
|
154
166
|
```
|
|
155
167
|
|
|
156
|
-
|
|
168
|
+
4. **Use it:**
|
|
157
169
|
|
|
158
170
|
```bash
|
|
159
171
|
opencode --model=puter/claude-opus-4-5
|
|
@@ -331,15 +343,15 @@ If you were using the old configuration format that piggybacked on Google (`goog
|
|
|
331
343
|
|
|
332
344
|
4. **Re-authenticate:**
|
|
333
345
|
```bash
|
|
334
|
-
opencode
|
|
335
|
-
#
|
|
346
|
+
npx opencode-puter-auth login
|
|
347
|
+
# Or: puter-auth login
|
|
336
348
|
```
|
|
337
349
|
|
|
338
350
|
### Why the Change?
|
|
339
351
|
|
|
340
352
|
The new standalone provider offers:
|
|
341
353
|
- **Direct API access** - No routing through Google/Antigravity infrastructure
|
|
342
|
-
- **
|
|
354
|
+
- **Dedicated CLI** - Use `puter-auth login` for authentication
|
|
343
355
|
- **Better reliability** - Direct connection to Puter's API
|
|
344
356
|
- **Cleaner model names** - `puter/claude-opus-4-5` instead of `google/puter-claude-opus-4-5`
|
|
345
357
|
|
|
@@ -381,10 +393,12 @@ http://localhost:19847
|
|
|
381
393
|
### "Not authenticated" error
|
|
382
394
|
|
|
383
395
|
```bash
|
|
384
|
-
opencode
|
|
385
|
-
#
|
|
396
|
+
npx opencode-puter-auth login
|
|
397
|
+
# Or: puter-auth login
|
|
386
398
|
```
|
|
387
399
|
|
|
400
|
+
> **Note:** Puter is a custom provider and won't appear in `opencode auth login`. You must use the plugin's CLI.
|
|
401
|
+
|
|
388
402
|
### API timeout errors
|
|
389
403
|
|
|
390
404
|
Increase timeout in `puter.json`:
|
|
@@ -47,6 +47,10 @@ export declare class PuterChatLanguageModel implements LanguageModelV3 {
|
|
|
47
47
|
* Map Puter usage to AI SDK format.
|
|
48
48
|
*/
|
|
49
49
|
private mapUsage;
|
|
50
|
+
/**
|
|
51
|
+
* Extract text from response content (handles both string and array formats).
|
|
52
|
+
*/
|
|
53
|
+
private extractTextContent;
|
|
50
54
|
/**
|
|
51
55
|
* Non-streaming generation using Puter SDK.
|
|
52
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-chat-language-model.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAW5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"puter-chat-language-model.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,EAC7B,2BAA2B,EAW5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAiGnF;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,oBAAoB,EAAG,IAAI,CAAU;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAyB;gBAG5C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,eAAe;IAQzB;;OAEG;YACW,YAAY;IA0B1B;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAE5C;IAED;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4E/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAyD7F;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;CA2E1F"}
|
|
@@ -213,6 +213,23 @@ export class PuterChatLanguageModel {
|
|
|
213
213
|
},
|
|
214
214
|
};
|
|
215
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Extract text from response content (handles both string and array formats).
|
|
218
|
+
*/
|
|
219
|
+
extractTextContent(content) {
|
|
220
|
+
if (!content)
|
|
221
|
+
return '';
|
|
222
|
+
if (typeof content === 'string') {
|
|
223
|
+
return content;
|
|
224
|
+
}
|
|
225
|
+
if (Array.isArray(content)) {
|
|
226
|
+
return content
|
|
227
|
+
.filter((block) => block.type === 'text' && typeof block.text === 'string')
|
|
228
|
+
.map(block => block.text)
|
|
229
|
+
.join('');
|
|
230
|
+
}
|
|
231
|
+
return '';
|
|
232
|
+
}
|
|
216
233
|
/**
|
|
217
234
|
* Non-streaming generation using Puter SDK.
|
|
218
235
|
*/
|
|
@@ -223,14 +240,28 @@ export class PuterChatLanguageModel {
|
|
|
223
240
|
const warnings = [];
|
|
224
241
|
const response = await puter.ai.chat(messages, sdkOptions);
|
|
225
242
|
const content = [];
|
|
226
|
-
//
|
|
227
|
-
|
|
243
|
+
// Extract text content (handles both string and array formats)
|
|
244
|
+
const textContent = this.extractTextContent(response.message?.content);
|
|
245
|
+
if (textContent) {
|
|
228
246
|
content.push({
|
|
229
247
|
type: 'text',
|
|
230
|
-
text:
|
|
248
|
+
text: textContent,
|
|
231
249
|
});
|
|
232
250
|
}
|
|
233
|
-
//
|
|
251
|
+
// Handle tool use from Claude-style content blocks
|
|
252
|
+
if (Array.isArray(response.message?.content)) {
|
|
253
|
+
for (const block of response.message.content) {
|
|
254
|
+
if (block.type === 'tool_use' && block.id && block.name) {
|
|
255
|
+
content.push({
|
|
256
|
+
type: 'tool-call',
|
|
257
|
+
toolCallId: block.id,
|
|
258
|
+
toolName: block.name,
|
|
259
|
+
input: typeof block.input === 'string' ? block.input : JSON.stringify(block.input || {}),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Add tool calls from legacy format
|
|
234
265
|
if (response.message?.tool_calls) {
|
|
235
266
|
for (const tc of response.message.tool_calls) {
|
|
236
267
|
content.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puter-chat-language-model.js","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"puter-chat-language-model.js","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-language-model.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Puter Auth CLI for OpenCode
|
|
4
|
+
*
|
|
5
|
+
* Provides command-line authentication management for the Puter.com provider.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* puter-auth login - Authenticate with Puter.com
|
|
9
|
+
* puter-auth logout - Remove all stored credentials
|
|
10
|
+
* puter-auth status - Show current authentication status
|
|
11
|
+
* puter-auth --help - Show this help message
|
|
12
|
+
*/
|
|
2
13
|
export {};
|
|
3
14
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
|
package/dist/cli.js
CHANGED
|
@@ -1,17 +1,105 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Puter Auth CLI for OpenCode
|
|
4
|
+
*
|
|
5
|
+
* Provides command-line authentication management for the Puter.com provider.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* puter-auth login - Authenticate with Puter.com
|
|
9
|
+
* puter-auth logout - Remove all stored credentials
|
|
10
|
+
* puter-auth status - Show current authentication status
|
|
11
|
+
* puter-auth --help - Show this help message
|
|
12
|
+
*/
|
|
2
13
|
import { createPuterAuthManager } from './auth.js';
|
|
3
14
|
import { homedir } from 'os';
|
|
4
15
|
import { join } from 'path';
|
|
5
16
|
const configDir = join(homedir(), '.config', 'opencode');
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
const HELP = `
|
|
18
|
+
puter-auth - Puter.com Authentication for OpenCode
|
|
19
|
+
|
|
20
|
+
USAGE:
|
|
21
|
+
puter-auth <command>
|
|
22
|
+
|
|
23
|
+
COMMANDS:
|
|
24
|
+
login Authenticate with Puter.com (opens browser)
|
|
25
|
+
logout Remove all stored Puter credentials
|
|
26
|
+
status Show current authentication status
|
|
27
|
+
help Show this help message
|
|
28
|
+
|
|
29
|
+
EXAMPLES:
|
|
30
|
+
puter-auth login # Start browser authentication
|
|
31
|
+
puter-auth status # Check if authenticated
|
|
32
|
+
puter-auth logout # Clear credentials
|
|
33
|
+
|
|
34
|
+
After authenticating, use Puter models in OpenCode:
|
|
35
|
+
opencode -m puter/claude-sonnet-4-5 "Your prompt"
|
|
36
|
+
opencode models puter # List available models
|
|
37
|
+
|
|
38
|
+
For more info: https://github.com/Mihai-Codes/opencode-puter-auth
|
|
39
|
+
`;
|
|
40
|
+
async function main() {
|
|
41
|
+
const args = process.argv.slice(2);
|
|
42
|
+
const command = args[0]?.toLowerCase();
|
|
43
|
+
// Handle help
|
|
44
|
+
if (!command || command === 'help' || command === '--help' || command === '-h') {
|
|
45
|
+
console.log(HELP);
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
const authManager = createPuterAuthManager(configDir);
|
|
49
|
+
await authManager.init();
|
|
50
|
+
switch (command) {
|
|
51
|
+
case 'login': {
|
|
52
|
+
console.log('Starting Puter authentication...\n');
|
|
53
|
+
const result = await authManager.login();
|
|
54
|
+
if (result.success) {
|
|
55
|
+
console.log('\n✅ Authentication successful!');
|
|
56
|
+
console.log(` Account: ${result.account?.username}`);
|
|
57
|
+
console.log('\nYou can now use Puter models in OpenCode:');
|
|
58
|
+
console.log(' opencode -m puter/claude-sonnet-4-5 "Your prompt"');
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.error('\n❌ Authentication failed:', result.error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'logout': {
|
|
67
|
+
await authManager.logout();
|
|
68
|
+
console.log('✅ Logged out from Puter. All credentials removed.');
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case 'status': {
|
|
72
|
+
const accounts = authManager.getAllAccounts();
|
|
73
|
+
const active = authManager.getActiveAccount();
|
|
74
|
+
if (accounts.length === 0) {
|
|
75
|
+
console.log('❌ Not authenticated with Puter.');
|
|
76
|
+
console.log(' Run: puter-auth login');
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
console.log('✅ Puter Authentication Status\n');
|
|
80
|
+
console.log(`Active account: ${active?.username || 'none'}`);
|
|
81
|
+
console.log(`Total accounts: ${accounts.length}`);
|
|
82
|
+
console.log('');
|
|
83
|
+
for (let i = 0; i < accounts.length; i++) {
|
|
84
|
+
const acc = accounts[i];
|
|
85
|
+
const isActive = i === authManager.getAllAccounts().indexOf(active);
|
|
86
|
+
const marker = isActive ? '→' : ' ';
|
|
87
|
+
const temp = acc.isTemporary ? ' (temporary)' : '';
|
|
88
|
+
console.log(`${marker} ${i + 1}. ${acc.username}${temp}`);
|
|
89
|
+
if (acc.lastUsed) {
|
|
90
|
+
console.log(` Last used: ${new Date(acc.lastUsed).toLocaleString()}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
default:
|
|
96
|
+
console.error(`Unknown command: ${command}`);
|
|
97
|
+
console.log(HELP);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
12
100
|
}
|
|
13
|
-
|
|
14
|
-
console.error('
|
|
101
|
+
main().catch(err => {
|
|
102
|
+
console.error('Error:', err.message);
|
|
15
103
|
process.exit(1);
|
|
16
|
-
}
|
|
104
|
+
});
|
|
17
105
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.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.
|
|
3
|
+
"version": "1.0.37",
|
|
4
4
|
"description": "Puter.com OAuth plugin for OpenCode - Easy access to Claude, GPT, Gemini & 500+ AI models. No API keys needed, credit-based usage.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"puter-auth": "dist/cli.js"
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
"@ai-sdk/provider": "^3.0.3",
|
|
89
89
|
"@ai-sdk/provider-utils": "^4.0.7",
|
|
90
90
|
"@heyputer/puter.js": "^2.2.5",
|
|
91
|
+
"ai": "^6.0.39",
|
|
91
92
|
"open": "^11.0.0",
|
|
92
93
|
"xdg-basedir": "^5.1.0",
|
|
93
94
|
"zod": "^4.3.5"
|