@ramme-io/kernel 1.3.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/.turbo/turbo-build.log +5 -0
- package/LICENSE +21 -0
- package/dist/components/AutoForm.d.ts +24 -0
- package/dist/components/AutoForm.d.ts.map +1 -0
- package/dist/components/AutoForm.js +78 -0
- package/dist/components/AutoForm.js.map +1 -0
- package/dist/components/SmartTable.d.ts +14 -0
- package/dist/components/SmartTable.d.ts.map +1 -0
- package/dist/components/SmartTable.js +128 -0
- package/dist/components/SmartTable.js.map +1 -0
- package/dist/config/app.manifest.d.ts +7 -0
- package/dist/config/app.manifest.d.ts.map +1 -0
- package/dist/config/app.manifest.js +8 -0
- package/dist/config/app.manifest.js.map +1 -0
- package/dist/engine/renderers/DynamicBlock.d.ts +9 -0
- package/dist/engine/renderers/DynamicBlock.d.ts.map +1 -0
- package/dist/engine/renderers/DynamicBlock.js +67 -0
- package/dist/engine/renderers/DynamicBlock.js.map +1 -0
- package/dist/engine/renderers/DynamicPage.d.ts +11 -0
- package/dist/engine/renderers/DynamicPage.d.ts.map +1 -0
- package/dist/engine/renderers/DynamicPage.js +91 -0
- package/dist/engine/renderers/DynamicPage.js.map +1 -0
- package/dist/engine/renderers/route-generator.d.ts +16 -0
- package/dist/engine/renderers/route-generator.d.ts.map +1 -0
- package/dist/engine/renderers/route-generator.js +30 -0
- package/dist/engine/renderers/route-generator.js.map +1 -0
- package/dist/engine/renderers/sitemap-entry.d.ts +7 -0
- package/dist/engine/renderers/sitemap-entry.d.ts.map +1 -0
- package/dist/engine/renderers/sitemap-entry.js +2 -0
- package/dist/engine/renderers/sitemap-entry.js.map +1 -0
- package/dist/engine/runtime/ManifestContext.d.ts +115 -0
- package/dist/engine/runtime/ManifestContext.d.ts.map +1 -0
- package/dist/engine/runtime/ManifestContext.js +56 -0
- package/dist/engine/runtime/ManifestContext.js.map +1 -0
- package/dist/engine/runtime/MqttContext.d.ts +14 -0
- package/dist/engine/runtime/MqttContext.d.ts.map +1 -0
- package/dist/engine/runtime/MqttContext.js +70 -0
- package/dist/engine/runtime/MqttContext.js.map +1 -0
- package/dist/engine/runtime/SitemapContext.d.ts +31 -0
- package/dist/engine/runtime/SitemapContext.d.ts.map +1 -0
- package/dist/engine/runtime/SitemapContext.js +54 -0
- package/dist/engine/runtime/SitemapContext.js.map +1 -0
- package/dist/engine/runtime/data-seeder.d.ts +10 -0
- package/dist/engine/runtime/data-seeder.d.ts.map +1 -0
- package/dist/engine/runtime/data-seeder.js +35 -0
- package/dist/engine/runtime/data-seeder.js.map +1 -0
- package/dist/engine/runtime/useAction.d.ts +4 -0
- package/dist/engine/runtime/useAction.d.ts.map +1 -0
- package/dist/engine/runtime/useAction.js +55 -0
- package/dist/engine/runtime/useAction.js.map +1 -0
- package/dist/engine/runtime/useCrudLocalStorage.d.ts +19 -0
- package/dist/engine/runtime/useCrudLocalStorage.d.ts.map +1 -0
- package/dist/engine/runtime/useCrudLocalStorage.js +73 -0
- package/dist/engine/runtime/useCrudLocalStorage.js.map +1 -0
- package/dist/engine/runtime/useDataQuery.d.ts +39 -0
- package/dist/engine/runtime/useDataQuery.d.ts.map +1 -0
- package/dist/engine/runtime/useDataQuery.js +50 -0
- package/dist/engine/runtime/useDataQuery.js.map +1 -0
- package/dist/engine/runtime/useDynamicSitemap.d.ts +9 -0
- package/dist/engine/runtime/useDynamicSitemap.d.ts.map +1 -0
- package/dist/engine/runtime/useDynamicSitemap.js +38 -0
- package/dist/engine/runtime/useDynamicSitemap.js.map +1 -0
- package/dist/engine/runtime/useJustInTimeSeeder.d.ts +11 -0
- package/dist/engine/runtime/useJustInTimeSeeder.d.ts.map +1 -0
- package/dist/engine/runtime/useJustInTimeSeeder.js +88 -0
- package/dist/engine/runtime/useJustInTimeSeeder.js.map +1 -0
- package/dist/engine/runtime/useLiveBridge.d.ts +109 -0
- package/dist/engine/runtime/useLiveBridge.d.ts.map +1 -0
- package/dist/engine/runtime/useLiveBridge.js +21 -0
- package/dist/engine/runtime/useLiveBridge.js.map +1 -0
- package/dist/engine/runtime/useSignal.d.ts +11 -0
- package/dist/engine/runtime/useSignal.d.ts.map +1 -0
- package/dist/engine/runtime/useSignal.js +26 -0
- package/dist/engine/runtime/useSignal.js.map +1 -0
- package/dist/engine/runtime/useSignalStore.d.ts +31 -0
- package/dist/engine/runtime/useSignalStore.d.ts.map +1 -0
- package/dist/engine/runtime/useSignalStore.js +60 -0
- package/dist/engine/runtime/useSignalStore.js.map +1 -0
- package/dist/engine/runtime/useWorkflowEngine.d.ts +4 -0
- package/dist/engine/runtime/useWorkflowEngine.d.ts.map +1 -0
- package/dist/engine/runtime/useWorkflowEngine.js +85 -0
- package/dist/engine/runtime/useWorkflowEngine.js.map +1 -0
- package/dist/engine/types/manifest-types.d.ts +38 -0
- package/dist/engine/types/manifest-types.d.ts.map +1 -0
- package/dist/engine/types/manifest-types.js +5 -0
- package/dist/engine/types/manifest-types.js.map +1 -0
- package/dist/engine/types/sitemap-entry.d.ts +58 -0
- package/dist/engine/types/sitemap-entry.d.ts.map +1 -0
- package/dist/engine/types/sitemap-entry.js +19 -0
- package/dist/engine/types/sitemap-entry.js.map +1 -0
- package/dist/engine/validation/schema.d.ts +383 -0
- package/dist/engine/validation/schema.d.ts.map +1 -0
- package/dist/engine/validation/schema.js +156 -0
- package/dist/engine/validation/schema.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
- package/src/components/AutoForm.tsx +141 -0
- package/src/components/SmartTable.tsx +316 -0
- package/src/config/app.manifest.ts +7 -0
- package/src/engine/renderers/DynamicBlock.tsx +84 -0
- package/src/engine/renderers/DynamicPage.tsx +196 -0
- package/src/engine/renderers/route-generator.tsx +47 -0
- package/src/engine/renderers/sitemap-entry.ts +6 -0
- package/src/engine/runtime/ManifestContext.tsx +81 -0
- package/src/engine/runtime/MqttContext.tsx +94 -0
- package/src/engine/runtime/SitemapContext.tsx +61 -0
- package/src/engine/runtime/data-seeder.ts +39 -0
- package/src/engine/runtime/useAction.ts +64 -0
- package/src/engine/runtime/useCrudLocalStorage.ts +82 -0
- package/src/engine/runtime/useDataQuery.ts +98 -0
- package/src/engine/runtime/useDynamicSitemap.tsx +43 -0
- package/src/engine/runtime/useJustInTimeSeeder.ts +101 -0
- package/src/engine/runtime/useLiveBridge.ts +24 -0
- package/src/engine/runtime/useSignal.ts +40 -0
- package/src/engine/runtime/useSignalStore.ts +94 -0
- package/src/engine/runtime/useWorkflowEngine.ts +89 -0
- package/src/engine/types/manifest-types.ts +45 -0
- package/src/engine/types/sitemap-entry.ts +66 -0
- package/src/engine/validation/schema.ts +189 -0
- package/src/index.ts +27 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useToast } from '@ramme-io/ui';
|
|
3
|
+
import { useGeneratedSignals, useSimulation } from './useSignalStore';
|
|
4
|
+
// ❌ REMOVED: import { appManifest } from '../../config/app.manifest';
|
|
5
|
+
// ✅ ADDED: Live Context
|
|
6
|
+
import { useManifest } from './ManifestContext';
|
|
7
|
+
export const useWorkflowEngine = () => {
|
|
8
|
+
const signals = useGeneratedSignals();
|
|
9
|
+
const { addToast } = useToast();
|
|
10
|
+
// ✅ 1. Consume Live Manifest
|
|
11
|
+
const appManifest = useManifest();
|
|
12
|
+
// 2. Activate Simulation (Responsive to toggle)
|
|
13
|
+
useSimulation(appManifest.config.mockMode);
|
|
14
|
+
const executeAction = async (action, context) => {
|
|
15
|
+
// ... (Same execution logic as before) ...
|
|
16
|
+
console.log(`[Engine] Executing: ${action.type}`, action);
|
|
17
|
+
switch (action.type) {
|
|
18
|
+
case 'send_notification':
|
|
19
|
+
addToast(action.config.message || 'Notification Sent', 'info');
|
|
20
|
+
break;
|
|
21
|
+
case 'update_resource':
|
|
22
|
+
addToast(`Updating Resource: ${JSON.stringify(action.config)}`, 'success');
|
|
23
|
+
break;
|
|
24
|
+
case 'navigate':
|
|
25
|
+
window.location.href = action.config.path;
|
|
26
|
+
break;
|
|
27
|
+
case 'agent_task':
|
|
28
|
+
addToast('AI Agent Analyzing...', 'info');
|
|
29
|
+
setTimeout(() => addToast('🤖 Agent: "System Nominal"', 'success', 3000), 1500);
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
// 3. Watch Signals & Trigger Workflows (Live)
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!appManifest.domain?.workflows)
|
|
36
|
+
return;
|
|
37
|
+
appManifest.domain.workflows.forEach((flow) => {
|
|
38
|
+
if (!flow.active)
|
|
39
|
+
return;
|
|
40
|
+
if (flow.trigger.type === 'signal_change') {
|
|
41
|
+
const signalId = flow.trigger.config.signalId;
|
|
42
|
+
const condition = flow.trigger.config.condition;
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
const signal = signals[signalId];
|
|
45
|
+
if (signal) {
|
|
46
|
+
const val = signal.value;
|
|
47
|
+
try {
|
|
48
|
+
const isMet = checkCondition(val, condition);
|
|
49
|
+
if (isMet) {
|
|
50
|
+
console.log(`[Engine] Trigger Fired: ${flow.name}`);
|
|
51
|
+
flow.actions.forEach(action => executeAction(action, { signal: val }));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e) { }
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}, [signals, addToast, appManifest.domain.workflows]); // Added dependency
|
|
59
|
+
return {
|
|
60
|
+
triggerWorkflow: (workflowId) => {
|
|
61
|
+
// ✅ 4. Manual Triggers now find new workflows instantly
|
|
62
|
+
const flow = appManifest.domain?.workflows?.find(w => w.id === workflowId);
|
|
63
|
+
if (flow) {
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
flow.actions.forEach(action => executeAction(action, { manual: true }));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const checkCondition = (value, condition) => {
|
|
71
|
+
if (!condition)
|
|
72
|
+
return false;
|
|
73
|
+
const parts = condition.trim().split(' ');
|
|
74
|
+
const operator = parts[0];
|
|
75
|
+
const target = parseFloat(parts[1]);
|
|
76
|
+
switch (operator) {
|
|
77
|
+
case '>': return value > target;
|
|
78
|
+
case '<': return value < target;
|
|
79
|
+
case '>=': return value >= target;
|
|
80
|
+
case '<=': return value <= target;
|
|
81
|
+
case '==': return value === target;
|
|
82
|
+
default: return false;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=useWorkflowEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorkflowEngine.js","sourceRoot":"","sources":["../../../src/engine/runtime/useWorkflowEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type IconName } from '@ramme-io/ui';
|
|
2
|
+
/**
|
|
3
|
+
* Defines a simple navigation link structure used in menus.
|
|
4
|
+
*/
|
|
5
|
+
export interface ManifestLink {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
path: string;
|
|
9
|
+
icon?: IconName;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The fundamental unit of the UI.
|
|
13
|
+
* Corresponds to a specific React component in the registry.
|
|
14
|
+
*/
|
|
15
|
+
export interface Block {
|
|
16
|
+
id: string;
|
|
17
|
+
type: string;
|
|
18
|
+
props: Record<string, any>;
|
|
19
|
+
layout?: {
|
|
20
|
+
colSpan?: number;
|
|
21
|
+
rowSpan?: number;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A horizontal container that groups blocks together.
|
|
26
|
+
* Maps to a CSS Grid or Flex container.
|
|
27
|
+
*/
|
|
28
|
+
export interface PageSection {
|
|
29
|
+
id: string;
|
|
30
|
+
title?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
layout?: {
|
|
33
|
+
columns?: number;
|
|
34
|
+
variant?: 'grid' | 'stack';
|
|
35
|
+
};
|
|
36
|
+
blocks: Block[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=manifest-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-types.d.ts","sourceRoot":"","sources":["../../../src/engine/types/manifest-types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-types.js","sourceRoot":"","sources":["../../../src/engine/types/manifest-types.ts"],"names":[],"mappings":"AAAA,6BAA6B;;AA2C7B,wEAAwE;AACxE,8FAA8F"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file sitemap-entry.ts
|
|
3
|
+
* @repository ramme-app-starter
|
|
4
|
+
* @description This file defines the canonical TypeScript interface for a single
|
|
5
|
+
* sitemap entry. It is the "schema" or "contract" that governs the entire
|
|
6
|
+
* Sitemap-Driven Architecture.
|
|
7
|
+
*
|
|
8
|
+
* STRATEGIC IMPORTANCE:
|
|
9
|
+
* 1. Designer DX: It provides strict type-safety and autocompletion for any
|
|
10
|
+
* designer editing a `sitemap.ts` file, dramatically lowering the risk of errors.
|
|
11
|
+
* 2. Repo-Linking: It directly imports `IconName` from `@ramme-io/ui`, creating
|
|
12
|
+
* a type-safe link between our starter kit and our component library.
|
|
13
|
+
* 3. AI-Ready: This interface is the precise data structure that the AI Assistant
|
|
14
|
+
* in the (private) `ramme-app-builder` will be trained to generate.
|
|
15
|
+
* The "Architect" phase of the A.D.A.P.T. Framework will result in the
|
|
16
|
+
* AI creating an array of these objects.
|
|
17
|
+
*/
|
|
18
|
+
import { type IconName } from '@ramme-io/ui';
|
|
19
|
+
/**
|
|
20
|
+
* Defines the required shape for a single entry in any `sitemap.ts` file.
|
|
21
|
+
*/
|
|
22
|
+
export interface SitemapEntry {
|
|
23
|
+
/**
|
|
24
|
+
* A unique string identifier.
|
|
25
|
+
* Used by React as the `key` prop during route generation.
|
|
26
|
+
* e.g., 'dashboard.home'
|
|
27
|
+
*/
|
|
28
|
+
id: string;
|
|
29
|
+
/**
|
|
30
|
+
* The URL path segment for this route.
|
|
31
|
+
* e.g., 'home', 'users', 'settings'
|
|
32
|
+
*/
|
|
33
|
+
path: string;
|
|
34
|
+
/**
|
|
35
|
+
* The human-readable name for the route.
|
|
36
|
+
* Used to populate navigation links, breadcrumbs, and page titles.
|
|
37
|
+
* e.g., 'Home', 'User Management'
|
|
38
|
+
*/
|
|
39
|
+
title: string;
|
|
40
|
+
/**
|
|
41
|
+
* (Optional) The name of the icon to display in the navigation.
|
|
42
|
+
* This MUST be a valid `IconName` from the `@ramme-io/ui` library.
|
|
43
|
+
* e.g., 'home', 'users', 'settings'
|
|
44
|
+
*/
|
|
45
|
+
icon?: IconName;
|
|
46
|
+
/**
|
|
47
|
+
* The actual React component to render when this route is active.
|
|
48
|
+
* e.g., DashboardPage, SettingsPage
|
|
49
|
+
*/
|
|
50
|
+
component: React.ComponentType;
|
|
51
|
+
/**
|
|
52
|
+
* (Optional) An array of nested `SitemapEntry` objects.
|
|
53
|
+
* This is the property that enables recursive, nested navigation
|
|
54
|
+
* (e.g., /settings/profile, /settings/billing).
|
|
55
|
+
*/
|
|
56
|
+
children?: SitemapEntry[];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=sitemap-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap-entry.d.ts","sourceRoot":"","sources":["../../../src/engine/types/sitemap-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;OAGG;IACH,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC;IAE/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file sitemap-entry.ts
|
|
3
|
+
* @repository ramme-app-starter
|
|
4
|
+
* @description This file defines the canonical TypeScript interface for a single
|
|
5
|
+
* sitemap entry. It is the "schema" or "contract" that governs the entire
|
|
6
|
+
* Sitemap-Driven Architecture.
|
|
7
|
+
*
|
|
8
|
+
* STRATEGIC IMPORTANCE:
|
|
9
|
+
* 1. Designer DX: It provides strict type-safety and autocompletion for any
|
|
10
|
+
* designer editing a `sitemap.ts` file, dramatically lowering the risk of errors.
|
|
11
|
+
* 2. Repo-Linking: It directly imports `IconName` from `@ramme-io/ui`, creating
|
|
12
|
+
* a type-safe link between our starter kit and our component library.
|
|
13
|
+
* 3. AI-Ready: This interface is the precise data structure that the AI Assistant
|
|
14
|
+
* in the (private) `ramme-app-builder` will be trained to generate.
|
|
15
|
+
* The "Architect" phase of the A.D.A.P.T. Framework will result in the
|
|
16
|
+
* AI creating an array of these objects.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=sitemap-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap-entry.js","sourceRoot":"","sources":["../../../src/engine/types/sitemap-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* @file schema.ts
|
|
4
|
+
* @description The "Application Constitution".
|
|
5
|
+
*
|
|
6
|
+
* ARCHITECTURAL ROLE:
|
|
7
|
+
* This file uses Zod to define the strict runtime validation rules for the
|
|
8
|
+
* App Manifest. While `manifest-types.ts` handles compile-time TypeScript checks,
|
|
9
|
+
* this file handles runtime validation, ensuring that any JSON loaded into the
|
|
10
|
+
* engine (whether from a file, API, or user input) is structurally sound.
|
|
11
|
+
*
|
|
12
|
+
* LAYERS DEFINED:
|
|
13
|
+
* 1. **SaaS Layer:** Data resources, fields, and tables.
|
|
14
|
+
* 2. **Physical Layer:** IoT signals, sensors, and entities.
|
|
15
|
+
* 3. **Logic Layer:** Workflows, triggers, and automated actions.
|
|
16
|
+
* 4. **Presentation Layer:** Pages, sections, and UI blocks.
|
|
17
|
+
*/
|
|
18
|
+
export declare const FieldSchema: z.ZodObject<{
|
|
19
|
+
key: z.ZodString;
|
|
20
|
+
label: z.ZodString;
|
|
21
|
+
type: z.ZodEnum<{
|
|
22
|
+
number: "number";
|
|
23
|
+
boolean: "boolean";
|
|
24
|
+
text: "text";
|
|
25
|
+
currency: "currency";
|
|
26
|
+
date: "date";
|
|
27
|
+
status: "status";
|
|
28
|
+
email: "email";
|
|
29
|
+
image: "image";
|
|
30
|
+
textarea: "textarea";
|
|
31
|
+
}>;
|
|
32
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
33
|
+
description: z.ZodOptional<z.ZodString>;
|
|
34
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
export type FieldDefinition = z.infer<typeof FieldSchema>;
|
|
37
|
+
export declare const ResourceSchema: z.ZodObject<{
|
|
38
|
+
id: z.ZodString;
|
|
39
|
+
name: z.ZodString;
|
|
40
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
41
|
+
key: z.ZodString;
|
|
42
|
+
label: z.ZodString;
|
|
43
|
+
type: z.ZodEnum<{
|
|
44
|
+
number: "number";
|
|
45
|
+
boolean: "boolean";
|
|
46
|
+
text: "text";
|
|
47
|
+
currency: "currency";
|
|
48
|
+
date: "date";
|
|
49
|
+
status: "status";
|
|
50
|
+
email: "email";
|
|
51
|
+
image: "image";
|
|
52
|
+
textarea: "textarea";
|
|
53
|
+
}>;
|
|
54
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
description: z.ZodOptional<z.ZodString>;
|
|
56
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
57
|
+
}, z.core.$strip>>;
|
|
58
|
+
defaultView: z.ZodOptional<z.ZodEnum<{
|
|
59
|
+
table: "table";
|
|
60
|
+
grid: "grid";
|
|
61
|
+
list: "list";
|
|
62
|
+
}>>;
|
|
63
|
+
features: z.ZodOptional<z.ZodObject<{
|
|
64
|
+
searchable: z.ZodOptional<z.ZodBoolean>;
|
|
65
|
+
creatable: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
editable: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
deletable: z.ZodOptional<z.ZodBoolean>;
|
|
68
|
+
exportable: z.ZodOptional<z.ZodBoolean>;
|
|
69
|
+
}, z.core.$strip>>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type ResourceDefinition = z.infer<typeof ResourceSchema>;
|
|
72
|
+
export declare const SignalSchema: z.ZodObject<{
|
|
73
|
+
id: z.ZodString;
|
|
74
|
+
label: z.ZodString;
|
|
75
|
+
description: z.ZodOptional<z.ZodString>;
|
|
76
|
+
kind: z.ZodEnum<{
|
|
77
|
+
status: "status";
|
|
78
|
+
sensor: "sensor";
|
|
79
|
+
actuator: "actuator";
|
|
80
|
+
setpoint: "setpoint";
|
|
81
|
+
metric: "metric";
|
|
82
|
+
kpi: "kpi";
|
|
83
|
+
}>;
|
|
84
|
+
source: z.ZodEnum<{
|
|
85
|
+
mock: "mock";
|
|
86
|
+
mqtt: "mqtt";
|
|
87
|
+
http: "http";
|
|
88
|
+
derived: "derived";
|
|
89
|
+
local: "local";
|
|
90
|
+
}>;
|
|
91
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
92
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
93
|
+
jsonPath: z.ZodOptional<z.ZodString>;
|
|
94
|
+
refreshRate: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
95
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
96
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
97
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
98
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type SignalDefinition = z.infer<typeof SignalSchema>;
|
|
101
|
+
export declare const EntitySchema: z.ZodObject<{
|
|
102
|
+
id: z.ZodString;
|
|
103
|
+
name: z.ZodString;
|
|
104
|
+
description: z.ZodOptional<z.ZodString>;
|
|
105
|
+
type: z.ZodString;
|
|
106
|
+
category: z.ZodDefault<z.ZodString>;
|
|
107
|
+
signals: z.ZodArray<z.ZodString>;
|
|
108
|
+
ui: z.ZodOptional<z.ZodObject<{
|
|
109
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
110
|
+
color: z.ZodOptional<z.ZodString>;
|
|
111
|
+
dashboardComponent: z.ZodOptional<z.ZodString>;
|
|
112
|
+
}, z.core.$strip>>;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
export type EntityDefinition = z.infer<typeof EntitySchema>;
|
|
115
|
+
export declare const TriggerSchema: z.ZodObject<{
|
|
116
|
+
id: z.ZodString;
|
|
117
|
+
type: z.ZodEnum<{
|
|
118
|
+
signal_change: "signal_change";
|
|
119
|
+
manual_action: "manual_action";
|
|
120
|
+
schedule: "schedule";
|
|
121
|
+
webhook: "webhook";
|
|
122
|
+
}>;
|
|
123
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
export declare const ActionSchema: z.ZodObject<{
|
|
126
|
+
id: z.ZodString;
|
|
127
|
+
type: z.ZodEnum<{
|
|
128
|
+
update_resource: "update_resource";
|
|
129
|
+
send_notification: "send_notification";
|
|
130
|
+
mqtt_publish: "mqtt_publish";
|
|
131
|
+
api_call: "api_call";
|
|
132
|
+
navigate: "navigate";
|
|
133
|
+
agent_task: "agent_task";
|
|
134
|
+
}>;
|
|
135
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
136
|
+
}, z.core.$strip>;
|
|
137
|
+
export declare const WorkflowSchema: z.ZodObject<{
|
|
138
|
+
id: z.ZodString;
|
|
139
|
+
name: z.ZodString;
|
|
140
|
+
active: z.ZodDefault<z.ZodBoolean>;
|
|
141
|
+
trigger: z.ZodObject<{
|
|
142
|
+
id: z.ZodString;
|
|
143
|
+
type: z.ZodEnum<{
|
|
144
|
+
signal_change: "signal_change";
|
|
145
|
+
manual_action: "manual_action";
|
|
146
|
+
schedule: "schedule";
|
|
147
|
+
webhook: "webhook";
|
|
148
|
+
}>;
|
|
149
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
150
|
+
}, z.core.$strip>;
|
|
151
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
152
|
+
id: z.ZodString;
|
|
153
|
+
type: z.ZodEnum<{
|
|
154
|
+
update_resource: "update_resource";
|
|
155
|
+
send_notification: "send_notification";
|
|
156
|
+
mqtt_publish: "mqtt_publish";
|
|
157
|
+
api_call: "api_call";
|
|
158
|
+
navigate: "navigate";
|
|
159
|
+
agent_task: "agent_task";
|
|
160
|
+
}>;
|
|
161
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
162
|
+
}, z.core.$strip>>;
|
|
163
|
+
}, z.core.$strip>;
|
|
164
|
+
export type WorkflowDefinition = z.infer<typeof WorkflowSchema>;
|
|
165
|
+
export type ActionDefinition = z.infer<typeof ActionSchema>;
|
|
166
|
+
export declare const BlockSchema: z.ZodObject<{
|
|
167
|
+
id: z.ZodString;
|
|
168
|
+
type: z.ZodString;
|
|
169
|
+
props: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
170
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
171
|
+
colSpan: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
rowSpan: z.ZodOptional<z.ZodNumber>;
|
|
173
|
+
}, z.core.$strip>>;
|
|
174
|
+
}, z.core.$strip>;
|
|
175
|
+
export declare const PageSectionSchema: z.ZodObject<{
|
|
176
|
+
id: z.ZodString;
|
|
177
|
+
title: z.ZodOptional<z.ZodString>;
|
|
178
|
+
description: z.ZodOptional<z.ZodString>;
|
|
179
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
180
|
+
columns: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
182
|
+
grid: "grid";
|
|
183
|
+
stack: "stack";
|
|
184
|
+
split: "split";
|
|
185
|
+
}>>;
|
|
186
|
+
}, z.core.$strip>>;
|
|
187
|
+
blocks: z.ZodArray<z.ZodObject<{
|
|
188
|
+
id: z.ZodString;
|
|
189
|
+
type: z.ZodString;
|
|
190
|
+
props: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
191
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
192
|
+
colSpan: z.ZodOptional<z.ZodNumber>;
|
|
193
|
+
rowSpan: z.ZodOptional<z.ZodNumber>;
|
|
194
|
+
}, z.core.$strip>>;
|
|
195
|
+
}, z.core.$strip>>;
|
|
196
|
+
}, z.core.$strip>;
|
|
197
|
+
export declare const PageSchema: z.ZodObject<{
|
|
198
|
+
id: z.ZodString;
|
|
199
|
+
slug: z.ZodString;
|
|
200
|
+
title: z.ZodString;
|
|
201
|
+
description: z.ZodOptional<z.ZodString>;
|
|
202
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
203
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
204
|
+
id: z.ZodString;
|
|
205
|
+
title: z.ZodOptional<z.ZodString>;
|
|
206
|
+
description: z.ZodOptional<z.ZodString>;
|
|
207
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
208
|
+
columns: z.ZodOptional<z.ZodNumber>;
|
|
209
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
210
|
+
grid: "grid";
|
|
211
|
+
stack: "stack";
|
|
212
|
+
split: "split";
|
|
213
|
+
}>>;
|
|
214
|
+
}, z.core.$strip>>;
|
|
215
|
+
blocks: z.ZodArray<z.ZodObject<{
|
|
216
|
+
id: z.ZodString;
|
|
217
|
+
type: z.ZodString;
|
|
218
|
+
props: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
219
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
220
|
+
colSpan: z.ZodOptional<z.ZodNumber>;
|
|
221
|
+
rowSpan: z.ZodOptional<z.ZodNumber>;
|
|
222
|
+
}, z.core.$strip>>;
|
|
223
|
+
}, z.core.$strip>>;
|
|
224
|
+
}, z.core.$strip>>;
|
|
225
|
+
}, z.core.$strip>;
|
|
226
|
+
export type PageDefinition = z.infer<typeof PageSchema>;
|
|
227
|
+
export declare const AppSpecificationSchema: z.ZodObject<{
|
|
228
|
+
meta: z.ZodObject<{
|
|
229
|
+
name: z.ZodString;
|
|
230
|
+
version: z.ZodString;
|
|
231
|
+
description: z.ZodOptional<z.ZodString>;
|
|
232
|
+
author: z.ZodOptional<z.ZodString>;
|
|
233
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
234
|
+
}, z.core.$strip>;
|
|
235
|
+
config: z.ZodObject<{
|
|
236
|
+
theme: z.ZodDefault<z.ZodEnum<{
|
|
237
|
+
light: "light";
|
|
238
|
+
dark: "dark";
|
|
239
|
+
system: "system";
|
|
240
|
+
corporate: "corporate";
|
|
241
|
+
midnight: "midnight";
|
|
242
|
+
blueprint: "blueprint";
|
|
243
|
+
}>>;
|
|
244
|
+
mockMode: z.ZodDefault<z.ZodBoolean>;
|
|
245
|
+
brokerUrl: z.ZodOptional<z.ZodString>;
|
|
246
|
+
}, z.core.$strip>;
|
|
247
|
+
modules: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
248
|
+
resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
249
|
+
id: z.ZodString;
|
|
250
|
+
name: z.ZodString;
|
|
251
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
252
|
+
key: z.ZodString;
|
|
253
|
+
label: z.ZodString;
|
|
254
|
+
type: z.ZodEnum<{
|
|
255
|
+
number: "number";
|
|
256
|
+
boolean: "boolean";
|
|
257
|
+
text: "text";
|
|
258
|
+
currency: "currency";
|
|
259
|
+
date: "date";
|
|
260
|
+
status: "status";
|
|
261
|
+
email: "email";
|
|
262
|
+
image: "image";
|
|
263
|
+
textarea: "textarea";
|
|
264
|
+
}>;
|
|
265
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
266
|
+
description: z.ZodOptional<z.ZodString>;
|
|
267
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
268
|
+
}, z.core.$strip>>;
|
|
269
|
+
defaultView: z.ZodOptional<z.ZodEnum<{
|
|
270
|
+
table: "table";
|
|
271
|
+
grid: "grid";
|
|
272
|
+
list: "list";
|
|
273
|
+
}>>;
|
|
274
|
+
features: z.ZodOptional<z.ZodObject<{
|
|
275
|
+
searchable: z.ZodOptional<z.ZodBoolean>;
|
|
276
|
+
creatable: z.ZodOptional<z.ZodBoolean>;
|
|
277
|
+
editable: z.ZodOptional<z.ZodBoolean>;
|
|
278
|
+
deletable: z.ZodOptional<z.ZodBoolean>;
|
|
279
|
+
exportable: z.ZodOptional<z.ZodBoolean>;
|
|
280
|
+
}, z.core.$strip>>;
|
|
281
|
+
}, z.core.$strip>>>;
|
|
282
|
+
domain: z.ZodObject<{
|
|
283
|
+
signals: z.ZodArray<z.ZodObject<{
|
|
284
|
+
id: z.ZodString;
|
|
285
|
+
label: z.ZodString;
|
|
286
|
+
description: z.ZodOptional<z.ZodString>;
|
|
287
|
+
kind: z.ZodEnum<{
|
|
288
|
+
status: "status";
|
|
289
|
+
sensor: "sensor";
|
|
290
|
+
actuator: "actuator";
|
|
291
|
+
setpoint: "setpoint";
|
|
292
|
+
metric: "metric";
|
|
293
|
+
kpi: "kpi";
|
|
294
|
+
}>;
|
|
295
|
+
source: z.ZodEnum<{
|
|
296
|
+
mock: "mock";
|
|
297
|
+
mqtt: "mqtt";
|
|
298
|
+
http: "http";
|
|
299
|
+
derived: "derived";
|
|
300
|
+
local: "local";
|
|
301
|
+
}>;
|
|
302
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
303
|
+
endpoint: z.ZodOptional<z.ZodString>;
|
|
304
|
+
jsonPath: z.ZodOptional<z.ZodString>;
|
|
305
|
+
refreshRate: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
306
|
+
defaultValue: z.ZodOptional<z.ZodAny>;
|
|
307
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
308
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
309
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
310
|
+
}, z.core.$strip>>;
|
|
311
|
+
entities: z.ZodArray<z.ZodObject<{
|
|
312
|
+
id: z.ZodString;
|
|
313
|
+
name: z.ZodString;
|
|
314
|
+
description: z.ZodOptional<z.ZodString>;
|
|
315
|
+
type: z.ZodString;
|
|
316
|
+
category: z.ZodDefault<z.ZodString>;
|
|
317
|
+
signals: z.ZodArray<z.ZodString>;
|
|
318
|
+
ui: z.ZodOptional<z.ZodObject<{
|
|
319
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
320
|
+
color: z.ZodOptional<z.ZodString>;
|
|
321
|
+
dashboardComponent: z.ZodOptional<z.ZodString>;
|
|
322
|
+
}, z.core.$strip>>;
|
|
323
|
+
}, z.core.$strip>>;
|
|
324
|
+
workflows: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
325
|
+
id: z.ZodString;
|
|
326
|
+
name: z.ZodString;
|
|
327
|
+
active: z.ZodDefault<z.ZodBoolean>;
|
|
328
|
+
trigger: z.ZodObject<{
|
|
329
|
+
id: z.ZodString;
|
|
330
|
+
type: z.ZodEnum<{
|
|
331
|
+
signal_change: "signal_change";
|
|
332
|
+
manual_action: "manual_action";
|
|
333
|
+
schedule: "schedule";
|
|
334
|
+
webhook: "webhook";
|
|
335
|
+
}>;
|
|
336
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
337
|
+
}, z.core.$strip>;
|
|
338
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
339
|
+
id: z.ZodString;
|
|
340
|
+
type: z.ZodEnum<{
|
|
341
|
+
update_resource: "update_resource";
|
|
342
|
+
send_notification: "send_notification";
|
|
343
|
+
mqtt_publish: "mqtt_publish";
|
|
344
|
+
api_call: "api_call";
|
|
345
|
+
navigate: "navigate";
|
|
346
|
+
agent_task: "agent_task";
|
|
347
|
+
}>;
|
|
348
|
+
config: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
349
|
+
}, z.core.$strip>>;
|
|
350
|
+
}, z.core.$strip>>>;
|
|
351
|
+
}, z.core.$strip>;
|
|
352
|
+
pages: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
353
|
+
id: z.ZodString;
|
|
354
|
+
slug: z.ZodString;
|
|
355
|
+
title: z.ZodString;
|
|
356
|
+
description: z.ZodOptional<z.ZodString>;
|
|
357
|
+
icon: z.ZodOptional<z.ZodString>;
|
|
358
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
359
|
+
id: z.ZodString;
|
|
360
|
+
title: z.ZodOptional<z.ZodString>;
|
|
361
|
+
description: z.ZodOptional<z.ZodString>;
|
|
362
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
363
|
+
columns: z.ZodOptional<z.ZodNumber>;
|
|
364
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
365
|
+
grid: "grid";
|
|
366
|
+
stack: "stack";
|
|
367
|
+
split: "split";
|
|
368
|
+
}>>;
|
|
369
|
+
}, z.core.$strip>>;
|
|
370
|
+
blocks: z.ZodArray<z.ZodObject<{
|
|
371
|
+
id: z.ZodString;
|
|
372
|
+
type: z.ZodString;
|
|
373
|
+
props: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
374
|
+
layout: z.ZodOptional<z.ZodObject<{
|
|
375
|
+
colSpan: z.ZodOptional<z.ZodNumber>;
|
|
376
|
+
rowSpan: z.ZodOptional<z.ZodNumber>;
|
|
377
|
+
}, z.core.$strip>>;
|
|
378
|
+
}, z.core.$strip>>;
|
|
379
|
+
}, z.core.$strip>>;
|
|
380
|
+
}, z.core.$strip>>>;
|
|
381
|
+
}, z.core.$strip>;
|
|
382
|
+
export type AppSpecification = z.infer<typeof AppSpecificationSchema>;
|
|
383
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/engine/validation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;GAeG;AAMH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;iBAOtB,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYzB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAOhE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBvB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE5D,eAAO,MAAM,YAAY;;;;;;;;;;;;iBAYvB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAM5D,eAAO,MAAM,aAAa;;;;;;;;;iBAIxB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;iBAWvB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAO5D,eAAO,MAAM,WAAW;;;;;;;;iBAQtB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOrB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAIxD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|