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
package/.dev.vars
ADDED
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
# ai-props
|
|
2
2
|
|
|
3
|
+
## 2.4.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [4d58f5f]
|
|
8
|
+
- ai-functions@2.4.0
|
|
9
|
+
- ai-providers@2.4.0
|
|
10
|
+
- language-models@2.4.0
|
|
11
|
+
|
|
12
|
+
## 2.3.0
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [9e2779a]
|
|
17
|
+
- Updated dependencies [2787830]
|
|
18
|
+
- ai-functions@2.3.0
|
|
19
|
+
- language-models@2.3.0
|
|
20
|
+
- ai-providers@2.3.0
|
|
21
|
+
|
|
3
22
|
## 2.1.3
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
6
25
|
|
|
7
26
|
- Documentation and testing improvements
|
|
27
|
+
|
|
8
28
|
- Add deterministic AI testing suite with self-validating patterns
|
|
9
29
|
- Apply StoryBrand narrative to all package READMEs
|
|
10
30
|
- Update TESTING.md with four principles of deterministic AI testing
|
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# ai-props
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
3
5
|
**Stop manually writing placeholder props. Let AI fill in the blanks.**
|
|
4
6
|
|
|
5
7
|
You've built a beautiful component library. But every time you use a component, you're stuck inventing placeholder text, mock data, and dummy content. Your `<UserCard />` needs a bio. Your `<ProductCard />` needs a description. Your `<SEOHead />` needs meta tags.
|
package/dist/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;AAG5F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAwChB;AAmBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAEhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAE/F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;;;IAQ5B;;OAEG;yBACkB,OAAO,CAAC,CAAC,CAAC;IAE/B;;OAEG;6BAC4B,OAAO,CAAC,CAAC,CAAC,EAAE,KAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI1D;;OAEG;4BAC2B,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;EAK/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAErE,UAAU,EAAE,CAAC,GACZ,WAAW,CAAC;KACZ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACrE,CAAC,CA+BD"}
|
package/dist/ai.js
CHANGED
|
@@ -44,14 +44,14 @@ export function AI(options) {
|
|
|
44
44
|
// Merge with defaults
|
|
45
45
|
const propsWithDefaults = { ...defaults, ...partialProps };
|
|
46
46
|
// Check if all required props are provided
|
|
47
|
-
const missingRequired = required.filter(key => propsWithDefaults[key] === undefined);
|
|
47
|
+
const missingRequired = required.filter((key) => propsWithDefaults[key] === undefined);
|
|
48
48
|
if (missingRequired.length > 0) {
|
|
49
49
|
throw new Error(`Missing required props: ${missingRequired.join(', ')}`);
|
|
50
50
|
}
|
|
51
51
|
// Generate missing props
|
|
52
52
|
const fullProps = await mergeWithGenerated(filteredSchema, propsWithDefaults, {
|
|
53
|
-
model: config.model,
|
|
54
|
-
system: config.system,
|
|
53
|
+
...(config.model !== undefined && { model: config.model }),
|
|
54
|
+
...(config.system !== undefined && { system: config.system }),
|
|
55
55
|
});
|
|
56
56
|
return fullProps;
|
|
57
57
|
};
|
|
@@ -144,7 +144,7 @@ export function createComponentFactory(options) {
|
|
|
144
144
|
* Generate multiple instances
|
|
145
145
|
*/
|
|
146
146
|
generateMany: async (contexts) => {
|
|
147
|
-
return Promise.all(contexts.map(ctx => component(ctx)));
|
|
147
|
+
return Promise.all(contexts.map((ctx) => component(ctx)));
|
|
148
148
|
},
|
|
149
149
|
/**
|
|
150
150
|
* Generate with specific overrides
|
package/dist/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,EAAE,CAChB,OAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;IAEnF,kDAAkD;IAClD,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,OAAmB,CAAC,CAAA;IAEhE;;OAEG;IACH,MAAM,WAAW,GAAG,KAAK,EAAE,YAAwB,EAAc,EAAE;QACjE,sBAAsB;QACtB,MAAM,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAA;QAE1D,2CAA2C;QAC3C,MAAM,eAAe,GAAI,QAAqB,CAAC,MAAM,CACnD,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAc,CAAC,KAAK,SAAS,CACzD,CAAA;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,2BAA2B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAI,cAAc,EAAE,iBAA+B,EAAE;YAC7F,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SAC9D,CAAC,CAAA;QAEF,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,kBAAkB;IAClB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;IAC3B,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;IAE3B,uBAAuB;IACvB,WAAW,CAAC,aAAa,GAAG,KAAK,EAAE,OAAoB,EAAc,EAAE;QACrE,OAAO,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,OAAO,WAA6B,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAkB,EAAE,OAAiB;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,QAAQ,GAA4B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvB,CAAC;IACH,CAAC;IACD,OAAO,QAAwB,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8B;IAE9B,OAAO,EAAE,CAAI,OAAO,CAAC,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAkD,MAAS;IAC1F,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA8B;IAE9B,MAAM,SAAS,GAAG,EAAE,CAAI,OAAO,CAAC,CAAA;IAEhC,OAAO;QACL,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;QAEtB;;WAEG;QACH,QAAQ,EAAE,CAAC,OAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;QAE5D;;WAEG;QACH,YAAY,EAAE,KAAK,EAAE,QAAsB,EAAgB,EAAE;YAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3D,CAAC;QAED;;WAEG;QACH,YAAY,EAAE,KAAK,EAAE,OAAmB,EAAE,SAAqB,EAAc,EAAE;YAC7E,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;YAC1C,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAGjC,UAAa;IAQb,MAAM,WAAW,GAAG,KAAK,EAAE,YAAkC,EAAwB,EAAE;QACrF,MAAM,OAAO,GAA4B,EAAE,CAAA;QAE3C,kCAAkC;QAClC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YACtD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAsD,CAAC,CAAA;YAC5E,MAAM,OAAO,GAAI,YAAwC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;YACpE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,CAAC,OAA2C,CAAC,CAAA;QAC7E,CAAC,CAAC,CACH,CAAA;QAED,OAAO,OAAsB,CAAA;IAC/B,CAAC,CAAA;IAED,kBAAkB;IAClB,MAAM,cAAc,GAA4B,EAAE,CAAA;IAClD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;IACtC,CAAC;IAED,WAAW,CAAC,MAAM,GAAG,cAA4B,CAAA;IACjD,WAAW,CAAC,MAAM,GAAG,EAAE,CAAA;IACvB,WAAW,CAAC,aAAa,GAAG,CAAC,OAA8B,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAE1F,OAAO,WAAuC,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade Executor - Code -> Generative -> Agentic -> Human escalation pattern for AI Props
|
|
3
|
+
*
|
|
4
|
+
* Implements a tiered execution strategy that tries deterministic code first,
|
|
5
|
+
* then escalates to AI-powered prop generation, and finally to human-in-the-loop
|
|
6
|
+
* if all automated approaches fail.
|
|
7
|
+
*
|
|
8
|
+
* ## Features
|
|
9
|
+
*
|
|
10
|
+
* - **Tier Escalation**: Code -> Generative -> Agentic -> Human pattern
|
|
11
|
+
* - **Per-tier Timeouts**: Configurable timeouts for each tier
|
|
12
|
+
* - **5W+H Audit Events**: Who, What, When, Where, Why, How event emission
|
|
13
|
+
* - **Context Propagation**: Share context across tiers
|
|
14
|
+
* - **Retry Support**: Configurable retries per tier with backoff
|
|
15
|
+
* - **AI Gateway Support**: Configuration helpers for Cloudflare AI Gateway
|
|
16
|
+
*
|
|
17
|
+
* ## Basic Usage
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { CascadeExecutor, createCascadeStep } from 'ai-props/worker'
|
|
22
|
+
*
|
|
23
|
+
* const generateTitleCascade = new CascadeExecutor({
|
|
24
|
+
* tiers: {
|
|
25
|
+
* code: {
|
|
26
|
+
* name: 'template-title',
|
|
27
|
+
* execute: async (input) => {
|
|
28
|
+
* if (input.template) return { title: input.template }
|
|
29
|
+
* throw new Error('No template')
|
|
30
|
+
* }
|
|
31
|
+
* },
|
|
32
|
+
* generative: {
|
|
33
|
+
* name: 'ai-title',
|
|
34
|
+
* execute: async (input) => {
|
|
35
|
+
* const result = await generateProps({
|
|
36
|
+
* schema: { title: 'A compelling title' },
|
|
37
|
+
* context: input
|
|
38
|
+
* })
|
|
39
|
+
* return result.props
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* const result = await generateTitleCascade.execute({ topic: 'AI' })
|
|
46
|
+
* console.log(result.value) // { title: '...' }
|
|
47
|
+
* console.log(result.tier) // 'code' or 'generative'
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @packageDocumentation
|
|
51
|
+
*/
|
|
52
|
+
/**
|
|
53
|
+
* Ordered list of capability tiers
|
|
54
|
+
*/
|
|
55
|
+
export declare const TIER_ORDER: readonly ["code", "generative", "agentic", "human"];
|
|
56
|
+
/**
|
|
57
|
+
* Default timeouts per tier (in milliseconds)
|
|
58
|
+
*/
|
|
59
|
+
export declare const DEFAULT_TIER_TIMEOUTS: Record<CapabilityTier, number>;
|
|
60
|
+
/**
|
|
61
|
+
* Capability tier levels
|
|
62
|
+
*/
|
|
63
|
+
export type CapabilityTier = 'code' | 'generative' | 'agentic' | 'human';
|
|
64
|
+
/**
|
|
65
|
+
* 5W+H Event for audit trails
|
|
66
|
+
*/
|
|
67
|
+
export interface FiveWHEvent {
|
|
68
|
+
/** Who performed the action */
|
|
69
|
+
who: string;
|
|
70
|
+
/** What action was performed */
|
|
71
|
+
what: string;
|
|
72
|
+
/** When the action occurred (timestamp) */
|
|
73
|
+
when: number;
|
|
74
|
+
/** Where the action occurred (cascade/tier name) */
|
|
75
|
+
where: string;
|
|
76
|
+
/** Why the action was performed (reason/error) */
|
|
77
|
+
why?: string;
|
|
78
|
+
/** How the action was performed */
|
|
79
|
+
how?: {
|
|
80
|
+
status: 'running' | 'completed' | 'failed';
|
|
81
|
+
duration?: number;
|
|
82
|
+
metadata?: Record<string, unknown>;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Cascade step tracking
|
|
87
|
+
*/
|
|
88
|
+
export interface CascadeStep {
|
|
89
|
+
id: string;
|
|
90
|
+
tier: string;
|
|
91
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
92
|
+
startTime?: number;
|
|
93
|
+
endTime?: number;
|
|
94
|
+
error?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Cascade context for tracing
|
|
98
|
+
*/
|
|
99
|
+
export interface CascadeContext {
|
|
100
|
+
correlationId: string;
|
|
101
|
+
name: string;
|
|
102
|
+
steps: CascadeStep[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Context passed to tier handlers
|
|
106
|
+
*/
|
|
107
|
+
export interface TierContext<TInput = unknown> {
|
|
108
|
+
/** Correlation ID for tracing */
|
|
109
|
+
correlationId: string;
|
|
110
|
+
/** Current tier being executed */
|
|
111
|
+
tier: CapabilityTier;
|
|
112
|
+
/** Input data */
|
|
113
|
+
input: TInput;
|
|
114
|
+
/** Cascade context */
|
|
115
|
+
cascadeContext: CascadeContext;
|
|
116
|
+
/** Previous tier errors */
|
|
117
|
+
previousErrors: Array<{
|
|
118
|
+
tier: CapabilityTier;
|
|
119
|
+
error: string;
|
|
120
|
+
}>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Handler for a specific tier
|
|
124
|
+
*/
|
|
125
|
+
export interface TierHandler<TInput = unknown, TOutput = unknown> {
|
|
126
|
+
/** Handler name for debugging */
|
|
127
|
+
name: string;
|
|
128
|
+
/** Execute the tier logic */
|
|
129
|
+
execute: (input: TInput, context: TierContext<TInput>) => Promise<TOutput>;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Retry configuration per tier
|
|
133
|
+
*/
|
|
134
|
+
export interface TierRetryConfig {
|
|
135
|
+
/** Maximum number of retries */
|
|
136
|
+
maxRetries: number;
|
|
137
|
+
/** Base delay in milliseconds */
|
|
138
|
+
baseDelay: number;
|
|
139
|
+
/** Multiplier for exponential backoff */
|
|
140
|
+
multiplier?: number;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Result from a single tier execution
|
|
144
|
+
*/
|
|
145
|
+
export interface TierResult<TOutput = unknown> {
|
|
146
|
+
/** Tier that was executed */
|
|
147
|
+
tier: CapabilityTier;
|
|
148
|
+
/** Whether the tier succeeded */
|
|
149
|
+
success: boolean;
|
|
150
|
+
/** Result value (if success) */
|
|
151
|
+
value?: TOutput;
|
|
152
|
+
/** Error (if failure) */
|
|
153
|
+
error?: Error;
|
|
154
|
+
/** Whether the tier timed out */
|
|
155
|
+
timedOut?: boolean;
|
|
156
|
+
/** Duration in milliseconds */
|
|
157
|
+
duration: number;
|
|
158
|
+
/** Number of attempts */
|
|
159
|
+
attempts?: number;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Metrics from cascade execution
|
|
163
|
+
*/
|
|
164
|
+
export interface CascadeMetrics {
|
|
165
|
+
/** Total execution duration */
|
|
166
|
+
totalDuration: number;
|
|
167
|
+
/** Duration per tier */
|
|
168
|
+
tierDurations: Partial<Record<CapabilityTier, number>>;
|
|
169
|
+
/** Number of retries per tier */
|
|
170
|
+
tierRetries?: Partial<Record<CapabilityTier, number>>;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Result from cascade execution
|
|
174
|
+
*/
|
|
175
|
+
export interface CascadeResult<TOutput = unknown> {
|
|
176
|
+
/** Final result value */
|
|
177
|
+
value: TOutput;
|
|
178
|
+
/** Tier that produced the result */
|
|
179
|
+
tier: CapabilityTier;
|
|
180
|
+
/** History of all tier executions */
|
|
181
|
+
history: TierResult<TOutput>[];
|
|
182
|
+
/** Tiers that were skipped */
|
|
183
|
+
skippedTiers: CapabilityTier[];
|
|
184
|
+
/** Cascade context with tracing info */
|
|
185
|
+
context: CascadeContext;
|
|
186
|
+
/** Execution metrics */
|
|
187
|
+
metrics: CascadeMetrics;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Skip condition function
|
|
191
|
+
*/
|
|
192
|
+
export type SkipCondition<TInput = unknown> = (input: TInput) => boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Configuration for CascadeExecutor
|
|
195
|
+
*/
|
|
196
|
+
export interface CascadeConfig<TInput = unknown, TOutput = unknown> {
|
|
197
|
+
/** Tier handlers */
|
|
198
|
+
tiers: Partial<Record<CapabilityTier, TierHandler<TInput, TOutput>>>;
|
|
199
|
+
/** Per-tier timeouts in milliseconds */
|
|
200
|
+
timeouts?: Partial<Record<CapabilityTier, number>>;
|
|
201
|
+
/** Total cascade timeout in milliseconds */
|
|
202
|
+
totalTimeout?: number;
|
|
203
|
+
/** Use default timeouts from capability-tiers */
|
|
204
|
+
useDefaultTimeouts?: boolean;
|
|
205
|
+
/** Actor identifier for 5W+H events */
|
|
206
|
+
actor?: string;
|
|
207
|
+
/** Cascade name for 5W+H events */
|
|
208
|
+
cascadeName?: string;
|
|
209
|
+
/** Event callback for 5W+H events */
|
|
210
|
+
onEvent?: (event: FiveWHEvent) => void;
|
|
211
|
+
/** Skip conditions per tier */
|
|
212
|
+
skipConditions?: Partial<Record<CapabilityTier, SkipCondition<TInput>>>;
|
|
213
|
+
/** Retry configuration per tier */
|
|
214
|
+
retryConfig?: Partial<Record<CapabilityTier, TierRetryConfig>>;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Error thrown when cascade times out
|
|
218
|
+
*/
|
|
219
|
+
export declare class CascadeTimeoutError extends Error {
|
|
220
|
+
readonly timeout: number;
|
|
221
|
+
readonly elapsed: number;
|
|
222
|
+
constructor(timeout: number, elapsed: number);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Error thrown when a tier is skipped
|
|
226
|
+
*/
|
|
227
|
+
export declare class TierSkippedError extends Error {
|
|
228
|
+
readonly tier: CapabilityTier;
|
|
229
|
+
readonly reason: string;
|
|
230
|
+
constructor(tier: CapabilityTier, reason: string);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Error thrown when all tiers fail
|
|
234
|
+
*/
|
|
235
|
+
export declare class AllTiersFailedError extends Error {
|
|
236
|
+
readonly history: TierResult[];
|
|
237
|
+
constructor(history: TierResult[]);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Create a cascade context for tracing
|
|
241
|
+
*/
|
|
242
|
+
export declare function createCascadeContext(options: {
|
|
243
|
+
name: string;
|
|
244
|
+
}): CascadeContext;
|
|
245
|
+
/**
|
|
246
|
+
* Record a step in the cascade context
|
|
247
|
+
*/
|
|
248
|
+
export declare function recordStep(context: CascadeContext, tier: string, meta: {
|
|
249
|
+
actor: string;
|
|
250
|
+
action: string;
|
|
251
|
+
}): {
|
|
252
|
+
complete: () => void;
|
|
253
|
+
fail: (error: Error) => void;
|
|
254
|
+
};
|
|
255
|
+
/**
|
|
256
|
+
* CascadeExecutor implements the code -> generative -> agentic -> human pattern
|
|
257
|
+
*
|
|
258
|
+
* This is the base executor for cascade patterns, suitable for both
|
|
259
|
+
* synchronous and worker contexts.
|
|
260
|
+
*/
|
|
261
|
+
export declare class CascadeExecutor<TInput = unknown, TOutput = unknown> {
|
|
262
|
+
protected readonly config: CascadeConfig<TInput, TOutput>;
|
|
263
|
+
protected readonly actor: string;
|
|
264
|
+
protected readonly cascadeName: string;
|
|
265
|
+
constructor(config: CascadeConfig<TInput, TOutput>);
|
|
266
|
+
/**
|
|
267
|
+
* Execute the cascade
|
|
268
|
+
*/
|
|
269
|
+
execute(input: TInput): Promise<CascadeResult<TOutput>>;
|
|
270
|
+
/**
|
|
271
|
+
* Execute a single tier with timeout and retry support
|
|
272
|
+
*/
|
|
273
|
+
protected executeTier(tier: CapabilityTier, handler: TierHandler<TInput, TOutput>, input: TInput, cascadeContext: CascadeContext, previousErrors: Array<{
|
|
274
|
+
tier: CapabilityTier;
|
|
275
|
+
error: string;
|
|
276
|
+
}>, cascadeStartTime: number, totalTimeoutPromise: Promise<never>): Promise<TierResult<TOutput>>;
|
|
277
|
+
/**
|
|
278
|
+
* Execute a function with a timeout
|
|
279
|
+
*/
|
|
280
|
+
protected executeWithTimeout<R>(fn: () => Promise<R>, timeout: number | undefined, totalTimeoutPromise: Promise<never>): Promise<R>;
|
|
281
|
+
/**
|
|
282
|
+
* Get timeout for a tier
|
|
283
|
+
*/
|
|
284
|
+
protected getTierTimeout(tier: CapabilityTier): number | undefined;
|
|
285
|
+
/**
|
|
286
|
+
* Get the next configured tier after the given tier
|
|
287
|
+
*/
|
|
288
|
+
protected getNextConfiguredTier(currentTier: CapabilityTier): CapabilityTier | undefined;
|
|
289
|
+
/**
|
|
290
|
+
* Emit a 5W+H event
|
|
291
|
+
*/
|
|
292
|
+
protected emitEvent(event: FiveWHEvent): void;
|
|
293
|
+
/**
|
|
294
|
+
* Sleep for a given duration
|
|
295
|
+
*/
|
|
296
|
+
protected sleep(ms: number): Promise<void>;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Create a cascade step configuration for common patterns
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* const titleCascade = createCascadeStep({
|
|
304
|
+
* name: 'generate-title',
|
|
305
|
+
* code: async (input) => {
|
|
306
|
+
* if (input.template) return { title: input.template }
|
|
307
|
+
* throw new Error('No template')
|
|
308
|
+
* },
|
|
309
|
+
* generative: async (input, ctx) => {
|
|
310
|
+
* const result = await generateProps({
|
|
311
|
+
* schema: { title: 'A compelling title' },
|
|
312
|
+
* context: input
|
|
313
|
+
* })
|
|
314
|
+
* return result.props
|
|
315
|
+
* }
|
|
316
|
+
* })
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
export declare function createCascadeStep<TInput = unknown, TOutput = unknown>(config: {
|
|
320
|
+
name: string;
|
|
321
|
+
code?: (input: TInput, ctx: TierContext<TInput>) => Promise<TOutput>;
|
|
322
|
+
generative?: (input: TInput, ctx: TierContext<TInput>) => Promise<TOutput>;
|
|
323
|
+
agentic?: (input: TInput, ctx: TierContext<TInput>) => Promise<TOutput>;
|
|
324
|
+
human?: (input: TInput, ctx: TierContext<TInput>) => Promise<TOutput>;
|
|
325
|
+
timeouts?: Partial<Record<CapabilityTier, number>>;
|
|
326
|
+
retryConfig?: Partial<Record<CapabilityTier, TierRetryConfig>>;
|
|
327
|
+
onEvent?: (event: FiveWHEvent) => void;
|
|
328
|
+
}): CascadeExecutor<TInput, TOutput>;
|
|
329
|
+
//# sourceMappingURL=cascade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../src/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAMH;;GAEG;AACH,eAAO,MAAM,UAAU,qDAAsD,CAAA;AAE7E;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKhE,CAAA;AAMD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;QAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,WAAW,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,OAAO;IAC3C,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,kCAAkC;IAClC,IAAI,EAAE,cAAc,CAAA;IACpB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,cAAc,EAAE,cAAc,CAAA;IAC9B,2BAA2B;IAC3B,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC9D,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,6BAA6B;IAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO,GAAG,OAAO;IAC3C,6BAA6B;IAC7B,IAAI,EAAE,cAAc,CAAA;IACpB,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,iCAAiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,wBAAwB;IACxB,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,OAAO;IAC9C,yBAAyB;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,oCAAoC;IACpC,IAAI,EAAE,cAAc,CAAA;IACpB,qCAAqC;IACrC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAA;IAC9B,8BAA8B;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAA;IAC9B,wCAAwC;IACxC,OAAO,EAAE,cAAc,CAAA;IACvB,wBAAwB;IACxB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAChE,oBAAoB;IACpB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACpE,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,+BAA+B;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvE,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAA;CAC/D;AAMD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,OAAO,EAAE,MAAM,CAAA;IAC/B,SAAgB,OAAO,EAAE,MAAM,CAAA;gBAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM7C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,IAAI,EAAE,cAAc,CAAA;IACpC,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM;CAMjD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,OAAO,EAAE,UAAU,EAAE,CAAA;gBAEzB,OAAO,EAAE,UAAU,EAAE;CAKlC;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAM9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IACD,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC7B,CAoBA;AAMD;;;;;GAKG;AACH,qBAAa,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC9D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAE1B,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAMlD;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAuI7D;;OAEG;cACa,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EAC9D,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAoJ/B;;OAEG;cACa,kBAAkB,CAAC,CAAC,EAClC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,GAClC,OAAO,CAAC,CAAC,CAAC;IAwBb;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAUlE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS;IAWxF;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM7C;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACpE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;CACvC,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCnC"}
|