@shalwin04/x404r-sdk 0.1.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/README.md +391 -0
- package/dist/ai/index.d.ts +21 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +344 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/backend/cloud.d.ts +91 -0
- package/dist/backend/cloud.d.ts.map +1 -0
- package/dist/backend/cloud.js +257 -0
- package/dist/backend/cloud.js.map +1 -0
- package/dist/backend/embedded.d.ts +79 -0
- package/dist/backend/embedded.d.ts.map +1 -0
- package/dist/backend/embedded.js +307 -0
- package/dist/backend/embedded.js.map +1 -0
- package/dist/backend/index.d.ts +11 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +8 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/interface.d.ts +88 -0
- package/dist/backend/interface.d.ts.map +1 -0
- package/dist/backend/interface.js +11 -0
- package/dist/backend/interface.js.map +1 -0
- package/dist/chaos.d.ts +117 -0
- package/dist/chaos.d.ts.map +1 -0
- package/dist/chaos.js +215 -0
- package/dist/chaos.js.map +1 -0
- package/dist/client.d.ts +242 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +401 -0
- package/dist/client.js.map +1 -0
- package/dist/context.d.ts +18 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +65 -0
- package/dist/context.js.map +1 -0
- package/dist/durable.d.ts +90 -0
- package/dist/durable.d.ts.map +1 -0
- package/dist/durable.js +143 -0
- package/dist/durable.js.map +1 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics.d.ts +279 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +693 -0
- package/dist/metrics.js.map +1 -0
- package/dist/types.d.ts +240 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +74 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +269 -0
- package/dist/worker.js.map +1 -0
- package/dist/workflow.d.ts +48 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +190 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +93 -0
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Abstraction
|
|
3
|
+
* Supports Gemini, OpenAI, Anthropic, and AWS Bedrock
|
|
4
|
+
*/
|
|
5
|
+
// Token pricing per 1M tokens (USD)
|
|
6
|
+
const PRICING = {
|
|
7
|
+
'gemini-2.5-flash': { input: 0.075, output: 0.30 },
|
|
8
|
+
'gemini-1.5-pro': { input: 3.50, output: 10.50 },
|
|
9
|
+
'gpt-4-turbo-preview': { input: 10.00, output: 30.00 },
|
|
10
|
+
'gpt-4o': { input: 5.00, output: 15.00 },
|
|
11
|
+
'claude-3-sonnet': { input: 3.00, output: 15.00 },
|
|
12
|
+
'claude-3-haiku': { input: 0.25, output: 1.25 },
|
|
13
|
+
'anthropic.claude-3-sonnet-20240229-v1:0': { input: 3.00, output: 15.00 },
|
|
14
|
+
'anthropic.claude-3-haiku-20240307-v1:0': { input: 0.25, output: 1.25 },
|
|
15
|
+
};
|
|
16
|
+
export function estimateCost(model, usage) {
|
|
17
|
+
const pricing = PRICING[model] || { input: 1.00, output: 2.00 }; // Default pricing
|
|
18
|
+
return ((usage.inputTokens / 1_000_000) * pricing.input +
|
|
19
|
+
(usage.outputTokens / 1_000_000) * pricing.output);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create an AI provider from configuration
|
|
23
|
+
*/
|
|
24
|
+
export async function createAIProvider(config) {
|
|
25
|
+
switch (config.provider) {
|
|
26
|
+
case 'gemini':
|
|
27
|
+
return GeminiProvider.create(config.apiKey, config.defaultModel);
|
|
28
|
+
case 'openai':
|
|
29
|
+
return OpenAIProvider.create(config.apiKey, config.defaultModel);
|
|
30
|
+
case 'anthropic':
|
|
31
|
+
return AnthropicProvider.create(config.apiKey, config.defaultModel);
|
|
32
|
+
case 'bedrock':
|
|
33
|
+
return BedrockProvider.create(config.region || 'us-east-1', config.defaultModel);
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`Unknown AI provider: ${config.provider}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Gemini AI Provider
|
|
40
|
+
*/
|
|
41
|
+
class GeminiProvider {
|
|
42
|
+
client;
|
|
43
|
+
defaultModel;
|
|
44
|
+
constructor(client, defaultModel) {
|
|
45
|
+
this.client = client;
|
|
46
|
+
this.defaultModel = defaultModel;
|
|
47
|
+
}
|
|
48
|
+
static async create(apiKey, defaultModel) {
|
|
49
|
+
const { GoogleGenerativeAI } = await import('@google/generative-ai');
|
|
50
|
+
const client = new GoogleGenerativeAI(apiKey);
|
|
51
|
+
return new GeminiProvider(client, defaultModel || 'gemini-2.5-flash');
|
|
52
|
+
}
|
|
53
|
+
async generate(prompt, options) {
|
|
54
|
+
const model = this.client.getGenerativeModel({
|
|
55
|
+
model: options?.model || this.defaultModel,
|
|
56
|
+
});
|
|
57
|
+
const fullPrompt = options?.systemPrompt
|
|
58
|
+
? `${options.systemPrompt}\n\n${prompt}`
|
|
59
|
+
: prompt;
|
|
60
|
+
const result = await model.generateContent({
|
|
61
|
+
contents: [{ role: 'user', parts: [{ text: fullPrompt }] }],
|
|
62
|
+
generationConfig: {
|
|
63
|
+
temperature: options?.temperature ?? 0.7,
|
|
64
|
+
maxOutputTokens: options?.maxTokens ?? 2048,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
return result.response.text();
|
|
68
|
+
}
|
|
69
|
+
async generateJSON(prompt, schema) {
|
|
70
|
+
const jsonPrompt = schema
|
|
71
|
+
? `${prompt}\n\nRespond with valid JSON matching this schema:\n${JSON.stringify(schema, null, 2)}\n\nOnly output the JSON, no markdown or explanation.`
|
|
72
|
+
: `${prompt}\n\nRespond with valid JSON only. No markdown or explanation.`;
|
|
73
|
+
const response = await this.generate(jsonPrompt);
|
|
74
|
+
// Clean and parse response
|
|
75
|
+
const cleaned = response
|
|
76
|
+
.replace(/```json\n?/g, '')
|
|
77
|
+
.replace(/```\n?/g, '')
|
|
78
|
+
.trim();
|
|
79
|
+
return JSON.parse(cleaned);
|
|
80
|
+
}
|
|
81
|
+
async embed(text) {
|
|
82
|
+
// Use a simple hash-based embedding as fallback
|
|
83
|
+
// In production, you would use a proper embedding model
|
|
84
|
+
const hash = text.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
85
|
+
const embedding = new Array(768).fill(0).map((_, i) => Math.sin(hash * (i + 1)) * Math.cos(hash / (i + 1)));
|
|
86
|
+
return embedding;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* OpenAI Provider
|
|
91
|
+
*/
|
|
92
|
+
class OpenAIProvider {
|
|
93
|
+
client;
|
|
94
|
+
defaultModel;
|
|
95
|
+
constructor(client, defaultModel) {
|
|
96
|
+
this.client = client;
|
|
97
|
+
this.defaultModel = defaultModel;
|
|
98
|
+
}
|
|
99
|
+
static async create(apiKey, defaultModel) {
|
|
100
|
+
try {
|
|
101
|
+
// @ts-ignore - optional dependency
|
|
102
|
+
const { default: OpenAI } = await import('openai');
|
|
103
|
+
const client = new OpenAI({ apiKey });
|
|
104
|
+
return new OpenAIProvider(client, defaultModel || 'gpt-4-turbo-preview');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
throw new Error('openai package not installed. Run: npm install openai');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async generate(prompt, options) {
|
|
111
|
+
const messages = [];
|
|
112
|
+
if (options?.systemPrompt) {
|
|
113
|
+
messages.push({ role: 'system', content: options.systemPrompt });
|
|
114
|
+
}
|
|
115
|
+
messages.push({ role: 'user', content: prompt });
|
|
116
|
+
const response = await this.client.chat.completions.create({
|
|
117
|
+
model: options?.model || this.defaultModel,
|
|
118
|
+
messages,
|
|
119
|
+
temperature: options?.temperature ?? 0.7,
|
|
120
|
+
max_tokens: options?.maxTokens ?? 2048,
|
|
121
|
+
});
|
|
122
|
+
return response.choices[0]?.message?.content || '';
|
|
123
|
+
}
|
|
124
|
+
async generateJSON(prompt, schema) {
|
|
125
|
+
const response = await this.client.chat.completions.create({
|
|
126
|
+
model: this.defaultModel,
|
|
127
|
+
messages: [
|
|
128
|
+
{ role: 'system', content: 'You are a helpful assistant that responds only with valid JSON.' },
|
|
129
|
+
{ role: 'user', content: prompt },
|
|
130
|
+
],
|
|
131
|
+
response_format: { type: 'json_object' },
|
|
132
|
+
});
|
|
133
|
+
return JSON.parse(response.choices[0]?.message?.content || '{}');
|
|
134
|
+
}
|
|
135
|
+
async embed(text) {
|
|
136
|
+
const response = await this.client.embeddings.create({
|
|
137
|
+
model: 'text-embedding-3-small',
|
|
138
|
+
input: text,
|
|
139
|
+
});
|
|
140
|
+
return response.data[0].embedding;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Anthropic Provider
|
|
145
|
+
*/
|
|
146
|
+
class AnthropicProvider {
|
|
147
|
+
client;
|
|
148
|
+
defaultModel;
|
|
149
|
+
constructor(client, defaultModel) {
|
|
150
|
+
this.client = client;
|
|
151
|
+
this.defaultModel = defaultModel;
|
|
152
|
+
}
|
|
153
|
+
static async create(apiKey, defaultModel) {
|
|
154
|
+
try {
|
|
155
|
+
// @ts-ignore - optional dependency
|
|
156
|
+
const { default: Anthropic } = await import('@anthropic-ai/sdk');
|
|
157
|
+
const client = new Anthropic({ apiKey });
|
|
158
|
+
return new AnthropicProvider(client, defaultModel || 'claude-3-sonnet-20240229');
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
throw new Error('@anthropic-ai/sdk package not installed. Run: npm install @anthropic-ai/sdk');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async generate(prompt, options) {
|
|
165
|
+
const response = await this.client.messages.create({
|
|
166
|
+
model: options?.model || this.defaultModel,
|
|
167
|
+
max_tokens: options?.maxTokens ?? 2048,
|
|
168
|
+
system: options?.systemPrompt,
|
|
169
|
+
messages: [{ role: 'user', content: prompt }],
|
|
170
|
+
});
|
|
171
|
+
return response.content[0]?.type === 'text' ? response.content[0].text : '';
|
|
172
|
+
}
|
|
173
|
+
async generateJSON(prompt, schema) {
|
|
174
|
+
const jsonPrompt = schema
|
|
175
|
+
? `${prompt}\n\nRespond with valid JSON matching this schema:\n${JSON.stringify(schema, null, 2)}\n\nOnly output the JSON, no markdown or explanation.`
|
|
176
|
+
: `${prompt}\n\nRespond with valid JSON only. No markdown or explanation.`;
|
|
177
|
+
const response = await this.generate(jsonPrompt);
|
|
178
|
+
const cleaned = response
|
|
179
|
+
.replace(/```json\n?/g, '')
|
|
180
|
+
.replace(/```\n?/g, '')
|
|
181
|
+
.trim();
|
|
182
|
+
return JSON.parse(cleaned);
|
|
183
|
+
}
|
|
184
|
+
async embed(text) {
|
|
185
|
+
// Anthropic doesn't have embeddings API, use a simple hash-based fallback
|
|
186
|
+
// In production, you'd use a dedicated embedding service
|
|
187
|
+
throw new Error('Anthropic does not support embeddings. Use Gemini or OpenAI for embeddings.');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* AWS Bedrock Provider
|
|
192
|
+
* Uses AWS SDK for Bedrock Runtime
|
|
193
|
+
*/
|
|
194
|
+
class BedrockProvider {
|
|
195
|
+
client;
|
|
196
|
+
defaultModel;
|
|
197
|
+
_lastUsage = { inputTokens: 0, outputTokens: 0, embeddingTokens: 0 };
|
|
198
|
+
constructor(client, defaultModel) {
|
|
199
|
+
this.client = client;
|
|
200
|
+
this.defaultModel = defaultModel;
|
|
201
|
+
}
|
|
202
|
+
static async create(region, defaultModel) {
|
|
203
|
+
try {
|
|
204
|
+
// Dynamic import for optional AWS dependency
|
|
205
|
+
const bedrockModule = await import('@aws-sdk/client-bedrock-runtime').catch(() => null);
|
|
206
|
+
if (!bedrockModule) {
|
|
207
|
+
throw new Error('@aws-sdk/client-bedrock-runtime not installed. Run: npm install @aws-sdk/client-bedrock-runtime');
|
|
208
|
+
}
|
|
209
|
+
const { BedrockRuntimeClient, InvokeModelCommand } = bedrockModule;
|
|
210
|
+
const client = new BedrockRuntimeClient({ region });
|
|
211
|
+
// Store InvokeModelCommand on client for later use
|
|
212
|
+
client.InvokeModelCommand = InvokeModelCommand;
|
|
213
|
+
return new BedrockProvider(client, defaultModel || 'anthropic.claude-3-sonnet-20240229-v1:0');
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
if (err instanceof Error && err.message.includes('not installed')) {
|
|
217
|
+
throw err;
|
|
218
|
+
}
|
|
219
|
+
throw new Error('@aws-sdk/client-bedrock-runtime not installed. Run: npm install @aws-sdk/client-bedrock-runtime');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
get lastUsage() {
|
|
223
|
+
return this._lastUsage;
|
|
224
|
+
}
|
|
225
|
+
async generate(prompt, options) {
|
|
226
|
+
const model = options?.model || this.defaultModel;
|
|
227
|
+
const InvokeModelCommand = this.client.InvokeModelCommand;
|
|
228
|
+
// Build request based on model provider
|
|
229
|
+
let body;
|
|
230
|
+
if (model.startsWith('anthropic.')) {
|
|
231
|
+
body = {
|
|
232
|
+
anthropic_version: 'bedrock-2023-05-31',
|
|
233
|
+
max_tokens: options?.maxTokens ?? 2048,
|
|
234
|
+
messages: [{ role: 'user', content: prompt }],
|
|
235
|
+
...(options?.systemPrompt && { system: options.systemPrompt }),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
else if (model.startsWith('amazon.titan')) {
|
|
239
|
+
body = {
|
|
240
|
+
inputText: options?.systemPrompt ? `${options.systemPrompt}\n\n${prompt}` : prompt,
|
|
241
|
+
textGenerationConfig: {
|
|
242
|
+
maxTokenCount: options?.maxTokens ?? 2048,
|
|
243
|
+
temperature: options?.temperature ?? 0.7,
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
else if (model.startsWith('meta.llama')) {
|
|
248
|
+
body = {
|
|
249
|
+
prompt: options?.systemPrompt ? `${options.systemPrompt}\n\n${prompt}` : prompt,
|
|
250
|
+
max_gen_len: options?.maxTokens ?? 2048,
|
|
251
|
+
temperature: options?.temperature ?? 0.7,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// Default to Anthropic format
|
|
256
|
+
body = {
|
|
257
|
+
anthropic_version: 'bedrock-2023-05-31',
|
|
258
|
+
max_tokens: options?.maxTokens ?? 2048,
|
|
259
|
+
messages: [{ role: 'user', content: prompt }],
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const command = new InvokeModelCommand({
|
|
263
|
+
modelId: model,
|
|
264
|
+
contentType: 'application/json',
|
|
265
|
+
accept: 'application/json',
|
|
266
|
+
body: JSON.stringify(body),
|
|
267
|
+
});
|
|
268
|
+
const response = await this.client.send(command);
|
|
269
|
+
const responseBody = JSON.parse(new TextDecoder().decode(response.body));
|
|
270
|
+
// Track token usage
|
|
271
|
+
if (responseBody.usage) {
|
|
272
|
+
this._lastUsage = {
|
|
273
|
+
inputTokens: responseBody.usage.input_tokens || 0,
|
|
274
|
+
outputTokens: responseBody.usage.output_tokens || 0,
|
|
275
|
+
embeddingTokens: 0,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// Parse response based on model
|
|
279
|
+
if (model.startsWith('anthropic.')) {
|
|
280
|
+
return responseBody.content?.[0]?.text || '';
|
|
281
|
+
}
|
|
282
|
+
else if (model.startsWith('amazon.titan')) {
|
|
283
|
+
return responseBody.results?.[0]?.outputText || '';
|
|
284
|
+
}
|
|
285
|
+
else if (model.startsWith('meta.llama')) {
|
|
286
|
+
return responseBody.generation || '';
|
|
287
|
+
}
|
|
288
|
+
return responseBody.content?.[0]?.text || responseBody.completion || '';
|
|
289
|
+
}
|
|
290
|
+
async generateJSON(prompt, schema) {
|
|
291
|
+
const jsonPrompt = schema
|
|
292
|
+
? `${prompt}\n\nRespond with valid JSON matching this schema:\n${JSON.stringify(schema, null, 2)}\n\nOnly output the JSON, no markdown or explanation.`
|
|
293
|
+
: `${prompt}\n\nRespond with valid JSON only. No markdown or explanation.`;
|
|
294
|
+
const response = await this.generate(jsonPrompt);
|
|
295
|
+
const cleaned = response
|
|
296
|
+
.replace(/```json\n?/g, '')
|
|
297
|
+
.replace(/```\n?/g, '')
|
|
298
|
+
.trim();
|
|
299
|
+
return JSON.parse(cleaned);
|
|
300
|
+
}
|
|
301
|
+
async embed(text) {
|
|
302
|
+
// Use Titan embeddings model
|
|
303
|
+
const InvokeModelCommand = this.client.InvokeModelCommand;
|
|
304
|
+
try {
|
|
305
|
+
const command = new InvokeModelCommand({
|
|
306
|
+
modelId: 'amazon.titan-embed-text-v1',
|
|
307
|
+
contentType: 'application/json',
|
|
308
|
+
accept: 'application/json',
|
|
309
|
+
body: JSON.stringify({ inputText: text }),
|
|
310
|
+
});
|
|
311
|
+
const response = await this.client.send(command);
|
|
312
|
+
const responseBody = JSON.parse(new TextDecoder().decode(response.body));
|
|
313
|
+
this._lastUsage.embeddingTokens += text.split(/\s+/).length; // Approximate
|
|
314
|
+
return responseBody.embedding || [];
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// Fallback to hash-based embedding if Titan not available
|
|
318
|
+
const hash = text.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
319
|
+
return new Array(1536).fill(0).map((_, i) => Math.sin(hash * (i + 1)) * Math.cos(hash / (i + 1)));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* No-op AI provider for testing
|
|
325
|
+
*/
|
|
326
|
+
export class MockAIProvider {
|
|
327
|
+
_lastUsage = { inputTokens: 0, outputTokens: 0, embeddingTokens: 0 };
|
|
328
|
+
get lastUsage() {
|
|
329
|
+
return this._lastUsage;
|
|
330
|
+
}
|
|
331
|
+
async generate(prompt) {
|
|
332
|
+
this._lastUsage = { inputTokens: prompt.length / 4, outputTokens: 50, embeddingTokens: 0 };
|
|
333
|
+
return `Mock response for: ${prompt.slice(0, 50)}...`;
|
|
334
|
+
}
|
|
335
|
+
async generateJSON() {
|
|
336
|
+
this._lastUsage = { inputTokens: 100, outputTokens: 50, embeddingTokens: 0 };
|
|
337
|
+
return {};
|
|
338
|
+
}
|
|
339
|
+
async embed() {
|
|
340
|
+
this._lastUsage.embeddingTokens += 10;
|
|
341
|
+
return new Array(768).fill(0);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Backend
|
|
3
|
+
* HTTP API client for hosted x404-r platform
|
|
4
|
+
*/
|
|
5
|
+
import type { Backend } from './interface.js';
|
|
6
|
+
import type { Workflow, Task, WorkflowStatus } from '../types.js';
|
|
7
|
+
export interface CloudBackendConfig {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Cloud backend - connects to hosted x404-r API
|
|
13
|
+
* Used when running in cloud mode (no local DB needed)
|
|
14
|
+
*/
|
|
15
|
+
export declare class CloudBackend implements Backend {
|
|
16
|
+
private apiKey;
|
|
17
|
+
private baseUrl;
|
|
18
|
+
constructor(config: CloudBackendConfig);
|
|
19
|
+
ready(): Promise<void>;
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
private request;
|
|
22
|
+
private handleError;
|
|
23
|
+
createWorkflow(name: string, version: string, input: Record<string, unknown>, priority?: number): Promise<Workflow>;
|
|
24
|
+
getWorkflow(id: string): Promise<Workflow | null>;
|
|
25
|
+
updateWorkflowStatus(id: string, status: WorkflowStatus, output?: Record<string, unknown>, error?: string): Promise<void>;
|
|
26
|
+
listWorkflows(options?: {
|
|
27
|
+
status?: WorkflowStatus;
|
|
28
|
+
limit?: number;
|
|
29
|
+
offset?: number;
|
|
30
|
+
}): Promise<Workflow[]>;
|
|
31
|
+
createTasks(workflowId: string, tasks: Array<{
|
|
32
|
+
name: string;
|
|
33
|
+
type: string;
|
|
34
|
+
input: Record<string, unknown>;
|
|
35
|
+
dependsOn: string[];
|
|
36
|
+
maxAttempts?: number;
|
|
37
|
+
}>): Promise<Task[]>;
|
|
38
|
+
getWorkflowTasks(workflowId: string): Promise<Task[]>;
|
|
39
|
+
completeTask(taskId: string, output: Record<string, unknown>): Promise<void>;
|
|
40
|
+
failTask(taskId: string, error: string): Promise<void>;
|
|
41
|
+
createCheckpoint(taskId: string, stepIndex: number, state: Record<string, unknown>): Promise<void>;
|
|
42
|
+
getCheckpoint(taskId: string): Promise<{
|
|
43
|
+
stepIndex: number;
|
|
44
|
+
state: Record<string, unknown>;
|
|
45
|
+
} | null>;
|
|
46
|
+
getWorkflowCheckpoints(workflowId: string): Promise<Array<{
|
|
47
|
+
taskId: string;
|
|
48
|
+
taskName: string;
|
|
49
|
+
stepIndex: number;
|
|
50
|
+
state: Record<string, unknown>;
|
|
51
|
+
createdAt: Date;
|
|
52
|
+
}>>;
|
|
53
|
+
storeMemory(taskId: string, eventType: string, summary: string, embedding: number[], taskType?: string, errorCategory?: string, resolution?: string): Promise<void>;
|
|
54
|
+
queryMemories(embedding: number[], taskType?: string, limit?: number): Promise<Array<{
|
|
55
|
+
summary: string;
|
|
56
|
+
eventType: string;
|
|
57
|
+
resolution?: string;
|
|
58
|
+
similarity: number;
|
|
59
|
+
}>>;
|
|
60
|
+
isWorkflowComplete(workflowId: string): Promise<{
|
|
61
|
+
complete: boolean;
|
|
62
|
+
failed: number;
|
|
63
|
+
done: number;
|
|
64
|
+
pending: number;
|
|
65
|
+
}>;
|
|
66
|
+
replayFromCheckpoint(workflowId: string, checkpointId: string, newInput?: Record<string, unknown>): Promise<Workflow>;
|
|
67
|
+
getWorkflowCost(workflowId: string): Promise<{
|
|
68
|
+
totalTokens: number;
|
|
69
|
+
estimatedCostUsd: number;
|
|
70
|
+
savedByRecoveryUsd: number;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Submit a workflow for execution (cloud workers will pick it up)
|
|
74
|
+
*/
|
|
75
|
+
submit(workflowName: string, input: Record<string, unknown>, options?: {
|
|
76
|
+
priority?: number;
|
|
77
|
+
wait?: boolean;
|
|
78
|
+
timeout?: number;
|
|
79
|
+
}): Promise<{
|
|
80
|
+
workflowId: string;
|
|
81
|
+
status: WorkflowStatus;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Wait for a workflow to complete
|
|
85
|
+
*/
|
|
86
|
+
waitForCompletion(workflowId: string, options?: {
|
|
87
|
+
timeout?: number;
|
|
88
|
+
pollInterval?: number;
|
|
89
|
+
}): Promise<Workflow>;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/backend/cloud.ts"],"names":[],"mappings":"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"}
|