@revealui/mcp 0.0.1-pre.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/.env.example +9 -0
  2. package/MCP_MAINTENANCE.md +265 -0
  3. package/README.md +260 -0
  4. package/__tests__/crdt.integration.test.ts +156 -0
  5. package/configs/README.md +77 -0
  6. package/configs/claude-template.json +54 -0
  7. package/dist/packages/core/src/database/ssl-config.d.ts +9 -0
  8. package/dist/packages/core/src/database/ssl-config.d.ts.map +1 -0
  9. package/dist/packages/core/src/database/ssl-config.js +8 -0
  10. package/dist/packages/core/src/database/ssl-config.js.map +1 -0
  11. package/dist/packages/core/src/features.d.ts +86 -0
  12. package/dist/packages/core/src/features.d.ts.map +1 -0
  13. package/dist/packages/core/src/features.js +93 -0
  14. package/dist/packages/core/src/features.js.map +1 -0
  15. package/dist/packages/core/src/license.d.ts +75 -0
  16. package/dist/packages/core/src/license.d.ts.map +1 -0
  17. package/dist/packages/core/src/license.js +174 -0
  18. package/dist/packages/core/src/license.js.map +1 -0
  19. package/dist/packages/core/src/monitoring/alerts.d.ts +118 -0
  20. package/dist/packages/core/src/monitoring/alerts.d.ts.map +1 -0
  21. package/dist/packages/core/src/monitoring/alerts.js +325 -0
  22. package/dist/packages/core/src/monitoring/alerts.js.map +1 -0
  23. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts +71 -0
  24. package/dist/packages/core/src/monitoring/cleanup-manager.d.ts.map +1 -0
  25. package/dist/packages/core/src/monitoring/cleanup-manager.js +227 -0
  26. package/dist/packages/core/src/monitoring/cleanup-manager.js.map +1 -0
  27. package/dist/packages/core/src/monitoring/health-monitor.d.ts +22 -0
  28. package/dist/packages/core/src/monitoring/health-monitor.d.ts.map +1 -0
  29. package/dist/packages/core/src/monitoring/health-monitor.js +143 -0
  30. package/dist/packages/core/src/monitoring/health-monitor.js.map +1 -0
  31. package/dist/packages/core/src/monitoring/index.d.ts +14 -0
  32. package/dist/packages/core/src/monitoring/index.d.ts.map +1 -0
  33. package/dist/packages/core/src/monitoring/index.js +18 -0
  34. package/dist/packages/core/src/monitoring/index.js.map +1 -0
  35. package/dist/packages/core/src/monitoring/process-registry.d.ts +97 -0
  36. package/dist/packages/core/src/monitoring/process-registry.d.ts.map +1 -0
  37. package/dist/packages/core/src/monitoring/process-registry.js +223 -0
  38. package/dist/packages/core/src/monitoring/process-registry.js.map +1 -0
  39. package/dist/packages/core/src/monitoring/types.d.ts +231 -0
  40. package/dist/packages/core/src/monitoring/types.d.ts.map +1 -0
  41. package/dist/packages/core/src/monitoring/types.js +43 -0
  42. package/dist/packages/core/src/monitoring/types.js.map +1 -0
  43. package/dist/packages/core/src/monitoring/zombie-detector.d.ts +81 -0
  44. package/dist/packages/core/src/monitoring/zombie-detector.d.ts.map +1 -0
  45. package/dist/packages/core/src/monitoring/zombie-detector.js +232 -0
  46. package/dist/packages/core/src/monitoring/zombie-detector.js.map +1 -0
  47. package/dist/packages/core/src/observability/logger.d.ts +47 -0
  48. package/dist/packages/core/src/observability/logger.d.ts.map +1 -0
  49. package/dist/packages/core/src/observability/logger.js +141 -0
  50. package/dist/packages/core/src/observability/logger.js.map +1 -0
  51. package/dist/packages/core/src/utils/logger-server.d.ts +32 -0
  52. package/dist/packages/core/src/utils/logger-server.d.ts.map +1 -0
  53. package/dist/packages/core/src/utils/logger-server.js +69 -0
  54. package/dist/packages/core/src/utils/logger-server.js.map +1 -0
  55. package/dist/packages/core/src/utils/request-context.d.ts +143 -0
  56. package/dist/packages/core/src/utils/request-context.d.ts.map +1 -0
  57. package/dist/packages/core/src/utils/request-context.js +169 -0
  58. package/dist/packages/core/src/utils/request-context.js.map +1 -0
  59. package/dist/packages/dev/src/code-validator/index.d.ts +20 -0
  60. package/dist/packages/dev/src/code-validator/index.d.ts.map +1 -0
  61. package/dist/packages/dev/src/code-validator/index.js +20 -0
  62. package/dist/packages/dev/src/code-validator/index.js.map +1 -0
  63. package/dist/packages/dev/src/code-validator/types.d.ts +67 -0
  64. package/dist/packages/dev/src/code-validator/types.d.ts.map +1 -0
  65. package/dist/packages/dev/src/code-validator/types.js +7 -0
  66. package/dist/packages/dev/src/code-validator/types.js.map +1 -0
  67. package/dist/packages/dev/src/code-validator/validator.d.ts +48 -0
  68. package/dist/packages/dev/src/code-validator/validator.d.ts.map +1 -0
  69. package/dist/packages/dev/src/code-validator/validator.js +176 -0
  70. package/dist/packages/dev/src/code-validator/validator.js.map +1 -0
  71. package/dist/packages/mcp/src/adapters/db.d.ts +46 -0
  72. package/dist/packages/mcp/src/adapters/db.d.ts.map +1 -0
  73. package/dist/packages/mcp/src/adapters/db.js +127 -0
  74. package/dist/packages/mcp/src/adapters/db.js.map +1 -0
  75. package/dist/packages/mcp/src/config/index.d.ts +11 -0
  76. package/dist/packages/mcp/src/config/index.d.ts.map +1 -0
  77. package/dist/packages/mcp/src/config/index.js +18 -0
  78. package/dist/packages/mcp/src/config/index.js.map +1 -0
  79. package/dist/packages/mcp/src/contracts.d.ts +131 -0
  80. package/dist/packages/mcp/src/contracts.d.ts.map +1 -0
  81. package/dist/packages/mcp/src/contracts.js +153 -0
  82. package/dist/packages/mcp/src/contracts.js.map +1 -0
  83. package/dist/packages/mcp/src/hypervisor.d.ts +132 -0
  84. package/dist/packages/mcp/src/hypervisor.d.ts.map +1 -0
  85. package/dist/packages/mcp/src/hypervisor.js +359 -0
  86. package/dist/packages/mcp/src/hypervisor.js.map +1 -0
  87. package/dist/packages/mcp/src/index.d.ts +25 -0
  88. package/dist/packages/mcp/src/index.d.ts.map +1 -0
  89. package/dist/packages/mcp/src/index.js +41 -0
  90. package/dist/packages/mcp/src/index.js.map +1 -0
  91. package/dist/packages/mcp/src/servers/adapter.d.ts +199 -0
  92. package/dist/packages/mcp/src/servers/adapter.d.ts.map +1 -0
  93. package/dist/packages/mcp/src/servers/adapter.js +487 -0
  94. package/dist/packages/mcp/src/servers/adapter.js.map +1 -0
  95. package/dist/packages/mcp/src/servers/code-validator.d.ts +24 -0
  96. package/dist/packages/mcp/src/servers/code-validator.d.ts.map +1 -0
  97. package/dist/packages/mcp/src/servers/code-validator.js +156 -0
  98. package/dist/packages/mcp/src/servers/code-validator.js.map +1 -0
  99. package/dist/packages/mcp/src/servers/neon.d.ts +11 -0
  100. package/dist/packages/mcp/src/servers/neon.d.ts.map +1 -0
  101. package/dist/packages/mcp/src/servers/neon.js +90 -0
  102. package/dist/packages/mcp/src/servers/neon.js.map +1 -0
  103. package/dist/packages/mcp/src/servers/next-devtools.d.ts +11 -0
  104. package/dist/packages/mcp/src/servers/next-devtools.d.ts.map +1 -0
  105. package/dist/packages/mcp/src/servers/next-devtools.js +215 -0
  106. package/dist/packages/mcp/src/servers/next-devtools.js.map +1 -0
  107. package/dist/packages/mcp/src/servers/playwright.d.ts +11 -0
  108. package/dist/packages/mcp/src/servers/playwright.d.ts.map +1 -0
  109. package/dist/packages/mcp/src/servers/playwright.js +68 -0
  110. package/dist/packages/mcp/src/servers/playwright.js.map +1 -0
  111. package/dist/packages/mcp/src/servers/stripe.d.ts +11 -0
  112. package/dist/packages/mcp/src/servers/stripe.d.ts.map +1 -0
  113. package/dist/packages/mcp/src/servers/stripe.js +86 -0
  114. package/dist/packages/mcp/src/servers/stripe.js.map +1 -0
  115. package/dist/packages/mcp/src/servers/supabase.d.ts +11 -0
  116. package/dist/packages/mcp/src/servers/supabase.d.ts.map +1 -0
  117. package/dist/packages/mcp/src/servers/supabase.js +144 -0
  118. package/dist/packages/mcp/src/servers/supabase.js.map +1 -0
  119. package/dist/packages/mcp/src/servers/vercel.d.ts +11 -0
  120. package/dist/packages/mcp/src/servers/vercel.d.ts.map +1 -0
  121. package/dist/packages/mcp/src/servers/vercel.js +87 -0
  122. package/dist/packages/mcp/src/servers/vercel.js.map +1 -0
  123. package/dist/packages/mcp/src/servers/vultr-test.d.ts +3 -0
  124. package/dist/packages/mcp/src/servers/vultr-test.d.ts.map +1 -0
  125. package/dist/packages/mcp/src/servers/vultr-test.js +82 -0
  126. package/dist/packages/mcp/src/servers/vultr-test.js.map +1 -0
  127. package/dist/scripts/lib/analyzers/console-analyzer.d.ts +188 -0
  128. package/dist/scripts/lib/analyzers/console-analyzer.d.ts.map +1 -0
  129. package/dist/scripts/lib/analyzers/console-analyzer.js +432 -0
  130. package/dist/scripts/lib/analyzers/console-analyzer.js.map +1 -0
  131. package/dist/scripts/lib/analyzers/index.d.ts +11 -0
  132. package/dist/scripts/lib/analyzers/index.d.ts.map +1 -0
  133. package/dist/scripts/lib/analyzers/index.js +11 -0
  134. package/dist/scripts/lib/analyzers/index.js.map +1 -0
  135. package/dist/scripts/lib/args.d.ts +104 -0
  136. package/dist/scripts/lib/args.d.ts.map +1 -0
  137. package/dist/scripts/lib/args.js +304 -0
  138. package/dist/scripts/lib/args.js.map +1 -0
  139. package/dist/scripts/lib/cache.d.ts +185 -0
  140. package/dist/scripts/lib/cache.d.ts.map +1 -0
  141. package/dist/scripts/lib/cache.js +390 -0
  142. package/dist/scripts/lib/cache.js.map +1 -0
  143. package/dist/scripts/lib/cli/dispatch.d.ts +116 -0
  144. package/dist/scripts/lib/cli/dispatch.d.ts.map +1 -0
  145. package/dist/scripts/lib/cli/dispatch.js +206 -0
  146. package/dist/scripts/lib/cli/dispatch.js.map +1 -0
  147. package/dist/scripts/lib/cli/index.d.ts +10 -0
  148. package/dist/scripts/lib/cli/index.d.ts.map +1 -0
  149. package/dist/scripts/lib/cli/index.js +10 -0
  150. package/dist/scripts/lib/cli/index.js.map +1 -0
  151. package/dist/scripts/lib/database/ssl-config.d.ts +26 -0
  152. package/dist/scripts/lib/database/ssl-config.d.ts.map +1 -0
  153. package/dist/scripts/lib/database/ssl-config.js +47 -0
  154. package/dist/scripts/lib/database/ssl-config.js.map +1 -0
  155. package/dist/scripts/lib/errors.d.ts +218 -0
  156. package/dist/scripts/lib/errors.d.ts.map +1 -0
  157. package/dist/scripts/lib/errors.js +543 -0
  158. package/dist/scripts/lib/errors.js.map +1 -0
  159. package/dist/scripts/lib/exec.d.ts +107 -0
  160. package/dist/scripts/lib/exec.d.ts.map +1 -0
  161. package/dist/scripts/lib/exec.js +232 -0
  162. package/dist/scripts/lib/exec.js.map +1 -0
  163. package/dist/scripts/lib/index.d.ts +50 -0
  164. package/dist/scripts/lib/index.d.ts.map +1 -0
  165. package/dist/scripts/lib/index.js +65 -0
  166. package/dist/scripts/lib/index.js.map +1 -0
  167. package/dist/scripts/lib/logger.d.ts +50 -0
  168. package/dist/scripts/lib/logger.d.ts.map +1 -0
  169. package/dist/scripts/lib/logger.js +159 -0
  170. package/dist/scripts/lib/logger.js.map +1 -0
  171. package/dist/scripts/lib/output.d.ts +149 -0
  172. package/dist/scripts/lib/output.d.ts.map +1 -0
  173. package/dist/scripts/lib/output.js +263 -0
  174. package/dist/scripts/lib/output.js.map +1 -0
  175. package/dist/scripts/lib/parallel.d.ts +164 -0
  176. package/dist/scripts/lib/parallel.d.ts.map +1 -0
  177. package/dist/scripts/lib/parallel.js +355 -0
  178. package/dist/scripts/lib/parallel.js.map +1 -0
  179. package/dist/scripts/lib/paths.d.ts +92 -0
  180. package/dist/scripts/lib/paths.d.ts.map +1 -0
  181. package/dist/scripts/lib/paths.js +171 -0
  182. package/dist/scripts/lib/paths.js.map +1 -0
  183. package/dist/scripts/lib/state/adapters/memory.d.ts +42 -0
  184. package/dist/scripts/lib/state/adapters/memory.d.ts.map +1 -0
  185. package/dist/scripts/lib/state/adapters/memory.js +110 -0
  186. package/dist/scripts/lib/state/adapters/memory.js.map +1 -0
  187. package/dist/scripts/lib/state/adapters/pglite.d.ts +46 -0
  188. package/dist/scripts/lib/state/adapters/pglite.d.ts.map +1 -0
  189. package/dist/scripts/lib/state/adapters/pglite.js +256 -0
  190. package/dist/scripts/lib/state/adapters/pglite.js.map +1 -0
  191. package/dist/scripts/lib/state/index.d.ts +16 -0
  192. package/dist/scripts/lib/state/index.d.ts.map +1 -0
  193. package/dist/scripts/lib/state/index.js +16 -0
  194. package/dist/scripts/lib/state/index.js.map +1 -0
  195. package/dist/scripts/lib/state/types.d.ts +111 -0
  196. package/dist/scripts/lib/state/types.d.ts.map +1 -0
  197. package/dist/scripts/lib/state/types.js +8 -0
  198. package/dist/scripts/lib/state/types.js.map +1 -0
  199. package/dist/scripts/lib/state/workflow-state.d.ts +110 -0
  200. package/dist/scripts/lib/state/workflow-state.d.ts.map +1 -0
  201. package/dist/scripts/lib/state/workflow-state.js +331 -0
  202. package/dist/scripts/lib/state/workflow-state.js.map +1 -0
  203. package/dist/scripts/lib/telemetry.d.ts +194 -0
  204. package/dist/scripts/lib/telemetry.d.ts.map +1 -0
  205. package/dist/scripts/lib/telemetry.js +394 -0
  206. package/dist/scripts/lib/telemetry.js.map +1 -0
  207. package/dist/scripts/lib/utils.d.ts +270 -0
  208. package/dist/scripts/lib/utils.d.ts.map +1 -0
  209. package/dist/scripts/lib/utils.js +473 -0
  210. package/dist/scripts/lib/utils.js.map +1 -0
  211. package/dist/scripts/lib/validation/database.d.ts +83 -0
  212. package/dist/scripts/lib/validation/database.d.ts.map +1 -0
  213. package/dist/scripts/lib/validation/database.js +199 -0
  214. package/dist/scripts/lib/validation/database.js.map +1 -0
  215. package/dist/scripts/lib/validation/env.d.ts +80 -0
  216. package/dist/scripts/lib/validation/env.d.ts.map +1 -0
  217. package/dist/scripts/lib/validation/env.js +246 -0
  218. package/dist/scripts/lib/validation/env.js.map +1 -0
  219. package/dist/scripts/lib/validation/index.d.ts +16 -0
  220. package/dist/scripts/lib/validation/index.d.ts.map +1 -0
  221. package/dist/scripts/lib/validation/index.js +16 -0
  222. package/dist/scripts/lib/validation/index.js.map +1 -0
  223. package/dist/scripts/lib/validation/post-execution.d.ts +74 -0
  224. package/dist/scripts/lib/validation/post-execution.d.ts.map +1 -0
  225. package/dist/scripts/lib/validation/post-execution.js +110 -0
  226. package/dist/scripts/lib/validation/post-execution.js.map +1 -0
  227. package/dist/scripts/lib/validation/pre-execution.d.ts +165 -0
  228. package/dist/scripts/lib/validation/pre-execution.d.ts.map +1 -0
  229. package/dist/scripts/lib/validation/pre-execution.js +466 -0
  230. package/dist/scripts/lib/validation/pre-execution.js.map +1 -0
  231. package/dist/scripts/lib/validators/documentation-validator.d.ts +242 -0
  232. package/dist/scripts/lib/validators/documentation-validator.d.ts.map +1 -0
  233. package/dist/scripts/lib/validators/documentation-validator.js +584 -0
  234. package/dist/scripts/lib/validators/documentation-validator.js.map +1 -0
  235. package/dist/scripts/lib/validators/index.d.ts +11 -0
  236. package/dist/scripts/lib/validators/index.d.ts.map +1 -0
  237. package/dist/scripts/lib/validators/index.js +11 -0
  238. package/dist/scripts/lib/validators/index.js.map +1 -0
  239. package/docker-compose.yml +46 -0
  240. package/docs/INDEX.md +88 -0
  241. package/docs/README.md +774 -0
  242. package/docs/SETUP.md +264 -0
  243. package/docs/servers/code-validator.md +586 -0
  244. package/eslint.config.js +7 -0
  245. package/migrations/0001_add_crdt_columns.sql +8 -0
  246. package/migrations/0001_rollback.sql +6 -0
  247. package/migrations/005_performance_indexes.sql +190 -0
  248. package/migrations/backfill_crdt_meta.js +45 -0
  249. package/package.json +21 -85
  250. package/src/__tests__/hypervisor.test.ts +212 -0
  251. package/src/adapters/db.ts +180 -0
  252. package/src/config/config.json +49 -0
  253. package/src/config/index.ts +30 -0
  254. package/src/contracts.ts +221 -0
  255. package/src/hypervisor.ts +464 -0
  256. package/src/index.ts +87 -0
  257. package/src/servers/adapter.ts +643 -0
  258. package/src/servers/code-validator.ts +188 -0
  259. package/src/servers/neon.ts +103 -0
  260. package/src/servers/next-devtools.ts +230 -0
  261. package/src/servers/playwright.ts +77 -0
  262. package/src/servers/stripe.ts +99 -0
  263. package/src/servers/supabase.ts +161 -0
  264. package/src/servers/vercel.ts +100 -0
  265. package/src/servers/vultr-test.ts +97 -0
  266. package/tsconfig.json +12 -0
  267. package/vitest.config.ts +22 -0
  268. package/LICENSE +0 -202
  269. package/dist/index.js +0 -10990
  270. package/dist/index.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ /**
2
+ * In-Memory State Adapter
3
+ *
4
+ * Provides a simple in-memory implementation for testing and development.
5
+ * State is lost when the process exits.
6
+ *
7
+ * @dependencies
8
+ * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation
9
+ * - scripts/lib/state/types.ts - State management type definitions
10
+ */
11
+ import type { ApprovalRequest, ApprovalStatus, StateAdapter, WorkflowState, WorkflowStatus } from '../types.js';
12
+ export declare class MemoryStateAdapter implements StateAdapter {
13
+ private workflows;
14
+ private approvals;
15
+ initialize(): Promise<void>;
16
+ close(): Promise<void>;
17
+ saveWorkflow(workflow: WorkflowState): Promise<void>;
18
+ loadWorkflow(id: string): Promise<WorkflowState | null>;
19
+ listWorkflows(options?: {
20
+ status?: WorkflowStatus;
21
+ limit?: number;
22
+ }): Promise<WorkflowState[]>;
23
+ deleteWorkflow(id: string): Promise<boolean>;
24
+ saveApproval(approval: ApprovalRequest): Promise<void>;
25
+ loadApproval(token: string): Promise<ApprovalRequest | null>;
26
+ loadApprovalsByWorkflow(workflowId: string): Promise<ApprovalRequest[]>;
27
+ updateApprovalStatus(token: string, status: ApprovalStatus, respondedBy?: string, comment?: string): Promise<void>;
28
+ private cloneWorkflow;
29
+ /**
30
+ * Utility method to clear all data (useful for testing)
31
+ */
32
+ clear(): void;
33
+ /**
34
+ * Get count of stored workflows (useful for testing)
35
+ */
36
+ getWorkflowCount(): number;
37
+ /**
38
+ * Get count of stored approvals (useful for testing)
39
+ */
40
+ getApprovalCount(): number;
41
+ }
42
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../../../scripts/lib/state/adapters/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,SAAS,CAA0C;IAErD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKvD,aAAa,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,CAAC,EAAE,cAAc,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAiBtB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5C,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAK5D,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMvE,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAYhB,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * In-Memory State Adapter
3
+ *
4
+ * Provides a simple in-memory implementation for testing and development.
5
+ * State is lost when the process exits.
6
+ *
7
+ * @dependencies
8
+ * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation
9
+ * - scripts/lib/state/types.ts - State management type definitions
10
+ */
11
+ import { ErrorCode, ScriptError } from '../../errors.js';
12
+ export class MemoryStateAdapter {
13
+ workflows = new Map();
14
+ approvals = new Map();
15
+ async initialize() {
16
+ // No initialization needed for in-memory storage
17
+ }
18
+ async close() {
19
+ // Clear all data
20
+ this.workflows.clear();
21
+ this.approvals.clear();
22
+ }
23
+ async saveWorkflow(workflow) {
24
+ // Deep clone to avoid mutations
25
+ const cloned = this.cloneWorkflow(workflow);
26
+ this.workflows.set(workflow.id, cloned);
27
+ }
28
+ async loadWorkflow(id) {
29
+ const workflow = this.workflows.get(id);
30
+ return workflow ? this.cloneWorkflow(workflow) : null;
31
+ }
32
+ async listWorkflows(options) {
33
+ let workflows = Array.from(this.workflows.values());
34
+ if (options?.status) {
35
+ workflows = workflows.filter((w) => w.status === options.status);
36
+ }
37
+ // Sort by updatedAt descending (most recent first)
38
+ workflows.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
39
+ if (options?.limit) {
40
+ workflows = workflows.slice(0, options.limit);
41
+ }
42
+ return workflows.map((w) => this.cloneWorkflow(w));
43
+ }
44
+ async deleteWorkflow(id) {
45
+ const existed = this.workflows.has(id);
46
+ this.workflows.delete(id);
47
+ // Also delete related approvals
48
+ for (const [token, approval] of this.approvals) {
49
+ if (approval.workflowId === id) {
50
+ this.approvals.delete(token);
51
+ }
52
+ }
53
+ return existed;
54
+ }
55
+ async saveApproval(approval) {
56
+ this.approvals.set(approval.token, { ...approval });
57
+ }
58
+ async loadApproval(token) {
59
+ const approval = this.approvals.get(token);
60
+ return approval ? { ...approval } : null;
61
+ }
62
+ async loadApprovalsByWorkflow(workflowId) {
63
+ return Array.from(this.approvals.values())
64
+ .filter((a) => a.workflowId === workflowId)
65
+ .map((a) => ({ ...a }));
66
+ }
67
+ async updateApprovalStatus(token, status, respondedBy, comment) {
68
+ const approval = this.approvals.get(token);
69
+ if (!approval) {
70
+ throw new ScriptError(`Approval not found: ${token}`, ErrorCode.NOT_FOUND);
71
+ }
72
+ approval.status = status;
73
+ approval.respondedAt = new Date();
74
+ if (respondedBy)
75
+ approval.respondedBy = respondedBy;
76
+ if (comment)
77
+ approval.comment = comment;
78
+ }
79
+ cloneWorkflow(workflow) {
80
+ return {
81
+ ...workflow,
82
+ steps: [...workflow.steps],
83
+ stepStates: new Map(workflow.stepStates),
84
+ createdAt: new Date(workflow.createdAt),
85
+ updatedAt: new Date(workflow.updatedAt),
86
+ completedAt: workflow.completedAt ? new Date(workflow.completedAt) : undefined,
87
+ metadata: workflow.metadata ? { ...workflow.metadata } : undefined,
88
+ };
89
+ }
90
+ /**
91
+ * Utility method to clear all data (useful for testing)
92
+ */
93
+ clear() {
94
+ this.workflows.clear();
95
+ this.approvals.clear();
96
+ }
97
+ /**
98
+ * Get count of stored workflows (useful for testing)
99
+ */
100
+ getWorkflowCount() {
101
+ return this.workflows.size;
102
+ }
103
+ /**
104
+ * Get count of stored approvals (useful for testing)
105
+ */
106
+ getApprovalCount() {
107
+ return this.approvals.size;
108
+ }
109
+ }
110
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../../../../scripts/lib/state/adapters/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PGlite State Adapter
3
+ *
4
+ * Provides persistent state storage using PGlite (embedded PostgreSQL).
5
+ * State is stored in .revealui/state/workflows
6
+ *
7
+ * Benefits over SQLite:
8
+ * - PostgreSQL-compatible SQL syntax matches production databases (Neon/Supabase)
9
+ * - Same query patterns work in development and production
10
+ * - Supports PostgreSQL-specific features if needed
11
+ *
12
+ * @dependencies
13
+ * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation
14
+ * - scripts/lib/state/types.ts - State management type definitions
15
+ * - @electric-sql/pglite - Embedded PostgreSQL (dynamic import)
16
+ * - node:fs/promises - File system operations (mkdir)
17
+ * - node:path - Path manipulation utilities
18
+ */
19
+ import type { ApprovalRequest, ApprovalStatus, StateAdapter, WorkflowState, WorkflowStatus } from '../types.js';
20
+ export interface PGliteAdapterOptions {
21
+ /** Path to the PGlite data directory */
22
+ dataDir?: string;
23
+ }
24
+ export declare class PGliteStateAdapter implements StateAdapter {
25
+ private db;
26
+ private dataDir;
27
+ constructor(options?: PGliteAdapterOptions);
28
+ initialize(): Promise<void>;
29
+ close(): Promise<void>;
30
+ saveWorkflow(workflow: WorkflowState): Promise<void>;
31
+ loadWorkflow(id: string): Promise<WorkflowState | null>;
32
+ listWorkflows(options?: {
33
+ status?: WorkflowStatus;
34
+ limit?: number;
35
+ }): Promise<WorkflowState[]>;
36
+ deleteWorkflow(id: string): Promise<boolean>;
37
+ saveApproval(approval: ApprovalRequest): Promise<void>;
38
+ loadApproval(token: string): Promise<ApprovalRequest | null>;
39
+ loadApprovalsByWorkflow(workflowId: string): Promise<ApprovalRequest[]>;
40
+ updateApprovalStatus(token: string, status: ApprovalStatus, respondedBy?: string, comment?: string): Promise<void>;
41
+ private serializeStepStates;
42
+ private deserializeStepStates;
43
+ private rowToWorkflow;
44
+ private rowToApproval;
45
+ }
46
+ //# sourceMappingURL=pglite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pglite.d.ts","sourceRoot":"","sources":["../../../../../../../scripts/lib/state/adapters/pglite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EAGf,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,EAAE,CAA8B;IACxC,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,GAAE,oBAAyB;IAIxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCpD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAQvD,aAAa,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,CAAC,EAAE,cAAc,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAwBtB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BtD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAU5D,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvE,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAahB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,aAAa;CActB"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * PGlite State Adapter
3
+ *
4
+ * Provides persistent state storage using PGlite (embedded PostgreSQL).
5
+ * State is stored in .revealui/state/workflows
6
+ *
7
+ * Benefits over SQLite:
8
+ * - PostgreSQL-compatible SQL syntax matches production databases (Neon/Supabase)
9
+ * - Same query patterns work in development and production
10
+ * - Supports PostgreSQL-specific features if needed
11
+ *
12
+ * @dependencies
13
+ * - scripts/lib/errors.ts - ErrorCode and ScriptError for validation
14
+ * - scripts/lib/state/types.ts - State management type definitions
15
+ * - @electric-sql/pglite - Embedded PostgreSQL (dynamic import)
16
+ * - node:fs/promises - File system operations (mkdir)
17
+ * - node:path - Path manipulation utilities
18
+ */
19
+ import { mkdir } from 'node:fs/promises';
20
+ import { dirname, join } from 'node:path';
21
+ import { ErrorCode, ScriptError } from '../../errors.js';
22
+ export class PGliteStateAdapter {
23
+ db = null;
24
+ dataDir;
25
+ constructor(options = {}) {
26
+ this.dataDir = options.dataDir || join(process.cwd(), '.revealui', 'state', 'workflows');
27
+ }
28
+ async initialize() {
29
+ // Ensure directory exists
30
+ await mkdir(dirname(this.dataDir), { recursive: true });
31
+ // Dynamically import @electric-sql/pglite
32
+ try {
33
+ const { PGlite } = await import('@electric-sql/pglite');
34
+ this.db = new PGlite(this.dataDir);
35
+ await this.db.waitReady;
36
+ }
37
+ catch (_error) {
38
+ throw new ScriptError('@electric-sql/pglite is not installed. Run: pnpm add -D @electric-sql/pglite', ErrorCode.DEPENDENCY_ERROR);
39
+ }
40
+ // Create tables using PostgreSQL syntax
41
+ await this.db.exec(`
42
+ CREATE TABLE IF NOT EXISTS workflows (
43
+ id TEXT PRIMARY KEY,
44
+ name TEXT NOT NULL,
45
+ description TEXT,
46
+ status TEXT NOT NULL DEFAULT 'pending',
47
+ steps JSONB NOT NULL,
48
+ step_states JSONB NOT NULL DEFAULT '{}',
49
+ current_step_index INTEGER NOT NULL DEFAULT 0,
50
+ created_at TIMESTAMPTZ NOT NULL,
51
+ updated_at TIMESTAMPTZ NOT NULL,
52
+ completed_at TIMESTAMPTZ,
53
+ error TEXT,
54
+ metadata JSONB
55
+ );
56
+
57
+ CREATE TABLE IF NOT EXISTS approvals (
58
+ id TEXT PRIMARY KEY,
59
+ workflow_id TEXT NOT NULL REFERENCES workflows(id) ON DELETE CASCADE,
60
+ step_id TEXT NOT NULL,
61
+ token TEXT UNIQUE NOT NULL,
62
+ status TEXT NOT NULL DEFAULT 'pending',
63
+ requested_at TIMESTAMPTZ NOT NULL,
64
+ responded_at TIMESTAMPTZ,
65
+ responded_by TEXT,
66
+ expires_at TIMESTAMPTZ NOT NULL,
67
+ comment TEXT
68
+ );
69
+
70
+ CREATE INDEX IF NOT EXISTS idx_workflows_status ON workflows(status);
71
+ CREATE INDEX IF NOT EXISTS idx_workflows_updated ON workflows(updated_at DESC);
72
+ CREATE INDEX IF NOT EXISTS idx_approvals_token ON approvals(token);
73
+ CREATE INDEX IF NOT EXISTS idx_approvals_workflow ON approvals(workflow_id);
74
+ `);
75
+ }
76
+ async close() {
77
+ if (this.db) {
78
+ await this.db.close();
79
+ this.db = null;
80
+ }
81
+ }
82
+ async saveWorkflow(workflow) {
83
+ if (!this.db)
84
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
85
+ await this.db.query(`
86
+ INSERT INTO workflows
87
+ (id, name, description, status, steps, step_states, current_step_index,
88
+ created_at, updated_at, completed_at, error, metadata)
89
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
90
+ ON CONFLICT (id) DO UPDATE SET
91
+ name = EXCLUDED.name,
92
+ description = EXCLUDED.description,
93
+ status = EXCLUDED.status,
94
+ steps = EXCLUDED.steps,
95
+ step_states = EXCLUDED.step_states,
96
+ current_step_index = EXCLUDED.current_step_index,
97
+ updated_at = EXCLUDED.updated_at,
98
+ completed_at = EXCLUDED.completed_at,
99
+ error = EXCLUDED.error,
100
+ metadata = EXCLUDED.metadata
101
+ `, [
102
+ workflow.id,
103
+ workflow.name,
104
+ workflow.description || null,
105
+ workflow.status,
106
+ JSON.stringify(workflow.steps),
107
+ JSON.stringify(this.serializeStepStates(workflow.stepStates)),
108
+ workflow.currentStepIndex,
109
+ workflow.createdAt.toISOString(),
110
+ workflow.updatedAt.toISOString(),
111
+ workflow.completedAt?.toISOString() || null,
112
+ workflow.error || null,
113
+ workflow.metadata ? JSON.stringify(workflow.metadata) : null,
114
+ ]);
115
+ }
116
+ async loadWorkflow(id) {
117
+ if (!this.db)
118
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
119
+ const result = await this.db.query('SELECT * FROM workflows WHERE id = $1', [id]);
120
+ return result.rows.length > 0 ? this.rowToWorkflow(result.rows[0]) : null;
121
+ }
122
+ async listWorkflows(options) {
123
+ if (!this.db)
124
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
125
+ let sql = 'SELECT * FROM workflows';
126
+ const params = [];
127
+ let paramIndex = 1;
128
+ if (options?.status) {
129
+ sql += ` WHERE status = $${paramIndex++}`;
130
+ params.push(options.status);
131
+ }
132
+ sql += ' ORDER BY updated_at DESC';
133
+ if (options?.limit) {
134
+ sql += ` LIMIT $${paramIndex++}`;
135
+ params.push(options.limit);
136
+ }
137
+ const result = await this.db.query(sql, params);
138
+ return result.rows.map((row) => this.rowToWorkflow(row));
139
+ }
140
+ async deleteWorkflow(id) {
141
+ if (!this.db)
142
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
143
+ const result = await this.db.query('DELETE FROM workflows WHERE id = $1', [id]);
144
+ return (result.affectedRows ?? 0) > 0;
145
+ }
146
+ async saveApproval(approval) {
147
+ if (!this.db)
148
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
149
+ await this.db.query(`
150
+ INSERT INTO approvals
151
+ (id, workflow_id, step_id, token, status, requested_at, responded_at,
152
+ responded_by, expires_at, comment)
153
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
154
+ ON CONFLICT (id) DO UPDATE SET
155
+ status = EXCLUDED.status,
156
+ responded_at = EXCLUDED.responded_at,
157
+ responded_by = EXCLUDED.responded_by,
158
+ comment = EXCLUDED.comment
159
+ `, [
160
+ approval.id,
161
+ approval.workflowId,
162
+ approval.stepId,
163
+ approval.token,
164
+ approval.status,
165
+ approval.requestedAt.toISOString(),
166
+ approval.respondedAt?.toISOString() || null,
167
+ approval.respondedBy || null,
168
+ approval.expiresAt.toISOString(),
169
+ approval.comment || null,
170
+ ]);
171
+ }
172
+ async loadApproval(token) {
173
+ if (!this.db)
174
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
175
+ const result = await this.db.query('SELECT * FROM approvals WHERE token = $1', [
176
+ token,
177
+ ]);
178
+ return result.rows.length > 0 ? this.rowToApproval(result.rows[0]) : null;
179
+ }
180
+ async loadApprovalsByWorkflow(workflowId) {
181
+ if (!this.db)
182
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
183
+ const result = await this.db.query('SELECT * FROM approvals WHERE workflow_id = $1 ORDER BY requested_at DESC', [workflowId]);
184
+ return result.rows.map((row) => this.rowToApproval(row));
185
+ }
186
+ async updateApprovalStatus(token, status, respondedBy, comment) {
187
+ if (!this.db)
188
+ throw new ScriptError('Database not initialized', ErrorCode.INVALID_STATE);
189
+ await this.db.query(`
190
+ UPDATE approvals
191
+ SET status = $1, responded_at = $2, responded_by = $3, comment = $4
192
+ WHERE token = $5
193
+ `, [status, new Date().toISOString(), respondedBy || null, comment || null, token]);
194
+ }
195
+ serializeStepStates(stepStates) {
196
+ const result = {};
197
+ for (const [key, value] of stepStates.entries()) {
198
+ result[key] = {
199
+ ...value,
200
+ startedAt: value.startedAt ? value.startedAt : undefined,
201
+ completedAt: value.completedAt ? value.completedAt : undefined,
202
+ };
203
+ }
204
+ return result;
205
+ }
206
+ deserializeStepStates(data) {
207
+ const map = new Map();
208
+ for (const [key, value] of Object.entries(data)) {
209
+ map.set(key, {
210
+ ...value,
211
+ startedAt: value.startedAt ? new Date(value.startedAt) : undefined,
212
+ completedAt: value.completedAt ? new Date(value.completedAt) : undefined,
213
+ });
214
+ }
215
+ return map;
216
+ }
217
+ rowToWorkflow(row) {
218
+ // Handle JSONB columns - they may already be parsed objects
219
+ const steps = typeof row.steps === 'string' ? JSON.parse(row.steps) : row.steps;
220
+ const stepStates = typeof row.step_states === 'string' ? JSON.parse(row.step_states) : row.step_states;
221
+ const metadata = row.metadata
222
+ ? typeof row.metadata === 'string'
223
+ ? JSON.parse(row.metadata)
224
+ : row.metadata
225
+ : undefined;
226
+ return {
227
+ id: row.id,
228
+ name: row.name,
229
+ description: row.description || undefined,
230
+ status: row.status,
231
+ steps: steps,
232
+ stepStates: this.deserializeStepStates(stepStates),
233
+ currentStepIndex: row.current_step_index,
234
+ createdAt: new Date(row.created_at),
235
+ updatedAt: new Date(row.updated_at),
236
+ completedAt: row.completed_at ? new Date(row.completed_at) : undefined,
237
+ error: row.error || undefined,
238
+ metadata,
239
+ };
240
+ }
241
+ rowToApproval(row) {
242
+ return {
243
+ id: row.id,
244
+ workflowId: row.workflow_id,
245
+ stepId: row.step_id,
246
+ token: row.token,
247
+ status: row.status,
248
+ requestedAt: new Date(row.requested_at),
249
+ respondedAt: row.responded_at ? new Date(row.responded_at) : undefined,
250
+ respondedBy: row.responded_by || undefined,
251
+ expiresAt: new Date(row.expires_at),
252
+ comment: row.comment || undefined,
253
+ };
254
+ }
255
+ }
256
+ //# sourceMappingURL=pglite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pglite.js","sourceRoot":"","sources":["../../../../../../../scripts/lib/state/adapters/pglite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * State Management Module
3
+ *
4
+ * Provides workflow state management with persistent storage.
5
+ *
6
+ * @dependencies
7
+ * - scripts/lib/state/adapters/memory.ts - In-memory state adapter
8
+ * - scripts/lib/state/adapters/pglite.ts - PGlite state adapter
9
+ * - scripts/lib/state/types.ts - State management type definitions
10
+ * - scripts/lib/state/workflow-state.ts - Workflow state implementation
11
+ */
12
+ export { MemoryStateAdapter } from './adapters/memory.js';
13
+ export { type PGliteAdapterOptions, PGliteStateAdapter } from './adapters/pglite.js';
14
+ export * from './types.js';
15
+ export * from './workflow-state.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACpF,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * State Management Module
3
+ *
4
+ * Provides workflow state management with persistent storage.
5
+ *
6
+ * @dependencies
7
+ * - scripts/lib/state/adapters/memory.ts - In-memory state adapter
8
+ * - scripts/lib/state/adapters/pglite.ts - PGlite state adapter
9
+ * - scripts/lib/state/types.ts - State management type definitions
10
+ * - scripts/lib/state/workflow-state.ts - Workflow state implementation
11
+ */
12
+ export { MemoryStateAdapter } from './adapters/memory.js';
13
+ export { PGliteStateAdapter } from './adapters/pglite.js';
14
+ export * from './types.js';
15
+ export * from './workflow-state.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../scripts/lib/state/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA6B,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACpF,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * State Management Types for RevealUI Scripts
3
+ *
4
+ * @dependencies
5
+ * - None (standalone type definitions)
6
+ */
7
+ export type WorkflowStatus = 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
8
+ export type StepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
9
+ export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired';
10
+ export interface WorkflowStep {
11
+ id: string;
12
+ name: string;
13
+ description: string;
14
+ command?: string;
15
+ script?: string;
16
+ requiresApproval: boolean;
17
+ validation?: string[];
18
+ rollback?: string;
19
+ timeout?: number;
20
+ dependsOn?: string[];
21
+ }
22
+ export interface WorkflowStepState {
23
+ stepId: string;
24
+ status: StepStatus;
25
+ startedAt?: Date;
26
+ completedAt?: Date;
27
+ error?: string;
28
+ output?: string;
29
+ retryCount: number;
30
+ }
31
+ export interface ApprovalRequest {
32
+ id: string;
33
+ workflowId: string;
34
+ stepId: string;
35
+ token: string;
36
+ status: ApprovalStatus;
37
+ requestedAt: Date;
38
+ respondedAt?: Date;
39
+ respondedBy?: string;
40
+ expiresAt: Date;
41
+ comment?: string;
42
+ }
43
+ export interface WorkflowState {
44
+ id: string;
45
+ name: string;
46
+ description?: string;
47
+ status: WorkflowStatus;
48
+ steps: WorkflowStep[];
49
+ stepStates: Map<string, WorkflowStepState>;
50
+ currentStepIndex: number;
51
+ createdAt: Date;
52
+ updatedAt: Date;
53
+ completedAt?: Date;
54
+ error?: string;
55
+ metadata?: Record<string, unknown>;
56
+ }
57
+ export type WorkflowEvent = {
58
+ type: 'START';
59
+ } | {
60
+ type: 'PAUSE';
61
+ } | {
62
+ type: 'RESUME';
63
+ } | {
64
+ type: 'CANCEL';
65
+ } | {
66
+ type: 'STEP_START';
67
+ stepId: string;
68
+ } | {
69
+ type: 'STEP_COMPLETE';
70
+ stepId: string;
71
+ output?: string;
72
+ } | {
73
+ type: 'STEP_FAIL';
74
+ stepId: string;
75
+ error: string;
76
+ } | {
77
+ type: 'STEP_SKIP';
78
+ stepId: string;
79
+ } | {
80
+ type: 'APPROVAL_REQUEST';
81
+ stepId: string;
82
+ } | {
83
+ type: 'APPROVAL_GRANTED';
84
+ stepId: string;
85
+ by?: string;
86
+ } | {
87
+ type: 'APPROVAL_DENIED';
88
+ stepId: string;
89
+ reason?: string;
90
+ } | {
91
+ type: 'COMPLETE';
92
+ } | {
93
+ type: 'FAIL';
94
+ error: string;
95
+ };
96
+ export interface StateAdapter {
97
+ initialize(): Promise<void>;
98
+ close(): Promise<void>;
99
+ saveWorkflow(workflow: WorkflowState): Promise<void>;
100
+ loadWorkflow(id: string): Promise<WorkflowState | null>;
101
+ listWorkflows(options?: {
102
+ status?: WorkflowStatus;
103
+ limit?: number;
104
+ }): Promise<WorkflowState[]>;
105
+ deleteWorkflow(id: string): Promise<boolean>;
106
+ saveApproval(approval: ApprovalRequest): Promise<void>;
107
+ loadApproval(token: string): Promise<ApprovalRequest | null>;
108
+ loadApprovalsByWorkflow(workflowId: string): Promise<ApprovalRequest[]>;
109
+ updateApprovalStatus(token: string, status: ApprovalStatus, respondedBy?: string, comment?: string): Promise<void>;
110
+ }
111
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../scripts/lib/state/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * State Management Types for RevealUI Scripts
3
+ *
4
+ * @dependencies
5
+ * - None (standalone type definitions)
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../scripts/lib/state/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}