@revealui/mcp 0.1.0 → 0.1.3

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.
Files changed (293) hide show
  1. package/LICENSE +22 -0
  2. package/LICENSE.commercial +111 -0
  3. package/README.md +3 -0
  4. package/dist/{packages/mcp/src/adapters → adapters}/db.d.ts +1 -1
  5. package/dist/adapters/db.d.ts.map +1 -0
  6. package/dist/adapters/db.js.map +1 -0
  7. package/dist/config/index.d.ts.map +1 -0
  8. package/dist/config/index.js.map +1 -0
  9. package/dist/contracts.d.ts.map +1 -0
  10. package/dist/contracts.js.map +1 -0
  11. package/dist/{packages/mcp/src/hypervisor.d.ts → hypervisor.d.ts} +56 -0
  12. package/dist/hypervisor.d.ts.map +1 -0
  13. package/dist/{packages/mcp/src/hypervisor.js → hypervisor.js} +209 -1
  14. package/dist/hypervisor.js.map +1 -0
  15. package/dist/{packages/mcp/src/index.d.ts → index.d.ts} +9 -5
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/{packages/mcp/src/index.js → index.js} +8 -4
  18. package/dist/index.js.map +1 -0
  19. package/dist/{packages/mcp/src/servers → servers}/adapter.d.ts +11 -1
  20. package/dist/servers/adapter.d.ts.map +1 -0
  21. package/dist/{packages/mcp/src/servers → servers}/adapter.js +20 -4
  22. package/dist/servers/adapter.js.map +1 -0
  23. package/dist/servers/revealui-content.d.ts +21 -0
  24. package/dist/servers/revealui-content.d.ts.map +1 -0
  25. package/dist/servers/revealui-content.js +211 -0
  26. package/dist/servers/revealui-content.js.map +1 -0
  27. package/dist/servers/revealui-email.d.ts +18 -0
  28. package/dist/servers/revealui-email.d.ts.map +1 -0
  29. package/dist/servers/revealui-email.js +190 -0
  30. package/dist/servers/revealui-email.js.map +1 -0
  31. package/dist/servers/revealui-stripe.d.ts +19 -0
  32. package/dist/servers/revealui-stripe.d.ts.map +1 -0
  33. package/dist/servers/revealui-stripe.js +228 -0
  34. package/dist/servers/revealui-stripe.js.map +1 -0
  35. package/package.json +50 -11
  36. package/.env.example +0 -9
  37. package/MCP_MAINTENANCE.md +0 -265
  38. package/__tests__/crdt.integration.test.ts +0 -156
  39. package/configs/README.md +0 -77
  40. package/configs/claude-template.json +0 -54
  41. package/dist/packages/core/src/database/ssl-config.d.ts +0 -9
  42. package/dist/packages/core/src/database/ssl-config.d.ts.map +0 -1
  43. package/dist/packages/core/src/database/ssl-config.js +0 -8
  44. package/dist/packages/core/src/database/ssl-config.js.map +0 -1
  45. package/dist/packages/core/src/features.d.ts +0 -86
  46. package/dist/packages/core/src/features.d.ts.map +0 -1
  47. package/dist/packages/core/src/features.js +0 -93
  48. package/dist/packages/core/src/features.js.map +0 -1
  49. package/dist/packages/core/src/license.d.ts +0 -75
  50. package/dist/packages/core/src/license.d.ts.map +0 -1
  51. package/dist/packages/core/src/license.js +0 -174
  52. package/dist/packages/core/src/license.js.map +0 -1
  53. package/dist/packages/core/src/monitoring/alerts.d.ts +0 -118
  54. package/dist/packages/core/src/monitoring/alerts.d.ts.map +0 -1
  55. package/dist/packages/core/src/monitoring/alerts.js +0 -325
  56. package/dist/packages/core/src/monitoring/alerts.js.map +0 -1
  57. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +0 -71
  58. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +0 -1
  59. package/dist/packages/core/src/monitoring/cleanup-manager.js +0 -227
  60. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +0 -1
  61. package/dist/packages/core/src/monitoring/health-monitor.d.ts +0 -22
  62. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +0 -1
  63. package/dist/packages/core/src/monitoring/health-monitor.js +0 -143
  64. package/dist/packages/core/src/monitoring/health-monitor.js.map +0 -1
  65. package/dist/packages/core/src/monitoring/index.d.ts +0 -14
  66. package/dist/packages/core/src/monitoring/index.d.ts.map +0 -1
  67. package/dist/packages/core/src/monitoring/index.js +0 -18
  68. package/dist/packages/core/src/monitoring/index.js.map +0 -1
  69. package/dist/packages/core/src/monitoring/process-registry.d.ts +0 -97
  70. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +0 -1
  71. package/dist/packages/core/src/monitoring/process-registry.js +0 -223
  72. package/dist/packages/core/src/monitoring/process-registry.js.map +0 -1
  73. package/dist/packages/core/src/monitoring/types.d.ts +0 -231
  74. package/dist/packages/core/src/monitoring/types.d.ts.map +0 -1
  75. package/dist/packages/core/src/monitoring/types.js +0 -43
  76. package/dist/packages/core/src/monitoring/types.js.map +0 -1
  77. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +0 -81
  78. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +0 -1
  79. package/dist/packages/core/src/monitoring/zombie-detector.js +0 -232
  80. package/dist/packages/core/src/monitoring/zombie-detector.js.map +0 -1
  81. package/dist/packages/core/src/observability/logger.d.ts +0 -47
  82. package/dist/packages/core/src/observability/logger.d.ts.map +0 -1
  83. package/dist/packages/core/src/observability/logger.js +0 -141
  84. package/dist/packages/core/src/observability/logger.js.map +0 -1
  85. package/dist/packages/core/src/utils/logger-server.d.ts +0 -32
  86. package/dist/packages/core/src/utils/logger-server.d.ts.map +0 -1
  87. package/dist/packages/core/src/utils/logger-server.js +0 -69
  88. package/dist/packages/core/src/utils/logger-server.js.map +0 -1
  89. package/dist/packages/core/src/utils/request-context.d.ts +0 -143
  90. package/dist/packages/core/src/utils/request-context.d.ts.map +0 -1
  91. package/dist/packages/core/src/utils/request-context.js +0 -169
  92. package/dist/packages/core/src/utils/request-context.js.map +0 -1
  93. package/dist/packages/dev/src/code-validator/index.d.ts +0 -20
  94. package/dist/packages/dev/src/code-validator/index.d.ts.map +0 -1
  95. package/dist/packages/dev/src/code-validator/index.js +0 -20
  96. package/dist/packages/dev/src/code-validator/index.js.map +0 -1
  97. package/dist/packages/dev/src/code-validator/types.d.ts +0 -67
  98. package/dist/packages/dev/src/code-validator/types.d.ts.map +0 -1
  99. package/dist/packages/dev/src/code-validator/types.js +0 -7
  100. package/dist/packages/dev/src/code-validator/types.js.map +0 -1
  101. package/dist/packages/dev/src/code-validator/validator.d.ts +0 -48
  102. package/dist/packages/dev/src/code-validator/validator.d.ts.map +0 -1
  103. package/dist/packages/dev/src/code-validator/validator.js +0 -176
  104. package/dist/packages/dev/src/code-validator/validator.js.map +0 -1
  105. package/dist/packages/mcp/src/adapters/db.d.ts.map +0 -1
  106. package/dist/packages/mcp/src/adapters/db.js.map +0 -1
  107. package/dist/packages/mcp/src/config/index.d.ts.map +0 -1
  108. package/dist/packages/mcp/src/config/index.js.map +0 -1
  109. package/dist/packages/mcp/src/contracts.d.ts.map +0 -1
  110. package/dist/packages/mcp/src/contracts.js.map +0 -1
  111. package/dist/packages/mcp/src/hypervisor.d.ts.map +0 -1
  112. package/dist/packages/mcp/src/hypervisor.js.map +0 -1
  113. package/dist/packages/mcp/src/index.d.ts.map +0 -1
  114. package/dist/packages/mcp/src/index.js.map +0 -1
  115. package/dist/packages/mcp/src/servers/adapter.d.ts.map +0 -1
  116. package/dist/packages/mcp/src/servers/adapter.js.map +0 -1
  117. package/dist/packages/mcp/src/servers/code-validator.d.ts +0 -24
  118. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +0 -1
  119. package/dist/packages/mcp/src/servers/code-validator.js +0 -156
  120. package/dist/packages/mcp/src/servers/code-validator.js.map +0 -1
  121. package/dist/packages/mcp/src/servers/neon.d.ts +0 -11
  122. package/dist/packages/mcp/src/servers/neon.d.ts.map +0 -1
  123. package/dist/packages/mcp/src/servers/neon.js +0 -90
  124. package/dist/packages/mcp/src/servers/neon.js.map +0 -1
  125. package/dist/packages/mcp/src/servers/next-devtools.d.ts +0 -11
  126. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +0 -1
  127. package/dist/packages/mcp/src/servers/next-devtools.js +0 -215
  128. package/dist/packages/mcp/src/servers/next-devtools.js.map +0 -1
  129. package/dist/packages/mcp/src/servers/playwright.d.ts +0 -11
  130. package/dist/packages/mcp/src/servers/playwright.d.ts.map +0 -1
  131. package/dist/packages/mcp/src/servers/playwright.js +0 -68
  132. package/dist/packages/mcp/src/servers/playwright.js.map +0 -1
  133. package/dist/packages/mcp/src/servers/stripe.d.ts +0 -11
  134. package/dist/packages/mcp/src/servers/stripe.d.ts.map +0 -1
  135. package/dist/packages/mcp/src/servers/stripe.js +0 -86
  136. package/dist/packages/mcp/src/servers/stripe.js.map +0 -1
  137. package/dist/packages/mcp/src/servers/supabase.d.ts +0 -11
  138. package/dist/packages/mcp/src/servers/supabase.d.ts.map +0 -1
  139. package/dist/packages/mcp/src/servers/supabase.js +0 -144
  140. package/dist/packages/mcp/src/servers/supabase.js.map +0 -1
  141. package/dist/packages/mcp/src/servers/vercel.d.ts +0 -11
  142. package/dist/packages/mcp/src/servers/vercel.d.ts.map +0 -1
  143. package/dist/packages/mcp/src/servers/vercel.js +0 -87
  144. package/dist/packages/mcp/src/servers/vercel.js.map +0 -1
  145. package/dist/packages/mcp/src/servers/vultr-test.d.ts +0 -3
  146. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +0 -1
  147. package/dist/packages/mcp/src/servers/vultr-test.js +0 -82
  148. package/dist/packages/mcp/src/servers/vultr-test.js.map +0 -1
  149. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +0 -188
  150. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +0 -1
  151. package/dist/scripts/lib/analyzers/console-analyzer.js +0 -432
  152. package/dist/scripts/lib/analyzers/console-analyzer.js.map +0 -1
  153. package/dist/scripts/lib/analyzers/index.d.ts +0 -11
  154. package/dist/scripts/lib/analyzers/index.d.ts.map +0 -1
  155. package/dist/scripts/lib/analyzers/index.js +0 -11
  156. package/dist/scripts/lib/analyzers/index.js.map +0 -1
  157. package/dist/scripts/lib/args.d.ts +0 -104
  158. package/dist/scripts/lib/args.d.ts.map +0 -1
  159. package/dist/scripts/lib/args.js +0 -304
  160. package/dist/scripts/lib/args.js.map +0 -1
  161. package/dist/scripts/lib/cache.d.ts +0 -185
  162. package/dist/scripts/lib/cache.d.ts.map +0 -1
  163. package/dist/scripts/lib/cache.js +0 -390
  164. package/dist/scripts/lib/cache.js.map +0 -1
  165. package/dist/scripts/lib/cli/dispatch.d.ts +0 -116
  166. package/dist/scripts/lib/cli/dispatch.d.ts.map +0 -1
  167. package/dist/scripts/lib/cli/dispatch.js +0 -206
  168. package/dist/scripts/lib/cli/dispatch.js.map +0 -1
  169. package/dist/scripts/lib/cli/index.d.ts +0 -10
  170. package/dist/scripts/lib/cli/index.d.ts.map +0 -1
  171. package/dist/scripts/lib/cli/index.js +0 -10
  172. package/dist/scripts/lib/cli/index.js.map +0 -1
  173. package/dist/scripts/lib/database/ssl-config.d.ts +0 -26
  174. package/dist/scripts/lib/database/ssl-config.d.ts.map +0 -1
  175. package/dist/scripts/lib/database/ssl-config.js +0 -47
  176. package/dist/scripts/lib/database/ssl-config.js.map +0 -1
  177. package/dist/scripts/lib/errors.d.ts +0 -218
  178. package/dist/scripts/lib/errors.d.ts.map +0 -1
  179. package/dist/scripts/lib/errors.js +0 -543
  180. package/dist/scripts/lib/errors.js.map +0 -1
  181. package/dist/scripts/lib/exec.d.ts +0 -107
  182. package/dist/scripts/lib/exec.d.ts.map +0 -1
  183. package/dist/scripts/lib/exec.js +0 -232
  184. package/dist/scripts/lib/exec.js.map +0 -1
  185. package/dist/scripts/lib/index.d.ts +0 -50
  186. package/dist/scripts/lib/index.d.ts.map +0 -1
  187. package/dist/scripts/lib/index.js +0 -65
  188. package/dist/scripts/lib/index.js.map +0 -1
  189. package/dist/scripts/lib/logger.d.ts +0 -50
  190. package/dist/scripts/lib/logger.d.ts.map +0 -1
  191. package/dist/scripts/lib/logger.js +0 -159
  192. package/dist/scripts/lib/logger.js.map +0 -1
  193. package/dist/scripts/lib/output.d.ts +0 -149
  194. package/dist/scripts/lib/output.d.ts.map +0 -1
  195. package/dist/scripts/lib/output.js +0 -263
  196. package/dist/scripts/lib/output.js.map +0 -1
  197. package/dist/scripts/lib/parallel.d.ts +0 -164
  198. package/dist/scripts/lib/parallel.d.ts.map +0 -1
  199. package/dist/scripts/lib/parallel.js +0 -355
  200. package/dist/scripts/lib/parallel.js.map +0 -1
  201. package/dist/scripts/lib/paths.d.ts +0 -92
  202. package/dist/scripts/lib/paths.d.ts.map +0 -1
  203. package/dist/scripts/lib/paths.js +0 -171
  204. package/dist/scripts/lib/paths.js.map +0 -1
  205. package/dist/scripts/lib/state/adapters/memory.d.ts +0 -42
  206. package/dist/scripts/lib/state/adapters/memory.d.ts.map +0 -1
  207. package/dist/scripts/lib/state/adapters/memory.js +0 -110
  208. package/dist/scripts/lib/state/adapters/memory.js.map +0 -1
  209. package/dist/scripts/lib/state/adapters/pglite.d.ts +0 -46
  210. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +0 -1
  211. package/dist/scripts/lib/state/adapters/pglite.js +0 -256
  212. package/dist/scripts/lib/state/adapters/pglite.js.map +0 -1
  213. package/dist/scripts/lib/state/index.d.ts +0 -16
  214. package/dist/scripts/lib/state/index.d.ts.map +0 -1
  215. package/dist/scripts/lib/state/index.js +0 -16
  216. package/dist/scripts/lib/state/index.js.map +0 -1
  217. package/dist/scripts/lib/state/types.d.ts +0 -111
  218. package/dist/scripts/lib/state/types.d.ts.map +0 -1
  219. package/dist/scripts/lib/state/types.js +0 -8
  220. package/dist/scripts/lib/state/types.js.map +0 -1
  221. package/dist/scripts/lib/state/workflow-state.d.ts +0 -110
  222. package/dist/scripts/lib/state/workflow-state.d.ts.map +0 -1
  223. package/dist/scripts/lib/state/workflow-state.js +0 -331
  224. package/dist/scripts/lib/state/workflow-state.js.map +0 -1
  225. package/dist/scripts/lib/telemetry.d.ts +0 -194
  226. package/dist/scripts/lib/telemetry.d.ts.map +0 -1
  227. package/dist/scripts/lib/telemetry.js +0 -394
  228. package/dist/scripts/lib/telemetry.js.map +0 -1
  229. package/dist/scripts/lib/utils.d.ts +0 -270
  230. package/dist/scripts/lib/utils.d.ts.map +0 -1
  231. package/dist/scripts/lib/utils.js +0 -473
  232. package/dist/scripts/lib/utils.js.map +0 -1
  233. package/dist/scripts/lib/validation/database.d.ts +0 -83
  234. package/dist/scripts/lib/validation/database.d.ts.map +0 -1
  235. package/dist/scripts/lib/validation/database.js +0 -199
  236. package/dist/scripts/lib/validation/database.js.map +0 -1
  237. package/dist/scripts/lib/validation/env.d.ts +0 -80
  238. package/dist/scripts/lib/validation/env.d.ts.map +0 -1
  239. package/dist/scripts/lib/validation/env.js +0 -246
  240. package/dist/scripts/lib/validation/env.js.map +0 -1
  241. package/dist/scripts/lib/validation/index.d.ts +0 -16
  242. package/dist/scripts/lib/validation/index.d.ts.map +0 -1
  243. package/dist/scripts/lib/validation/index.js +0 -16
  244. package/dist/scripts/lib/validation/index.js.map +0 -1
  245. package/dist/scripts/lib/validation/post-execution.d.ts +0 -74
  246. package/dist/scripts/lib/validation/post-execution.d.ts.map +0 -1
  247. package/dist/scripts/lib/validation/post-execution.js +0 -110
  248. package/dist/scripts/lib/validation/post-execution.js.map +0 -1
  249. package/dist/scripts/lib/validation/pre-execution.d.ts +0 -165
  250. package/dist/scripts/lib/validation/pre-execution.d.ts.map +0 -1
  251. package/dist/scripts/lib/validation/pre-execution.js +0 -466
  252. package/dist/scripts/lib/validation/pre-execution.js.map +0 -1
  253. package/dist/scripts/lib/validators/documentation-validator.d.ts +0 -242
  254. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +0 -1
  255. package/dist/scripts/lib/validators/documentation-validator.js +0 -584
  256. package/dist/scripts/lib/validators/documentation-validator.js.map +0 -1
  257. package/dist/scripts/lib/validators/index.d.ts +0 -11
  258. package/dist/scripts/lib/validators/index.d.ts.map +0 -1
  259. package/dist/scripts/lib/validators/index.js +0 -11
  260. package/dist/scripts/lib/validators/index.js.map +0 -1
  261. package/docker-compose.yml +0 -46
  262. package/docs/INDEX.md +0 -88
  263. package/docs/README.md +0 -774
  264. package/docs/SETUP.md +0 -264
  265. package/docs/servers/code-validator.md +0 -586
  266. package/eslint.config.js +0 -7
  267. package/migrations/0001_add_crdt_columns.sql +0 -8
  268. package/migrations/0001_rollback.sql +0 -6
  269. package/migrations/005_performance_indexes.sql +0 -190
  270. package/migrations/backfill_crdt_meta.js +0 -45
  271. package/src/__tests__/hypervisor.test.ts +0 -212
  272. package/src/adapters/db.ts +0 -180
  273. package/src/config/config.json +0 -49
  274. package/src/config/index.ts +0 -30
  275. package/src/contracts.ts +0 -221
  276. package/src/hypervisor.ts +0 -464
  277. package/src/index.ts +0 -87
  278. package/src/servers/adapter.ts +0 -643
  279. package/src/servers/code-validator.ts +0 -188
  280. package/src/servers/neon.ts +0 -103
  281. package/src/servers/next-devtools.ts +0 -230
  282. package/src/servers/playwright.ts +0 -77
  283. package/src/servers/stripe.ts +0 -99
  284. package/src/servers/supabase.ts +0 -161
  285. package/src/servers/vercel.ts +0 -100
  286. package/src/servers/vultr-test.ts +0 -97
  287. package/tsconfig.json +0 -12
  288. package/vitest.config.ts +0 -22
  289. /package/dist/{packages/mcp/src/adapters → adapters}/db.js +0 -0
  290. /package/dist/{packages/mcp/src/config → config}/index.d.ts +0 -0
  291. /package/dist/{packages/mcp/src/config → config}/index.js +0 -0
  292. /package/dist/{packages/mcp/src/contracts.d.ts → contracts.d.ts} +0 -0
  293. /package/dist/{packages/mcp/src/contracts.js → contracts.js} +0 -0
@@ -1,110 +0,0 @@
1
- /**
2
- * Workflow State Machine
3
- *
4
- * Manages workflow state transitions with proper validation and persistence.
5
- * Replaces the file-based approval system with a proper state machine.
6
- *
7
- * @dependencies
8
- * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation errors
9
- * - scripts/lib/state/adapters/memory.ts - Default in-memory state adapter
10
- * - scripts/lib/state/types.ts - State management type definitions
11
- * - node:crypto - Random token generation for approvals
12
- */
13
- import type { ApprovalRequest, StateAdapter, WorkflowEvent, WorkflowState, WorkflowStatus, WorkflowStep, WorkflowStepState } from './types.js';
14
- export interface WorkflowStateMachineOptions {
15
- /** State adapter to use (defaults to in-memory) */
16
- adapter?: StateAdapter;
17
- /** Approval expiration time in milliseconds (default: 24 hours) */
18
- approvalExpirationMs?: number;
19
- }
20
- /**
21
- * WorkflowStateMachine manages the lifecycle of automation workflows.
22
- *
23
- * @example
24
- * ```typescript
25
- * import { WorkflowStateMachine } from '@revealui/scripts/state/workflow'
26
- * import { PGliteStateAdapter } from '@revealui/scripts/state/adapters/pglite'
27
- *
28
- * const machine = new WorkflowStateMachine({
29
- * adapter: new PGliteStateAdapter(),
30
- * })
31
- *
32
- * await machine.initialize()
33
- *
34
- * // Create a workflow
35
- * const workflow = await machine.create('db-migration', [
36
- * { id: 'backup', name: 'Backup', description: 'Create backup', requiresApproval: false },
37
- * { id: 'migrate', name: 'Migrate', description: 'Run migration', requiresApproval: true },
38
- * ])
39
- *
40
- * // Start the workflow
41
- * await machine.transition(workflow.id, { type: 'START' })
42
- * ```
43
- */
44
- export declare class WorkflowStateMachine {
45
- private adapter;
46
- private approvalExpirationMs;
47
- private initialized;
48
- constructor(options?: WorkflowStateMachineOptions);
49
- /**
50
- * Initialize the state machine and its adapter.
51
- */
52
- initialize(): Promise<void>;
53
- /**
54
- * Close the state machine and clean up resources.
55
- */
56
- close(): Promise<void>;
57
- /**
58
- * Create a new workflow.
59
- */
60
- create(name: string, steps: WorkflowStep[], description?: string): Promise<WorkflowState>;
61
- /**
62
- * Load an existing workflow.
63
- */
64
- load(id: string): Promise<WorkflowState | null>;
65
- /**
66
- * List workflows with optional filtering.
67
- */
68
- list(options?: {
69
- status?: WorkflowStatus;
70
- limit?: number;
71
- }): Promise<WorkflowState[]>;
72
- /**
73
- * Delete a workflow.
74
- */
75
- delete(id: string): Promise<boolean>;
76
- /**
77
- * Transition a workflow to a new state based on an event.
78
- */
79
- transition(id: string, event: WorkflowEvent): Promise<WorkflowState>;
80
- /**
81
- * Request approval for a workflow step.
82
- * Returns a unique token that can be used to submit the approval.
83
- */
84
- requestApproval(workflowId: string, stepId: string): Promise<string>;
85
- /**
86
- * Submit an approval decision.
87
- */
88
- submitApproval(token: string, approved: boolean, respondedBy?: string, comment?: string): Promise<void>;
89
- /**
90
- * Get pending approvals for a workflow.
91
- */
92
- getPendingApprovals(workflowId: string): Promise<ApprovalRequest[]>;
93
- /**
94
- * Get the current step for a workflow.
95
- */
96
- getCurrentStep(workflow: WorkflowState): WorkflowStep | null;
97
- /**
98
- * Get the state of a specific step.
99
- */
100
- getStepState(workflow: WorkflowState, stepId: string): WorkflowStepState | null;
101
- /**
102
- * Check if a workflow can proceed to the next step.
103
- */
104
- canProceed(workflow: WorkflowState): boolean;
105
- private applyEvent;
106
- private ensureInitialized;
107
- private generateId;
108
- private generateToken;
109
- }
110
- //# sourceMappingURL=workflow-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/state/workflow-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,WAAW,CAAQ;gBAEf,OAAO,GAAE,2BAAgC;IAKrD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4B/F;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKrD;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,cAAc,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3F;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1C;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAe1E;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgC1E;;OAEG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA4BhB;;OAEG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMzE;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI;IAO5D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAI/E;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO;IAuB5C,OAAO,CAAC,UAAU;IA2HlB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;CAGtB"}
@@ -1,331 +0,0 @@
1
- /**
2
- * Workflow State Machine
3
- *
4
- * Manages workflow state transitions with proper validation and persistence.
5
- * Replaces the file-based approval system with a proper state machine.
6
- *
7
- * @dependencies
8
- * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation errors
9
- * - scripts/lib/state/adapters/memory.ts - Default in-memory state adapter
10
- * - scripts/lib/state/types.ts - State management type definitions
11
- * - node:crypto - Random token generation for approvals
12
- */
13
- import { randomBytes } from 'node:crypto';
14
- import { ErrorCode, ScriptError } from '../errors.js';
15
- import { MemoryStateAdapter } from './adapters/memory.js';
16
- /**
17
- * WorkflowStateMachine manages the lifecycle of automation workflows.
18
- *
19
- * @example
20
- * ```typescript
21
- * import { WorkflowStateMachine } from '@revealui/scripts/state/workflow'
22
- * import { PGliteStateAdapter } from '@revealui/scripts/state/adapters/pglite'
23
- *
24
- * const machine = new WorkflowStateMachine({
25
- * adapter: new PGliteStateAdapter(),
26
- * })
27
- *
28
- * await machine.initialize()
29
- *
30
- * // Create a workflow
31
- * const workflow = await machine.create('db-migration', [
32
- * { id: 'backup', name: 'Backup', description: 'Create backup', requiresApproval: false },
33
- * { id: 'migrate', name: 'Migrate', description: 'Run migration', requiresApproval: true },
34
- * ])
35
- *
36
- * // Start the workflow
37
- * await machine.transition(workflow.id, { type: 'START' })
38
- * ```
39
- */
40
- export class WorkflowStateMachine {
41
- adapter;
42
- approvalExpirationMs;
43
- initialized = false;
44
- constructor(options = {}) {
45
- this.adapter = options.adapter || new MemoryStateAdapter();
46
- this.approvalExpirationMs = options.approvalExpirationMs || 24 * 60 * 60 * 1000; // 24 hours
47
- }
48
- /**
49
- * Initialize the state machine and its adapter.
50
- */
51
- async initialize() {
52
- if (this.initialized)
53
- return;
54
- await this.adapter.initialize();
55
- this.initialized = true;
56
- }
57
- /**
58
- * Close the state machine and clean up resources.
59
- */
60
- async close() {
61
- await this.adapter.close();
62
- this.initialized = false;
63
- }
64
- /**
65
- * Create a new workflow.
66
- */
67
- async create(name, steps, description) {
68
- this.ensureInitialized();
69
- const workflow = {
70
- id: this.generateId(),
71
- name,
72
- description,
73
- status: 'pending',
74
- steps,
75
- stepStates: new Map(),
76
- currentStepIndex: 0,
77
- createdAt: new Date(),
78
- updatedAt: new Date(),
79
- };
80
- // Initialize step states
81
- for (const step of steps) {
82
- workflow.stepStates.set(step.id, {
83
- stepId: step.id,
84
- status: 'pending',
85
- retryCount: 0,
86
- });
87
- }
88
- await this.adapter.saveWorkflow(workflow);
89
- return workflow;
90
- }
91
- /**
92
- * Load an existing workflow.
93
- */
94
- async load(id) {
95
- this.ensureInitialized();
96
- return this.adapter.loadWorkflow(id);
97
- }
98
- /**
99
- * List workflows with optional filtering.
100
- */
101
- async list(options) {
102
- this.ensureInitialized();
103
- return this.adapter.listWorkflows(options);
104
- }
105
- /**
106
- * Delete a workflow.
107
- */
108
- async delete(id) {
109
- this.ensureInitialized();
110
- return this.adapter.deleteWorkflow(id);
111
- }
112
- /**
113
- * Transition a workflow to a new state based on an event.
114
- */
115
- async transition(id, event) {
116
- this.ensureInitialized();
117
- const workflow = await this.adapter.loadWorkflow(id);
118
- if (!workflow) {
119
- throw new ScriptError(`Workflow not found: ${id}`, ErrorCode.NOT_FOUND);
120
- }
121
- const newState = this.applyEvent(workflow, event);
122
- newState.updatedAt = new Date();
123
- await this.adapter.saveWorkflow(newState);
124
- return newState;
125
- }
126
- /**
127
- * Request approval for a workflow step.
128
- * Returns a unique token that can be used to submit the approval.
129
- */
130
- async requestApproval(workflowId, stepId) {
131
- this.ensureInitialized();
132
- const workflow = await this.adapter.loadWorkflow(workflowId);
133
- if (!workflow) {
134
- throw new ScriptError(`Workflow not found: ${workflowId}`, ErrorCode.NOT_FOUND);
135
- }
136
- const step = workflow.steps.find((s) => s.id === stepId);
137
- if (!step) {
138
- throw new ScriptError(`Step not found: ${stepId}`, ErrorCode.NOT_FOUND);
139
- }
140
- const token = this.generateToken();
141
- const approval = {
142
- id: this.generateId(),
143
- workflowId,
144
- stepId,
145
- token,
146
- status: 'pending',
147
- requestedAt: new Date(),
148
- expiresAt: new Date(Date.now() + this.approvalExpirationMs),
149
- };
150
- await this.adapter.saveApproval(approval);
151
- // Update workflow status
152
- await this.transition(workflowId, { type: 'APPROVAL_REQUEST', stepId });
153
- return token;
154
- }
155
- /**
156
- * Submit an approval decision.
157
- */
158
- async submitApproval(token, approved, respondedBy, comment) {
159
- this.ensureInitialized();
160
- const approval = await this.adapter.loadApproval(token);
161
- if (!approval) {
162
- throw new ScriptError(`Approval not found: ${token}`, ErrorCode.NOT_FOUND);
163
- }
164
- if (approval.status !== 'pending') {
165
- throw new ScriptError(`Approval already processed: ${approval.status}`, ErrorCode.CONFLICT);
166
- }
167
- if (new Date() > approval.expiresAt) {
168
- await this.adapter.updateApprovalStatus(token, 'expired');
169
- throw new ScriptError('Approval has expired', ErrorCode.INVALID_STATE);
170
- }
171
- const newStatus = approved ? 'approved' : 'rejected';
172
- await this.adapter.updateApprovalStatus(token, newStatus, respondedBy, comment);
173
- // Update workflow
174
- const event = approved
175
- ? { type: 'APPROVAL_GRANTED', stepId: approval.stepId, by: respondedBy }
176
- : { type: 'APPROVAL_DENIED', stepId: approval.stepId, reason: comment };
177
- await this.transition(approval.workflowId, event);
178
- }
179
- /**
180
- * Get pending approvals for a workflow.
181
- */
182
- async getPendingApprovals(workflowId) {
183
- this.ensureInitialized();
184
- const approvals = await this.adapter.loadApprovalsByWorkflow(workflowId);
185
- return approvals.filter((a) => a.status === 'pending');
186
- }
187
- /**
188
- * Get the current step for a workflow.
189
- */
190
- getCurrentStep(workflow) {
191
- if (workflow.currentStepIndex >= workflow.steps.length) {
192
- return null;
193
- }
194
- return workflow.steps[workflow.currentStepIndex];
195
- }
196
- /**
197
- * Get the state of a specific step.
198
- */
199
- getStepState(workflow, stepId) {
200
- return workflow.stepStates.get(stepId) || null;
201
- }
202
- /**
203
- * Check if a workflow can proceed to the next step.
204
- */
205
- canProceed(workflow) {
206
- if (workflow.status !== 'running')
207
- return false;
208
- if (workflow.currentStepIndex >= workflow.steps.length)
209
- return false;
210
- const currentStep = workflow.steps[workflow.currentStepIndex];
211
- const stepState = workflow.stepStates.get(currentStep.id);
212
- if (!stepState)
213
- return false;
214
- if (stepState.status !== 'pending' && stepState.status !== 'completed')
215
- return false;
216
- // Check dependencies
217
- if (currentStep.dependsOn) {
218
- for (const depId of currentStep.dependsOn) {
219
- const depState = workflow.stepStates.get(depId);
220
- if (!depState || depState.status !== 'completed') {
221
- return false;
222
- }
223
- }
224
- }
225
- return true;
226
- }
227
- applyEvent(workflow, event) {
228
- const newState = { ...workflow, stepStates: new Map(workflow.stepStates) };
229
- switch (event.type) {
230
- case 'START':
231
- if (workflow.status !== 'pending') {
232
- throw new ScriptError(`Cannot start workflow in status: ${workflow.status}`, ErrorCode.INVALID_STATE);
233
- }
234
- newState.status = 'running';
235
- break;
236
- case 'PAUSE':
237
- if (workflow.status !== 'running') {
238
- throw new ScriptError(`Cannot pause workflow in status: ${workflow.status}`, ErrorCode.INVALID_STATE);
239
- }
240
- newState.status = 'paused';
241
- break;
242
- case 'RESUME':
243
- if (workflow.status !== 'paused') {
244
- throw new ScriptError(`Cannot resume workflow in status: ${workflow.status}`, ErrorCode.INVALID_STATE);
245
- }
246
- newState.status = 'running';
247
- break;
248
- case 'CANCEL':
249
- if (workflow.status === 'completed' || workflow.status === 'cancelled') {
250
- throw new ScriptError(`Cannot cancel workflow in status: ${workflow.status}`, ErrorCode.INVALID_STATE);
251
- }
252
- newState.status = 'cancelled';
253
- newState.completedAt = new Date();
254
- break;
255
- case 'STEP_START': {
256
- const stepState = newState.stepStates.get(event.stepId);
257
- if (stepState) {
258
- stepState.status = 'running';
259
- stepState.startedAt = new Date();
260
- }
261
- break;
262
- }
263
- case 'STEP_COMPLETE': {
264
- const stepState = newState.stepStates.get(event.stepId);
265
- if (stepState) {
266
- stepState.status = 'completed';
267
- stepState.completedAt = new Date();
268
- stepState.output = event.output;
269
- }
270
- // Move to next step
271
- newState.currentStepIndex++;
272
- break;
273
- }
274
- case 'STEP_FAIL': {
275
- const stepState = newState.stepStates.get(event.stepId);
276
- if (stepState) {
277
- stepState.status = 'failed';
278
- stepState.completedAt = new Date();
279
- stepState.error = event.error;
280
- }
281
- newState.status = 'failed';
282
- newState.error = event.error;
283
- newState.completedAt = new Date();
284
- break;
285
- }
286
- case 'STEP_SKIP': {
287
- const stepState = newState.stepStates.get(event.stepId);
288
- if (stepState) {
289
- stepState.status = 'skipped';
290
- }
291
- newState.currentStepIndex++;
292
- break;
293
- }
294
- case 'APPROVAL_REQUEST':
295
- newState.status = 'paused';
296
- break;
297
- case 'APPROVAL_GRANTED':
298
- newState.status = 'running';
299
- break;
300
- case 'APPROVAL_DENIED':
301
- newState.status = 'cancelled';
302
- newState.error = event.reason || 'Approval denied';
303
- newState.completedAt = new Date();
304
- break;
305
- case 'COMPLETE':
306
- newState.status = 'completed';
307
- newState.completedAt = new Date();
308
- break;
309
- case 'FAIL':
310
- newState.status = 'failed';
311
- newState.error = event.error;
312
- newState.completedAt = new Date();
313
- break;
314
- default:
315
- throw new ScriptError(`Unknown event type: ${event.type}`, ErrorCode.VALIDATION_ERROR);
316
- }
317
- return newState;
318
- }
319
- ensureInitialized() {
320
- if (!this.initialized) {
321
- throw new ScriptError('WorkflowStateMachine not initialized. Call initialize() first.', ErrorCode.INVALID_STATE);
322
- }
323
- }
324
- generateId() {
325
- return `wf-${Date.now()}-${randomBytes(4).toString('hex')}`;
326
- }
327
- generateToken() {
328
- return randomBytes(32).toString('hex');
329
- }
330
- }
331
- //# sourceMappingURL=workflow-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../../../../../scripts/lib/state/workflow-state.ts"],"names":[],"mappings":"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"}
@@ -1,194 +0,0 @@
1
- /**
2
- * Telemetry and monitoring utilities.
3
- *
4
- * Provides comprehensive metrics collection and performance monitoring:
5
- * - Script execution tracking
6
- * - Error tracking and analytics
7
- * - Cache performance metrics
8
- * - Script usage statistics
9
- * - Performance measurement
10
- * - Persistent metric storage
11
- *
12
- * @example
13
- * ```typescript
14
- * import { telemetry } from './telemetry.js'
15
- *
16
- * // Track script execution
17
- * const timer = telemetry.startTimer('build')
18
- * // ... build process ...
19
- * timer.stop()
20
- *
21
- * // Track errors
22
- * telemetry.trackError('build-failed', error)
23
- *
24
- * // Get metrics
25
- * const metrics = await telemetry.getMetrics()
26
- * console.log(`Cache hit rate: ${metrics.cacheHitRate}%`)
27
- * ```
28
- *
29
- * @dependencies
30
- * - node:fs/promises - File operations for metric persistence
31
- * - node:path - Path resolution for .revealui directory
32
- * - node:perf_hooks - Performance measurement
33
- */
34
- export interface MetricEvent {
35
- /** Event name */
36
- name: string;
37
- /** Event type */
38
- type: 'counter' | 'timer' | 'gauge' | 'error';
39
- /** Event value */
40
- value: number;
41
- /** Timestamp */
42
- timestamp: number;
43
- /** Additional metadata */
44
- metadata?: Record<string, unknown>;
45
- }
46
- export interface TimerHandle {
47
- /** Stop the timer and record duration */
48
- stop: (metadata?: Record<string, unknown>) => number;
49
- /** Get elapsed time without stopping */
50
- elapsed: () => number;
51
- }
52
- export interface AggregatedMetrics {
53
- /** Total events */
54
- totalEvents: number;
55
- /** Events by type */
56
- eventsByType: Record<string, number>;
57
- /** Script execution stats */
58
- scripts: {
59
- totalExecutions: number;
60
- averageDuration: number;
61
- slowest: Array<{
62
- name: string;
63
- duration: number;
64
- }>;
65
- fastest: Array<{
66
- name: string;
67
- duration: number;
68
- }>;
69
- failures: number;
70
- };
71
- /** Cache performance */
72
- cache: {
73
- hits: number;
74
- misses: number;
75
- hitRate: number;
76
- totalSize: number;
77
- formattedSize: string;
78
- };
79
- /** Error tracking */
80
- errors: {
81
- total: number;
82
- byType: Record<string, number>;
83
- recent: Array<{
84
- name: string;
85
- timestamp: number;
86
- message?: string;
87
- }>;
88
- };
89
- /** Performance metrics */
90
- performance: {
91
- averageScriptDuration: number;
92
- totalDuration: number;
93
- formattedTotalDuration: string;
94
- };
95
- /** Time period */
96
- period: {
97
- start: number;
98
- end: number;
99
- duration: number;
100
- };
101
- }
102
- export interface TelemetryOptions {
103
- /** Storage directory for metrics */
104
- storageDir?: string;
105
- /** Enable persistent storage */
106
- persistent?: boolean;
107
- /** Auto-flush interval in ms (0 = disabled) */
108
- autoFlushInterval?: number;
109
- /** Maximum events in memory before flush */
110
- maxEventsInMemory?: number;
111
- /** Enable verbose logging */
112
- verbose?: boolean;
113
- }
114
- export declare class Telemetry {
115
- private events;
116
- private storageDir;
117
- private persistent;
118
- private autoFlushInterval;
119
- private maxEventsInMemory;
120
- private verbose;
121
- private timers;
122
- private flushTimer;
123
- private projectRoot;
124
- constructor(options?: TelemetryOptions);
125
- /**
126
- * Get project root directory.
127
- */
128
- private getRoot;
129
- /**
130
- * Get storage directory path.
131
- */
132
- private getStorageDir;
133
- /**
134
- * Get metrics file path for a given date.
135
- */
136
- private getMetricsFilePath;
137
- /**
138
- * Start auto-flush timer.
139
- */
140
- private startAutoFlush;
141
- /**
142
- * Record a metric event.
143
- */
144
- private record;
145
- /**
146
- * Increment a counter.
147
- */
148
- counter(name: string, value?: number, metadata?: Record<string, unknown>): void;
149
- /**
150
- * Start a timer.
151
- */
152
- startTimer(name: string, metadata?: Record<string, unknown>): TimerHandle;
153
- /**
154
- * Record a gauge value.
155
- */
156
- gauge(name: string, value: number, metadata?: Record<string, unknown>): void;
157
- /**
158
- * Track an error.
159
- */
160
- trackError(name: string, error: Error | string, metadata?: Record<string, unknown>): void;
161
- /**
162
- * Flush events to persistent storage.
163
- */
164
- flush(): Promise<void>;
165
- /**
166
- * Load events from storage.
167
- */
168
- loadEvents(startDate?: Date, endDate?: Date): Promise<MetricEvent[]>;
169
- /**
170
- * Get aggregated metrics.
171
- */
172
- getMetrics(startDate?: Date, endDate?: Date): Promise<AggregatedMetrics>;
173
- /**
174
- * Clear all metrics.
175
- */
176
- clear(): void;
177
- /**
178
- * Stop telemetry and cleanup.
179
- */
180
- stop(): Promise<void>;
181
- }
182
- /**
183
- * Get the global telemetry instance.
184
- */
185
- export declare function getTelemetry(): Telemetry;
186
- /**
187
- * Global telemetry instance.
188
- */
189
- export declare const telemetry: Telemetry;
190
- /**
191
- * Create a new telemetry instance.
192
- */
193
- export declare function createTelemetry(options?: TelemetryOptions): Telemetry;
194
- //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../../../scripts/lib/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAcH,MAAM,WAAW,WAAW;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB;IACjB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;IAC7C,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA;IACpD,wCAAwC;IACxC,OAAO,EAAE,MAAM,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,6BAA6B;IAC7B,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAA;QACvB,eAAe,EAAE,MAAM,CAAA;QACvB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAClD,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAClD,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,wBAAwB;IACxB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,qBAAqB;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACrE,CAAA;IACD,0BAA0B;IAC1B,WAAW,EAAE;QACX,qBAAqB,EAAE,MAAM,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;QACrB,sBAAsB,EAAE,MAAM,CAAA;KAC/B,CAAA;IACD,kBAAkB;IAClB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,WAAW,CAAsB;gBAE7B,OAAO,GAAE,gBAAqB;IAa1C;;OAEG;YACW,OAAO;IAOrB;;OAEG;YACW,aAAa;IAK3B;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,MAAM;IAed;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUlF;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW;IA2BzE;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU5E;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgBzF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC5B;;OAEG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,GAAE,IAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA+BtF;;OAEG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,GAAE,IAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoG1F;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAU5B;AAQD;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CASxC;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,WAAiB,CAAA;AAEvC;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAErE"}