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
|
@@ -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/client.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
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
|
*/
|
|
6
7
|
import type { PuterChatMessage, PuterChatOptions, PuterChatResponse, PuterChatStreamChunk, PuterModelInfo, PuterConfig } from './types.js';
|
|
7
8
|
export declare class PuterClient {
|
|
8
9
|
private authToken;
|
|
9
10
|
private config;
|
|
11
|
+
private debug;
|
|
10
12
|
constructor(authToken: string, config?: Partial<PuterConfig>);
|
|
11
13
|
/**
|
|
12
14
|
* Get the API base URL
|
|
@@ -16,20 +18,66 @@ export declare class PuterClient {
|
|
|
16
18
|
* Get the request timeout
|
|
17
19
|
*/
|
|
18
20
|
private get timeout();
|
|
21
|
+
/**
|
|
22
|
+
* Get retry options from config
|
|
23
|
+
*/
|
|
24
|
+
private get retryOptions();
|
|
19
25
|
/**
|
|
20
26
|
* Update the auth token
|
|
21
27
|
*/
|
|
22
28
|
setAuthToken(token: string): void;
|
|
23
29
|
/**
|
|
24
30
|
* Send a chat completion request (non-streaming)
|
|
31
|
+
*
|
|
32
|
+
* Automatically retries on transient failures (rate limits, server errors)
|
|
33
|
+
* using exponential backoff with jitter.
|
|
34
|
+
*
|
|
35
|
+
* @param messages - Array of chat messages
|
|
36
|
+
* @param options - Chat options (model, temperature, etc.)
|
|
37
|
+
* @returns Chat response with assistant message
|
|
38
|
+
* @throws Error if request fails after all retries
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* const response = await client.chat([
|
|
43
|
+
* { role: 'user', content: 'Hello!' }
|
|
44
|
+
* ], { model: 'claude-opus-4-5' });
|
|
45
|
+
* console.log(response.message.content);
|
|
46
|
+
* ```
|
|
25
47
|
*/
|
|
26
48
|
chat(messages: PuterChatMessage[], options?: PuterChatOptions): Promise<PuterChatResponse>;
|
|
27
49
|
/**
|
|
28
50
|
* Send a streaming chat completion request
|
|
51
|
+
*
|
|
52
|
+
* Returns an async generator that yields chunks as they arrive.
|
|
53
|
+
* The initial connection is retried on transient failures.
|
|
54
|
+
*
|
|
55
|
+
* @param messages - Array of chat messages
|
|
56
|
+
* @param options - Chat options (model, temperature, etc.)
|
|
57
|
+
* @yields Chat stream chunks with text, reasoning, or tool calls
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* for await (const chunk of client.chatStream([
|
|
62
|
+
* { role: 'user', content: 'Tell me a story' }
|
|
63
|
+
* ])) {
|
|
64
|
+
* if (chunk.text) process.stdout.write(chunk.text);
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
29
67
|
*/
|
|
30
68
|
chatStream(messages: PuterChatMessage[], options?: PuterChatOptions): AsyncGenerator<PuterChatStreamChunk>;
|
|
31
69
|
/**
|
|
32
|
-
* List available models
|
|
70
|
+
* List available models from Puter API
|
|
71
|
+
*
|
|
72
|
+
* Falls back to a default model list if the API is unavailable.
|
|
73
|
+
*
|
|
74
|
+
* @returns Array of available model information
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* const models = await client.listModels();
|
|
79
|
+
* models.forEach(m => console.log(`${m.id}: ${m.name}`));
|
|
80
|
+
* ```
|
|
33
81
|
*/
|
|
34
82
|
listModels(): Promise<PuterModelInfo[]>;
|
|
35
83
|
/**
|
|
@@ -38,10 +86,30 @@ export declare class PuterClient {
|
|
|
38
86
|
private getDefaultModels;
|
|
39
87
|
/**
|
|
40
88
|
* Make a generic API request to the drivers endpoint
|
|
89
|
+
*
|
|
90
|
+
* Includes automatic retry with exponential backoff for transient failures.
|
|
91
|
+
*
|
|
92
|
+
* @param method - API method to call
|
|
93
|
+
* @param args - Arguments to pass to the method
|
|
94
|
+
* @returns API response
|
|
95
|
+
* @throws Error if request fails after all retries
|
|
41
96
|
*/
|
|
42
97
|
private makeRequest;
|
|
43
98
|
/**
|
|
44
|
-
* Test the connection and auth token
|
|
99
|
+
* Test the connection and auth token validity
|
|
100
|
+
*
|
|
101
|
+
* Makes a minimal API call to verify the token works.
|
|
102
|
+
*
|
|
103
|
+
* @returns true if connection is successful, false otherwise
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* if (await client.testConnection()) {
|
|
108
|
+
* console.log('Connected to Puter!');
|
|
109
|
+
* } else {
|
|
110
|
+
* console.log('Connection failed');
|
|
111
|
+
* }
|
|
112
|
+
* ```
|
|
45
113
|
*/
|
|
46
114
|
testConnection(): Promise<boolean>;
|
|
47
115
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAQpB,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAU;gBAEX,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAMhE;;OAEG;IACH,OAAO,KAAK,MAAM,GAEjB;IAED;;OAEG;IACH,OAAO,KAAK,OAAO,GAElB;IAED;;OAEG;IACH,OAAO,KAAK,YAAY,GAUvB;IAED;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;;;;;;;;;;;;;;;OAkBG;IACU,IAAI,CACf,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAa7B;;;;;;;;;;;;;;;;;;OAkBG;IACW,UAAU,CACtB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,GAAE,gBAAqB,GAC7B,cAAc,CAAC,oBAAoB,CAAC;IAoFvC;;;;;;;;;;;;OAYG;IACU,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA0BpD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;;;;;;;;OASG;YACW,WAAW;IAqCzB;;;;;;;;;;;;;;;OAeG;IACU,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAWhD"}
|