@plures/praxis 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/LICENSE +21 -21
  3. package/README.md +162 -375
  4. package/core/codegen/docs-generator.ts +5 -2
  5. package/core/codegen/index.ts +1 -1
  6. package/core/codegen/ts-generator.ts +15 -15
  7. package/core/db-adapter/index.ts +2 -2
  8. package/core/db-adapter/sync-engine.ts +17 -6
  9. package/core/logic-engine/engine.ts +1 -1
  10. package/core/logic-engine/index.ts +2 -2
  11. package/core/logic-engine/protocol.ts +1 -1
  12. package/core/logic-engine/psf-adapter.ts +8 -4
  13. package/core/logic-engine/rules.ts +1 -1
  14. package/core/schema-engine/compiler.ts +53 -11
  15. package/core/schema-engine/generator.ts +17 -7
  16. package/core/schema-engine/index.ts +2 -2
  17. package/core/schema-engine/psf.ts +12 -3
  18. package/core/schema-engine/types.ts +3 -11
  19. package/core/schema-engine/validator.ts +112 -22
  20. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  21. package/dist/browser/index.d.ts +3004 -0
  22. package/dist/browser/index.js +2892 -0
  23. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  24. package/dist/browser/integrations/svelte.js +298 -0
  25. package/dist/node/auth-STARLY7I.js +207 -0
  26. package/dist/node/build-Y7OT5VBF.js +144 -0
  27. package/dist/node/canvas-UERZHJYW.js +362 -0
  28. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  29. package/dist/node/chunk-FXQZXAWF.js +175 -0
  30. package/dist/node/chunk-N5Y37EUV.js +202 -0
  31. package/dist/node/chunk-QGM4M3NI.js +37 -0
  32. package/dist/node/chunk-RJMWCNHR.js +175 -0
  33. package/dist/node/chunk-SRM3OPPM.js +404 -0
  34. package/dist/node/chunk-UATVJBNV.js +175 -0
  35. package/dist/node/chunk-UY7YEBE2.js +159 -0
  36. package/dist/node/chunk-XCY2VIFX.js +143 -0
  37. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  38. package/dist/node/cli/index.cjs +217418 -0
  39. package/dist/node/cli/index.d.cts +1 -0
  40. package/dist/node/cli/index.d.ts +1 -0
  41. package/dist/node/cli/index.js +690 -0
  42. package/dist/node/cloud/index.cjs +1043 -0
  43. package/dist/node/cloud/index.d.cts +864 -0
  44. package/dist/node/cloud/index.d.ts +864 -0
  45. package/dist/node/cloud/index.js +456 -0
  46. package/dist/node/cloud-AXOK4PSN.js +212 -0
  47. package/dist/node/component.cjs +374 -0
  48. package/dist/node/component.d.cts +125 -0
  49. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  50. package/dist/node/component.js +9 -0
  51. package/dist/node/components/index.cjs +216 -0
  52. package/dist/node/components/index.d.cts +43 -0
  53. package/dist/{src → node}/components/index.d.ts +8 -8
  54. package/dist/node/components/index.js +7 -0
  55. package/dist/node/create-TRLSVCNQ.js +584 -0
  56. package/dist/node/dev-PMJZUYGE.js +65 -0
  57. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  58. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  59. package/dist/node/index.cjs +3247 -0
  60. package/dist/node/index.d.cts +2579 -0
  61. package/dist/node/index.d.ts +2579 -0
  62. package/dist/node/index.js +2098 -0
  63. package/dist/node/integrations/svelte.cjs +330 -0
  64. package/dist/node/integrations/svelte.d.cts +309 -0
  65. package/dist/node/integrations/svelte.d.ts +309 -0
  66. package/dist/node/integrations/svelte.js +300 -0
  67. package/dist/node/orchestrate-737TCL5H.js +127 -0
  68. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  69. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  70. package/dist/node/schema.cjs +200 -0
  71. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  72. package/dist/node/schema.d.ts +371 -0
  73. package/dist/node/schema.js +9 -0
  74. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  75. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  76. package/dist/node/verify-YBZ7W24H.js +213239 -0
  77. package/docs/MONETIZATION.md +21 -16
  78. package/docs/REACTIVE_REDESIGN.md +132 -0
  79. package/docs/README.md +47 -36
  80. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  81. package/docs/TERMINAL_NODE.md +27 -24
  82. package/docs/core/building-extensions.md +58 -61
  83. package/docs/core/cli-usage.md +59 -59
  84. package/docs/core/code-canvas-sync.md +28 -16
  85. package/docs/core/logic-engine.md +77 -82
  86. package/docs/core/pluresdb-integration.md +29 -39
  87. package/docs/core/schema-model.md +66 -52
  88. package/docs/core/ui-generation.md +57 -49
  89. package/docs/core/what-is-praxis.md +32 -15
  90. package/docs/guides/canvas.md +21 -5
  91. package/docs/guides/getting-started.md +13 -7
  92. package/docs/guides/history-state-pattern.md +65 -51
  93. package/docs/guides/orchestration.md +46 -32
  94. package/docs/guides/parallel-state-pattern.md +56 -72
  95. package/docs/guides/svelte-integration.md +45 -53
  96. package/docs/tutorials/README.md +16 -0
  97. package/docs/tutorials/ecommerce-cart.md +177 -95
  98. package/docs/tutorials/first-app.md +26 -41
  99. package/docs/tutorials/form-builder.md +191 -138
  100. package/docs/tutorials/todo-pluresdb.md +71 -69
  101. package/package.json +132 -96
  102. package/src/__tests__/actors.test.ts +68 -68
  103. package/src/__tests__/billing.test.ts +32 -32
  104. package/src/__tests__/canvas-components.test.ts +94 -73
  105. package/src/__tests__/cli-create.test.ts +28 -28
  106. package/src/__tests__/cloud.test.ts +36 -36
  107. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  108. package/src/__tests__/docs-generator.test.ts +3 -9
  109. package/src/__tests__/dsl.test.ts +58 -64
  110. package/src/__tests__/edge-cases.test.ts +106 -108
  111. package/src/__tests__/engine.test.ts +51 -25
  112. package/src/__tests__/generators.test.ts +42 -44
  113. package/src/__tests__/introspection.test.ts +104 -114
  114. package/src/__tests__/pluresdb.test.ts +189 -187
  115. package/src/__tests__/protocol.test.ts +15 -15
  116. package/src/__tests__/provisioning.test.ts +61 -61
  117. package/src/__tests__/schema.test.ts +7 -11
  118. package/src/__tests__/state-docs-integration.test.ts +162 -145
  119. package/src/__tests__/svelte-integration.test.ts +16 -19
  120. package/src/__tests__/tauri-integration.test.ts +149 -147
  121. package/src/__tests__/terminal-node.test.ts +12 -7
  122. package/src/__tests__/unum-integration.test.ts +68 -68
  123. package/src/adapters/cli.ts +21 -15
  124. package/src/cli/commands/auth.ts +82 -78
  125. package/src/cli/commands/build.ts +29 -27
  126. package/src/cli/commands/canvas.ts +338 -127
  127. package/src/cli/commands/cloud.ts +47 -47
  128. package/src/cli/commands/create.ts +59 -47
  129. package/src/cli/commands/dev.ts +12 -12
  130. package/src/cli/commands/generate.ts +29 -40
  131. package/src/cli/commands/orchestrate.ts +24 -24
  132. package/src/cli/commands/verify.ts +49 -0
  133. package/src/cli/index.ts +21 -2
  134. package/src/cloud/README.md +28 -15
  135. package/src/cloud/auth.ts +55 -70
  136. package/src/cloud/billing.ts +59 -58
  137. package/src/cloud/client.ts +29 -35
  138. package/src/cloud/index.ts +19 -40
  139. package/src/cloud/marketplace.ts +69 -78
  140. package/src/cloud/provisioning.ts +42 -51
  141. package/src/cloud/relay/endpoints.ts +30 -34
  142. package/src/cloud/relay/health/index.ts +1 -1
  143. package/src/cloud/relay/stats/index.ts +1 -1
  144. package/src/cloud/relay/sync/index.ts +1 -1
  145. package/src/cloud/relay/usage/index.ts +1 -1
  146. package/src/cloud/sponsors.ts +31 -34
  147. package/src/cloud/types.ts +4 -4
  148. package/src/components/README.md +1 -0
  149. package/src/components/TerminalNode.svelte +457 -457
  150. package/src/components/index.ts +3 -4
  151. package/src/core/actors.ts +7 -7
  152. package/src/core/component/generator.ts +10 -28
  153. package/src/core/engine.ts +51 -24
  154. package/src/core/introspection.ts +37 -35
  155. package/src/core/logic/generator.ts +62 -62
  156. package/src/core/pluresdb/adapter.ts +8 -8
  157. package/src/core/pluresdb/generator.ts +39 -35
  158. package/src/core/pluresdb/index.ts +9 -12
  159. package/src/core/pluresdb/schema-registry.ts +22 -25
  160. package/src/core/pluresdb/store.ts +57 -57
  161. package/src/core/protocol.ts +14 -14
  162. package/src/core/reactive-engine.svelte.ts +65 -0
  163. package/src/core/reactive-engine.ts +67 -0
  164. package/src/core/rules.ts +4 -4
  165. package/src/core/schema/loader.common.ts +150 -0
  166. package/src/core/schema/loader.ts +19 -149
  167. package/src/core/schema/normalize.ts +34 -51
  168. package/src/core/schema/types.ts +47 -11
  169. package/src/dsl/index.ts +8 -8
  170. package/src/dsl.ts +11 -17
  171. package/src/examples/advanced-todo/App.svelte +506 -506
  172. package/src/examples/advanced-todo/README.md +58 -40
  173. package/src/examples/advanced-todo/index.ts +3 -3
  174. package/src/examples/auth-basic/index.ts +30 -30
  175. package/src/examples/cart/index.ts +50 -50
  176. package/src/examples/hero-ecommerce/index.ts +130 -157
  177. package/src/examples/svelte-counter/index.ts +22 -26
  178. package/src/flows.ts +6 -17
  179. package/src/index.browser.ts +204 -0
  180. package/src/index.ts +37 -42
  181. package/src/integrations/code-canvas.ts +237 -193
  182. package/src/integrations/pluresdb.ts +55 -35
  183. package/src/integrations/state-docs.ts +104 -104
  184. package/src/integrations/svelte.ts +35 -35
  185. package/src/integrations/tauri.ts +75 -73
  186. package/src/integrations/unum.ts +68 -61
  187. package/src/registry.ts +7 -14
  188. package/src/runtime/terminal-adapter.ts +31 -26
  189. package/src/step.ts +10 -16
  190. package/src/types.ts +1 -1
  191. package/templates/basic-app/README.md +6 -9
  192. package/templates/fullstack-app/README.md +10 -0
  193. package/dist/core/codegen/docs-generator.d.ts +0 -123
  194. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  195. package/dist/core/codegen/docs-generator.js +0 -674
  196. package/dist/core/codegen/docs-generator.js.map +0 -1
  197. package/dist/core/codegen/index.d.ts +0 -11
  198. package/dist/core/codegen/index.d.ts.map +0 -1
  199. package/dist/core/codegen/index.js +0 -13
  200. package/dist/core/codegen/index.js.map +0 -1
  201. package/dist/core/codegen/ts-generator.d.ts +0 -8
  202. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  203. package/dist/core/codegen/ts-generator.js +0 -8
  204. package/dist/core/codegen/ts-generator.js.map +0 -1
  205. package/dist/core/db-adapter/index.d.ts +0 -18
  206. package/dist/core/db-adapter/index.d.ts.map +0 -1
  207. package/dist/core/db-adapter/index.js +0 -23
  208. package/dist/core/db-adapter/index.js.map +0 -1
  209. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  210. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  211. package/dist/core/db-adapter/sync-engine.js +0 -342
  212. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  213. package/dist/core/logic-engine/engine.d.ts +0 -8
  214. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  215. package/dist/core/logic-engine/engine.js +0 -8
  216. package/dist/core/logic-engine/engine.js.map +0 -1
  217. package/dist/core/logic-engine/index.d.ts +0 -16
  218. package/dist/core/logic-engine/index.d.ts.map +0 -1
  219. package/dist/core/logic-engine/index.js +0 -16
  220. package/dist/core/logic-engine/index.js.map +0 -1
  221. package/dist/core/logic-engine/protocol.d.ts +0 -7
  222. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  223. package/dist/core/logic-engine/protocol.js +0 -7
  224. package/dist/core/logic-engine/protocol.js.map +0 -1
  225. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  226. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  227. package/dist/core/logic-engine/psf-adapter.js +0 -207
  228. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  229. package/dist/core/logic-engine/rules.d.ts +0 -7
  230. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  231. package/dist/core/logic-engine/rules.js +0 -7
  232. package/dist/core/logic-engine/rules.js.map +0 -1
  233. package/dist/core/schema-engine/compiler.d.ts +0 -198
  234. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  235. package/dist/core/schema-engine/compiler.js +0 -262
  236. package/dist/core/schema-engine/compiler.js.map +0 -1
  237. package/dist/core/schema-engine/generator.d.ts +0 -115
  238. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  239. package/dist/core/schema-engine/generator.js +0 -506
  240. package/dist/core/schema-engine/generator.js.map +0 -1
  241. package/dist/core/schema-engine/index.d.ts +0 -18
  242. package/dist/core/schema-engine/index.d.ts.map +0 -1
  243. package/dist/core/schema-engine/index.js +0 -18
  244. package/dist/core/schema-engine/index.js.map +0 -1
  245. package/dist/core/schema-engine/psf.d.ts +0 -612
  246. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  247. package/dist/core/schema-engine/psf.js +0 -45
  248. package/dist/core/schema-engine/psf.js.map +0 -1
  249. package/dist/core/schema-engine/types.d.ts +0 -10
  250. package/dist/core/schema-engine/types.d.ts.map +0 -1
  251. package/dist/core/schema-engine/types.js +0 -7
  252. package/dist/core/schema-engine/types.js.map +0 -1
  253. package/dist/core/schema-engine/validator.d.ts +0 -140
  254. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  255. package/dist/core/schema-engine/validator.js +0 -407
  256. package/dist/core/schema-engine/validator.js.map +0 -1
  257. package/dist/src/adapters/cli.d.ts +0 -43
  258. package/dist/src/adapters/cli.d.ts.map +0 -1
  259. package/dist/src/adapters/cli.js +0 -126
  260. package/dist/src/adapters/cli.js.map +0 -1
  261. package/dist/src/cli/commands/auth.d.ts +0 -26
  262. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  263. package/dist/src/cli/commands/auth.js +0 -233
  264. package/dist/src/cli/commands/auth.js.map +0 -1
  265. package/dist/src/cli/commands/build.d.ts +0 -23
  266. package/dist/src/cli/commands/build.d.ts.map +0 -1
  267. package/dist/src/cli/commands/build.js +0 -162
  268. package/dist/src/cli/commands/build.js.map +0 -1
  269. package/dist/src/cli/commands/canvas.d.ts +0 -23
  270. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  271. package/dist/src/cli/commands/canvas.js +0 -215
  272. package/dist/src/cli/commands/canvas.js.map +0 -1
  273. package/dist/src/cli/commands/cloud.d.ts +0 -27
  274. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  275. package/dist/src/cli/commands/cloud.js +0 -232
  276. package/dist/src/cli/commands/cloud.js.map +0 -1
  277. package/dist/src/cli/commands/create.d.ts +0 -21
  278. package/dist/src/cli/commands/create.d.ts.map +0 -1
  279. package/dist/src/cli/commands/create.js +0 -621
  280. package/dist/src/cli/commands/create.js.map +0 -1
  281. package/dist/src/cli/commands/dev.d.ts +0 -21
  282. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  283. package/dist/src/cli/commands/dev.js +0 -71
  284. package/dist/src/cli/commands/dev.js.map +0 -1
  285. package/dist/src/cli/commands/generate.d.ts +0 -25
  286. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/generate.js +0 -168
  288. package/dist/src/cli/commands/generate.js.map +0 -1
  289. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  290. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  291. package/dist/src/cli/commands/orchestrate.js +0 -150
  292. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  293. package/dist/src/cli/index.d.ts +0 -8
  294. package/dist/src/cli/index.d.ts.map +0 -1
  295. package/dist/src/cli/index.js +0 -211
  296. package/dist/src/cli/index.js.map +0 -1
  297. package/dist/src/cloud/auth.d.ts +0 -51
  298. package/dist/src/cloud/auth.d.ts.map +0 -1
  299. package/dist/src/cloud/auth.js +0 -194
  300. package/dist/src/cloud/auth.js.map +0 -1
  301. package/dist/src/cloud/billing.d.ts +0 -184
  302. package/dist/src/cloud/billing.d.ts.map +0 -1
  303. package/dist/src/cloud/billing.js +0 -179
  304. package/dist/src/cloud/billing.js.map +0 -1
  305. package/dist/src/cloud/client.d.ts +0 -39
  306. package/dist/src/cloud/client.d.ts.map +0 -1
  307. package/dist/src/cloud/client.js +0 -176
  308. package/dist/src/cloud/client.js.map +0 -1
  309. package/dist/src/cloud/index.d.ts +0 -44
  310. package/dist/src/cloud/index.d.ts.map +0 -1
  311. package/dist/src/cloud/index.js +0 -44
  312. package/dist/src/cloud/index.js.map +0 -1
  313. package/dist/src/cloud/marketplace.d.ts +0 -166
  314. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  315. package/dist/src/cloud/marketplace.js +0 -159
  316. package/dist/src/cloud/marketplace.js.map +0 -1
  317. package/dist/src/cloud/provisioning.d.ts +0 -110
  318. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  319. package/dist/src/cloud/provisioning.js +0 -148
  320. package/dist/src/cloud/provisioning.js.map +0 -1
  321. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  322. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  323. package/dist/src/cloud/relay/endpoints.js +0 -217
  324. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  325. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  326. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/health/index.js +0 -9
  328. package/dist/src/cloud/relay/health/index.js.map +0 -1
  329. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/stats/index.js +0 -9
  332. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  333. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/sync/index.js +0 -9
  336. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  337. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/usage/index.js +0 -9
  340. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  341. package/dist/src/cloud/sponsors.d.ts +0 -81
  342. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  343. package/dist/src/cloud/sponsors.js +0 -130
  344. package/dist/src/cloud/sponsors.js.map +0 -1
  345. package/dist/src/cloud/types.d.ts +0 -169
  346. package/dist/src/cloud/types.d.ts.map +0 -1
  347. package/dist/src/cloud/types.js +0 -7
  348. package/dist/src/cloud/types.js.map +0 -1
  349. package/dist/src/components/index.d.ts.map +0 -1
  350. package/dist/src/components/index.js +0 -17
  351. package/dist/src/components/index.js.map +0 -1
  352. package/dist/src/core/actors.d.ts +0 -95
  353. package/dist/src/core/actors.d.ts.map +0 -1
  354. package/dist/src/core/actors.js +0 -158
  355. package/dist/src/core/actors.js.map +0 -1
  356. package/dist/src/core/component/generator.d.ts.map +0 -1
  357. package/dist/src/core/component/generator.js +0 -349
  358. package/dist/src/core/component/generator.js.map +0 -1
  359. package/dist/src/core/engine.d.ts +0 -92
  360. package/dist/src/core/engine.d.ts.map +0 -1
  361. package/dist/src/core/engine.js +0 -199
  362. package/dist/src/core/engine.js.map +0 -1
  363. package/dist/src/core/introspection.d.ts +0 -141
  364. package/dist/src/core/introspection.d.ts.map +0 -1
  365. package/dist/src/core/introspection.js +0 -208
  366. package/dist/src/core/introspection.js.map +0 -1
  367. package/dist/src/core/logic/generator.d.ts +0 -76
  368. package/dist/src/core/logic/generator.d.ts.map +0 -1
  369. package/dist/src/core/logic/generator.js +0 -370
  370. package/dist/src/core/logic/generator.js.map +0 -1
  371. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  372. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  373. package/dist/src/core/pluresdb/adapter.js +0 -73
  374. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  375. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  376. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/generator.js +0 -191
  378. package/dist/src/core/pluresdb/generator.js.map +0 -1
  379. package/dist/src/core/pluresdb/index.d.ts +0 -15
  380. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/index.js +0 -11
  382. package/dist/src/core/pluresdb/index.js.map +0 -1
  383. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  384. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  386. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  387. package/dist/src/core/pluresdb/store.d.ts +0 -199
  388. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/store.js +0 -344
  390. package/dist/src/core/pluresdb/store.js.map +0 -1
  391. package/dist/src/core/protocol.d.ts.map +0 -1
  392. package/dist/src/core/protocol.js +0 -46
  393. package/dist/src/core/protocol.js.map +0 -1
  394. package/dist/src/core/rules.d.ts +0 -120
  395. package/dist/src/core/rules.d.ts.map +0 -1
  396. package/dist/src/core/rules.js +0 -81
  397. package/dist/src/core/rules.js.map +0 -1
  398. package/dist/src/core/schema/loader.d.ts +0 -47
  399. package/dist/src/core/schema/loader.d.ts.map +0 -1
  400. package/dist/src/core/schema/loader.js +0 -189
  401. package/dist/src/core/schema/loader.js.map +0 -1
  402. package/dist/src/core/schema/normalize.d.ts +0 -72
  403. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  404. package/dist/src/core/schema/normalize.js +0 -190
  405. package/dist/src/core/schema/normalize.js.map +0 -1
  406. package/dist/src/core/schema/types.d.ts.map +0 -1
  407. package/dist/src/core/schema/types.js +0 -161
  408. package/dist/src/core/schema/types.js.map +0 -1
  409. package/dist/src/dsl/index.d.ts +0 -152
  410. package/dist/src/dsl/index.d.ts.map +0 -1
  411. package/dist/src/dsl/index.js +0 -132
  412. package/dist/src/dsl/index.js.map +0 -1
  413. package/dist/src/dsl.d.ts +0 -124
  414. package/dist/src/dsl.d.ts.map +0 -1
  415. package/dist/src/dsl.js +0 -130
  416. package/dist/src/dsl.js.map +0 -1
  417. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  418. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  419. package/dist/src/examples/advanced-todo/index.js +0 -222
  420. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  421. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  422. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  423. package/dist/src/examples/auth-basic/index.js +0 -122
  424. package/dist/src/examples/auth-basic/index.js.map +0 -1
  425. package/dist/src/examples/cart/index.d.ts +0 -19
  426. package/dist/src/examples/cart/index.d.ts.map +0 -1
  427. package/dist/src/examples/cart/index.js +0 -202
  428. package/dist/src/examples/cart/index.js.map +0 -1
  429. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  430. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  431. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  432. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  433. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  434. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  435. package/dist/src/examples/svelte-counter/index.js +0 -123
  436. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  437. package/dist/src/flows.d.ts +0 -125
  438. package/dist/src/flows.d.ts.map +0 -1
  439. package/dist/src/flows.js +0 -160
  440. package/dist/src/flows.js.map +0 -1
  441. package/dist/src/index.d.ts +0 -77
  442. package/dist/src/index.d.ts.map +0 -1
  443. package/dist/src/index.js +0 -64
  444. package/dist/src/index.js.map +0 -1
  445. package/dist/src/integrations/code-canvas.d.ts +0 -265
  446. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  447. package/dist/src/integrations/code-canvas.js +0 -451
  448. package/dist/src/integrations/code-canvas.js.map +0 -1
  449. package/dist/src/integrations/pluresdb.d.ts +0 -117
  450. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  451. package/dist/src/integrations/pluresdb.js +0 -117
  452. package/dist/src/integrations/pluresdb.js.map +0 -1
  453. package/dist/src/integrations/state-docs.d.ts +0 -191
  454. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  455. package/dist/src/integrations/state-docs.js +0 -515
  456. package/dist/src/integrations/state-docs.js.map +0 -1
  457. package/dist/src/integrations/svelte.d.ts.map +0 -1
  458. package/dist/src/integrations/svelte.js +0 -447
  459. package/dist/src/integrations/svelte.js.map +0 -1
  460. package/dist/src/integrations/tauri.d.ts +0 -360
  461. package/dist/src/integrations/tauri.d.ts.map +0 -1
  462. package/dist/src/integrations/tauri.js +0 -278
  463. package/dist/src/integrations/tauri.js.map +0 -1
  464. package/dist/src/integrations/unum.d.ts +0 -159
  465. package/dist/src/integrations/unum.d.ts.map +0 -1
  466. package/dist/src/integrations/unum.js +0 -240
  467. package/dist/src/integrations/unum.js.map +0 -1
  468. package/dist/src/registry.d.ts +0 -94
  469. package/dist/src/registry.d.ts.map +0 -1
  470. package/dist/src/registry.js +0 -181
  471. package/dist/src/registry.js.map +0 -1
  472. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  473. package/dist/src/runtime/terminal-adapter.js +0 -239
  474. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  475. package/dist/src/step.d.ts +0 -34
  476. package/dist/src/step.d.ts.map +0 -1
  477. package/dist/src/step.js +0 -111
  478. package/dist/src/step.js.map +0 -1
  479. package/dist/src/types.d.ts +0 -63
  480. package/dist/src/types.d.ts.map +0 -1
  481. package/dist/src/types.js +0 -6
  482. package/dist/src/types.js.map +0 -1
  483. package/dist/tools/cli/commands/index.d.ts +0 -7
  484. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  485. package/dist/tools/cli/commands/index.js +0 -7
  486. package/dist/tools/cli/commands/index.js.map +0 -1
  487. package/dist/tools/cli/index.d.ts +0 -8
  488. package/dist/tools/cli/index.d.ts.map +0 -1
  489. package/dist/tools/cli/index.js +0 -9
  490. package/dist/tools/cli/index.js.map +0 -1
  491. package/dist/tools/watcher/index.d.ts +0 -105
  492. package/dist/tools/watcher/index.d.ts.map +0 -1
  493. package/dist/tools/watcher/index.js +0 -213
  494. package/dist/tools/watcher/index.js.map +0 -1
  495. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  496. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  497. package/dist/ui/canvas/canvas-projection.js +0 -416
  498. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  499. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  500. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  501. package/dist/ui/canvas/canvas-state.js +0 -464
  502. package/dist/ui/canvas/canvas-state.js.map +0 -1
  503. package/dist/ui/canvas/components/index.d.ts +0 -95
  504. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  505. package/dist/ui/canvas/components/index.js +0 -19
  506. package/dist/ui/canvas/components/index.js.map +0 -1
  507. package/dist/ui/canvas/index.d.ts +0 -32
  508. package/dist/ui/canvas/index.d.ts.map +0 -1
  509. package/dist/ui/canvas/index.js +0 -32
  510. package/dist/ui/canvas/index.js.map +0 -1
  511. package/dist/ui/svelte-generator/index.d.ts +0 -9
  512. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  513. package/dist/ui/svelte-generator/index.js +0 -11
  514. package/dist/ui/svelte-generator/index.js.map +0 -1
  515. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  516. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  517. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  518. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Praxis Generate Command
3
- *
3
+ *
4
4
  * Generates code from Praxis schema files.
5
5
  */
6
6
 
@@ -36,50 +36,48 @@ export async function generate(options: GenerateOptions): Promise<void> {
36
36
  // Determine schema file path
37
37
  const schemaPath = options.schema || './praxis.schema.js';
38
38
  const resolvedSchemaPath = resolve(process.cwd(), schemaPath);
39
-
39
+
40
40
  console.log(`Loading schema from: ${resolvedSchemaPath}`);
41
-
41
+
42
42
  // Load the schema
43
43
  const loadResult = await loadSchemaFromFile(resolvedSchemaPath, {
44
44
  validate: true,
45
45
  });
46
-
46
+
47
47
  if (loadResult.errors.length > 0) {
48
48
  console.error('❌ Failed to load schema:');
49
49
  loadResult.errors.forEach((error) => console.error(` - ${error}`));
50
50
  process.exit(1);
51
51
  }
52
-
52
+
53
53
  if (!loadResult.schema) {
54
54
  console.error('❌ No schema found');
55
55
  process.exit(1);
56
56
  }
57
-
57
+
58
58
  // Validate schema for generation
59
59
  const generationValidation = validateForGeneration(loadResult.schema);
60
60
  if (!generationValidation.valid) {
61
61
  console.error('❌ Schema validation failed:');
62
- generationValidation.errors.forEach((error) =>
63
- console.error(` - ${error.message}`)
64
- );
62
+ generationValidation.errors.forEach((error) => console.error(` - ${error.message}`));
65
63
  process.exit(1);
66
64
  }
67
-
65
+
68
66
  console.log('✓ Schema loaded successfully');
69
-
67
+
70
68
  // Normalize the schema
71
69
  console.log('Normalizing schema...');
72
70
  const normalizedSchema = normalizeSchema(loadResult.schema);
73
71
  console.log('✓ Schema normalized');
74
-
72
+
75
73
  // Determine output directory
76
74
  const outputDir = options.output || './generated';
77
75
  const resolvedOutputDir = resolve(process.cwd(), outputDir);
78
-
76
+
79
77
  // Generate based on target
80
78
  const target = options.target || 'all';
81
79
  let generatedFiles = 0;
82
-
80
+
83
81
  if (target === 'all' || target === 'logic') {
84
82
  console.log('\nGenerating logic module...');
85
83
  const logicOutputDir = `${resolvedOutputDir}/logic`;
@@ -87,18 +85,15 @@ export async function generate(options: GenerateOptions): Promise<void> {
87
85
  generatedFiles += 5; // facts, events, rules, engine, index
88
86
  console.log(`✓ Logic module generated in ${logicOutputDir}`);
89
87
  }
90
-
88
+
91
89
  if (target === 'all' || target === 'components') {
92
90
  console.log('\nGenerating components...');
93
91
  const componentsOutputDir = `${resolvedOutputDir}/components`;
94
- const componentCount = await generateComponents(
95
- normalizedSchema,
96
- componentsOutputDir
97
- );
92
+ const componentCount = await generateComponents(normalizedSchema, componentsOutputDir);
98
93
  generatedFiles += componentCount;
99
94
  console.log(`✓ ${componentCount} components generated in ${componentsOutputDir}`);
100
95
  }
101
-
96
+
102
97
  if (target === 'all' || target === 'pluresdb') {
103
98
  console.log('\nGenerating PluresDB configuration...');
104
99
  const dbOutputDir = resolvedOutputDir;
@@ -106,9 +101,9 @@ export async function generate(options: GenerateOptions): Promise<void> {
106
101
  generatedFiles += 1;
107
102
  console.log(`✓ PluresDB config generated in ${dbOutputDir}`);
108
103
  }
109
-
104
+
110
105
  console.log(`\n✅ Generation complete! ${generatedFiles} files generated.`);
111
-
106
+
112
107
  if (options.watch) {
113
108
  console.log('\n👀 Watching for changes...');
114
109
  console.log('(Watch mode not yet implemented)');
@@ -130,13 +125,10 @@ export async function generate(options: GenerateOptions): Promise<void> {
130
125
  /**
131
126
  * Generate logic module
132
127
  */
133
- async function generateLogic(
134
- schema: NormalizedSchema,
135
- outputDir: string
136
- ): Promise<void> {
128
+ async function generateLogic(schema: NormalizedSchema, outputDir: string): Promise<void> {
137
129
  const generator = createLogicGenerator(outputDir);
138
130
  const files = generator.generateLogic(schema);
139
-
131
+
140
132
  // Write files
141
133
  for (const file of files) {
142
134
  await ensureDir(dirname(file.path));
@@ -147,35 +139,32 @@ async function generateLogic(
147
139
  /**
148
140
  * Generate components
149
141
  */
150
- async function generateComponents(
151
- schema: NormalizedSchema,
152
- outputDir: string
153
- ): Promise<number> {
142
+ async function generateComponents(schema: NormalizedSchema, outputDir: string): Promise<number> {
154
143
  if (!schema.components || schema.components.length === 0) {
155
144
  console.log(' No components defined in schema');
156
145
  return 0;
157
146
  }
158
-
147
+
159
148
  const generator = createComponentGenerator(outputDir, {
160
149
  typescript: true,
161
150
  includeTests: false,
162
151
  includeDocs: true,
163
152
  });
164
-
153
+
165
154
  let fileCount = 0;
166
-
155
+
167
156
  for (const component of schema.components) {
168
157
  // Find model if component references one
169
158
  const model = component.resolvedModel || undefined;
170
-
159
+
171
160
  const result = generator.generateComponent(component, model);
172
-
161
+
173
162
  if (!result.success) {
174
163
  console.error(` ⚠️ Failed to generate ${component.name}:`);
175
164
  result.errors.forEach((error) => console.error(` - ${error.message}`));
176
165
  continue;
177
166
  }
178
-
167
+
179
168
  // Write files
180
169
  for (const file of result.files) {
181
170
  await ensureDir(dirname(file.path));
@@ -183,7 +172,7 @@ async function generateComponents(
183
172
  fileCount++;
184
173
  }
185
174
  }
186
-
175
+
187
176
  return fileCount;
188
177
  }
189
178
 
@@ -200,9 +189,9 @@ async function generatePluresDB(
200
189
  enableSync: false,
201
190
  autoIndex: autoIndex || 'all',
202
191
  });
203
-
192
+
204
193
  const files = generator.generateConfig(schema);
205
-
194
+
206
195
  // Write files
207
196
  for (const file of files) {
208
197
  await ensureDir(dirname(file.path));
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Orchestrate Command
3
- *
3
+ *
4
4
  * Manages distributed orchestration and coordination.
5
5
  */
6
6
 
@@ -47,11 +47,11 @@ export interface OrchestrateOptions {
47
47
  */
48
48
  export async function orchestrate(options: OrchestrateOptions): Promise<void> {
49
49
  const action = options.action || 'status';
50
-
50
+
51
51
  console.log('\n╔═══════════════════════════════════════════════════╗');
52
52
  console.log('║ Praxis Orchestration ║');
53
53
  console.log('╚═══════════════════════════════════════════════════╝\n');
54
-
54
+
55
55
  switch (action) {
56
56
  case 'init':
57
57
  await initOrchestration(options);
@@ -73,13 +73,13 @@ export async function orchestrate(options: OrchestrateOptions): Promise<void> {
73
73
  */
74
74
  async function initOrchestration(options: OrchestrateOptions): Promise<void> {
75
75
  const configPath = options.config || 'praxis.orchestrate.json';
76
-
76
+
77
77
  if (fs.existsSync(configPath)) {
78
78
  console.log(`Configuration file already exists: ${configPath}`);
79
79
  console.log('Use --config to specify a different file.\n');
80
80
  return;
81
81
  }
82
-
82
+
83
83
  const defaultConfig: OrchestrationConfig = {
84
84
  nodeId: `node-${Date.now().toString(36)}`,
85
85
  role: 'primary',
@@ -95,9 +95,9 @@ async function initOrchestration(options: OrchestrateOptions): Promise<void> {
95
95
  timeout: 5000,
96
96
  },
97
97
  };
98
-
98
+
99
99
  fs.writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
100
-
100
+
101
101
  console.log(`✓ Created orchestration config: ${configPath}`);
102
102
  console.log('\nConfiguration:');
103
103
  console.log(` Node ID: ${defaultConfig.nodeId}`);
@@ -114,42 +114,42 @@ async function initOrchestration(options: OrchestrateOptions): Promise<void> {
114
114
  */
115
115
  async function startOrchestration(options: OrchestrateOptions): Promise<void> {
116
116
  const configPath = options.config || 'praxis.orchestrate.json';
117
-
117
+
118
118
  if (!fs.existsSync(configPath)) {
119
119
  console.log(`Configuration file not found: ${configPath}`);
120
120
  console.log('\nTo create a configuration:');
121
121
  console.log(' praxis orchestrate --action init\n');
122
122
  return;
123
123
  }
124
-
124
+
125
125
  const config: OrchestrationConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
126
-
126
+
127
127
  console.log('Starting orchestration...\n');
128
128
  console.log(` Node ID: ${config.nodeId}`);
129
129
  console.log(` Role: ${config.role}`);
130
130
  console.log(` Endpoints: ${config.endpoints.join(', ')}\n`);
131
-
131
+
132
132
  // In a real implementation, this would:
133
133
  // 1. Connect to cluster endpoints
134
134
  // 2. Register node with cluster
135
135
  // 3. Start sync worker
136
136
  // 4. Start health check worker
137
-
137
+
138
138
  console.log('🔄 Connecting to cluster...');
139
-
139
+
140
140
  // Simulate connection delay
141
- await new Promise(resolve => setTimeout(resolve, 500));
142
-
141
+ await new Promise((resolve) => setTimeout(resolve, 500));
142
+
143
143
  console.log('✓ Connected to cluster');
144
144
  console.log('✓ Sync worker started');
145
145
  console.log('✓ Health check enabled\n');
146
-
146
+
147
147
  console.log('Orchestration is running.');
148
148
  console.log('\nTo check status:');
149
149
  console.log(' praxis orchestrate --action status\n');
150
150
  console.log('To stop:');
151
151
  console.log(' praxis orchestrate --action stop\n');
152
-
152
+
153
153
  // For a full implementation, this would keep running
154
154
  // and handle sync/health checks in the background
155
155
  }
@@ -159,16 +159,16 @@ async function startOrchestration(options: OrchestrateOptions): Promise<void> {
159
159
  */
160
160
  async function stopOrchestration(_options: OrchestrateOptions): Promise<void> {
161
161
  console.log('Stopping orchestration...\n');
162
-
162
+
163
163
  // In a real implementation, this would:
164
164
  // 1. Stop sync worker
165
165
  // 2. Unregister from cluster
166
166
  // 3. Close connections
167
-
167
+
168
168
  console.log('✓ Sync worker stopped');
169
169
  console.log('✓ Unregistered from cluster');
170
170
  console.log('✓ Connections closed\n');
171
-
171
+
172
172
  console.log('Orchestration stopped.\n');
173
173
  }
174
174
 
@@ -177,7 +177,7 @@ async function stopOrchestration(_options: OrchestrateOptions): Promise<void> {
177
177
  */
178
178
  async function showOrchestrationStatus(options: OrchestrateOptions): Promise<void> {
179
179
  const configPath = options.config || 'praxis.orchestrate.json';
180
-
180
+
181
181
  if (!fs.existsSync(configPath)) {
182
182
  console.log('Orchestration not configured.\n');
183
183
  console.log('To initialize:');
@@ -188,9 +188,9 @@ async function showOrchestrationStatus(options: OrchestrateOptions): Promise<voi
188
188
  console.log(' • See docs/guides/orchestration.md for patterns\n');
189
189
  return;
190
190
  }
191
-
191
+
192
192
  const config: OrchestrationConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
193
-
193
+
194
194
  console.log('Orchestration Status\n');
195
195
  console.log('┌──────────────────────────────────────────────────┐');
196
196
  console.log(`│ Node ID: ${config.nodeId.padEnd(36)} │`);
@@ -206,7 +206,7 @@ async function showOrchestrationStatus(options: OrchestrateOptions): Promise<voi
206
206
  console.log(`│ Timeout: ${(config.health.timeout + 'ms').padEnd(36)} │`);
207
207
  console.log('└──────────────────────────────────────────────────┘\n');
208
208
  console.log('Endpoints:');
209
- config.endpoints.forEach(ep => console.log(` • ${ep}`));
209
+ config.endpoints.forEach((ep) => console.log(` • ${ep}`));
210
210
  console.log('\nTo start orchestration:');
211
211
  console.log(` praxis orchestrate --action start --config ${configPath}\n`);
212
212
  }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Verify Command
3
+ *
4
+ * Verifies the implementation of the project against the schema/rules.
5
+ */
6
+
7
+ import { verifyImplementation } from '../../../ui/canvas-inspector/src/verify-fsm-implementation.js';
8
+
9
+ export interface VerifyOptions {
10
+ detailed?: boolean;
11
+ }
12
+
13
+ export async function verify(type: string, _options: VerifyOptions): Promise<void> {
14
+ if (type !== 'implementation') {
15
+ console.error(`Unknown verification type: ${type}`);
16
+ console.log('Supported types: implementation');
17
+ process.exit(1);
18
+ }
19
+
20
+ console.log('Verifying FSM implementation...');
21
+
22
+ try {
23
+ const result = verifyImplementation();
24
+
25
+ const missingCount = result.missingHandlers.length;
26
+ const emptyCount = result.emptyHandlers.length;
27
+
28
+ if (missingCount === 0 && emptyCount === 0) {
29
+ console.log('✅ Verification passed! All rules have implementations.');
30
+ } else {
31
+ console.log('⚠️ Verification found issues:');
32
+
33
+ if (missingCount > 0) {
34
+ console.log(`\n Missing Handlers (${missingCount}):`);
35
+ result.missingHandlers.forEach((h: string) => console.log(` - ${h}`));
36
+ }
37
+
38
+ if (emptyCount > 0) {
39
+ console.log(`\n Empty Handlers (${emptyCount}):`);
40
+ result.emptyHandlers.forEach((h: string) => console.log(` - ${h}`));
41
+ }
42
+
43
+ process.exit(1);
44
+ }
45
+ } catch (error) {
46
+ console.error('Verification failed:', error);
47
+ process.exit(1);
48
+ }
49
+ }
package/src/cli/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * Praxis CLI
5
- *
5
+ *
6
6
  * Command-line interface for the Praxis framework.
7
7
  */
8
8
 
@@ -81,7 +81,11 @@ program
81
81
  .option('-t, --target <target>', 'Generation target (all, logic, components, pluresdb)', 'all')
82
82
  .option('-o, --output <dir>', 'Output directory', './generated')
83
83
  .option('-w, --watch', 'Watch for changes')
84
- .option('--auto-index <strategy>', 'Auto-indexing strategy for PluresDB (all, explicit, none)', 'all')
84
+ .option(
85
+ '--auto-index <strategy>',
86
+ 'Auto-indexing strategy for PluresDB (all, explicit, none)',
87
+ 'all'
88
+ )
85
89
  .action(async (options) => {
86
90
  await generate(options);
87
91
  });
@@ -214,4 +218,19 @@ cloudCmd
214
218
  }
215
219
  });
216
220
 
221
+ // Verify command
222
+ program
223
+ .command('verify <type>')
224
+ .description('Verify project implementation (e.g., implementation)')
225
+ .option('-d, --detailed', 'Show detailed analysis')
226
+ .action(async (type, options) => {
227
+ try {
228
+ const { verify } = await import('./commands/verify.js');
229
+ await verify(type, options);
230
+ } catch (error) {
231
+ console.error('Error verifying:', error);
232
+ process.exit(1);
233
+ }
234
+ });
235
+
217
236
  program.parse();
@@ -24,6 +24,7 @@ npx praxis cloud init
24
24
  ```
25
25
 
26
26
  The wizard will:
27
+
27
28
  1. Authenticate with GitHub
28
29
  2. Configure the Azure endpoint
29
30
  3. Test the connection
@@ -32,24 +33,24 @@ The wizard will:
32
33
  ### 2. Use in Your Application
33
34
 
34
35
  ```typescript
35
- import { connectRelay } from "@plures/praxis/cloud";
36
+ import { connectRelay } from '@plures/praxis/cloud';
36
37
 
37
38
  // Connect to cloud relay
38
- const relay = await connectRelay("https://praxis-relay.azurewebsites.net", {
39
- appId: "my-app",
40
- authToken: "your-github-token",
39
+ const relay = await connectRelay('https://praxis-relay.azurewebsites.net', {
40
+ appId: 'my-app',
41
+ authToken: 'your-github-token',
41
42
  autoSync: true,
42
- syncInterval: 5000
43
+ syncInterval: 5000,
43
44
  });
44
45
 
45
46
  // Sync data
46
47
  await relay.sync({
47
- type: "delta",
48
- appId: "my-app",
48
+ type: 'delta',
49
+ appId: 'my-app',
49
50
  clock: {},
50
- facts: [{ tag: "TaskCreated", payload: { id: "1", title: "Buy milk" } }],
51
+ facts: [{ tag: 'TaskCreated', payload: { id: '1', title: 'Buy milk' } }],
51
52
  events: [],
52
- timestamp: Date.now()
53
+ timestamp: Date.now(),
53
54
  });
54
55
 
55
56
  // Get usage metrics
@@ -75,6 +76,7 @@ npx praxis cloud init --endpoint https://praxis-relay.azurewebsites.net --app-id
75
76
  ```
76
77
 
77
78
  Options:
79
+
78
80
  - `-e, --endpoint <url>` - Azure Function App endpoint URL
79
81
  - `-a, --app-id <id>` - Application identifier
80
82
  - `--auto-sync` - Enable automatic synchronization
@@ -111,6 +113,7 @@ npx praxis cloud usage
111
113
  Connect to Praxis Cloud Relay.
112
114
 
113
115
  **Parameters:**
116
+
114
117
  - `endpoint: string` - Azure Function App endpoint URL
115
118
  - `options: CloudRelayConfig` - Configuration options
116
119
  - `appId: string` - Application identifier (required)
@@ -136,6 +139,7 @@ Disconnect from the relay service.
136
139
  Sync facts and events using CRDT protocol.
137
140
 
138
141
  **Parameters:**
142
+
139
143
  - `message.type` - "sync" | "delta" | "snapshot"
140
144
  - `message.appId` - Application identifier
141
145
  - `message.clock` - Vector clock for causality
@@ -148,6 +152,7 @@ Sync facts and events using CRDT protocol.
148
152
  Get usage metrics for the current billing period.
149
153
 
150
154
  **Returns:**
155
+
151
156
  - `syncCount` - Number of sync operations
152
157
  - `eventCount` - Number of events forwarded
153
158
  - `factCount` - Number of facts synced
@@ -160,6 +165,7 @@ Get usage metrics for the current billing period.
160
165
  Get service health status.
161
166
 
162
167
  **Returns:**
168
+
163
169
  - `status` - "healthy" | "degraded" | "unhealthy"
164
170
  - `services` - Status of individual services
165
171
  - `relay` - Relay service status
@@ -172,6 +178,7 @@ Get service health status.
172
178
  Get current connection status (synchronous).
173
179
 
174
180
  **Returns:**
181
+
175
182
  - `connected` - Connection state
176
183
  - `lastSync` - Last sync timestamp
177
184
  - `endpoint` - Endpoint URL
@@ -233,6 +240,7 @@ The relay exposes the following HTTP endpoints:
233
240
  Health check endpoint.
234
241
 
235
242
  **Response:**
243
+
236
244
  ```json
237
245
  {
238
246
  "status": "healthy",
@@ -252,6 +260,7 @@ Health check endpoint.
252
260
  CRDT synchronization endpoint.
253
261
 
254
262
  **Request:**
263
+
255
264
  ```json
256
265
  {
257
266
  "type": "delta",
@@ -264,6 +273,7 @@ CRDT synchronization endpoint.
264
273
  ```
265
274
 
266
275
  **Response:**
276
+
267
277
  ```json
268
278
  {
269
279
  "success": true,
@@ -277,6 +287,7 @@ CRDT synchronization endpoint.
277
287
  Usage metrics endpoint.
278
288
 
279
289
  **Response:**
290
+
280
291
  ```json
281
292
  {
282
293
  "appId": "my-app",
@@ -294,6 +305,7 @@ Usage metrics endpoint.
294
305
  Aggregated statistics endpoint.
295
306
 
296
307
  **Response:**
308
+
297
309
  ```json
298
310
  {
299
311
  "appId": "my-app",
@@ -312,9 +324,9 @@ Praxis Cloud uses GitHub OAuth for authentication.
312
324
  The CLI uses GitHub's device flow for authentication:
313
325
 
314
326
  ```typescript
315
- import { authenticateWithDeviceFlow } from "@plures/praxis/cloud";
327
+ import { authenticateWithDeviceFlow } from '@plures/praxis/cloud';
316
328
 
317
- const result = await authenticateWithDeviceFlow("your-client-id");
329
+ const result = await authenticateWithDeviceFlow('your-client-id');
318
330
 
319
331
  if (result.success) {
320
332
  console.log(`Authenticated as ${result.user.login}`);
@@ -327,12 +339,12 @@ if (result.success) {
327
339
  For web applications, use the standard OAuth flow:
328
340
 
329
341
  ```typescript
330
- import { createGitHubOAuth } from "@plures/praxis/cloud";
342
+ import { createGitHubOAuth } from '@plures/praxis/cloud';
331
343
 
332
344
  const oauth = createGitHubOAuth({
333
- clientId: "your-client-id",
334
- clientSecret: "your-client-secret",
335
- redirectUri: "http://localhost:3000/callback"
345
+ clientId: 'your-client-id',
346
+ clientSecret: 'your-client-secret',
347
+ redirectUri: 'http://localhost:3000/callback',
336
348
  });
337
349
 
338
350
  // Redirect user to GitHub
@@ -368,6 +380,7 @@ Praxis Cloud Base Tier includes:
368
380
  - **GitHub OAuth** - Unlimited authentications
369
381
 
370
382
  Additional usage is billed per:
383
+
371
384
  - Sync operations: $0.001 per sync
372
385
  - Events: $0.0001 per event
373
386
  - Storage: $0.10 per GB/month