@plures/praxis 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/LICENSE +21 -21
  3. package/README.md +162 -375
  4. package/core/codegen/docs-generator.ts +5 -2
  5. package/core/codegen/index.ts +1 -1
  6. package/core/codegen/ts-generator.ts +15 -15
  7. package/core/db-adapter/index.ts +2 -2
  8. package/core/db-adapter/sync-engine.ts +17 -6
  9. package/core/logic-engine/engine.ts +1 -1
  10. package/core/logic-engine/index.ts +2 -2
  11. package/core/logic-engine/protocol.ts +1 -1
  12. package/core/logic-engine/psf-adapter.ts +8 -4
  13. package/core/logic-engine/rules.ts +1 -1
  14. package/core/schema-engine/compiler.ts +53 -11
  15. package/core/schema-engine/generator.ts +17 -7
  16. package/core/schema-engine/index.ts +2 -2
  17. package/core/schema-engine/psf.ts +12 -3
  18. package/core/schema-engine/types.ts +3 -11
  19. package/core/schema-engine/validator.ts +112 -22
  20. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  21. package/dist/browser/index.d.ts +3004 -0
  22. package/dist/browser/index.js +2892 -0
  23. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  24. package/dist/browser/integrations/svelte.js +298 -0
  25. package/dist/node/auth-STARLY7I.js +207 -0
  26. package/dist/node/build-Y7OT5VBF.js +144 -0
  27. package/dist/node/canvas-UERZHJYW.js +362 -0
  28. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  29. package/dist/node/chunk-FXQZXAWF.js +175 -0
  30. package/dist/node/chunk-N5Y37EUV.js +202 -0
  31. package/dist/node/chunk-QGM4M3NI.js +37 -0
  32. package/dist/node/chunk-RJMWCNHR.js +175 -0
  33. package/dist/node/chunk-SRM3OPPM.js +404 -0
  34. package/dist/node/chunk-UATVJBNV.js +175 -0
  35. package/dist/node/chunk-UY7YEBE2.js +159 -0
  36. package/dist/node/chunk-XCY2VIFX.js +143 -0
  37. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  38. package/dist/node/cli/index.cjs +217418 -0
  39. package/dist/node/cli/index.d.cts +1 -0
  40. package/dist/node/cli/index.d.ts +1 -0
  41. package/dist/node/cli/index.js +690 -0
  42. package/dist/node/cloud/index.cjs +1043 -0
  43. package/dist/node/cloud/index.d.cts +864 -0
  44. package/dist/node/cloud/index.d.ts +864 -0
  45. package/dist/node/cloud/index.js +456 -0
  46. package/dist/node/cloud-AXOK4PSN.js +212 -0
  47. package/dist/node/component.cjs +374 -0
  48. package/dist/node/component.d.cts +125 -0
  49. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  50. package/dist/node/component.js +9 -0
  51. package/dist/node/components/index.cjs +216 -0
  52. package/dist/node/components/index.d.cts +43 -0
  53. package/dist/{src → node}/components/index.d.ts +8 -8
  54. package/dist/node/components/index.js +7 -0
  55. package/dist/node/create-TRLSVCNQ.js +584 -0
  56. package/dist/node/dev-PMJZUYGE.js +65 -0
  57. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  58. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  59. package/dist/node/index.cjs +3247 -0
  60. package/dist/node/index.d.cts +2579 -0
  61. package/dist/node/index.d.ts +2579 -0
  62. package/dist/node/index.js +2098 -0
  63. package/dist/node/integrations/svelte.cjs +330 -0
  64. package/dist/node/integrations/svelte.d.cts +309 -0
  65. package/dist/node/integrations/svelte.d.ts +309 -0
  66. package/dist/node/integrations/svelte.js +300 -0
  67. package/dist/node/orchestrate-737TCL5H.js +127 -0
  68. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  69. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  70. package/dist/node/schema.cjs +200 -0
  71. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  72. package/dist/node/schema.d.ts +371 -0
  73. package/dist/node/schema.js +9 -0
  74. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  75. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  76. package/dist/node/verify-YBZ7W24H.js +213239 -0
  77. package/docs/MONETIZATION.md +21 -16
  78. package/docs/REACTIVE_REDESIGN.md +132 -0
  79. package/docs/README.md +47 -36
  80. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  81. package/docs/TERMINAL_NODE.md +27 -24
  82. package/docs/core/building-extensions.md +58 -61
  83. package/docs/core/cli-usage.md +59 -59
  84. package/docs/core/code-canvas-sync.md +28 -16
  85. package/docs/core/logic-engine.md +77 -82
  86. package/docs/core/pluresdb-integration.md +29 -39
  87. package/docs/core/schema-model.md +66 -52
  88. package/docs/core/ui-generation.md +57 -49
  89. package/docs/core/what-is-praxis.md +32 -15
  90. package/docs/guides/canvas.md +21 -5
  91. package/docs/guides/getting-started.md +13 -7
  92. package/docs/guides/history-state-pattern.md +65 -51
  93. package/docs/guides/orchestration.md +46 -32
  94. package/docs/guides/parallel-state-pattern.md +56 -72
  95. package/docs/guides/svelte-integration.md +45 -53
  96. package/docs/tutorials/README.md +16 -0
  97. package/docs/tutorials/ecommerce-cart.md +177 -95
  98. package/docs/tutorials/first-app.md +26 -41
  99. package/docs/tutorials/form-builder.md +191 -138
  100. package/docs/tutorials/todo-pluresdb.md +71 -69
  101. package/package.json +132 -97
  102. package/src/__tests__/actors.test.ts +68 -68
  103. package/src/__tests__/billing.test.ts +32 -32
  104. package/src/__tests__/canvas-components.test.ts +94 -73
  105. package/src/__tests__/cli-create.test.ts +28 -28
  106. package/src/__tests__/cloud.test.ts +36 -36
  107. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  108. package/src/__tests__/docs-generator.test.ts +3 -9
  109. package/src/__tests__/dsl.test.ts +58 -64
  110. package/src/__tests__/edge-cases.test.ts +106 -108
  111. package/src/__tests__/engine.test.ts +51 -25
  112. package/src/__tests__/generators.test.ts +42 -44
  113. package/src/__tests__/introspection.test.ts +104 -114
  114. package/src/__tests__/pluresdb.test.ts +189 -187
  115. package/src/__tests__/protocol.test.ts +15 -15
  116. package/src/__tests__/provisioning.test.ts +61 -61
  117. package/src/__tests__/schema.test.ts +7 -11
  118. package/src/__tests__/state-docs-integration.test.ts +162 -145
  119. package/src/__tests__/svelte-integration.test.ts +16 -19
  120. package/src/__tests__/tauri-integration.test.ts +149 -147
  121. package/src/__tests__/terminal-node.test.ts +12 -7
  122. package/src/__tests__/unum-integration.test.ts +68 -68
  123. package/src/adapters/cli.ts +21 -15
  124. package/src/cli/commands/auth.ts +82 -78
  125. package/src/cli/commands/build.ts +29 -27
  126. package/src/cli/commands/canvas.ts +338 -127
  127. package/src/cli/commands/cloud.ts +47 -47
  128. package/src/cli/commands/create.ts +59 -47
  129. package/src/cli/commands/dev.ts +12 -12
  130. package/src/cli/commands/generate.ts +29 -40
  131. package/src/cli/commands/orchestrate.ts +24 -24
  132. package/src/cli/commands/verify.ts +7 -8
  133. package/src/cli/index.ts +14 -10
  134. package/src/cloud/README.md +28 -15
  135. package/src/cloud/auth.ts +55 -70
  136. package/src/cloud/billing.ts +59 -58
  137. package/src/cloud/client.ts +29 -35
  138. package/src/cloud/index.ts +19 -40
  139. package/src/cloud/marketplace.ts +69 -78
  140. package/src/cloud/provisioning.ts +42 -51
  141. package/src/cloud/relay/endpoints.ts +30 -34
  142. package/src/cloud/relay/health/index.ts +1 -1
  143. package/src/cloud/relay/stats/index.ts +1 -1
  144. package/src/cloud/relay/sync/index.ts +1 -1
  145. package/src/cloud/relay/usage/index.ts +1 -1
  146. package/src/cloud/sponsors.ts +31 -34
  147. package/src/cloud/types.ts +4 -4
  148. package/src/components/README.md +1 -0
  149. package/src/components/TerminalNode.svelte +457 -457
  150. package/src/components/index.ts +3 -4
  151. package/src/core/actors.ts +7 -7
  152. package/src/core/component/generator.ts +10 -28
  153. package/src/core/engine.ts +51 -24
  154. package/src/core/introspection.ts +37 -35
  155. package/src/core/logic/generator.ts +62 -62
  156. package/src/core/pluresdb/adapter.ts +8 -8
  157. package/src/core/pluresdb/generator.ts +39 -35
  158. package/src/core/pluresdb/index.ts +9 -12
  159. package/src/core/pluresdb/schema-registry.ts +22 -25
  160. package/src/core/pluresdb/store.ts +57 -57
  161. package/src/core/protocol.ts +14 -14
  162. package/src/core/reactive-engine.svelte.ts +65 -0
  163. package/src/core/reactive-engine.ts +67 -0
  164. package/src/core/rules.ts +4 -4
  165. package/src/core/schema/loader.common.ts +150 -0
  166. package/src/core/schema/loader.ts +19 -149
  167. package/src/core/schema/normalize.ts +34 -51
  168. package/src/core/schema/types.ts +47 -11
  169. package/src/dsl/index.ts +8 -8
  170. package/src/dsl.ts +11 -17
  171. package/src/examples/advanced-todo/App.svelte +506 -506
  172. package/src/examples/advanced-todo/README.md +58 -40
  173. package/src/examples/advanced-todo/index.ts +3 -3
  174. package/src/examples/auth-basic/index.ts +30 -30
  175. package/src/examples/cart/index.ts +50 -50
  176. package/src/examples/hero-ecommerce/index.ts +130 -157
  177. package/src/examples/svelte-counter/index.ts +22 -26
  178. package/src/flows.ts +6 -17
  179. package/src/index.browser.ts +204 -0
  180. package/src/index.ts +37 -42
  181. package/src/integrations/code-canvas.ts +237 -193
  182. package/src/integrations/pluresdb.ts +55 -35
  183. package/src/integrations/state-docs.ts +104 -104
  184. package/src/integrations/svelte.ts +35 -35
  185. package/src/integrations/tauri.ts +75 -73
  186. package/src/integrations/unum.ts +68 -61
  187. package/src/registry.ts +7 -14
  188. package/src/runtime/terminal-adapter.ts +31 -26
  189. package/src/step.ts +10 -16
  190. package/src/types.ts +1 -1
  191. package/templates/basic-app/README.md +6 -9
  192. package/templates/fullstack-app/README.md +10 -0
  193. package/dist/core/codegen/docs-generator.d.ts +0 -123
  194. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  195. package/dist/core/codegen/docs-generator.js +0 -674
  196. package/dist/core/codegen/docs-generator.js.map +0 -1
  197. package/dist/core/codegen/index.d.ts +0 -11
  198. package/dist/core/codegen/index.d.ts.map +0 -1
  199. package/dist/core/codegen/index.js +0 -13
  200. package/dist/core/codegen/index.js.map +0 -1
  201. package/dist/core/codegen/ts-generator.d.ts +0 -8
  202. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  203. package/dist/core/codegen/ts-generator.js +0 -8
  204. package/dist/core/codegen/ts-generator.js.map +0 -1
  205. package/dist/core/db-adapter/index.d.ts +0 -18
  206. package/dist/core/db-adapter/index.d.ts.map +0 -1
  207. package/dist/core/db-adapter/index.js +0 -23
  208. package/dist/core/db-adapter/index.js.map +0 -1
  209. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  210. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  211. package/dist/core/db-adapter/sync-engine.js +0 -342
  212. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  213. package/dist/core/logic-engine/engine.d.ts +0 -8
  214. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  215. package/dist/core/logic-engine/engine.js +0 -8
  216. package/dist/core/logic-engine/engine.js.map +0 -1
  217. package/dist/core/logic-engine/index.d.ts +0 -16
  218. package/dist/core/logic-engine/index.d.ts.map +0 -1
  219. package/dist/core/logic-engine/index.js +0 -16
  220. package/dist/core/logic-engine/index.js.map +0 -1
  221. package/dist/core/logic-engine/protocol.d.ts +0 -7
  222. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  223. package/dist/core/logic-engine/protocol.js +0 -7
  224. package/dist/core/logic-engine/protocol.js.map +0 -1
  225. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  226. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  227. package/dist/core/logic-engine/psf-adapter.js +0 -207
  228. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  229. package/dist/core/logic-engine/rules.d.ts +0 -7
  230. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  231. package/dist/core/logic-engine/rules.js +0 -7
  232. package/dist/core/logic-engine/rules.js.map +0 -1
  233. package/dist/core/schema-engine/compiler.d.ts +0 -198
  234. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  235. package/dist/core/schema-engine/compiler.js +0 -262
  236. package/dist/core/schema-engine/compiler.js.map +0 -1
  237. package/dist/core/schema-engine/generator.d.ts +0 -115
  238. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  239. package/dist/core/schema-engine/generator.js +0 -506
  240. package/dist/core/schema-engine/generator.js.map +0 -1
  241. package/dist/core/schema-engine/index.d.ts +0 -18
  242. package/dist/core/schema-engine/index.d.ts.map +0 -1
  243. package/dist/core/schema-engine/index.js +0 -18
  244. package/dist/core/schema-engine/index.js.map +0 -1
  245. package/dist/core/schema-engine/psf.d.ts +0 -612
  246. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  247. package/dist/core/schema-engine/psf.js +0 -45
  248. package/dist/core/schema-engine/psf.js.map +0 -1
  249. package/dist/core/schema-engine/types.d.ts +0 -10
  250. package/dist/core/schema-engine/types.d.ts.map +0 -1
  251. package/dist/core/schema-engine/types.js +0 -7
  252. package/dist/core/schema-engine/types.js.map +0 -1
  253. package/dist/core/schema-engine/validator.d.ts +0 -140
  254. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  255. package/dist/core/schema-engine/validator.js +0 -407
  256. package/dist/core/schema-engine/validator.js.map +0 -1
  257. package/dist/src/adapters/cli.d.ts +0 -43
  258. package/dist/src/adapters/cli.d.ts.map +0 -1
  259. package/dist/src/adapters/cli.js +0 -126
  260. package/dist/src/adapters/cli.js.map +0 -1
  261. package/dist/src/cli/commands/auth.d.ts +0 -26
  262. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  263. package/dist/src/cli/commands/auth.js +0 -233
  264. package/dist/src/cli/commands/auth.js.map +0 -1
  265. package/dist/src/cli/commands/build.d.ts +0 -23
  266. package/dist/src/cli/commands/build.d.ts.map +0 -1
  267. package/dist/src/cli/commands/build.js +0 -162
  268. package/dist/src/cli/commands/build.js.map +0 -1
  269. package/dist/src/cli/commands/canvas.d.ts +0 -23
  270. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  271. package/dist/src/cli/commands/canvas.js +0 -215
  272. package/dist/src/cli/commands/canvas.js.map +0 -1
  273. package/dist/src/cli/commands/cloud.d.ts +0 -27
  274. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  275. package/dist/src/cli/commands/cloud.js +0 -232
  276. package/dist/src/cli/commands/cloud.js.map +0 -1
  277. package/dist/src/cli/commands/create.d.ts +0 -21
  278. package/dist/src/cli/commands/create.d.ts.map +0 -1
  279. package/dist/src/cli/commands/create.js +0 -621
  280. package/dist/src/cli/commands/create.js.map +0 -1
  281. package/dist/src/cli/commands/dev.d.ts +0 -21
  282. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  283. package/dist/src/cli/commands/dev.js +0 -71
  284. package/dist/src/cli/commands/dev.js.map +0 -1
  285. package/dist/src/cli/commands/generate.d.ts +0 -25
  286. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/generate.js +0 -168
  288. package/dist/src/cli/commands/generate.js.map +0 -1
  289. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  290. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  291. package/dist/src/cli/commands/orchestrate.js +0 -150
  292. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  293. package/dist/src/cli/commands/verify.d.ts +0 -10
  294. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  295. package/dist/src/cli/commands/verify.js +0 -39
  296. package/dist/src/cli/commands/verify.js.map +0 -1
  297. package/dist/src/cli/index.d.ts +0 -8
  298. package/dist/src/cli/index.d.ts.map +0 -1
  299. package/dist/src/cli/index.js +0 -226
  300. package/dist/src/cli/index.js.map +0 -1
  301. package/dist/src/cloud/auth.d.ts +0 -51
  302. package/dist/src/cloud/auth.d.ts.map +0 -1
  303. package/dist/src/cloud/auth.js +0 -194
  304. package/dist/src/cloud/auth.js.map +0 -1
  305. package/dist/src/cloud/billing.d.ts +0 -184
  306. package/dist/src/cloud/billing.d.ts.map +0 -1
  307. package/dist/src/cloud/billing.js +0 -179
  308. package/dist/src/cloud/billing.js.map +0 -1
  309. package/dist/src/cloud/client.d.ts +0 -39
  310. package/dist/src/cloud/client.d.ts.map +0 -1
  311. package/dist/src/cloud/client.js +0 -176
  312. package/dist/src/cloud/client.js.map +0 -1
  313. package/dist/src/cloud/index.d.ts +0 -44
  314. package/dist/src/cloud/index.d.ts.map +0 -1
  315. package/dist/src/cloud/index.js +0 -44
  316. package/dist/src/cloud/index.js.map +0 -1
  317. package/dist/src/cloud/marketplace.d.ts +0 -166
  318. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  319. package/dist/src/cloud/marketplace.js +0 -159
  320. package/dist/src/cloud/marketplace.js.map +0 -1
  321. package/dist/src/cloud/provisioning.d.ts +0 -110
  322. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  323. package/dist/src/cloud/provisioning.js +0 -148
  324. package/dist/src/cloud/provisioning.js.map +0 -1
  325. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  326. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/endpoints.js +0 -217
  328. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  329. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/health/index.js +0 -9
  332. package/dist/src/cloud/relay/health/index.js.map +0 -1
  333. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/stats/index.js +0 -9
  336. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  337. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/sync/index.js +0 -9
  340. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  341. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  342. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  343. package/dist/src/cloud/relay/usage/index.js +0 -9
  344. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  345. package/dist/src/cloud/sponsors.d.ts +0 -81
  346. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  347. package/dist/src/cloud/sponsors.js +0 -130
  348. package/dist/src/cloud/sponsors.js.map +0 -1
  349. package/dist/src/cloud/types.d.ts +0 -169
  350. package/dist/src/cloud/types.d.ts.map +0 -1
  351. package/dist/src/cloud/types.js +0 -7
  352. package/dist/src/cloud/types.js.map +0 -1
  353. package/dist/src/components/index.d.ts.map +0 -1
  354. package/dist/src/components/index.js +0 -17
  355. package/dist/src/components/index.js.map +0 -1
  356. package/dist/src/core/actors.d.ts +0 -95
  357. package/dist/src/core/actors.d.ts.map +0 -1
  358. package/dist/src/core/actors.js +0 -158
  359. package/dist/src/core/actors.js.map +0 -1
  360. package/dist/src/core/component/generator.d.ts.map +0 -1
  361. package/dist/src/core/component/generator.js +0 -349
  362. package/dist/src/core/component/generator.js.map +0 -1
  363. package/dist/src/core/engine.d.ts +0 -92
  364. package/dist/src/core/engine.d.ts.map +0 -1
  365. package/dist/src/core/engine.js +0 -199
  366. package/dist/src/core/engine.js.map +0 -1
  367. package/dist/src/core/introspection.d.ts +0 -141
  368. package/dist/src/core/introspection.d.ts.map +0 -1
  369. package/dist/src/core/introspection.js +0 -208
  370. package/dist/src/core/introspection.js.map +0 -1
  371. package/dist/src/core/logic/generator.d.ts +0 -76
  372. package/dist/src/core/logic/generator.d.ts.map +0 -1
  373. package/dist/src/core/logic/generator.js +0 -370
  374. package/dist/src/core/logic/generator.js.map +0 -1
  375. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  376. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/adapter.js +0 -73
  378. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  379. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  380. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/generator.js +0 -191
  382. package/dist/src/core/pluresdb/generator.js.map +0 -1
  383. package/dist/src/core/pluresdb/index.d.ts +0 -15
  384. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/index.js +0 -11
  386. package/dist/src/core/pluresdb/index.js.map +0 -1
  387. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  388. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  390. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  391. package/dist/src/core/pluresdb/store.d.ts +0 -199
  392. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  393. package/dist/src/core/pluresdb/store.js +0 -344
  394. package/dist/src/core/pluresdb/store.js.map +0 -1
  395. package/dist/src/core/protocol.d.ts.map +0 -1
  396. package/dist/src/core/protocol.js +0 -46
  397. package/dist/src/core/protocol.js.map +0 -1
  398. package/dist/src/core/rules.d.ts +0 -120
  399. package/dist/src/core/rules.d.ts.map +0 -1
  400. package/dist/src/core/rules.js +0 -81
  401. package/dist/src/core/rules.js.map +0 -1
  402. package/dist/src/core/schema/loader.d.ts +0 -47
  403. package/dist/src/core/schema/loader.d.ts.map +0 -1
  404. package/dist/src/core/schema/loader.js +0 -189
  405. package/dist/src/core/schema/loader.js.map +0 -1
  406. package/dist/src/core/schema/normalize.d.ts +0 -72
  407. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  408. package/dist/src/core/schema/normalize.js +0 -190
  409. package/dist/src/core/schema/normalize.js.map +0 -1
  410. package/dist/src/core/schema/types.d.ts.map +0 -1
  411. package/dist/src/core/schema/types.js +0 -161
  412. package/dist/src/core/schema/types.js.map +0 -1
  413. package/dist/src/dsl/index.d.ts +0 -152
  414. package/dist/src/dsl/index.d.ts.map +0 -1
  415. package/dist/src/dsl/index.js +0 -132
  416. package/dist/src/dsl/index.js.map +0 -1
  417. package/dist/src/dsl.d.ts +0 -124
  418. package/dist/src/dsl.d.ts.map +0 -1
  419. package/dist/src/dsl.js +0 -130
  420. package/dist/src/dsl.js.map +0 -1
  421. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  422. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  423. package/dist/src/examples/advanced-todo/index.js +0 -222
  424. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  425. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  426. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  427. package/dist/src/examples/auth-basic/index.js +0 -122
  428. package/dist/src/examples/auth-basic/index.js.map +0 -1
  429. package/dist/src/examples/cart/index.d.ts +0 -19
  430. package/dist/src/examples/cart/index.d.ts.map +0 -1
  431. package/dist/src/examples/cart/index.js +0 -202
  432. package/dist/src/examples/cart/index.js.map +0 -1
  433. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  434. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  435. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  436. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  437. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  438. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  439. package/dist/src/examples/svelte-counter/index.js +0 -123
  440. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  441. package/dist/src/flows.d.ts +0 -125
  442. package/dist/src/flows.d.ts.map +0 -1
  443. package/dist/src/flows.js +0 -160
  444. package/dist/src/flows.js.map +0 -1
  445. package/dist/src/index.d.ts +0 -77
  446. package/dist/src/index.d.ts.map +0 -1
  447. package/dist/src/index.js +0 -64
  448. package/dist/src/index.js.map +0 -1
  449. package/dist/src/integrations/code-canvas.d.ts +0 -265
  450. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  451. package/dist/src/integrations/code-canvas.js +0 -451
  452. package/dist/src/integrations/code-canvas.js.map +0 -1
  453. package/dist/src/integrations/pluresdb.d.ts +0 -117
  454. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  455. package/dist/src/integrations/pluresdb.js +0 -117
  456. package/dist/src/integrations/pluresdb.js.map +0 -1
  457. package/dist/src/integrations/state-docs.d.ts +0 -191
  458. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  459. package/dist/src/integrations/state-docs.js +0 -515
  460. package/dist/src/integrations/state-docs.js.map +0 -1
  461. package/dist/src/integrations/svelte.d.ts.map +0 -1
  462. package/dist/src/integrations/svelte.js +0 -447
  463. package/dist/src/integrations/svelte.js.map +0 -1
  464. package/dist/src/integrations/tauri.d.ts +0 -360
  465. package/dist/src/integrations/tauri.d.ts.map +0 -1
  466. package/dist/src/integrations/tauri.js +0 -278
  467. package/dist/src/integrations/tauri.js.map +0 -1
  468. package/dist/src/integrations/unum.d.ts +0 -159
  469. package/dist/src/integrations/unum.d.ts.map +0 -1
  470. package/dist/src/integrations/unum.js +0 -240
  471. package/dist/src/integrations/unum.js.map +0 -1
  472. package/dist/src/registry.d.ts +0 -94
  473. package/dist/src/registry.d.ts.map +0 -1
  474. package/dist/src/registry.js +0 -181
  475. package/dist/src/registry.js.map +0 -1
  476. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  477. package/dist/src/runtime/terminal-adapter.js +0 -239
  478. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  479. package/dist/src/step.d.ts +0 -34
  480. package/dist/src/step.d.ts.map +0 -1
  481. package/dist/src/step.js +0 -111
  482. package/dist/src/step.js.map +0 -1
  483. package/dist/src/types.d.ts +0 -63
  484. package/dist/src/types.d.ts.map +0 -1
  485. package/dist/src/types.js +0 -6
  486. package/dist/src/types.js.map +0 -1
  487. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  488. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  489. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  490. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  491. package/dist/tools/cli/commands/index.d.ts +0 -7
  492. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  493. package/dist/tools/cli/commands/index.js +0 -7
  494. package/dist/tools/cli/commands/index.js.map +0 -1
  495. package/dist/tools/cli/index.d.ts +0 -8
  496. package/dist/tools/cli/index.d.ts.map +0 -1
  497. package/dist/tools/cli/index.js +0 -9
  498. package/dist/tools/cli/index.js.map +0 -1
  499. package/dist/tools/watcher/index.d.ts +0 -105
  500. package/dist/tools/watcher/index.d.ts.map +0 -1
  501. package/dist/tools/watcher/index.js +0 -213
  502. package/dist/tools/watcher/index.js.map +0 -1
  503. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  504. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-projection.js +0 -416
  506. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  507. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  508. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  509. package/dist/ui/canvas/canvas-state.js +0 -464
  510. package/dist/ui/canvas/canvas-state.js.map +0 -1
  511. package/dist/ui/canvas/components/index.d.ts +0 -95
  512. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/components/index.js +0 -19
  514. package/dist/ui/canvas/components/index.js.map +0 -1
  515. package/dist/ui/canvas/index.d.ts +0 -32
  516. package/dist/ui/canvas/index.d.ts.map +0 -1
  517. package/dist/ui/canvas/index.js +0 -32
  518. package/dist/ui/canvas/index.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  520. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/server.js +0 -248
  522. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  523. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  524. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  525. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  526. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  527. package/dist/ui/svelte-generator/index.d.ts +0 -9
  528. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/index.js +0 -11
  530. package/dist/ui/svelte-generator/index.js.map +0 -1
  531. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  532. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  533. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  534. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
package/README.md CHANGED
@@ -1,398 +1,158 @@
1
- # Praxis
1
+ dotnet build
2
+ dotnet test
3
+ # Praxis 1.1.0
4
+
5
+ **Typed, visual-first application logic for Svelte, Node, and the browser.**
2
6
 
3
- [![CI](https://github.com/plures/praxis/workflows/CI/badge.svg)](https://github.com/plures/praxis/actions/workflows/ci.yml)
4
- [![CodeQL](https://github.com/plures/praxis/workflows/CodeQL/badge.svg)](https://github.com/plures/praxis/actions/workflows/codeql.yml)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
  [![npm version](https://img.shields.io/npm/v/@plures/praxis.svg)](https://www.npmjs.com/package/@plures/praxis)
7
- [![NuGet](https://img.shields.io/nuget/v/Plures.Praxis.svg)](https://www.nuget.org/packages/Plures.Praxis/)
8
8
  [![JSR](https://jsr.io/badges/@plures/praxis)](https://jsr.io/@plures/praxis)
9
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org/)
10
11
  [![Deno Compatible](https://img.shields.io/badge/deno-compatible-brightgreen)](https://deno.land/)
11
12
 
12
- **The Full Plures Application Framework**
13
+ Praxis is a schema-driven, rule-based engine with first-class Svelte 5 integration, component generation, and optional cloud sync. Version **1.1.0** delivers a unified ESM/CJS build, curated subpath exports, Svelte runes support, and a slimmer, publish-ready package for npm and JSR.
13
14
 
14
15
  ---
15
16
 
16
- ## 📊 Project Dashboard
17
-
18
- ### Quick Links
19
- - 📖 [Documentation](./docs/) | [Getting Started](./GETTING_STARTED.md) | [Framework Guide](./FRAMEWORK.md)
20
- - 💬 [Discussions](https://github.com/plures/praxis/discussions) | [Issues](https://github.com/plures/praxis/issues)
21
- - 🚀 [Contributing](./CONTRIBUTING.md) | [Security Policy](./SECURITY.md)
22
- - 📋 [Changelog](./CHANGELOG.md) | [Roadmap](https://github.com/plures/praxis/issues?q=is%3Aissue+is%3Aopen+label%3Aroadmap)
23
- - 🔄 [Cross-Language Sync](./CROSS_LANGUAGE_SYNC.md) | [C# Documentation](./csharp/Praxis/README.md)
24
-
25
- ### Project Status
26
-
27
- | Category | Status |
28
- |----------|--------|
29
- | **CI/CD** | ✅ Automated testing & builds |
30
- | **Version** | 1.0.2 (Stable) |
31
- | **Runtime Support** | Node.js 18+, Deno (experimental), .NET 8+ |
32
- | **Package Registries** | npm ✅ / NuGet ✅ / JSR ✅ |
33
- | **Test Coverage** | 327 TypeScript + 95 C# tests passing |
34
- | **Documentation** | 📚 Comprehensive guides available |
35
-
36
- ### Language Support
37
-
38
- | Language | Package | Registry | Status |
39
- |----------|---------|----------|--------|
40
- | **TypeScript** | @plures/praxis | npm | ✅ Available |
41
- | **C#** | Plures.Praxis | NuGet | ✅ Available |
42
- | **PowerShell** | Praxis.psm1 | GitHub | ✅ Available |
43
-
44
- ### Integration Status
45
-
46
- | Integration | Status | Notes |
47
- |------------|--------|-------|
48
- | **Praxis Cloud** | ✅ Available | Azure-hosted relay for sync & monetization |
49
- | **PluresDB** | ✅ Available | Local-first reactive datastore with 32 tests |
50
- | **Unum** | ✅ Available | Identity & channels integration |
51
- | **Svelte 5** | ✅ Full Support | Runes API, stores, history, time-travel |
52
- | **Tauri** | ✅ Available | Cross-platform desktop runtime |
53
- | **CodeCanvas** | ✅ Available | Visual schema editor & FSM enforcement |
54
- | **State-Docs** | ✅ Available | Documentation generation from schemas |
55
-
56
- ---
57
-
58
- ## Overview
59
-
60
- Praxis is not just a logic engine—it's a **complete framework** for building modern, local-first, distributed applications. It provides:
61
-
62
- - **Declarative Schemas**: Define your data models, logic, and components in a unified schema format (PSF)
63
- - **Logic/State Machines**: Pure, functional application logic with facts, events, rules, and constraints
64
- - **Component Generation**: Automatically generate Svelte components from schemas
65
- - **Local-First Data**: Integrated PluresDB for reactive, offline-capable data storage
66
- - **Documentation Generation**: Automatic documentation generation from schemas with Mermaid diagrams
67
- - **Visual Design**: CodeCanvas integration for visual schema and logic editing
68
- - **Real-Time Code ↔ Canvas Sync**: Bidirectional synchronization between code and visual editor
69
- - **Orchestration**: DSC/MCP support for distributed system coordination
70
- - **Cross-Platform Runtime**: Web, desktop, and mobile via Svelte + Tauri
71
-
72
- ## 🚀 Praxis 1.0 Architecture
17
+ ## What’s new in 1.1.0
18
+ - **Unified builds & exports**: `./`, `./svelte`, `./schema`, `./component`, `./cloud`, `./components`, and CLI all ship with ESM, CJS, and type definitions.
19
+ - **Svelte 5 runes native**: Runes-friendly stores and helpers; server+client builds for integrations.
20
+ - **Logic engine refinements**: Typed registry, step diagnostics, and trace-friendly rule execution.
21
+ - **Cloud relay & local-first**: Polished cloud connector alongside PluresDB-first workflows.
22
+ - **Publish-ready**: npm public access + JSR exports aligned to source.
73
23
 
74
- Praxis 1.0 introduces a **schema-driven, modular architecture** where the Praxis Schema Format (PSF) serves as the single source of truth.
24
+ ## Capabilities at a glance
25
+ - **Logic Engine**: Facts, events, rules, constraints, registry, introspection, and reactive engine variant.
26
+ - **Schema & Codegen**: PSF-style schema types plus component generator for Svelte UIs.
27
+ - **Svelte Integration**: Typed helpers, runes-ready builds, and Svelte component typings.
28
+ - **Local-First Data**: PluresDB integrations for offline-first, reactive state.
29
+ - **Cloud Relay**: Optional sync layer (GitHub-auth friendly) for distributed teams.
30
+ - **CLI**: Scaffolding, generation, canvas helpers, and cloud commands.
75
31
 
76
- ### Praxis Schema Format (PSF)
77
-
78
- PSF is the canonical JSON/AST format that defines your entire application:
79
-
80
- ```json
81
- {
82
- "$version": "latest",
83
- "id": "my-app",
84
- "name": "My Application",
85
- "facts": [...],
86
- "events": [...],
87
- "rules": [...],
88
- "constraints": [...],
89
- "models": [...],
90
- "components": [...],
91
- "flows": [...]
92
- }
93
- ```
94
-
95
- From this schema, Praxis generates:
96
- - **TypeScript types** for facts, events, rules
97
- - **Svelte components** for UI
98
- - **Markdown documentation** with Mermaid diagrams
99
- - **Database schemas** for PluresDB
100
- - **Canvas visualization** for visual editing
101
-
102
- ### Modular Folder Structure
103
-
104
- ```
105
- /praxis
106
- ├── core/ # Core framework modules
107
- │ ├── schema-engine/ # PSF types, compiler, generator, validator
108
- │ ├── logic-engine/ # Rules, constraints, engine, PSF adapter
109
- │ ├── db-adapter/ # PluresDB sync engine
110
- │ └── codegen/ # Documentation and code generators
111
- ├── ui/ # UI modules
112
- │ ├── svelte-generator/ # PSF-aware Svelte component generation
113
- │ └── canvas/ # Visual canvas state and projection
114
- ├── tools/ # Developer tools
115
- │ ├── cli/ # Command-line interface
116
- │ └── watcher/ # File watching and live sync
117
- ├── extensions/ # Optional integrations
118
- │ ├── dsc/ # DSC/MCP orchestration
119
- │ ├── azure/ # Azure integration
120
- │ └── devtools/ # Developer tools
121
- └── examples/ # Example applications
122
- ├── hero-shop/ # Full e-commerce example
123
- └── todo/ # Minimal todo example
124
- ```
125
-
126
- ### Framework Philosophy
127
-
128
- ### Core Framework Components
129
-
130
- Praxis provides these integrated capabilities:
131
-
132
- - **Schema Engine** – PSF parser, compiler, generator, and validator
133
- - **Logic Engine** – Typed facts, events, rules, and constraints for application logic
134
- - **Component Factory** – Generate Svelte components from schemas with data bindings
135
- - **Data Layer** – PluresDB integration for reactive, local-first data storage
136
- - **State Machines** – Flows and scenarios for orchestrated behaviors
137
- - **Actors** – Effectful units for side effects and external system integration
138
- - **Terminal Nodes** – Execute commands and scripts within the Praxis framework
139
- - **Documentation** – Automatic documentation generation from schemas with Mermaid diagrams
140
- - **Visual IDE** – CodeCanvas integration for schema and logic editing
141
- - **Orchestration** – DSC/MCP support for distributed coordination
142
- - **CLI Tools** – Command-line interface for scaffolding and generation
143
-
144
- ### Design Philosophy
145
-
146
- 1. **Schema-Driven Development**
147
- - Define once, generate everywhere (models, components, docs, orchestration)
148
- - Single source of truth for your application structure
149
- - Type-safe by default across all layers
150
-
151
- 2. **Local-First Architecture**
152
- - Offline-capable by default with PluresDB
153
- - Sync when connected, work always
154
- - Data ownership and privacy built-in
155
-
156
- 3. **Strong typing and functional programming**
157
- - Core abstractions are strongly typed: `Fact<Tag, Payload>`, `Event<Tag, Payload>`, `Rule<Context, InFact, OutFact>`
158
- - Pure functions for testability and reasoning
159
- - Immutable state updates
160
-
161
- 4. **Visual and Code Workflows**
162
- - CodeCanvas for visual schema and logic editing
163
- - Full code-level control when needed
164
- - Seamless transitions between visual and code
165
-
166
- 5. **Cross-Platform and Cross-Language**
167
- - TypeScript-first with C# and PowerShell support
168
- - Web, desktop, mobile via Svelte + Tauri
169
- - Language-agnostic core protocol for maximum portability
170
-
171
- ## Framework Features
172
-
173
- ### 🏗️ Full Application Framework
174
- - **Schema-Driven**: Define data models, logic, and UI in unified schemas
175
- - **Component Generation**: Auto-generate Svelte components from schemas
176
- - **CLI Tools**: `praxis create`, `praxis generate`, `praxis canvas` commands
177
- - **Templates**: Pre-built app templates (basic, fullstack, distributed)
178
- - **Integrated Stack**: PluresDB + Unum + ADP + State-Docs + Canvas
179
-
180
- ### 🎨 Visual Development
181
- - **CodeCanvas Integration**: Visual schema and logic editor
182
- - **Component Preview**: See generated components in real-time
183
- - **Flow Visualization**: Visualize state machines and orchestration
184
- - **Interactive Docs**: Navigate documentation with State-Docs
185
-
186
- ### 🔌 Ecosystem Integration
187
- - **PluresDB**: Local-first reactive data storage
188
- - **Unum**: Identity and channels for distributed systems
189
- - **ADP**: Architectural guardrails and decision tracking
190
- - **State-Docs**: Living documentation generation
191
- - **Svelte 5**: Full runes support with history and time-travel
192
- - **Tauri**: Cross-platform runtime (web/desktop/mobile)
193
-
194
- ### ⚡ Svelte 5 Integration
195
- - **Runes API**: Modern `$state`, `$derived`, `$effect` support
196
- - **History States**: Built-in undo/redo and time-travel debugging
197
- - **Store API**: Backward-compatible stores for Svelte 4/5
198
- - **Type Safety**: Full TypeScript support with composables
199
- - **Zero Config**: Works out of the box with Svelte 5
200
-
201
- ## Logic Engine Features
202
-
203
- - 🎯 **Logic-First Design**: Build applications around facts, events, rules, and constraints
204
- - 🔄 **Pure Functional Core**: State transitions via pure `step` functions
205
- - 📝 **Fluent DSL**: Intuitive API for defining rules and constraints
206
- - 🗂️ **Registry System**: Centralized management of rules and constraints
207
- - 🌊 **Flows & Actors**: Orchestrate complex state transitions
208
- - 📦 **JSON-Friendly**: All types are serializable for cross-platform use
209
- - 🔒 **Type-Safe**: Full TypeScript support with strict typing
210
- - 🔍 **Introspection**: Generate schemas, graphs, and visualizations of your logic
211
- - 🌐 **Cross-Language**: C#, PowerShell, and TypeScript implementations with protocol versioning
212
- - 📊 **Comprehensive Testing**: 327 TypeScript and 95 C# tests covering all features
213
- - 🎭 **Hero Example**: Full e-commerce demo with auth, cart, features, and actors
214
-
215
- ## Installation
216
-
217
- ### npm (Node.js)
32
+ ## Install
33
+ Node 18+ recommended.
218
34
 
219
35
  ```bash
36
+ # npm
220
37
  npm install @plures/praxis
221
- ```
222
-
223
- ### NuGet (.NET / C#)
224
-
225
- ```bash
226
- dotnet add package Plures.Praxis
227
- ```
228
-
229
- Or add to your `.csproj`:
230
38
 
231
- ```xml
232
- <PackageReference Include="Plures.Praxis" Version="0.2.1" />
39
+ # pnpm
40
+ pnpm add @plures/praxis
233
41
  ```
234
42
 
235
- See [C# Documentation](./csharp/Praxis/README.md) for detailed usage.
236
-
237
- ### JSR (Deno)
238
-
43
+ JSR (Deno):
239
44
  ```bash
240
- # Coming soon - JSR publishing in progress
241
- deno add @plures/praxis
45
+ const result = engine.step([Login.create({ username: 'alice' })]);
46
+ # or via import map pointing to npm:
47
+ # {
48
+ # "imports": { "@plures/praxis": "npm:@plures/praxis@^1.1.0" }
49
+ # }
242
50
  ```
243
51
 
244
- For now, you can use Praxis with Deno via import maps:
245
-
246
- ```typescript
247
- // import_map.json
248
- {
249
- "imports": {
250
- "@plures/praxis": "npm:@plures/praxis@^0.2.1"
251
- }
252
- }
253
- ```
52
+ ## Quick start (logic engine)
53
+ ```ts
54
+ import {
55
+ createPraxisEngine,
56
+ PraxisRegistry,
57
+ defineFact,
58
+ defineEvent,
59
+ defineRule,
60
+ } from '@plures/praxis';
254
61
 
255
- ### From Source
62
+ const UserLoggedIn = defineFact<'UserLoggedIn', { userId: string }>('UserLoggedIn');
63
+ const Login = defineEvent<'LOGIN', { username: string }>('LOGIN');
256
64
 
257
- ```bash
258
- # Clone the repository
259
- git clone https://github.com/plures/praxis.git
260
- cd praxis
65
+ const loginRule = defineRule<{ currentUser: string | null }>({
66
+ id: 'auth.login',
67
+ description: 'Authenticate and emit fact',
68
+ impl: (state, events) => {
69
+ const evt = events.find(Login.is);
70
+ if (!evt) return [];
71
+ state.context.currentUser = evt.payload.username;
72
+ return [UserLoggedIn.create({ userId: evt.payload.username })];
73
+ },
74
+ });
261
75
 
262
- # TypeScript
263
- npm install
264
- npm run build
265
- npm test
76
+ const registry = new PraxisRegistry();
77
+ registry.registerRule(loginRule);
266
78
 
267
- # C#
268
- cd csharp
269
- dotnet build
270
- dotnet test
79
+ const engine = createPraxisEngine({ initialContext: { currentUser: null }, registry });
80
+ engine.step([Login.create({ username: 'alex' })]);
271
81
  ```
272
82
 
273
- ## Quick Start
274
-
275
- ### Using the Praxis CLI
276
-
277
- The Praxis CLI provides commands for creating and managing applications.
278
-
279
- ```bash
280
- # Install Praxis globally
281
- npm install -g @plures/praxis
282
-
283
- # Create a new application
284
- praxis create app my-app
285
- cd my-app
286
- npm install
83
+ ## Svelte integration (runes-ready)
84
+ ```svelte
85
+ <script lang="ts">
86
+ import { createReactiveEngine, defineEvent, defineRule, PraxisRegistry } from '@plures/praxis/svelte';
87
+
88
+ const Increment = defineEvent<'INCREMENT', { amount: number }>('INCREMENT');
89
+ const counterRule = defineRule<{ count: number }>({
90
+ id: 'counter.increment',
91
+ description: 'Add to count',
92
+ impl: (state, events) => {
93
+ const evt = events.find(Increment.is);
94
+ if (evt) state.context.count += evt.payload.amount;
95
+ return [];
96
+ },
97
+ });
287
98
 
288
- # Generate code from schemas
289
- praxis generate --schema src/schemas/app.schema.ts
99
+ const registry = new PraxisRegistry();
100
+ registry.registerRule(counterRule);
290
101
 
291
- # Open CodeCanvas for visual editing
292
- praxis canvas src/schemas/app.schema.ts
102
+ const engine = createReactiveEngine({ initialContext: { count: 0 }, registry });
103
+ const count = engine.$derived((s) => s.context.count);
293
104
 
294
- # Start development server
295
- npm run dev
105
+ function addOne() {
106
+ engine.step([Increment.create({ amount: 1 })]);
107
+ }
108
+ </script>
296
109
 
297
- # Build for production
298
- npm run build
110
+ <button on:click={addOne}>Count is {$count}</button>
299
111
  ```
300
112
 
301
- Available CLI commands:
302
- - `praxis login` - Authenticate with GitHub (device flow or token)
303
- - `praxis logout` - Log out from Praxis Cloud
304
- - `praxis whoami` - Show current authenticated user
305
- - `praxis create app [name]` - Create new application
306
- - `praxis create component [name]` - Create new component
307
- - `praxis generate` - Generate code from schemas
308
- - `praxis canvas [schema]` - Open visual editor
309
- - `praxis orchestrate` - Manage distributed systems
310
- - `praxis cloud init` - Connect to Praxis Cloud
311
- - `praxis cloud status` - Check cloud connection
312
- - `praxis cloud sync` - Manually sync to cloud
313
- - `praxis cloud usage` - View cloud usage metrics
314
- - `praxis dev` - Start development server
315
- - `praxis build` - Build for production
316
-
317
- See [docs/guides/getting-started.md](./docs/guides/getting-started.md) for detailed instructions.
113
+ ## Cloud relay (optional)
114
+ ```ts
115
+ import { connectRelay } from '@plures/praxis/cloud';
318
116
 
319
- ### Praxis Cloud
320
-
321
- Connect your application to Praxis Cloud for automatic synchronization with GitHub-native authentication and billing:
322
-
323
- ```bash
324
- # Authenticate with GitHub
325
- npx praxis login
326
-
327
- # Initialize cloud connection
328
- npx praxis cloud init
329
-
330
- # In your code
331
- import { connectRelay } from "@plures/praxis/cloud";
332
-
333
- const relay = await connectRelay("https://praxis-relay.azurewebsites.net", {
334
- appId: "my-app",
117
+ const relay = await connectRelay('https://my-relay.example.com', {
118
+ appId: 'my-app',
335
119
  authToken: process.env.GITHUB_TOKEN,
336
- autoSync: true
120
+ autoSync: true,
337
121
  });
338
122
 
339
- // Sync automatically handles CRDT merge
340
123
  await relay.sync({
341
- type: "delta",
342
- appId: "my-app",
124
+ type: 'delta',
125
+ appId: 'my-app',
343
126
  clock: {},
344
- facts: [...],
345
- timestamp: Date.now()
127
+ facts: [],
128
+ timestamp: Date.now(),
346
129
  });
347
130
  ```
348
131
 
349
- See [src/cloud/README.md](./src/cloud/README.md) and [examples/cloud-sync](./examples/cloud-sync) for details.
350
-
351
- ### Basic Example (Logic Engine)
352
-
353
- ```typescript
354
- import {
355
- createPraxisEngine,
356
- PraxisRegistry,
357
- defineFact,
358
- defineEvent,
359
- defineRule,
360
- } from "@plures/praxis";
361
-
362
- // Define the context type
363
- interface AuthContext {
364
- currentUser: string | null;
365
- }
366
-
367
- // Define facts and events
368
- const UserLoggedIn = defineFact<"UserLoggedIn", { userId: string }>("UserLoggedIn");
369
- const Login = defineEvent<"LOGIN", { username: string }>("LOGIN");
370
-
371
- // Define rules
372
- const loginRule = defineRule<AuthContext>({
373
- id: "auth.login",
374
- description: "Process login event",
375
- impl: (state, events) => {
376
- const loginEvent = events.find(Login.is);
377
- if (loginEvent) {
378
- state.context.currentUser = loginEvent.payload.username;
379
- return [UserLoggedIn.create({ userId: loginEvent.payload.username })];
380
- }
381
- return [];
382
- },
383
- });
384
-
385
- // Create engine
386
- const registry = new PraxisRegistry<AuthContext>();
387
- registry.registerRule(loginRule);
388
-
389
- const engine = createPraxisEngine({
390
- initialContext: { currentUser: null },
391
- registry,
392
- });
132
+ ## CLI (npx-friendly)
133
+ ```bash
134
+ npx praxis --help
135
+ npx praxis create app my-app
136
+ npx praxis generate --schema src/schemas/app.schema.ts
137
+ npx praxis canvas src/schemas/app.schema.ts
138
+ ```
139
+
140
+ ## Exports map
141
+ - `@plures/praxis` → main engine (ESM/CJS/types)
142
+ - `@plures/praxis/svelte` → Svelte 5 integrations
143
+ - `@plures/praxis/schema` → Schema types
144
+ - `@plures/praxis/component` → Component generator
145
+ - `@plures/praxis/cloud` Cloud relay APIs
146
+ - `@plures/praxis/components` → TS props for Svelte components (e.g., TerminalNode)
147
+ - `praxis` (bin) → CLI entrypoint
148
+
149
+ ## Documentation
150
+ - [Getting Started](./GETTING_STARTED.md)
151
+ - [Framework Guide](./FRAMEWORK.md)
152
+ - [Examples](./examples/)
393
153
 
394
- // Dispatch events
395
- const result = engine.step([Login.create({ username: "alice" })]);
154
+ ## Contributing
155
+ PRs and discussions welcome. Please see [CONTRIBUTING.md](./CONTRIBUTING.md) and [SECURITY.md](./SECURITY.md).
396
156
  console.log(result.state.facts); // [{ tag: "UserLoggedIn", payload: { userId: "alice" } }]
397
157
  console.log(engine.getContext()); // { currentUser: "alice" }
398
158
  ```
@@ -400,13 +160,13 @@ console.log(engine.getContext()); // { currentUser: "alice" }
400
160
  ### With Constraints
401
161
 
402
162
  ```typescript
403
- import { defineConstraint } from "@plures/praxis";
163
+ import { defineConstraint } from '@plures/praxis';
404
164
 
405
165
  const maxSessionsConstraint = defineConstraint<AuthContext>({
406
- id: "auth.maxSessions",
407
- description: "Only one user can be logged in at a time",
166
+ id: 'auth.maxSessions',
167
+ description: 'Only one user can be logged in at a time',
408
168
  impl: (state) => {
409
- return state.context.currentUser === null || "User already logged in";
169
+ return state.context.currentUser === null || 'User already logged in';
410
170
  },
411
171
  });
412
172
 
@@ -418,7 +178,7 @@ registry.registerConstraint(maxSessionsConstraint);
418
178
  #### Store API (Svelte 4/5 Compatible)
419
179
 
420
180
  ```typescript
421
- import { createPraxisStore, createDerivedStore } from "@plures/praxis/svelte";
181
+ import { createPraxisStore, createDerivedStore } from '@plures/praxis/svelte';
422
182
 
423
183
  const stateStore = createPraxisStore(engine);
424
184
  const userStore = createDerivedStore(engine, (ctx) => ctx.currentUser);
@@ -438,7 +198,7 @@ const userStore = createDerivedStore(engine, (ctx) => ctx.currentUser);
438
198
  import { createMyEngine, Login } from './my-engine';
439
199
 
440
200
  const engine = createMyEngine();
441
- const {
201
+ const {
442
202
  context, // Reactive context
443
203
  dispatch, // Dispatch events
444
204
  undo, // Undo last action
@@ -453,15 +213,15 @@ const userStore = createDerivedStore(engine, (ctx) => ctx.currentUser);
453
213
 
454
214
  <div>
455
215
  <p>User: {context.currentUser || 'Guest'}</p>
456
-
216
+
457
217
  <button onclick={() => dispatch([Login.create({ username: 'alice' })])}>
458
218
  Login
459
219
  </button>
460
-
220
+
461
221
  <button onclick={undo} disabled={!canUndo}>
462
222
  ⟲ Undo
463
223
  </button>
464
-
224
+
465
225
  <button onclick={redo} disabled={!canRedo}>
466
226
  ⟳ Redo
467
227
  </button>
@@ -469,12 +229,14 @@ const userStore = createDerivedStore(engine, (ctx) => ctx.currentUser);
469
229
  ```
470
230
 
471
231
  See the [Advanced Todo Example](src/examples/advanced-todo/) for a complete demo with:
232
+
472
233
  - Undo/redo functionality
473
234
  - Time-travel debugging
474
235
  - Keyboard shortcuts
475
236
  - Beautiful UI
476
237
 
477
238
  For comprehensive guides:
239
+
478
240
  - [Svelte Integration Guide](docs/guides/svelte-integration.md)
479
241
  - [History State Pattern](docs/guides/history-state-pattern.md)
480
242
  - [Parallel State Pattern](docs/guides/parallel-state-pattern.md)
@@ -511,6 +273,7 @@ type PraxisStepFn = (
511
273
  ```
512
274
 
513
275
  This protocol is:
276
+
514
277
  - Pure and deterministic (data in → data out)
515
278
  - No side effects, no global state
516
279
  - JSON-friendly for cross-language compatibility
@@ -586,7 +349,9 @@ See [FRAMEWORK.md](./FRAMEWORK.md) for complete architecture documentation.
586
349
  The repository includes multiple complete examples:
587
350
 
588
351
  ### 1. Hero E-Commerce (`src/examples/hero-ecommerce`)
352
+
589
353
  Comprehensive example demonstrating all Praxis features in a single application:
354
+
590
355
  - Authentication with session management
591
356
  - Shopping cart with discount rules
592
357
  - Feature flags for A/B testing
@@ -600,7 +365,9 @@ node dist/examples/hero-ecommerce/index.js
600
365
  ```
601
366
 
602
367
  ### 2. Offline-First Chat (`examples/offline-chat`)
368
+
603
369
  Demonstrates local-first architecture with PluresDB:
370
+
604
371
  - Offline message composition and storage
605
372
  - Automatic sync when connected
606
373
  - Message queue for offline messages
@@ -610,7 +377,9 @@ Demonstrates local-first architecture with PluresDB:
610
377
  See [examples/offline-chat/README.md](./examples/offline-chat/README.md)
611
378
 
612
379
  ### 3. Knowledge Canvas (`examples/knowledge-canvas`)
380
+
613
381
  Showcases CodeCanvas integration for visual knowledge management:
382
+
614
383
  - Visual knowledge graph editing
615
384
  - Schema-driven content types
616
385
  - Generated UI components
@@ -620,7 +389,9 @@ Showcases CodeCanvas integration for visual knowledge management:
620
389
  See [examples/knowledge-canvas/README.md](./examples/knowledge-canvas/README.md)
621
390
 
622
391
  ### 4. Self-Orchestrating Node (`examples/distributed-node`)
392
+
623
393
  Demonstrates distributed orchestration with DSC/MCP:
394
+
624
395
  - Automatic node discovery
625
396
  - Self-healing behavior
626
397
  - State synchronization across nodes
@@ -630,7 +401,9 @@ Demonstrates distributed orchestration with DSC/MCP:
630
401
  See [examples/distributed-node/README.md](./examples/distributed-node/README.md)
631
402
 
632
403
  ### 5. Terminal Node (`examples/terminal-node`)
404
+
633
405
  Demonstrates the terminal node feature for command execution:
406
+
634
407
  - Terminal adapter creation and configuration
635
408
  - Command execution and history tracking
636
409
  - YAML schema loading with terminal nodes
@@ -645,6 +418,7 @@ node examples/terminal-node/index.js
645
418
  See [examples/terminal-node/README.md](./examples/terminal-node/README.md) and [docs/TERMINAL_NODE.md](./docs/TERMINAL_NODE.md)
646
419
 
647
420
  ### 6. Auth Basic (`src/examples/auth-basic`)
421
+
648
422
  Login/logout with facts, rules, and constraints.
649
423
 
650
424
  ```bash
@@ -653,6 +427,7 @@ node dist/examples/auth-basic/index.js
653
427
  ```
654
428
 
655
429
  ### 7. Cart (`src/examples/cart`)
430
+
656
431
  Shopping cart with multiple rules, constraints, and complex state management.
657
432
 
658
433
  ```bash
@@ -661,6 +436,7 @@ node dist/examples/cart/index.js
661
436
  ```
662
437
 
663
438
  ### 8. Svelte Counter (`src/examples/svelte-counter`)
439
+
664
440
  Counter example showing Svelte v5 integration with reactive stores.
665
441
 
666
442
  ```bash
@@ -669,21 +445,25 @@ node dist/examples/svelte-counter/index.js
669
445
  ```
670
446
 
671
447
  ### 9. Terminal Canvas (`examples/terminal-canvas`)
448
+
672
449
  Combines terminal nodes with visual canvas features in a Svelte app.
673
450
 
674
451
  See [examples/terminal-canvas/README.md](./examples/terminal-canvas/README.md)
675
452
 
676
453
  ### 10. GitHub Monetization (`examples/github-monetization`)
454
+
677
455
  Example of GitHub-based monetization integration with Praxis Cloud.
678
456
 
679
457
  See [examples/github-monetization/README.md](./examples/github-monetization/README.md)
680
458
 
681
459
  ### 11. Simple App (`examples/simple-app`)
460
+
682
461
  A minimal example demonstrating basic Praxis schema usage.
683
462
 
684
463
  See [examples/simple-app/README.md](./examples/simple-app/README.md)
685
464
 
686
465
  ### 12. Cloud Sync (`examples/cloud-sync`)
466
+
687
467
  Demonstrates real-time synchronization with Praxis Cloud relay service.
688
468
 
689
469
  See [examples/cloud-sync/README.md](./examples/cloud-sync/README.md)
@@ -718,7 +498,7 @@ See [examples/cloud-sync/README.md](./examples/cloud-sync/README.md)
718
498
  Tools for examining and visualizing your Praxis logic:
719
499
 
720
500
  ```typescript
721
- import { createIntrospector, PRAXIS_PROTOCOL_VERSION } from "@plures/praxis";
501
+ import { createIntrospector, PRAXIS_PROTOCOL_VERSION } from '@plures/praxis';
722
502
 
723
503
  const introspector = createIntrospector(registry);
724
504
 
@@ -745,6 +525,7 @@ const maxConstraints = introspector.searchConstraints('max');
745
525
  ```
746
526
 
747
527
  **Available methods:**
528
+
748
529
  - `getStats()` - Get registry statistics
749
530
  - `generateSchema(protocolVersion)` - Generate JSON schema
750
531
  - `generateGraph()` - Generate graph representation
@@ -764,11 +545,11 @@ Praxis integrates with the full Plures ecosystem:
764
545
  Local-first reactive datastore for offline-capable applications. **Now fully implemented** with 32 tests covering all features.
765
546
 
766
547
  ```typescript
767
- import {
768
- createInMemoryDB,
769
- createPraxisDBStore,
548
+ import {
549
+ createInMemoryDB,
550
+ createPraxisDBStore,
770
551
  createPluresDBAdapter,
771
- attachToEngine
552
+ attachToEngine,
772
553
  } from '@plures/praxis/pluresdb';
773
554
 
774
555
  // Create an in-memory database
@@ -778,26 +559,27 @@ const db = createInMemoryDB();
778
559
  const store = createPraxisDBStore({ db });
779
560
 
780
561
  // Or create an adapter to attach to an engine
781
- const adapter = createPluresDBAdapter({
782
- db,
562
+ const adapter = createPluresDBAdapter({
563
+ db,
783
564
  registry,
784
- initialContext: {}
565
+ initialContext: {},
785
566
  });
786
567
 
787
568
  // Attach adapter to engine for automatic persistence
788
569
  adapter.attachEngine(engine);
789
570
 
790
571
  // Persist facts and events
791
- await adapter.persistFacts([{ tag: "UserLoggedIn", payload: { userId: "alice" } }]);
792
- await adapter.persistEvents([{ tag: "LOGIN", payload: { username: "alice" } }]);
572
+ await adapter.persistFacts([{ tag: 'UserLoggedIn', payload: { userId: 'alice' } }]);
573
+ await adapter.persistEvents([{ tag: 'LOGIN', payload: { username: 'alice' } }]);
793
574
 
794
575
  // Subscribe to changes
795
576
  adapter.subscribeToEvents((events) => {
796
- console.log("New events:", events);
577
+ console.log('New events:', events);
797
578
  });
798
579
  ```
799
580
 
800
581
  **Features:**
582
+
801
583
  - **In-memory adapter**: Ready-to-use implementation for development and testing
802
584
  - **Reactive store**: Watch for changes with callbacks
803
585
  - **Schema registry**: Store and retrieve schemas in PluresDB
@@ -1011,6 +793,7 @@ See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for complete documentat
1011
793
  ## Roadmap
1012
794
 
1013
795
  ### Current Focus
796
+
1014
797
  - Full CodeCanvas integration
1015
798
  - Enhanced Unum identity support
1016
799
  - Advanced State-Docs generation
@@ -1018,6 +801,7 @@ See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for complete documentat
1018
801
  - Real PluresDB sync with CRDT/offline-first capabilities
1019
802
 
1020
803
  ### Long Term
804
+
1021
805
  - Mobile templates (iOS, Android)
1022
806
  - Enterprise features
1023
807
  - Advanced orchestration
@@ -1029,8 +813,9 @@ See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for complete documentat
1029
813
  The core protocol is implemented across multiple languages:
1030
814
 
1031
815
  **TypeScript** (Primary, npm: `@plures/praxis`)
816
+
1032
817
  ```typescript
1033
- import { createPraxisEngine, PraxisRegistry } from "@plures/praxis";
818
+ import { createPraxisEngine, PraxisRegistry } from '@plures/praxis';
1034
819
 
1035
820
  const engine = createPraxisEngine({
1036
821
  initialContext: {},
@@ -1040,6 +825,7 @@ const result = engine.step(events);
1040
825
  ```
1041
826
 
1042
827
  **C#** (.NET 8+, NuGet: `Plures.Praxis`)
828
+
1043
829
  ```csharp
1044
830
  var engine = PraxisEngine.Create(new PraxisEngineOptions<TContext> { ... });
1045
831
  var result = engine.Step(events);
@@ -1048,6 +834,7 @@ var result = engine.Step(events);
1048
834
  See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for full documentation.
1049
835
 
1050
836
  **PowerShell** (GitHub: `Praxis.psm1`)
837
+
1051
838
  ```powershell
1052
839
  $newState = Invoke-PraxisStep -State $state -Events $events
1053
840
  ```