@plures/praxis 0.2.0 → 1.0.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 (488) hide show
  1. package/README.md +282 -76
  2. package/core/codegen/docs-generator.ts +808 -0
  3. package/core/codegen/index.ts +27 -0
  4. package/core/codegen/ts-generator.ts +15 -0
  5. package/core/db-adapter/index.ts +52 -0
  6. package/core/db-adapter/sync-engine.ts +450 -0
  7. package/core/logic-engine/engine.ts +12 -0
  8. package/core/logic-engine/index.ts +16 -0
  9. package/core/logic-engine/protocol.ts +16 -0
  10. package/core/logic-engine/psf-adapter.ts +269 -0
  11. package/core/logic-engine/rules.ts +16 -0
  12. package/core/schema-engine/compiler.ts +431 -0
  13. package/core/schema-engine/generator.ts +635 -0
  14. package/core/schema-engine/index.ts +18 -0
  15. package/core/schema-engine/psf.ts +664 -0
  16. package/core/schema-engine/types.ts +63 -0
  17. package/core/schema-engine/validator.ts +541 -0
  18. package/dist/core/codegen/docs-generator.d.ts +123 -0
  19. package/dist/core/codegen/docs-generator.d.ts.map +1 -0
  20. package/dist/core/codegen/docs-generator.js +674 -0
  21. package/dist/core/codegen/docs-generator.js.map +1 -0
  22. package/dist/core/codegen/index.d.ts +11 -0
  23. package/dist/core/codegen/index.d.ts.map +1 -0
  24. package/dist/core/codegen/index.js +13 -0
  25. package/dist/core/codegen/index.js.map +1 -0
  26. package/dist/core/codegen/ts-generator.d.ts +8 -0
  27. package/dist/core/codegen/ts-generator.d.ts.map +1 -0
  28. package/dist/core/codegen/ts-generator.js +8 -0
  29. package/dist/core/codegen/ts-generator.js.map +1 -0
  30. package/dist/core/db-adapter/index.d.ts +18 -0
  31. package/dist/core/db-adapter/index.d.ts.map +1 -0
  32. package/dist/core/db-adapter/index.js +23 -0
  33. package/dist/core/db-adapter/index.js.map +1 -0
  34. package/dist/core/db-adapter/sync-engine.d.ts +180 -0
  35. package/dist/core/db-adapter/sync-engine.d.ts.map +1 -0
  36. package/dist/core/db-adapter/sync-engine.js +342 -0
  37. package/dist/core/db-adapter/sync-engine.js.map +1 -0
  38. package/dist/core/logic-engine/engine.d.ts +8 -0
  39. package/dist/core/logic-engine/engine.d.ts.map +1 -0
  40. package/dist/core/logic-engine/engine.js +8 -0
  41. package/dist/core/logic-engine/engine.js.map +1 -0
  42. package/dist/core/logic-engine/index.d.ts +16 -0
  43. package/dist/core/logic-engine/index.d.ts.map +1 -0
  44. package/dist/core/logic-engine/index.js +16 -0
  45. package/dist/core/logic-engine/index.js.map +1 -0
  46. package/dist/core/logic-engine/protocol.d.ts +7 -0
  47. package/dist/core/logic-engine/protocol.d.ts.map +1 -0
  48. package/dist/core/logic-engine/protocol.js +7 -0
  49. package/dist/core/logic-engine/protocol.js.map +1 -0
  50. package/dist/core/logic-engine/psf-adapter.d.ts +88 -0
  51. package/dist/core/logic-engine/psf-adapter.d.ts.map +1 -0
  52. package/dist/core/logic-engine/psf-adapter.js +207 -0
  53. package/dist/core/logic-engine/psf-adapter.js.map +1 -0
  54. package/dist/core/logic-engine/rules.d.ts +7 -0
  55. package/dist/core/logic-engine/rules.d.ts.map +1 -0
  56. package/dist/core/logic-engine/rules.js +7 -0
  57. package/dist/core/logic-engine/rules.js.map +1 -0
  58. package/dist/core/schema-engine/compiler.d.ts +198 -0
  59. package/dist/core/schema-engine/compiler.d.ts.map +1 -0
  60. package/dist/core/schema-engine/compiler.js +262 -0
  61. package/dist/core/schema-engine/compiler.js.map +1 -0
  62. package/dist/core/schema-engine/generator.d.ts +115 -0
  63. package/dist/core/schema-engine/generator.d.ts.map +1 -0
  64. package/dist/core/schema-engine/generator.js +506 -0
  65. package/dist/core/schema-engine/generator.js.map +1 -0
  66. package/dist/core/schema-engine/index.d.ts +18 -0
  67. package/dist/core/schema-engine/index.d.ts.map +1 -0
  68. package/dist/core/schema-engine/index.js +18 -0
  69. package/dist/core/schema-engine/index.js.map +1 -0
  70. package/dist/core/schema-engine/psf.d.ts +612 -0
  71. package/dist/core/schema-engine/psf.d.ts.map +1 -0
  72. package/dist/core/schema-engine/psf.js +45 -0
  73. package/dist/core/schema-engine/psf.js.map +1 -0
  74. package/dist/core/schema-engine/types.d.ts +10 -0
  75. package/dist/core/schema-engine/types.d.ts.map +1 -0
  76. package/dist/core/schema-engine/types.js +7 -0
  77. package/dist/core/schema-engine/types.js.map +1 -0
  78. package/dist/core/schema-engine/validator.d.ts +140 -0
  79. package/dist/core/schema-engine/validator.d.ts.map +1 -0
  80. package/dist/core/schema-engine/validator.js +407 -0
  81. package/dist/core/schema-engine/validator.js.map +1 -0
  82. package/dist/src/adapters/cli.d.ts.map +1 -0
  83. package/dist/src/adapters/cli.js.map +1 -0
  84. package/dist/src/cli/commands/auth.d.ts.map +1 -0
  85. package/dist/src/cli/commands/auth.js.map +1 -0
  86. package/dist/src/cli/commands/build.d.ts +23 -0
  87. package/dist/src/cli/commands/build.d.ts.map +1 -0
  88. package/dist/src/cli/commands/build.js +162 -0
  89. package/dist/src/cli/commands/build.js.map +1 -0
  90. package/dist/src/cli/commands/canvas.d.ts +23 -0
  91. package/dist/src/cli/commands/canvas.d.ts.map +1 -0
  92. package/dist/src/cli/commands/canvas.js +215 -0
  93. package/dist/src/cli/commands/canvas.js.map +1 -0
  94. package/dist/src/cli/commands/cloud.d.ts.map +1 -0
  95. package/dist/src/cli/commands/cloud.js.map +1 -0
  96. package/dist/src/cli/commands/create.d.ts +21 -0
  97. package/dist/src/cli/commands/create.d.ts.map +1 -0
  98. package/dist/src/cli/commands/create.js +621 -0
  99. package/dist/src/cli/commands/create.js.map +1 -0
  100. package/dist/src/cli/commands/dev.d.ts +21 -0
  101. package/dist/src/cli/commands/dev.d.ts.map +1 -0
  102. package/dist/src/cli/commands/dev.js +71 -0
  103. package/dist/src/cli/commands/dev.js.map +1 -0
  104. package/dist/src/cli/commands/generate.d.ts.map +1 -0
  105. package/dist/src/cli/commands/generate.js.map +1 -0
  106. package/dist/src/cli/commands/orchestrate.d.ts +44 -0
  107. package/dist/src/cli/commands/orchestrate.d.ts.map +1 -0
  108. package/dist/src/cli/commands/orchestrate.js +150 -0
  109. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  110. package/dist/{cli → src/cli}/index.d.ts.map +1 -1
  111. package/dist/{cli → src/cli}/index.js +53 -21
  112. package/dist/src/cli/index.js.map +1 -0
  113. package/dist/src/cloud/auth.d.ts.map +1 -0
  114. package/dist/src/cloud/auth.js.map +1 -0
  115. package/dist/src/cloud/billing.d.ts.map +1 -0
  116. package/dist/src/cloud/billing.js.map +1 -0
  117. package/dist/src/cloud/client.d.ts.map +1 -0
  118. package/dist/src/cloud/client.js.map +1 -0
  119. package/dist/src/cloud/index.d.ts.map +1 -0
  120. package/dist/src/cloud/index.js.map +1 -0
  121. package/dist/src/cloud/marketplace.d.ts.map +1 -0
  122. package/dist/src/cloud/marketplace.js.map +1 -0
  123. package/dist/src/cloud/provisioning.d.ts.map +1 -0
  124. package/dist/src/cloud/provisioning.js.map +1 -0
  125. package/dist/src/cloud/relay/endpoints.d.ts.map +1 -0
  126. package/dist/src/cloud/relay/endpoints.js.map +1 -0
  127. package/dist/src/cloud/relay/health/index.d.ts.map +1 -0
  128. package/dist/src/cloud/relay/health/index.js.map +1 -0
  129. package/dist/src/cloud/relay/stats/index.d.ts.map +1 -0
  130. package/dist/src/cloud/relay/stats/index.js.map +1 -0
  131. package/dist/src/cloud/relay/sync/index.d.ts.map +1 -0
  132. package/dist/src/cloud/relay/sync/index.js.map +1 -0
  133. package/dist/src/cloud/relay/usage/index.d.ts.map +1 -0
  134. package/dist/src/cloud/relay/usage/index.js.map +1 -0
  135. package/dist/src/cloud/sponsors.d.ts.map +1 -0
  136. package/dist/src/cloud/sponsors.js.map +1 -0
  137. package/dist/src/cloud/types.d.ts.map +1 -0
  138. package/dist/src/cloud/types.js.map +1 -0
  139. package/dist/src/components/index.d.ts.map +1 -0
  140. package/dist/src/components/index.js.map +1 -0
  141. package/dist/src/core/actors.d.ts.map +1 -0
  142. package/dist/src/core/actors.js.map +1 -0
  143. package/dist/src/core/component/generator.d.ts.map +1 -0
  144. package/dist/{core → src/core}/component/generator.js +45 -3
  145. package/dist/src/core/component/generator.js.map +1 -0
  146. package/dist/src/core/engine.d.ts.map +1 -0
  147. package/dist/src/core/engine.js.map +1 -0
  148. package/dist/src/core/introspection.d.ts.map +1 -0
  149. package/dist/src/core/introspection.js.map +1 -0
  150. package/dist/src/core/logic/generator.d.ts.map +1 -0
  151. package/dist/{core → src/core}/logic/generator.js +35 -4
  152. package/dist/src/core/logic/generator.js.map +1 -0
  153. package/dist/src/core/pluresdb/adapter.d.ts +72 -0
  154. package/dist/src/core/pluresdb/adapter.d.ts.map +1 -0
  155. package/dist/src/core/pluresdb/adapter.js +73 -0
  156. package/dist/src/core/pluresdb/adapter.js.map +1 -0
  157. package/dist/src/core/pluresdb/generator.d.ts.map +1 -0
  158. package/dist/{core → src/core}/pluresdb/generator.js +33 -4
  159. package/dist/src/core/pluresdb/generator.js.map +1 -0
  160. package/dist/src/core/pluresdb/index.d.ts +15 -0
  161. package/dist/src/core/pluresdb/index.d.ts.map +1 -0
  162. package/dist/src/core/pluresdb/index.js +11 -0
  163. package/dist/src/core/pluresdb/index.js.map +1 -0
  164. package/dist/src/core/pluresdb/schema-registry.d.ts +104 -0
  165. package/dist/src/core/pluresdb/schema-registry.d.ts.map +1 -0
  166. package/dist/src/core/pluresdb/schema-registry.js +130 -0
  167. package/dist/src/core/pluresdb/schema-registry.js.map +1 -0
  168. package/dist/src/core/pluresdb/store.d.ts +199 -0
  169. package/dist/src/core/pluresdb/store.d.ts.map +1 -0
  170. package/dist/src/core/pluresdb/store.js +344 -0
  171. package/dist/src/core/pluresdb/store.js.map +1 -0
  172. package/dist/src/core/protocol.d.ts.map +1 -0
  173. package/dist/src/core/protocol.js.map +1 -0
  174. package/dist/src/core/rules.d.ts.map +1 -0
  175. package/dist/src/core/rules.js.map +1 -0
  176. package/dist/src/core/schema/loader.d.ts.map +1 -0
  177. package/dist/{core → src/core}/schema/loader.js +2 -2
  178. package/dist/src/core/schema/loader.js.map +1 -0
  179. package/dist/src/core/schema/normalize.d.ts.map +1 -0
  180. package/dist/src/core/schema/normalize.js.map +1 -0
  181. package/dist/src/core/schema/types.d.ts.map +1 -0
  182. package/dist/src/core/schema/types.js.map +1 -0
  183. package/dist/src/dsl/index.d.ts.map +1 -0
  184. package/dist/src/dsl/index.js.map +1 -0
  185. package/dist/src/dsl.d.ts.map +1 -0
  186. package/dist/src/dsl.js.map +1 -0
  187. package/dist/src/examples/advanced-todo/index.d.ts.map +1 -0
  188. package/dist/src/examples/advanced-todo/index.js.map +1 -0
  189. package/dist/src/examples/auth-basic/index.d.ts.map +1 -0
  190. package/dist/src/examples/auth-basic/index.js.map +1 -0
  191. package/dist/src/examples/cart/index.d.ts.map +1 -0
  192. package/dist/src/examples/cart/index.js.map +1 -0
  193. package/dist/src/examples/hero-ecommerce/index.d.ts.map +1 -0
  194. package/dist/src/examples/hero-ecommerce/index.js.map +1 -0
  195. package/dist/src/examples/svelte-counter/index.d.ts.map +1 -0
  196. package/dist/src/examples/svelte-counter/index.js.map +1 -0
  197. package/dist/src/flows.d.ts.map +1 -0
  198. package/dist/src/flows.js.map +1 -0
  199. package/dist/{index.d.ts → src/index.d.ts} +12 -2
  200. package/dist/src/index.d.ts.map +1 -0
  201. package/dist/{index.js → src/index.js} +6 -1
  202. package/dist/src/index.js.map +1 -0
  203. package/dist/src/integrations/code-canvas.d.ts +265 -0
  204. package/dist/src/integrations/code-canvas.d.ts.map +1 -0
  205. package/dist/src/integrations/code-canvas.js +451 -0
  206. package/dist/src/integrations/code-canvas.js.map +1 -0
  207. package/dist/src/integrations/pluresdb.d.ts +117 -0
  208. package/dist/src/integrations/pluresdb.d.ts.map +1 -0
  209. package/dist/src/integrations/pluresdb.js +117 -0
  210. package/dist/src/integrations/pluresdb.js.map +1 -0
  211. package/dist/src/integrations/state-docs.d.ts +191 -0
  212. package/dist/src/integrations/state-docs.d.ts.map +1 -0
  213. package/dist/src/integrations/state-docs.js +515 -0
  214. package/dist/src/integrations/state-docs.js.map +1 -0
  215. package/dist/src/integrations/svelte.d.ts.map +1 -0
  216. package/dist/src/integrations/svelte.js.map +1 -0
  217. package/dist/src/integrations/tauri.d.ts +360 -0
  218. package/dist/src/integrations/tauri.d.ts.map +1 -0
  219. package/dist/src/integrations/tauri.js +278 -0
  220. package/dist/src/integrations/tauri.js.map +1 -0
  221. package/dist/src/integrations/unum.d.ts +159 -0
  222. package/dist/src/integrations/unum.d.ts.map +1 -0
  223. package/dist/src/integrations/unum.js +240 -0
  224. package/dist/src/integrations/unum.js.map +1 -0
  225. package/dist/src/registry.d.ts.map +1 -0
  226. package/dist/src/registry.js.map +1 -0
  227. package/dist/{runtime → src/runtime}/terminal-adapter.d.ts +58 -7
  228. package/dist/src/runtime/terminal-adapter.d.ts.map +1 -0
  229. package/dist/src/runtime/terminal-adapter.js +237 -0
  230. package/dist/src/runtime/terminal-adapter.js.map +1 -0
  231. package/dist/src/step.d.ts.map +1 -0
  232. package/dist/src/step.js.map +1 -0
  233. package/dist/src/types.d.ts.map +1 -0
  234. package/dist/{cloud → src}/types.js.map +1 -1
  235. package/dist/tools/cli/commands/index.d.ts +7 -0
  236. package/dist/tools/cli/commands/index.d.ts.map +1 -0
  237. package/dist/tools/cli/commands/index.js +7 -0
  238. package/dist/tools/cli/commands/index.js.map +1 -0
  239. package/dist/tools/cli/index.d.ts +8 -0
  240. package/dist/tools/cli/index.d.ts.map +1 -0
  241. package/dist/tools/cli/index.js +9 -0
  242. package/dist/tools/cli/index.js.map +1 -0
  243. package/dist/tools/watcher/index.d.ts +105 -0
  244. package/dist/tools/watcher/index.d.ts.map +1 -0
  245. package/dist/tools/watcher/index.js +213 -0
  246. package/dist/tools/watcher/index.js.map +1 -0
  247. package/dist/ui/canvas/canvas-projection.d.ts +78 -0
  248. package/dist/ui/canvas/canvas-projection.d.ts.map +1 -0
  249. package/dist/ui/canvas/canvas-projection.js +416 -0
  250. package/dist/ui/canvas/canvas-projection.js.map +1 -0
  251. package/dist/ui/canvas/canvas-state.d.ts +200 -0
  252. package/dist/ui/canvas/canvas-state.d.ts.map +1 -0
  253. package/dist/ui/canvas/canvas-state.js +464 -0
  254. package/dist/ui/canvas/canvas-state.js.map +1 -0
  255. package/dist/ui/canvas/components/index.d.ts +95 -0
  256. package/dist/ui/canvas/components/index.d.ts.map +1 -0
  257. package/dist/ui/canvas/components/index.js +19 -0
  258. package/dist/ui/canvas/components/index.js.map +1 -0
  259. package/dist/ui/canvas/index.d.ts +32 -0
  260. package/dist/ui/canvas/index.d.ts.map +1 -0
  261. package/dist/ui/canvas/index.js +32 -0
  262. package/dist/ui/canvas/index.js.map +1 -0
  263. package/dist/ui/svelte-generator/index.d.ts +9 -0
  264. package/dist/ui/svelte-generator/index.d.ts.map +1 -0
  265. package/dist/ui/svelte-generator/index.js +11 -0
  266. package/dist/ui/svelte-generator/index.js.map +1 -0
  267. package/dist/ui/svelte-generator/psf-generator.d.ts +128 -0
  268. package/dist/ui/svelte-generator/psf-generator.d.ts.map +1 -0
  269. package/dist/ui/svelte-generator/psf-generator.js +506 -0
  270. package/dist/ui/svelte-generator/psf-generator.js.map +1 -0
  271. package/docs/README.md +155 -0
  272. package/docs/core/building-extensions.md +553 -0
  273. package/docs/core/cli-usage.md +498 -0
  274. package/docs/core/code-canvas-sync.md +468 -0
  275. package/docs/core/logic-engine.md +566 -0
  276. package/docs/core/pluresdb-integration.md +646 -0
  277. package/docs/core/schema-model.md +414 -0
  278. package/docs/core/ui-generation.md +580 -0
  279. package/docs/core/what-is-praxis.md +240 -0
  280. package/docs/tutorials/README.md +84 -0
  281. package/docs/tutorials/ecommerce-cart.md +631 -0
  282. package/docs/tutorials/first-app.md +529 -0
  283. package/docs/tutorials/form-builder.md +620 -0
  284. package/docs/tutorials/todo-pluresdb.md +589 -0
  285. package/package.json +1 -1
  286. package/src/__tests__/canvas-components.test.ts +450 -0
  287. package/src/__tests__/cli-create.test.ts +178 -0
  288. package/src/__tests__/code-canvas-integration.test.ts +277 -0
  289. package/src/__tests__/docs-generator.test.ts +181 -0
  290. package/src/__tests__/generators.test.ts +3 -2
  291. package/src/__tests__/pluresdb.test.ts +457 -0
  292. package/src/__tests__/psf-schema-engine.test.ts +450 -0
  293. package/src/__tests__/state-docs-integration.test.ts +297 -0
  294. package/src/__tests__/tauri-integration.test.ts +298 -0
  295. package/src/__tests__/terminal-node.test.ts +1 -1
  296. package/src/__tests__/unum-integration.test.ts +142 -0
  297. package/src/cli/commands/build.ts +203 -0
  298. package/src/cli/commands/canvas.ts +246 -0
  299. package/src/cli/commands/create.ts +666 -0
  300. package/src/cli/commands/dev.ts +95 -0
  301. package/src/cli/commands/orchestrate.ts +212 -0
  302. package/src/cli/index.ts +48 -21
  303. package/src/core/actors.ts +1 -1
  304. package/src/core/component/generator.ts +45 -3
  305. package/src/core/logic/generator.ts +39 -4
  306. package/src/core/pluresdb/adapter.ts +117 -0
  307. package/src/core/pluresdb/generator.ts +33 -4
  308. package/src/core/pluresdb/index.ts +37 -0
  309. package/src/core/pluresdb/schema-registry.ts +162 -0
  310. package/src/core/pluresdb/store.ts +443 -0
  311. package/src/core/schema/loader.ts +2 -2
  312. package/src/index.ts +109 -0
  313. package/src/integrations/code-canvas.ts +717 -0
  314. package/src/integrations/pluresdb.ts +140 -29
  315. package/src/integrations/state-docs.ts +710 -0
  316. package/src/integrations/tauri.ts +638 -0
  317. package/src/integrations/unum.ts +395 -0
  318. package/src/runtime/terminal-adapter.ts +178 -23
  319. package/dist/adapters/cli.d.ts.map +0 -1
  320. package/dist/adapters/cli.js.map +0 -1
  321. package/dist/cli/commands/auth.d.ts.map +0 -1
  322. package/dist/cli/commands/auth.js.map +0 -1
  323. package/dist/cli/commands/cloud.d.ts.map +0 -1
  324. package/dist/cli/commands/cloud.js.map +0 -1
  325. package/dist/cli/commands/generate.d.ts.map +0 -1
  326. package/dist/cli/commands/generate.js.map +0 -1
  327. package/dist/cli/index.js.map +0 -1
  328. package/dist/cloud/auth.d.ts.map +0 -1
  329. package/dist/cloud/auth.js.map +0 -1
  330. package/dist/cloud/billing.d.ts.map +0 -1
  331. package/dist/cloud/billing.js.map +0 -1
  332. package/dist/cloud/client.d.ts.map +0 -1
  333. package/dist/cloud/client.js.map +0 -1
  334. package/dist/cloud/index.d.ts.map +0 -1
  335. package/dist/cloud/index.js.map +0 -1
  336. package/dist/cloud/marketplace.d.ts.map +0 -1
  337. package/dist/cloud/marketplace.js.map +0 -1
  338. package/dist/cloud/provisioning.d.ts.map +0 -1
  339. package/dist/cloud/provisioning.js.map +0 -1
  340. package/dist/cloud/relay/endpoints.d.ts.map +0 -1
  341. package/dist/cloud/relay/endpoints.js.map +0 -1
  342. package/dist/cloud/relay/health/index.d.ts.map +0 -1
  343. package/dist/cloud/relay/health/index.js.map +0 -1
  344. package/dist/cloud/relay/stats/index.d.ts.map +0 -1
  345. package/dist/cloud/relay/stats/index.js.map +0 -1
  346. package/dist/cloud/relay/sync/index.d.ts.map +0 -1
  347. package/dist/cloud/relay/sync/index.js.map +0 -1
  348. package/dist/cloud/relay/usage/index.d.ts.map +0 -1
  349. package/dist/cloud/relay/usage/index.js.map +0 -1
  350. package/dist/cloud/sponsors.d.ts.map +0 -1
  351. package/dist/cloud/sponsors.js.map +0 -1
  352. package/dist/cloud/types.d.ts.map +0 -1
  353. package/dist/components/index.d.ts.map +0 -1
  354. package/dist/components/index.js.map +0 -1
  355. package/dist/core/actors.d.ts.map +0 -1
  356. package/dist/core/actors.js.map +0 -1
  357. package/dist/core/component/generator.d.ts.map +0 -1
  358. package/dist/core/component/generator.js.map +0 -1
  359. package/dist/core/engine.d.ts.map +0 -1
  360. package/dist/core/engine.js.map +0 -1
  361. package/dist/core/introspection.d.ts.map +0 -1
  362. package/dist/core/introspection.js.map +0 -1
  363. package/dist/core/logic/generator.d.ts.map +0 -1
  364. package/dist/core/logic/generator.js.map +0 -1
  365. package/dist/core/pluresdb/generator.d.ts.map +0 -1
  366. package/dist/core/pluresdb/generator.js.map +0 -1
  367. package/dist/core/protocol.d.ts.map +0 -1
  368. package/dist/core/protocol.js.map +0 -1
  369. package/dist/core/rules.d.ts.map +0 -1
  370. package/dist/core/rules.js.map +0 -1
  371. package/dist/core/schema/loader.d.ts.map +0 -1
  372. package/dist/core/schema/loader.js.map +0 -1
  373. package/dist/core/schema/normalize.d.ts.map +0 -1
  374. package/dist/core/schema/normalize.js.map +0 -1
  375. package/dist/core/schema/types.d.ts.map +0 -1
  376. package/dist/core/schema/types.js.map +0 -1
  377. package/dist/dsl/index.d.ts.map +0 -1
  378. package/dist/dsl/index.js.map +0 -1
  379. package/dist/dsl.d.ts.map +0 -1
  380. package/dist/dsl.js.map +0 -1
  381. package/dist/examples/advanced-todo/index.d.ts.map +0 -1
  382. package/dist/examples/advanced-todo/index.js.map +0 -1
  383. package/dist/examples/auth-basic/index.d.ts.map +0 -1
  384. package/dist/examples/auth-basic/index.js.map +0 -1
  385. package/dist/examples/cart/index.d.ts.map +0 -1
  386. package/dist/examples/cart/index.js.map +0 -1
  387. package/dist/examples/hero-ecommerce/index.d.ts.map +0 -1
  388. package/dist/examples/hero-ecommerce/index.js.map +0 -1
  389. package/dist/examples/svelte-counter/index.d.ts.map +0 -1
  390. package/dist/examples/svelte-counter/index.js.map +0 -1
  391. package/dist/flows.d.ts.map +0 -1
  392. package/dist/flows.js.map +0 -1
  393. package/dist/index.d.ts.map +0 -1
  394. package/dist/index.js.map +0 -1
  395. package/dist/integrations/pluresdb.d.ts +0 -56
  396. package/dist/integrations/pluresdb.d.ts.map +0 -1
  397. package/dist/integrations/pluresdb.js +0 -46
  398. package/dist/integrations/pluresdb.js.map +0 -1
  399. package/dist/integrations/svelte.d.ts.map +0 -1
  400. package/dist/integrations/svelte.js.map +0 -1
  401. package/dist/registry.d.ts.map +0 -1
  402. package/dist/registry.js.map +0 -1
  403. package/dist/runtime/terminal-adapter.d.ts.map +0 -1
  404. package/dist/runtime/terminal-adapter.js +0 -113
  405. package/dist/runtime/terminal-adapter.js.map +0 -1
  406. package/dist/step.d.ts.map +0 -1
  407. package/dist/step.js.map +0 -1
  408. package/dist/types.d.ts.map +0 -1
  409. package/dist/types.js.map +0 -1
  410. /package/dist/{adapters → src/adapters}/cli.d.ts +0 -0
  411. /package/dist/{adapters → src/adapters}/cli.js +0 -0
  412. /package/dist/{cli → src/cli}/commands/auth.d.ts +0 -0
  413. /package/dist/{cli → src/cli}/commands/auth.js +0 -0
  414. /package/dist/{cli → src/cli}/commands/cloud.d.ts +0 -0
  415. /package/dist/{cli → src/cli}/commands/cloud.js +0 -0
  416. /package/dist/{cli → src/cli}/commands/generate.d.ts +0 -0
  417. /package/dist/{cli → src/cli}/commands/generate.js +0 -0
  418. /package/dist/{cli → src/cli}/index.d.ts +0 -0
  419. /package/dist/{cloud → src/cloud}/auth.d.ts +0 -0
  420. /package/dist/{cloud → src/cloud}/auth.js +0 -0
  421. /package/dist/{cloud → src/cloud}/billing.d.ts +0 -0
  422. /package/dist/{cloud → src/cloud}/billing.js +0 -0
  423. /package/dist/{cloud → src/cloud}/client.d.ts +0 -0
  424. /package/dist/{cloud → src/cloud}/client.js +0 -0
  425. /package/dist/{cloud → src/cloud}/index.d.ts +0 -0
  426. /package/dist/{cloud → src/cloud}/index.js +0 -0
  427. /package/dist/{cloud → src/cloud}/marketplace.d.ts +0 -0
  428. /package/dist/{cloud → src/cloud}/marketplace.js +0 -0
  429. /package/dist/{cloud → src/cloud}/provisioning.d.ts +0 -0
  430. /package/dist/{cloud → src/cloud}/provisioning.js +0 -0
  431. /package/dist/{cloud → src/cloud}/relay/endpoints.d.ts +0 -0
  432. /package/dist/{cloud → src/cloud}/relay/endpoints.js +0 -0
  433. /package/dist/{cloud → src/cloud}/relay/health/index.d.ts +0 -0
  434. /package/dist/{cloud → src/cloud}/relay/health/index.js +0 -0
  435. /package/dist/{cloud → src/cloud}/relay/stats/index.d.ts +0 -0
  436. /package/dist/{cloud → src/cloud}/relay/stats/index.js +0 -0
  437. /package/dist/{cloud → src/cloud}/relay/sync/index.d.ts +0 -0
  438. /package/dist/{cloud → src/cloud}/relay/sync/index.js +0 -0
  439. /package/dist/{cloud → src/cloud}/relay/usage/index.d.ts +0 -0
  440. /package/dist/{cloud → src/cloud}/relay/usage/index.js +0 -0
  441. /package/dist/{cloud → src/cloud}/sponsors.d.ts +0 -0
  442. /package/dist/{cloud → src/cloud}/sponsors.js +0 -0
  443. /package/dist/{cloud → src/cloud}/types.d.ts +0 -0
  444. /package/dist/{cloud → src/cloud}/types.js +0 -0
  445. /package/dist/{components → src/components}/index.d.ts +0 -0
  446. /package/dist/{components → src/components}/index.js +0 -0
  447. /package/dist/{core → src/core}/actors.d.ts +0 -0
  448. /package/dist/{core → src/core}/actors.js +0 -0
  449. /package/dist/{core → src/core}/component/generator.d.ts +0 -0
  450. /package/dist/{core → src/core}/engine.d.ts +0 -0
  451. /package/dist/{core → src/core}/engine.js +0 -0
  452. /package/dist/{core → src/core}/introspection.d.ts +0 -0
  453. /package/dist/{core → src/core}/introspection.js +0 -0
  454. /package/dist/{core → src/core}/logic/generator.d.ts +0 -0
  455. /package/dist/{core → src/core}/pluresdb/generator.d.ts +0 -0
  456. /package/dist/{core → src/core}/protocol.d.ts +0 -0
  457. /package/dist/{core → src/core}/protocol.js +0 -0
  458. /package/dist/{core → src/core}/rules.d.ts +0 -0
  459. /package/dist/{core → src/core}/rules.js +0 -0
  460. /package/dist/{core → src/core}/schema/loader.d.ts +0 -0
  461. /package/dist/{core → src/core}/schema/normalize.d.ts +0 -0
  462. /package/dist/{core → src/core}/schema/normalize.js +0 -0
  463. /package/dist/{core → src/core}/schema/types.d.ts +0 -0
  464. /package/dist/{core → src/core}/schema/types.js +0 -0
  465. /package/dist/{dsl → src/dsl}/index.d.ts +0 -0
  466. /package/dist/{dsl → src/dsl}/index.js +0 -0
  467. /package/dist/{dsl.d.ts → src/dsl.d.ts} +0 -0
  468. /package/dist/{dsl.js → src/dsl.js} +0 -0
  469. /package/dist/{examples → src/examples}/advanced-todo/index.d.ts +0 -0
  470. /package/dist/{examples → src/examples}/advanced-todo/index.js +0 -0
  471. /package/dist/{examples → src/examples}/auth-basic/index.d.ts +0 -0
  472. /package/dist/{examples → src/examples}/auth-basic/index.js +0 -0
  473. /package/dist/{examples → src/examples}/cart/index.d.ts +0 -0
  474. /package/dist/{examples → src/examples}/cart/index.js +0 -0
  475. /package/dist/{examples → src/examples}/hero-ecommerce/index.d.ts +0 -0
  476. /package/dist/{examples → src/examples}/hero-ecommerce/index.js +0 -0
  477. /package/dist/{examples → src/examples}/svelte-counter/index.d.ts +0 -0
  478. /package/dist/{examples → src/examples}/svelte-counter/index.js +0 -0
  479. /package/dist/{flows.d.ts → src/flows.d.ts} +0 -0
  480. /package/dist/{flows.js → src/flows.js} +0 -0
  481. /package/dist/{integrations → src/integrations}/svelte.d.ts +0 -0
  482. /package/dist/{integrations → src/integrations}/svelte.js +0 -0
  483. /package/dist/{registry.d.ts → src/registry.d.ts} +0 -0
  484. /package/dist/{registry.js → src/registry.js} +0 -0
  485. /package/dist/{step.d.ts → src/step.d.ts} +0 -0
  486. /package/dist/{step.js → src/step.js} +0 -0
  487. /package/dist/{types.d.ts → src/types.d.ts} +0 -0
  488. /package/dist/{types.js → src/types.js} +0 -0
package/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![CodeQL](https://github.com/plures/praxis/workflows/CodeQL/badge.svg)](https://github.com/plures/praxis/actions/workflows/codeql.yml)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
  [![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/)
7
8
  [![JSR](https://jsr.io/badges/@plures/praxis)](https://jsr.io/@plures/praxis)
8
9
  [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
9
10
  [![Deno Compatible](https://img.shields.io/badge/deno-compatible-brightgreen)](https://deno.land/)
@@ -19,29 +20,38 @@
19
20
  - 💬 [Discussions](https://github.com/plures/praxis/discussions) | [Issues](https://github.com/plures/praxis/issues)
20
21
  - 🚀 [Contributing](./CONTRIBUTING.md) | [Security Policy](./SECURITY.md)
21
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)
22
24
 
23
25
  ### Project Status
24
26
 
25
27
  | Category | Status |
26
28
  |----------|--------|
27
29
  | **CI/CD** | ✅ Automated testing & builds |
28
- | **Version** | 0.1.0 (Alpha) |
29
- | **Runtime Support** | Node.js 18+, Deno (experimental) |
30
- | **Package Registries** | npm ✅ / JSR 🚧 (coming soon) |
31
- | **Test Coverage** | 165 tests passing |
30
+ | **Version** | 0.2.1 (Alpha) |
31
+ | **Runtime Support** | Node.js 18+, Deno (experimental), .NET 8+ |
32
+ | **Package Registries** | npm ✅ / NuGet ✅ / JSR 🚧 (coming soon) |
33
+ | **Test Coverage** | 202 TypeScript + 68 C# tests passing |
32
34
  | **Documentation** | 📚 Comprehensive guides available |
33
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
+
34
44
  ### Integration Status
35
45
 
36
46
  | Integration | Status | Notes |
37
47
  |------------|--------|-------|
38
48
  | **Praxis Cloud** | ✅ Available | Azure-hosted relay for sync & monetization |
39
- | **PluresDB** | 🚧 In Development | Local-first reactive datastore |
40
- | **Unum** | 🚧 Planned | Identity & channels |
49
+ | **PluresDB** | Available | Local-first reactive datastore with 32 tests |
50
+ | **Unum** | Available | Identity & channels integration |
41
51
  | **Svelte 5** | ✅ Full Support | Runes API, stores, history, time-travel |
42
- | **Tauri** | 🚧 Planned | Cross-platform runtime |
43
- | **CodeCanvas** | 🚧 Planned | Visual schema editor |
44
- | **State-Docs** | 🚧 Planned | Documentation generation |
52
+ | **Tauri** | Available | Cross-platform desktop runtime |
53
+ | **CodeCanvas** | Available | Visual schema editor & FSM enforcement |
54
+ | **State-Docs** | Available | Documentation generation from schemas |
45
55
 
46
56
  ---
47
57
 
@@ -49,29 +59,84 @@
49
59
 
50
60
  Praxis is not just a logic engine—it's a **complete framework** for building modern, local-first, distributed applications. It provides:
51
61
 
52
- - **Declarative Schemas**: Define your data models, logic, and components in a unified schema format
62
+ - **Declarative Schemas**: Define your data models, logic, and components in a unified schema format (PSF)
53
63
  - **Logic/State Machines**: Pure, functional application logic with facts, events, rules, and constraints
54
64
  - **Component Generation**: Automatically generate Svelte components from schemas
55
65
  - **Local-First Data**: Integrated PluresDB for reactive, offline-capable data storage
56
- - **Documentation Generation**: Automatic State-Docs generation from your schemas
66
+ - **Documentation Generation**: Automatic documentation generation from schemas with Mermaid diagrams
57
67
  - **Visual Design**: CodeCanvas integration for visual schema and logic editing
68
+ - **Real-Time Code ↔ Canvas Sync**: Bidirectional synchronization between code and visual editor
58
69
  - **Orchestration**: DSC/MCP support for distributed system coordination
59
70
  - **Cross-Platform Runtime**: Web, desktop, and mobile via Svelte + Tauri
60
71
 
72
+ ## 🚀 Praxis 1.0 Architecture
73
+
74
+ Praxis 1.0 introduces a **schema-driven, modular architecture** where the Praxis Schema Format (PSF) serves as the single source of truth.
75
+
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": "1.0.0",
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
+
61
126
  ### Framework Philosophy
62
127
 
63
128
  ### Core Framework Components
64
129
 
65
130
  Praxis provides these integrated capabilities:
66
131
 
67
- - **Schema System** – Declarative definitions that generate models, components, and documentation
132
+ - **Schema Engine** – PSF parser, compiler, generator, and validator
68
133
  - **Logic Engine** – Typed facts, events, rules, and constraints for application logic
69
134
  - **Component Factory** – Generate Svelte components from schemas with data bindings
70
135
  - **Data Layer** – PluresDB integration for reactive, local-first data storage
71
136
  - **State Machines** – Flows and scenarios for orchestrated behaviors
72
137
  - **Actors** – Effectful units for side effects and external system integration
73
- - **Terminal Nodes** – Execute commands and scripts within the Praxis framework (NEW!)
74
- - **Documentation** – Automatic State-Docs generation from schemas and logic
138
+ - **Terminal Nodes** – Execute commands and scripts within the Praxis framework
139
+ - **Documentation** – Automatic documentation generation from schemas with Mermaid diagrams
75
140
  - **Visual IDE** – CodeCanvas integration for schema and logic editing
76
141
  - **Orchestration** – DSC/MCP support for distributed coordination
77
142
  - **CLI Tools** – Command-line interface for scaffolding and generation
@@ -144,20 +209,26 @@ Praxis provides these integrated capabilities:
144
209
  - 🔒 **Type-Safe**: Full TypeScript support with strict typing
145
210
  - 🔍 **Introspection**: Generate schemas, graphs, and visualizations of your logic
146
211
  - 🌐 **Cross-Language**: PowerShell adapter with protocol versioning (C# coming soon)
147
- - 📊 **Comprehensive Testing**: 165+ tests covering all features
212
+ - 📊 **Comprehensive Testing**: 197+ TypeScript and 95+ C# tests covering all features
148
213
  - 🎭 **Hero Example**: Full e-commerce demo with auth, cart, features, and actors
149
214
 
150
- ## What's New in v0.1.0
215
+ ## What's New in v0.2.0
151
216
 
152
217
  ### 🎉 Major Features
153
218
 
219
+ #### Full Application Framework
220
+ Praxis 0.2.0 transforms from a logic engine into a **complete application framework**:
221
+ - **Complete Schema System**: Comprehensive type definitions for models, components, logic, and orchestration
222
+ - **Component Generation**: Automatic Svelte component generation from schemas
223
+ - **CLI Tools**: `praxis create`, `praxis generate`, `praxis canvas` commands
224
+ - **Cloud Integration**: GitHub-based authentication and tier-based billing
225
+ - **PluresDB Integration**: Local-first reactive datastore with full implementation
226
+
154
227
  #### Svelte 5 Integration (@plures/praxis/svelte)
155
- - **Runes Composables**: `usePraxisEngine`, `usePraxisContext`, `usePraxisSubscription`
156
- - **History State Pattern**: `HistoryStateManager`, `createHistoryEngine`
157
- - **Time-Travel Debugging**: Navigate through state snapshots
158
- - **Undo/Redo**: Built-in with configurable history size
228
+ - **Runes Composables**: `usePraxisState`, `usePraxisHistory`, `usePraxisComputed`
229
+ - **History State Pattern**: Time-travel debugging with undo/redo
159
230
  - **Store API**: Compatible with Svelte 4 and 5
160
- - **16 new tests** ensuring rock-solid reliability
231
+ - **Full TypeScript support** with generics
161
232
 
162
233
  #### Documentation & Guides
163
234
  - **[Svelte Integration Guide](docs/guides/svelte-integration.md)**: Complete guide to Svelte 5 integration
@@ -166,15 +237,23 @@ Praxis provides these integrated capabilities:
166
237
  - **[Advanced Todo Example](src/examples/advanced-todo/)**: Full-featured demo with history
167
238
 
168
239
  ### 🧪 Hardened TypeScript Core
169
- - **165 comprehensive tests** (up from 63) covering:
240
+ - **197 comprehensive tests** (up from 9 in v0.1.0) covering:
170
241
  - Svelte integration with runes and stores
242
+ - PluresDB integration (32 tests)
171
243
  - History state management and navigation
172
244
  - Edge cases and failure paths
173
245
  - Actor lifecycle and state change notifications
174
246
  - Constraint violations and rule errors
175
247
  - Registry operations and module composition
248
+ - Cloud integration and billing
249
+ - Terminal node functionality
176
250
  - Full test coverage ensures production-ready reliability
177
251
 
252
+ ### 🔒 C# Implementation
253
+ - **95 comprehensive C# tests** with full parity to TypeScript features
254
+ - Functional, immutable design with records
255
+ - NuGet package available
256
+
178
257
  ### 📖 Protocol Versioning (v1.0.0)
179
258
  - **Explicit protocol version** (`protocolVersion` field in state)
180
259
  - **Stability guarantees** for cross-language compatibility
@@ -214,6 +293,20 @@ A comprehensive example demonstrating all Praxis features:
214
293
  npm install @plures/praxis
215
294
  ```
216
295
 
296
+ ### NuGet (.NET / C#)
297
+
298
+ ```bash
299
+ dotnet add package Plures.Praxis
300
+ ```
301
+
302
+ Or add to your `.csproj`:
303
+
304
+ ```xml
305
+ <PackageReference Include="Plures.Praxis" Version="0.2.1" />
306
+ ```
307
+
308
+ See [C# Documentation](./csharp/Praxis/README.md) for detailed usage.
309
+
217
310
  ### JSR (Deno)
218
311
 
219
312
  ```bash
@@ -227,7 +320,7 @@ For now, you can use Praxis with Deno via import maps:
227
320
  // import_map.json
228
321
  {
229
322
  "imports": {
230
- "@plures/praxis": "npm:@plures/praxis@^0.1.0"
323
+ "@plures/praxis": "npm:@plures/praxis@^0.2.1"
231
324
  }
232
325
  }
233
326
  ```
@@ -239,14 +332,15 @@ For now, you can use Praxis with Deno via import maps:
239
332
  git clone https://github.com/plures/praxis.git
240
333
  cd praxis
241
334
 
242
- # Install dependencies
335
+ # TypeScript
243
336
  npm install
244
-
245
- # Build
246
337
  npm run build
247
-
248
- # Run tests
249
338
  npm test
339
+
340
+ # C#
341
+ cd csharp
342
+ dotnet build
343
+ dotnet test
250
344
  ```
251
345
 
252
346
  ## Quick Start
@@ -510,25 +604,41 @@ This protocol is:
510
604
  │ │ └── introspection.ts # Introspection and visualization
511
605
  │ ├── component/ # Component generation
512
606
  │ │ └── generator.ts # Svelte component generator
607
+ │ ├── pluresdb/ # PluresDB integration core
608
+ │ │ ├── adapter.ts # Database adapter interface
609
+ │ │ ├── store.ts # Reactive store implementation
610
+ │ │ ├── schema-registry.ts # Schema registry for PluresDB
611
+ │ │ └── generator.ts # PluresDB config generator
513
612
  │ └── runtime/ # Runtime abstractions
613
+ ├── cloud/ # Praxis Cloud integration
614
+ │ ├── auth.ts # GitHub OAuth authentication
615
+ │ ├── billing.ts # Tier-based billing
616
+ │ ├── provisioning.ts # Tenant provisioning
617
+ │ └── relay/ # Azure relay service
514
618
  ├── integrations/ # Ecosystem integrations
515
- │ ├── pluresdb/ # PluresDB reactive datastore
619
+ │ ├── pluresdb.ts # PluresDB integration exports
620
+ │ ├── svelte.ts # Svelte 5 integration
516
621
  │ ├── unum/ # Unum identity and channels
517
622
  │ ├── adp/ # Architectural Decision Protocol
518
623
  │ ├── state-docs/ # State-Docs documentation
519
624
  │ └── canvas/ # CodeCanvas visual editor
625
+ ├── components/ # Svelte components
626
+ │ └── TerminalNode.svelte # Terminal node component
520
627
  ├── cli/ # Command-line interface
521
628
  │ ├── index.ts # CLI entry point
522
629
  │ └── commands/ # Command implementations
523
630
  ├── templates/ # Project templates
524
631
  │ ├── basic-app/ # Basic application template
525
- ├── fullstack-app/ # Full-stack template
526
- │ ├── component/ # Component template
527
- │ └── orchestrator/ # Distributed orchestration template
632
+ └── fullstack-app/ # Full-stack template
528
633
  ├── examples/ # Example applications
529
634
  │ ├── offline-chat/ # Offline-first chat demo
530
635
  │ ├── knowledge-canvas/ # Knowledge management with Canvas
531
636
  │ ├── distributed-node/ # Self-orchestrating node demo
637
+ │ ├── terminal-node/ # Terminal node demo
638
+ │ ├── terminal-canvas/ # Terminal + canvas demo
639
+ │ ├── cloud-sync/ # Cloud sync demo
640
+ │ ├── github-monetization/ # GitHub monetization demo
641
+ │ ├── simple-app/ # Simple app demo
532
642
  │ ├── auth-basic/ # Login/logout example
533
643
  │ ├── cart/ # Shopping cart example
534
644
  │ ├── svelte-counter/ # Svelte integration example
@@ -546,7 +656,7 @@ See [FRAMEWORK.md](./FRAMEWORK.md) for complete architecture documentation.
546
656
 
547
657
  ## Examples
548
658
 
549
- The repository includes four complete examples:
659
+ The repository includes 12 complete examples:
550
660
 
551
661
  ### 1. Hero E-Commerce (`src/examples/hero-ecommerce`)
552
662
  **NEW!** Comprehensive example demonstrating all Praxis features in a single application:
@@ -631,6 +741,26 @@ npm run build
631
741
  node dist/examples/svelte-counter/index.js
632
742
  ```
633
743
 
744
+ ### 9. Terminal Canvas (`examples/terminal-canvas`)
745
+ Combines terminal nodes with visual canvas features in a Svelte app.
746
+
747
+ See [examples/terminal-canvas/README.md](./examples/terminal-canvas/README.md)
748
+
749
+ ### 10. GitHub Monetization (`examples/github-monetization`)
750
+ Example of GitHub-based monetization integration with Praxis Cloud.
751
+
752
+ See [examples/github-monetization/README.md](./examples/github-monetization/README.md)
753
+
754
+ ### 11. Simple App (`examples/simple-app`)
755
+ A minimal example demonstrating basic Praxis schema usage.
756
+
757
+ See [examples/simple-app/README.md](./examples/simple-app/README.md)
758
+
759
+ ### 12. Cloud Sync (`examples/cloud-sync`)
760
+ Demonstrates real-time synchronization with Praxis Cloud relay service.
761
+
762
+ See [examples/cloud-sync/README.md](./examples/cloud-sync/README.md)
763
+
634
764
  ## API Reference
635
765
 
636
766
  ### Core Types
@@ -704,34 +834,51 @@ Praxis integrates with the full Plures ecosystem:
704
834
 
705
835
  ### PluresDB Integration
706
836
 
707
- Local-first reactive datastore for offline-capable applications.
837
+ Local-first reactive datastore for offline-capable applications. **Now fully implemented** with 32 tests covering all features.
708
838
 
709
839
  ```typescript
710
- import { createPluresDB } from '@plures/pluresdb';
711
-
712
- // Create database from schema
713
- const db = createPluresDB({
714
- name: 'my-app',
715
- version: 1,
716
- stores: {
717
- // Generated from Praxis schema
718
- users: { keyPath: 'id', indexes: ['email'] },
719
- tasks: { keyPath: 'id', indexes: ['status', 'createdAt'] },
720
- },
721
- sync: {
722
- enabled: true,
723
- endpoint: 'ws://localhost:8080/sync',
724
- conflictResolution: 'last-write-wins',
725
- },
840
+ import {
841
+ createInMemoryDB,
842
+ createPraxisDBStore,
843
+ createPluresDBAdapter,
844
+ attachToEngine
845
+ } from '@plures/praxis/pluresdb';
846
+
847
+ // Create an in-memory database
848
+ const db = createInMemoryDB();
849
+
850
+ // Create a PraxisDB store for facts and events
851
+ const store = createPraxisDBStore({ db });
852
+
853
+ // Or create an adapter to attach to an engine
854
+ const adapter = createPluresDBAdapter({
855
+ db,
856
+ registry,
857
+ initialContext: {}
726
858
  });
727
859
 
728
- // Use with Praxis logic engine
729
- engine.step([TaskCreated.create({ taskId, title })]);
730
- await db.tasks.add({ id: taskId, title, status: 'pending' });
860
+ // Attach adapter to engine for automatic persistence
861
+ adapter.attachEngine(engine);
862
+
863
+ // Persist facts and events
864
+ await adapter.persistFacts([{ tag: "UserLoggedIn", payload: { userId: "alice" } }]);
865
+ await adapter.persistEvents([{ tag: "LOGIN", payload: { username: "alice" } }]);
866
+
867
+ // Subscribe to changes
868
+ adapter.subscribeToEvents((events) => {
869
+ console.log("New events:", events);
870
+ });
731
871
  ```
732
872
 
733
- **Status**: Foundation in place (`src/integrations/pluresdb.ts`)
734
- **Documentation**: [docs/guides/pluresdb.md](./docs/guides/pluresdb.md)
873
+ **Features:**
874
+ - **In-memory adapter**: Ready-to-use implementation for development and testing
875
+ - **Reactive store**: Watch for changes with callbacks
876
+ - **Schema registry**: Store and retrieve schemas in PluresDB
877
+ - **Config generator**: Generate PluresDB configuration from Praxis schemas
878
+ - **Engine integration**: Automatic fact/event persistence
879
+
880
+ **Status**: ✅ Available (`src/core/pluresdb/`, `src/integrations/pluresdb.ts`)
881
+ **Tests**: 32 tests covering adapter, store, registry, and engine integration
735
882
 
736
883
  ### Unum Integration
737
884
 
@@ -887,24 +1034,69 @@ Write-Host "Count: $($result.state.context.count)"
887
1034
 
888
1035
  See [powershell/README.md](./powershell/README.md) for complete documentation and examples.
889
1036
 
890
- ### C# (Coming Soon)
1037
+ ### C# (.NET 8+)
1038
+
1039
+ **NEW!** Full C# implementation with functional, immutable design:
1040
+
1041
+ ```csharp
1042
+ using Praxis.Core;
1043
+ using Praxis.Dsl;
1044
+
1045
+ // Define facts and events
1046
+ var UserLoggedIn = PraxisDsl.DefineFact<UserPayload>("UserLoggedIn");
1047
+ var Login = PraxisDsl.DefineEvent<LoginPayload>("LOGIN");
1048
+
1049
+ record UserPayload(string UserId);
1050
+ record LoginPayload(string Username);
1051
+
1052
+ // Define rules
1053
+ var loginRule = PraxisDsl.DefineRule<AuthContext>(
1054
+ id: "auth.login",
1055
+ description: "Process login event",
1056
+ impl: (state, context, events) =>
1057
+ {
1058
+ var loginEvent = events.FindEvent(Login);
1059
+ if (loginEvent != null)
1060
+ {
1061
+ var payload = Login.GetPayload(loginEvent);
1062
+ return [UserLoggedIn.Create(new UserPayload(payload?.Username ?? "unknown"))];
1063
+ }
1064
+ return [];
1065
+ });
891
1066
 
892
- Cross-language adapter for C# is planned with similar JSON-based protocol.
1067
+ // Create engine
1068
+ var registry = new PraxisRegistry<AuthContext>();
1069
+ registry.RegisterRule(loginRule);
1070
+
1071
+ var engine = PraxisEngine.Create(new PraxisEngineOptions<AuthContext>
1072
+ {
1073
+ InitialContext = new AuthContext(null),
1074
+ Registry = registry
1075
+ });
1076
+
1077
+ // Dispatch events
1078
+ var result = engine.Step([Login.Create(new LoginPayload("alice"))]);
1079
+ Console.WriteLine($"Facts: {result.State.Facts.Count}"); // Facts: 1
1080
+ ```
1081
+
1082
+ See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for complete documentation.
893
1083
 
894
1084
  ## Future Roadmap
895
1085
 
896
- ### Short Term (v0.2.0)
897
- - Complete CLI implementation
898
- - Basic project templates
899
- - Component generation MVP
900
- - Enhanced PluresDB integration
1086
+ ### Short Term (v0.2.x)
1087
+ - Complete CLI implementation
1088
+ - Basic project templates
1089
+ - Component generation MVP
1090
+ - C# implementation with NuGet publishing (95 tests)
1091
+ - ✅ PluresDB integration with full test coverage (32 tests)
1092
+ - ✅ Praxis Cloud with GitHub authentication and billing
901
1093
 
902
1094
  ### Medium Term (v0.3.0 - v0.5.0)
903
1095
  - Full CodeCanvas integration
904
1096
  - Unum identity support
905
1097
  - State-Docs generation
906
1098
  - Multi-language schemas
907
- - C# adapter
1099
+ - Real PluresDB sync (CRDT/offline-first)
908
1100
 
909
1101
  ### Long Term (v1.0.0+)
910
1102
  - Mobile templates (iOS, Android)
@@ -917,26 +1109,38 @@ Cross-language adapter for C# is planned with similar JSON-based protocol.
917
1109
 
918
1110
  ### Ecosystem Integration
919
1111
 
920
- - **Svelte v5**: Full reactive binding support (foundation in place)
921
- - **pluresdb**: Reactive datastore integration, event sourcing
922
- - **unum**: Identity/channels and messaging
1112
+ - **Svelte v5**: Full reactive binding support with runes and history
1113
+ - **PluresDB**: Reactive datastore integration with 32 tests
1114
+ - **Cloud**: GitHub-based auth and tier billing
1115
+ - **unum**: 🚧 Identity/channels and messaging
923
1116
  - **Visualization**: VSCode extension, docs generator, canvas tools (introspection API ready)
924
1117
  - **ADP**: Architectural guardrails and static checks
925
1118
 
926
1119
  ### Cross-Language Support
927
1120
 
928
- The core protocol is designed to be implemented in other languages:
1121
+ The core protocol is implemented across multiple languages:
929
1122
 
930
- **C# (future)**:
1123
+ **C# (Available):**
931
1124
  ```csharp
932
- PraxisState Step(PraxisState state, IEnumerable<PraxisEvent> events);
1125
+ // Full functional C# implementation with immutable records
1126
+ var engine = PraxisEngine.Create(new PraxisEngineOptions<TContext> { ... });
1127
+ var result = engine.Step(events);
933
1128
  ```
934
1129
 
935
- **PowerShell (future)**:
1130
+ See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for full documentation.
1131
+
1132
+ **PowerShell (Available):**
936
1133
  ```powershell
937
1134
  $newState = Invoke-PraxisStep -State $state -Events $events
938
1135
  ```
939
1136
 
1137
+ See [powershell/README.md](./powershell/README.md) for full documentation.
1138
+
1139
+ ### Cross-Language Sync Strategy
1140
+
1141
+ All implementations share the same protocol version and JSON format for interoperability.
1142
+ See [CROSS_LANGUAGE_SYNC.md](./CROSS_LANGUAGE_SYNC.md) for details on keeping implementations in sync.
1143
+
940
1144
  ### Advanced Features
941
1145
 
942
1146
  - Prolog/CLP-inspired features (facts, rules, declarative constraints, goal-style interactions)
@@ -1240,12 +1444,14 @@ if (result.effects) {
1240
1444
 
1241
1445
  ## Future Roadmap
1242
1446
 
1243
- - 🌐 **Svelte v5 Integration**: First-class support for Svelte 5 runes
1244
- - 🗄️ **pluresdb/unum Integration**: Persistent state management
1245
- - 🔄 **C# Port**: Cross-platform compatibility
1246
- - **PowerShell Module**: Scripting and automation support
1247
- - 🎭 **Advanced FSM Tools**: Internal state machine utilities
1248
- - 📊 **Visualization**: Flow and state visualization tools
1447
+ - **Svelte v5 Integration**: First-class support for Svelte 5 runes (available)
1448
+ - **PluresDB Integration**: Reactive datastore with 32 tests (available)
1449
+ - **C# Port**: Cross-platform compatibility with 95 tests (available)
1450
+ - **PowerShell Module**: Scripting and automation support (available)
1451
+ - 🚧 **Unum Integration**: Identity and channels (in progress)
1452
+ - 🚧 **CodeCanvas**: Visual schema and logic editor (planned)
1453
+ - 🚧 **State-Docs**: Documentation generation (planned)
1454
+ - 📊 **Visualization**: Flow and state visualization tools (introspection ready)
1249
1455
 
1250
1456
  ## Development
1251
1457