@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
  * Praxis Schema System
3
- *
3
+ *
4
4
  * Declarative schema definitions for generating models, components, logic, and documentation.
5
5
  */
6
6
 
@@ -494,7 +494,7 @@ export function validateSchema(schema: PraxisSchema): ValidationResult {
494
494
  message: 'Node type is required',
495
495
  });
496
496
  }
497
-
497
+
498
498
  // Validate terminal node specific props
499
499
  if (node.type === 'terminal' && node.props) {
500
500
  const props = node.props as Partial<TerminalNodeProps>;
@@ -527,18 +527,54 @@ function isValidIdentifier(str: string): boolean {
527
527
  // JavaScript identifier must start with letter, $, or _
528
528
  // and can contain letters, digits, $, or _
529
529
  const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
530
-
530
+
531
531
  // Also check that it's not a reserved keyword
532
532
  const reservedKeywords = [
533
- 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger',
534
- 'default', 'delete', 'do', 'else', 'export', 'extends', 'finally',
535
- 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new',
536
- 'return', 'super', 'switch', 'this', 'throw', 'try', 'typeof',
537
- 'var', 'void', 'while', 'with', 'yield', 'let', 'static',
538
- 'enum', 'await', 'implements', 'interface', 'package', 'private',
539
- 'protected', 'public',
533
+ 'break',
534
+ 'case',
535
+ 'catch',
536
+ 'class',
537
+ 'const',
538
+ 'continue',
539
+ 'debugger',
540
+ 'default',
541
+ 'delete',
542
+ 'do',
543
+ 'else',
544
+ 'export',
545
+ 'extends',
546
+ 'finally',
547
+ 'for',
548
+ 'function',
549
+ 'if',
550
+ 'import',
551
+ 'in',
552
+ 'instanceof',
553
+ 'new',
554
+ 'return',
555
+ 'super',
556
+ 'switch',
557
+ 'this',
558
+ 'throw',
559
+ 'try',
560
+ 'typeof',
561
+ 'var',
562
+ 'void',
563
+ 'while',
564
+ 'with',
565
+ 'yield',
566
+ 'let',
567
+ 'static',
568
+ 'enum',
569
+ 'await',
570
+ 'implements',
571
+ 'interface',
572
+ 'package',
573
+ 'private',
574
+ 'protected',
575
+ 'public',
540
576
  ];
541
-
577
+
542
578
  return identifierRegex.test(str) && !reservedKeywords.includes(str);
543
579
  }
544
580
 
package/src/dsl/index.ts CHANGED
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * DSL Helpers
3
- *
3
+ *
4
4
  * Ergonomic TypeScript helpers for defining facts, events, rules, constraints, and flows.
5
5
  * These produce both strongly-typed APIs and serializable descriptors.
6
6
  */
7
7
 
8
- import type { PraxisEvent, PraxisFact } from "../core/protocol.js";
8
+ import type { PraxisEvent, PraxisFact } from '../core/protocol.js';
9
9
  import type {
10
10
  RuleDescriptor,
11
11
  ConstraintDescriptor,
12
12
  PraxisModule,
13
13
  RuleFn,
14
14
  ConstraintFn,
15
- } from "../core/rules.js";
15
+ } from '../core/rules.js';
16
16
 
17
17
  /**
18
18
  * Strongly typed fact definition
@@ -25,7 +25,7 @@ export interface FactDefinition<TTag extends string, TPayload> {
25
25
 
26
26
  /**
27
27
  * Define a typed fact
28
- *
28
+ *
29
29
  * @example
30
30
  * const UserLoggedIn = defineFact<"UserLoggedIn", { userId: string }>("UserLoggedIn");
31
31
  * const fact = UserLoggedIn.create({ userId: "123" });
@@ -58,7 +58,7 @@ export interface EventDefinition<TTag extends string, TPayload> {
58
58
 
59
59
  /**
60
60
  * Define a typed event
61
- *
61
+ *
62
62
  * @example
63
63
  * const Login = defineEvent<"LOGIN", { username: string; password: string }>("LOGIN");
64
64
  * const event = Login.create({ username: "alice", password: "secret" });
@@ -89,7 +89,7 @@ export interface DefineRuleOptions<TContext = unknown> {
89
89
 
90
90
  /**
91
91
  * Define a rule
92
- *
92
+ *
93
93
  * @example
94
94
  * const loginRule = defineRule({
95
95
  * id: "auth.login",
@@ -126,7 +126,7 @@ export interface DefineConstraintOptions<TContext = unknown> {
126
126
 
127
127
  /**
128
128
  * Define a constraint
129
- *
129
+ *
130
130
  * @example
131
131
  * const maxCartItems = defineConstraint({
132
132
  * id: "cart.maxItems",
@@ -159,7 +159,7 @@ export interface DefineModuleOptions<TContext = unknown> {
159
159
 
160
160
  /**
161
161
  * Define a module (bundle of rules and constraints)
162
- *
162
+ *
163
163
  * @example
164
164
  * const authModule = defineModule({
165
165
  * rules: [loginRule, logoutRule],
package/src/dsl.ts CHANGED
@@ -9,26 +9,23 @@ import type { PraxisState, PraxisEvent, Effect } from './types.js';
9
9
  /**
10
10
  * A condition function that checks if a rule should fire.
11
11
  */
12
- export type Condition<
13
- S extends PraxisState = PraxisState,
14
- E extends PraxisEvent = PraxisEvent
15
- > = (state: S, event: E) => boolean;
12
+ export type Condition<S extends PraxisState = PraxisState, E extends PraxisEvent = PraxisEvent> = (
13
+ state: S,
14
+ event: E
15
+ ) => boolean;
16
16
 
17
17
  /**
18
18
  * An action function that produces effects when a rule fires.
19
19
  */
20
- export type Action<
21
- S extends PraxisState = PraxisState,
22
- E extends PraxisEvent = PraxisEvent
23
- > = (state: S, event: E) => Effect[];
20
+ export type Action<S extends PraxisState = PraxisState, E extends PraxisEvent = PraxisEvent> = (
21
+ state: S,
22
+ event: E
23
+ ) => Effect[];
24
24
 
25
25
  /**
26
26
  * A rule that fires when its condition is met.
27
27
  */
28
- export interface Rule<
29
- S extends PraxisState = PraxisState,
30
- E extends PraxisEvent = PraxisEvent
31
- > {
28
+ export interface Rule<S extends PraxisState = PraxisState, E extends PraxisEvent = PraxisEvent> {
32
29
  /** Unique identifier for the rule */
33
30
  id: string;
34
31
  /** Human-readable description of what the rule does */
@@ -69,10 +66,7 @@ export interface ConstraintViolation {
69
66
  /**
70
67
  * DSL builder for creating rules with a fluent interface.
71
68
  */
72
- export class RuleBuilder<
73
- S extends PraxisState = PraxisState,
74
- E extends PraxisEvent = PraxisEvent
75
- > {
69
+ export class RuleBuilder<S extends PraxisState = PraxisState, E extends PraxisEvent = PraxisEvent> {
76
70
  private rule: Partial<Rule<S, E>> = {};
77
71
 
78
72
  /**
@@ -201,7 +195,7 @@ export class ConstraintBuilder<S extends PraxisState = PraxisState> {
201
195
  */
202
196
  export function rule<
203
197
  S extends PraxisState = PraxisState,
204
- E extends PraxisEvent = PraxisEvent
198
+ E extends PraxisEvent = PraxisEvent,
205
199
  >(): RuleBuilder<S, E> {
206
200
  return new RuleBuilder<S, E>();
207
201
  }
@@ -5,6 +5,7 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
5
5
  ## Features
6
6
 
7
7
  ### Core Functionality
8
+
8
9
  - ✅ Add, complete, and remove todos
9
10
  - ✅ Filter by all, active, or completed
10
11
  - ✅ Complete all todos at once
@@ -12,6 +13,7 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
12
13
  - ✅ Real-time statistics
13
14
 
14
15
  ### Advanced Features
16
+
15
17
  - 🔄 **Undo/Redo**: Full history tracking with keyboard shortcuts
16
18
  - 🕰️ **Time-Travel Debugging**: Navigate through state snapshots
17
19
  - ⚡ **Svelte 5 Runes**: Modern reactive API
@@ -21,12 +23,14 @@ A comprehensive example demonstrating Praxis's Svelte 5 integration with history
21
23
  ## Architecture
22
24
 
23
25
  ### State Management
26
+
24
27
  - **Engine**: Praxis logic engine managing todo state
25
28
  - **Rules**: Pure functions handling events
26
29
  - **Facts**: Immutable history of what happened
27
30
  - **Context**: Current application state
28
31
 
29
32
  ### Svelte Integration
33
+
30
34
  - **usePraxisEngine**: Main composable with history support
31
35
  - **Reactive Derivations**: Computed values with `$:` syntax
32
36
  - **Event Dispatching**: Type-safe event handling
@@ -71,7 +75,7 @@ export function createTodoEngine() {
71
75
  const registry = new PraxisRegistry<TodoContext>();
72
76
  registry.registerRule(addTodoRule);
73
77
  // ... register more rules
74
-
78
+
75
79
  return createPraxisEngine({
76
80
  initialContext: { todos: [], filter: 'all', nextId: 1 },
77
81
  registry,
@@ -127,6 +131,7 @@ node dist/examples/advanced-todo/index.js
127
131
  ```
128
132
 
129
133
  Output:
134
+
130
135
  ```
131
136
  === Advanced Todo Example ===
132
137
 
@@ -157,11 +162,13 @@ Output:
157
162
  To use the Svelte component in your app:
158
163
 
159
164
  1. Install dependencies:
165
+
160
166
  ```bash
161
167
  npm install @plures/praxis svelte@^5.0.0
162
168
  ```
163
169
 
164
170
  2. Import and use the component:
171
+
165
172
  ```svelte
166
173
  <script>
167
174
  import TodoApp from '@plures/praxis/examples/advanced-todo/App.svelte';
@@ -179,7 +186,7 @@ Or create your own component using the engine:
179
186
 
180
187
  const engine = createTodoEngine();
181
188
  const { context, dispatch } = usePraxisEngine(engine);
182
-
189
+
183
190
  let text = '';
184
191
  </script>
185
192
 
@@ -226,9 +233,15 @@ const addTodoRule = defineRule({
226
233
  // - Testable
227
234
  const event = findEvent(events, AddTodo);
228
235
  if (!event) return [];
229
-
230
- state.context.todos.push({ /* ... */ });
231
- return [TodoAdded.create({ /* ... */ })];
236
+
237
+ state.context.todos.push({
238
+ /* ... */
239
+ });
240
+ return [
241
+ TodoAdded.create({
242
+ /* ... */
243
+ }),
244
+ ];
232
245
  },
233
246
  });
234
247
  ```
@@ -240,8 +253,8 @@ const addTodoRule = defineRule({
240
253
  const facts = engine.getFacts();
241
254
 
242
255
  // Find specific facts
243
- const added = facts.filter(f => f.tag === 'TodoAdded');
244
- const toggled = facts.filter(f => f.tag === 'TodoToggled');
256
+ const added = facts.filter((f) => f.tag === 'TodoAdded');
257
+ const toggled = facts.filter((f) => f.tag === 'TodoToggled');
245
258
 
246
259
  // Facts enable:
247
260
  // - Audit trails
@@ -270,10 +283,10 @@ const { undo, redo, snapshots, goToSnapshot } = usePraxisEngine(engine, {
270
283
  });
271
284
 
272
285
  // Navigate history
273
- undo(); // Go back
274
- redo(); // Go forward
275
- goToSnapshot(5); // Jump to specific snapshot
276
- console.log(snapshots); // View all snapshots
286
+ undo(); // Go back
287
+ redo(); // Go forward
288
+ goToSnapshot(5); // Jump to specific snapshot
289
+ console.log(snapshots); // View all snapshots
277
290
  ```
278
291
 
279
292
  ## Testing
@@ -287,7 +300,7 @@ describe('Todo Engine', () => {
287
300
  it('should add todos', () => {
288
301
  const engine = createTodoEngine();
289
302
  engine.step([AddTodo.create({ text: 'Test todo' })]);
290
-
303
+
291
304
  const context = engine.getContext();
292
305
  expect(context.todos.length).toBe(1);
293
306
  expect(context.todos[0].text).toBe('Test todo');
@@ -296,10 +309,10 @@ describe('Todo Engine', () => {
296
309
  it('should toggle todos', () => {
297
310
  const engine = createTodoEngine();
298
311
  engine.step([AddTodo.create({ text: 'Test' })]);
299
-
312
+
300
313
  const context = engine.getContext();
301
314
  const todoId = context.todos[0].id;
302
-
315
+
303
316
  engine.step([ToggleTodo.create({ id: todoId })]);
304
317
  expect(engine.getContext().todos[0].completed).toBe(true);
305
318
  });
@@ -309,55 +322,60 @@ describe('Todo Engine', () => {
309
322
  ## Performance Tips
310
323
 
311
324
  1. **Batch Events**: Dispatch multiple events at once
325
+
312
326
  ```typescript
313
- dispatch([
314
- AddTodo.create({ text: 'Todo 1' }),
315
- AddTodo.create({ text: 'Todo 2' }),
316
- AddTodo.create({ text: 'Todo 3' }),
317
- ], 'Batch Add');
327
+ dispatch(
328
+ [
329
+ AddTodo.create({ text: 'Todo 1' }),
330
+ AddTodo.create({ text: 'Todo 2' }),
331
+ AddTodo.create({ text: 'Todo 3' }),
332
+ ],
333
+ 'Batch Add'
334
+ );
318
335
  ```
319
336
 
320
337
  2. **Limit History**: Adjust history size based on needs
338
+
321
339
  ```typescript
322
340
  usePraxisEngine(engine, { maxHistorySize: 20 });
323
341
  ```
324
342
 
325
343
  3. **Selective Subscriptions**: Use derived stores for specific values
326
344
  ```typescript
327
- const count = createDerivedStore(engine, ctx => ctx.todos.length);
345
+ const count = createDerivedStore(engine, (ctx) => ctx.todos.length);
328
346
  ```
329
347
 
330
348
  ## Comparison with Other Libraries
331
349
 
332
350
  ### vs. Redux + Redux Toolkit
333
351
 
334
- | Feature | Redux + RTK | Praxis |
335
- |---------|-------------|--------|
336
- | State Updates | Reducers | Rules |
337
- | Side Effects | Thunks/Sagas | Actors |
338
- | Time-Travel | DevTools | Built-in |
339
- | TypeScript | Good | Excellent |
340
- | Learning Curve | Medium | Low |
352
+ | Feature | Redux + RTK | Praxis |
353
+ | -------------- | ------------ | --------- |
354
+ | State Updates | Reducers | Rules |
355
+ | Side Effects | Thunks/Sagas | Actors |
356
+ | Time-Travel | DevTools | Built-in |
357
+ | TypeScript | Good | Excellent |
358
+ | Learning Curve | Medium | Low |
341
359
 
342
360
  ### vs. XState
343
361
 
344
- | Feature | XState | Praxis |
345
- |---------|--------|--------|
346
- | State Machines | Native | Engine-based |
362
+ | Feature | XState | Praxis |
363
+ | ------------------ | -------------- | --------------------- |
364
+ | State Machines | Native | Engine-based |
347
365
  | Svelte Integration | @xstate/svelte | @plures/praxis/svelte |
348
- | History States | Built-in | Pattern-based |
349
- | Visual Tools | Stately | State-Docs (planned) |
350
- | Learning Curve | High | Medium |
366
+ | History States | Built-in | Pattern-based |
367
+ | Visual Tools | Stately | State-Docs (planned) |
368
+ | Learning Curve | High | Medium |
351
369
 
352
370
  ### vs. Svelte Stores
353
371
 
354
- | Feature | Svelte Stores | Praxis |
355
- |---------|---------------|--------|
356
- | Simplicity | Very High | High |
357
- | Structure | Manual | Built-in |
358
- | Time-Travel | Manual | Built-in |
359
- | Rules/Logic | Manual | Built-in |
360
- | TypeScript | Good | Excellent |
372
+ | Feature | Svelte Stores | Praxis |
373
+ | ----------- | ------------- | --------- |
374
+ | Simplicity | Very High | High |
375
+ | Structure | Manual | Built-in |
376
+ | Time-Travel | Manual | Built-in |
377
+ | Rules/Logic | Manual | Built-in |
378
+ | TypeScript | Good | Excellent |
361
379
 
362
380
  ## Next Steps
363
381
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Advanced Svelte 5 Integration Example
3
- *
3
+ *
4
4
  * Demonstrates the new Svelte 5 runes support with history state pattern.
5
5
  * This example shows a todo app with undo/redo and time-travel debugging.
6
6
  */
@@ -254,8 +254,8 @@ function runExample() {
254
254
 
255
255
  // Change filter
256
256
  console.log('3. Filtering to active todos:');
257
- engine.step([SetFilter.create({ filter: 'active' })])
258
-
257
+ engine.step([SetFilter.create({ filter: 'active' })]);
258
+
259
259
  const context3 = engine.getContext();
260
260
  const filtered = getFilteredTodos(context3.todos, context3.filter);
261
261
  console.log(` Filter: ${context3.filter}`);
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auth Basic Example
3
- *
3
+ *
4
4
  * Demonstrates basic authentication logic with login/logout using Praxis.
5
5
  * Shows how to define facts, events, rules, and constraints.
6
6
  */
@@ -14,7 +14,7 @@ import {
14
14
  defineConstraint,
15
15
  findEvent,
16
16
  filterFacts,
17
- } from "../../index.js";
17
+ } from '../../index.js';
18
18
 
19
19
  // Define the context type
20
20
  interface AuthContext {
@@ -23,21 +23,21 @@ interface AuthContext {
23
23
  }
24
24
 
25
25
  // Define facts
26
- const UserLoggedIn = defineFact<"UserLoggedIn", { userId: string; timestamp: number }>(
27
- "UserLoggedIn"
26
+ const UserLoggedIn = defineFact<'UserLoggedIn', { userId: string; timestamp: number }>(
27
+ 'UserLoggedIn'
28
28
  );
29
- const UserLoggedOut = defineFact<"UserLoggedOut", { userId: string; timestamp: number }>(
30
- "UserLoggedOut"
29
+ const UserLoggedOut = defineFact<'UserLoggedOut', { userId: string; timestamp: number }>(
30
+ 'UserLoggedOut'
31
31
  );
32
32
 
33
33
  // Define events
34
- const Login = defineEvent<"LOGIN", { username: string; password: string }>("LOGIN");
35
- const Logout = defineEvent<"LOGOUT", {}>("LOGOUT");
34
+ const Login = defineEvent<'LOGIN', { username: string; password: string }>('LOGIN');
35
+ const Logout = defineEvent<'LOGOUT', {}>('LOGOUT');
36
36
 
37
37
  // Define rules
38
38
  const loginRule = defineRule<AuthContext>({
39
- id: "auth.login",
40
- description: "Process login event and create UserLoggedIn fact",
39
+ id: 'auth.login',
40
+ description: 'Process login event and create UserLoggedIn fact',
41
41
  impl: (_state, events) => {
42
42
  const loginEvent = findEvent(events, Login);
43
43
  if (!loginEvent) {
@@ -51,8 +51,8 @@ const loginRule = defineRule<AuthContext>({
51
51
  });
52
52
 
53
53
  const logoutRule = defineRule<AuthContext>({
54
- id: "auth.logout",
55
- description: "Process logout event and create UserLoggedOut fact",
54
+ id: 'auth.logout',
55
+ description: 'Process logout event and create UserLoggedOut fact',
56
56
  impl: (state, events) => {
57
57
  const logoutEvent = findEvent(events, Logout);
58
58
  if (!logoutEvent || !state.context.currentUser) {
@@ -69,8 +69,8 @@ const logoutRule = defineRule<AuthContext>({
69
69
  });
70
70
 
71
71
  const updateContextRule = defineRule<AuthContext>({
72
- id: "auth.updateContext",
73
- description: "Update context based on login/logout facts",
72
+ id: 'auth.updateContext',
73
+ description: 'Update context based on login/logout facts',
74
74
  impl: (state, _events) => {
75
75
  // This rule updates context based on facts (side effect on context)
76
76
  const loginFacts = filterFacts(state.facts, UserLoggedIn);
@@ -95,8 +95,8 @@ const updateContextRule = defineRule<AuthContext>({
95
95
 
96
96
  // Define constraints
97
97
  const singleSessionConstraint = defineConstraint<AuthContext>({
98
- id: "auth.singleSession",
99
- description: "Only one user can be logged in at a time",
98
+ id: 'auth.singleSession',
99
+ description: 'Only one user can be logged in at a time',
100
100
  impl: (state) => {
101
101
  const loginFacts = filterFacts(state.facts, UserLoggedIn);
102
102
  const logoutFacts = filterFacts(state.facts, UserLoggedOut);
@@ -127,31 +127,31 @@ function createAuthEngine() {
127
127
 
128
128
  // Example usage
129
129
  function runExample() {
130
- console.log("=== Auth Basic Example ===\n");
130
+ console.log('=== Auth Basic Example ===\n');
131
131
 
132
132
  const engine = createAuthEngine();
133
133
 
134
134
  // Login
135
- console.log("1. User logs in:");
136
- let result = engine.step([Login.create({ username: "alice", password: "secret123" })]);
137
- console.log(" Context:", engine.getContext());
138
- console.log(" Facts:", result.state.facts);
139
- console.log(" Diagnostics:", result.diagnostics);
135
+ console.log('1. User logs in:');
136
+ let result = engine.step([Login.create({ username: 'alice', password: 'secret123' })]);
137
+ console.log(' Context:', engine.getContext());
138
+ console.log(' Facts:', result.state.facts);
139
+ console.log(' Diagnostics:', result.diagnostics);
140
140
  console.log();
141
141
 
142
142
  // Try to login again (should violate constraint)
143
- console.log("2. Another user tries to log in:");
144
- result = engine.step([Login.create({ username: "bob", password: "secret456" })]);
145
- console.log(" Context:", engine.getContext());
146
- console.log(" Diagnostics:", result.diagnostics);
143
+ console.log('2. Another user tries to log in:');
144
+ result = engine.step([Login.create({ username: 'bob', password: 'secret456' })]);
145
+ console.log(' Context:', engine.getContext());
146
+ console.log(' Diagnostics:', result.diagnostics);
147
147
  console.log();
148
148
 
149
149
  // Logout
150
- console.log("3. User logs out:");
150
+ console.log('3. User logs out:');
151
151
  result = engine.step([Logout.create({})]);
152
- console.log(" Context:", engine.getContext());
153
- console.log(" Facts (last 3):", result.state.facts.slice(-3));
154
- console.log(" Diagnostics:", result.diagnostics);
152
+ console.log(' Context:', engine.getContext());
153
+ console.log(' Facts (last 3):', result.state.facts.slice(-3));
154
+ console.log(' Diagnostics:', result.diagnostics);
155
155
  console.log();
156
156
  }
157
157