@plures/praxis 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/FRAMEWORK.md +55 -5
  2. package/LICENSE +21 -21
  3. package/README.md +162 -375
  4. package/core/codegen/docs-generator.ts +5 -2
  5. package/core/codegen/index.ts +1 -1
  6. package/core/codegen/ts-generator.ts +15 -15
  7. package/core/db-adapter/index.ts +2 -2
  8. package/core/db-adapter/sync-engine.ts +17 -6
  9. package/core/logic-engine/engine.ts +1 -1
  10. package/core/logic-engine/index.ts +2 -2
  11. package/core/logic-engine/protocol.ts +1 -1
  12. package/core/logic-engine/psf-adapter.ts +8 -4
  13. package/core/logic-engine/rules.ts +1 -1
  14. package/core/schema-engine/compiler.ts +53 -11
  15. package/core/schema-engine/generator.ts +17 -7
  16. package/core/schema-engine/index.ts +2 -2
  17. package/core/schema-engine/psf.ts +12 -3
  18. package/core/schema-engine/types.ts +3 -11
  19. package/core/schema-engine/validator.ts +112 -22
  20. package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
  21. package/dist/browser/index.d.ts +3004 -0
  22. package/dist/browser/index.js +2892 -0
  23. package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
  24. package/dist/browser/integrations/svelte.js +298 -0
  25. package/dist/node/auth-STARLY7I.js +207 -0
  26. package/dist/node/build-Y7OT5VBF.js +144 -0
  27. package/dist/node/canvas-UERZHJYW.js +362 -0
  28. package/dist/node/chunk-DSDC2JWZ.js +256 -0
  29. package/dist/node/chunk-FXQZXAWF.js +175 -0
  30. package/dist/node/chunk-N5Y37EUV.js +202 -0
  31. package/dist/node/chunk-QGM4M3NI.js +37 -0
  32. package/dist/node/chunk-RJMWCNHR.js +175 -0
  33. package/dist/node/chunk-SRM3OPPM.js +404 -0
  34. package/dist/node/chunk-UATVJBNV.js +175 -0
  35. package/dist/node/chunk-UY7YEBE2.js +159 -0
  36. package/dist/node/chunk-XCY2VIFX.js +143 -0
  37. package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
  38. package/dist/node/cli/index.cjs +217418 -0
  39. package/dist/node/cli/index.d.cts +1 -0
  40. package/dist/node/cli/index.d.ts +1 -0
  41. package/dist/node/cli/index.js +690 -0
  42. package/dist/node/cloud/index.cjs +1043 -0
  43. package/dist/node/cloud/index.d.cts +864 -0
  44. package/dist/node/cloud/index.d.ts +864 -0
  45. package/dist/node/cloud/index.js +456 -0
  46. package/dist/node/cloud-AXOK4PSN.js +212 -0
  47. package/dist/node/component.cjs +374 -0
  48. package/dist/node/component.d.cts +125 -0
  49. package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
  50. package/dist/node/component.js +9 -0
  51. package/dist/node/components/index.cjs +216 -0
  52. package/dist/node/components/index.d.cts +43 -0
  53. package/dist/{src → node}/components/index.d.ts +8 -8
  54. package/dist/node/components/index.js +7 -0
  55. package/dist/node/create-TRLSVCNQ.js +584 -0
  56. package/dist/node/dev-PMJZUYGE.js +65 -0
  57. package/dist/node/engine-1iqLe6_P.d.ts +214 -0
  58. package/dist/node/engine-CVJobhHm.d.cts +214 -0
  59. package/dist/node/index.cjs +3247 -0
  60. package/dist/node/index.d.cts +2579 -0
  61. package/dist/node/index.d.ts +2579 -0
  62. package/dist/node/index.js +2098 -0
  63. package/dist/node/integrations/svelte.cjs +330 -0
  64. package/dist/node/integrations/svelte.d.cts +309 -0
  65. package/dist/node/integrations/svelte.d.ts +309 -0
  66. package/dist/node/integrations/svelte.js +300 -0
  67. package/dist/node/orchestrate-737TCL5H.js +127 -0
  68. package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
  69. package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
  70. package/dist/node/schema.cjs +200 -0
  71. package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
  72. package/dist/node/schema.d.ts +371 -0
  73. package/dist/node/schema.js +9 -0
  74. package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
  75. package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
  76. package/dist/node/verify-YBZ7W24H.js +213239 -0
  77. package/docs/MONETIZATION.md +21 -16
  78. package/docs/REACTIVE_REDESIGN.md +132 -0
  79. package/docs/README.md +47 -36
  80. package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
  81. package/docs/TERMINAL_NODE.md +27 -24
  82. package/docs/core/building-extensions.md +58 -61
  83. package/docs/core/cli-usage.md +59 -59
  84. package/docs/core/code-canvas-sync.md +28 -16
  85. package/docs/core/logic-engine.md +77 -82
  86. package/docs/core/pluresdb-integration.md +29 -39
  87. package/docs/core/schema-model.md +66 -52
  88. package/docs/core/ui-generation.md +57 -49
  89. package/docs/core/what-is-praxis.md +32 -15
  90. package/docs/guides/canvas.md +21 -5
  91. package/docs/guides/getting-started.md +13 -7
  92. package/docs/guides/history-state-pattern.md +65 -51
  93. package/docs/guides/orchestration.md +46 -32
  94. package/docs/guides/parallel-state-pattern.md +56 -72
  95. package/docs/guides/svelte-integration.md +45 -53
  96. package/docs/tutorials/README.md +16 -0
  97. package/docs/tutorials/ecommerce-cart.md +177 -95
  98. package/docs/tutorials/first-app.md +26 -41
  99. package/docs/tutorials/form-builder.md +191 -138
  100. package/docs/tutorials/todo-pluresdb.md +71 -69
  101. package/package.json +132 -97
  102. package/src/__tests__/actors.test.ts +68 -68
  103. package/src/__tests__/billing.test.ts +32 -32
  104. package/src/__tests__/canvas-components.test.ts +94 -73
  105. package/src/__tests__/cli-create.test.ts +28 -28
  106. package/src/__tests__/cloud.test.ts +36 -36
  107. package/src/__tests__/code-canvas-integration.test.ts +132 -141
  108. package/src/__tests__/docs-generator.test.ts +3 -9
  109. package/src/__tests__/dsl.test.ts +58 -64
  110. package/src/__tests__/edge-cases.test.ts +106 -108
  111. package/src/__tests__/engine.test.ts +51 -25
  112. package/src/__tests__/generators.test.ts +42 -44
  113. package/src/__tests__/introspection.test.ts +104 -114
  114. package/src/__tests__/pluresdb.test.ts +189 -187
  115. package/src/__tests__/protocol.test.ts +15 -15
  116. package/src/__tests__/provisioning.test.ts +61 -61
  117. package/src/__tests__/schema.test.ts +7 -11
  118. package/src/__tests__/state-docs-integration.test.ts +162 -145
  119. package/src/__tests__/svelte-integration.test.ts +16 -19
  120. package/src/__tests__/tauri-integration.test.ts +149 -147
  121. package/src/__tests__/terminal-node.test.ts +12 -7
  122. package/src/__tests__/unum-integration.test.ts +68 -68
  123. package/src/adapters/cli.ts +21 -15
  124. package/src/cli/commands/auth.ts +82 -78
  125. package/src/cli/commands/build.ts +29 -27
  126. package/src/cli/commands/canvas.ts +338 -127
  127. package/src/cli/commands/cloud.ts +47 -47
  128. package/src/cli/commands/create.ts +59 -47
  129. package/src/cli/commands/dev.ts +12 -12
  130. package/src/cli/commands/generate.ts +29 -40
  131. package/src/cli/commands/orchestrate.ts +24 -24
  132. package/src/cli/commands/verify.ts +7 -8
  133. package/src/cli/index.ts +14 -10
  134. package/src/cloud/README.md +28 -15
  135. package/src/cloud/auth.ts +55 -70
  136. package/src/cloud/billing.ts +59 -58
  137. package/src/cloud/client.ts +29 -35
  138. package/src/cloud/index.ts +19 -40
  139. package/src/cloud/marketplace.ts +69 -78
  140. package/src/cloud/provisioning.ts +42 -51
  141. package/src/cloud/relay/endpoints.ts +30 -34
  142. package/src/cloud/relay/health/index.ts +1 -1
  143. package/src/cloud/relay/stats/index.ts +1 -1
  144. package/src/cloud/relay/sync/index.ts +1 -1
  145. package/src/cloud/relay/usage/index.ts +1 -1
  146. package/src/cloud/sponsors.ts +31 -34
  147. package/src/cloud/types.ts +4 -4
  148. package/src/components/README.md +1 -0
  149. package/src/components/TerminalNode.svelte +457 -457
  150. package/src/components/index.ts +3 -4
  151. package/src/core/actors.ts +7 -7
  152. package/src/core/component/generator.ts +10 -28
  153. package/src/core/engine.ts +51 -24
  154. package/src/core/introspection.ts +37 -35
  155. package/src/core/logic/generator.ts +62 -62
  156. package/src/core/pluresdb/adapter.ts +8 -8
  157. package/src/core/pluresdb/generator.ts +39 -35
  158. package/src/core/pluresdb/index.ts +9 -12
  159. package/src/core/pluresdb/schema-registry.ts +22 -25
  160. package/src/core/pluresdb/store.ts +57 -57
  161. package/src/core/protocol.ts +14 -14
  162. package/src/core/reactive-engine.svelte.ts +65 -0
  163. package/src/core/reactive-engine.ts +67 -0
  164. package/src/core/rules.ts +4 -4
  165. package/src/core/schema/loader.common.ts +150 -0
  166. package/src/core/schema/loader.ts +19 -149
  167. package/src/core/schema/normalize.ts +34 -51
  168. package/src/core/schema/types.ts +47 -11
  169. package/src/dsl/index.ts +8 -8
  170. package/src/dsl.ts +11 -17
  171. package/src/examples/advanced-todo/App.svelte +506 -506
  172. package/src/examples/advanced-todo/README.md +58 -40
  173. package/src/examples/advanced-todo/index.ts +3 -3
  174. package/src/examples/auth-basic/index.ts +30 -30
  175. package/src/examples/cart/index.ts +50 -50
  176. package/src/examples/hero-ecommerce/index.ts +130 -157
  177. package/src/examples/svelte-counter/index.ts +22 -26
  178. package/src/flows.ts +6 -17
  179. package/src/index.browser.ts +204 -0
  180. package/src/index.ts +37 -42
  181. package/src/integrations/code-canvas.ts +237 -193
  182. package/src/integrations/pluresdb.ts +55 -35
  183. package/src/integrations/state-docs.ts +104 -104
  184. package/src/integrations/svelte.ts +35 -35
  185. package/src/integrations/tauri.ts +75 -73
  186. package/src/integrations/unum.ts +68 -61
  187. package/src/registry.ts +7 -14
  188. package/src/runtime/terminal-adapter.ts +31 -26
  189. package/src/step.ts +10 -16
  190. package/src/types.ts +1 -1
  191. package/templates/basic-app/README.md +6 -9
  192. package/templates/fullstack-app/README.md +10 -0
  193. package/dist/core/codegen/docs-generator.d.ts +0 -123
  194. package/dist/core/codegen/docs-generator.d.ts.map +0 -1
  195. package/dist/core/codegen/docs-generator.js +0 -674
  196. package/dist/core/codegen/docs-generator.js.map +0 -1
  197. package/dist/core/codegen/index.d.ts +0 -11
  198. package/dist/core/codegen/index.d.ts.map +0 -1
  199. package/dist/core/codegen/index.js +0 -13
  200. package/dist/core/codegen/index.js.map +0 -1
  201. package/dist/core/codegen/ts-generator.d.ts +0 -8
  202. package/dist/core/codegen/ts-generator.d.ts.map +0 -1
  203. package/dist/core/codegen/ts-generator.js +0 -8
  204. package/dist/core/codegen/ts-generator.js.map +0 -1
  205. package/dist/core/db-adapter/index.d.ts +0 -18
  206. package/dist/core/db-adapter/index.d.ts.map +0 -1
  207. package/dist/core/db-adapter/index.js +0 -23
  208. package/dist/core/db-adapter/index.js.map +0 -1
  209. package/dist/core/db-adapter/sync-engine.d.ts +0 -180
  210. package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
  211. package/dist/core/db-adapter/sync-engine.js +0 -342
  212. package/dist/core/db-adapter/sync-engine.js.map +0 -1
  213. package/dist/core/logic-engine/engine.d.ts +0 -8
  214. package/dist/core/logic-engine/engine.d.ts.map +0 -1
  215. package/dist/core/logic-engine/engine.js +0 -8
  216. package/dist/core/logic-engine/engine.js.map +0 -1
  217. package/dist/core/logic-engine/index.d.ts +0 -16
  218. package/dist/core/logic-engine/index.d.ts.map +0 -1
  219. package/dist/core/logic-engine/index.js +0 -16
  220. package/dist/core/logic-engine/index.js.map +0 -1
  221. package/dist/core/logic-engine/protocol.d.ts +0 -7
  222. package/dist/core/logic-engine/protocol.d.ts.map +0 -1
  223. package/dist/core/logic-engine/protocol.js +0 -7
  224. package/dist/core/logic-engine/protocol.js.map +0 -1
  225. package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
  226. package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
  227. package/dist/core/logic-engine/psf-adapter.js +0 -207
  228. package/dist/core/logic-engine/psf-adapter.js.map +0 -1
  229. package/dist/core/logic-engine/rules.d.ts +0 -7
  230. package/dist/core/logic-engine/rules.d.ts.map +0 -1
  231. package/dist/core/logic-engine/rules.js +0 -7
  232. package/dist/core/logic-engine/rules.js.map +0 -1
  233. package/dist/core/schema-engine/compiler.d.ts +0 -198
  234. package/dist/core/schema-engine/compiler.d.ts.map +0 -1
  235. package/dist/core/schema-engine/compiler.js +0 -262
  236. package/dist/core/schema-engine/compiler.js.map +0 -1
  237. package/dist/core/schema-engine/generator.d.ts +0 -115
  238. package/dist/core/schema-engine/generator.d.ts.map +0 -1
  239. package/dist/core/schema-engine/generator.js +0 -506
  240. package/dist/core/schema-engine/generator.js.map +0 -1
  241. package/dist/core/schema-engine/index.d.ts +0 -18
  242. package/dist/core/schema-engine/index.d.ts.map +0 -1
  243. package/dist/core/schema-engine/index.js +0 -18
  244. package/dist/core/schema-engine/index.js.map +0 -1
  245. package/dist/core/schema-engine/psf.d.ts +0 -612
  246. package/dist/core/schema-engine/psf.d.ts.map +0 -1
  247. package/dist/core/schema-engine/psf.js +0 -45
  248. package/dist/core/schema-engine/psf.js.map +0 -1
  249. package/dist/core/schema-engine/types.d.ts +0 -10
  250. package/dist/core/schema-engine/types.d.ts.map +0 -1
  251. package/dist/core/schema-engine/types.js +0 -7
  252. package/dist/core/schema-engine/types.js.map +0 -1
  253. package/dist/core/schema-engine/validator.d.ts +0 -140
  254. package/dist/core/schema-engine/validator.d.ts.map +0 -1
  255. package/dist/core/schema-engine/validator.js +0 -407
  256. package/dist/core/schema-engine/validator.js.map +0 -1
  257. package/dist/src/adapters/cli.d.ts +0 -43
  258. package/dist/src/adapters/cli.d.ts.map +0 -1
  259. package/dist/src/adapters/cli.js +0 -126
  260. package/dist/src/adapters/cli.js.map +0 -1
  261. package/dist/src/cli/commands/auth.d.ts +0 -26
  262. package/dist/src/cli/commands/auth.d.ts.map +0 -1
  263. package/dist/src/cli/commands/auth.js +0 -233
  264. package/dist/src/cli/commands/auth.js.map +0 -1
  265. package/dist/src/cli/commands/build.d.ts +0 -23
  266. package/dist/src/cli/commands/build.d.ts.map +0 -1
  267. package/dist/src/cli/commands/build.js +0 -162
  268. package/dist/src/cli/commands/build.js.map +0 -1
  269. package/dist/src/cli/commands/canvas.d.ts +0 -23
  270. package/dist/src/cli/commands/canvas.d.ts.map +0 -1
  271. package/dist/src/cli/commands/canvas.js +0 -215
  272. package/dist/src/cli/commands/canvas.js.map +0 -1
  273. package/dist/src/cli/commands/cloud.d.ts +0 -27
  274. package/dist/src/cli/commands/cloud.d.ts.map +0 -1
  275. package/dist/src/cli/commands/cloud.js +0 -232
  276. package/dist/src/cli/commands/cloud.js.map +0 -1
  277. package/dist/src/cli/commands/create.d.ts +0 -21
  278. package/dist/src/cli/commands/create.d.ts.map +0 -1
  279. package/dist/src/cli/commands/create.js +0 -621
  280. package/dist/src/cli/commands/create.js.map +0 -1
  281. package/dist/src/cli/commands/dev.d.ts +0 -21
  282. package/dist/src/cli/commands/dev.d.ts.map +0 -1
  283. package/dist/src/cli/commands/dev.js +0 -71
  284. package/dist/src/cli/commands/dev.js.map +0 -1
  285. package/dist/src/cli/commands/generate.d.ts +0 -25
  286. package/dist/src/cli/commands/generate.d.ts.map +0 -1
  287. package/dist/src/cli/commands/generate.js +0 -168
  288. package/dist/src/cli/commands/generate.js.map +0 -1
  289. package/dist/src/cli/commands/orchestrate.d.ts +0 -44
  290. package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
  291. package/dist/src/cli/commands/orchestrate.js +0 -150
  292. package/dist/src/cli/commands/orchestrate.js.map +0 -1
  293. package/dist/src/cli/commands/verify.d.ts +0 -10
  294. package/dist/src/cli/commands/verify.d.ts.map +0 -1
  295. package/dist/src/cli/commands/verify.js +0 -39
  296. package/dist/src/cli/commands/verify.js.map +0 -1
  297. package/dist/src/cli/index.d.ts +0 -8
  298. package/dist/src/cli/index.d.ts.map +0 -1
  299. package/dist/src/cli/index.js +0 -226
  300. package/dist/src/cli/index.js.map +0 -1
  301. package/dist/src/cloud/auth.d.ts +0 -51
  302. package/dist/src/cloud/auth.d.ts.map +0 -1
  303. package/dist/src/cloud/auth.js +0 -194
  304. package/dist/src/cloud/auth.js.map +0 -1
  305. package/dist/src/cloud/billing.d.ts +0 -184
  306. package/dist/src/cloud/billing.d.ts.map +0 -1
  307. package/dist/src/cloud/billing.js +0 -179
  308. package/dist/src/cloud/billing.js.map +0 -1
  309. package/dist/src/cloud/client.d.ts +0 -39
  310. package/dist/src/cloud/client.d.ts.map +0 -1
  311. package/dist/src/cloud/client.js +0 -176
  312. package/dist/src/cloud/client.js.map +0 -1
  313. package/dist/src/cloud/index.d.ts +0 -44
  314. package/dist/src/cloud/index.d.ts.map +0 -1
  315. package/dist/src/cloud/index.js +0 -44
  316. package/dist/src/cloud/index.js.map +0 -1
  317. package/dist/src/cloud/marketplace.d.ts +0 -166
  318. package/dist/src/cloud/marketplace.d.ts.map +0 -1
  319. package/dist/src/cloud/marketplace.js +0 -159
  320. package/dist/src/cloud/marketplace.js.map +0 -1
  321. package/dist/src/cloud/provisioning.d.ts +0 -110
  322. package/dist/src/cloud/provisioning.d.ts.map +0 -1
  323. package/dist/src/cloud/provisioning.js +0 -148
  324. package/dist/src/cloud/provisioning.js.map +0 -1
  325. package/dist/src/cloud/relay/endpoints.d.ts +0 -62
  326. package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
  327. package/dist/src/cloud/relay/endpoints.js +0 -217
  328. package/dist/src/cloud/relay/endpoints.js.map +0 -1
  329. package/dist/src/cloud/relay/health/index.d.ts +0 -5
  330. package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
  331. package/dist/src/cloud/relay/health/index.js +0 -9
  332. package/dist/src/cloud/relay/health/index.js.map +0 -1
  333. package/dist/src/cloud/relay/stats/index.d.ts +0 -5
  334. package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
  335. package/dist/src/cloud/relay/stats/index.js +0 -9
  336. package/dist/src/cloud/relay/stats/index.js.map +0 -1
  337. package/dist/src/cloud/relay/sync/index.d.ts +0 -5
  338. package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
  339. package/dist/src/cloud/relay/sync/index.js +0 -9
  340. package/dist/src/cloud/relay/sync/index.js.map +0 -1
  341. package/dist/src/cloud/relay/usage/index.d.ts +0 -5
  342. package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
  343. package/dist/src/cloud/relay/usage/index.js +0 -9
  344. package/dist/src/cloud/relay/usage/index.js.map +0 -1
  345. package/dist/src/cloud/sponsors.d.ts +0 -81
  346. package/dist/src/cloud/sponsors.d.ts.map +0 -1
  347. package/dist/src/cloud/sponsors.js +0 -130
  348. package/dist/src/cloud/sponsors.js.map +0 -1
  349. package/dist/src/cloud/types.d.ts +0 -169
  350. package/dist/src/cloud/types.d.ts.map +0 -1
  351. package/dist/src/cloud/types.js +0 -7
  352. package/dist/src/cloud/types.js.map +0 -1
  353. package/dist/src/components/index.d.ts.map +0 -1
  354. package/dist/src/components/index.js +0 -17
  355. package/dist/src/components/index.js.map +0 -1
  356. package/dist/src/core/actors.d.ts +0 -95
  357. package/dist/src/core/actors.d.ts.map +0 -1
  358. package/dist/src/core/actors.js +0 -158
  359. package/dist/src/core/actors.js.map +0 -1
  360. package/dist/src/core/component/generator.d.ts.map +0 -1
  361. package/dist/src/core/component/generator.js +0 -349
  362. package/dist/src/core/component/generator.js.map +0 -1
  363. package/dist/src/core/engine.d.ts +0 -92
  364. package/dist/src/core/engine.d.ts.map +0 -1
  365. package/dist/src/core/engine.js +0 -199
  366. package/dist/src/core/engine.js.map +0 -1
  367. package/dist/src/core/introspection.d.ts +0 -141
  368. package/dist/src/core/introspection.d.ts.map +0 -1
  369. package/dist/src/core/introspection.js +0 -208
  370. package/dist/src/core/introspection.js.map +0 -1
  371. package/dist/src/core/logic/generator.d.ts +0 -76
  372. package/dist/src/core/logic/generator.d.ts.map +0 -1
  373. package/dist/src/core/logic/generator.js +0 -370
  374. package/dist/src/core/logic/generator.js.map +0 -1
  375. package/dist/src/core/pluresdb/adapter.d.ts +0 -72
  376. package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
  377. package/dist/src/core/pluresdb/adapter.js +0 -73
  378. package/dist/src/core/pluresdb/adapter.js.map +0 -1
  379. package/dist/src/core/pluresdb/generator.d.ts +0 -58
  380. package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
  381. package/dist/src/core/pluresdb/generator.js +0 -191
  382. package/dist/src/core/pluresdb/generator.js.map +0 -1
  383. package/dist/src/core/pluresdb/index.d.ts +0 -15
  384. package/dist/src/core/pluresdb/index.d.ts.map +0 -1
  385. package/dist/src/core/pluresdb/index.js +0 -11
  386. package/dist/src/core/pluresdb/index.js.map +0 -1
  387. package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
  388. package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
  389. package/dist/src/core/pluresdb/schema-registry.js +0 -130
  390. package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
  391. package/dist/src/core/pluresdb/store.d.ts +0 -199
  392. package/dist/src/core/pluresdb/store.d.ts.map +0 -1
  393. package/dist/src/core/pluresdb/store.js +0 -344
  394. package/dist/src/core/pluresdb/store.js.map +0 -1
  395. package/dist/src/core/protocol.d.ts.map +0 -1
  396. package/dist/src/core/protocol.js +0 -46
  397. package/dist/src/core/protocol.js.map +0 -1
  398. package/dist/src/core/rules.d.ts +0 -120
  399. package/dist/src/core/rules.d.ts.map +0 -1
  400. package/dist/src/core/rules.js +0 -81
  401. package/dist/src/core/rules.js.map +0 -1
  402. package/dist/src/core/schema/loader.d.ts +0 -47
  403. package/dist/src/core/schema/loader.d.ts.map +0 -1
  404. package/dist/src/core/schema/loader.js +0 -189
  405. package/dist/src/core/schema/loader.js.map +0 -1
  406. package/dist/src/core/schema/normalize.d.ts +0 -72
  407. package/dist/src/core/schema/normalize.d.ts.map +0 -1
  408. package/dist/src/core/schema/normalize.js +0 -190
  409. package/dist/src/core/schema/normalize.js.map +0 -1
  410. package/dist/src/core/schema/types.d.ts.map +0 -1
  411. package/dist/src/core/schema/types.js +0 -161
  412. package/dist/src/core/schema/types.js.map +0 -1
  413. package/dist/src/dsl/index.d.ts +0 -152
  414. package/dist/src/dsl/index.d.ts.map +0 -1
  415. package/dist/src/dsl/index.js +0 -132
  416. package/dist/src/dsl/index.js.map +0 -1
  417. package/dist/src/dsl.d.ts +0 -124
  418. package/dist/src/dsl.d.ts.map +0 -1
  419. package/dist/src/dsl.js +0 -130
  420. package/dist/src/dsl.js.map +0 -1
  421. package/dist/src/examples/advanced-todo/index.d.ts +0 -55
  422. package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
  423. package/dist/src/examples/advanced-todo/index.js +0 -222
  424. package/dist/src/examples/advanced-todo/index.js.map +0 -1
  425. package/dist/src/examples/auth-basic/index.d.ts +0 -17
  426. package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
  427. package/dist/src/examples/auth-basic/index.js +0 -122
  428. package/dist/src/examples/auth-basic/index.js.map +0 -1
  429. package/dist/src/examples/cart/index.d.ts +0 -19
  430. package/dist/src/examples/cart/index.d.ts.map +0 -1
  431. package/dist/src/examples/cart/index.js +0 -202
  432. package/dist/src/examples/cart/index.js.map +0 -1
  433. package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
  434. package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
  435. package/dist/src/examples/hero-ecommerce/index.js +0 -506
  436. package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
  437. package/dist/src/examples/svelte-counter/index.d.ts +0 -31
  438. package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
  439. package/dist/src/examples/svelte-counter/index.js +0 -123
  440. package/dist/src/examples/svelte-counter/index.js.map +0 -1
  441. package/dist/src/flows.d.ts +0 -125
  442. package/dist/src/flows.d.ts.map +0 -1
  443. package/dist/src/flows.js +0 -160
  444. package/dist/src/flows.js.map +0 -1
  445. package/dist/src/index.d.ts +0 -77
  446. package/dist/src/index.d.ts.map +0 -1
  447. package/dist/src/index.js +0 -64
  448. package/dist/src/index.js.map +0 -1
  449. package/dist/src/integrations/code-canvas.d.ts +0 -265
  450. package/dist/src/integrations/code-canvas.d.ts.map +0 -1
  451. package/dist/src/integrations/code-canvas.js +0 -451
  452. package/dist/src/integrations/code-canvas.js.map +0 -1
  453. package/dist/src/integrations/pluresdb.d.ts +0 -117
  454. package/dist/src/integrations/pluresdb.d.ts.map +0 -1
  455. package/dist/src/integrations/pluresdb.js +0 -117
  456. package/dist/src/integrations/pluresdb.js.map +0 -1
  457. package/dist/src/integrations/state-docs.d.ts +0 -191
  458. package/dist/src/integrations/state-docs.d.ts.map +0 -1
  459. package/dist/src/integrations/state-docs.js +0 -515
  460. package/dist/src/integrations/state-docs.js.map +0 -1
  461. package/dist/src/integrations/svelte.d.ts.map +0 -1
  462. package/dist/src/integrations/svelte.js +0 -447
  463. package/dist/src/integrations/svelte.js.map +0 -1
  464. package/dist/src/integrations/tauri.d.ts +0 -360
  465. package/dist/src/integrations/tauri.d.ts.map +0 -1
  466. package/dist/src/integrations/tauri.js +0 -278
  467. package/dist/src/integrations/tauri.js.map +0 -1
  468. package/dist/src/integrations/unum.d.ts +0 -159
  469. package/dist/src/integrations/unum.d.ts.map +0 -1
  470. package/dist/src/integrations/unum.js +0 -240
  471. package/dist/src/integrations/unum.js.map +0 -1
  472. package/dist/src/registry.d.ts +0 -94
  473. package/dist/src/registry.d.ts.map +0 -1
  474. package/dist/src/registry.js +0 -181
  475. package/dist/src/registry.js.map +0 -1
  476. package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
  477. package/dist/src/runtime/terminal-adapter.js +0 -239
  478. package/dist/src/runtime/terminal-adapter.js.map +0 -1
  479. package/dist/src/step.d.ts +0 -34
  480. package/dist/src/step.d.ts.map +0 -1
  481. package/dist/src/step.js +0 -111
  482. package/dist/src/step.js.map +0 -1
  483. package/dist/src/types.d.ts +0 -63
  484. package/dist/src/types.d.ts.map +0 -1
  485. package/dist/src/types.js +0 -6
  486. package/dist/src/types.js.map +0 -1
  487. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
  488. package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
  489. package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
  490. package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
  491. package/dist/tools/cli/commands/index.d.ts +0 -7
  492. package/dist/tools/cli/commands/index.d.ts.map +0 -1
  493. package/dist/tools/cli/commands/index.js +0 -7
  494. package/dist/tools/cli/commands/index.js.map +0 -1
  495. package/dist/tools/cli/index.d.ts +0 -8
  496. package/dist/tools/cli/index.d.ts.map +0 -1
  497. package/dist/tools/cli/index.js +0 -9
  498. package/dist/tools/cli/index.js.map +0 -1
  499. package/dist/tools/watcher/index.d.ts +0 -105
  500. package/dist/tools/watcher/index.d.ts.map +0 -1
  501. package/dist/tools/watcher/index.js +0 -213
  502. package/dist/tools/watcher/index.js.map +0 -1
  503. package/dist/ui/canvas/canvas-projection.d.ts +0 -78
  504. package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
  505. package/dist/ui/canvas/canvas-projection.js +0 -416
  506. package/dist/ui/canvas/canvas-projection.js.map +0 -1
  507. package/dist/ui/canvas/canvas-state.d.ts +0 -200
  508. package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
  509. package/dist/ui/canvas/canvas-state.js +0 -464
  510. package/dist/ui/canvas/canvas-state.js.map +0 -1
  511. package/dist/ui/canvas/components/index.d.ts +0 -95
  512. package/dist/ui/canvas/components/index.d.ts.map +0 -1
  513. package/dist/ui/canvas/components/index.js +0 -19
  514. package/dist/ui/canvas/components/index.js.map +0 -1
  515. package/dist/ui/canvas/index.d.ts +0 -32
  516. package/dist/ui/canvas/index.d.ts.map +0 -1
  517. package/dist/ui/canvas/index.js +0 -32
  518. package/dist/ui/canvas/index.js.map +0 -1
  519. package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
  520. package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
  521. package/dist/ui/canvas-inspector/src/server.js +0 -248
  522. package/dist/ui/canvas-inspector/src/server.js.map +0 -1
  523. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
  524. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
  525. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
  526. package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
  527. package/dist/ui/svelte-generator/index.d.ts +0 -9
  528. package/dist/ui/svelte-generator/index.d.ts.map +0 -1
  529. package/dist/ui/svelte-generator/index.js +0 -11
  530. package/dist/ui/svelte-generator/index.js.map +0 -1
  531. package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
  532. package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
  533. package/dist/ui/svelte-generator/psf-generator.js +0 -506
  534. package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
@@ -0,0 +1,584 @@
1
+ import "./chunk-QGM4M3NI.js";
2
+
3
+ // src/cli/commands/create.ts
4
+ import { mkdir, writeFile } from "fs/promises";
5
+ import { join, resolve } from "path";
6
+ import { existsSync } from "fs";
7
+ function generatePackageJson(name) {
8
+ const pkg = {
9
+ name,
10
+ version: "0.1.0",
11
+ private: true,
12
+ type: "module",
13
+ scripts: {
14
+ dev: "vite",
15
+ build: "tsc && vite build",
16
+ preview: "vite preview",
17
+ generate: "praxis generate",
18
+ test: "vitest"
19
+ },
20
+ dependencies: {
21
+ "@plures/praxis": "^0.2.1"
22
+ },
23
+ devDependencies: {
24
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
25
+ "@tsconfig/svelte": "^5.0.4",
26
+ svelte: "^5.0.0",
27
+ "svelte-check": "^4.0.0",
28
+ typescript: "^5.6.0",
29
+ vite: "^6.0.0",
30
+ vitest: "^4.0.0"
31
+ }
32
+ };
33
+ return JSON.stringify(pkg, null, 2);
34
+ }
35
+ function generateTsConfig() {
36
+ const config = {
37
+ extends: "@tsconfig/svelte/tsconfig.json",
38
+ compilerOptions: {
39
+ target: "ESNext",
40
+ module: "ESNext",
41
+ moduleResolution: "bundler",
42
+ strict: true,
43
+ esModuleInterop: true,
44
+ skipLibCheck: true,
45
+ resolveJsonModule: true,
46
+ isolatedModules: true,
47
+ noEmit: true
48
+ },
49
+ include: ["src/**/*"],
50
+ exclude: ["node_modules"]
51
+ };
52
+ return JSON.stringify(config, null, 2);
53
+ }
54
+ function generateViteConfig() {
55
+ return `import { defineConfig } from 'vite';
56
+ import { svelte } from '@sveltejs/vite-plugin-svelte';
57
+
58
+ export default defineConfig({
59
+ plugins: [svelte()],
60
+ resolve: {
61
+ alias: {
62
+ '@': '/src'
63
+ }
64
+ }
65
+ });
66
+ `;
67
+ }
68
+ function generateMainTs(name) {
69
+ return `/**
70
+ * ${name} - Built with Praxis
71
+ */
72
+ import App from './App.svelte';
73
+ import { mount } from 'svelte';
74
+
75
+ const app = mount(App, {
76
+ target: document.getElementById('app')!
77
+ });
78
+
79
+ export default app;
80
+ `;
81
+ }
82
+ function generateAppSvelte(name) {
83
+ return `<script lang="ts">
84
+ import { createPraxisEngine, PraxisRegistry, defineFact, defineEvent, defineRule } from '@plures/praxis';
85
+
86
+ // Define your context type
87
+ interface AppContext {
88
+ initialized: boolean;
89
+ message: string;
90
+ }
91
+
92
+ // Create the registry and engine
93
+ const registry = new PraxisRegistry<AppContext>();
94
+
95
+ const engine = createPraxisEngine({
96
+ initialContext: {
97
+ initialized: true,
98
+ message: 'Welcome to ${name}!'
99
+ },
100
+ registry
101
+ });
102
+
103
+ // Reactive context
104
+ let context = $state(engine.getContext());
105
+ </script>
106
+
107
+ <main>
108
+ <h1>{context.message}</h1>
109
+ <p>Your Praxis application is running!</p>
110
+
111
+ <div class="card">
112
+ <h2>Next Steps</h2>
113
+ <ul>
114
+ <li>Define your schema in <code>src/schemas/app.schema.js</code></li>
115
+ <li>Run <code>praxis generate</code> to generate code</li>
116
+ <li>Build your application logic with facts, events, and rules</li>
117
+ </ul>
118
+ </div>
119
+ </main>
120
+
121
+ <style>
122
+ main {
123
+ max-width: 800px;
124
+ margin: 0 auto;
125
+ padding: 2rem;
126
+ font-family: system-ui, -apple-system, sans-serif;
127
+ }
128
+
129
+ h1 {
130
+ color: #333;
131
+ text-align: center;
132
+ }
133
+
134
+ .card {
135
+ background: #f5f5f5;
136
+ border-radius: 8px;
137
+ padding: 1.5rem;
138
+ margin-top: 2rem;
139
+ }
140
+
141
+ .card h2 {
142
+ margin-top: 0;
143
+ }
144
+
145
+ code {
146
+ background: #e0e0e0;
147
+ padding: 0.2rem 0.4rem;
148
+ border-radius: 4px;
149
+ font-size: 0.9em;
150
+ }
151
+
152
+ li {
153
+ margin: 0.5rem 0;
154
+ }
155
+ </style>
156
+ `;
157
+ }
158
+ function generateIndexHtml(name) {
159
+ return `<!DOCTYPE html>
160
+ <html lang="en">
161
+ <head>
162
+ <meta charset="UTF-8" />
163
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
164
+ <title>${name}</title>
165
+ <style>
166
+ * {
167
+ margin: 0;
168
+ padding: 0;
169
+ box-sizing: border-box;
170
+ }
171
+ body {
172
+ min-height: 100vh;
173
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
174
+ }
175
+ </style>
176
+ </head>
177
+ <body>
178
+ <div id="app"></div>
179
+ <script type="module" src="/src/main.ts"></script>
180
+ </body>
181
+ </html>
182
+ `;
183
+ }
184
+ function generateAppSchema(name) {
185
+ return `/**
186
+ * ${name} Schema
187
+ *
188
+ * Define your application schema here.
189
+ * Run 'praxis generate' to generate code from this schema.
190
+ */
191
+
192
+ export const schema = {
193
+ version: '1.0.0',
194
+ name: '${name}',
195
+ description: 'A Praxis application',
196
+
197
+ models: [
198
+ {
199
+ name: 'Item',
200
+ description: 'Example item model',
201
+ fields: [
202
+ { name: 'id', type: 'string' },
203
+ { name: 'name', type: 'string' },
204
+ { name: 'createdAt', type: 'date' }
205
+ ]
206
+ }
207
+ ],
208
+
209
+ components: [
210
+ {
211
+ name: 'ItemForm',
212
+ type: 'form',
213
+ description: 'Form for creating items',
214
+ model: 'Item'
215
+ },
216
+ {
217
+ name: 'ItemList',
218
+ type: 'list',
219
+ description: 'List of items',
220
+ model: 'Item'
221
+ }
222
+ ],
223
+
224
+ logic: [
225
+ {
226
+ id: 'item-logic',
227
+ description: 'Item management logic',
228
+
229
+ events: [
230
+ {
231
+ tag: 'CREATE_ITEM',
232
+ payload: { name: 'string' },
233
+ description: 'Create a new item'
234
+ },
235
+ {
236
+ tag: 'DELETE_ITEM',
237
+ payload: { itemId: 'string' },
238
+ description: 'Delete an item'
239
+ }
240
+ ],
241
+
242
+ facts: [
243
+ {
244
+ tag: 'ItemCreated',
245
+ payload: { itemId: 'string', name: 'string' },
246
+ description: 'An item was created'
247
+ },
248
+ {
249
+ tag: 'ItemDeleted',
250
+ payload: { itemId: 'string' },
251
+ description: 'An item was deleted'
252
+ }
253
+ ],
254
+
255
+ rules: [
256
+ {
257
+ id: 'item.create',
258
+ description: 'Create a new item',
259
+ priority: 10
260
+ }
261
+ ],
262
+
263
+ constraints: [
264
+ {
265
+ id: 'item.name-required',
266
+ description: 'Item name must not be empty',
267
+ message: 'Item name is required'
268
+ }
269
+ ]
270
+ }
271
+ ]
272
+ };
273
+
274
+ export default schema;
275
+ `;
276
+ }
277
+ function generateSvelteConfig() {
278
+ return `import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
279
+
280
+ export default {
281
+ preprocess: vitePreprocess()
282
+ };
283
+ `;
284
+ }
285
+ function generateReadme(name, template) {
286
+ return `# ${name}
287
+
288
+ A Praxis application created with the ${template} template.
289
+
290
+ ## Getting Started
291
+
292
+ ### Install dependencies
293
+
294
+ \`\`\`bash
295
+ npm install
296
+ \`\`\`
297
+
298
+ ### Start development server
299
+
300
+ \`\`\`bash
301
+ npm run dev
302
+ \`\`\`
303
+
304
+ ### Generate code from schema
305
+
306
+ \`\`\`bash
307
+ npm run generate
308
+ \`\`\`
309
+
310
+ ### Build for production
311
+
312
+ \`\`\`bash
313
+ npm run build
314
+ \`\`\`
315
+
316
+ ## Project Structure
317
+
318
+ \`\`\`
319
+ ${name}/
320
+ \u251C\u2500\u2500 src/
321
+ \u2502 \u251C\u2500\u2500 schemas/
322
+ \u2502 \u2502 \u2514\u2500\u2500 app.schema.js # Application schema
323
+ \u2502 \u251C\u2500\u2500 components/ # Generated & custom components
324
+ \u2502 \u251C\u2500\u2500 logic/ # Logic engine setup
325
+ \u2502 \u251C\u2500\u2500 App.svelte # Root component
326
+ \u2502 \u2514\u2500\u2500 main.ts # Application entry
327
+ \u251C\u2500\u2500 public/ # Static assets
328
+ \u251C\u2500\u2500 package.json
329
+ \u251C\u2500\u2500 tsconfig.json
330
+ \u251C\u2500\u2500 vite.config.ts
331
+ \u2514\u2500\u2500 README.md
332
+ \`\`\`
333
+
334
+ ## Documentation
335
+
336
+ - [Praxis Framework Guide](https://github.com/plures/praxis/blob/main/FRAMEWORK.md)
337
+ - [Getting Started](https://github.com/plures/praxis/blob/main/GETTING_STARTED.md)
338
+ - [Schema Reference](https://github.com/plures/praxis/blob/main/docs/guides/schema.md)
339
+
340
+ ## License
341
+
342
+ MIT
343
+ `;
344
+ }
345
+ function generateGitignore() {
346
+ return `# Dependencies
347
+ node_modules/
348
+
349
+ # Build output
350
+ dist/
351
+ build/
352
+ .svelte-kit/
353
+
354
+ # Generated code
355
+ generated/
356
+
357
+ # Environment
358
+ .env
359
+ .env.local
360
+ .env.*.local
361
+
362
+ # IDE
363
+ .vscode/
364
+ .idea/
365
+ *.swp
366
+ *.swo
367
+
368
+ # OS
369
+ .DS_Store
370
+ Thumbs.db
371
+
372
+ # Logs
373
+ *.log
374
+ npm-debug.log*
375
+
376
+ # Test coverage
377
+ coverage/
378
+ `;
379
+ }
380
+ async function createApp(name, options) {
381
+ const template = options.template || "basic";
382
+ const appDir = resolve(process.cwd(), name);
383
+ if (existsSync(appDir)) {
384
+ console.error(`
385
+ \u2717 Directory '${name}' already exists`);
386
+ console.error(" Please choose a different name or remove the existing directory.\n");
387
+ process.exit(1);
388
+ }
389
+ console.log(`
390
+ \u{1F4E6} Creating Praxis application: ${name}`);
391
+ console.log(` Template: ${template}`);
392
+ console.log(` Location: ${appDir}
393
+ `);
394
+ const dirs = [
395
+ appDir,
396
+ join(appDir, "src"),
397
+ join(appDir, "src", "schemas"),
398
+ join(appDir, "src", "components"),
399
+ join(appDir, "src", "logic"),
400
+ join(appDir, "src", "store"),
401
+ join(appDir, "public")
402
+ ];
403
+ for (const dir of dirs) {
404
+ await mkdir(dir, { recursive: true });
405
+ }
406
+ console.log("\u2713 Created directory structure");
407
+ await writeFile(join(appDir, "package.json"), generatePackageJson(name));
408
+ await writeFile(join(appDir, "tsconfig.json"), generateTsConfig());
409
+ await writeFile(join(appDir, "vite.config.ts"), generateViteConfig());
410
+ await writeFile(join(appDir, "svelte.config.js"), generateSvelteConfig());
411
+ await writeFile(join(appDir, ".gitignore"), generateGitignore());
412
+ await writeFile(join(appDir, "README.md"), generateReadme(name, template));
413
+ console.log("\u2713 Created configuration files");
414
+ await writeFile(join(appDir, "index.html"), generateIndexHtml(name));
415
+ await writeFile(join(appDir, "src", "main.ts"), generateMainTs(name));
416
+ await writeFile(join(appDir, "src", "App.svelte"), generateAppSvelte(name));
417
+ await writeFile(join(appDir, "src", "schemas", "app.schema.js"), generateAppSchema(name));
418
+ console.log("\u2713 Created source files");
419
+ await writeFile(
420
+ join(appDir, "src", "components", ".gitkeep"),
421
+ "# Generated components will be placed here\n"
422
+ );
423
+ await writeFile(join(appDir, "src", "logic", ".gitkeep"), "# Logic files will be placed here\n");
424
+ await writeFile(join(appDir, "src", "store", ".gitkeep"), "# Store files will be placed here\n");
425
+ await writeFile(join(appDir, "public", ".gitkeep"), "# Static assets go here\n");
426
+ console.log("\u2713 Created placeholder files");
427
+ console.log(`
428
+ \u2705 Application created successfully!
429
+
430
+ Next steps:
431
+
432
+ cd ${name}
433
+ npm install
434
+ npm run dev
435
+
436
+ Then open http://localhost:5173 in your browser.
437
+
438
+ To generate code from your schema:
439
+
440
+ npm run generate
441
+
442
+ For more information, see the README.md in your project.
443
+ `);
444
+ }
445
+ function generateComponentSchema(name) {
446
+ return `/**
447
+ * ${name} Component Schema
448
+ */
449
+
450
+ export const componentSchema = {
451
+ name: '${name}',
452
+ type: 'display',
453
+ description: 'A ${name} component',
454
+
455
+ props: [
456
+ { name: 'title', type: 'string', required: true },
457
+ { name: 'content', type: 'string', required: false }
458
+ ],
459
+
460
+ events: [
461
+ { name: 'click', description: 'Emitted when clicked' }
462
+ ]
463
+ };
464
+
465
+ export default componentSchema;
466
+ `;
467
+ }
468
+ function generateComponentSvelte(name) {
469
+ return `<script lang="ts">
470
+ /**
471
+ * ${name} Component
472
+ *
473
+ * Generated by Praxis.
474
+ */
475
+
476
+ interface Props {
477
+ title: string;
478
+ content?: string;
479
+ }
480
+
481
+ let { title, content = '' }: Props = $props();
482
+ </script>
483
+
484
+ <div class="${name.toLowerCase()}" role="button" tabindex="0">
485
+ <h3>{title}</h3>
486
+ {#if content}
487
+ <p>{content}</p>
488
+ {/if}
489
+ <slot />
490
+ </div>
491
+
492
+ <style>
493
+ .${name.toLowerCase()} {
494
+ padding: 1rem;
495
+ border: 1px solid #ddd;
496
+ border-radius: 8px;
497
+ margin: 0.5rem 0;
498
+ cursor: pointer;
499
+ transition: box-shadow 0.2s;
500
+ }
501
+
502
+ .${name.toLowerCase()}:hover {
503
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
504
+ }
505
+
506
+ h3 {
507
+ margin: 0 0 0.5rem 0;
508
+ color: #333;
509
+ }
510
+
511
+ p {
512
+ margin: 0;
513
+ color: #666;
514
+ }
515
+ </style>
516
+ `;
517
+ }
518
+ async function createComponent(name, options) {
519
+ const outputDir = options.directory || join(process.cwd(), "src", "components");
520
+ const componentDir = join(outputDir, name);
521
+ if (existsSync(componentDir)) {
522
+ console.error(`
523
+ \u2717 Component '${name}' already exists at ${componentDir}`);
524
+ console.error(" Please choose a different name or remove the existing component.\n");
525
+ process.exit(1);
526
+ }
527
+ console.log(`
528
+ \u{1F9E9} Creating component: ${name}`);
529
+ console.log(` Location: ${componentDir}
530
+ `);
531
+ await mkdir(componentDir, { recursive: true });
532
+ await writeFile(join(componentDir, `${name}.svelte`), generateComponentSvelte(name));
533
+ await writeFile(join(componentDir, `${name}.schema.js`), generateComponentSchema(name));
534
+ await writeFile(
535
+ join(componentDir, "index.ts"),
536
+ `export { default as ${name} } from './${name}.svelte';
537
+ `
538
+ );
539
+ console.log(`\u2713 Created ${name}.svelte`);
540
+ console.log(`\u2713 Created ${name}.schema.js`);
541
+ console.log(`\u2713 Created index.ts`);
542
+ console.log(`
543
+ \u2705 Component created successfully!
544
+
545
+ Import it in your application:
546
+
547
+ import { ${name} } from './components/${name}';
548
+
549
+ Or use the schema for generation:
550
+
551
+ praxis generate --schema src/components/${name}/${name}.schema.js
552
+ `);
553
+ }
554
+ async function create(type, name, options) {
555
+ if (!name) {
556
+ console.error("\n\u2717 Please provide a name for the " + type);
557
+ console.error(` Usage: praxis create ${type} <name>
558
+ `);
559
+ process.exit(1);
560
+ }
561
+ if (!/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(name)) {
562
+ console.error("\n\u2717 Invalid name format");
563
+ console.error(
564
+ " Name must start with a letter and contain only letters, numbers, hyphens, and underscores.\n"
565
+ );
566
+ process.exit(1);
567
+ }
568
+ switch (type) {
569
+ case "app":
570
+ await createApp(name, options);
571
+ break;
572
+ case "component":
573
+ await createComponent(name, options);
574
+ break;
575
+ default:
576
+ console.error(`
577
+ \u2717 Unknown type: ${type}`);
578
+ console.error(" Valid types: app, component\n");
579
+ process.exit(1);
580
+ }
581
+ }
582
+ export {
583
+ create
584
+ };
@@ -0,0 +1,65 @@
1
+ import "./chunk-QGM4M3NI.js";
2
+
3
+ // src/cli/commands/dev.ts
4
+ import { spawn } from "child_process";
5
+ import * as fs from "fs";
6
+ import * as path from "path";
7
+ async function dev(options) {
8
+ const port = options.port || "5173";
9
+ const host = options.host || "localhost";
10
+ console.log("\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
11
+ console.log("\u2551 Praxis Development Server \u2551");
12
+ console.log("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n");
13
+ const packageJsonPath = path.join(process.cwd(), "package.json");
14
+ const viteConfigPath = path.join(process.cwd(), "vite.config.ts");
15
+ void viteConfigPath;
16
+ if (!fs.existsSync(packageJsonPath)) {
17
+ console.error("Error: No package.json found in current directory.");
18
+ console.log("Make sure you are in a Praxis project directory.\n");
19
+ console.log("To create a new project, run:");
20
+ console.log(" praxis create app my-app\n");
21
+ process.exit(1);
22
+ }
23
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
24
+ if (!packageJson.scripts?.dev) {
25
+ console.error('Error: No "dev" script found in package.json.');
26
+ console.log("\nTo use the Praxis dev server, add a dev script to your package.json:");
27
+ console.log(' "scripts": {');
28
+ console.log(' "dev": "vite"');
29
+ console.log(" }\n");
30
+ process.exit(1);
31
+ }
32
+ console.log(`Starting development server on http://${host}:${port}
33
+ `);
34
+ const args = ["run", "dev", "--", "--port", port, "--host", host];
35
+ if (options.open) {
36
+ args.push("--open");
37
+ }
38
+ const child = spawn("npm", args, {
39
+ stdio: "inherit",
40
+ shell: true,
41
+ cwd: process.cwd(),
42
+ env: {
43
+ ...process.env,
44
+ FORCE_COLOR: "1"
45
+ }
46
+ });
47
+ child.on("error", (error) => {
48
+ console.error("Failed to start development server:", error.message);
49
+ process.exit(1);
50
+ });
51
+ child.on("exit", (code) => {
52
+ if (code !== 0 && code !== null) {
53
+ console.error(`Development server exited with code ${code}`);
54
+ process.exit(code);
55
+ }
56
+ });
57
+ process.on("SIGINT", () => {
58
+ console.log("\n\nStopping development server...");
59
+ child.kill("SIGTERM");
60
+ process.exit(0);
61
+ });
62
+ }
63
+ export {
64
+ dev
65
+ };