@plures/praxis 1.0.3 → 1.1.1

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 (530) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/README.md +162 -375
  3. package/core/codegen/docs-generator.ts +5 -2
  4. package/core/codegen/index.ts +1 -1
  5. package/core/db-adapter/index.ts +2 -2
  6. package/core/db-adapter/sync-engine.ts +17 -6
  7. package/core/logic-engine/engine.ts +1 -1
  8. package/core/logic-engine/index.ts +2 -2
  9. package/core/logic-engine/protocol.ts +1 -1
  10. package/core/logic-engine/psf-adapter.ts +8 -4
  11. package/core/logic-engine/rules.ts +1 -1
  12. package/core/schema-engine/compiler.ts +53 -11
  13. package/core/schema-engine/generator.ts +17 -7
  14. package/core/schema-engine/index.ts +2 -2
  15. package/core/schema-engine/psf.ts +12 -3
  16. package/core/schema-engine/types.ts +3 -11
  17. package/core/schema-engine/validator.ts +112 -22
  18. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  19. package/dist/browser/index.d.ts +3004 -0
  20. package/dist/browser/index.js +2892 -0
  21. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  22. package/dist/browser/integrations/svelte.js +298 -0
  23. package/dist/node/auth-STARLY7I.js +207 -0
  24. package/dist/node/build-Y7OT5VBF.js +144 -0
  25. package/dist/node/canvas-UERZHJYW.js +362 -0
  26. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  27. package/dist/node/chunk-FXQZXAWF.js +175 -0
  28. package/dist/node/chunk-N5Y37EUV.js +202 -0
  29. package/dist/node/chunk-QGM4M3NI.js +37 -0
  30. package/dist/node/chunk-RJMWCNHR.js +175 -0
  31. package/dist/node/chunk-SRM3OPPM.js +404 -0
  32. package/dist/node/chunk-UATVJBNV.js +175 -0
  33. package/dist/node/chunk-UY7YEBE2.js +159 -0
  34. package/dist/node/chunk-XCY2VIFX.js +143 -0
  35. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  36. package/dist/node/cli/index.cjs +215139 -0
  37. package/dist/node/cli/index.d.cts +1 -0
  38. package/dist/node/cli/index.d.ts +1 -0
  39. package/dist/node/cli/index.js +690 -0
  40. package/dist/node/cloud/index.cjs +1043 -0
  41. package/dist/node/cloud/index.d.cts +864 -0
  42. package/dist/node/cloud/index.d.ts +864 -0
  43. package/dist/node/cloud/index.js +456 -0
  44. package/dist/node/cloud-AXOK4PSN.js +212 -0
  45. package/dist/node/component.cjs +374 -0
  46. package/dist/node/component.d.cts +125 -0
  47. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  48. package/dist/node/component.js +9 -0
  49. package/dist/node/components/index.cjs +216 -0
  50. package/dist/node/components/index.d.cts +43 -0
  51. package/dist/{src → node}/components/index.d.ts +8 -8
  52. package/dist/node/components/index.js +7 -0
  53. package/dist/node/create-TRLSVCNQ.js +584 -0
  54. package/dist/node/dev-PMJZUYGE.js +65 -0
  55. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  56. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  57. package/dist/node/index.cjs +3247 -0
  58. package/dist/node/index.d.cts +2579 -0
  59. package/dist/node/index.d.ts +2579 -0
  60. package/dist/node/index.js +2098 -0
  61. package/dist/node/integrations/svelte.cjs +330 -0
  62. package/dist/node/integrations/svelte.d.cts +309 -0
  63. package/dist/node/integrations/svelte.d.ts +309 -0
  64. package/dist/node/integrations/svelte.js +300 -0
  65. package/dist/node/orchestrate-737TCL5H.js +127 -0
  66. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  67. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  68. package/dist/node/schema.cjs +200 -0
  69. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  70. package/dist/node/schema.d.ts +371 -0
  71. package/dist/node/schema.js +9 -0
  72. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  73. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  74. package/dist/node/verify-QRYKRIDU.js +210960 -0
  75. package/docs/MONETIZATION.md +21 -16
  76. package/docs/REACTIVE_REDESIGN.md +132 -0
  77. package/docs/README.md +47 -36
  78. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  79. package/docs/TERMINAL_NODE.md +27 -24
  80. package/docs/core/building-extensions.md +58 -61
  81. package/docs/core/cli-usage.md +59 -59
  82. package/docs/core/code-canvas-sync.md +28 -16
  83. package/docs/core/logic-engine.md +77 -82
  84. package/docs/core/pluresdb-integration.md +29 -39
  85. package/docs/core/schema-model.md +66 -52
  86. package/docs/core/ui-generation.md +57 -49
  87. package/docs/core/what-is-praxis.md +32 -15
  88. package/docs/guides/canvas.md +21 -5
  89. package/docs/guides/getting-started.md +13 -7
  90. package/docs/guides/history-state-pattern.md +65 -51
  91. package/docs/guides/orchestration.md +46 -32
  92. package/docs/guides/parallel-state-pattern.md +56 -72
  93. package/docs/guides/svelte-integration.md +45 -53
  94. package/docs/tutorials/README.md +16 -0
  95. package/docs/tutorials/ecommerce-cart.md +177 -95
  96. package/docs/tutorials/first-app.md +26 -41
  97. package/docs/tutorials/form-builder.md +191 -138
  98. package/docs/tutorials/todo-pluresdb.md +71 -69
  99. package/package.json +58 -23
  100. package/src/__tests__/actors.test.ts +68 -68
  101. package/src/__tests__/billing.test.ts +32 -32
  102. package/src/__tests__/canvas-components.test.ts +94 -73
  103. package/src/__tests__/cli-create.test.ts +28 -28
  104. package/src/__tests__/cloud.test.ts +36 -36
  105. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  106. package/src/__tests__/docs-generator.test.ts +3 -9
  107. package/src/__tests__/dsl.test.ts +58 -64
  108. package/src/__tests__/edge-cases.test.ts +106 -108
  109. package/src/__tests__/engine.test.ts +51 -25
  110. package/src/__tests__/generators.test.ts +42 -44
  111. package/src/__tests__/introspection.test.ts +104 -114
  112. package/src/__tests__/pluresdb.test.ts +189 -187
  113. package/src/__tests__/protocol.test.ts +15 -15
  114. package/src/__tests__/provisioning.test.ts +61 -61
  115. package/src/__tests__/schema.test.ts +7 -11
  116. package/src/__tests__/state-docs-integration.test.ts +162 -145
  117. package/src/__tests__/svelte-integration.test.ts +16 -19
  118. package/src/__tests__/tauri-integration.test.ts +149 -147
  119. package/src/__tests__/terminal-node.test.ts +12 -7
  120. package/src/__tests__/unum-integration.test.ts +68 -68
  121. package/src/adapters/cli.ts +21 -15
  122. package/src/cli/commands/auth.ts +82 -78
  123. package/src/cli/commands/build.ts +29 -27
  124. package/src/cli/commands/canvas.ts +338 -127
  125. package/src/cli/commands/cloud.ts +47 -47
  126. package/src/cli/commands/create.ts +59 -47
  127. package/src/cli/commands/dev.ts +12 -12
  128. package/src/cli/commands/generate.ts +29 -40
  129. package/src/cli/commands/orchestrate.ts +24 -24
  130. package/src/cli/commands/verify.ts +7 -8
  131. package/src/cli/index.ts +14 -10
  132. package/src/cloud/README.md +28 -15
  133. package/src/cloud/auth.ts +55 -70
  134. package/src/cloud/billing.ts +59 -58
  135. package/src/cloud/client.ts +29 -35
  136. package/src/cloud/index.ts +19 -40
  137. package/src/cloud/marketplace.ts +69 -78
  138. package/src/cloud/provisioning.ts +42 -51
  139. package/src/cloud/relay/endpoints.ts +30 -34
  140. package/src/cloud/relay/health/index.ts +1 -1
  141. package/src/cloud/relay/stats/index.ts +1 -1
  142. package/src/cloud/relay/sync/index.ts +1 -1
  143. package/src/cloud/relay/usage/index.ts +1 -1
  144. package/src/cloud/sponsors.ts +31 -34
  145. package/src/cloud/types.ts +4 -4
  146. package/src/components/README.md +1 -0
  147. package/src/components/index.ts +3 -4
  148. package/src/core/actors.ts +7 -7
  149. package/src/core/component/generator.ts +10 -28
  150. package/src/core/engine.ts +51 -24
  151. package/src/core/introspection.ts +37 -35
  152. package/src/core/logic/generator.ts +62 -62
  153. package/src/core/pluresdb/adapter.ts +8 -8
  154. package/src/core/pluresdb/generator.ts +39 -35
  155. package/src/core/pluresdb/index.ts +9 -12
  156. package/src/core/pluresdb/schema-registry.ts +22 -25
  157. package/src/core/pluresdb/store.ts +57 -57
  158. package/src/core/protocol.ts +14 -14
  159. package/src/core/reactive-engine.svelte.ts +65 -0
  160. package/src/core/reactive-engine.ts +67 -0
  161. package/src/core/rules.ts +4 -4
  162. package/src/core/schema/loader.common.ts +150 -0
  163. package/src/core/schema/loader.ts +19 -149
  164. package/src/core/schema/normalize.ts +34 -51
  165. package/src/core/schema/types.ts +47 -11
  166. package/src/dsl/index.ts +8 -8
  167. package/src/dsl.ts +11 -17
  168. package/src/examples/advanced-todo/README.md +58 -40
  169. package/src/examples/advanced-todo/index.ts +3 -3
  170. package/src/examples/auth-basic/index.ts +30 -30
  171. package/src/examples/cart/index.ts +50 -50
  172. package/src/examples/hero-ecommerce/index.ts +130 -157
  173. package/src/examples/svelte-counter/index.ts +22 -26
  174. package/src/flows.ts +6 -17
  175. package/src/index.browser.ts +204 -0
  176. package/src/index.ts +37 -42
  177. package/src/integrations/code-canvas.ts +237 -193
  178. package/src/integrations/pluresdb.ts +55 -35
  179. package/src/integrations/state-docs.ts +104 -104
  180. package/src/integrations/svelte.ts +35 -35
  181. package/src/integrations/tauri.ts +75 -73
  182. package/src/integrations/unum.ts +68 -61
  183. package/src/registry.ts +7 -14
  184. package/src/runtime/terminal-adapter.ts +31 -26
  185. package/src/step.ts +10 -16
  186. package/src/types.ts +1 -1
  187. package/templates/basic-app/README.md +6 -9
  188. package/templates/fullstack-app/README.md +10 -0
  189. package/dist/core/codegen/docs-generator.d.ts +0 -123
  190. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  191. package/dist/core/codegen/docs-generator.js +0 -674
  192. package/dist/core/codegen/docs-generator.js.map +0 -1
  193. package/dist/core/codegen/index.d.ts +0 -11
  194. package/dist/core/codegen/index.d.ts.map +0 -1
  195. package/dist/core/codegen/index.js +0 -13
  196. package/dist/core/codegen/index.js.map +0 -1
  197. package/dist/core/codegen/ts-generator.d.ts +0 -8
  198. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  199. package/dist/core/codegen/ts-generator.js +0 -8
  200. package/dist/core/codegen/ts-generator.js.map +0 -1
  201. package/dist/core/db-adapter/index.d.ts +0 -18
  202. package/dist/core/db-adapter/index.d.ts.map +0 -1
  203. package/dist/core/db-adapter/index.js +0 -23
  204. package/dist/core/db-adapter/index.js.map +0 -1
  205. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  206. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  207. package/dist/core/db-adapter/sync-engine.js +0 -342
  208. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  209. package/dist/core/logic-engine/engine.d.ts +0 -8
  210. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  211. package/dist/core/logic-engine/engine.js +0 -8
  212. package/dist/core/logic-engine/engine.js.map +0 -1
  213. package/dist/core/logic-engine/index.d.ts +0 -16
  214. package/dist/core/logic-engine/index.d.ts.map +0 -1
  215. package/dist/core/logic-engine/index.js +0 -16
  216. package/dist/core/logic-engine/index.js.map +0 -1
  217. package/dist/core/logic-engine/protocol.d.ts +0 -7
  218. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  219. package/dist/core/logic-engine/protocol.js +0 -7
  220. package/dist/core/logic-engine/protocol.js.map +0 -1
  221. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  222. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  223. package/dist/core/logic-engine/psf-adapter.js +0 -207
  224. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  225. package/dist/core/logic-engine/rules.d.ts +0 -7
  226. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  227. package/dist/core/logic-engine/rules.js +0 -7
  228. package/dist/core/logic-engine/rules.js.map +0 -1
  229. package/dist/core/schema-engine/compiler.d.ts +0 -198
  230. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  231. package/dist/core/schema-engine/compiler.js +0 -262
  232. package/dist/core/schema-engine/compiler.js.map +0 -1
  233. package/dist/core/schema-engine/generator.d.ts +0 -115
  234. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  235. package/dist/core/schema-engine/generator.js +0 -506
  236. package/dist/core/schema-engine/generator.js.map +0 -1
  237. package/dist/core/schema-engine/index.d.ts +0 -18
  238. package/dist/core/schema-engine/index.d.ts.map +0 -1
  239. package/dist/core/schema-engine/index.js +0 -18
  240. package/dist/core/schema-engine/index.js.map +0 -1
  241. package/dist/core/schema-engine/psf.d.ts +0 -612
  242. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  243. package/dist/core/schema-engine/psf.js +0 -45
  244. package/dist/core/schema-engine/psf.js.map +0 -1
  245. package/dist/core/schema-engine/types.d.ts +0 -10
  246. package/dist/core/schema-engine/types.d.ts.map +0 -1
  247. package/dist/core/schema-engine/types.js +0 -7
  248. package/dist/core/schema-engine/types.js.map +0 -1
  249. package/dist/core/schema-engine/validator.d.ts +0 -140
  250. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  251. package/dist/core/schema-engine/validator.js +0 -407
  252. package/dist/core/schema-engine/validator.js.map +0 -1
  253. package/dist/src/adapters/cli.d.ts +0 -43
  254. package/dist/src/adapters/cli.d.ts.map +0 -1
  255. package/dist/src/adapters/cli.js +0 -126
  256. package/dist/src/adapters/cli.js.map +0 -1
  257. package/dist/src/cli/commands/auth.d.ts +0 -26
  258. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  259. package/dist/src/cli/commands/auth.js +0 -233
  260. package/dist/src/cli/commands/auth.js.map +0 -1
  261. package/dist/src/cli/commands/build.d.ts +0 -23
  262. package/dist/src/cli/commands/build.d.ts.map +0 -1
  263. package/dist/src/cli/commands/build.js +0 -162
  264. package/dist/src/cli/commands/build.js.map +0 -1
  265. package/dist/src/cli/commands/canvas.d.ts +0 -23
  266. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  267. package/dist/src/cli/commands/canvas.js +0 -215
  268. package/dist/src/cli/commands/canvas.js.map +0 -1
  269. package/dist/src/cli/commands/cloud.d.ts +0 -27
  270. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  271. package/dist/src/cli/commands/cloud.js +0 -232
  272. package/dist/src/cli/commands/cloud.js.map +0 -1
  273. package/dist/src/cli/commands/create.d.ts +0 -21
  274. package/dist/src/cli/commands/create.d.ts.map +0 -1
  275. package/dist/src/cli/commands/create.js +0 -621
  276. package/dist/src/cli/commands/create.js.map +0 -1
  277. package/dist/src/cli/commands/dev.d.ts +0 -21
  278. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  279. package/dist/src/cli/commands/dev.js +0 -71
  280. package/dist/src/cli/commands/dev.js.map +0 -1
  281. package/dist/src/cli/commands/generate.d.ts +0 -25
  282. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  283. package/dist/src/cli/commands/generate.js +0 -168
  284. package/dist/src/cli/commands/generate.js.map +0 -1
  285. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  286. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/orchestrate.js +0 -150
  288. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  289. package/dist/src/cli/commands/verify.d.ts +0 -10
  290. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  291. package/dist/src/cli/commands/verify.js +0 -39
  292. package/dist/src/cli/commands/verify.js.map +0 -1
  293. package/dist/src/cli/index.d.ts +0 -8
  294. package/dist/src/cli/index.d.ts.map +0 -1
  295. package/dist/src/cli/index.js +0 -226
  296. package/dist/src/cli/index.js.map +0 -1
  297. package/dist/src/cloud/auth.d.ts +0 -51
  298. package/dist/src/cloud/auth.d.ts.map +0 -1
  299. package/dist/src/cloud/auth.js +0 -194
  300. package/dist/src/cloud/auth.js.map +0 -1
  301. package/dist/src/cloud/billing.d.ts +0 -184
  302. package/dist/src/cloud/billing.d.ts.map +0 -1
  303. package/dist/src/cloud/billing.js +0 -179
  304. package/dist/src/cloud/billing.js.map +0 -1
  305. package/dist/src/cloud/client.d.ts +0 -39
  306. package/dist/src/cloud/client.d.ts.map +0 -1
  307. package/dist/src/cloud/client.js +0 -176
  308. package/dist/src/cloud/client.js.map +0 -1
  309. package/dist/src/cloud/index.d.ts +0 -44
  310. package/dist/src/cloud/index.d.ts.map +0 -1
  311. package/dist/src/cloud/index.js +0 -44
  312. package/dist/src/cloud/index.js.map +0 -1
  313. package/dist/src/cloud/marketplace.d.ts +0 -166
  314. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  315. package/dist/src/cloud/marketplace.js +0 -159
  316. package/dist/src/cloud/marketplace.js.map +0 -1
  317. package/dist/src/cloud/provisioning.d.ts +0 -110
  318. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  319. package/dist/src/cloud/provisioning.js +0 -148
  320. package/dist/src/cloud/provisioning.js.map +0 -1
  321. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  322. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  323. package/dist/src/cloud/relay/endpoints.js +0 -217
  324. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  325. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  326. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/health/index.js +0 -9
  328. package/dist/src/cloud/relay/health/index.js.map +0 -1
  329. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/stats/index.js +0 -9
  332. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  333. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/sync/index.js +0 -9
  336. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  337. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/usage/index.js +0 -9
  340. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  341. package/dist/src/cloud/sponsors.d.ts +0 -81
  342. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  343. package/dist/src/cloud/sponsors.js +0 -130
  344. package/dist/src/cloud/sponsors.js.map +0 -1
  345. package/dist/src/cloud/types.d.ts +0 -169
  346. package/dist/src/cloud/types.d.ts.map +0 -1
  347. package/dist/src/cloud/types.js +0 -7
  348. package/dist/src/cloud/types.js.map +0 -1
  349. package/dist/src/components/index.d.ts.map +0 -1
  350. package/dist/src/components/index.js +0 -17
  351. package/dist/src/components/index.js.map +0 -1
  352. package/dist/src/core/actors.d.ts +0 -95
  353. package/dist/src/core/actors.d.ts.map +0 -1
  354. package/dist/src/core/actors.js +0 -158
  355. package/dist/src/core/actors.js.map +0 -1
  356. package/dist/src/core/component/generator.d.ts.map +0 -1
  357. package/dist/src/core/component/generator.js +0 -349
  358. package/dist/src/core/component/generator.js.map +0 -1
  359. package/dist/src/core/engine.d.ts +0 -92
  360. package/dist/src/core/engine.d.ts.map +0 -1
  361. package/dist/src/core/engine.js +0 -199
  362. package/dist/src/core/engine.js.map +0 -1
  363. package/dist/src/core/introspection.d.ts +0 -141
  364. package/dist/src/core/introspection.d.ts.map +0 -1
  365. package/dist/src/core/introspection.js +0 -208
  366. package/dist/src/core/introspection.js.map +0 -1
  367. package/dist/src/core/logic/generator.d.ts +0 -76
  368. package/dist/src/core/logic/generator.d.ts.map +0 -1
  369. package/dist/src/core/logic/generator.js +0 -370
  370. package/dist/src/core/logic/generator.js.map +0 -1
  371. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  372. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  373. package/dist/src/core/pluresdb/adapter.js +0 -73
  374. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  375. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  376. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/generator.js +0 -191
  378. package/dist/src/core/pluresdb/generator.js.map +0 -1
  379. package/dist/src/core/pluresdb/index.d.ts +0 -15
  380. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/index.js +0 -11
  382. package/dist/src/core/pluresdb/index.js.map +0 -1
  383. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  384. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  386. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  387. package/dist/src/core/pluresdb/store.d.ts +0 -199
  388. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/store.js +0 -344
  390. package/dist/src/core/pluresdb/store.js.map +0 -1
  391. package/dist/src/core/protocol.d.ts.map +0 -1
  392. package/dist/src/core/protocol.js +0 -46
  393. package/dist/src/core/protocol.js.map +0 -1
  394. package/dist/src/core/rules.d.ts +0 -120
  395. package/dist/src/core/rules.d.ts.map +0 -1
  396. package/dist/src/core/rules.js +0 -81
  397. package/dist/src/core/rules.js.map +0 -1
  398. package/dist/src/core/schema/loader.d.ts +0 -47
  399. package/dist/src/core/schema/loader.d.ts.map +0 -1
  400. package/dist/src/core/schema/loader.js +0 -189
  401. package/dist/src/core/schema/loader.js.map +0 -1
  402. package/dist/src/core/schema/normalize.d.ts +0 -72
  403. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  404. package/dist/src/core/schema/normalize.js +0 -190
  405. package/dist/src/core/schema/normalize.js.map +0 -1
  406. package/dist/src/core/schema/types.d.ts.map +0 -1
  407. package/dist/src/core/schema/types.js +0 -161
  408. package/dist/src/core/schema/types.js.map +0 -1
  409. package/dist/src/dsl/index.d.ts +0 -152
  410. package/dist/src/dsl/index.d.ts.map +0 -1
  411. package/dist/src/dsl/index.js +0 -132
  412. package/dist/src/dsl/index.js.map +0 -1
  413. package/dist/src/dsl.d.ts +0 -124
  414. package/dist/src/dsl.d.ts.map +0 -1
  415. package/dist/src/dsl.js +0 -130
  416. package/dist/src/dsl.js.map +0 -1
  417. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  418. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  419. package/dist/src/examples/advanced-todo/index.js +0 -222
  420. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  421. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  422. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  423. package/dist/src/examples/auth-basic/index.js +0 -122
  424. package/dist/src/examples/auth-basic/index.js.map +0 -1
  425. package/dist/src/examples/cart/index.d.ts +0 -19
  426. package/dist/src/examples/cart/index.d.ts.map +0 -1
  427. package/dist/src/examples/cart/index.js +0 -202
  428. package/dist/src/examples/cart/index.js.map +0 -1
  429. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  430. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  431. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  432. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  433. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  434. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  435. package/dist/src/examples/svelte-counter/index.js +0 -123
  436. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  437. package/dist/src/flows.d.ts +0 -125
  438. package/dist/src/flows.d.ts.map +0 -1
  439. package/dist/src/flows.js +0 -160
  440. package/dist/src/flows.js.map +0 -1
  441. package/dist/src/index.d.ts +0 -77
  442. package/dist/src/index.d.ts.map +0 -1
  443. package/dist/src/index.js +0 -64
  444. package/dist/src/index.js.map +0 -1
  445. package/dist/src/integrations/code-canvas.d.ts +0 -265
  446. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  447. package/dist/src/integrations/code-canvas.js +0 -451
  448. package/dist/src/integrations/code-canvas.js.map +0 -1
  449. package/dist/src/integrations/pluresdb.d.ts +0 -117
  450. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  451. package/dist/src/integrations/pluresdb.js +0 -117
  452. package/dist/src/integrations/pluresdb.js.map +0 -1
  453. package/dist/src/integrations/state-docs.d.ts +0 -191
  454. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  455. package/dist/src/integrations/state-docs.js +0 -515
  456. package/dist/src/integrations/state-docs.js.map +0 -1
  457. package/dist/src/integrations/svelte.d.ts.map +0 -1
  458. package/dist/src/integrations/svelte.js +0 -447
  459. package/dist/src/integrations/svelte.js.map +0 -1
  460. package/dist/src/integrations/tauri.d.ts +0 -360
  461. package/dist/src/integrations/tauri.d.ts.map +0 -1
  462. package/dist/src/integrations/tauri.js +0 -278
  463. package/dist/src/integrations/tauri.js.map +0 -1
  464. package/dist/src/integrations/unum.d.ts +0 -159
  465. package/dist/src/integrations/unum.d.ts.map +0 -1
  466. package/dist/src/integrations/unum.js +0 -240
  467. package/dist/src/integrations/unum.js.map +0 -1
  468. package/dist/src/registry.d.ts +0 -94
  469. package/dist/src/registry.d.ts.map +0 -1
  470. package/dist/src/registry.js +0 -181
  471. package/dist/src/registry.js.map +0 -1
  472. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  473. package/dist/src/runtime/terminal-adapter.js +0 -239
  474. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  475. package/dist/src/step.d.ts +0 -34
  476. package/dist/src/step.d.ts.map +0 -1
  477. package/dist/src/step.js +0 -111
  478. package/dist/src/step.js.map +0 -1
  479. package/dist/src/types.d.ts +0 -63
  480. package/dist/src/types.d.ts.map +0 -1
  481. package/dist/src/types.js +0 -6
  482. package/dist/src/types.js.map +0 -1
  483. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  484. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  485. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  486. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  487. package/dist/tools/cli/commands/index.d.ts +0 -7
  488. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  489. package/dist/tools/cli/commands/index.js +0 -7
  490. package/dist/tools/cli/commands/index.js.map +0 -1
  491. package/dist/tools/cli/index.d.ts +0 -8
  492. package/dist/tools/cli/index.d.ts.map +0 -1
  493. package/dist/tools/cli/index.js +0 -9
  494. package/dist/tools/cli/index.js.map +0 -1
  495. package/dist/tools/watcher/index.d.ts +0 -105
  496. package/dist/tools/watcher/index.d.ts.map +0 -1
  497. package/dist/tools/watcher/index.js +0 -213
  498. package/dist/tools/watcher/index.js.map +0 -1
  499. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  500. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  501. package/dist/ui/canvas/canvas-projection.js +0 -416
  502. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  503. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  504. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-state.js +0 -464
  506. package/dist/ui/canvas/canvas-state.js.map +0 -1
  507. package/dist/ui/canvas/components/index.d.ts +0 -95
  508. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  509. package/dist/ui/canvas/components/index.js +0 -19
  510. package/dist/ui/canvas/components/index.js.map +0 -1
  511. package/dist/ui/canvas/index.d.ts +0 -32
  512. package/dist/ui/canvas/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/index.js +0 -32
  514. package/dist/ui/canvas/index.js.map +0 -1
  515. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  516. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  517. package/dist/ui/canvas-inspector/src/server.js +0 -248
  518. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  520. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  522. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  523. package/dist/ui/svelte-generator/index.d.ts +0 -9
  524. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  525. package/dist/ui/svelte-generator/index.js +0 -11
  526. package/dist/ui/svelte-generator/index.js.map +0 -1
  527. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  528. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  530. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Hero Example: E-Commerce Platform
3
- *
3
+ *
4
4
  * A comprehensive example demonstrating:
5
5
  * - Authentication with session management
6
6
  * - Shopping cart with discount rules
@@ -22,7 +22,7 @@ import {
22
22
  filterFacts,
23
23
  ActorManager,
24
24
  type Actor,
25
- } from "../../index.js";
25
+ } from '../../index.js';
26
26
 
27
27
  // ============================================================================
28
28
  // CONTEXT TYPE
@@ -32,21 +32,21 @@ interface ECommerceContext {
32
32
  // Auth
33
33
  currentUser: string | null;
34
34
  sessionStartTime: number | null;
35
-
35
+
36
36
  // Cart
37
37
  cart: {
38
38
  items: Array<{ productId: string; quantity: number; price: number }>;
39
39
  total: number;
40
40
  discountApplied: number;
41
41
  };
42
-
42
+
43
43
  // Feature Flags
44
44
  features: {
45
45
  freeShippingEnabled: boolean;
46
46
  loyaltyProgramEnabled: boolean;
47
47
  newCheckoutFlowEnabled: boolean;
48
48
  };
49
-
49
+
50
50
  // Business State
51
51
  loyaltyPoints: number;
52
52
  orderHistory: string[];
@@ -57,80 +57,61 @@ interface ECommerceContext {
57
57
  // ============================================================================
58
58
 
59
59
  // Auth Facts
60
- const UserLoggedIn = defineFact<"UserLoggedIn", { userId: string; timestamp: number }>(
61
- "UserLoggedIn"
62
- );
63
- const UserLoggedOut = defineFact<"UserLoggedOut", { userId: string }>(
64
- "UserLoggedOut"
65
- );
66
- const SessionExpired = defineFact<"SessionExpired", { userId: string }>(
67
- "SessionExpired"
60
+ const UserLoggedIn = defineFact<'UserLoggedIn', { userId: string; timestamp: number }>(
61
+ 'UserLoggedIn'
68
62
  );
63
+ const UserLoggedOut = defineFact<'UserLoggedOut', { userId: string }>('UserLoggedOut');
64
+ const SessionExpired = defineFact<'SessionExpired', { userId: string }>('SessionExpired');
69
65
 
70
66
  // Cart Facts
71
- const ItemAdded = defineFact<"ItemAdded", { productId: string; quantity: number; price: number }>(
72
- "ItemAdded"
73
- );
74
- const ItemRemoved = defineFact<"ItemRemoved", { productId: string }>(
75
- "ItemRemoved"
67
+ const ItemAdded = defineFact<'ItemAdded', { productId: string; quantity: number; price: number }>(
68
+ 'ItemAdded'
76
69
  );
77
- const DiscountApplied = defineFact<"DiscountApplied", { amount: number; reason: string }>(
78
- "DiscountApplied"
70
+ const ItemRemoved = defineFact<'ItemRemoved', { productId: string }>('ItemRemoved');
71
+ const DiscountApplied = defineFact<'DiscountApplied', { amount: number; reason: string }>(
72
+ 'DiscountApplied'
79
73
  );
80
- const CartCleared = defineFact<"CartCleared", {}>("CartCleared");
74
+ const CartCleared = defineFact<'CartCleared', {}>('CartCleared');
81
75
 
82
76
  // Feature Flag Facts
83
- const FeatureEnabled = defineFact<"FeatureEnabled", { feature: string }>(
84
- "FeatureEnabled"
85
- );
86
- const FeatureDisabled = defineFact<"FeatureDisabled", { feature: string }>(
87
- "FeatureDisabled"
88
- );
77
+ const FeatureEnabled = defineFact<'FeatureEnabled', { feature: string }>('FeatureEnabled');
78
+ const FeatureDisabled = defineFact<'FeatureDisabled', { feature: string }>('FeatureDisabled');
89
79
 
90
80
  // Business Facts
91
- const LoyaltyPointsAwarded = defineFact<"LoyaltyPointsAwarded", { points: number }>(
92
- "LoyaltyPointsAwarded"
93
- );
94
- const OrderPlaced = defineFact<"OrderPlaced", { orderId: string; total: number }>(
95
- "OrderPlaced"
81
+ const LoyaltyPointsAwarded = defineFact<'LoyaltyPointsAwarded', { points: number }>(
82
+ 'LoyaltyPointsAwarded'
96
83
  );
84
+ const OrderPlaced = defineFact<'OrderPlaced', { orderId: string; total: number }>('OrderPlaced');
97
85
 
98
86
  // ============================================================================
99
87
  // EVENTS
100
88
  // ============================================================================
101
89
 
102
90
  // Auth Events
103
- const Login = defineEvent<"LOGIN", { username: string }>("LOGIN");
104
- const Logout = defineEvent<"LOGOUT", {}>("LOGOUT");
105
- const CheckSession = defineEvent<"CHECK_SESSION", {}>("CHECK_SESSION");
91
+ const Login = defineEvent<'LOGIN', { username: string }>('LOGIN');
92
+ const Logout = defineEvent<'LOGOUT', {}>('LOGOUT');
93
+ const CheckSession = defineEvent<'CHECK_SESSION', {}>('CHECK_SESSION');
106
94
 
107
95
  // Cart Events
108
- const AddToCart = defineEvent<"ADD_TO_CART", { productId: string; quantity: number; price: number }>(
109
- "ADD_TO_CART"
110
- );
111
- const RemoveFromCart = defineEvent<"REMOVE_FROM_CART", { productId: string }>(
112
- "REMOVE_FROM_CART"
113
- );
114
- const ApplyDiscount = defineEvent<"APPLY_DISCOUNT", { code: string }>(
115
- "APPLY_DISCOUNT"
116
- );
117
- const Checkout = defineEvent<"CHECKOUT", {}>("CHECKOUT");
96
+ const AddToCart = defineEvent<
97
+ 'ADD_TO_CART',
98
+ { productId: string; quantity: number; price: number }
99
+ >('ADD_TO_CART');
100
+ const RemoveFromCart = defineEvent<'REMOVE_FROM_CART', { productId: string }>('REMOVE_FROM_CART');
101
+ const ApplyDiscount = defineEvent<'APPLY_DISCOUNT', { code: string }>('APPLY_DISCOUNT');
102
+ const Checkout = defineEvent<'CHECKOUT', {}>('CHECKOUT');
118
103
 
119
104
  // Feature Flag Events
120
- const EnableFeature = defineEvent<"ENABLE_FEATURE", { feature: string }>(
121
- "ENABLE_FEATURE"
122
- );
123
- const DisableFeature = defineEvent<"DISABLE_FEATURE", { feature: string }>(
124
- "DISABLE_FEATURE"
125
- );
105
+ const EnableFeature = defineEvent<'ENABLE_FEATURE', { feature: string }>('ENABLE_FEATURE');
106
+ const DisableFeature = defineEvent<'DISABLE_FEATURE', { feature: string }>('DISABLE_FEATURE');
126
107
 
127
108
  // ============================================================================
128
109
  // AUTH MODULE
129
110
  // ============================================================================
130
111
 
131
112
  const loginRule = defineRule<ECommerceContext>({
132
- id: "auth.login",
133
- description: "Process login event",
113
+ id: 'auth.login',
114
+ description: 'Process login event',
134
115
  impl: (state, events) => {
135
116
  const loginEvent = findEvent(events, Login);
136
117
  if (!loginEvent) {
@@ -139,7 +120,7 @@ const loginRule = defineRule<ECommerceContext>({
139
120
 
140
121
  state.context.currentUser = loginEvent.payload.username;
141
122
  state.context.sessionStartTime = Date.now();
142
-
123
+
143
124
  return [
144
125
  UserLoggedIn.create({
145
126
  userId: loginEvent.payload.username,
@@ -150,8 +131,8 @@ const loginRule = defineRule<ECommerceContext>({
150
131
  });
151
132
 
152
133
  const logoutRule = defineRule<ECommerceContext>({
153
- id: "auth.logout",
154
- description: "Process logout event",
134
+ id: 'auth.logout',
135
+ description: 'Process logout event',
155
136
  impl: (state, events) => {
156
137
  const logoutEvent = findEvent(events, Logout);
157
138
  if (!logoutEvent || !state.context.currentUser) {
@@ -161,7 +142,7 @@ const logoutRule = defineRule<ECommerceContext>({
161
142
  const userId = state.context.currentUser;
162
143
  state.context.currentUser = null;
163
144
  state.context.sessionStartTime = null;
164
-
145
+
165
146
  // Clear cart on logout
166
147
  state.context.cart = {
167
148
  items: [],
@@ -169,16 +150,13 @@ const logoutRule = defineRule<ECommerceContext>({
169
150
  discountApplied: 0,
170
151
  };
171
152
 
172
- return [
173
- UserLoggedOut.create({ userId }),
174
- CartCleared.create({}),
175
- ];
153
+ return [UserLoggedOut.create({ userId }), CartCleared.create({})];
176
154
  },
177
155
  });
178
156
 
179
157
  const sessionCheckRule = defineRule<ECommerceContext>({
180
- id: "auth.checkSession",
181
- description: "Check for session expiration (30 minute timeout)",
158
+ id: 'auth.checkSession',
159
+ description: 'Check for session expiration (30 minute timeout)',
182
160
  impl: (state, events) => {
183
161
  const checkEvent = findEvent(events, CheckSession);
184
162
  if (!checkEvent || !state.context.currentUser || !state.context.sessionStartTime) {
@@ -194,10 +172,7 @@ const sessionCheckRule = defineRule<ECommerceContext>({
194
172
  state.context.sessionStartTime = null;
195
173
  state.context.cart = { items: [], total: 0, discountApplied: 0 };
196
174
 
197
- return [
198
- SessionExpired.create({ userId }),
199
- CartCleared.create({}),
200
- ];
175
+ return [SessionExpired.create({ userId }), CartCleared.create({})];
201
176
  }
202
177
 
203
178
  return [];
@@ -206,8 +181,8 @@ const sessionCheckRule = defineRule<ECommerceContext>({
206
181
 
207
182
  const authConstraints = [
208
183
  defineConstraint<ECommerceContext>({
209
- id: "auth.singleSession",
210
- description: "Only one user can be logged in at a time",
184
+ id: 'auth.singleSession',
185
+ description: 'Only one user can be logged in at a time',
211
186
  impl: () => {
212
187
  // This is always valid - just enforced by business logic
213
188
  return true;
@@ -218,7 +193,7 @@ const authConstraints = [
218
193
  const authModule = defineModule<ECommerceContext>({
219
194
  rules: [loginRule, logoutRule, sessionCheckRule],
220
195
  constraints: authConstraints,
221
- meta: { module: "auth", version: "1.0.0" },
196
+ meta: { module: 'auth', version: '1.0.0' },
222
197
  });
223
198
 
224
199
  // ============================================================================
@@ -226,8 +201,8 @@ const authModule = defineModule<ECommerceContext>({
226
201
  // ============================================================================
227
202
 
228
203
  const addToCartRule = defineRule<ECommerceContext>({
229
- id: "cart.addItem",
230
- description: "Add item to cart",
204
+ id: 'cart.addItem',
205
+ description: 'Add item to cart',
231
206
  impl: (state, events) => {
232
207
  const addEvents = events.filter(AddToCart.is);
233
208
  if (!state.context.currentUser || addEvents.length === 0) {
@@ -242,12 +217,12 @@ const addToCartRule = defineRule<ECommerceContext>({
242
217
  })
243
218
  );
244
219
  },
245
- meta: { dependsOn: "auth.login" },
220
+ meta: { dependsOn: 'auth.login' },
246
221
  });
247
222
 
248
223
  const removeFromCartRule = defineRule<ECommerceContext>({
249
- id: "cart.removeItem",
250
- description: "Remove item from cart",
224
+ id: 'cart.removeItem',
225
+ description: 'Remove item from cart',
251
226
  impl: (state, events) => {
252
227
  const removeEvent = findEvent(events, RemoveFromCart);
253
228
  if (!removeEvent || !state.context.currentUser) {
@@ -259,8 +234,8 @@ const removeFromCartRule = defineRule<ECommerceContext>({
259
234
  });
260
235
 
261
236
  const applyDiscountRule = defineRule<ECommerceContext>({
262
- id: "cart.applyDiscount",
263
- description: "Apply discount codes",
237
+ id: 'cart.applyDiscount',
238
+ description: 'Apply discount codes',
264
239
  impl: (state, events) => {
265
240
  const discountEvent = findEvent(events, ApplyDiscount);
266
241
  if (!discountEvent || !state.context.currentUser) {
@@ -269,18 +244,18 @@ const applyDiscountRule = defineRule<ECommerceContext>({
269
244
 
270
245
  const code = discountEvent.payload.code;
271
246
  let discount = 0;
272
- let reason = "";
247
+ let reason = '';
273
248
 
274
249
  // Discount logic
275
- if (code === "SAVE10") {
276
- discount = 0.10;
277
- reason = "10% off with code SAVE10";
278
- } else if (code === "SAVE20" && state.context.loyaltyPoints > 100) {
279
- discount = 0.20;
280
- reason = "20% off for loyal customers";
281
- } else if (code === "FREESHIP" && state.context.features.freeShippingEnabled) {
250
+ if (code === 'SAVE10') {
251
+ discount = 0.1;
252
+ reason = '10% off with code SAVE10';
253
+ } else if (code === 'SAVE20' && state.context.loyaltyPoints > 100) {
254
+ discount = 0.2;
255
+ reason = '20% off for loyal customers';
256
+ } else if (code === 'FREESHIP' && state.context.features.freeShippingEnabled) {
282
257
  discount = 0.05;
283
- reason = "5% off with free shipping";
258
+ reason = '5% off with free shipping';
284
259
  }
285
260
 
286
261
  if (discount > 0) {
@@ -292,8 +267,8 @@ const applyDiscountRule = defineRule<ECommerceContext>({
292
267
  });
293
268
 
294
269
  const updateCartContextRule = defineRule<ECommerceContext>({
295
- id: "cart.updateContext",
296
- description: "Update cart context from facts",
270
+ id: 'cart.updateContext',
271
+ description: 'Update cart context from facts',
297
272
  impl: (state) => {
298
273
  const addedItems = filterFacts(state.facts, ItemAdded);
299
274
  const removedItems = filterFacts(state.facts, ItemRemoved);
@@ -334,10 +309,7 @@ const updateCartContextRule = defineRule<ECommerceContext>({
334
309
  }));
335
310
 
336
311
  // Calculate total
337
- let total = state.context.cart.items.reduce(
338
- (sum, item) => sum + item.quantity * item.price,
339
- 0
340
- );
312
+ let total = state.context.cart.items.reduce((sum, item) => sum + item.quantity * item.price, 0);
341
313
 
342
314
  // Apply discounts
343
315
  let totalDiscount = 0;
@@ -353,8 +325,8 @@ const updateCartContextRule = defineRule<ECommerceContext>({
353
325
  });
354
326
 
355
327
  const checkoutRule = defineRule<ECommerceContext>({
356
- id: "cart.checkout",
357
- description: "Process checkout",
328
+ id: 'cart.checkout',
329
+ description: 'Process checkout',
358
330
  impl: (state, events) => {
359
331
  const checkoutEvent = findEvent(events, Checkout);
360
332
  if (!checkoutEvent || !state.context.currentUser || state.context.cart.items.length === 0) {
@@ -381,22 +353,19 @@ const checkoutRule = defineRule<ECommerceContext>({
381
353
 
382
354
  const cartConstraints = [
383
355
  defineConstraint<ECommerceContext>({
384
- id: "cart.maxItems",
385
- description: "Cart cannot exceed 100 items",
356
+ id: 'cart.maxItems',
357
+ description: 'Cart cannot exceed 100 items',
386
358
  impl: (state) => {
387
- const totalQuantity = state.context.cart.items.reduce(
388
- (sum, item) => sum + item.quantity,
389
- 0
390
- );
359
+ const totalQuantity = state.context.cart.items.reduce((sum, item) => sum + item.quantity, 0);
391
360
  return totalQuantity <= 100 || `Cart has ${totalQuantity} items, max is 100`;
392
361
  },
393
362
  }),
394
363
  defineConstraint<ECommerceContext>({
395
- id: "cart.requiresAuth",
396
- description: "Cart operations require authentication",
364
+ id: 'cart.requiresAuth',
365
+ description: 'Cart operations require authentication',
397
366
  impl: (state) => {
398
367
  if (state.context.cart.items.length > 0 && !state.context.currentUser) {
399
- return "Cart operations require authentication";
368
+ return 'Cart operations require authentication';
400
369
  }
401
370
  return true;
402
371
  },
@@ -412,7 +381,7 @@ const cartModule = defineModule<ECommerceContext>({
412
381
  checkoutRule,
413
382
  ],
414
383
  constraints: cartConstraints,
415
- meta: { module: "cart", version: "1.0.0", dependsOn: ["auth"] },
384
+ meta: { module: 'cart', version: '1.0.0', dependsOn: ['auth'] },
416
385
  });
417
386
 
418
387
  // ============================================================================
@@ -420,8 +389,8 @@ const cartModule = defineModule<ECommerceContext>({
420
389
  // ============================================================================
421
390
 
422
391
  const enableFeatureRule = defineRule<ECommerceContext>({
423
- id: "features.enable",
424
- description: "Enable a feature flag",
392
+ id: 'features.enable',
393
+ description: 'Enable a feature flag',
425
394
  impl: (state, events) => {
426
395
  const enableEvent = findEvent(events, EnableFeature);
427
396
  if (!enableEvent) {
@@ -429,11 +398,11 @@ const enableFeatureRule = defineRule<ECommerceContext>({
429
398
  }
430
399
 
431
400
  const feature = enableEvent.payload.feature;
432
- if (feature === "freeShipping") {
401
+ if (feature === 'freeShipping') {
433
402
  state.context.features.freeShippingEnabled = true;
434
- } else if (feature === "loyaltyProgram") {
403
+ } else if (feature === 'loyaltyProgram') {
435
404
  state.context.features.loyaltyProgramEnabled = true;
436
- } else if (feature === "newCheckoutFlow") {
405
+ } else if (feature === 'newCheckoutFlow') {
437
406
  state.context.features.newCheckoutFlowEnabled = true;
438
407
  }
439
408
 
@@ -442,8 +411,8 @@ const enableFeatureRule = defineRule<ECommerceContext>({
442
411
  });
443
412
 
444
413
  const disableFeatureRule = defineRule<ECommerceContext>({
445
- id: "features.disable",
446
- description: "Disable a feature flag",
414
+ id: 'features.disable',
415
+ description: 'Disable a feature flag',
447
416
  impl: (state, events) => {
448
417
  const disableEvent = findEvent(events, DisableFeature);
449
418
  if (!disableEvent) {
@@ -451,11 +420,11 @@ const disableFeatureRule = defineRule<ECommerceContext>({
451
420
  }
452
421
 
453
422
  const feature = disableEvent.payload.feature;
454
- if (feature === "freeShipping") {
423
+ if (feature === 'freeShipping') {
455
424
  state.context.features.freeShippingEnabled = false;
456
- } else if (feature === "loyaltyProgram") {
425
+ } else if (feature === 'loyaltyProgram') {
457
426
  state.context.features.loyaltyProgramEnabled = false;
458
- } else if (feature === "newCheckoutFlow") {
427
+ } else if (feature === 'newCheckoutFlow') {
459
428
  state.context.features.newCheckoutFlowEnabled = false;
460
429
  }
461
430
 
@@ -466,7 +435,7 @@ const disableFeatureRule = defineRule<ECommerceContext>({
466
435
  const featureFlagsModule = defineModule<ECommerceContext>({
467
436
  rules: [enableFeatureRule, disableFeatureRule],
468
437
  constraints: [],
469
- meta: { module: "featureFlags", version: "1.0.0" },
438
+ meta: { module: 'featureFlags', version: '1.0.0' },
470
439
  });
471
440
 
472
441
  // ============================================================================
@@ -477,16 +446,18 @@ const featureFlagsModule = defineModule<ECommerceContext>({
477
446
  * Logging actor - logs important events to console
478
447
  */
479
448
  const loggingActor: Actor<ECommerceContext> = {
480
- id: "logging",
481
- description: "Logs important events",
449
+ id: 'logging',
450
+ description: 'Logs important events',
482
451
  onStateChange: (state) => {
483
452
  const recentFacts = state.facts.slice(-3); // Last 3 facts
484
453
  for (const fact of recentFacts) {
485
- if (fact.tag === "UserLoggedIn" && UserLoggedIn.is(fact)) {
454
+ if (fact.tag === 'UserLoggedIn' && UserLoggedIn.is(fact)) {
486
455
  console.log(` [LOG] User ${fact.payload.userId} logged in`);
487
- } else if (fact.tag === "OrderPlaced" && OrderPlaced.is(fact)) {
488
- console.log(` [LOG] Order ${fact.payload.orderId} placed for $${fact.payload.total.toFixed(2)}`);
489
- } else if (fact.tag === "SessionExpired" && SessionExpired.is(fact)) {
456
+ } else if (fact.tag === 'OrderPlaced' && OrderPlaced.is(fact)) {
457
+ console.log(
458
+ ` [LOG] Order ${fact.payload.orderId} placed for $${fact.payload.total.toFixed(2)}`
459
+ );
460
+ } else if (fact.tag === 'SessionExpired' && SessionExpired.is(fact)) {
490
461
  console.log(` [LOG] Session expired for user ${fact.payload.userId}`);
491
462
  }
492
463
  }
@@ -497,15 +468,15 @@ const loggingActor: Actor<ECommerceContext> = {
497
468
  * Analytics actor - tracks metrics
498
469
  */
499
470
  const analyticsActor: Actor<ECommerceContext> = {
500
- id: "analytics",
501
- description: "Tracks analytics events",
471
+ id: 'analytics',
472
+ description: 'Tracks analytics events',
502
473
  onStateChange: (state) => {
503
474
  // In a real app, this would send to an analytics service
504
475
  const recentFacts = state.facts.slice(-1);
505
476
  for (const fact of recentFacts) {
506
- if (fact.tag === "OrderPlaced" && OrderPlaced.is(fact)) {
477
+ if (fact.tag === 'OrderPlaced' && OrderPlaced.is(fact)) {
507
478
  console.log(` [ANALYTICS] Revenue: $${fact.payload.total.toFixed(2)}`);
508
- } else if (fact.tag === "LoyaltyPointsAwarded" && LoyaltyPointsAwarded.is(fact)) {
479
+ } else if (fact.tag === 'LoyaltyPointsAwarded' && LoyaltyPointsAwarded.is(fact)) {
509
480
  console.log(` [ANALYTICS] Loyalty engagement: ${fact.payload.points} points`);
510
481
  }
511
482
  }
@@ -518,7 +489,7 @@ const analyticsActor: Actor<ECommerceContext> = {
518
489
 
519
490
  function createECommerceEngine() {
520
491
  const registry = new PraxisRegistry<ECommerceContext>();
521
-
492
+
522
493
  // Register all modules
523
494
  registry.registerModule(authModule);
524
495
  registry.registerModule(cartModule);
@@ -558,38 +529,38 @@ function createECommerceEngine() {
558
529
  // ============================================================================
559
530
 
560
531
  async function runDemo() {
561
- console.log("=".repeat(70));
562
- console.log("E-COMMERCE PLATFORM DEMO");
563
- console.log("Demonstrating: Auth + Cart + Feature Flags + Actors + Constraints");
564
- console.log("=".repeat(70));
532
+ console.log('='.repeat(70));
533
+ console.log('E-COMMERCE PLATFORM DEMO');
534
+ console.log('Demonstrating: Auth + Cart + Feature Flags + Actors + Constraints');
535
+ console.log('='.repeat(70));
565
536
  console.log();
566
537
 
567
538
  const { engine, actorManager } = createECommerceEngine();
568
539
  await actorManager.startAll();
569
540
 
570
541
  // Scenario 1: User Login
571
- console.log("1. User Login");
572
- console.log("-".repeat(70));
573
- let result = engine.step([Login.create({ username: "alice" })]);
542
+ console.log('1. User Login');
543
+ console.log('-'.repeat(70));
544
+ let result = engine.step([Login.create({ username: 'alice' })]);
574
545
  await actorManager.notifyStateChange(engine.getState());
575
546
  console.log(` User: ${engine.getContext().currentUser}`);
576
547
  console.log(` Diagnostics: ${result.diagnostics.length} issue(s)`);
577
548
  console.log();
578
549
 
579
550
  // Scenario 2: Enable Feature Flag
580
- console.log("2. Enable Free Shipping Feature");
581
- console.log("-".repeat(70));
582
- result = engine.step([EnableFeature.create({ feature: "freeShipping" })]);
551
+ console.log('2. Enable Free Shipping Feature');
552
+ console.log('-'.repeat(70));
553
+ result = engine.step([EnableFeature.create({ feature: 'freeShipping' })]);
583
554
  await actorManager.notifyStateChange(engine.getState());
584
555
  console.log(` Free Shipping Enabled: ${engine.getContext().features.freeShippingEnabled}`);
585
556
  console.log();
586
557
 
587
558
  // Scenario 3: Add Items to Cart
588
- console.log("3. Add Items to Cart");
589
- console.log("-".repeat(70));
559
+ console.log('3. Add Items to Cart');
560
+ console.log('-'.repeat(70));
590
561
  result = engine.step([
591
- AddToCart.create({ productId: "laptop-1", quantity: 1, price: 999.99 }),
592
- AddToCart.create({ productId: "mouse-1", quantity: 2, price: 29.99 }),
562
+ AddToCart.create({ productId: 'laptop-1', quantity: 1, price: 999.99 }),
563
+ AddToCart.create({ productId: 'mouse-1', quantity: 2, price: 29.99 }),
593
564
  ]);
594
565
  await actorManager.notifyStateChange(engine.getState());
595
566
  const cart = engine.getContext().cart;
@@ -598,17 +569,17 @@ async function runDemo() {
598
569
  console.log();
599
570
 
600
571
  // Scenario 4: Apply Discount
601
- console.log("4. Apply Discount Code");
602
- console.log("-".repeat(70));
603
- result = engine.step([ApplyDiscount.create({ code: "SAVE10" })]);
572
+ console.log('4. Apply Discount Code');
573
+ console.log('-'.repeat(70));
574
+ result = engine.step([ApplyDiscount.create({ code: 'SAVE10' })]);
604
575
  await actorManager.notifyStateChange(engine.getState());
605
576
  console.log(` Discount: ${(engine.getContext().cart.discountApplied * 100).toFixed(0)}%`);
606
577
  console.log(` New Total: $${engine.getContext().cart.total.toFixed(2)}`);
607
578
  console.log();
608
579
 
609
580
  // Scenario 5: Checkout
610
- console.log("5. Checkout");
611
- console.log("-".repeat(70));
581
+ console.log('5. Checkout');
582
+ console.log('-'.repeat(70));
612
583
  result = engine.step([Checkout.create({})]);
613
584
  await actorManager.notifyStateChange(engine.getState());
614
585
  console.log(` Orders Placed: ${engine.getContext().orderHistory.length}`);
@@ -617,16 +588,18 @@ async function runDemo() {
617
588
  console.log();
618
589
 
619
590
  // Scenario 6: Add More Items and Checkout Again
620
- console.log("6. Shop Again with Loyalty Discount");
621
- console.log("-".repeat(70));
591
+ console.log('6. Shop Again with Loyalty Discount');
592
+ console.log('-'.repeat(70));
622
593
  engine.step([
623
- AddToCart.create({ productId: "keyboard-1", quantity: 1, price: 129.99 }),
624
- ApplyDiscount.create({ code: "SAVE20" }), // Requires 100+ loyalty points
594
+ AddToCart.create({ productId: 'keyboard-1', quantity: 1, price: 129.99 }),
595
+ ApplyDiscount.create({ code: 'SAVE20' }), // Requires 100+ loyalty points
625
596
  ]);
626
597
  await actorManager.notifyStateChange(engine.getState());
627
598
  console.log(` Total: $${engine.getContext().cart.total.toFixed(2)}`);
628
- console.log(` Discount Applied: ${(engine.getContext().cart.discountApplied * 100).toFixed(0)}%`);
629
-
599
+ console.log(
600
+ ` Discount Applied: ${(engine.getContext().cart.discountApplied * 100).toFixed(0)}%`
601
+ );
602
+
630
603
  result = engine.step([Checkout.create({})]);
631
604
  await actorManager.notifyStateChange(engine.getState());
632
605
  console.log(` Total Orders: ${engine.getContext().orderHistory.length}`);
@@ -634,19 +607,19 @@ async function runDemo() {
634
607
  console.log();
635
608
 
636
609
  // Scenario 7: Logout
637
- console.log("7. User Logout");
638
- console.log("-".repeat(70));
610
+ console.log('7. User Logout');
611
+ console.log('-'.repeat(70));
639
612
  result = engine.step([Logout.create({})]);
640
613
  await actorManager.notifyStateChange(engine.getState());
641
- console.log(` User: ${engine.getContext().currentUser ?? "(none)"}`);
614
+ console.log(` User: ${engine.getContext().currentUser ?? '(none)'}`);
642
615
  console.log(` Session Cleared: ${engine.getContext().sessionStartTime === null}`);
643
616
  console.log();
644
617
 
645
618
  await actorManager.stopAll();
646
619
 
647
- console.log("=".repeat(70));
648
- console.log("DEMO COMPLETE");
649
- console.log("=".repeat(70));
620
+ console.log('='.repeat(70));
621
+ console.log('DEMO COMPLETE');
622
+ console.log('='.repeat(70));
650
623
  }
651
624
 
652
625
  // Run demo if executed directly