praisonai 1.3.6 → 1.5.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.
- package/dist/agent/audio.d.ts +190 -0
- package/dist/agent/audio.js +302 -0
- package/dist/agent/index.d.ts +2 -0
- package/dist/agent/index.js +5 -1
- package/dist/ai/agent-loop.d.ts +177 -0
- package/dist/ai/agent-loop.js +313 -0
- package/dist/ai/devtools.d.ts +74 -0
- package/dist/ai/devtools.js +216 -0
- package/dist/ai/embed.d.ts +71 -0
- package/dist/ai/embed.js +154 -0
- package/dist/ai/generate-image.d.ts +66 -0
- package/dist/ai/generate-image.js +138 -0
- package/dist/ai/generate-object.d.ts +132 -0
- package/dist/ai/generate-object.js +206 -0
- package/dist/ai/generate-text.d.ts +201 -0
- package/dist/ai/generate-text.js +253 -0
- package/dist/ai/index.d.ts +27 -0
- package/dist/ai/index.js +140 -0
- package/dist/ai/mcp.d.ts +181 -0
- package/dist/ai/mcp.js +234 -0
- package/dist/ai/middleware.d.ts +110 -0
- package/dist/ai/middleware.js +186 -0
- package/dist/ai/models.d.ts +67 -0
- package/dist/ai/models.js +249 -0
- package/dist/ai/multimodal.d.ts +125 -0
- package/dist/ai/multimodal.js +270 -0
- package/dist/ai/nextjs.d.ts +122 -0
- package/dist/ai/nextjs.js +218 -0
- package/dist/ai/server.d.ts +126 -0
- package/dist/ai/server.js +336 -0
- package/dist/ai/speech.d.ts +135 -0
- package/dist/ai/speech.js +296 -0
- package/dist/ai/telemetry.d.ts +162 -0
- package/dist/ai/telemetry.js +311 -0
- package/dist/ai/tool-approval.d.ts +225 -0
- package/dist/ai/tool-approval.js +407 -0
- package/dist/ai/tools.d.ts +93 -0
- package/dist/ai/tools.js +89 -0
- package/dist/ai/types.d.ts +47 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/ui-message.d.ts +218 -0
- package/dist/ai/ui-message.js +291 -0
- package/dist/cli/commands/approval.d.ts +10 -0
- package/dist/cli/commands/approval.js +274 -0
- package/dist/cli/commands/observability.d.ts +7 -0
- package/dist/cli/commands/observability.js +202 -12
- package/dist/cli/commands/providers.d.ts +5 -2
- package/dist/cli/commands/providers.js +204 -5
- package/dist/cli/commands/tools.d.ts +11 -1
- package/dist/cli/commands/tools.js +450 -64
- package/dist/cli/output/errors.d.ts +1 -0
- package/dist/cli/output/errors.js +1 -0
- package/dist/cli/spec/cli-spec.js +17 -0
- package/dist/index.d.ts +21 -4
- package/dist/index.js +275 -19
- package/dist/integrations/computer-use.d.ts +182 -0
- package/dist/integrations/computer-use.js +356 -0
- package/dist/integrations/postgres.d.ts +162 -0
- package/dist/integrations/postgres.js +396 -0
- package/dist/integrations/slack.d.ts +145 -0
- package/dist/integrations/slack.js +270 -0
- package/dist/knowledge/chonkie-adapter.d.ts +99 -0
- package/dist/knowledge/chonkie-adapter.js +268 -0
- package/dist/knowledge/index.d.ts +5 -0
- package/dist/knowledge/index.js +29 -1
- package/dist/knowledge/query-engine.d.ts +136 -0
- package/dist/knowledge/query-engine.js +214 -0
- package/dist/knowledge/rag-pipeline.d.ts +192 -0
- package/dist/knowledge/rag-pipeline.js +283 -0
- package/dist/knowledge/readers.d.ts +129 -0
- package/dist/knowledge/readers.js +393 -0
- package/dist/llm/providers/ai-sdk/types.d.ts +49 -3
- package/dist/llm/providers/ai-sdk/types.js +169 -15
- package/dist/mcp/index.d.ts +188 -0
- package/dist/mcp/index.js +373 -0
- package/dist/mcp/server.d.ts +211 -0
- package/dist/mcp/server.js +412 -0
- package/dist/memory/docs-manager.d.ts +165 -0
- package/dist/memory/docs-manager.js +294 -0
- package/dist/memory/hooks.d.ts +154 -0
- package/dist/memory/hooks.js +228 -0
- package/dist/memory/rules-manager.d.ts +182 -0
- package/dist/memory/rules-manager.js +244 -0
- package/dist/observability/adapters/console.d.ts +33 -0
- package/dist/observability/adapters/console.js +71 -0
- package/dist/observability/adapters/external/arize.d.ts +20 -0
- package/dist/observability/adapters/external/arize.js +22 -0
- package/dist/observability/adapters/external/axiom.d.ts +20 -0
- package/dist/observability/adapters/external/axiom.js +22 -0
- package/dist/observability/adapters/external/braintrust.d.ts +20 -0
- package/dist/observability/adapters/external/braintrust.js +22 -0
- package/dist/observability/adapters/external/helicone.d.ts +20 -0
- package/dist/observability/adapters/external/helicone.js +22 -0
- package/dist/observability/adapters/external/laminar.d.ts +20 -0
- package/dist/observability/adapters/external/laminar.js +22 -0
- package/dist/observability/adapters/external/langfuse.d.ts +28 -0
- package/dist/observability/adapters/external/langfuse.js +186 -0
- package/dist/observability/adapters/external/langsmith.d.ts +21 -0
- package/dist/observability/adapters/external/langsmith.js +83 -0
- package/dist/observability/adapters/external/langwatch.d.ts +20 -0
- package/dist/observability/adapters/external/langwatch.js +22 -0
- package/dist/observability/adapters/external/maxim.d.ts +20 -0
- package/dist/observability/adapters/external/maxim.js +22 -0
- package/dist/observability/adapters/external/patronus.d.ts +20 -0
- package/dist/observability/adapters/external/patronus.js +22 -0
- package/dist/observability/adapters/external/scorecard.d.ts +20 -0
- package/dist/observability/adapters/external/scorecard.js +22 -0
- package/dist/observability/adapters/external/signoz.d.ts +20 -0
- package/dist/observability/adapters/external/signoz.js +22 -0
- package/dist/observability/adapters/external/traceloop.d.ts +20 -0
- package/dist/observability/adapters/external/traceloop.js +22 -0
- package/dist/observability/adapters/external/weave.d.ts +20 -0
- package/dist/observability/adapters/external/weave.js +22 -0
- package/dist/observability/adapters/index.d.ts +19 -0
- package/dist/observability/adapters/index.js +289 -0
- package/dist/observability/adapters/memory.d.ts +41 -0
- package/dist/observability/adapters/memory.js +190 -0
- package/dist/observability/adapters/noop.d.ts +25 -0
- package/dist/observability/adapters/noop.js +64 -0
- package/dist/observability/index.d.ts +39 -78
- package/dist/observability/index.js +99 -150
- package/dist/observability/types.d.ts +165 -0
- package/dist/observability/types.js +165 -0
- package/dist/tools/builtins/airweave.d.ts +32 -0
- package/dist/tools/builtins/airweave.js +119 -0
- package/dist/tools/builtins/bedrock-agentcore.d.ts +62 -0
- package/dist/tools/builtins/bedrock-agentcore.js +233 -0
- package/dist/tools/builtins/code-execution.d.ts +36 -0
- package/dist/tools/builtins/code-execution.js +136 -0
- package/dist/tools/builtins/code-mode.d.ts +54 -0
- package/dist/tools/builtins/code-mode.js +167 -0
- package/dist/tools/builtins/custom.d.ts +42 -0
- package/dist/tools/builtins/custom.js +195 -0
- package/dist/tools/builtins/exa.d.ts +53 -0
- package/dist/tools/builtins/exa.js +112 -0
- package/dist/tools/builtins/firecrawl.d.ts +56 -0
- package/dist/tools/builtins/firecrawl.js +158 -0
- package/dist/tools/builtins/index.d.ts +45 -0
- package/dist/tools/builtins/index.js +180 -0
- package/dist/tools/builtins/parallel.d.ts +30 -0
- package/dist/tools/builtins/parallel.js +113 -0
- package/dist/tools/builtins/perplexity.d.ts +32 -0
- package/dist/tools/builtins/perplexity.js +113 -0
- package/dist/tools/builtins/superagent.d.ts +66 -0
- package/dist/tools/builtins/superagent.js +187 -0
- package/dist/tools/builtins/tavily.d.ts +99 -0
- package/dist/tools/builtins/tavily.js +285 -0
- package/dist/tools/builtins/valyu.d.ts +65 -0
- package/dist/tools/builtins/valyu.js +193 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.js +16 -2
- package/dist/tools/registry/index.d.ts +9 -0
- package/dist/tools/registry/index.js +28 -0
- package/dist/tools/registry/middleware.d.ts +43 -0
- package/dist/tools/registry/middleware.js +220 -0
- package/dist/tools/registry/registry.d.ts +92 -0
- package/dist/tools/registry/registry.js +280 -0
- package/dist/tools/registry/types.d.ts +217 -0
- package/dist/tools/registry/types.js +49 -0
- package/dist/tools/subagent.d.ts +131 -0
- package/dist/tools/subagent.js +185 -0
- package/dist/tools/tools.d.ts +74 -0
- package/dist/tools/tools.js +133 -0
- package/dist/workflows/index.d.ts +76 -1
- package/dist/workflows/index.js +125 -6
- package/dist/workflows/loop.d.ts +111 -0
- package/dist/workflows/loop.js +274 -0
- package/dist/workflows/repeat.d.ts +115 -0
- package/dist/workflows/repeat.js +144 -0
- package/package.json +4 -1
package/dist/ai/embed.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Embed - AI SDK Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides embed and embedMany functions for text embeddings.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.embed = embed;
|
|
42
|
+
exports.embedMany = embedMany;
|
|
43
|
+
// Lazy load AI SDK
|
|
44
|
+
let aiSdk = null;
|
|
45
|
+
let aiSdkLoaded = false;
|
|
46
|
+
async function loadAISDK() {
|
|
47
|
+
if (aiSdkLoaded)
|
|
48
|
+
return aiSdk;
|
|
49
|
+
try {
|
|
50
|
+
aiSdk = await Promise.resolve().then(() => __importStar(require('ai')));
|
|
51
|
+
aiSdkLoaded = true;
|
|
52
|
+
return aiSdk;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve model string to AI SDK embedding model instance
|
|
60
|
+
*/
|
|
61
|
+
async function resolveEmbeddingModel(modelString) {
|
|
62
|
+
let provider = 'openai';
|
|
63
|
+
let modelId = modelString;
|
|
64
|
+
if (modelString.includes('/')) {
|
|
65
|
+
const parts = modelString.split('/');
|
|
66
|
+
provider = parts[0].toLowerCase();
|
|
67
|
+
modelId = parts.slice(1).join('/');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (modelString.startsWith('text-embedding'))
|
|
71
|
+
provider = 'openai';
|
|
72
|
+
else if (modelString.startsWith('voyage'))
|
|
73
|
+
provider = 'anthropic';
|
|
74
|
+
else if (modelString.startsWith('embed-'))
|
|
75
|
+
provider = 'cohere';
|
|
76
|
+
}
|
|
77
|
+
let providerModule;
|
|
78
|
+
try {
|
|
79
|
+
switch (provider) {
|
|
80
|
+
case 'openai':
|
|
81
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
82
|
+
return providerModule.openai.embedding(modelId);
|
|
83
|
+
case 'google':
|
|
84
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
|
|
85
|
+
return providerModule.google.embedding(modelId);
|
|
86
|
+
default:
|
|
87
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
88
|
+
return providerModule.openai.embedding(modelId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new Error(`Failed to load embedding provider '${provider}': ${error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Embed a single text using an embedding model.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const result = await embed({
|
|
101
|
+
* model: 'text-embedding-3-small',
|
|
102
|
+
* value: 'Hello, world!'
|
|
103
|
+
* });
|
|
104
|
+
* console.log(result.embedding); // [0.1, 0.2, ...]
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
async function embed(options) {
|
|
108
|
+
const sdk = await loadAISDK();
|
|
109
|
+
if (!sdk) {
|
|
110
|
+
throw new Error('AI SDK not available. Install with: npm install ai @ai-sdk/openai');
|
|
111
|
+
}
|
|
112
|
+
const model = await resolveEmbeddingModel(options.model);
|
|
113
|
+
const result = await sdk.embed({
|
|
114
|
+
model,
|
|
115
|
+
value: options.value,
|
|
116
|
+
maxRetries: options.maxRetries,
|
|
117
|
+
abortSignal: options.abortSignal,
|
|
118
|
+
headers: options.headers,
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
embedding: result.embedding,
|
|
122
|
+
usage: result.usage || { tokens: 0 },
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Embed multiple texts using an embedding model.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* const result = await embedMany({
|
|
131
|
+
* model: 'text-embedding-3-small',
|
|
132
|
+
* values: ['Hello', 'World']
|
|
133
|
+
* });
|
|
134
|
+
* console.log(result.embeddings); // [[0.1, ...], [0.2, ...]]
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
async function embedMany(options) {
|
|
138
|
+
const sdk = await loadAISDK();
|
|
139
|
+
if (!sdk) {
|
|
140
|
+
throw new Error('AI SDK not available. Install with: npm install ai @ai-sdk/openai');
|
|
141
|
+
}
|
|
142
|
+
const model = await resolveEmbeddingModel(options.model);
|
|
143
|
+
const result = await sdk.embedMany({
|
|
144
|
+
model,
|
|
145
|
+
values: options.values,
|
|
146
|
+
maxRetries: options.maxRetries,
|
|
147
|
+
abortSignal: options.abortSignal,
|
|
148
|
+
headers: options.headers,
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
embeddings: result.embeddings,
|
|
152
|
+
usage: result.usage || { tokens: 0 },
|
|
153
|
+
};
|
|
154
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate Image - AI SDK Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides generateImage function for image generation.
|
|
5
|
+
*/
|
|
6
|
+
export interface GenerateImageOptions {
|
|
7
|
+
/** Model to use (e.g., 'dall-e-3', 'google/imagen-3') */
|
|
8
|
+
model: string;
|
|
9
|
+
/** Text prompt for image generation */
|
|
10
|
+
prompt: string;
|
|
11
|
+
/** Number of images to generate */
|
|
12
|
+
n?: number;
|
|
13
|
+
/** Image size (e.g., '1024x1024') */
|
|
14
|
+
size?: `${number}x${number}`;
|
|
15
|
+
/** Aspect ratio (e.g., '16:9') */
|
|
16
|
+
aspectRatio?: `${number}:${number}`;
|
|
17
|
+
/** Seed for reproducibility */
|
|
18
|
+
seed?: number;
|
|
19
|
+
/** Maximum retries */
|
|
20
|
+
maxRetries?: number;
|
|
21
|
+
/** Abort signal */
|
|
22
|
+
abortSignal?: AbortSignal;
|
|
23
|
+
/** Additional headers */
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
/** Provider-specific options */
|
|
26
|
+
providerOptions?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export interface GeneratedImage {
|
|
29
|
+
/** Base64-encoded image data */
|
|
30
|
+
base64: string;
|
|
31
|
+
/** Image as Uint8Array */
|
|
32
|
+
uint8Array: Uint8Array;
|
|
33
|
+
/** MIME type */
|
|
34
|
+
mimeType?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface GenerateImageResult {
|
|
37
|
+
/** Generated images */
|
|
38
|
+
images: GeneratedImage[];
|
|
39
|
+
/** Warnings */
|
|
40
|
+
warnings?: any[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Generate images using an image model.
|
|
44
|
+
*
|
|
45
|
+
* @example Generate with DALL-E
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const result = await generateImage({
|
|
48
|
+
* model: 'dall-e-3',
|
|
49
|
+
* prompt: 'A futuristic city at sunset',
|
|
50
|
+
* size: '1024x1024'
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* // Save the image
|
|
54
|
+
* fs.writeFileSync('image.png', result.images[0].uint8Array);
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @example Generate with Google Imagen
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const result = await generateImage({
|
|
60
|
+
* model: 'google/imagen-3',
|
|
61
|
+
* prompt: 'A beautiful landscape',
|
|
62
|
+
* aspectRatio: '16:9'
|
|
63
|
+
* });
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function generateImage(options: GenerateImageOptions): Promise<GenerateImageResult>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generate Image - AI SDK Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides generateImage function for image generation.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.generateImage = generateImage;
|
|
42
|
+
// Lazy load AI SDK
|
|
43
|
+
let aiSdk = null;
|
|
44
|
+
let aiSdkLoaded = false;
|
|
45
|
+
async function loadAISDK() {
|
|
46
|
+
if (aiSdkLoaded)
|
|
47
|
+
return aiSdk;
|
|
48
|
+
try {
|
|
49
|
+
aiSdk = await Promise.resolve().then(() => __importStar(require('ai')));
|
|
50
|
+
aiSdkLoaded = true;
|
|
51
|
+
return aiSdk;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Resolve model string to AI SDK image model instance
|
|
59
|
+
*/
|
|
60
|
+
async function resolveImageModel(modelString) {
|
|
61
|
+
let provider = 'openai';
|
|
62
|
+
let modelId = modelString;
|
|
63
|
+
if (modelString.includes('/')) {
|
|
64
|
+
const parts = modelString.split('/');
|
|
65
|
+
provider = parts[0].toLowerCase();
|
|
66
|
+
modelId = parts.slice(1).join('/');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (modelString.startsWith('imagen'))
|
|
70
|
+
provider = 'google';
|
|
71
|
+
else if (modelString.startsWith('dall-e'))
|
|
72
|
+
provider = 'openai';
|
|
73
|
+
}
|
|
74
|
+
let providerModule;
|
|
75
|
+
try {
|
|
76
|
+
switch (provider) {
|
|
77
|
+
case 'openai':
|
|
78
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
79
|
+
return providerModule.openai.image(modelId);
|
|
80
|
+
case 'google':
|
|
81
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
|
|
82
|
+
return providerModule.google.image(modelId);
|
|
83
|
+
default:
|
|
84
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
85
|
+
return providerModule.openai.image(modelId);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new Error(`Failed to load image provider '${provider}': ${error.message}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Generate images using an image model.
|
|
94
|
+
*
|
|
95
|
+
* @example Generate with DALL-E
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const result = await generateImage({
|
|
98
|
+
* model: 'dall-e-3',
|
|
99
|
+
* prompt: 'A futuristic city at sunset',
|
|
100
|
+
* size: '1024x1024'
|
|
101
|
+
* });
|
|
102
|
+
*
|
|
103
|
+
* // Save the image
|
|
104
|
+
* fs.writeFileSync('image.png', result.images[0].uint8Array);
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @example Generate with Google Imagen
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const result = await generateImage({
|
|
110
|
+
* model: 'google/imagen-3',
|
|
111
|
+
* prompt: 'A beautiful landscape',
|
|
112
|
+
* aspectRatio: '16:9'
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
async function generateImage(options) {
|
|
117
|
+
const sdk = await loadAISDK();
|
|
118
|
+
if (!sdk) {
|
|
119
|
+
throw new Error('AI SDK not available. Install with: npm install ai @ai-sdk/openai');
|
|
120
|
+
}
|
|
121
|
+
const model = await resolveImageModel(options.model);
|
|
122
|
+
const result = await sdk.generateImage({
|
|
123
|
+
model,
|
|
124
|
+
prompt: options.prompt,
|
|
125
|
+
n: options.n,
|
|
126
|
+
size: options.size,
|
|
127
|
+
aspectRatio: options.aspectRatio,
|
|
128
|
+
seed: options.seed,
|
|
129
|
+
maxRetries: options.maxRetries,
|
|
130
|
+
abortSignal: options.abortSignal,
|
|
131
|
+
headers: options.headers,
|
|
132
|
+
providerOptions: options.providerOptions,
|
|
133
|
+
});
|
|
134
|
+
return {
|
|
135
|
+
images: result.images || [],
|
|
136
|
+
warnings: result.warnings,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate Object - AI SDK Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides generateObject and streamObject functions for structured output generation.
|
|
5
|
+
*/
|
|
6
|
+
import type { Message } from './types';
|
|
7
|
+
export interface GenerateObjectOptions<T = unknown> {
|
|
8
|
+
/** Model to use */
|
|
9
|
+
model: string;
|
|
10
|
+
/** Schema for the output (Zod schema or JSON schema) */
|
|
11
|
+
schema: any;
|
|
12
|
+
/** Schema name for the output */
|
|
13
|
+
schemaName?: string;
|
|
14
|
+
/** Schema description */
|
|
15
|
+
schemaDescription?: string;
|
|
16
|
+
/** Output mode: 'object' | 'array' | 'enum' | 'no-schema' */
|
|
17
|
+
mode?: 'object' | 'array' | 'enum' | 'no-schema';
|
|
18
|
+
/** Simple text prompt */
|
|
19
|
+
prompt?: string;
|
|
20
|
+
/** Chat messages */
|
|
21
|
+
messages?: Message[];
|
|
22
|
+
/** System message */
|
|
23
|
+
system?: string;
|
|
24
|
+
/** Maximum tokens */
|
|
25
|
+
maxTokens?: number;
|
|
26
|
+
/** Temperature */
|
|
27
|
+
temperature?: number;
|
|
28
|
+
/** Top P */
|
|
29
|
+
topP?: number;
|
|
30
|
+
/** Maximum retries */
|
|
31
|
+
maxRetries?: number;
|
|
32
|
+
/** Abort signal */
|
|
33
|
+
abortSignal?: AbortSignal;
|
|
34
|
+
/** Additional headers */
|
|
35
|
+
headers?: Record<string, string>;
|
|
36
|
+
/** Callback on finish */
|
|
37
|
+
onFinish?: (result: GenerateObjectResult<T>) => void | Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export interface GenerateObjectResult<T = unknown> {
|
|
40
|
+
/** Generated object */
|
|
41
|
+
object: T;
|
|
42
|
+
/** Token usage */
|
|
43
|
+
usage: {
|
|
44
|
+
promptTokens: number;
|
|
45
|
+
completionTokens: number;
|
|
46
|
+
totalTokens: number;
|
|
47
|
+
};
|
|
48
|
+
/** Finish reason */
|
|
49
|
+
finishReason: string;
|
|
50
|
+
/** Warnings */
|
|
51
|
+
warnings?: any[];
|
|
52
|
+
}
|
|
53
|
+
export interface StreamObjectOptions<T = unknown> extends GenerateObjectOptions<T> {
|
|
54
|
+
/** Callback for partial object updates */
|
|
55
|
+
onPartialObject?: (partial: Partial<T>) => void | Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export interface StreamObjectResult<T = unknown> {
|
|
58
|
+
/** Async iterator for partial objects */
|
|
59
|
+
partialObjectStream: AsyncIterable<Partial<T>>;
|
|
60
|
+
/** Promise that resolves to the final object */
|
|
61
|
+
object: Promise<T>;
|
|
62
|
+
/** Promise that resolves to usage */
|
|
63
|
+
usage: Promise<{
|
|
64
|
+
promptTokens: number;
|
|
65
|
+
completionTokens: number;
|
|
66
|
+
totalTokens: number;
|
|
67
|
+
}>;
|
|
68
|
+
/** Promise that resolves to finish reason */
|
|
69
|
+
finishReason: Promise<string>;
|
|
70
|
+
/** Convert to Response for streaming */
|
|
71
|
+
toTextStreamResponse(options?: {
|
|
72
|
+
headers?: Record<string, string>;
|
|
73
|
+
}): Response;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate a structured object using a language model.
|
|
77
|
+
*
|
|
78
|
+
* @example With Zod schema
|
|
79
|
+
* ```typescript
|
|
80
|
+
* import { z } from 'zod';
|
|
81
|
+
*
|
|
82
|
+
* const result = await generateObject({
|
|
83
|
+
* model: 'gpt-4o',
|
|
84
|
+
* schema: z.object({
|
|
85
|
+
* name: z.string(),
|
|
86
|
+
* age: z.number()
|
|
87
|
+
* }),
|
|
88
|
+
* prompt: 'Generate a person'
|
|
89
|
+
* });
|
|
90
|
+
* console.log(result.object); // { name: 'John', age: 30 }
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @example With JSON schema
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const result = await generateObject({
|
|
96
|
+
* model: 'gpt-4o',
|
|
97
|
+
* schema: {
|
|
98
|
+
* type: 'object',
|
|
99
|
+
* properties: {
|
|
100
|
+
* name: { type: 'string' },
|
|
101
|
+
* age: { type: 'number' }
|
|
102
|
+
* },
|
|
103
|
+
* required: ['name', 'age']
|
|
104
|
+
* },
|
|
105
|
+
* prompt: 'Generate a person'
|
|
106
|
+
* });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function generateObject<T = unknown>(options: GenerateObjectOptions<T>): Promise<GenerateObjectResult<T>>;
|
|
110
|
+
/**
|
|
111
|
+
* Stream a structured object using a language model.
|
|
112
|
+
*
|
|
113
|
+
* @example Streaming partial objects
|
|
114
|
+
* ```typescript
|
|
115
|
+
* import { z } from 'zod';
|
|
116
|
+
*
|
|
117
|
+
* const result = await streamObject({
|
|
118
|
+
* model: 'gpt-4o',
|
|
119
|
+
* schema: z.object({
|
|
120
|
+
* story: z.string(),
|
|
121
|
+
* characters: z.array(z.string())
|
|
122
|
+
* }),
|
|
123
|
+
* prompt: 'Write a short story',
|
|
124
|
+
* onPartialObject: (partial) => {
|
|
125
|
+
* console.log('Partial:', partial);
|
|
126
|
+
* }
|
|
127
|
+
* });
|
|
128
|
+
*
|
|
129
|
+
* const finalObject = await result.object;
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare function streamObject<T = unknown>(options: StreamObjectOptions<T>): Promise<StreamObjectResult<T>>;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generate Object - AI SDK Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Provides generateObject and streamObject functions for structured output generation.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.generateObject = generateObject;
|
|
42
|
+
exports.streamObject = streamObject;
|
|
43
|
+
// Lazy load AI SDK
|
|
44
|
+
let aiSdk = null;
|
|
45
|
+
let aiSdkLoaded = false;
|
|
46
|
+
async function loadAISDK() {
|
|
47
|
+
if (aiSdkLoaded)
|
|
48
|
+
return aiSdk;
|
|
49
|
+
try {
|
|
50
|
+
aiSdk = await Promise.resolve().then(() => __importStar(require('ai')));
|
|
51
|
+
aiSdkLoaded = true;
|
|
52
|
+
return aiSdk;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve model string to AI SDK model instance
|
|
60
|
+
*/
|
|
61
|
+
async function resolveModel(modelString) {
|
|
62
|
+
let provider = 'openai';
|
|
63
|
+
let modelId = modelString;
|
|
64
|
+
if (modelString.includes('/')) {
|
|
65
|
+
const parts = modelString.split('/');
|
|
66
|
+
provider = parts[0].toLowerCase();
|
|
67
|
+
modelId = parts.slice(1).join('/');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (modelString.startsWith('claude'))
|
|
71
|
+
provider = 'anthropic';
|
|
72
|
+
else if (modelString.startsWith('gemini'))
|
|
73
|
+
provider = 'google';
|
|
74
|
+
}
|
|
75
|
+
let providerModule;
|
|
76
|
+
try {
|
|
77
|
+
switch (provider) {
|
|
78
|
+
case 'openai':
|
|
79
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
80
|
+
return providerModule.openai(modelId);
|
|
81
|
+
case 'anthropic':
|
|
82
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/anthropic')));
|
|
83
|
+
return providerModule.anthropic(modelId);
|
|
84
|
+
case 'google':
|
|
85
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/google')));
|
|
86
|
+
return providerModule.google(modelId);
|
|
87
|
+
default:
|
|
88
|
+
providerModule = await Promise.resolve().then(() => __importStar(require('@ai-sdk/openai')));
|
|
89
|
+
return providerModule.openai(modelId);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new Error(`Failed to load provider '${provider}': ${error.message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generate a structured object using a language model.
|
|
98
|
+
*
|
|
99
|
+
* @example With Zod schema
|
|
100
|
+
* ```typescript
|
|
101
|
+
* import { z } from 'zod';
|
|
102
|
+
*
|
|
103
|
+
* const result = await generateObject({
|
|
104
|
+
* model: 'gpt-4o',
|
|
105
|
+
* schema: z.object({
|
|
106
|
+
* name: z.string(),
|
|
107
|
+
* age: z.number()
|
|
108
|
+
* }),
|
|
109
|
+
* prompt: 'Generate a person'
|
|
110
|
+
* });
|
|
111
|
+
* console.log(result.object); // { name: 'John', age: 30 }
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @example With JSON schema
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const result = await generateObject({
|
|
117
|
+
* model: 'gpt-4o',
|
|
118
|
+
* schema: {
|
|
119
|
+
* type: 'object',
|
|
120
|
+
* properties: {
|
|
121
|
+
* name: { type: 'string' },
|
|
122
|
+
* age: { type: 'number' }
|
|
123
|
+
* },
|
|
124
|
+
* required: ['name', 'age']
|
|
125
|
+
* },
|
|
126
|
+
* prompt: 'Generate a person'
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
async function generateObject(options) {
|
|
131
|
+
const sdk = await loadAISDK();
|
|
132
|
+
if (!sdk) {
|
|
133
|
+
throw new Error('AI SDK not available. Install with: npm install ai @ai-sdk/openai');
|
|
134
|
+
}
|
|
135
|
+
const model = await resolveModel(options.model);
|
|
136
|
+
const result = await sdk.generateObject({
|
|
137
|
+
model,
|
|
138
|
+
schema: options.schema,
|
|
139
|
+
schemaName: options.schemaName,
|
|
140
|
+
schemaDescription: options.schemaDescription,
|
|
141
|
+
mode: options.mode,
|
|
142
|
+
prompt: options.prompt,
|
|
143
|
+
messages: options.messages,
|
|
144
|
+
system: options.system,
|
|
145
|
+
maxTokens: options.maxTokens,
|
|
146
|
+
temperature: options.temperature,
|
|
147
|
+
topP: options.topP,
|
|
148
|
+
maxRetries: options.maxRetries,
|
|
149
|
+
abortSignal: options.abortSignal,
|
|
150
|
+
headers: options.headers,
|
|
151
|
+
onFinish: options.onFinish,
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
object: result.object,
|
|
155
|
+
usage: result.usage || { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
156
|
+
finishReason: result.finishReason || 'stop',
|
|
157
|
+
warnings: result.warnings,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Stream a structured object using a language model.
|
|
162
|
+
*
|
|
163
|
+
* @example Streaming partial objects
|
|
164
|
+
* ```typescript
|
|
165
|
+
* import { z } from 'zod';
|
|
166
|
+
*
|
|
167
|
+
* const result = await streamObject({
|
|
168
|
+
* model: 'gpt-4o',
|
|
169
|
+
* schema: z.object({
|
|
170
|
+
* story: z.string(),
|
|
171
|
+
* characters: z.array(z.string())
|
|
172
|
+
* }),
|
|
173
|
+
* prompt: 'Write a short story',
|
|
174
|
+
* onPartialObject: (partial) => {
|
|
175
|
+
* console.log('Partial:', partial);
|
|
176
|
+
* }
|
|
177
|
+
* });
|
|
178
|
+
*
|
|
179
|
+
* const finalObject = await result.object;
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
async function streamObject(options) {
|
|
183
|
+
const sdk = await loadAISDK();
|
|
184
|
+
if (!sdk) {
|
|
185
|
+
throw new Error('AI SDK not available. Install with: npm install ai @ai-sdk/openai');
|
|
186
|
+
}
|
|
187
|
+
const model = await resolveModel(options.model);
|
|
188
|
+
const result = sdk.streamObject({
|
|
189
|
+
model,
|
|
190
|
+
schema: options.schema,
|
|
191
|
+
schemaName: options.schemaName,
|
|
192
|
+
schemaDescription: options.schemaDescription,
|
|
193
|
+
mode: options.mode,
|
|
194
|
+
prompt: options.prompt,
|
|
195
|
+
messages: options.messages,
|
|
196
|
+
system: options.system,
|
|
197
|
+
maxTokens: options.maxTokens,
|
|
198
|
+
temperature: options.temperature,
|
|
199
|
+
topP: options.topP,
|
|
200
|
+
maxRetries: options.maxRetries,
|
|
201
|
+
abortSignal: options.abortSignal,
|
|
202
|
+
headers: options.headers,
|
|
203
|
+
onFinish: options.onFinish,
|
|
204
|
+
});
|
|
205
|
+
return result;
|
|
206
|
+
}
|