@thewhateverapp/platform 0.9.30 → 0.10.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/dist/ai/index.d.ts +12 -5
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +38 -6
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/namespace.d.ts +115 -0
- package/dist/ai/namespace.d.ts.map +1 -0
- package/dist/ai/namespace.js +128 -0
- package/dist/ai/namespace.js.map +1 -0
- package/dist/ai/workers.d.ts +77 -0
- package/dist/ai/workers.d.ts.map +1 -0
- package/dist/ai/workers.js +171 -0
- package/dist/ai/workers.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/kv/providers/cloudflare-kv.d.ts +26 -6
- package/dist/kv/providers/cloudflare-kv.d.ts.map +1 -1
- package/dist/kv/providers/cloudflare-kv.js +49 -57
- package/dist/kv/providers/cloudflare-kv.js.map +1 -1
- package/dist/kv/types.d.ts +29 -11
- package/dist/kv/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/ai/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Edge AI Service
|
|
3
3
|
*
|
|
4
4
|
* Provides AI capabilities for user-generated tiles running on Cloudflare Workers/Pages.
|
|
5
|
-
*
|
|
5
|
+
* Supports both direct Cloudflare Workers AI (via env.AI binding) and platform API fallback.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* // Configure env once per request
|
|
14
14
|
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
15
15
|
*
|
|
16
|
-
* const ai =
|
|
16
|
+
* const ai = getAI();
|
|
17
17
|
*
|
|
18
18
|
* // Simple text generation
|
|
19
19
|
* const answer = await ai.ask("Summarize this text: ...");
|
|
@@ -31,24 +31,31 @@
|
|
|
31
31
|
* images: [{ type: 'url', data: imageUrl }]
|
|
32
32
|
* });
|
|
33
33
|
*
|
|
34
|
+
* // Advanced: direct model access
|
|
35
|
+
* const embeddings = await ai.embed("text to embed");
|
|
36
|
+
* const image = await ai.generateImage("a beautiful sunset");
|
|
37
|
+
*
|
|
34
38
|
* return NextResponse.json({ answer });
|
|
35
39
|
* }
|
|
36
40
|
* ```
|
|
37
41
|
*/
|
|
38
42
|
import type { AIServiceProvider, AIRequest, AIEnv } from './types';
|
|
43
|
+
import { type WorkersAIHelpers, type WorkersAIEnv } from './workers';
|
|
39
44
|
export type * from './types';
|
|
45
|
+
export type { WorkersAIHelpers, WorkersAIEnv } from './workers';
|
|
40
46
|
/**
|
|
41
47
|
* Get an AI service instance for the current request
|
|
42
48
|
*
|
|
43
49
|
* Automatically retrieves configuration from the environment.
|
|
50
|
+
* Prefers direct Workers AI (env.AI) if available, falls back to platform API.
|
|
44
51
|
*
|
|
45
52
|
* @param req - Optional: NextRequest, object with env property, or env object directly.
|
|
46
53
|
* If not provided, uses the env configured via configurePlatformEnv().
|
|
47
|
-
* @returns AI service provider instance
|
|
54
|
+
* @returns AI service provider instance (WorkersAIHelpers if using Workers AI)
|
|
48
55
|
*/
|
|
49
56
|
export declare function getAI(req?: AIRequest | {
|
|
50
|
-
env: AIEnv;
|
|
51
|
-
} | AIEnv):
|
|
57
|
+
env: AIEnv & WorkersAIEnv;
|
|
58
|
+
} | (AIEnv & WorkersAIEnv)): WorkersAIHelpers;
|
|
52
59
|
/**
|
|
53
60
|
* Create an AI service instance directly with config
|
|
54
61
|
*
|
package/dist/ai/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,KAAK,EAIN,MAAM,SAAS,CAAC;AAEjB,OAAO,EAA8B,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAGjG,mBAAmB,SAAS,CAAC;AAC7B,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKhE;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,GAAG,CAAC,EAAE,SAAS,GAAG;IAAE,GAAG,EAAE,KAAK,GAAG,YAAY,CAAA;CAAE,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,GACvE,gBAAgB,CA+DlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAGvF"}
|
package/dist/ai/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Edge AI Service
|
|
3
3
|
*
|
|
4
4
|
* Provides AI capabilities for user-generated tiles running on Cloudflare Workers/Pages.
|
|
5
|
-
*
|
|
5
|
+
* Supports both direct Cloudflare Workers AI (via env.AI binding) and platform API fallback.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* // Configure env once per request
|
|
14
14
|
* configurePlatformEnv(() => getCloudflareContext().env);
|
|
15
15
|
*
|
|
16
|
-
* const ai =
|
|
16
|
+
* const ai = getAI();
|
|
17
17
|
*
|
|
18
18
|
* // Simple text generation
|
|
19
19
|
* const answer = await ai.ask("Summarize this text: ...");
|
|
@@ -31,21 +31,27 @@
|
|
|
31
31
|
* images: [{ type: 'url', data: imageUrl }]
|
|
32
32
|
* });
|
|
33
33
|
*
|
|
34
|
+
* // Advanced: direct model access
|
|
35
|
+
* const embeddings = await ai.embed("text to embed");
|
|
36
|
+
* const image = await ai.generateImage("a beautiful sunset");
|
|
37
|
+
*
|
|
34
38
|
* return NextResponse.json({ answer });
|
|
35
39
|
* }
|
|
36
40
|
* ```
|
|
37
41
|
*/
|
|
38
42
|
import { getPlatformEnv, isPlatformEnvConfigured } from '../env';
|
|
43
|
+
import { createWorkersAIWithHelpers } from './workers';
|
|
39
44
|
// Default platform API URL
|
|
40
45
|
const DEFAULT_PLATFORM_API = 'https://api.thewhatever.app';
|
|
41
46
|
/**
|
|
42
47
|
* Get an AI service instance for the current request
|
|
43
48
|
*
|
|
44
49
|
* Automatically retrieves configuration from the environment.
|
|
50
|
+
* Prefers direct Workers AI (env.AI) if available, falls back to platform API.
|
|
45
51
|
*
|
|
46
52
|
* @param req - Optional: NextRequest, object with env property, or env object directly.
|
|
47
53
|
* If not provided, uses the env configured via configurePlatformEnv().
|
|
48
|
-
* @returns AI service provider instance
|
|
54
|
+
* @returns AI service provider instance (WorkersAIHelpers if using Workers AI)
|
|
49
55
|
*/
|
|
50
56
|
export function getAI(req) {
|
|
51
57
|
let env;
|
|
@@ -60,7 +66,7 @@ export function getAI(req) {
|
|
|
60
66
|
else if ('env' in req) {
|
|
61
67
|
env = req.env;
|
|
62
68
|
}
|
|
63
|
-
else if ('PLATFORM_API_KEY' in req || 'PLATFORM_API_URL' in req || 'TILE_ID' in req) {
|
|
69
|
+
else if ('PLATFORM_API_KEY' in req || 'PLATFORM_API_URL' in req || 'TILE_ID' in req || 'AI' in req) {
|
|
64
70
|
// Direct env object
|
|
65
71
|
env = req;
|
|
66
72
|
}
|
|
@@ -70,12 +76,38 @@ export function getAI(req) {
|
|
|
70
76
|
if (!env) {
|
|
71
77
|
throw new Error('No environment found in request. Ensure you are running in edge runtime.');
|
|
72
78
|
}
|
|
79
|
+
// Prefer Workers AI if available
|
|
80
|
+
if (env.AI) {
|
|
81
|
+
return createWorkersAIWithHelpers(env.AI);
|
|
82
|
+
}
|
|
83
|
+
// Fall back to platform API
|
|
73
84
|
const apiUrl = env.PLATFORM_API_URL || DEFAULT_PLATFORM_API;
|
|
74
85
|
const apiKey = env.PLATFORM_API_KEY;
|
|
75
86
|
if (!apiKey) {
|
|
76
|
-
throw new Error('No
|
|
87
|
+
throw new Error('No AI binding or PLATFORM_API_KEY found. ' +
|
|
88
|
+
'Add AI binding to wrangler.jsonc or set PLATFORM_API_KEY secret.');
|
|
77
89
|
}
|
|
78
|
-
|
|
90
|
+
// Platform API doesn't support all helper methods, so we need to create a compatible wrapper
|
|
91
|
+
const baseProvider = createAIProvider(apiUrl, apiKey);
|
|
92
|
+
// Return with stub implementations for helpers (not supported via platform API)
|
|
93
|
+
return {
|
|
94
|
+
...baseProvider,
|
|
95
|
+
async embed() {
|
|
96
|
+
throw new Error('embed() requires Workers AI binding (env.AI). Platform API does not support embeddings.');
|
|
97
|
+
},
|
|
98
|
+
async generateImage() {
|
|
99
|
+
throw new Error('generateImage() requires Workers AI binding (env.AI). Platform API does not support image generation.');
|
|
100
|
+
},
|
|
101
|
+
async transcribe() {
|
|
102
|
+
throw new Error('transcribe() requires Workers AI binding (env.AI). Platform API does not support speech recognition.');
|
|
103
|
+
},
|
|
104
|
+
async translate() {
|
|
105
|
+
throw new Error('translate() requires Workers AI binding (env.AI). Platform API does not support translation.');
|
|
106
|
+
},
|
|
107
|
+
async run() {
|
|
108
|
+
throw new Error('run() requires Workers AI binding (env.AI). Use ask() or prompt() instead.');
|
|
109
|
+
},
|
|
110
|
+
};
|
|
79
111
|
}
|
|
80
112
|
/**
|
|
81
113
|
* Create an AI service instance directly with config
|
package/dist/ai/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Namespace API - Convenience wrappers
|
|
3
|
+
*
|
|
4
|
+
* Provides a clean namespace-based API for common AI tasks
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { ai } from '@thewhateverapp/platform';
|
|
9
|
+
*
|
|
10
|
+
* // Simple text generation
|
|
11
|
+
* const answer = await ai.chat("What is TypeScript?");
|
|
12
|
+
*
|
|
13
|
+
* // Generate embeddings
|
|
14
|
+
* const vectors = await ai.embed(["hello world", "foo bar"]);
|
|
15
|
+
*
|
|
16
|
+
* // Generate image
|
|
17
|
+
* const imageBuffer = await ai.generateImage("a sunset over mountains");
|
|
18
|
+
*
|
|
19
|
+
* // Advanced usage with full control
|
|
20
|
+
* const ai = getAI();
|
|
21
|
+
* const response = await ai.prompt({ ... });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import type { AskOptions, PromptRequest } from './types';
|
|
25
|
+
/**
|
|
26
|
+
* AI namespace with convenient helper methods
|
|
27
|
+
*/
|
|
28
|
+
export declare const ai: {
|
|
29
|
+
/**
|
|
30
|
+
* Simple chat/text generation
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const answer = await ai.chat("Explain quantum computing in simple terms");
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
chat(prompt: string, options?: AskOptions): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Generate text embeddings for semantic search
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const embeddings = await ai.embed("search query");
|
|
44
|
+
* const multipleEmbeddings = await ai.embed(["query 1", "query 2"]);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
embed(text: string | string[]): Promise<number[][]>;
|
|
48
|
+
/**
|
|
49
|
+
* Generate an image from a text prompt
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const imageBuffer = await ai.generateImage("a beautiful sunset over mountains");
|
|
54
|
+
* const blob = new Blob([imageBuffer], { type: 'image/png' });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
generateImage(prompt: string, options?: {
|
|
58
|
+
model?: string;
|
|
59
|
+
width?: number;
|
|
60
|
+
height?: number;
|
|
61
|
+
steps?: number;
|
|
62
|
+
}): Promise<ArrayBuffer>;
|
|
63
|
+
/**
|
|
64
|
+
* Transcribe audio to text
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const audioBlob = await fetch('/audio.mp3').then(r => r.blob());
|
|
69
|
+
* const transcript = await ai.transcribe(audioBlob);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
transcribe(audio: ArrayBuffer | Blob, options?: {
|
|
73
|
+
model?: string;
|
|
74
|
+
language?: string;
|
|
75
|
+
}): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Translate text between languages
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const spanish = await ai.translate("Hello, world!", "es");
|
|
82
|
+
* const french = await ai.translate("Hello, world!", "fr", "en");
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
translate(text: string, targetLang: string, sourceLang?: string): Promise<string>;
|
|
86
|
+
/**
|
|
87
|
+
* Advanced: Full prompt with detailed options and response
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const response = await ai.prompt({
|
|
92
|
+
* prompt: "Describe this image",
|
|
93
|
+
* capabilities: ['vision'],
|
|
94
|
+
* images: [{ type: 'url', data: 'https://example.com/image.jpg' }],
|
|
95
|
+
* maxTokens: 500
|
|
96
|
+
* });
|
|
97
|
+
* console.log(response.text);
|
|
98
|
+
* console.log(response.tokensUsed);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
prompt(request: PromptRequest): Promise<import("./types").PromptResponse>;
|
|
102
|
+
/**
|
|
103
|
+
* Run a specific model directly with custom options
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const result = await ai.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
108
|
+
* prompt: "Hello!",
|
|
109
|
+
* max_tokens: 100
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
run<T = any>(model: string, options: any): Promise<T>;
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/ai/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,EAAE;IACb;;;;;;;OAOG;iBACgB,MAAM,YAAY,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjE;;;;;;;;OAQG;gBACe,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAKzD;;;;;;;;OAQG;0BAEO,MAAM,YACJ;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,WAAW,CAAC;IAKvB;;;;;;;;OAQG;sBAEM,WAAW,GAAG,IAAI,YACf;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;OAQG;oBAEK,MAAM,cACA,MAAM,eACL,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;;;;;;;;;OAcG;oBACmB,aAAa;IAKnC;;;;;;;;;;OAUG;QACO,CAAC,eAAe,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAI5D,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Namespace API - Convenience wrappers
|
|
3
|
+
*
|
|
4
|
+
* Provides a clean namespace-based API for common AI tasks
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { ai } from '@thewhateverapp/platform';
|
|
9
|
+
*
|
|
10
|
+
* // Simple text generation
|
|
11
|
+
* const answer = await ai.chat("What is TypeScript?");
|
|
12
|
+
*
|
|
13
|
+
* // Generate embeddings
|
|
14
|
+
* const vectors = await ai.embed(["hello world", "foo bar"]);
|
|
15
|
+
*
|
|
16
|
+
* // Generate image
|
|
17
|
+
* const imageBuffer = await ai.generateImage("a sunset over mountains");
|
|
18
|
+
*
|
|
19
|
+
* // Advanced usage with full control
|
|
20
|
+
* const ai = getAI();
|
|
21
|
+
* const response = await ai.prompt({ ... });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { getAI } from './index';
|
|
25
|
+
/**
|
|
26
|
+
* AI namespace with convenient helper methods
|
|
27
|
+
*/
|
|
28
|
+
export const ai = {
|
|
29
|
+
/**
|
|
30
|
+
* Simple chat/text generation
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const answer = await ai.chat("Explain quantum computing in simple terms");
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
async chat(prompt, options) {
|
|
38
|
+
const provider = getAI();
|
|
39
|
+
return provider.ask(prompt, options);
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Generate text embeddings for semantic search
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const embeddings = await ai.embed("search query");
|
|
47
|
+
* const multipleEmbeddings = await ai.embed(["query 1", "query 2"]);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
async embed(text) {
|
|
51
|
+
const provider = getAI();
|
|
52
|
+
return provider.embed(text);
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Generate an image from a text prompt
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const imageBuffer = await ai.generateImage("a beautiful sunset over mountains");
|
|
60
|
+
* const blob = new Blob([imageBuffer], { type: 'image/png' });
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
async generateImage(prompt, options) {
|
|
64
|
+
const provider = getAI();
|
|
65
|
+
return provider.generateImage(prompt, options);
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Transcribe audio to text
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const audioBlob = await fetch('/audio.mp3').then(r => r.blob());
|
|
73
|
+
* const transcript = await ai.transcribe(audioBlob);
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
async transcribe(audio, options) {
|
|
77
|
+
const provider = getAI();
|
|
78
|
+
return provider.transcribe(audio, options);
|
|
79
|
+
},
|
|
80
|
+
/**
|
|
81
|
+
* Translate text between languages
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const spanish = await ai.translate("Hello, world!", "es");
|
|
86
|
+
* const french = await ai.translate("Hello, world!", "fr", "en");
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
async translate(text, targetLang, sourceLang) {
|
|
90
|
+
const provider = getAI();
|
|
91
|
+
return provider.translate(text, targetLang, sourceLang);
|
|
92
|
+
},
|
|
93
|
+
/**
|
|
94
|
+
* Advanced: Full prompt with detailed options and response
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const response = await ai.prompt({
|
|
99
|
+
* prompt: "Describe this image",
|
|
100
|
+
* capabilities: ['vision'],
|
|
101
|
+
* images: [{ type: 'url', data: 'https://example.com/image.jpg' }],
|
|
102
|
+
* maxTokens: 500
|
|
103
|
+
* });
|
|
104
|
+
* console.log(response.text);
|
|
105
|
+
* console.log(response.tokensUsed);
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
async prompt(request) {
|
|
109
|
+
const provider = getAI();
|
|
110
|
+
return provider.prompt(request);
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* Run a specific model directly with custom options
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const result = await ai.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
118
|
+
* prompt: "Hello!",
|
|
119
|
+
* max_tokens: 100
|
|
120
|
+
* });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async run(model, options) {
|
|
124
|
+
const provider = getAI();
|
|
125
|
+
return provider.run(model, options);
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/ai/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAoB;QAC7C,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,IAAuB;QACjC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,OAKC;QAED,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CACd,KAAyB,EACzB,OAGC;QAED,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,UAAkB,EAClB,UAAmB;QAEnB,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,CAAU,KAAa,EAAE,OAAY;QAC5C,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,GAAG,CAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers AI Provider
|
|
3
|
+
*
|
|
4
|
+
* Direct access to Cloudflare's AI models via env.AI.run()
|
|
5
|
+
* Supports text generation, embeddings, image generation, speech recognition, etc.
|
|
6
|
+
*/
|
|
7
|
+
import type { AIServiceProvider } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Cloudflare AI binding interface
|
|
10
|
+
*/
|
|
11
|
+
interface CloudflareAI {
|
|
12
|
+
run<T = any>(model: string, options: any): Promise<T>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extended environment with Cloudflare AI binding
|
|
16
|
+
*/
|
|
17
|
+
export interface WorkersAIEnv {
|
|
18
|
+
AI?: CloudflareAI;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create Workers AI provider
|
|
22
|
+
*/
|
|
23
|
+
export declare function createWorkersAI(ai: CloudflareAI): AIServiceProvider;
|
|
24
|
+
/**
|
|
25
|
+
* High-level AI namespace with helper functions
|
|
26
|
+
*/
|
|
27
|
+
export interface WorkersAIHelpers extends AIServiceProvider {
|
|
28
|
+
/**
|
|
29
|
+
* Generate text embeddings for semantic search
|
|
30
|
+
* @param text - Text or array of texts to embed
|
|
31
|
+
* @returns Array of embedding vectors
|
|
32
|
+
*/
|
|
33
|
+
embed(text: string | string[]): Promise<number[][]>;
|
|
34
|
+
/**
|
|
35
|
+
* Generate an image from a text prompt
|
|
36
|
+
* @param prompt - Description of the image to generate
|
|
37
|
+
* @param options - Image generation options
|
|
38
|
+
* @returns Image as ArrayBuffer
|
|
39
|
+
*/
|
|
40
|
+
generateImage(prompt: string, options?: {
|
|
41
|
+
model?: string;
|
|
42
|
+
width?: number;
|
|
43
|
+
height?: number;
|
|
44
|
+
steps?: number;
|
|
45
|
+
}): Promise<ArrayBuffer>;
|
|
46
|
+
/**
|
|
47
|
+
* Transcribe audio to text
|
|
48
|
+
* @param audio - Audio file as ArrayBuffer or Blob
|
|
49
|
+
* @param options - Transcription options
|
|
50
|
+
* @returns Transcribed text
|
|
51
|
+
*/
|
|
52
|
+
transcribe(audio: ArrayBuffer | Blob, options?: {
|
|
53
|
+
model?: string;
|
|
54
|
+
language?: string;
|
|
55
|
+
}): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Translate text between languages
|
|
58
|
+
* @param text - Text to translate
|
|
59
|
+
* @param targetLang - Target language code (e.g., 'es', 'fr', 'de')
|
|
60
|
+
* @param sourceLang - Source language code (auto-detected if not provided)
|
|
61
|
+
* @returns Translated text
|
|
62
|
+
*/
|
|
63
|
+
translate(text: string, targetLang: string, sourceLang?: string): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Run a model directly with custom options
|
|
66
|
+
* @param model - Model ID (e.g., '@cf/meta/llama-3.1-8b-instruct')
|
|
67
|
+
* @param options - Model-specific options
|
|
68
|
+
* @returns Model response
|
|
69
|
+
*/
|
|
70
|
+
run<T = any>(model: string, options: any): Promise<T>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create enhanced Workers AI provider with helper functions
|
|
74
|
+
*/
|
|
75
|
+
export declare function createWorkersAIWithHelpers(ai: CloudflareAI): WorkersAIHelpers;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=workers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../src/ai/workers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,UAAU,YAAY;IACpB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,YAAY,CAAC;CACnB;AAoDD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,iBAAiB,CAkFnE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEpD;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB;;;;;OAKG;IACH,UAAU,CACR,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;;;;OAKG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,YAAY,GAAG,gBAAgB,CA6E7E"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Workers AI Provider
|
|
3
|
+
*
|
|
4
|
+
* Direct access to Cloudflare's AI models via env.AI.run()
|
|
5
|
+
* Supports text generation, embeddings, image generation, speech recognition, etc.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Model selection based on capabilities
|
|
9
|
+
*/
|
|
10
|
+
function selectModel(capabilities) {
|
|
11
|
+
if (!capabilities || capabilities.length === 0) {
|
|
12
|
+
// Default: fast general-purpose model
|
|
13
|
+
return '@cf/meta/llama-3.1-8b-instruct-fast';
|
|
14
|
+
}
|
|
15
|
+
const caps = new Set(capabilities);
|
|
16
|
+
// Vision models
|
|
17
|
+
if (caps.has('vision')) {
|
|
18
|
+
return '@cf/meta/llama-3.2-11b-vision-instruct';
|
|
19
|
+
}
|
|
20
|
+
// Coding models
|
|
21
|
+
if (caps.has('coding')) {
|
|
22
|
+
return '@cf/qwen/qwen2.5-coder-32b-instruct';
|
|
23
|
+
}
|
|
24
|
+
// Reasoning models
|
|
25
|
+
if (caps.has('reasoning')) {
|
|
26
|
+
return '@cf/qwen/qwq-32b';
|
|
27
|
+
}
|
|
28
|
+
// Fast models
|
|
29
|
+
if (caps.has('fast')) {
|
|
30
|
+
return '@cf/meta/llama-3.1-8b-instruct-fast';
|
|
31
|
+
}
|
|
32
|
+
// Long context models
|
|
33
|
+
if (caps.has('long-context')) {
|
|
34
|
+
return '@cf/meta/llama-3.1-70b-instruct';
|
|
35
|
+
}
|
|
36
|
+
// Cost-effective models
|
|
37
|
+
if (caps.has('cost-effective')) {
|
|
38
|
+
return '@cf/meta/llama-3.2-1b-instruct';
|
|
39
|
+
}
|
|
40
|
+
// Creative models
|
|
41
|
+
if (caps.has('creative')) {
|
|
42
|
+
return '@cf/meta/llama-3.1-8b-instruct';
|
|
43
|
+
}
|
|
44
|
+
// Default fallback
|
|
45
|
+
return '@cf/meta/llama-3.1-8b-instruct-fast';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create Workers AI provider
|
|
49
|
+
*/
|
|
50
|
+
export function createWorkersAI(ai) {
|
|
51
|
+
return {
|
|
52
|
+
async ask(prompt, options) {
|
|
53
|
+
const model = selectModel(options?.capabilities);
|
|
54
|
+
const response = await ai.run(model, {
|
|
55
|
+
prompt,
|
|
56
|
+
max_tokens: options?.maxTokens,
|
|
57
|
+
temperature: options?.temperature,
|
|
58
|
+
});
|
|
59
|
+
return response.response || '';
|
|
60
|
+
},
|
|
61
|
+
async prompt(request) {
|
|
62
|
+
const model = request.model || selectModel(request.capabilities);
|
|
63
|
+
// Build messages array
|
|
64
|
+
const messages = [];
|
|
65
|
+
// Add system message if provided
|
|
66
|
+
if (request.systemPrompt) {
|
|
67
|
+
messages.push({
|
|
68
|
+
role: 'system',
|
|
69
|
+
content: request.systemPrompt,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// Add user message with optional images
|
|
73
|
+
if (request.images && request.images.length > 0) {
|
|
74
|
+
// Vision model - include images
|
|
75
|
+
const content = [{ type: 'text', text: request.prompt }];
|
|
76
|
+
for (const img of request.images) {
|
|
77
|
+
if (img.type === 'url') {
|
|
78
|
+
content.push({
|
|
79
|
+
type: 'image_url',
|
|
80
|
+
image_url: { url: img.data },
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else if (img.type === 'base64') {
|
|
84
|
+
content.push({
|
|
85
|
+
type: 'image_url',
|
|
86
|
+
image_url: {
|
|
87
|
+
url: `data:${img.mimeType || 'image/jpeg'};base64,${img.data}`,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
messages.push({ role: 'user', content });
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Text-only
|
|
96
|
+
messages.push({ role: 'user', content: request.prompt });
|
|
97
|
+
}
|
|
98
|
+
// Run the model
|
|
99
|
+
const response = await ai.run(model, {
|
|
100
|
+
messages,
|
|
101
|
+
max_tokens: request.maxTokens,
|
|
102
|
+
temperature: request.temperature,
|
|
103
|
+
});
|
|
104
|
+
// Extract text from response (different models return different formats)
|
|
105
|
+
let text = '';
|
|
106
|
+
if (response.response) {
|
|
107
|
+
text = response.response;
|
|
108
|
+
}
|
|
109
|
+
else if (response.choices && response.choices.length > 0) {
|
|
110
|
+
text = response.choices[0].message?.content || response.choices[0].text || '';
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
text,
|
|
114
|
+
provider: 'cloudflare',
|
|
115
|
+
model,
|
|
116
|
+
tokensUsed: {
|
|
117
|
+
input: 0, // Workers AI doesn't return token counts
|
|
118
|
+
output: 0,
|
|
119
|
+
total: 0,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Create enhanced Workers AI provider with helper functions
|
|
127
|
+
*/
|
|
128
|
+
export function createWorkersAIWithHelpers(ai) {
|
|
129
|
+
const baseProvider = createWorkersAI(ai);
|
|
130
|
+
return {
|
|
131
|
+
...baseProvider,
|
|
132
|
+
async embed(text) {
|
|
133
|
+
const texts = Array.isArray(text) ? text : [text];
|
|
134
|
+
const model = '@cf/baai/bge-large-en-v1.5';
|
|
135
|
+
const results = await Promise.all(texts.map((t) => ai.run(model, { text: t })));
|
|
136
|
+
return results.map((r) => r.data[0]);
|
|
137
|
+
},
|
|
138
|
+
async generateImage(prompt, options) {
|
|
139
|
+
const model = options?.model || '@cf/black-forest-labs/flux-1-schnell';
|
|
140
|
+
const response = await ai.run(model, {
|
|
141
|
+
prompt,
|
|
142
|
+
num_steps: options?.steps || 4,
|
|
143
|
+
});
|
|
144
|
+
return response;
|
|
145
|
+
},
|
|
146
|
+
async transcribe(audio, options) {
|
|
147
|
+
const model = options?.model || '@cf/openai/whisper-large-v3-turbo';
|
|
148
|
+
// Convert Blob to ArrayBuffer if needed
|
|
149
|
+
const audioBuffer = audio instanceof Blob ? await audio.arrayBuffer() : audio;
|
|
150
|
+
const response = await ai.run(model, {
|
|
151
|
+
audio: Array.from(new Uint8Array(audioBuffer)),
|
|
152
|
+
language: options?.language,
|
|
153
|
+
});
|
|
154
|
+
return response.text || response.vtt || '';
|
|
155
|
+
},
|
|
156
|
+
async translate(text, targetLang, sourceLang) {
|
|
157
|
+
// Use multilingual translation model
|
|
158
|
+
const model = '@cf/meta/m2m100-1.2b';
|
|
159
|
+
const response = await ai.run(model, {
|
|
160
|
+
text,
|
|
161
|
+
source_lang: sourceLang || 'en',
|
|
162
|
+
target_lang: targetLang,
|
|
163
|
+
});
|
|
164
|
+
return response.translated_text;
|
|
165
|
+
},
|
|
166
|
+
async run(model, options) {
|
|
167
|
+
return ai.run(model, options);
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=workers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workers.js","sourceRoot":"","sources":["../../src/ai/workers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -37,7 +37,8 @@ export type { StorageProvider, StorageObject, StorageMetadata, ListOptions as St
|
|
|
37
37
|
export { getPublicStorage, createPublicStorage, resetPublicStorage, } from './public-storage';
|
|
38
38
|
export type { PublicStorageProvider, PublicStorageUploadOptions, PublicStorageUploadResult, } from './public-storage';
|
|
39
39
|
export { getAI, createAI } from './ai';
|
|
40
|
-
export
|
|
40
|
+
export { ai } from './ai/namespace';
|
|
41
|
+
export type { AIServiceProvider, AIProvider, AICapability, AskOptions, PromptRequest, PromptResponse, ImageInput, WorkersAIHelpers, WorkersAIEnv, } from './ai';
|
|
41
42
|
export { getTileState } from './tile-state';
|
|
42
43
|
export type { TileStateProvider, Comment, Report, } from './tile-state/types';
|
|
43
44
|
export { getTileContext, clearTileContextCache } from './tile-context';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9D,mBAAmB,SAAS,CAAC;AAO7B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACjD,YAAY,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,IAAI,kBAAkB,EACjC,UAAU,IAAI,iBAAiB,EAC/B,UAAU,IAAI,iBAAiB,EAC/B,SAAS,IAAI,gBAAgB,EAC7B,UAAU,IAAI,iBAAiB,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,YAAY,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -39,8 +39,9 @@ export { getKV, createKV } from './kv';
|
|
|
39
39
|
export { getStorage, createStorage } from './r2';
|
|
40
40
|
// Public Storage - Public file uploads via platform-api (CDN-backed)
|
|
41
41
|
export { getPublicStorage, createPublicStorage, resetPublicStorage, } from './public-storage';
|
|
42
|
-
// AI - Artificial Intelligence (
|
|
42
|
+
// AI - Artificial Intelligence (Cloudflare Workers AI + Platform API)
|
|
43
43
|
export { getAI, createAI } from './ai';
|
|
44
|
+
export { ai } from './ai/namespace';
|
|
44
45
|
// Tile State - Durable Objects for real-time state
|
|
45
46
|
export { getTileState } from './tile-state';
|
|
46
47
|
// Tile Context - Server-side authentication for tile API routes
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAGf,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAEhF,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAazD,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAYjD,qEAAqE;AACrE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAO1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0EAA0E;AAC1E,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAGf,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9D,gFAAgF;AAChF,mEAAmE;AACnE,gFAAgF;AAEhF,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAazD,yCAAyC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,gCAAgC;AAChC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAYjD,qEAAqE;AACrE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAO1B,sEAAsE;AACtE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAapC,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAO5C,gEAAgE;AAChE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAOvE,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAetG,0FAA0F;AAC1F,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAsB7E,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,22 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cloudflare KV provider implementation
|
|
3
3
|
*
|
|
4
|
-
* Direct wrapper around Cloudflare KV with consistent API
|
|
4
|
+
* Direct wrapper around Cloudflare KV with consistent API.
|
|
5
|
+
*
|
|
6
|
+
* IMPORTANT: This provider has explicit string and JSON operations:
|
|
7
|
+
* - put/get: For raw strings only
|
|
8
|
+
* - putJson/getJson: For objects (automatic serialization)
|
|
5
9
|
*/
|
|
6
|
-
import type { KVProvider,
|
|
10
|
+
import type { KVProvider, KVSetOptions, KVListOptions, KVListResult, KVMetadata } from '../types';
|
|
7
11
|
/**
|
|
8
12
|
* Cloudflare KV implementation
|
|
9
13
|
*/
|
|
10
14
|
export declare class CloudflareKV implements KVProvider {
|
|
11
15
|
private kv;
|
|
12
16
|
constructor(kv: KVNamespace);
|
|
13
|
-
get<T = string>(key: string, type?: KVValueType): Promise<T | null>;
|
|
14
|
-
put(key: string, value: KVValue, options?: KVSetOptions): Promise<void>;
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
18
|
+
* Get a string value by key
|
|
19
|
+
* Returns the raw string value, no automatic parsing
|
|
20
|
+
*/
|
|
21
|
+
get(key: string): Promise<string | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Store a string value by key
|
|
24
|
+
* For objects, use putJson() instead
|
|
25
|
+
*/
|
|
26
|
+
put(key: string, value: string, options?: KVSetOptions): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Get a JSON value by key (automatically parsed)
|
|
29
|
+
*/
|
|
30
|
+
getJson<T = unknown>(key: string): Promise<T | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Store a JSON value by key (automatically serialized)
|
|
33
|
+
*/
|
|
34
|
+
putJson<T = unknown>(key: string, value: T, options?: KVSetOptions): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Alias for put() - for backwards compatibility
|
|
17
37
|
* @internal
|
|
18
38
|
*/
|
|
19
|
-
set(key: string, value:
|
|
39
|
+
set(key: string, value: string, options?: KVSetOptions): Promise<void>;
|
|
20
40
|
delete(key: string): Promise<void>;
|
|
21
41
|
deleteMany(keys: string[]): Promise<void>;
|
|
22
42
|
has(key: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-kv.d.ts","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.d.ts","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,YAAa,YAAW,UAAU;IACjC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,WAAW;IAEnC;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI9C;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAiB1D;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxF;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,IAAI,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BpD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAY1D;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAQjE;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAGlE"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cloudflare KV provider implementation
|
|
3
3
|
*
|
|
4
|
-
* Direct wrapper around Cloudflare KV with consistent API
|
|
4
|
+
* Direct wrapper around Cloudflare KV with consistent API.
|
|
5
|
+
*
|
|
6
|
+
* IMPORTANT: This provider has explicit string and JSON operations:
|
|
7
|
+
* - put/get: For raw strings only
|
|
8
|
+
* - putJson/getJson: For objects (automatic serialization)
|
|
5
9
|
*/
|
|
6
10
|
/**
|
|
7
11
|
* Cloudflare KV implementation
|
|
@@ -11,52 +15,22 @@ export class CloudflareKV {
|
|
|
11
15
|
constructor(kv) {
|
|
12
16
|
this.kv = kv;
|
|
13
17
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
// Auto-detect JSON: if it looks like JSON object or array, try to parse it
|
|
21
|
-
const trimmed = value.trim();
|
|
22
|
-
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
|
|
23
|
-
(trimmed.startsWith('[') && trimmed.endsWith(']'))) {
|
|
24
|
-
try {
|
|
25
|
-
return JSON.parse(value);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// Not valid JSON, return as string
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return value;
|
|
33
|
-
}
|
|
34
|
-
case 'json':
|
|
35
|
-
return (await this.kv.get(key, 'json'));
|
|
36
|
-
case 'arrayBuffer':
|
|
37
|
-
return (await this.kv.get(key, 'arrayBuffer'));
|
|
38
|
-
case 'stream':
|
|
39
|
-
return (await this.kv.get(key, 'stream'));
|
|
40
|
-
default: {
|
|
41
|
-
const value = await this.kv.get(key, 'text');
|
|
42
|
-
if (value === null)
|
|
43
|
-
return null;
|
|
44
|
-
// Auto-detect JSON for default case too
|
|
45
|
-
const trimmed = value.trim();
|
|
46
|
-
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
|
|
47
|
-
(trimmed.startsWith('[') && trimmed.endsWith(']'))) {
|
|
48
|
-
try {
|
|
49
|
-
return JSON.parse(value);
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return value;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return value;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
18
|
+
/**
|
|
19
|
+
* Get a string value by key
|
|
20
|
+
* Returns the raw string value, no automatic parsing
|
|
21
|
+
*/
|
|
22
|
+
async get(key) {
|
|
23
|
+
return this.kv.get(key, 'text');
|
|
58
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Store a string value by key
|
|
27
|
+
* For objects, use putJson() instead
|
|
28
|
+
*/
|
|
59
29
|
async put(key, value, options) {
|
|
30
|
+
if (typeof value !== 'string') {
|
|
31
|
+
throw new Error(`kv.put() only accepts strings. Got ${typeof value}. ` +
|
|
32
|
+
`For objects, use kv.putJson() instead.`);
|
|
33
|
+
}
|
|
60
34
|
const kvOptions = {};
|
|
61
35
|
if (options?.ttl) {
|
|
62
36
|
kvOptions.expirationTtl = options.ttl;
|
|
@@ -64,23 +38,41 @@ export class CloudflareKV {
|
|
|
64
38
|
if (options?.metadata) {
|
|
65
39
|
kvOptions.metadata = options.metadata;
|
|
66
40
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
41
|
+
await this.kv.put(key, value, kvOptions);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a JSON value by key (automatically parsed)
|
|
45
|
+
*/
|
|
46
|
+
async getJson(key) {
|
|
47
|
+
const value = await this.kv.get(key, 'text');
|
|
48
|
+
if (value === null)
|
|
49
|
+
return null;
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(value);
|
|
70
52
|
}
|
|
71
|
-
|
|
72
|
-
|
|
53
|
+
catch (error) {
|
|
54
|
+
// Log warning for debugging corrupted data
|
|
55
|
+
console.warn(`[KV] getJson('${key}'): Failed to parse stored value. ` +
|
|
56
|
+
`Value starts with: "${value.slice(0, 50)}...". ` +
|
|
57
|
+
`This may indicate corrupted data.`);
|
|
58
|
+
return null;
|
|
73
59
|
}
|
|
74
|
-
|
|
75
|
-
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Store a JSON value by key (automatically serialized)
|
|
63
|
+
*/
|
|
64
|
+
async putJson(key, value, options) {
|
|
65
|
+
const kvOptions = {};
|
|
66
|
+
if (options?.ttl) {
|
|
67
|
+
kvOptions.expirationTtl = options.ttl;
|
|
76
68
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
await this.kv.put(key, JSON.stringify(value), kvOptions);
|
|
69
|
+
if (options?.metadata) {
|
|
70
|
+
kvOptions.metadata = options.metadata;
|
|
80
71
|
}
|
|
72
|
+
await this.kv.put(key, JSON.stringify(value), kvOptions);
|
|
81
73
|
}
|
|
82
74
|
/**
|
|
83
|
-
* Alias for put() -
|
|
75
|
+
* Alias for put() - for backwards compatibility
|
|
84
76
|
* @internal
|
|
85
77
|
*/
|
|
86
78
|
async set(key, value, options) {
|
|
@@ -133,7 +125,7 @@ export class CloudflareKV {
|
|
|
133
125
|
* Note: KV doesn't support atomic operations, so this is best-effort
|
|
134
126
|
*/
|
|
135
127
|
async increment(key, amount = 1) {
|
|
136
|
-
const current = await this.get(key
|
|
128
|
+
const current = await this.get(key);
|
|
137
129
|
const currentValue = current ? parseInt(current, 10) : 0;
|
|
138
130
|
const newValue = currentValue + amount;
|
|
139
131
|
await this.put(key, String(newValue));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare-kv.js","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloudflare-kv.js","sourceRoot":"","sources":["../../../src/kv/providers/cloudflare-kv.ts"],"names":[],"mappings":"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"}
|
package/dist/kv/types.d.ts
CHANGED
|
@@ -6,26 +6,43 @@
|
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* Main KV provider interface
|
|
9
|
+
*
|
|
10
|
+
* IMPORTANT: String operations (put/get) and JSON operations (putJson/getJson) are explicit.
|
|
11
|
+
* - Use put/get for raw strings
|
|
12
|
+
* - Use putJson/getJson for objects (automatic serialization)
|
|
9
13
|
*/
|
|
10
14
|
export interface KVProvider {
|
|
11
15
|
/**
|
|
12
|
-
* Get a value by key
|
|
16
|
+
* Get a string value by key
|
|
17
|
+
* @param key - The key to retrieve
|
|
18
|
+
* @returns The raw string value or null if not found
|
|
19
|
+
*/
|
|
20
|
+
get(key: string): Promise<string | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Store a string value by key
|
|
23
|
+
* @param key - The key to store
|
|
24
|
+
* @param value - The string value to store
|
|
25
|
+
* @param options - Optional storage options (TTL, metadata)
|
|
26
|
+
*/
|
|
27
|
+
put(key: string, value: string, options?: KVSetOptions): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get a JSON value by key (automatically parsed)
|
|
13
30
|
* @param key - The key to retrieve
|
|
14
|
-
* @
|
|
31
|
+
* @returns The parsed object or null if not found
|
|
15
32
|
*/
|
|
16
|
-
|
|
33
|
+
getJson<T = unknown>(key: string): Promise<T | null>;
|
|
17
34
|
/**
|
|
18
|
-
* Store a value by key (
|
|
35
|
+
* Store a JSON value by key (automatically serialized)
|
|
19
36
|
* @param key - The key to store
|
|
20
|
-
* @param value - The value to store
|
|
37
|
+
* @param value - The value to serialize and store
|
|
21
38
|
* @param options - Optional storage options (TTL, metadata)
|
|
22
39
|
*/
|
|
23
|
-
|
|
40
|
+
putJson<T = unknown>(key: string, value: T, options?: KVSetOptions): Promise<void>;
|
|
24
41
|
/**
|
|
25
42
|
* Alias for put() - undocumented, for backwards compatibility
|
|
26
43
|
* @internal
|
|
27
44
|
*/
|
|
28
|
-
set(key: string, value:
|
|
45
|
+
set(key: string, value: string, options?: KVSetOptions): Promise<void>;
|
|
29
46
|
/**
|
|
30
47
|
* Delete a value by key
|
|
31
48
|
* @param key - The key to delete
|
|
@@ -65,13 +82,14 @@ export interface KVProvider {
|
|
|
65
82
|
decrement?(key: string, amount?: number): Promise<number>;
|
|
66
83
|
}
|
|
67
84
|
/**
|
|
68
|
-
* Value types supported by KV
|
|
85
|
+
* Value types supported by KV (for binary operations)
|
|
69
86
|
*/
|
|
70
|
-
export type KVValueType = 'text' | '
|
|
87
|
+
export type KVValueType = 'text' | 'arrayBuffer' | 'stream';
|
|
71
88
|
/**
|
|
72
|
-
* Values that can be stored in KV
|
|
89
|
+
* Values that can be stored in KV via put()
|
|
90
|
+
* Note: For objects, use putJson() instead
|
|
73
91
|
*/
|
|
74
|
-
export type KVValue = string | ReadableStream | ArrayBuffer
|
|
92
|
+
export type KVValue = string | ReadableStream | ArrayBuffer;
|
|
75
93
|
/**
|
|
76
94
|
* Options for setting values
|
|
77
95
|
*/
|
package/dist/kv/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kv/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kv/types.ts"],"names":[],"mappings":"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"}
|