@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
@@ -5,6 +5,7 @@ Praxis provides built-in support for orchestrating distributed systems using Des
5
5
  ## Overview
6
6
 
7
7
  Praxis orchestration enables:
8
+
8
9
  - **Multi-Node Coordination**: Manage distributed application instances
9
10
  - **State Synchronization**: Keep distributed state consistent
10
11
  - **Health Monitoring**: Automatic health checks and recovery
@@ -17,6 +18,7 @@ Praxis orchestration enables:
17
18
  ### Desired State Configuration (DSC)
18
19
 
19
20
  DSC defines the desired state of your distributed system:
21
+
20
22
  - Node configurations
21
23
  - Service dependencies
22
24
  - Resource allocation
@@ -26,6 +28,7 @@ DSC defines the desired state of your distributed system:
26
28
  ### Model Context Protocol (MCP)
27
29
 
28
30
  MCP enables:
31
+
29
32
  - Inter-node communication
30
33
  - State distribution
31
34
  - Event propagation
@@ -40,7 +43,7 @@ In your schema:
40
43
  ```typescript
41
44
  export const appSchema: PraxisSchema = {
42
45
  // ... other schema config
43
-
46
+
44
47
  orchestration: {
45
48
  type: 'dsc',
46
49
  nodes: [
@@ -89,6 +92,7 @@ praxis orchestrate --config src/schemas/app.schema.ts
89
92
  ### Primary Node
90
93
 
91
94
  Main coordinator node:
95
+
92
96
  - Accepts write operations
93
97
  - Coordinates state distribution
94
98
  - Manages replica health
@@ -97,6 +101,7 @@ Main coordinator node:
97
101
  ### Replica Node
98
102
 
99
103
  Read-replica node:
104
+
100
105
  - Receives state updates from primary
101
106
  - Serves read operations
102
107
  - Can become primary on failover
@@ -105,6 +110,7 @@ Read-replica node:
105
110
  ### Worker Node
106
111
 
107
112
  Processing node:
113
+
108
114
  - Executes background jobs
109
115
  - Processes queued tasks
110
116
  - Reports status to primary
@@ -113,6 +119,7 @@ Processing node:
113
119
  ### Gateway Node
114
120
 
115
121
  Entry point node:
122
+
116
123
  - Load balancing
117
124
  - Request routing
118
125
  - Authentication
@@ -139,7 +146,7 @@ export const dscConfig: OrchestrationConfig = {
139
146
  gateway: 1,
140
147
  },
141
148
  },
142
-
149
+
143
150
  // Node configuration
144
151
  nodeDefaults: {
145
152
  memory: '512MB',
@@ -147,7 +154,7 @@ export const dscConfig: OrchestrationConfig = {
147
154
  disk: '10GB',
148
155
  network: 'private',
149
156
  },
150
-
157
+
151
158
  // State sync configuration
152
159
  sync: {
153
160
  protocol: 'websocket',
@@ -160,7 +167,7 @@ export const dscConfig: OrchestrationConfig = {
160
167
  customResolver: './resolvers/custom.ts',
161
168
  },
162
169
  },
163
-
170
+
164
171
  // Health monitoring
165
172
  health: {
166
173
  checkInterval: 30000,
@@ -176,7 +183,7 @@ export const dscConfig: OrchestrationConfig = {
176
183
  slack: 'https://hooks.slack.com/...',
177
184
  },
178
185
  },
179
-
186
+
180
187
  // Auto-scaling
181
188
  scaling: {
182
189
  enabled: true,
@@ -200,7 +207,7 @@ export const dscConfig: OrchestrationConfig = {
200
207
  maxNodes: 10,
201
208
  },
202
209
  },
203
-
210
+
204
211
  // Service discovery
205
212
  discovery: {
206
213
  enabled: true,
@@ -208,7 +215,7 @@ export const dscConfig: OrchestrationConfig = {
208
215
  ttl: 60000,
209
216
  tags: ['praxis', 'production'],
210
217
  },
211
-
218
+
212
219
  // Load balancing
213
220
  loadBalancing: {
214
221
  strategy: 'round-robin', // 'round-robin' | 'least-conn' | 'ip-hash'
@@ -223,16 +230,19 @@ export const dscConfig: OrchestrationConfig = {
223
230
  ### Sync Strategies
224
231
 
225
232
  **Last-Write-Wins**:
233
+
226
234
  ```typescript
227
- conflictResolution: 'last-write-wins'
235
+ conflictResolution: 'last-write-wins';
228
236
  ```
229
237
 
230
238
  **Merge Strategy**:
239
+
231
240
  ```typescript
232
- conflictResolution: 'merge'
241
+ conflictResolution: 'merge';
233
242
  ```
234
243
 
235
244
  **Custom Resolver**:
245
+
236
246
  ```typescript
237
247
  conflictResolution: {
238
248
  strategy: 'custom',
@@ -286,18 +296,18 @@ export const healthChecks = {
286
296
  // Check if node is alive
287
297
  return { status: 'ok' };
288
298
  },
289
-
299
+
290
300
  readiness: async () => {
291
301
  // Check if node is ready to serve requests
292
302
  const dbReady = await checkDatabase();
293
303
  const cacheReady = await checkCache();
294
-
304
+
295
305
  return {
296
306
  status: dbReady && cacheReady ? 'ok' : 'not-ready',
297
307
  details: { database: dbReady, cache: cacheReady },
298
308
  };
299
309
  },
300
-
310
+
301
311
  metrics: async () => {
302
312
  // Return metrics
303
313
  return {
@@ -312,6 +322,7 @@ export const healthChecks = {
312
322
  ### Failure Detection
313
323
 
314
324
  Automatic failure detection:
325
+
315
326
  - Heartbeat monitoring
316
327
  - Health check failures
317
328
  - Network partition detection
@@ -320,6 +331,7 @@ Automatic failure detection:
320
331
  ### Recovery Actions
321
332
 
322
333
  Configured recovery actions:
334
+
323
335
  - **Restart**: Restart failed node
324
336
  - **Failover**: Promote replica to primary
325
337
  - **Scale**: Add new nodes
@@ -419,9 +431,7 @@ Events propagate across nodes:
419
431
 
420
432
  ```typescript
421
433
  // Define distributed event
422
- const UserLoginEvent = defineEvent<'USER_LOGIN', { userId: string }>(
423
- 'USER_LOGIN'
424
- );
434
+ const UserLoginEvent = defineEvent<'USER_LOGIN', { userId: string }>('USER_LOGIN');
425
435
 
426
436
  // Dispatch on any node
427
437
  engine.step([UserLoginEvent.create({ userId: 'user123' })]);
@@ -495,23 +505,23 @@ spec:
495
505
  app: praxis-app
496
506
  spec:
497
507
  containers:
498
- - name: praxis
499
- image: my-praxis-app:latest
500
- ports:
501
- - containerPort: 8080
502
- env:
503
- - name: NODE_TYPE
504
- value: "replica"
505
- - name: PRIMARY_HOST
506
- value: "praxis-primary"
507
- livenessProbe:
508
- httpGet:
509
- path: /health/live
510
- port: 8080
511
- readinessProbe:
512
- httpGet:
513
- path: /health/ready
514
- port: 8080
508
+ - name: praxis
509
+ image: my-praxis-app:latest
510
+ ports:
511
+ - containerPort: 8080
512
+ env:
513
+ - name: NODE_TYPE
514
+ value: 'replica'
515
+ - name: PRIMARY_HOST
516
+ value: 'praxis-primary'
517
+ livenessProbe:
518
+ httpGet:
519
+ path: /health/live
520
+ port: 8080
521
+ readinessProbe:
522
+ httpGet:
523
+ path: /health/ready
524
+ port: 8080
515
525
  ```
516
526
 
517
527
  ## Monitoring & Observability
@@ -519,6 +529,7 @@ spec:
519
529
  ### Metrics
520
530
 
521
531
  Collect cluster metrics:
532
+
522
533
  - Request rate per node
523
534
  - State sync latency
524
535
  - Health check status
@@ -563,6 +574,7 @@ orchestration: {
563
574
  ### Split Brain
564
575
 
565
576
  Detect and resolve split brain:
577
+
566
578
  ```bash
567
579
  praxis orchestrate diagnose split-brain
568
580
  praxis orchestrate resolve split-brain --strategy quorum
@@ -571,6 +583,7 @@ praxis orchestrate resolve split-brain --strategy quorum
571
583
  ### Network Partition
572
584
 
573
585
  Handle network partitions:
586
+
574
587
  ```typescript
575
588
  sync: {
576
589
  partitionTolerance: {
@@ -583,6 +596,7 @@ sync: {
583
596
  ### State Divergence
584
597
 
585
598
  Reconcile diverged state:
599
+
586
600
  ```bash
587
601
  praxis orchestrate reconcile --force
588
602
  ```
@@ -85,7 +85,7 @@ console.log('Cart:', cartEngine.getContext());
85
85
  console.log('Notifications:', notificationEngine.getContext());
86
86
 
87
87
  // Events are processed independently
88
- authEngine.step([Login.create({})]); // Only affects auth
88
+ authEngine.step([Login.create({})]); // Only affects auth
89
89
  cartEngine.step([Checkout.create({})]); // Only affects cart
90
90
  notificationEngine.step([Clear.create({})]); // Only affects notifications
91
91
  ```
@@ -133,15 +133,13 @@ class AppCoordinator {
133
133
  // When user logs out, clear cart
134
134
  if (results.auth.state.facts.some((f: any) => f.tag === 'UserLoggedOut')) {
135
135
  this.cartEngine.step([ClearCart.create({})]);
136
- this.notificationEngine.step([
137
- ShowNotification.create({ message: 'Cart cleared' })
138
- ]);
136
+ this.notificationEngine.step([ShowNotification.create({ message: 'Cart cleared' })]);
139
137
  }
140
138
 
141
139
  // When order is placed, show notification
142
140
  if (results.cart.state.facts.some((f: any) => f.tag === 'OrderPlaced')) {
143
141
  this.notificationEngine.step([
144
- ShowNotification.create({ message: 'Order placed successfully!' })
142
+ ShowNotification.create({ message: 'Order placed successfully!' }),
145
143
  ]);
146
144
  }
147
145
 
@@ -150,7 +148,7 @@ class AppCoordinator {
150
148
  const authContext = this.authEngine.getContext();
151
149
  if (!authContext.user) {
152
150
  this.notificationEngine.step([
153
- ShowNotification.create({ message: 'Please login to continue' })
151
+ ShowNotification.create({ message: 'Please login to continue' }),
154
152
  ]);
155
153
  }
156
154
  }
@@ -169,11 +167,7 @@ class AppCoordinator {
169
167
  }
170
168
 
171
169
  // Usage
172
- const coordinator = new AppCoordinator(
173
- authEngine,
174
- cartEngine,
175
- notificationEngine
176
- );
170
+ const coordinator = new AppCoordinator(authEngine, cartEngine, notificationEngine);
177
171
 
178
172
  coordinator.dispatch({
179
173
  auth: [Login.create({ username: 'alice' })],
@@ -210,7 +204,7 @@ class EventBus {
210
204
  publish(event: PraxisEvent) {
211
205
  const handlers = this.handlers.get(event.tag);
212
206
  if (handlers) {
213
- handlers.forEach(handler => handler(event));
207
+ handlers.forEach((handler) => handler(event));
214
208
  }
215
209
  }
216
210
  }
@@ -221,39 +215,33 @@ const eventBus = new EventBus();
221
215
  // Connect engines to event bus
222
216
  eventBus.subscribe('USER_LOGGED_OUT', () => {
223
217
  cartEngine.step([ClearCart.create({})]);
224
- notificationEngine.step([
225
- ShowNotification.create({ message: 'Cart cleared' })
226
- ]);
218
+ notificationEngine.step([ShowNotification.create({ message: 'Cart cleared' })]);
227
219
  });
228
220
 
229
221
  eventBus.subscribe('ORDER_PLACED', (event) => {
230
- notificationEngine.step([
231
- ShowNotification.create({ message: 'Order placed!' })
232
- ]);
222
+ notificationEngine.step([ShowNotification.create({ message: 'Order placed!' })]);
233
223
  });
234
224
 
235
225
  eventBus.subscribe('CART_ITEM_ADDED', (event) => {
236
226
  const authContext = authEngine.getContext();
237
227
  if (!authContext.user) {
238
- notificationEngine.step([
239
- ShowNotification.create({ message: 'Login to save your cart' })
240
- ]);
228
+ notificationEngine.step([ShowNotification.create({ message: 'Login to save your cart' })]);
241
229
  }
242
230
  });
243
231
 
244
232
  // Dispatch events through bus
245
233
  function dispatchWithBroadcast(engine: LogicEngine<any>, events: PraxisEvent[]) {
246
234
  const result = engine.step(events);
247
-
235
+
248
236
  // Broadcast facts as events
249
- result.state.facts.forEach(fact => {
237
+ result.state.facts.forEach((fact) => {
250
238
  eventBus.publish({
251
239
  tag: fact.tag,
252
240
  payload: fact.payload,
253
241
  timestamp: Date.now(),
254
242
  });
255
243
  });
256
-
244
+
257
245
  return result;
258
246
  }
259
247
  ```
@@ -278,7 +266,7 @@ class HierarchicalEngine {
278
266
 
279
267
  addChild<T>(id: string, engine: LogicEngine<T>) {
280
268
  this.childEngines.set(id, engine);
281
-
269
+
282
270
  // Update parent context
283
271
  const parentContext = this.parentEngine.getContext();
284
272
  parentContext.children.set(id, engine.getContext());
@@ -286,7 +274,7 @@ class HierarchicalEngine {
286
274
 
287
275
  removeChild(id: string) {
288
276
  this.childEngines.delete(id);
289
-
277
+
290
278
  const parentContext = this.parentEngine.getContext();
291
279
  parentContext.children.delete(id);
292
280
  }
@@ -379,14 +367,14 @@ class SharedStateManager {
379
367
  subscribe(callback: (state: SharedState) => void) {
380
368
  this.subscribers.add(callback);
381
369
  callback(this.state);
382
-
370
+
383
371
  return () => {
384
372
  this.subscribers.delete(callback);
385
373
  };
386
374
  }
387
375
 
388
376
  private notify() {
389
- this.subscribers.forEach(sub => sub(this.state));
377
+ this.subscribers.forEach((sub) => sub(this.state));
390
378
  }
391
379
  }
392
380
 
@@ -403,9 +391,7 @@ sharedState.subscribe((state) => {
403
391
 
404
392
  sharedState.subscribe((state) => {
405
393
  // Update notification badge
406
- notificationEngine.step([
407
- UpdateBadge.create({ count: state.unreadCount })
408
- ]);
394
+ notificationEngine.step([UpdateBadge.create({ count: state.unreadCount })]);
409
395
  });
410
396
 
411
397
  // Engines update shared state
@@ -425,10 +411,10 @@ Using parallel engines with Svelte 5:
425
411
  ```svelte
426
412
  <script lang="ts">
427
413
  import { usePraxisEngine } from '@plures/praxis/svelte';
428
- import {
429
- createAuthEngine,
430
- createCartEngine,
431
- createNotificationEngine
414
+ import {
415
+ createAuthEngine,
416
+ createCartEngine,
417
+ createNotificationEngine
432
418
  } from './engines';
433
419
 
434
420
  // Create independent engines
@@ -443,14 +429,14 @@ Using parallel engines with Svelte 5:
443
429
 
444
430
  // Cross-engine reactions
445
431
  $: if (auth.context.user) {
446
- cart.dispatch([LoadUserCart.create({
447
- userId: auth.context.user.id
432
+ cart.dispatch([LoadUserCart.create({
433
+ userId: auth.context.user.id
448
434
  })]);
449
435
  }
450
436
 
451
437
  $: if (cart.context.items.length > 0 && !auth.context.user) {
452
- notifications.dispatch([ShowNotification.create({
453
- message: 'Please login to continue'
438
+ notifications.dispatch([ShowNotification.create({
439
+ message: 'Please login to continue'
454
440
  })]);
455
441
  }
456
442
  </script>
@@ -498,10 +484,10 @@ Using parallel engines with Svelte 5:
498
484
  <script lang="ts">
499
485
  import { usePraxisEngine } from '@plures/praxis/svelte';
500
486
  import { AppCoordinator } from './coordinator';
501
- import {
502
- createAuthEngine,
503
- createCartEngine,
504
- createNotificationEngine
487
+ import {
488
+ createAuthEngine,
489
+ createCartEngine,
490
+ createNotificationEngine
505
491
  } from './engines';
506
492
 
507
493
  // Create coordinator
@@ -566,26 +552,20 @@ function setupCoordination() {
566
552
  // When user logs in, load their cart
567
553
  authEngine.subscribe((state) => {
568
554
  if (state.context.user) {
569
- cartEngine.step([
570
- LoadCart.create({ userId: state.context.user.id })
571
- ]);
555
+ cartEngine.step([LoadCart.create({ userId: state.context.user.id })]);
572
556
  }
573
557
  });
574
558
 
575
559
  // When cart updates, update checkout
576
560
  cartEngine.subscribe((state) => {
577
- checkoutEngine.step([
578
- UpdateTotal.create({ total: state.context.total })
579
- ]);
561
+ checkoutEngine.step([UpdateTotal.create({ total: state.context.total })]);
580
562
  });
581
563
 
582
564
  // When checkout completes, clear cart and show notification
583
565
  checkoutEngine.subscribe((state) => {
584
- if (state.facts.some(f => f.tag === 'OrderPlaced')) {
566
+ if (state.facts.some((f) => f.tag === 'OrderPlaced')) {
585
567
  cartEngine.step([ClearCart.create({})]);
586
- notificationEngine.step([
587
- ShowNotification.create({ message: 'Order placed!' })
588
- ]);
568
+ notificationEngine.step([ShowNotification.create({ message: 'Order placed!' })]);
589
569
  }
590
570
  });
591
571
  }
@@ -609,7 +589,7 @@ function updatePanel(panelId: keyof typeof panels, events: PraxisEvent[]) {
609
589
 
610
590
  // Shared coordination for common actions
611
591
  function refreshAll() {
612
- Object.values(panels).forEach(panel => {
592
+ Object.values(panels).forEach((panel) => {
613
593
  panel.step([Refresh.create({})]);
614
594
  });
615
595
  }
@@ -619,7 +599,7 @@ function exportAll() {
619
599
  panel: id,
620
600
  data: panel.getContext(),
621
601
  }));
622
-
602
+
623
603
  downloadJSON(data, 'dashboard-export.json');
624
604
  }
625
605
  ```
@@ -641,7 +621,7 @@ function gameTick(deltaTime: number) {
641
621
  game.player.step([Tick.create({ deltaTime })]);
642
622
  game.inventory.step([Tick.create({ deltaTime })]);
643
623
  game.world.step([Tick.create({ deltaTime })]);
644
-
624
+
645
625
  // Sync states
646
626
  const playerPos = game.player.getContext().position;
647
627
  game.world.step([UpdatePlayerPosition.create({ position: playerPos })]);
@@ -655,13 +635,15 @@ function handlePlayerAction(action: string) {
655
635
  game.player.step([UseItem.create({ item })]);
656
636
  game.inventory.step([RemoveItem.create({ item })]);
657
637
  break;
658
-
638
+
659
639
  case 'SEND_MESSAGE':
660
640
  const player = game.player.getContext();
661
- game.chat.step([SendMessage.create({
662
- player: player.name,
663
- message: player.currentMessage
664
- })]);
641
+ game.chat.step([
642
+ SendMessage.create({
643
+ player: player.name,
644
+ message: player.currentMessage,
645
+ }),
646
+ ]);
665
647
  break;
666
648
  }
667
649
  }
@@ -673,9 +655,9 @@ function handlePlayerAction(action: string) {
673
655
 
674
656
  ```typescript
675
657
  // ✅ Good: Clear separation of concerns
676
- const userEngine = createUserEngine(); // User state only
658
+ const userEngine = createUserEngine(); // User state only
677
659
  const ordersEngine = createOrdersEngine(); // Orders only
678
- const cartEngine = createCartEngine(); // Cart only
660
+ const cartEngine = createCartEngine(); // Cart only
679
661
 
680
662
  // ❌ Bad: Mixing concerns
681
663
  const everythingEngine = createEverythingEngine(); // Too much
@@ -719,11 +701,11 @@ describe('Auth Engine', () => {
719
701
  ```typescript
720
702
  /**
721
703
  * Shopping Cart Engine
722
- *
704
+ *
723
705
  * Dependencies:
724
706
  * - Auth engine: Requires user ID to load cart
725
707
  * - Checkout engine: Sends total for checkout
726
- *
708
+ *
727
709
  * Emits:
728
710
  * - CartUpdated: When items change
729
711
  * - CartCleared: When cart is emptied
@@ -735,13 +717,13 @@ export function createCartEngine() {
735
717
 
736
718
  ## Comparison with XState
737
719
 
738
- | Feature | XState | Praxis |
739
- |---------|--------|--------|
740
- | **Parallel States** | `type: 'parallel'` | Multiple engines |
741
- | **Coordination** | Parent state machine | Coordinator pattern |
742
- | **Communication** | Event forwarding | Event bus or shared state |
743
- | **Hierarchy** | Nested states | Parent-child engines |
744
- | **Testing** | Test parent machine | Test each engine independently |
720
+ | Feature | XState | Praxis |
721
+ | ------------------- | -------------------- | ------------------------------ |
722
+ | **Parallel States** | `type: 'parallel'` | Multiple engines |
723
+ | **Coordination** | Parent state machine | Coordinator pattern |
724
+ | **Communication** | Event forwarding | Event bus or shared state |
725
+ | **Hierarchy** | Nested states | Parent-child engines |
726
+ | **Testing** | Test parent machine | Test each engine independently |
745
727
 
746
728
  ## Summary
747
729
 
@@ -755,6 +737,7 @@ The parallel state pattern in Praxis provides:
755
737
  - ✅ **Scalable**: Add or remove engines as needed
756
738
 
757
739
  Choose the right pattern based on your needs:
740
+
758
741
  - **Independent engines**: When subsystems don't interact
759
742
  - **Event bus**: When you need loose coupling with pub/sub
760
743
  - **Coordinator**: When you need centralized orchestration
@@ -762,6 +745,7 @@ Choose the right pattern based on your needs:
762
745
  - **Hierarchy**: When you have parent-child relationships
763
746
 
764
747
  For more examples, see:
748
+
765
749
  - [E-Commerce Example](/src/examples/hero-ecommerce/)
766
750
  - [Auth Example](/src/examples/auth-basic/)
767
751
  - [Multiple Engine Tests](/src/__tests__/edge-cases.test.ts)