opencode-puter-auth 1.0.2 → 1.0.4
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 +26 -0
- 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/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/package.json +3 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Puter Chat Model Settings
|
|
3
|
+
*
|
|
4
|
+
* Configuration options for the Puter chat language model.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Settings for the Puter chat model.
|
|
8
|
+
*/
|
|
9
|
+
export interface PuterChatSettings {
|
|
10
|
+
/**
|
|
11
|
+
* The Puter model ID to use.
|
|
12
|
+
* @example 'claude-opus-4-5', 'claude-sonnet-4-5', 'gpt-4o', 'gemini-2.5-pro'
|
|
13
|
+
*/
|
|
14
|
+
modelId?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of tokens to generate.
|
|
17
|
+
*/
|
|
18
|
+
maxTokens?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Temperature for response generation.
|
|
21
|
+
* Higher values make output more random, lower values more deterministic.
|
|
22
|
+
* @default 0.7
|
|
23
|
+
*/
|
|
24
|
+
temperature?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Top-p (nucleus) sampling parameter.
|
|
27
|
+
*/
|
|
28
|
+
topP?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Top-k sampling parameter.
|
|
31
|
+
*/
|
|
32
|
+
topK?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Stop sequences that will halt generation.
|
|
35
|
+
*/
|
|
36
|
+
stopSequences?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* Whether to enable streaming responses.
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
stream?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Configuration for the Puter provider.
|
|
45
|
+
*/
|
|
46
|
+
export interface PuterProviderConfig {
|
|
47
|
+
/**
|
|
48
|
+
* The Puter authentication token.
|
|
49
|
+
* Can be obtained by authenticating with Puter.com.
|
|
50
|
+
*/
|
|
51
|
+
authToken: string;
|
|
52
|
+
/**
|
|
53
|
+
* Base URL for the Puter API.
|
|
54
|
+
* @default 'https://api.puter.com'
|
|
55
|
+
*/
|
|
56
|
+
baseURL?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Request timeout in milliseconds.
|
|
59
|
+
* @default 120000
|
|
60
|
+
*/
|
|
61
|
+
timeout?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Custom headers to include in requests.
|
|
64
|
+
*/
|
|
65
|
+
headers?: Record<string, string>;
|
|
66
|
+
/**
|
|
67
|
+
* Custom fetch function for making HTTP requests.
|
|
68
|
+
* Useful for testing or custom networking.
|
|
69
|
+
*/
|
|
70
|
+
fetch?: typeof globalThis.fetch;
|
|
71
|
+
/**
|
|
72
|
+
* Function to generate unique IDs.
|
|
73
|
+
* Used for tool call IDs and other identifiers.
|
|
74
|
+
*/
|
|
75
|
+
generateId?: () => string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Internal configuration passed to the chat model.
|
|
79
|
+
*/
|
|
80
|
+
export interface PuterChatConfig {
|
|
81
|
+
/**
|
|
82
|
+
* Provider identifier.
|
|
83
|
+
*/
|
|
84
|
+
provider: string;
|
|
85
|
+
/**
|
|
86
|
+
* Base URL for API calls.
|
|
87
|
+
*/
|
|
88
|
+
baseURL: string;
|
|
89
|
+
/**
|
|
90
|
+
* Request timeout in milliseconds.
|
|
91
|
+
*/
|
|
92
|
+
timeout: number;
|
|
93
|
+
/**
|
|
94
|
+
* Function to get headers for requests.
|
|
95
|
+
*/
|
|
96
|
+
headers: () => Record<string, string>;
|
|
97
|
+
/**
|
|
98
|
+
* Fetch function to use for requests.
|
|
99
|
+
*/
|
|
100
|
+
fetch: typeof globalThis.fetch;
|
|
101
|
+
/**
|
|
102
|
+
* Function to generate unique IDs.
|
|
103
|
+
*/
|
|
104
|
+
generateId: () => string;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=puter-chat-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puter-chat-settings.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAEhC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC;;OAEG;IACH,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puter-chat-settings.js","sourceRoot":"","sources":["../../src/ai-provider/puter-chat-settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Puter AI SDK Provider
|
|
3
|
+
*
|
|
4
|
+
* Factory function for creating Puter language models compatible with the AI SDK.
|
|
5
|
+
* This enables Puter.com's FREE AI models to work as a proper provider in OpenCode.
|
|
6
|
+
*/
|
|
7
|
+
import type { ProviderV3 } from '@ai-sdk/provider';
|
|
8
|
+
import { PuterChatLanguageModel } from './puter-chat-language-model.js';
|
|
9
|
+
import type { PuterChatSettings, PuterProviderConfig } from './puter-chat-settings.js';
|
|
10
|
+
/**
|
|
11
|
+
* Puter provider interface extending ProviderV3.
|
|
12
|
+
*/
|
|
13
|
+
export interface PuterProvider extends ProviderV3 {
|
|
14
|
+
/**
|
|
15
|
+
* Create a Puter chat language model.
|
|
16
|
+
* @param modelId - The model ID (e.g., 'claude-opus-4-5', 'gpt-4o')
|
|
17
|
+
* @param settings - Optional model settings
|
|
18
|
+
*/
|
|
19
|
+
(modelId: string, settings?: PuterChatSettings): PuterChatLanguageModel;
|
|
20
|
+
/**
|
|
21
|
+
* Create a Puter chat language model.
|
|
22
|
+
* @param modelId - The model ID (e.g., 'claude-opus-4-5', 'gpt-4o')
|
|
23
|
+
* @param settings - Optional model settings
|
|
24
|
+
*/
|
|
25
|
+
languageModel(modelId: string, settings?: PuterChatSettings): PuterChatLanguageModel;
|
|
26
|
+
/**
|
|
27
|
+
* Create a Puter chat language model (alias for languageModel).
|
|
28
|
+
* @param modelId - The model ID
|
|
29
|
+
* @param settings - Optional model settings
|
|
30
|
+
*/
|
|
31
|
+
chat(modelId: string, settings?: PuterChatSettings): PuterChatLanguageModel;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a Puter provider instance.
|
|
35
|
+
*
|
|
36
|
+
* @param options - Provider configuration options
|
|
37
|
+
* @returns A Puter provider instance
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* import { createPuter } from 'opencode-puter-auth';
|
|
42
|
+
*
|
|
43
|
+
* const puter = createPuter({
|
|
44
|
+
* authToken: 'your-puter-auth-token',
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* const model = puter('claude-opus-4-5');
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function createPuter(options: PuterProviderConfig): PuterProvider;
|
|
51
|
+
/**
|
|
52
|
+
* Default Puter provider (lazy-loaded).
|
|
53
|
+
*
|
|
54
|
+
* This is a proxy that lazily creates the provider when first accessed.
|
|
55
|
+
* It requires the PUTER_AUTH_TOKEN environment variable to be set.
|
|
56
|
+
*/
|
|
57
|
+
export declare const puter: PuterProvider;
|
|
58
|
+
//# sourceMappingURL=puter-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puter-provider.d.ts","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAmB,MAAM,0BAA0B,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;OAIG;IACH,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAExE;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;IAErF;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,CAAC;CAC7E;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAiFvE;AAkCD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,aAsBnB,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Puter AI SDK Provider
|
|
3
|
+
*
|
|
4
|
+
* Factory function for creating Puter language models compatible with the AI SDK.
|
|
5
|
+
* This enables Puter.com's FREE AI models to work as a proper provider in OpenCode.
|
|
6
|
+
*/
|
|
7
|
+
import { generateId, withoutTrailingSlash } from '@ai-sdk/provider-utils';
|
|
8
|
+
import { PuterChatLanguageModel } from './puter-chat-language-model.js';
|
|
9
|
+
/**
|
|
10
|
+
* Default Puter API base URL.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_BASE_URL = 'https://api.puter.com';
|
|
13
|
+
/**
|
|
14
|
+
* Default request timeout in milliseconds.
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_TIMEOUT = 120000;
|
|
17
|
+
/**
|
|
18
|
+
* Create a Puter provider instance.
|
|
19
|
+
*
|
|
20
|
+
* @param options - Provider configuration options
|
|
21
|
+
* @returns A Puter provider instance
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { createPuter } from 'opencode-puter-auth';
|
|
26
|
+
*
|
|
27
|
+
* const puter = createPuter({
|
|
28
|
+
* authToken: 'your-puter-auth-token',
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* const model = puter('claude-opus-4-5');
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function createPuter(options) {
|
|
35
|
+
const baseURL = withoutTrailingSlash(options.baseURL) ?? DEFAULT_BASE_URL;
|
|
36
|
+
const timeout = options.timeout ?? DEFAULT_TIMEOUT;
|
|
37
|
+
const fetchFn = options.fetch ?? globalThis.fetch;
|
|
38
|
+
const generateIdFn = options.generateId ?? generateId;
|
|
39
|
+
/**
|
|
40
|
+
* Get headers for API requests.
|
|
41
|
+
*/
|
|
42
|
+
const getHeaders = () => {
|
|
43
|
+
const headers = {
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
};
|
|
46
|
+
// Add auth token if provided
|
|
47
|
+
if (options.authToken) {
|
|
48
|
+
headers['Authorization'] = `Bearer ${options.authToken}`;
|
|
49
|
+
}
|
|
50
|
+
// Add custom headers
|
|
51
|
+
if (options.headers) {
|
|
52
|
+
Object.assign(headers, options.headers);
|
|
53
|
+
}
|
|
54
|
+
return headers;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Create a chat language model configuration.
|
|
58
|
+
*/
|
|
59
|
+
const createChatConfig = () => ({
|
|
60
|
+
provider: 'puter',
|
|
61
|
+
baseURL,
|
|
62
|
+
timeout,
|
|
63
|
+
headers: getHeaders,
|
|
64
|
+
fetch: fetchFn,
|
|
65
|
+
generateId: generateIdFn,
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* Create a chat language model.
|
|
69
|
+
*/
|
|
70
|
+
const createChatModel = (modelId, settings = {}) => {
|
|
71
|
+
return new PuterChatLanguageModel(modelId, settings, createChatConfig());
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Provider function that can be called directly or via methods.
|
|
75
|
+
*/
|
|
76
|
+
const provider = function (modelId, settings) {
|
|
77
|
+
if (new.target) {
|
|
78
|
+
throw new Error('The Puter provider function cannot be called with the new keyword.');
|
|
79
|
+
}
|
|
80
|
+
return createChatModel(modelId, settings);
|
|
81
|
+
};
|
|
82
|
+
// Add methods to the provider function
|
|
83
|
+
provider.languageModel = createChatModel;
|
|
84
|
+
provider.chat = createChatModel;
|
|
85
|
+
// ProviderV3 specification version
|
|
86
|
+
provider.specificationVersion = 'v3';
|
|
87
|
+
// Puter only supports chat models, throw for unsupported types
|
|
88
|
+
provider.embeddingModel = () => {
|
|
89
|
+
throw new Error('Puter does not support embedding models');
|
|
90
|
+
};
|
|
91
|
+
provider.imageModel = () => {
|
|
92
|
+
throw new Error('Puter does not support image models');
|
|
93
|
+
};
|
|
94
|
+
return provider;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Lazy-loaded default Puter provider instance.
|
|
98
|
+
*
|
|
99
|
+
* This provider is only instantiated when actually used, avoiding errors
|
|
100
|
+
* when the PUTER_AUTH_TOKEN environment variable is not set at import time.
|
|
101
|
+
*
|
|
102
|
+
* Note: Requires the PUTER_AUTH_TOKEN environment variable to be set when used.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* import { puter } from 'opencode-puter-auth';
|
|
107
|
+
*
|
|
108
|
+
* // Requires PUTER_AUTH_TOKEN environment variable
|
|
109
|
+
* const model = puter('claude-opus-4-5');
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
let _puterInstance = null;
|
|
113
|
+
function getPuterInstance() {
|
|
114
|
+
if (!_puterInstance) {
|
|
115
|
+
const authToken = process.env.PUTER_AUTH_TOKEN;
|
|
116
|
+
if (!authToken) {
|
|
117
|
+
throw new Error('PUTER_AUTH_TOKEN environment variable is required for the default puter provider. ' +
|
|
118
|
+
'Either set the environment variable or use createPuter() with an explicit authToken.');
|
|
119
|
+
}
|
|
120
|
+
_puterInstance = createPuter({ authToken });
|
|
121
|
+
}
|
|
122
|
+
return _puterInstance;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Default Puter provider (lazy-loaded).
|
|
126
|
+
*
|
|
127
|
+
* This is a proxy that lazily creates the provider when first accessed.
|
|
128
|
+
* It requires the PUTER_AUTH_TOKEN environment variable to be set.
|
|
129
|
+
*/
|
|
130
|
+
export const puter = new Proxy(function () { }, {
|
|
131
|
+
apply(_target, _thisArg, args) {
|
|
132
|
+
return getPuterInstance()(...args);
|
|
133
|
+
},
|
|
134
|
+
get(_target, prop) {
|
|
135
|
+
if (prop === 'languageModel' || prop === 'chat') {
|
|
136
|
+
return (...args) => getPuterInstance()[prop](...args);
|
|
137
|
+
}
|
|
138
|
+
if (prop === 'specificationVersion') {
|
|
139
|
+
return 'v3';
|
|
140
|
+
}
|
|
141
|
+
if (prop === 'embeddingModel' || prop === 'imageModel') {
|
|
142
|
+
return () => {
|
|
143
|
+
throw new Error(`Puter does not support ${String(prop).replace('Model', '')} models`);
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return getPuterInstance()[prop];
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=puter-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puter-provider.js","sourceRoot":"","sources":["../../src/ai-provider/puter-provider.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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"}
|