@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
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Praxis Code Generation
3
+ *
4
+ * Centralized code generation from PSF schemas.
5
+ * Generates TypeScript, Svelte components, and documentation.
6
+ */
7
+
8
+ export * from './docs-generator.js';
9
+ export * from './ts-generator.js';
10
+
11
+ // Re-export component generator
12
+ export {
13
+ ComponentGenerator,
14
+ createComponentGenerator,
15
+ type GeneratorConfig,
16
+ type GenerationResult,
17
+ type GeneratedFile,
18
+ type GenerationError,
19
+ } from '../../src/core/component/generator.js';
20
+
21
+ // Re-export logic generator
22
+ export {
23
+ LogicGenerator,
24
+ createLogicGenerator,
25
+ type LogicGeneratorOptions,
26
+ type GeneratedLogicFile,
27
+ } from '../../src/core/logic/generator.js';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * TypeScript Generator
3
+ *
4
+ * Generates TypeScript types and code from PSF schemas.
5
+ * Re-exports from schema-engine for convenience.
6
+ */
7
+
8
+ export {
9
+ PSFGenerator,
10
+ createPSFGenerator,
11
+ generateFromPSF,
12
+ type GeneratorOptions,
13
+ type GeneratedFile,
14
+ type GenerationResult,
15
+ } from '../schema-engine/generator.js';
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Praxis DB Adapter
3
+ *
4
+ * The DB Adapter module provides integration with PluresDB
5
+ * for local-first, reactive data storage and synchronization.
6
+ *
7
+ * Features:
8
+ * - Schema-backed storage
9
+ * - Real-time synchronization
10
+ * - CRDT-style conflict resolution
11
+ * - Event sourcing
12
+ */
13
+
14
+ // Re-export core PluresDB adapter
15
+ export {
16
+ InMemoryPraxisDB,
17
+ createInMemoryDB,
18
+ type PraxisDB,
19
+ type UnsubscribeFn,
20
+ } from '../../src/core/pluresdb/adapter.js';
21
+
22
+ // Re-export store
23
+ export {
24
+ PraxisDBStore,
25
+ createPraxisDBStore,
26
+ PRAXIS_PATHS,
27
+ getFactPath,
28
+ getEventPath,
29
+ generateId,
30
+ type EventStreamEntry,
31
+ type PraxisDBStoreOptions,
32
+ } from '../../src/core/pluresdb/store.js';
33
+
34
+ // Re-export schema registry
35
+ export {
36
+ PraxisSchemaRegistry,
37
+ createSchemaRegistry,
38
+ registerSchema,
39
+ getSchemaPath,
40
+ type StoredSchema,
41
+ } from '../../src/core/pluresdb/schema-registry.js';
42
+
43
+ // Re-export generator
44
+ export {
45
+ PluresDBGenerator,
46
+ createPluresDBGenerator,
47
+ type PluresDBGeneratorOptions,
48
+ type GeneratedPluresDBFile,
49
+ } from '../../src/core/pluresdb/generator.js';
50
+
51
+ // Export new PSF-aware sync engine
52
+ export * from './sync-engine.js';
@@ -0,0 +1,450 @@
1
+ /**
2
+ * PSF Schema Sync Engine
3
+ *
4
+ * Provides real-time bidirectional synchronization between
5
+ * Code ↔ PSF Schema ↔ Canvas using PluresDB as the sync backend.
6
+ *
7
+ * The sync engine ensures that:
8
+ * 1. Schema changes propagate to all connected clients in real-time
9
+ * 2. Conflicts are resolved using CRDT-style last-write-wins with metadata
10
+ * 3. Code and canvas stay synchronized through the schema
11
+ */
12
+
13
+ import type { PSFSchema, PSFPosition } from '../schema-engine/psf.js';
14
+ import type { PraxisDB, UnsubscribeFn } from '../../src/core/pluresdb/adapter.js';
15
+
16
+ /**
17
+ * Schema sync options
18
+ */
19
+ export interface SchemaSyncOptions {
20
+ /** Database instance */
21
+ db: PraxisDB;
22
+ /** Schema ID to sync */
23
+ schemaId: string;
24
+ /** Auto-sync interval in milliseconds (0 = disabled) */
25
+ syncInterval?: number;
26
+ /** Device/client identifier */
27
+ deviceId?: string;
28
+ }
29
+
30
+ /**
31
+ * Schema change event
32
+ */
33
+ export interface SchemaChangeEvent {
34
+ /** Type of change */
35
+ type: 'update' | 'delete' | 'add';
36
+ /** Path to changed element */
37
+ path: string;
38
+ /** Old value */
39
+ oldValue?: unknown;
40
+ /** New value */
41
+ newValue?: unknown;
42
+ /** Timestamp */
43
+ timestamp: number;
44
+ /** Device that made the change */
45
+ deviceId?: string;
46
+ }
47
+
48
+ /**
49
+ * Sync status
50
+ */
51
+ export interface SyncStatus {
52
+ /** Is currently syncing */
53
+ syncing: boolean;
54
+ /** Last sync timestamp */
55
+ lastSync?: number;
56
+ /** Pending changes count */
57
+ pendingChanges: number;
58
+ /** Connected devices */
59
+ connectedDevices?: string[];
60
+ /** Sync errors */
61
+ errors: string[];
62
+ }
63
+
64
+ /**
65
+ * Schema Sync Engine
66
+ *
67
+ * Manages real-time synchronization of PSF schemas.
68
+ */
69
+ export class SchemaSyncEngine {
70
+ private db: PraxisDB;
71
+ private schemaId: string;
72
+ private deviceId: string;
73
+ private syncInterval: number;
74
+ private schema: PSFSchema | null = null;
75
+ private subscribers: Set<(schema: PSFSchema) => void> = new Set();
76
+ private changeSubscribers: Set<(change: SchemaChangeEvent) => void> = new Set();
77
+ private unsubscribeDb: UnsubscribeFn | null = null;
78
+ private pendingChanges: SchemaChangeEvent[] = [];
79
+ private syncTimer: ReturnType<typeof setInterval> | null = null;
80
+ private lastSync: number = 0;
81
+
82
+ constructor(options: SchemaSyncOptions) {
83
+ this.db = options.db;
84
+ this.schemaId = options.schemaId;
85
+ this.deviceId = options.deviceId || this.generateDeviceId();
86
+ this.syncInterval = options.syncInterval ?? 0;
87
+ }
88
+
89
+ /**
90
+ * Initialize the sync engine
91
+ */
92
+ async initialize(): Promise<void> {
93
+ // Load initial schema from DB
94
+ const schemaPath = this.getSchemaPath();
95
+ const storedSchema = await this.db.get(schemaPath);
96
+
97
+ if (storedSchema) {
98
+ this.schema = storedSchema as PSFSchema;
99
+ }
100
+
101
+ // Subscribe to DB changes
102
+ this.unsubscribeDb = this.db.watch(schemaPath, (value: unknown) => {
103
+ if (value) {
104
+ const newSchema = value as PSFSchema;
105
+ const oldSchema = this.schema;
106
+ this.schema = newSchema;
107
+
108
+ // Notify subscribers
109
+ this.notifySubscribers();
110
+
111
+ // Generate change events
112
+ if (oldSchema) {
113
+ this.emitChangeEvents(oldSchema, newSchema);
114
+ }
115
+ }
116
+ });
117
+
118
+ // Start auto-sync if enabled
119
+ if (this.syncInterval > 0) {
120
+ this.startAutoSync();
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Get current schema
126
+ */
127
+ getSchema(): PSFSchema | null {
128
+ return this.schema ? { ...this.schema } : null;
129
+ }
130
+
131
+ /**
132
+ * Update the entire schema
133
+ */
134
+ async updateSchema(schema: PSFSchema): Promise<void> {
135
+ const now = Date.now();
136
+ const updatedSchema: PSFSchema = {
137
+ ...schema,
138
+ modifiedAt: new Date(now).toISOString(),
139
+ };
140
+
141
+ await this.db.set(this.getSchemaPath(), updatedSchema);
142
+ this.lastSync = now;
143
+ }
144
+
145
+ /**
146
+ * Update a specific part of the schema
147
+ */
148
+ async updatePart<K extends keyof PSFSchema>(key: K, value: PSFSchema[K]): Promise<void> {
149
+ if (!this.schema) {
150
+ throw new Error('Schema not loaded');
151
+ }
152
+
153
+ const updatedSchema: PSFSchema = {
154
+ ...this.schema,
155
+ [key]: value,
156
+ modifiedAt: new Date().toISOString(),
157
+ };
158
+
159
+ await this.updateSchema(updatedSchema);
160
+ }
161
+
162
+ /**
163
+ * Update node position (for canvas sync)
164
+ */
165
+ async updateNodePosition(
166
+ nodeType: 'facts' | 'events' | 'rules' | 'constraints' | 'models' | 'components',
167
+ nodeId: string,
168
+ position: PSFPosition
169
+ ): Promise<void> {
170
+ if (!this.schema) {
171
+ throw new Error('Schema not loaded');
172
+ }
173
+
174
+ const nodes = this.schema[nodeType] as Array<{ id: string; position?: PSFPosition }>;
175
+ const nodeIndex = nodes.findIndex((n) => n.id === nodeId);
176
+
177
+ if (nodeIndex === -1) {
178
+ throw new Error(`Node ${nodeId} not found in ${nodeType}`);
179
+ }
180
+
181
+ const updatedNodes = [...nodes];
182
+ updatedNodes[nodeIndex] = {
183
+ ...updatedNodes[nodeIndex],
184
+ position,
185
+ };
186
+
187
+ await this.updatePart(nodeType, updatedNodes as PSFSchema[typeof nodeType]);
188
+ }
189
+
190
+ /**
191
+ * Subscribe to schema changes
192
+ */
193
+ subscribe(callback: (schema: PSFSchema) => void): UnsubscribeFn {
194
+ this.subscribers.add(callback);
195
+
196
+ // Send current schema immediately
197
+ if (this.schema) {
198
+ callback(this.schema);
199
+ }
200
+
201
+ return () => {
202
+ this.subscribers.delete(callback);
203
+ };
204
+ }
205
+
206
+ /**
207
+ * Subscribe to individual change events
208
+ */
209
+ subscribeToChanges(callback: (change: SchemaChangeEvent) => void): UnsubscribeFn {
210
+ this.changeSubscribers.add(callback);
211
+ return () => {
212
+ this.changeSubscribers.delete(callback);
213
+ };
214
+ }
215
+
216
+ /**
217
+ * Get sync status
218
+ */
219
+ getSyncStatus(): SyncStatus {
220
+ return {
221
+ syncing: false, // Would be true during active sync
222
+ lastSync: this.lastSync || undefined,
223
+ pendingChanges: this.pendingChanges.length,
224
+ errors: [],
225
+ };
226
+ }
227
+
228
+ /**
229
+ * Force sync
230
+ */
231
+ async forceSync(): Promise<void> {
232
+ if (!this.schema) return;
233
+
234
+ // Re-read from DB to ensure we have latest
235
+ const schemaPath = this.getSchemaPath();
236
+ const latestSchema = await this.db.get(schemaPath);
237
+
238
+ if (latestSchema) {
239
+ this.schema = latestSchema as PSFSchema;
240
+ this.notifySubscribers();
241
+ }
242
+
243
+ this.lastSync = Date.now();
244
+ this.pendingChanges = [];
245
+ }
246
+
247
+ /**
248
+ * Dispose of resources
249
+ */
250
+ dispose(): void {
251
+ if (this.unsubscribeDb) {
252
+ this.unsubscribeDb();
253
+ this.unsubscribeDb = null;
254
+ }
255
+
256
+ if (this.syncTimer) {
257
+ clearInterval(this.syncTimer);
258
+ this.syncTimer = null;
259
+ }
260
+
261
+ this.subscribers.clear();
262
+ this.changeSubscribers.clear();
263
+ }
264
+
265
+ /**
266
+ * Get path for schema in DB
267
+ */
268
+ private getSchemaPath(): string {
269
+ return `/schemas/${this.schemaId}`;
270
+ }
271
+
272
+ /**
273
+ * Notify all subscribers
274
+ */
275
+ private notifySubscribers(): void {
276
+ if (!this.schema) return;
277
+
278
+ for (const callback of this.subscribers) {
279
+ try {
280
+ callback(this.schema);
281
+ } catch (error) {
282
+ console.error('Error in schema subscriber:', error);
283
+ }
284
+ }
285
+ }
286
+
287
+ /**
288
+ * Emit change events by comparing schemas
289
+ */
290
+ private emitChangeEvents(oldSchema: PSFSchema, newSchema: PSFSchema): void {
291
+ // Simple diff for now - could be made more granular
292
+ const changes: SchemaChangeEvent[] = [];
293
+ const now = Date.now();
294
+
295
+ const keys: (keyof PSFSchema)[] = ['facts', 'events', 'rules', 'constraints', 'models', 'components', 'flows'];
296
+
297
+ for (const key of keys) {
298
+ const oldArray = oldSchema[key] as unknown[];
299
+ const newArray = newSchema[key] as unknown[];
300
+
301
+ if (JSON.stringify(oldArray) !== JSON.stringify(newArray)) {
302
+ changes.push({
303
+ type: 'update',
304
+ path: key,
305
+ oldValue: oldArray,
306
+ newValue: newArray,
307
+ timestamp: now,
308
+ deviceId: this.deviceId,
309
+ });
310
+ }
311
+ }
312
+
313
+ // Emit changes
314
+ for (const change of changes) {
315
+ for (const callback of this.changeSubscribers) {
316
+ try {
317
+ callback(change);
318
+ } catch (error) {
319
+ console.error('Error in change subscriber:', error);
320
+ }
321
+ }
322
+ }
323
+ }
324
+
325
+ /**
326
+ * Start auto-sync timer
327
+ */
328
+ private startAutoSync(): void {
329
+ if (this.syncTimer) {
330
+ clearInterval(this.syncTimer);
331
+ }
332
+
333
+ this.syncTimer = setInterval(() => {
334
+ this.forceSync().catch((error) => {
335
+ console.error('Auto-sync error:', error);
336
+ });
337
+ }, this.syncInterval);
338
+ }
339
+
340
+ /**
341
+ * Generate a device ID
342
+ */
343
+ private generateDeviceId(): string {
344
+ return `device_${Date.now().toString(36)}_${Math.random().toString(36).substring(2, 8)}`;
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Create a schema sync engine
350
+ */
351
+ export function createSchemaSyncEngine(options: SchemaSyncOptions): SchemaSyncEngine {
352
+ return new SchemaSyncEngine(options);
353
+ }
354
+
355
+ /**
356
+ * Schema store for PluresDB
357
+ *
358
+ * Provides a higher-level API for storing and managing PSF schemas.
359
+ */
360
+ export class PSFSchemaStore {
361
+ private db: PraxisDB;
362
+ private syncEngines: Map<string, SchemaSyncEngine> = new Map();
363
+
364
+ constructor(db: PraxisDB) {
365
+ this.db = db;
366
+ }
367
+
368
+ /**
369
+ * Save a schema
370
+ */
371
+ async saveSchema(schema: PSFSchema): Promise<void> {
372
+ const path = `/schemas/${schema.id}`;
373
+ await this.db.set(path, schema);
374
+ }
375
+
376
+ /**
377
+ * Load a schema by ID
378
+ */
379
+ async loadSchema(schemaId: string): Promise<PSFSchema | null> {
380
+ const path = `/schemas/${schemaId}`;
381
+ const data = await this.db.get(path);
382
+ return data as PSFSchema | null;
383
+ }
384
+
385
+ /**
386
+ * List all schemas
387
+ */
388
+ async listSchemas(): Promise<string[]> {
389
+ const schemasPath = '/schemas';
390
+ const data = await this.db.get(schemasPath);
391
+
392
+ if (data && typeof data === 'object') {
393
+ return Object.keys(data);
394
+ }
395
+
396
+ return [];
397
+ }
398
+
399
+ /**
400
+ * Delete a schema
401
+ */
402
+ async deleteSchema(schemaId: string): Promise<void> {
403
+ const path = `/schemas/${schemaId}`;
404
+ await this.db.set(path, null);
405
+
406
+ // Dispose sync engine if exists
407
+ const syncEngine = this.syncEngines.get(schemaId);
408
+ if (syncEngine) {
409
+ syncEngine.dispose();
410
+ this.syncEngines.delete(schemaId);
411
+ }
412
+ }
413
+
414
+ /**
415
+ * Get or create a sync engine for a schema
416
+ */
417
+ async getSyncEngine(schemaId: string, options?: Partial<SchemaSyncOptions>): Promise<SchemaSyncEngine> {
418
+ if (this.syncEngines.has(schemaId)) {
419
+ return this.syncEngines.get(schemaId)!;
420
+ }
421
+
422
+ const syncEngine = new SchemaSyncEngine({
423
+ db: this.db,
424
+ schemaId,
425
+ ...options,
426
+ });
427
+
428
+ await syncEngine.initialize();
429
+ this.syncEngines.set(schemaId, syncEngine);
430
+
431
+ return syncEngine;
432
+ }
433
+
434
+ /**
435
+ * Dispose all resources
436
+ */
437
+ dispose(): void {
438
+ for (const syncEngine of this.syncEngines.values()) {
439
+ syncEngine.dispose();
440
+ }
441
+ this.syncEngines.clear();
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Create a PSF schema store
447
+ */
448
+ export function createPSFSchemaStore(db: PraxisDB): PSFSchemaStore {
449
+ return new PSFSchemaStore(db);
450
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Logic Engine Core
3
+ *
4
+ * Re-exports the logic engine from the main source.
5
+ * This provides a modular entry point for the logic engine.
6
+ */
7
+
8
+ export {
9
+ LogicEngine,
10
+ createPraxisEngine,
11
+ type PraxisEngineOptions,
12
+ } from '../../src/core/engine.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Praxis Logic Engine
3
+ *
4
+ * The Logic Engine is the core module responsible for:
5
+ * - Processing events through rules
6
+ * - Checking constraints
7
+ * - Managing state transitions
8
+ * - Schema-driven rule evaluation
9
+ *
10
+ * The engine is pure and deterministic - all state updates are immutable.
11
+ */
12
+
13
+ export * from './engine.js';
14
+ export * from './rules.js';
15
+ export * from './protocol.js';
16
+ export * from './psf-adapter.js';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Praxis Protocol
3
+ *
4
+ * Re-exports the core protocol from the main source.
5
+ */
6
+
7
+ export {
8
+ PRAXIS_PROTOCOL_VERSION,
9
+ type PraxisFact,
10
+ type PraxisEvent,
11
+ type PraxisState,
12
+ type PraxisDiagnostics,
13
+ type PraxisStepConfig,
14
+ type PraxisStepResult,
15
+ type PraxisStepFn,
16
+ } from '../../src/core/protocol.js';