ai-props 2.1.3 → 2.4.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/.dev.vars +2 -0
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +20 -0
- package/README.md +2 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +4 -4
- package/dist/ai.js.map +1 -1
- package/dist/cascade.d.ts +329 -0
- package/dist/cascade.d.ts.map +1 -0
- package/dist/cascade.js +522 -0
- package/dist/cascade.js.map +1 -0
- package/dist/client.d.ts +233 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +191 -0
- package/dist/client.js.map +1 -0
- package/dist/durable-cascade.d.ts +280 -0
- package/dist/durable-cascade.d.ts.map +1 -0
- package/dist/durable-cascade.js +469 -0
- package/dist/durable-cascade.js.map +1 -0
- package/dist/event-bridge.d.ts +257 -0
- package/dist/event-bridge.d.ts.map +1 -0
- package/dist/event-bridge.js +317 -0
- package/dist/event-bridge.js.map +1 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +12 -6
- package/dist/generate.js.map +1 -1
- package/dist/hoc.d.ts.map +1 -1
- package/dist/hoc.js +13 -13
- package/dist/hoc.js.map +1 -1
- package/dist/hono-jsx.d.ts +208 -0
- package/dist/hono-jsx.d.ts.map +1 -0
- package/dist/hono-jsx.js +459 -0
- package/dist/hono-jsx.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mdx-types.d.ts +152 -0
- package/dist/mdx-types.d.ts.map +1 -0
- package/dist/mdx-types.js +9 -0
- package/dist/mdx-types.js.map +1 -0
- package/dist/mdx-utils.d.ts +106 -0
- package/dist/mdx-utils.d.ts.map +1 -0
- package/dist/mdx-utils.js +384 -0
- package/dist/mdx-utils.js.map +1 -0
- package/dist/mdx.d.ts +230 -0
- package/dist/mdx.d.ts.map +1 -0
- package/dist/mdx.js +820 -0
- package/dist/mdx.js.map +1 -0
- package/dist/rpc.d.ts +313 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +359 -0
- package/dist/rpc.js.map +1 -0
- package/dist/streaming.d.ts +199 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +402 -0
- package/dist/streaming.js.map +1 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +11 -13
- package/dist/validate.js.map +1 -1
- package/dist/worker.d.ts +270 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +405 -0
- package/dist/worker.js.map +1 -0
- package/package.json +39 -13
- package/src/ai.ts +12 -31
- package/src/cascade.ts +795 -0
- package/src/client.ts +440 -0
- package/src/durable-cascade.ts +743 -0
- package/src/event-bridge.ts +478 -0
- package/src/generate.ts +14 -12
- package/src/hoc.ts +15 -19
- package/src/hono-jsx.ts +675 -0
- package/src/index.ts +30 -0
- package/src/mdx-types.ts +169 -0
- package/src/mdx-utils.ts +437 -0
- package/src/mdx.ts +1008 -0
- package/src/rpc.ts +614 -0
- package/src/streaming.ts +618 -0
- package/src/validate.ts +15 -29
- package/src/worker.ts +547 -0
- package/test/cascade.test.ts +338 -0
- package/test/durable-cascade.test.ts +319 -0
- package/test/event-bridge.test.ts +351 -0
- package/test/generate.test.ts +6 -16
- package/test/mdx.test.ts +817 -0
- package/test/worker/capnweb-rpc.test.ts +1084 -0
- package/test/worker/full-flow.integration.test.ts +1463 -0
- package/test/worker/hono-jsx.test.ts +1258 -0
- package/test/worker/mdx-parsing.test.ts +1148 -0
- package/test/worker/setup.ts +56 -0
- package/test/worker.test.ts +595 -0
- package/tsconfig.json +2 -1
- package/vitest.config.js +6 -0
- package/vitest.config.ts +15 -1
- package/vitest.workers.config.ts +58 -0
- package/wrangler.jsonc +27 -0
- package/LICENSE +0 -21
- package/src/ai.js +0 -198
- package/src/cache.js +0 -182
- package/src/generate.js +0 -220
- package/src/hoc.js +0 -235
- package/src/index.js +0 -20
- package/src/types.js +0 -6
- package/src/validate.js +0 -252
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DurableCascadeExecutor - Durable tiered execution with cascade pattern for Workers
|
|
3
|
+
*
|
|
4
|
+
* Combines the cascade pattern (code -> generative -> agentic -> human)
|
|
5
|
+
* with Cloudflare Workflows durability guarantees for use in worker contexts.
|
|
6
|
+
*
|
|
7
|
+
* ## Features
|
|
8
|
+
*
|
|
9
|
+
* - **Durable Execution**: Steps are persisted and can resume after failures
|
|
10
|
+
* - **AI Gateway Integration**: Helpers for Cloudflare AI Gateway configuration
|
|
11
|
+
* - **Automatic Checkpointing**: Each tier creates a durable checkpoint
|
|
12
|
+
* - **Tier Escalation**: Automatic escalation on failure
|
|
13
|
+
* - **5W+H Audit Events**: Full audit trail support
|
|
14
|
+
*
|
|
15
|
+
* ## Basic Usage
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { DurableCascadeExecutor, createAIGatewayConfig } from 'ai-props/worker'
|
|
20
|
+
*
|
|
21
|
+
* const cascade = new DurableCascadeExecutor('generate-content', {
|
|
22
|
+
* code: async (input) => {
|
|
23
|
+
* if (input.template) return { content: input.template }
|
|
24
|
+
* throw new Error('No template')
|
|
25
|
+
* },
|
|
26
|
+
* generative: async (input, ctx) => {
|
|
27
|
+
* const result = await ctx.ai.run('@cf/meta/llama-3-8b-instruct', {
|
|
28
|
+
* messages: [{ role: 'user', content: 'Generate content' }]
|
|
29
|
+
* })
|
|
30
|
+
* return { content: result.response }
|
|
31
|
+
* }
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* // In workflow
|
|
35
|
+
* const result = await cascade.run(step, { topic: 'AI' })
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @packageDocumentation
|
|
39
|
+
*/
|
|
40
|
+
import { CascadeExecutor, type CascadeConfig, type CascadeResult, type CascadeContext, type TierContext, type TierHandler, type CapabilityTier, type FiveWHEvent, type TierResult, TIER_ORDER, DEFAULT_TIER_TIMEOUTS, createCascadeContext, recordStep, AllTiersFailedError, CascadeTimeoutError } from './cascade.js';
|
|
41
|
+
export { CascadeExecutor, type CascadeConfig, type CascadeResult, type CascadeContext, type TierContext, type TierHandler, type CapabilityTier, type FiveWHEvent, type TierResult, TIER_ORDER, DEFAULT_TIER_TIMEOUTS, createCascadeContext, recordStep, AllTiersFailedError, CascadeTimeoutError, };
|
|
42
|
+
/**
|
|
43
|
+
* Configuration for retry behavior (Cloudflare Workflows format)
|
|
44
|
+
*/
|
|
45
|
+
export interface DurableRetryConfig {
|
|
46
|
+
/** Maximum number of retry attempts */
|
|
47
|
+
limit: number;
|
|
48
|
+
/** Delay between retries (string like '1 second' or number in ms) */
|
|
49
|
+
delay?: string | number;
|
|
50
|
+
/** Backoff strategy */
|
|
51
|
+
backoff?: 'constant' | 'linear' | 'exponential';
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Configuration for a durable step
|
|
55
|
+
*/
|
|
56
|
+
export interface DurableStepConfig {
|
|
57
|
+
/** Retry configuration */
|
|
58
|
+
retries?: DurableRetryConfig;
|
|
59
|
+
/** Timeout for the step (string like '30 seconds' or number in ms) */
|
|
60
|
+
timeout?: string | number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Interface for Cloudflare Workflows step object
|
|
64
|
+
*/
|
|
65
|
+
export interface WorkflowStep {
|
|
66
|
+
do<T>(name: string, callback: () => Promise<T>): Promise<T>;
|
|
67
|
+
do<T>(name: string, config: DurableStepConfig, callback: () => Promise<T>): Promise<T>;
|
|
68
|
+
sleep(name: string, duration: string | number): Promise<void>;
|
|
69
|
+
sleepUntil(name: string, timestamp: Date | number): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* AI binding interface (matches Cloudflare AI binding)
|
|
73
|
+
*/
|
|
74
|
+
export interface AiBinding {
|
|
75
|
+
run<T = unknown>(model: string, options: {
|
|
76
|
+
messages: Array<{
|
|
77
|
+
role: string;
|
|
78
|
+
content: string;
|
|
79
|
+
}>;
|
|
80
|
+
}): Promise<T & {
|
|
81
|
+
response?: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Human review request
|
|
86
|
+
*/
|
|
87
|
+
export interface HumanReviewRequest {
|
|
88
|
+
type: string;
|
|
89
|
+
data: unknown;
|
|
90
|
+
assignee?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Context provided to durable cascade tier handlers
|
|
94
|
+
*/
|
|
95
|
+
export interface DurableCascadeTierContext<TInput = unknown> extends TierContext<TInput> {
|
|
96
|
+
/** AI binding for generative/agentic tiers */
|
|
97
|
+
ai: AiBinding;
|
|
98
|
+
/** Request human review */
|
|
99
|
+
requestHumanReview: (request: HumanReviewRequest) => Promise<{
|
|
100
|
+
reviewId: string;
|
|
101
|
+
status: string;
|
|
102
|
+
}>;
|
|
103
|
+
/** Workflow step for nested durable operations */
|
|
104
|
+
workflowStep: WorkflowStep;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Code tier handler (deterministic, fast)
|
|
108
|
+
*/
|
|
109
|
+
export type CodeTierHandler<TInput, TOutput> = (input: TInput) => Promise<TOutput>;
|
|
110
|
+
/**
|
|
111
|
+
* AI tier handler (generative or agentic)
|
|
112
|
+
*/
|
|
113
|
+
export type AiTierHandler<TInput, TOutput> = (input: TInput, ctx: DurableCascadeTierContext<TInput>) => Promise<TOutput>;
|
|
114
|
+
/**
|
|
115
|
+
* Human tier handler
|
|
116
|
+
*/
|
|
117
|
+
export type HumanTierHandler<TInput, TOutput> = (input: TInput, ctx: DurableCascadeTierContext<TInput>) => Promise<TOutput>;
|
|
118
|
+
/**
|
|
119
|
+
* Configuration for DurableCascadeExecutor
|
|
120
|
+
*/
|
|
121
|
+
export interface DurableCascadeConfig<TInput = unknown, TOutput = unknown> {
|
|
122
|
+
/** Code tier handler (deterministic, fast) */
|
|
123
|
+
code?: CodeTierHandler<TInput, TOutput>;
|
|
124
|
+
/** Generative AI tier handler */
|
|
125
|
+
generative?: AiTierHandler<TInput, TOutput>;
|
|
126
|
+
/** Agentic AI tier handler (multi-step reasoning) */
|
|
127
|
+
agentic?: AiTierHandler<TInput, TOutput>;
|
|
128
|
+
/** Human tier handler (human-in-the-loop) */
|
|
129
|
+
human?: HumanTierHandler<TInput, TOutput>;
|
|
130
|
+
/** Per-tier timeout configuration (in ms) */
|
|
131
|
+
timeouts?: Partial<Record<CapabilityTier, number>>;
|
|
132
|
+
/** Total cascade timeout (in ms) */
|
|
133
|
+
totalTimeout?: number;
|
|
134
|
+
/** Per-tier retry configuration */
|
|
135
|
+
tierConfig?: Partial<Record<CapabilityTier, {
|
|
136
|
+
retries?: {
|
|
137
|
+
limit: number;
|
|
138
|
+
delay?: number;
|
|
139
|
+
backoff?: 'constant' | 'linear' | 'exponential';
|
|
140
|
+
};
|
|
141
|
+
successCondition?: (result: unknown) => boolean;
|
|
142
|
+
onError?: (error: Error, tier: CapabilityTier) => void;
|
|
143
|
+
}>>;
|
|
144
|
+
/** Event callback for 5W+H audit events */
|
|
145
|
+
onEvent?: (event: FiveWHEvent) => void;
|
|
146
|
+
/** Actor identifier for audit trail */
|
|
147
|
+
actor?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* AI Gateway configuration for Cloudflare Workers
|
|
151
|
+
*/
|
|
152
|
+
export interface AIGatewayConfig {
|
|
153
|
+
/** Gateway ID */
|
|
154
|
+
gatewayId: string;
|
|
155
|
+
/** Account ID */
|
|
156
|
+
accountId: string;
|
|
157
|
+
/** Cache TTL in seconds (0 to disable) */
|
|
158
|
+
cacheTtl?: number;
|
|
159
|
+
/** Skip cache for this request */
|
|
160
|
+
skipCache?: boolean;
|
|
161
|
+
/** Custom metadata to attach to requests */
|
|
162
|
+
metadata?: Record<string, string>;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Create AI Gateway configuration for use with cascades
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const gatewayConfig = createAIGatewayConfig({
|
|
170
|
+
* gatewayId: 'my-gateway',
|
|
171
|
+
* accountId: env.CF_ACCOUNT_ID,
|
|
172
|
+
* cacheTtl: 3600, // 1 hour
|
|
173
|
+
* })
|
|
174
|
+
*
|
|
175
|
+
* // Use with AI binding
|
|
176
|
+
* const result = await env.AI.run('@cf/meta/llama-3-8b-instruct', {
|
|
177
|
+
* messages: [...],
|
|
178
|
+
* ...gatewayConfig.toRequestOptions()
|
|
179
|
+
* })
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export declare function createAIGatewayConfig(config: AIGatewayConfig): {
|
|
183
|
+
config: AIGatewayConfig;
|
|
184
|
+
toRequestOptions: () => Record<string, unknown>;
|
|
185
|
+
getCacheKey: (input: unknown) => string;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* DurableCascadeExecutor - Durable tiered execution with cascade pattern
|
|
189
|
+
*
|
|
190
|
+
* Combines the cascade pattern (code -> generative -> agentic -> human)
|
|
191
|
+
* with Cloudflare Workflows durability guarantees. Each tier execution
|
|
192
|
+
* creates a durable checkpoint that survives process restarts.
|
|
193
|
+
*/
|
|
194
|
+
export declare class DurableCascadeExecutor<TInput = unknown, TOutput = unknown> {
|
|
195
|
+
/** Cascade name */
|
|
196
|
+
readonly name: string;
|
|
197
|
+
/** Cascade configuration */
|
|
198
|
+
readonly config: DurableCascadeConfig<TInput, TOutput>;
|
|
199
|
+
/** AI binding (injected at runtime) */
|
|
200
|
+
private ai?;
|
|
201
|
+
/** Human review handler */
|
|
202
|
+
private humanReviewHandler?;
|
|
203
|
+
constructor(name: string, config: DurableCascadeConfig<TInput, TOutput>);
|
|
204
|
+
/**
|
|
205
|
+
* Set the AI binding for generative/agentic tiers
|
|
206
|
+
*/
|
|
207
|
+
setAi(ai: AiBinding): this;
|
|
208
|
+
/**
|
|
209
|
+
* Set the human review handler
|
|
210
|
+
*/
|
|
211
|
+
setHumanReviewHandler(handler: (request: HumanReviewRequest) => Promise<{
|
|
212
|
+
reviewId: string;
|
|
213
|
+
status: string;
|
|
214
|
+
}>): this;
|
|
215
|
+
/**
|
|
216
|
+
* Run the cascade with durable execution
|
|
217
|
+
*/
|
|
218
|
+
run(workflowStep: WorkflowStep, input: TInput, options?: {
|
|
219
|
+
ai?: AiBinding;
|
|
220
|
+
humanReviewHandler?: (request: HumanReviewRequest) => Promise<{
|
|
221
|
+
reviewId: string;
|
|
222
|
+
status: string;
|
|
223
|
+
}>;
|
|
224
|
+
}): Promise<CascadeResult<TOutput>>;
|
|
225
|
+
/**
|
|
226
|
+
* Execute a single tier with durability
|
|
227
|
+
*/
|
|
228
|
+
private executeTier;
|
|
229
|
+
/**
|
|
230
|
+
* Get the handler for a tier
|
|
231
|
+
*/
|
|
232
|
+
private getTierHandler;
|
|
233
|
+
/**
|
|
234
|
+
* Get the next configured tier
|
|
235
|
+
*/
|
|
236
|
+
private getNextConfiguredTier;
|
|
237
|
+
/**
|
|
238
|
+
* Emit a 5W+H event
|
|
239
|
+
*/
|
|
240
|
+
private emitEvent;
|
|
241
|
+
/**
|
|
242
|
+
* Create a mock AI binding for testing
|
|
243
|
+
*/
|
|
244
|
+
private createMockAi;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Create a durable cascade step for common AI props patterns
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* const titleCascade = createDurableCascadeStep({
|
|
252
|
+
* name: 'generate-title',
|
|
253
|
+
* code: async (input) => {
|
|
254
|
+
* if (input.template) return { title: input.template }
|
|
255
|
+
* throw new Error('No template')
|
|
256
|
+
* },
|
|
257
|
+
* generative: async (input, ctx) => {
|
|
258
|
+
* const result = await ctx.ai.run('@cf/meta/llama-3-8b-instruct', {
|
|
259
|
+
* messages: [{ role: 'user', content: `Generate a title for: ${input.topic}` }]
|
|
260
|
+
* })
|
|
261
|
+
* return { title: result.response }
|
|
262
|
+
* }
|
|
263
|
+
* })
|
|
264
|
+
*
|
|
265
|
+
* // In workflow
|
|
266
|
+
* const result = await titleCascade.run(step, { topic: 'AI' })
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
export declare function createDurableCascadeStep<TInput = unknown, TOutput = unknown>(config: {
|
|
270
|
+
name: string;
|
|
271
|
+
code?: CodeTierHandler<TInput, TOutput>;
|
|
272
|
+
generative?: AiTierHandler<TInput, TOutput>;
|
|
273
|
+
agentic?: AiTierHandler<TInput, TOutput>;
|
|
274
|
+
human?: HumanTierHandler<TInput, TOutput>;
|
|
275
|
+
timeouts?: Partial<Record<CapabilityTier, number>>;
|
|
276
|
+
tierConfig?: DurableCascadeConfig<TInput, TOutput>['tierConfig'];
|
|
277
|
+
onEvent?: (event: FiveWHEvent) => void;
|
|
278
|
+
actor?: string;
|
|
279
|
+
}): DurableCascadeExecutor<TInput, TOutput>;
|
|
280
|
+
//# sourceMappingURL=durable-cascade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durable-cascade.d.ts","sourceRoot":"","sources":["../src/durable-cascade.ts"],"names":[],"mappings":"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"}
|