@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
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/integrations/svelte.ts
21
+ var svelte_exports = {};
22
+ __export(svelte_exports, {
23
+ HistoryStateManager: () => HistoryStateManager,
24
+ createContextStore: () => createContextStore,
25
+ createDerivedStore: () => createDerivedStore,
26
+ createHistoryEngine: () => createHistoryEngine,
27
+ createPraxisStore: () => createPraxisStore,
28
+ usePraxisContext: () => usePraxisContext,
29
+ usePraxisEngine: () => usePraxisEngine,
30
+ usePraxisSubscription: () => usePraxisSubscription
31
+ });
32
+ module.exports = __toCommonJS(svelte_exports);
33
+ function createPraxisStore(engine) {
34
+ let currentState = engine.getState();
35
+ const subscribers = /* @__PURE__ */ new Set();
36
+ const notify = () => {
37
+ currentState = engine.getState();
38
+ subscribers.forEach((sub) => sub(currentState));
39
+ };
40
+ return {
41
+ subscribe(run) {
42
+ subscribers.add(run);
43
+ run(currentState);
44
+ return () => {
45
+ subscribers.delete(run);
46
+ };
47
+ },
48
+ dispatch(events) {
49
+ engine.step(events);
50
+ notify();
51
+ }
52
+ };
53
+ }
54
+ function createContextStore(engine) {
55
+ let currentContext = engine.getContext();
56
+ const subscribers = /* @__PURE__ */ new Set();
57
+ const notify = () => {
58
+ currentContext = engine.getContext();
59
+ subscribers.forEach((sub) => sub(currentContext));
60
+ };
61
+ return {
62
+ subscribe(run) {
63
+ subscribers.add(run);
64
+ run(currentContext);
65
+ return () => {
66
+ subscribers.delete(run);
67
+ };
68
+ },
69
+ dispatch(events) {
70
+ engine.step(events);
71
+ notify();
72
+ }
73
+ };
74
+ }
75
+ function createDerivedStore(engine, selector) {
76
+ let currentValue = selector(engine.getContext());
77
+ const subscribers = /* @__PURE__ */ new Set();
78
+ const notify = () => {
79
+ const newValue = selector(engine.getContext());
80
+ if (newValue !== currentValue) {
81
+ currentValue = newValue;
82
+ subscribers.forEach((sub) => sub(currentValue));
83
+ }
84
+ };
85
+ return {
86
+ subscribe(run) {
87
+ subscribers.add(run);
88
+ run(currentValue);
89
+ return () => {
90
+ subscribers.delete(run);
91
+ };
92
+ },
93
+ dispatch(events) {
94
+ engine.step(events);
95
+ notify();
96
+ }
97
+ };
98
+ }
99
+ function usePraxisEngine(engine, options = {}) {
100
+ const { enableHistory = false, maxHistorySize = 50 } = options;
101
+ let currentState = engine.getState();
102
+ let snapshots = [];
103
+ let historyIndex = -1;
104
+ if (enableHistory) {
105
+ snapshots.push({
106
+ timestamp: Date.now(),
107
+ state: currentState,
108
+ events: []
109
+ });
110
+ historyIndex = 0;
111
+ }
112
+ const dispatch = (events) => {
113
+ if (enableHistory && historyIndex < snapshots.length - 1) {
114
+ snapshots = snapshots.slice(0, historyIndex + 1);
115
+ }
116
+ engine.step(events);
117
+ currentState = engine.getState();
118
+ if (enableHistory) {
119
+ snapshots.push({
120
+ timestamp: Date.now(),
121
+ state: currentState,
122
+ events
123
+ });
124
+ if (snapshots.length > maxHistorySize) {
125
+ snapshots.shift();
126
+ } else {
127
+ historyIndex++;
128
+ }
129
+ }
130
+ };
131
+ const goToSnapshot = (index) => {
132
+ if (!enableHistory) {
133
+ console.warn("History is not enabled for this engine");
134
+ return;
135
+ }
136
+ if (index < 0 || index >= snapshots.length) {
137
+ console.warn(`Invalid snapshot index: ${index}`);
138
+ return;
139
+ }
140
+ historyIndex = index;
141
+ currentState = snapshots[index].state;
142
+ };
143
+ const undo = () => {
144
+ if (historyIndex > 0) {
145
+ goToSnapshot(historyIndex - 1);
146
+ }
147
+ };
148
+ const redo = () => {
149
+ if (historyIndex < snapshots.length - 1) {
150
+ goToSnapshot(historyIndex + 1);
151
+ }
152
+ };
153
+ return {
154
+ get state() {
155
+ return currentState;
156
+ },
157
+ get context() {
158
+ return currentState.context;
159
+ },
160
+ get facts() {
161
+ return currentState.facts;
162
+ },
163
+ dispatch,
164
+ get snapshots() {
165
+ return snapshots;
166
+ },
167
+ goToSnapshot,
168
+ undo,
169
+ redo,
170
+ get canUndo() {
171
+ return enableHistory && historyIndex > 0;
172
+ },
173
+ get canRedo() {
174
+ return enableHistory && historyIndex < snapshots.length - 1;
175
+ },
176
+ get historyIndex() {
177
+ return historyIndex;
178
+ }
179
+ };
180
+ }
181
+ function usePraxisContext(engine, selector) {
182
+ let currentValue = selector(engine.getContext());
183
+ return currentValue;
184
+ }
185
+ function usePraxisSubscription(engine, callback) {
186
+ const store = createPraxisStore(engine);
187
+ const unsubscribe = store.subscribe(callback);
188
+ return unsubscribe;
189
+ }
190
+ var HistoryStateManager = class {
191
+ history = [];
192
+ currentIndex = -1;
193
+ maxSize;
194
+ idCounter = 0;
195
+ constructor(maxSize = 50) {
196
+ this.maxSize = maxSize;
197
+ }
198
+ /**
199
+ * Record a new history entry
200
+ */
201
+ record(state, events, label) {
202
+ if (this.currentIndex < this.history.length - 1) {
203
+ this.history = this.history.slice(0, this.currentIndex + 1);
204
+ }
205
+ this.history.push({
206
+ id: `history-${++this.idCounter}`,
207
+ timestamp: Date.now(),
208
+ state,
209
+ events,
210
+ label
211
+ });
212
+ if (this.history.length > this.maxSize) {
213
+ this.history.shift();
214
+ } else {
215
+ this.currentIndex++;
216
+ }
217
+ }
218
+ /**
219
+ * Navigate to a specific history entry
220
+ */
221
+ goTo(index) {
222
+ if (index < 0 || index >= this.history.length) {
223
+ return null;
224
+ }
225
+ this.currentIndex = index;
226
+ return this.history[index];
227
+ }
228
+ /**
229
+ * Go back to previous state
230
+ */
231
+ back() {
232
+ if (!this.canGoBack()) {
233
+ return null;
234
+ }
235
+ return this.goTo(this.currentIndex - 1);
236
+ }
237
+ /**
238
+ * Go forward to next state
239
+ */
240
+ forward() {
241
+ if (!this.canGoForward()) {
242
+ return null;
243
+ }
244
+ return this.goTo(this.currentIndex + 1);
245
+ }
246
+ /**
247
+ * Check if can go back
248
+ */
249
+ canGoBack() {
250
+ return this.currentIndex > 0;
251
+ }
252
+ /**
253
+ * Check if can go forward
254
+ */
255
+ canGoForward() {
256
+ return this.currentIndex < this.history.length - 1;
257
+ }
258
+ /**
259
+ * Get current history entry
260
+ */
261
+ current() {
262
+ if (this.currentIndex < 0 || this.currentIndex >= this.history.length) {
263
+ return null;
264
+ }
265
+ return this.history[this.currentIndex];
266
+ }
267
+ /**
268
+ * Get all history entries
269
+ */
270
+ getHistory() {
271
+ return [...this.history];
272
+ }
273
+ /**
274
+ * Get current index in history
275
+ */
276
+ getCurrentIndex() {
277
+ return this.currentIndex;
278
+ }
279
+ /**
280
+ * Clear all history
281
+ */
282
+ clear() {
283
+ this.history = [];
284
+ this.currentIndex = -1;
285
+ }
286
+ };
287
+ function createHistoryEngine(engine, options = {}) {
288
+ const history = new HistoryStateManager(options.maxHistorySize);
289
+ history.record(engine.getState(), [], options.initialLabel || "Initial");
290
+ const dispatch = (events, label) => {
291
+ engine.step(events);
292
+ history.record(engine.getState(), events, label);
293
+ };
294
+ const undo = () => {
295
+ const entry = history.back();
296
+ if (entry) {
297
+ return true;
298
+ }
299
+ return false;
300
+ };
301
+ const redo = () => {
302
+ const entry = history.forward();
303
+ if (entry) {
304
+ return true;
305
+ }
306
+ return false;
307
+ };
308
+ return {
309
+ engine,
310
+ dispatch,
311
+ undo,
312
+ redo,
313
+ canUndo: () => history.canGoBack(),
314
+ canRedo: () => history.canGoForward(),
315
+ getHistory: () => history.getHistory(),
316
+ goToHistory: (index) => history.goTo(index) !== null,
317
+ clearHistory: () => history.clear()
318
+ };
319
+ }
320
+ // Annotate the CommonJS export names for ESM import in node:
321
+ 0 && (module.exports = {
322
+ HistoryStateManager,
323
+ createContextStore,
324
+ createDerivedStore,
325
+ createHistoryEngine,
326
+ createPraxisStore,
327
+ usePraxisContext,
328
+ usePraxisEngine,
329
+ usePraxisSubscription
330
+ });
@@ -0,0 +1,309 @@
1
+ import { L as LogicEngine } from '../engine-CVJobhHm.cjs';
2
+ import { P as PraxisState, a as PraxisEvent } from '../protocol-Qek7ebBl.cjs';
3
+
4
+ /**
5
+ * Svelte v5 Integration
6
+ *
7
+ * Provides reactive bindings for Praxis logic engines in Svelte v5 applications.
8
+ * Supports both traditional stores and modern Svelte 5 runes ($state, $derived, $effect).
9
+ *
10
+ * Features:
11
+ * - Store-based API for backward compatibility
12
+ * - Runes-based composables for Svelte 5
13
+ * - Snapshot support for time-travel debugging
14
+ * - History state pattern implementation
15
+ * - Automatic cleanup and subscription management
16
+ */
17
+
18
+ /**
19
+ * Writable store interface (Svelte-compatible)
20
+ */
21
+ interface Writable<T> {
22
+ subscribe(run: (value: T) => void): () => void;
23
+ set(value: T): void;
24
+ update(updater: (value: T) => T): void;
25
+ }
26
+ /**
27
+ * Readable store interface (Svelte-compatible)
28
+ */
29
+ interface Readable<T> {
30
+ subscribe(run: (value: T) => void): () => void;
31
+ }
32
+ /**
33
+ * Create a reactive Svelte store from a Praxis engine.
34
+ *
35
+ * The store tracks the engine's state and provides methods to dispatch events.
36
+ *
37
+ * @example
38
+ * const engine = createPraxisEngine({ ... });
39
+ * const store = createPraxisStore(engine);
40
+ *
41
+ * // In Svelte component:
42
+ * $: state = $store;
43
+ *
44
+ * // Dispatch events:
45
+ * store.dispatch([Login.create({ username: "alice", password: "secret" })]);
46
+ */
47
+ declare function createPraxisStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<Readonly<PraxisState & {
48
+ context: TContext;
49
+ }>> & {
50
+ dispatch: (events: PraxisEvent[]) => void;
51
+ };
52
+ /**
53
+ * Create a derived store that extracts the context from the engine state.
54
+ *
55
+ * @example
56
+ * const engine = createPraxisEngine({ ... });
57
+ * const contextStore = createContextStore(engine);
58
+ *
59
+ * // In Svelte component:
60
+ * $: context = $contextStore;
61
+ */
62
+ declare function createContextStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<TContext> & {
63
+ dispatch: (events: PraxisEvent[]) => void;
64
+ };
65
+ /**
66
+ * Create a derived store that extracts specific data from the context.
67
+ *
68
+ * @example
69
+ * const engine = createPraxisEngine<{ count: number }>({ ... });
70
+ * const countStore = createDerivedStore(engine, (ctx) => ctx.count);
71
+ *
72
+ * // In Svelte component:
73
+ * $: count = $countStore;
74
+ */
75
+ declare function createDerivedStore<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): Readable<TDerived> & {
76
+ dispatch: (events: PraxisEvent[]) => void;
77
+ };
78
+ /**
79
+ * Snapshot of engine state for time-travel debugging
80
+ */
81
+ interface StateSnapshot<TContext = unknown> {
82
+ timestamp: number;
83
+ state: Readonly<PraxisState & {
84
+ context: TContext;
85
+ }>;
86
+ events: PraxisEvent[];
87
+ }
88
+ /**
89
+ * Options for usePraxisEngine composable
90
+ */
91
+ interface UsePraxisEngineOptions {
92
+ /** Enable snapshot history for time-travel debugging */
93
+ enableHistory?: boolean;
94
+ /** Maximum number of snapshots to keep */
95
+ maxHistorySize?: number;
96
+ }
97
+ /**
98
+ * Result of usePraxisEngine composable with Svelte 5 runes
99
+ */
100
+ interface PraxisEngineBinding<TContext = unknown> {
101
+ /** Current state (reactive via $state) */
102
+ state: Readonly<PraxisState & {
103
+ context: TContext;
104
+ }>;
105
+ /** Current context (reactive via $state) */
106
+ context: TContext;
107
+ /** Current facts (reactive via $state) */
108
+ facts: PraxisState['facts'];
109
+ /** Dispatch events to the engine */
110
+ dispatch: (events: PraxisEvent[]) => void;
111
+ /** History snapshots (if enabled) */
112
+ snapshots: StateSnapshot<TContext>[];
113
+ /** Navigate to a specific snapshot index */
114
+ goToSnapshot: (index: number) => void;
115
+ /** Undo last action (go back one snapshot) */
116
+ undo: () => void;
117
+ /** Redo action (go forward one snapshot) */
118
+ redo: () => void;
119
+ /** Check if undo is available */
120
+ canUndo: boolean;
121
+ /** Check if redo is available */
122
+ canRedo: boolean;
123
+ /** Current position in history */
124
+ historyIndex: number;
125
+ }
126
+ /**
127
+ * Create a reactive binding to a Praxis engine with Svelte 5 runes support.
128
+ *
129
+ * This composable provides a runes-compatible API for integrating Praxis
130
+ * with Svelte 5 components. The returned state is reactive and will
131
+ * automatically update the component when the engine state changes.
132
+ *
133
+ * Note: The history/snapshot feature tracks state snapshots but doesn't
134
+ * restore the engine to previous states. When you navigate history (undo/redo),
135
+ * you're viewing past snapshots, but new events are still applied to the
136
+ * current engine state. For true undo/redo, use createHistoryEngine or
137
+ * implement state restoration in your application logic.
138
+ *
139
+ * @example
140
+ * <script>
141
+ * import { usePraxisEngine } from '@plures/praxis/svelte';
142
+ * import { createMyEngine } from './my-engine';
143
+ *
144
+ * const engine = createMyEngine();
145
+ * const { context, dispatch, undo, canUndo } = usePraxisEngine(engine, {
146
+ * enableHistory: true
147
+ * });
148
+ * </script>
149
+ *
150
+ * <div>
151
+ * <p>Count: {context.count}</p>
152
+ * <button onclick={() => dispatch([Increment.create({})])}>+</button>
153
+ * <button onclick={() => undo()} disabled={!canUndo}>Undo</button>
154
+ * </div>
155
+ *
156
+ * @param engine The Praxis logic engine
157
+ * @param options Configuration options
158
+ * @returns Reactive binding with state, context, and control methods
159
+ */
160
+ declare function usePraxisEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: UsePraxisEngineOptions): PraxisEngineBinding<TContext>;
161
+ /**
162
+ * Create a reactive derived value from engine context with Svelte 5 runes.
163
+ *
164
+ * This composable extracts and tracks a specific value from the engine context.
165
+ * The returned value is reactive and will update when the selected value changes.
166
+ *
167
+ * @example
168
+ * <script>
169
+ * import { usePraxisContext } from '@plures/praxis/svelte';
170
+ *
171
+ * const engine = createMyEngine();
172
+ * const count = usePraxisContext(engine, (ctx) => ctx.count);
173
+ * </script>
174
+ *
175
+ * <p>Count: {count}</p>
176
+ *
177
+ * @param engine The Praxis logic engine
178
+ * @param selector Function to extract value from context
179
+ * @returns Reactive derived value
180
+ */
181
+ declare function usePraxisContext<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): TDerived;
182
+ /**
183
+ * Subscribe to engine state changes with automatic cleanup.
184
+ *
185
+ * This composable sets up a subscription to engine state changes and
186
+ * automatically cleans up when the component is destroyed.
187
+ *
188
+ * @example
189
+ * <script>
190
+ * import { usePraxisSubscription } from '@plures/praxis/svelte';
191
+ *
192
+ * const engine = createMyEngine();
193
+ *
194
+ * usePraxisSubscription(engine, (state) => {
195
+ * console.log('State changed:', state);
196
+ * });
197
+ * </script>
198
+ *
199
+ * @param engine The Praxis logic engine
200
+ * @param callback Function to call when state changes
201
+ */
202
+ declare function usePraxisSubscription<TContext = unknown>(engine: LogicEngine<TContext>, callback: (state: Readonly<PraxisState & {
203
+ context: TContext;
204
+ }>) => void): () => void;
205
+ /**
206
+ * History state entry for tracking state transitions
207
+ */
208
+ interface HistoryEntry<TContext = unknown> {
209
+ /** Unique identifier for this history entry */
210
+ id: string;
211
+ /** Timestamp when this state was entered */
212
+ timestamp: number;
213
+ /** State snapshot */
214
+ state: Readonly<PraxisState & {
215
+ context: TContext;
216
+ }>;
217
+ /** Events that led to this state */
218
+ events: PraxisEvent[];
219
+ /** Optional label for this history entry */
220
+ label?: string;
221
+ }
222
+ /**
223
+ * History state manager for Praxis engines
224
+ */
225
+ declare class HistoryStateManager<TContext = unknown> {
226
+ private history;
227
+ private currentIndex;
228
+ private readonly maxSize;
229
+ private idCounter;
230
+ constructor(maxSize?: number);
231
+ /**
232
+ * Record a new history entry
233
+ */
234
+ record(state: Readonly<PraxisState & {
235
+ context: TContext;
236
+ }>, events: PraxisEvent[], label?: string): void;
237
+ /**
238
+ * Navigate to a specific history entry
239
+ */
240
+ goTo(index: number): HistoryEntry<TContext> | null;
241
+ /**
242
+ * Go back to previous state
243
+ */
244
+ back(): HistoryEntry<TContext> | null;
245
+ /**
246
+ * Go forward to next state
247
+ */
248
+ forward(): HistoryEntry<TContext> | null;
249
+ /**
250
+ * Check if can go back
251
+ */
252
+ canGoBack(): boolean;
253
+ /**
254
+ * Check if can go forward
255
+ */
256
+ canGoForward(): boolean;
257
+ /**
258
+ * Get current history entry
259
+ */
260
+ current(): HistoryEntry<TContext> | null;
261
+ /**
262
+ * Get all history entries
263
+ */
264
+ getHistory(): ReadonlyArray<HistoryEntry<TContext>>;
265
+ /**
266
+ * Get current index in history
267
+ */
268
+ getCurrentIndex(): number;
269
+ /**
270
+ * Clear all history
271
+ */
272
+ clear(): void;
273
+ }
274
+ /**
275
+ * Create a Praxis engine with history tracking.
276
+ *
277
+ * This utility wraps an engine with automatic history recording,
278
+ * providing undo/redo functionality.
279
+ *
280
+ * @example
281
+ * const engine = createPraxisEngine({ ... });
282
+ * const { dispatch, undo, redo, canUndo, canRedo } = createHistoryEngine(engine);
283
+ *
284
+ * // Use normally
285
+ * dispatch([Login.create({ username: "alice" })]);
286
+ *
287
+ * // Undo the login
288
+ * undo();
289
+ *
290
+ * @param engine The base Praxis engine
291
+ * @param options History configuration
292
+ * @returns Enhanced engine with history methods
293
+ */
294
+ declare function createHistoryEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: {
295
+ maxHistorySize?: number;
296
+ initialLabel?: string;
297
+ }): {
298
+ engine: LogicEngine<TContext>;
299
+ dispatch: (events: PraxisEvent[], label?: string) => void;
300
+ undo: () => boolean;
301
+ redo: () => boolean;
302
+ canUndo: () => boolean;
303
+ canRedo: () => boolean;
304
+ getHistory: () => ReadonlyArray<HistoryEntry<TContext>>;
305
+ goToHistory: (index: number) => boolean;
306
+ clearHistory: () => void;
307
+ };
308
+
309
+ export { type HistoryEntry, HistoryStateManager, type PraxisEngineBinding, type Readable, type StateSnapshot, type UsePraxisEngineOptions, type Writable, createContextStore, createDerivedStore, createHistoryEngine, createPraxisStore, usePraxisContext, usePraxisEngine, usePraxisSubscription };