opencode-puter-auth 1.0.0-beta.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.
- package/LICENSE +21 -0
- package/README.md +253 -0
- package/dist/auth.d.ts +72 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +436 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +48 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +210 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +16 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +305 -0
- package/dist/plugin.js.map +1 -0
- package/dist/types.d.ts +190 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +66 -0
- package/dist/types.js.map +1 -0
- package/package.json +75 -0
package/dist/client.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Puter API Client
|
|
3
|
+
*
|
|
4
|
+
* Handles all communication with Puter.com's AI API
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_API_URL = 'https://api.puter.com';
|
|
7
|
+
const DEFAULT_TIMEOUT = 120000;
|
|
8
|
+
export class PuterClient {
|
|
9
|
+
authToken;
|
|
10
|
+
config;
|
|
11
|
+
constructor(authToken, config = {}) {
|
|
12
|
+
this.authToken = authToken;
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get the API base URL
|
|
17
|
+
*/
|
|
18
|
+
get apiUrl() {
|
|
19
|
+
return this.config.api_base_url || DEFAULT_API_URL;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the request timeout
|
|
23
|
+
*/
|
|
24
|
+
get timeout() {
|
|
25
|
+
return this.config.api_timeout_ms || DEFAULT_TIMEOUT;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Update the auth token
|
|
29
|
+
*/
|
|
30
|
+
setAuthToken(token) {
|
|
31
|
+
this.authToken = token;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Send a chat completion request (non-streaming)
|
|
35
|
+
*/
|
|
36
|
+
async chat(messages, options = {}) {
|
|
37
|
+
const response = await this.makeRequest('complete', {
|
|
38
|
+
messages,
|
|
39
|
+
model: options.model || 'gpt-5-nano',
|
|
40
|
+
stream: false,
|
|
41
|
+
max_tokens: options.max_tokens,
|
|
42
|
+
temperature: options.temperature,
|
|
43
|
+
tools: options.tools,
|
|
44
|
+
});
|
|
45
|
+
return response.result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Send a streaming chat completion request
|
|
49
|
+
*/
|
|
50
|
+
async *chatStream(messages, options = {}) {
|
|
51
|
+
const controller = new AbortController();
|
|
52
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
53
|
+
try {
|
|
54
|
+
const response = await fetch(`${this.apiUrl}/drivers/call`, {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: {
|
|
57
|
+
'Content-Type': 'application/json',
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify({
|
|
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,
|
|
70
|
+
},
|
|
71
|
+
auth_token: this.authToken,
|
|
72
|
+
}),
|
|
73
|
+
signal: controller.signal,
|
|
74
|
+
});
|
|
75
|
+
if (!response.ok) {
|
|
76
|
+
const errorText = await response.text();
|
|
77
|
+
throw new Error(`Puter API error (${response.status}): ${errorText}`);
|
|
78
|
+
}
|
|
79
|
+
if (!response.body) {
|
|
80
|
+
throw new Error('No response body for streaming');
|
|
81
|
+
}
|
|
82
|
+
const reader = response.body.getReader();
|
|
83
|
+
const decoder = new TextDecoder();
|
|
84
|
+
let buffer = '';
|
|
85
|
+
while (true) {
|
|
86
|
+
const { value, done } = await reader.read();
|
|
87
|
+
if (done)
|
|
88
|
+
break;
|
|
89
|
+
buffer += decoder.decode(value, { stream: true });
|
|
90
|
+
const lines = buffer.split('\n');
|
|
91
|
+
buffer = lines.pop() || '';
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
if (!line.trim())
|
|
94
|
+
continue;
|
|
95
|
+
try {
|
|
96
|
+
const chunk = JSON.parse(line);
|
|
97
|
+
yield chunk;
|
|
98
|
+
if (chunk.done) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Skip malformed JSON lines
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Process any remaining buffer
|
|
109
|
+
if (buffer.trim()) {
|
|
110
|
+
try {
|
|
111
|
+
const chunk = JSON.parse(buffer);
|
|
112
|
+
yield chunk;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Ignore
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
clearTimeout(timeoutId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* List available models
|
|
125
|
+
*/
|
|
126
|
+
async listModels() {
|
|
127
|
+
try {
|
|
128
|
+
const response = await fetch(`${this.apiUrl}/puterai/chat/models/details`, {
|
|
129
|
+
method: 'GET',
|
|
130
|
+
headers: {
|
|
131
|
+
'Authorization': `Bearer ${this.authToken}`,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
if (!response.ok) {
|
|
135
|
+
throw new Error(`Failed to fetch models: ${response.status}`);
|
|
136
|
+
}
|
|
137
|
+
const data = await response.json();
|
|
138
|
+
return data.models || data || [];
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
// Return default models if API fails
|
|
142
|
+
return this.getDefaultModels();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get default model list (fallback)
|
|
147
|
+
*/
|
|
148
|
+
getDefaultModels() {
|
|
149
|
+
return [
|
|
150
|
+
// Claude Models
|
|
151
|
+
{ id: 'claude-opus-4-5', name: 'Claude Opus 4.5', provider: 'anthropic', context_window: 200000, max_output_tokens: 64000, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
152
|
+
{ id: 'claude-sonnet-4-5', name: 'Claude Sonnet 4.5', provider: 'anthropic', context_window: 200000, max_output_tokens: 64000, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
153
|
+
{ id: 'claude-sonnet-4', name: 'Claude Sonnet 4', provider: 'anthropic', context_window: 200000, max_output_tokens: 64000, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
154
|
+
{ id: 'claude-haiku-4-5', name: 'Claude Haiku 4.5', provider: 'anthropic', context_window: 200000, max_output_tokens: 64000, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
155
|
+
// GPT Models
|
|
156
|
+
{ id: 'gpt-5-nano', name: 'GPT-5 Nano', provider: 'openai', context_window: 128000, max_output_tokens: 16384, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
157
|
+
{ id: 'gpt-5.2', name: 'GPT-5.2', provider: 'openai', context_window: 128000, max_output_tokens: 32768, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
158
|
+
{ id: 'gpt-4o', name: 'GPT-4o', provider: 'openai', context_window: 128000, max_output_tokens: 16384, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
159
|
+
{ id: 'o3-mini', name: 'o3-mini', provider: 'openai', context_window: 128000, max_output_tokens: 32768, supports_streaming: true, supports_tools: true, supports_vision: false },
|
|
160
|
+
// Gemini Models
|
|
161
|
+
{ id: 'gemini-2.5-pro', name: 'Gemini 2.5 Pro', provider: 'google', context_window: 1000000, max_output_tokens: 65536, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
162
|
+
{ id: 'gemini-2.5-flash', name: 'Gemini 2.5 Flash', provider: 'google', context_window: 1000000, max_output_tokens: 65536, supports_streaming: true, supports_tools: true, supports_vision: true },
|
|
163
|
+
];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Make a generic API request to the drivers endpoint
|
|
167
|
+
*/
|
|
168
|
+
async makeRequest(method, args) {
|
|
169
|
+
const controller = new AbortController();
|
|
170
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
171
|
+
try {
|
|
172
|
+
const response = await fetch(`${this.apiUrl}/drivers/call`, {
|
|
173
|
+
method: 'POST',
|
|
174
|
+
headers: {
|
|
175
|
+
'Content-Type': 'application/json',
|
|
176
|
+
},
|
|
177
|
+
body: JSON.stringify({
|
|
178
|
+
interface: 'puter-chat-completion',
|
|
179
|
+
service: 'ai-chat',
|
|
180
|
+
method,
|
|
181
|
+
args,
|
|
182
|
+
auth_token: this.authToken,
|
|
183
|
+
}),
|
|
184
|
+
signal: controller.signal,
|
|
185
|
+
});
|
|
186
|
+
if (!response.ok) {
|
|
187
|
+
const errorText = await response.text();
|
|
188
|
+
throw new Error(`Puter API error (${response.status}): ${errorText}`);
|
|
189
|
+
}
|
|
190
|
+
const data = await response.json();
|
|
191
|
+
return data;
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
clearTimeout(timeoutId);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Test the connection and auth token
|
|
199
|
+
*/
|
|
200
|
+
async testConnection() {
|
|
201
|
+
try {
|
|
202
|
+
const response = await this.chat([{ role: 'user', content: 'Say "OK" and nothing else.' }], { model: 'gpt-5-nano', max_tokens: 10 });
|
|
203
|
+
return !!response.message?.content;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opencode-puter-auth - Puter.com OAuth Plugin for OpenCode
|
|
3
|
+
*
|
|
4
|
+
* Provides FREE, UNLIMITED access to Claude Opus 4.5, Sonnet 4.5, GPT-5, Gemini,
|
|
5
|
+
* and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
|
+
*
|
|
7
|
+
* @author chindris-mihai-alexandru
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
export { PuterAuthPlugin } from './plugin.js';
|
|
11
|
+
export { PuterClient } from './client.js';
|
|
12
|
+
export { PuterAuthManager } from './auth.js';
|
|
13
|
+
export type { PuterConfig, PuterAccount, PuterChatOptions, PuterChatResponse } from './types.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opencode-puter-auth - Puter.com OAuth Plugin for OpenCode
|
|
3
|
+
*
|
|
4
|
+
* Provides FREE, UNLIMITED access to Claude Opus 4.5, Sonnet 4.5, GPT-5, Gemini,
|
|
5
|
+
* and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
|
+
*
|
|
7
|
+
* @author chindris-mihai-alexandru
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
export { PuterAuthPlugin } from './plugin.js';
|
|
11
|
+
export { PuterClient } from './client.js';
|
|
12
|
+
export { PuterAuthManager } from './auth.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Plugin for Puter.com Authentication
|
|
3
|
+
*
|
|
4
|
+
* This plugin provides FREE, UNLIMITED access to Claude Opus 4.5, Sonnet 4.5,
|
|
5
|
+
* GPT-5, Gemini, and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
|
+
*
|
|
7
|
+
* @author chindris-mihai-alexandru
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
import type { Plugin } from '@opencode-ai/plugin';
|
|
11
|
+
/**
|
|
12
|
+
* Main Plugin Export
|
|
13
|
+
*/
|
|
14
|
+
export declare const PuterAuthPlugin: Plugin;
|
|
15
|
+
export default PuterAuthPlugin;
|
|
16
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +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;AAuDtE;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAuR7B,CAAC;AAGF,eAAe,eAAe,CAAC"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Plugin for Puter.com Authentication
|
|
3
|
+
*
|
|
4
|
+
* This plugin provides FREE, UNLIMITED access to Claude Opus 4.5, Sonnet 4.5,
|
|
5
|
+
* GPT-5, Gemini, and 500+ AI models through Puter.com's "User-Pays" model.
|
|
6
|
+
*
|
|
7
|
+
* @author chindris-mihai-alexandru
|
|
8
|
+
* @license MIT
|
|
9
|
+
*/
|
|
10
|
+
import { tool } from '@opencode-ai/plugin';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import os from 'node:os';
|
|
13
|
+
import http from 'node:http';
|
|
14
|
+
import { URL } from 'node:url';
|
|
15
|
+
import { PuterClient } from './client.js';
|
|
16
|
+
import { PuterAuthManager } from './auth.js';
|
|
17
|
+
import { PuterConfigSchema } from './types.js';
|
|
18
|
+
// Default config directory
|
|
19
|
+
const getConfigDir = () => {
|
|
20
|
+
const xdgConfig = process.env.XDG_CONFIG_HOME;
|
|
21
|
+
if (xdgConfig) {
|
|
22
|
+
return path.join(xdgConfig, 'opencode');
|
|
23
|
+
}
|
|
24
|
+
return path.join(os.homedir(), '.config', 'opencode');
|
|
25
|
+
};
|
|
26
|
+
// Plugin state
|
|
27
|
+
let authManager = null;
|
|
28
|
+
let puterClient = null;
|
|
29
|
+
let pluginConfig = {};
|
|
30
|
+
// OAuth server state
|
|
31
|
+
const CALLBACK_PORT = 19847;
|
|
32
|
+
const AUTH_TIMEOUT_MS = 300000;
|
|
33
|
+
/**
|
|
34
|
+
* Load plugin configuration from puter.json
|
|
35
|
+
*/
|
|
36
|
+
async function loadConfig(configDir) {
|
|
37
|
+
const fs = await import('node:fs/promises');
|
|
38
|
+
const configPath = path.join(configDir, 'puter.json');
|
|
39
|
+
try {
|
|
40
|
+
const data = await fs.readFile(configPath, 'utf-8');
|
|
41
|
+
const parsed = JSON.parse(data);
|
|
42
|
+
return PuterConfigSchema.partial().parse(parsed);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Log a message (respects quiet mode)
|
|
50
|
+
*/
|
|
51
|
+
function log(message, level = 'info') {
|
|
52
|
+
if (pluginConfig.quiet_mode)
|
|
53
|
+
return;
|
|
54
|
+
const prefix = level === 'error' ? '❌' : level === 'warn' ? '⚠️' : '🟣';
|
|
55
|
+
console.log(`${prefix} [puter-auth] ${message}`);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Main Plugin Export
|
|
59
|
+
*/
|
|
60
|
+
export const PuterAuthPlugin = async (_input) => {
|
|
61
|
+
const configDir = getConfigDir();
|
|
62
|
+
// Load configuration
|
|
63
|
+
pluginConfig = await loadConfig(configDir);
|
|
64
|
+
// Initialize auth manager
|
|
65
|
+
authManager = new PuterAuthManager(configDir, pluginConfig);
|
|
66
|
+
await authManager.init();
|
|
67
|
+
// Initialize client if we have an active account
|
|
68
|
+
const activeAccount = authManager.getActiveAccount();
|
|
69
|
+
if (activeAccount) {
|
|
70
|
+
puterClient = new PuterClient(activeAccount.authToken, pluginConfig);
|
|
71
|
+
log(`Loaded account: ${activeAccount.username}${activeAccount.isTemporary ? ' (temporary)' : ''}`);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
// ========================================
|
|
75
|
+
// AUTH HOOK - OAuth with Puter
|
|
76
|
+
// ========================================
|
|
77
|
+
auth: {
|
|
78
|
+
provider: 'puter',
|
|
79
|
+
// Load auth credentials for Puter provider
|
|
80
|
+
async loader(_auth, _provider) {
|
|
81
|
+
const account = authManager?.getActiveAccount();
|
|
82
|
+
if (account) {
|
|
83
|
+
return {
|
|
84
|
+
key: account.authToken,
|
|
85
|
+
username: account.username,
|
|
86
|
+
email: account.email,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return {};
|
|
90
|
+
},
|
|
91
|
+
methods: [
|
|
92
|
+
{
|
|
93
|
+
type: 'oauth',
|
|
94
|
+
label: 'Puter.com (FREE Unlimited AI)',
|
|
95
|
+
async authorize() {
|
|
96
|
+
return new Promise((resolve) => {
|
|
97
|
+
let resolved = false;
|
|
98
|
+
let server = null;
|
|
99
|
+
// Callback handler function
|
|
100
|
+
const callbackPromise = new Promise((resolveCallback) => {
|
|
101
|
+
server = http.createServer(async (req, res) => {
|
|
102
|
+
if (resolved) {
|
|
103
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
104
|
+
res.end('<html><body><h1>Already authenticated</h1></body></html>');
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const url = new URL(req.url || '/', `http://localhost:${CALLBACK_PORT}`);
|
|
108
|
+
if (url.pathname === '/callback') {
|
|
109
|
+
const token = url.searchParams.get('token');
|
|
110
|
+
const username = url.searchParams.get('username') || 'puter_user';
|
|
111
|
+
const email = url.searchParams.get('email') || undefined;
|
|
112
|
+
const isTemp = url.searchParams.get('temp') === 'true';
|
|
113
|
+
if (token) {
|
|
114
|
+
resolved = true;
|
|
115
|
+
const account = {
|
|
116
|
+
username,
|
|
117
|
+
email,
|
|
118
|
+
authToken: token,
|
|
119
|
+
addedAt: Date.now(),
|
|
120
|
+
isTemporary: isTemp,
|
|
121
|
+
};
|
|
122
|
+
// Save account
|
|
123
|
+
if (authManager) {
|
|
124
|
+
await authManager.addAccount(account);
|
|
125
|
+
puterClient = new PuterClient(token, pluginConfig);
|
|
126
|
+
log(`Authenticated as: ${username}`);
|
|
127
|
+
}
|
|
128
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
129
|
+
res.end(`
|
|
130
|
+
<!DOCTYPE html>
|
|
131
|
+
<html>
|
|
132
|
+
<head>
|
|
133
|
+
<title>Puter Auth Success</title>
|
|
134
|
+
<style>
|
|
135
|
+
body { font-family: system-ui, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
|
|
136
|
+
.card { background: white; padding: 40px; border-radius: 16px; text-align: center; box-shadow: 0 10px 40px rgba(0,0,0,0.2); }
|
|
137
|
+
h1 { color: #22c55e; margin: 0 0 16px 0; }
|
|
138
|
+
p { color: #666; margin: 0; }
|
|
139
|
+
.emoji { font-size: 48px; margin-bottom: 16px; }
|
|
140
|
+
</style>
|
|
141
|
+
</head>
|
|
142
|
+
<body>
|
|
143
|
+
<div class="card">
|
|
144
|
+
<div class="emoji">✅</div>
|
|
145
|
+
<h1>Authentication Successful!</h1>
|
|
146
|
+
<p>You can close this window and return to OpenCode.</p>
|
|
147
|
+
</div>
|
|
148
|
+
</body>
|
|
149
|
+
</html>
|
|
150
|
+
`);
|
|
151
|
+
server?.close();
|
|
152
|
+
resolveCallback({ type: 'success', key: token });
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
156
|
+
res.end('<html><body><h1>Missing token</h1></body></html>');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (url.pathname === '/') {
|
|
160
|
+
// Redirect to Puter auth
|
|
161
|
+
const callbackUrl = encodeURIComponent(`http://localhost:${CALLBACK_PORT}/callback`);
|
|
162
|
+
const authUrl = `https://puter.com/auth?redirect=${callbackUrl}`;
|
|
163
|
+
res.writeHead(302, { Location: authUrl });
|
|
164
|
+
res.end();
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
res.writeHead(404);
|
|
168
|
+
res.end('Not found');
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
server.listen(CALLBACK_PORT, 'localhost');
|
|
172
|
+
// Timeout handler
|
|
173
|
+
setTimeout(() => {
|
|
174
|
+
if (!resolved) {
|
|
175
|
+
resolved = true;
|
|
176
|
+
server?.close();
|
|
177
|
+
resolveCallback({ type: 'failed' });
|
|
178
|
+
}
|
|
179
|
+
}, AUTH_TIMEOUT_MS);
|
|
180
|
+
server.on('error', () => {
|
|
181
|
+
if (!resolved) {
|
|
182
|
+
resolved = true;
|
|
183
|
+
resolveCallback({ type: 'failed' });
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
resolve({
|
|
188
|
+
url: `http://localhost:${CALLBACK_PORT}`,
|
|
189
|
+
instructions: 'Opening browser for Puter.com authentication. Sign in or create a FREE account to get unlimited AI access.',
|
|
190
|
+
method: 'auto',
|
|
191
|
+
callback: () => callbackPromise,
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
// ========================================
|
|
199
|
+
// CUSTOM TOOLS
|
|
200
|
+
// ========================================
|
|
201
|
+
tool: {
|
|
202
|
+
'puter-models': tool({
|
|
203
|
+
description: 'List all available Puter.com AI models (Claude, GPT, Gemini - all FREE)',
|
|
204
|
+
args: {},
|
|
205
|
+
async execute() {
|
|
206
|
+
if (!puterClient) {
|
|
207
|
+
return 'Not authenticated with Puter. Run: opencode auth login';
|
|
208
|
+
}
|
|
209
|
+
const models = await puterClient.listModels();
|
|
210
|
+
let output = '# Available Puter.com Models (FREE, UNLIMITED)\n\n';
|
|
211
|
+
// Group by provider
|
|
212
|
+
const byProvider = {};
|
|
213
|
+
for (const model of models) {
|
|
214
|
+
const provider = model.provider || 'other';
|
|
215
|
+
if (!byProvider[provider])
|
|
216
|
+
byProvider[provider] = [];
|
|
217
|
+
byProvider[provider].push(model);
|
|
218
|
+
}
|
|
219
|
+
for (const [provider, providerModels] of Object.entries(byProvider)) {
|
|
220
|
+
output += `## ${provider.charAt(0).toUpperCase() + provider.slice(1)}\n\n`;
|
|
221
|
+
for (const model of providerModels) {
|
|
222
|
+
output += `- **${model.id}** - ${model.name}\n`;
|
|
223
|
+
if (model.context_window) {
|
|
224
|
+
output += ` - Context: ${model.context_window.toLocaleString()} tokens\n`;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
output += '\n';
|
|
228
|
+
}
|
|
229
|
+
output += `\nTotal: ${models.length} models available for FREE!`;
|
|
230
|
+
return output;
|
|
231
|
+
},
|
|
232
|
+
}),
|
|
233
|
+
'puter-account': tool({
|
|
234
|
+
description: 'Show current Puter.com account information',
|
|
235
|
+
args: {},
|
|
236
|
+
async execute() {
|
|
237
|
+
if (!authManager) {
|
|
238
|
+
return 'Puter plugin not initialized';
|
|
239
|
+
}
|
|
240
|
+
const accounts = authManager.getAllAccounts();
|
|
241
|
+
const activeAccount = authManager.getActiveAccount();
|
|
242
|
+
if (accounts.length === 0) {
|
|
243
|
+
return 'No Puter accounts configured. Run: opencode auth login';
|
|
244
|
+
}
|
|
245
|
+
let output = '# Puter.com Accounts\n\n';
|
|
246
|
+
for (let i = 0; i < accounts.length; i++) {
|
|
247
|
+
const account = accounts[i];
|
|
248
|
+
const isActive = account === activeAccount;
|
|
249
|
+
const marker = isActive ? '→ ' : ' ';
|
|
250
|
+
const status = account.isTemporary ? '(temporary)' : '';
|
|
251
|
+
output += `${marker}${i + 1}. **${account.username}** ${status}\n`;
|
|
252
|
+
if (account.email) {
|
|
253
|
+
output += ` Email: ${account.email}\n`;
|
|
254
|
+
}
|
|
255
|
+
if (account.lastUsed) {
|
|
256
|
+
output += ` Last used: ${new Date(account.lastUsed).toLocaleString()}\n`;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
output += '\n---\n';
|
|
260
|
+
output += 'Puter uses the "User-Pays" model - your usage is FREE and UNLIMITED!\n';
|
|
261
|
+
return output;
|
|
262
|
+
},
|
|
263
|
+
}),
|
|
264
|
+
'puter-chat': tool({
|
|
265
|
+
description: 'Send a chat message using Puter AI (FREE). Use this to access Claude Opus 4.5, GPT-5, Gemini, etc.',
|
|
266
|
+
args: {
|
|
267
|
+
message: tool.schema.string().describe('The message to send to the AI'),
|
|
268
|
+
model: tool.schema.string().optional().describe('Model to use (default: claude-sonnet-4-5). Options: claude-opus-4-5, claude-sonnet-4-5, gpt-5.2, gpt-4o, gemini-2.5-pro, etc.'),
|
|
269
|
+
},
|
|
270
|
+
async execute(args) {
|
|
271
|
+
if (!puterClient) {
|
|
272
|
+
return 'Not authenticated with Puter. Run: opencode auth login';
|
|
273
|
+
}
|
|
274
|
+
const model = args.model || 'claude-sonnet-4-5';
|
|
275
|
+
const messages = [
|
|
276
|
+
{ role: 'user', content: args.message },
|
|
277
|
+
];
|
|
278
|
+
try {
|
|
279
|
+
const response = await puterClient.chat(messages, { model });
|
|
280
|
+
await authManager?.touchActiveAccount();
|
|
281
|
+
const content = response.message?.content || 'No response';
|
|
282
|
+
const usage = response.usage
|
|
283
|
+
? `\n\n---\n*Model: ${model} | Tokens: ${response.usage.total_tokens}*`
|
|
284
|
+
: '';
|
|
285
|
+
return content + usage;
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
return `Failed to chat with Puter AI: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
}),
|
|
292
|
+
},
|
|
293
|
+
// ========================================
|
|
294
|
+
// EVENT HANDLER
|
|
295
|
+
// ========================================
|
|
296
|
+
async event({ event }) {
|
|
297
|
+
if (pluginConfig.debug) {
|
|
298
|
+
console.log(`[puter-auth] Event: ${event.type}`);
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
// Default export for OpenCode
|
|
304
|
+
export default PuterAuthPlugin;
|
|
305
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|