@thewhateverapp/platform 0.10.0 → 0.11.0

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.
@@ -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
- * Connects to the platform AI service for inference.
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 = await getAI();
16
+ * const ai = getAI();
17
17
  *
18
18
  * // Simple text generation
19
19
  * const answer = await ai.ask("Summarize this text: ...");
@@ -31,6 +31,10 @@
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
  * ```
@@ -40,11 +44,24 @@ export type * from './types';
40
44
  /**
41
45
  * Get an AI service instance for the current request
42
46
  *
43
- * Automatically retrieves configuration from the environment.
47
+ * Automatically detects available providers and routes requests appropriately.
48
+ * Supports Cloudflare Workers AI, Replicate, and Platform API (Anthropic/OpenAI/Google).
44
49
  *
45
50
  * @param req - Optional: NextRequest, object with env property, or env object directly.
46
51
  * If not provided, uses the env configured via configurePlatformEnv().
47
52
  * @returns AI service provider instance
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const ai = getAI();
57
+ *
58
+ * // Use default provider (auto-selected)
59
+ * const answer = await ai.ask("What is 2+2?");
60
+ *
61
+ * // Use specific provider
62
+ * const response = await ai.ask("Generate code", { provider: 'cloudflare', capabilities: ['coding'] });
63
+ * const replicateResponse = await ai.ask("Create art", { provider: 'replicate' });
64
+ * ```
48
65
  */
49
66
  export declare function getAI(req?: AIRequest | {
50
67
  env: AIEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,KAAK,EAIN,MAAM,SAAS,CAAC;AAIjB,mBAAmB,SAAS,CAAC;AAK7B;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CACnB,GAAG,CAAC,EAAE,SAAS,GAAG;IAAE,GAAG,EAAE,KAAK,CAAA;CAAE,GAAG,KAAK,GACvC,iBAAiB,CAmCnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAGvF"}
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;AAWjB,mBAAmB,SAAS,CAAC;AAK7B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CACnB,GAAG,CAAC,EAAE,SAAS,GAAG;IAAE,GAAG,EAAE,KAAK,CAAA;CAAE,GAAG,KAAK,GACvC,iBAAiB,CA2BnB;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
- * Connects to the platform AI service for inference.
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 = await getAI();
16
+ * const ai = getAI();
17
17
  *
18
18
  * // Simple text generation
19
19
  * const answer = await ai.ask("Summarize this text: ...");
@@ -31,21 +31,39 @@
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 { createCloudflareProvider, createReplicateProvider, createPlatformAPIProvider, detectAvailableProviders, selectProvider, } from './providers';
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
- * Automatically retrieves configuration from the environment.
49
+ * Automatically detects available providers and routes requests appropriately.
50
+ * Supports Cloudflare Workers AI, Replicate, and Platform API (Anthropic/OpenAI/Google).
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
54
  * @returns AI service provider instance
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const ai = getAI();
59
+ *
60
+ * // Use default provider (auto-selected)
61
+ * const answer = await ai.ask("What is 2+2?");
62
+ *
63
+ * // Use specific provider
64
+ * const response = await ai.ask("Generate code", { provider: 'cloudflare', capabilities: ['coding'] });
65
+ * const replicateResponse = await ai.ask("Create art", { provider: 'replicate' });
66
+ * ```
49
67
  */
50
68
  export function getAI(req) {
51
69
  let env;
@@ -60,7 +78,7 @@ export function getAI(req) {
60
78
  else if ('env' in req) {
61
79
  env = req.env;
62
80
  }
63
- else if ('PLATFORM_API_KEY' in req || 'PLATFORM_API_URL' in req || 'TILE_ID' in req) {
81
+ else if ('PLATFORM_API_KEY' in req || 'PLATFORM_API_URL' in req || 'TILE_ID' in req || 'AI' in req || 'REPLICATE_API_TOKEN' in req) {
64
82
  // Direct env object
65
83
  env = req;
66
84
  }
@@ -70,12 +88,8 @@ export function getAI(req) {
70
88
  if (!env) {
71
89
  throw new Error('No environment found in request. Ensure you are running in edge runtime.');
72
90
  }
73
- const apiUrl = env.PLATFORM_API_URL || DEFAULT_PLATFORM_API;
74
- const apiKey = env.PLATFORM_API_KEY;
75
- if (!apiKey) {
76
- throw new Error('No PLATFORM_API_KEY found in environment. Add PLATFORM_API_KEY to your wrangler.jsonc secrets.');
77
- }
78
- return createAIProvider(apiUrl, apiKey);
91
+ // Create a unified provider that routes to the appropriate backend
92
+ return createUnifiedProvider(env);
79
93
  }
80
94
  /**
81
95
  * Create an AI service instance directly with config
@@ -90,40 +104,60 @@ export function getAI(req) {
90
104
  */
91
105
  export function createAI(config) {
92
106
  const apiUrl = config.apiUrl || DEFAULT_PLATFORM_API;
93
- return createAIProvider(apiUrl, config.apiKey);
107
+ return createPlatformAPIProvider(apiUrl, config.apiKey);
94
108
  }
95
109
  /**
96
- * Internal: Create the AI provider implementation
110
+ * Internal: Create unified provider that routes to appropriate backend
97
111
  */
98
- function createAIProvider(apiUrl, apiKey) {
99
- async function request(endpoint, body) {
100
- const response = await fetch(`${apiUrl}/platform/ai${endpoint}`, {
101
- method: 'POST',
102
- headers: {
103
- 'Content-Type': 'application/json',
104
- 'X-API-Key': apiKey,
105
- },
106
- body: JSON.stringify(body),
107
- });
108
- if (!response.ok) {
109
- const error = await response.json().catch(() => ({}));
110
- throw new Error(error.error || `AI service error: ${response.statusText}`);
112
+ function createUnifiedProvider(env) {
113
+ const availableProviders = detectAvailableProviders(env);
114
+ if (availableProviders.length === 0) {
115
+ throw new Error('No AI providers configured. Set up one of: env.AI (Cloudflare Workers AI), ' +
116
+ 'REPLICATE_API_TOKEN, or PLATFORM_API_KEY.');
117
+ }
118
+ // Cache provider instances
119
+ const providerCache = new Map();
120
+ function getProviderInstance(providerName) {
121
+ if (providerCache.has(providerName)) {
122
+ return providerCache.get(providerName);
123
+ }
124
+ let instance;
125
+ switch (providerName) {
126
+ case 'cloudflare':
127
+ if (!env.AI)
128
+ throw new Error('Cloudflare Workers AI binding not available');
129
+ instance = createCloudflareProvider(env.AI);
130
+ break;
131
+ case 'replicate':
132
+ if (!env.REPLICATE_API_TOKEN)
133
+ throw new Error('REPLICATE_API_TOKEN not configured');
134
+ instance = createReplicateProvider(env.REPLICATE_API_TOKEN);
135
+ break;
136
+ case 'anthropic':
137
+ case 'openai':
138
+ case 'google':
139
+ if (!env.PLATFORM_API_KEY)
140
+ throw new Error('PLATFORM_API_KEY not configured');
141
+ const apiUrl = env.PLATFORM_API_URL || DEFAULT_PLATFORM_API;
142
+ instance = createPlatformAPIProvider(apiUrl, env.PLATFORM_API_KEY);
143
+ break;
144
+ default:
145
+ throw new Error(`Unknown provider: ${providerName}`);
111
146
  }
112
- return response.json();
147
+ providerCache.set(providerName, instance);
148
+ return instance;
113
149
  }
150
+ // Return unified provider that routes requests
114
151
  return {
115
152
  async ask(prompt, options) {
116
- const result = await request('/prompt', {
117
- prompt,
118
- provider: options?.provider,
119
- capabilities: options?.capabilities,
120
- maxTokens: options?.maxTokens,
121
- temperature: options?.temperature,
122
- });
123
- return result.text;
153
+ const provider = selectProvider(options?.provider, availableProviders);
154
+ const instance = getProviderInstance(provider);
155
+ return instance.ask(prompt, options);
124
156
  },
125
- async prompt(req) {
126
- return request('/prompt', req);
157
+ async prompt(request) {
158
+ const provider = selectProvider(request.provider, availableProviders);
159
+ const instance = getProviderInstance(provider);
160
+ return instance.prompt(request);
127
161
  },
128
162
  };
129
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAUH,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,GACf,MAAM,aAAa,CAAC;AAKrB,2BAA2B;AAC3B,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,KAAK,CACnB,GAAwC;IAExC,IAAI,GAAsB,CAAC;IAE3B,2DAA2D;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,wEAAwE;gBACtE,gHAAgH,CACnH,CAAC;QACJ,CAAC;QACD,GAAG,GAAG,cAAc,EAAW,CAAC;IAClC,CAAC;SAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IAChB,CAAC;SAAM,IAAI,kBAAkB,IAAI,GAAG,IAAI,kBAAkB,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,qBAAqB,IAAI,GAAG,EAAE,CAAC;QACrI,oBAAoB;QACpB,GAAG,GAAG,GAAY,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,GAAG,GAAI,GAAW,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IAED,mEAAmE;IACnE,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA2C;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAC;IACrD,OAAO,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,GAAU;IACvC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAEzD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6EAA6E;YAC3E,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEhE,SAAS,mBAAmB,CAAC,YAAoB;QAC/C,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QAC1C,CAAC;QAED,IAAI,QAA2B,CAAC;QAEhC,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,YAAY;gBACf,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC5E,QAAQ,GAAG,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5C,MAAM;YAER,KAAK,WAAW;gBACd,IAAI,CAAC,GAAG,CAAC,mBAAmB;oBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACpF,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC5D,MAAM;YAER,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,CAAC,GAAG,CAAC,gBAAgB;oBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC9E,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;gBAC5D,QAAQ,GAAG,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACnE,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+CAA+C;IAC/C,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,OAAoB;YAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAsB;YACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * AI Namespace API - Convenience wrappers
3
+ *
4
+ * Provides a clean namespace-based API for common AI tasks using the unified provider system.
5
+ * Note: Advanced features (embed, generateImage, etc.) require Cloudflare Workers AI binding (env.AI).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ai } from '@thewhateverapp/platform';
10
+ *
11
+ * // Simple text generation (works with all providers)
12
+ * const answer = await ai.chat("What is TypeScript?");
13
+ *
14
+ * // Advanced usage with full control
15
+ * const response = await ai.prompt({
16
+ * prompt: "Describe this",
17
+ * provider: 'cloudflare', // or 'replicate', 'anthropic', etc.
18
+ * capabilities: ['vision']
19
+ * });
20
+ * ```
21
+ */
22
+ import type { AskOptions, PromptRequest } from './types';
23
+ /**
24
+ * AI namespace with convenient helper methods
25
+ */
26
+ export declare const ai: {
27
+ /**
28
+ * Simple chat/text generation (works with all providers)
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const answer = await ai.chat("Explain quantum computing in simple terms");
33
+ * const replicateAnswer = await ai.chat("Create a story", { provider: 'replicate' });
34
+ * ```
35
+ */
36
+ chat(prompt: string, options?: AskOptions): Promise<string>;
37
+ /**
38
+ * Advanced: Full prompt with detailed options and response
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const response = await ai.prompt({
43
+ * prompt: "Describe this image",
44
+ * provider: 'cloudflare',
45
+ * capabilities: ['vision'],
46
+ * images: [{ type: 'url', data: 'https://example.com/image.jpg' }],
47
+ * maxTokens: 500
48
+ * });
49
+ * console.log(response.text);
50
+ * console.log(response.tokensUsed);
51
+ * ```
52
+ */
53
+ prompt(request: PromptRequest): Promise<import("./types").PromptResponse>;
54
+ };
55
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/ai/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,EAAE;IACb;;;;;;;;OAQG;iBACgB,MAAM,YAAY,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjE;;;;;;;;;;;;;;;OAeG;oBACmB,aAAa;CAIpC,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * AI Namespace API - Convenience wrappers
3
+ *
4
+ * Provides a clean namespace-based API for common AI tasks using the unified provider system.
5
+ * Note: Advanced features (embed, generateImage, etc.) require Cloudflare Workers AI binding (env.AI).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ai } from '@thewhateverapp/platform';
10
+ *
11
+ * // Simple text generation (works with all providers)
12
+ * const answer = await ai.chat("What is TypeScript?");
13
+ *
14
+ * // Advanced usage with full control
15
+ * const response = await ai.prompt({
16
+ * prompt: "Describe this",
17
+ * provider: 'cloudflare', // or 'replicate', 'anthropic', etc.
18
+ * capabilities: ['vision']
19
+ * });
20
+ * ```
21
+ */
22
+ import { getAI } from './index';
23
+ /**
24
+ * AI namespace with convenient helper methods
25
+ */
26
+ export const ai = {
27
+ /**
28
+ * Simple chat/text generation (works with all providers)
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const answer = await ai.chat("Explain quantum computing in simple terms");
33
+ * const replicateAnswer = await ai.chat("Create a story", { provider: 'replicate' });
34
+ * ```
35
+ */
36
+ async chat(prompt, options) {
37
+ const provider = getAI();
38
+ return provider.ask(prompt, options);
39
+ },
40
+ /**
41
+ * Advanced: Full prompt with detailed options and response
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const response = await ai.prompt({
46
+ * prompt: "Describe this image",
47
+ * provider: 'cloudflare',
48
+ * capabilities: ['vision'],
49
+ * images: [{ type: 'url', data: 'https://example.com/image.jpg' }],
50
+ * maxTokens: 500
51
+ * });
52
+ * console.log(response.text);
53
+ * console.log(response.tokensUsed);
54
+ * ```
55
+ */
56
+ async prompt(request) {
57
+ const provider = getAI();
58
+ return provider.prompt(request);
59
+ },
60
+ };
61
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/ai/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB;;;;;;;;OAQG;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;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * AI Provider implementations
3
+ *
4
+ * Unified provider system for all AI services (Cloudflare, Replicate, Platform API)
5
+ */
6
+ import type { AIServiceProvider, AIProvider, AIEnv, CloudflareAI } from './types';
7
+ /**
8
+ * Create Cloudflare Workers AI provider
9
+ */
10
+ export declare function createCloudflareProvider(ai: CloudflareAI): AIServiceProvider;
11
+ /**
12
+ * Create Replicate provider
13
+ */
14
+ export declare function createReplicateProvider(apiToken: string): AIServiceProvider;
15
+ /**
16
+ * Create Platform API provider (routes to anthropic/openai/google)
17
+ */
18
+ export declare function createPlatformAPIProvider(apiUrl: string, apiKey: string): AIServiceProvider;
19
+ /**
20
+ * Detect available providers from environment
21
+ */
22
+ export declare function detectAvailableProviders(env: AIEnv): AIProvider[];
23
+ /**
24
+ * Select best provider based on request and available providers
25
+ */
26
+ export declare function selectProvider(requestedProvider: AIProvider | undefined, availableProviders: AIProvider[]): AIProvider;
27
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAIV,KAAK,EACL,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,iBAAiB,CAgF5E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAsF3E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAoC3F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,KAAK,GAAG,UAAU,EAAE,CAUjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,iBAAiB,EAAE,UAAU,GAAG,SAAS,EACzC,kBAAkB,EAAE,UAAU,EAAE,GAC/B,UAAU,CAeZ"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * AI Provider implementations
3
+ *
4
+ * Unified provider system for all AI services (Cloudflare, Replicate, Platform API)
5
+ */
6
+ /**
7
+ * Create Cloudflare Workers AI provider
8
+ */
9
+ export function createCloudflareProvider(ai) {
10
+ // Import model selection from workers module
11
+ function selectModel(capabilities) {
12
+ if (!capabilities || capabilities.length === 0) {
13
+ return '@cf/meta/llama-3.1-8b-instruct-fast';
14
+ }
15
+ const caps = new Set(capabilities);
16
+ if (caps.has('vision'))
17
+ return '@cf/meta/llama-3.2-11b-vision-instruct';
18
+ if (caps.has('coding'))
19
+ return '@cf/qwen/qwen2.5-coder-32b-instruct';
20
+ if (caps.has('reasoning'))
21
+ return '@cf/qwen/qwq-32b';
22
+ if (caps.has('fast'))
23
+ return '@cf/meta/llama-3.1-8b-instruct-fast';
24
+ if (caps.has('long-context'))
25
+ return '@cf/meta/llama-3.1-70b-instruct';
26
+ if (caps.has('cost-effective'))
27
+ return '@cf/meta/llama-3.2-1b-instruct';
28
+ if (caps.has('creative'))
29
+ return '@cf/meta/llama-3.1-8b-instruct';
30
+ return '@cf/meta/llama-3.1-8b-instruct-fast';
31
+ }
32
+ return {
33
+ async ask(prompt, options) {
34
+ const model = selectModel(options?.capabilities);
35
+ const response = await ai.run(model, {
36
+ prompt,
37
+ max_tokens: options?.maxTokens,
38
+ temperature: options?.temperature,
39
+ });
40
+ return response.response || '';
41
+ },
42
+ async prompt(request) {
43
+ const model = request.model || selectModel(request.capabilities);
44
+ const messages = [];
45
+ if (request.systemPrompt) {
46
+ messages.push({ role: 'system', content: request.systemPrompt });
47
+ }
48
+ if (request.images && request.images.length > 0) {
49
+ const content = [{ type: 'text', text: request.prompt }];
50
+ for (const img of request.images) {
51
+ if (img.type === 'url') {
52
+ content.push({ type: 'image_url', image_url: { url: img.data } });
53
+ }
54
+ else if (img.type === 'base64') {
55
+ content.push({
56
+ type: 'image_url',
57
+ image_url: { url: `data:${img.mimeType || 'image/jpeg'};base64,${img.data}` },
58
+ });
59
+ }
60
+ }
61
+ messages.push({ role: 'user', content });
62
+ }
63
+ else {
64
+ messages.push({ role: 'user', content: request.prompt });
65
+ }
66
+ const response = await ai.run(model, {
67
+ messages,
68
+ max_tokens: request.maxTokens,
69
+ temperature: request.temperature,
70
+ });
71
+ let text = '';
72
+ if (response.response) {
73
+ text = response.response;
74
+ }
75
+ else if (response.choices && response.choices.length > 0) {
76
+ text = response.choices[0].message?.content || response.choices[0].text || '';
77
+ }
78
+ return {
79
+ text,
80
+ provider: 'cloudflare',
81
+ model,
82
+ tokensUsed: { input: 0, output: 0, total: 0 },
83
+ };
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Create Replicate provider
89
+ */
90
+ export function createReplicateProvider(apiToken) {
91
+ const REPLICATE_API_URL = 'https://api.replicate.com/v1';
92
+ async function request(method, endpoint, body) {
93
+ const response = await fetch(`${REPLICATE_API_URL}${endpoint}`, {
94
+ method,
95
+ headers: {
96
+ 'Authorization': `Token ${apiToken}`,
97
+ 'Content-Type': 'application/json',
98
+ },
99
+ body: body ? JSON.stringify(body) : undefined,
100
+ });
101
+ if (!response.ok) {
102
+ const error = await response.json().catch(() => ({ detail: response.statusText }));
103
+ throw new Error(error.detail || `Replicate API error: ${response.statusText}`);
104
+ }
105
+ return response.json();
106
+ }
107
+ // Default text generation model
108
+ const DEFAULT_TEXT_MODEL = 'meta/meta-llama-3-70b-instruct';
109
+ return {
110
+ async ask(prompt, options) {
111
+ // Create prediction
112
+ const prediction = await request('POST', '/predictions', {
113
+ version: DEFAULT_TEXT_MODEL,
114
+ input: { prompt, max_tokens: options?.maxTokens, temperature: options?.temperature },
115
+ });
116
+ // Poll for completion
117
+ const result = await waitForPrediction(prediction.id);
118
+ return Array.isArray(result.output) ? result.output.join('') : result.output;
119
+ },
120
+ async prompt(req) {
121
+ const model = req.model || DEFAULT_TEXT_MODEL;
122
+ const prediction = await request('POST', '/predictions', {
123
+ version: model,
124
+ input: {
125
+ prompt: req.prompt,
126
+ system_prompt: req.systemPrompt,
127
+ max_tokens: req.maxTokens,
128
+ temperature: req.temperature,
129
+ },
130
+ });
131
+ const result = await waitForPrediction(prediction.id);
132
+ const text = Array.isArray(result.output) ? result.output.join('') : result.output;
133
+ return {
134
+ text,
135
+ provider: 'replicate',
136
+ model,
137
+ tokensUsed: { input: 0, output: 0, total: 0 },
138
+ };
139
+ },
140
+ };
141
+ async function waitForPrediction(id, timeout = 60000) {
142
+ const startTime = Date.now();
143
+ const pollInterval = 1000;
144
+ while (true) {
145
+ const prediction = await request('GET', `/predictions/${id}`);
146
+ if (prediction.status === 'succeeded' || prediction.status === 'failed' || prediction.status === 'canceled') {
147
+ if (prediction.status === 'failed') {
148
+ throw new Error(`Prediction failed: ${prediction.error || 'Unknown error'}`);
149
+ }
150
+ if (prediction.status === 'canceled') {
151
+ throw new Error('Prediction was canceled');
152
+ }
153
+ return prediction;
154
+ }
155
+ if (Date.now() - startTime > timeout) {
156
+ throw new Error(`Prediction timeout after ${timeout}ms`);
157
+ }
158
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
159
+ }
160
+ }
161
+ }
162
+ /**
163
+ * Create Platform API provider (routes to anthropic/openai/google)
164
+ */
165
+ export function createPlatformAPIProvider(apiUrl, apiKey) {
166
+ async function request(endpoint, body) {
167
+ const response = await fetch(`${apiUrl}/platform/ai${endpoint}`, {
168
+ method: 'POST',
169
+ headers: {
170
+ 'Content-Type': 'application/json',
171
+ 'X-API-Key': apiKey,
172
+ },
173
+ body: JSON.stringify(body),
174
+ });
175
+ if (!response.ok) {
176
+ const error = await response.json().catch(() => ({}));
177
+ throw new Error(error.error || `AI service error: ${response.statusText}`);
178
+ }
179
+ return response.json();
180
+ }
181
+ return {
182
+ async ask(prompt, options) {
183
+ const result = await request('/prompt', {
184
+ prompt,
185
+ provider: options?.provider,
186
+ capabilities: options?.capabilities,
187
+ maxTokens: options?.maxTokens,
188
+ temperature: options?.temperature,
189
+ });
190
+ return result.text;
191
+ },
192
+ async prompt(req) {
193
+ return request('/prompt', req);
194
+ },
195
+ };
196
+ }
197
+ /**
198
+ * Detect available providers from environment
199
+ */
200
+ export function detectAvailableProviders(env) {
201
+ const providers = [];
202
+ if (env.AI)
203
+ providers.push('cloudflare');
204
+ if (env.REPLICATE_API_TOKEN)
205
+ providers.push('replicate');
206
+ if (env.PLATFORM_API_KEY) {
207
+ providers.push('anthropic', 'openai', 'google');
208
+ }
209
+ return providers;
210
+ }
211
+ /**
212
+ * Select best provider based on request and available providers
213
+ */
214
+ export function selectProvider(requestedProvider, availableProviders) {
215
+ // If specific provider requested, use it if available
216
+ if (requestedProvider && requestedProvider !== 'auto') {
217
+ if (availableProviders.includes(requestedProvider)) {
218
+ return requestedProvider;
219
+ }
220
+ throw new Error(`Provider '${requestedProvider}' not available. Configure ${requestedProvider.toUpperCase()}_API_TOKEN or binding.`);
221
+ }
222
+ // Auto-select: prefer Cloudflare > Platform API > Replicate
223
+ if (availableProviders.includes('cloudflare'))
224
+ return 'cloudflare';
225
+ if (availableProviders.includes('anthropic'))
226
+ return 'anthropic';
227
+ if (availableProviders.includes('replicate'))
228
+ return 'replicate';
229
+ throw new Error('No AI providers configured. Set up env.AI, REPLICATE_API_TOKEN, or PLATFORM_API_KEY.');
230
+ }
231
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  /**
7
7
  * AI Provider options
8
8
  */
9
- export type AIProvider = 'anthropic' | 'openai' | 'google' | 'auto';
9
+ export type AIProvider = 'cloudflare' | 'anthropic' | 'openai' | 'google' | 'replicate' | 'auto';
10
10
  /**
11
11
  * AI model capabilities for automatic model selection
12
12
  */
@@ -104,10 +104,20 @@ export interface AIServiceProvider {
104
104
  */
105
105
  prompt(request: PromptRequest): Promise<PromptResponse>;
106
106
  }
107
+ /**
108
+ * Cloudflare AI binding interface
109
+ */
110
+ export interface CloudflareAI {
111
+ run<T = any>(model: string, options: any): Promise<T>;
112
+ }
107
113
  /**
108
114
  * Cloudflare environment interface for AI
109
115
  */
110
116
  export interface AIEnv {
117
+ /** Cloudflare Workers AI binding */
118
+ AI?: CloudflareAI;
119
+ /** Replicate API token */
120
+ REPLICATE_API_TOKEN?: string;
111
121
  /** Platform API URL */
112
122
  PLATFORM_API_URL?: string;
113
123
  /** Platform API key for authentication */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,UAAU,GACV,MAAM,GACN,gBAAgB,GAChB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,iDAAiD;IACjD,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,KAAK,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,UAAU,GACV,MAAM,GACN,gBAAgB,GAChB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,iDAAiD;IACjD,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,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,KAAK;IACpB,oCAAoC;IACpC,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,0BAA0B;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,KAAK,CAAC;CACZ"}
@@ -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 type { AIServiceProvider, AIProvider, AICapability, AskOptions, PromptRequest, PromptResponse, ImageInput, } from './ai/types';
40
+ export { ai } from './ai/namespace';
41
+ export type { AIServiceProvider, AIProvider, AICapability, AskOptions, PromptRequest, PromptResponse, ImageInput, CloudflareAI, } 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';
@@ -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,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,OAAO,EACP,MAAM,GACP,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACtG,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC7E,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,eAAe,EACf,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,eAAe,EACf,OAAO,EACP,UAAU,EACV,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAM1B,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;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
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 (Claude 4.5, GPT-5, Gemini 3)
42
+ // AI - Artificial Intelligence (Cloudflare Workers AI, Replicate, 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,6DAA6D;AAC7D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAWvC,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
+ {"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,gFAAgF;AAChF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAYpC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thewhateverapp/platform",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Universal SDK for The Whatever App platform services",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",