@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
@@ -1,3 +1,5 @@
1
+ import { L as LogicEngine, P as PraxisState, a as PraxisEvent } from '../engine-BjdqxeXG.js';
2
+
1
3
  /**
2
4
  * Svelte v5 Integration
3
5
  *
@@ -11,12 +13,11 @@
11
13
  * - History state pattern implementation
12
14
  * - Automatic cleanup and subscription management
13
15
  */
14
- import type { LogicEngine } from "../core/engine.js";
15
- import type { PraxisEvent, PraxisState } from "../core/protocol.js";
16
+
16
17
  /**
17
18
  * Writable store interface (Svelte-compatible)
18
19
  */
19
- export interface Writable<T> {
20
+ interface Writable<T> {
20
21
  subscribe(run: (value: T) => void): () => void;
21
22
  set(value: T): void;
22
23
  update(updater: (value: T) => T): void;
@@ -24,7 +25,7 @@ export interface Writable<T> {
24
25
  /**
25
26
  * Readable store interface (Svelte-compatible)
26
27
  */
27
- export interface Readable<T> {
28
+ interface Readable<T> {
28
29
  subscribe(run: (value: T) => void): () => void;
29
30
  }
30
31
  /**
@@ -42,7 +43,7 @@ export interface Readable<T> {
42
43
  * // Dispatch events:
43
44
  * store.dispatch([Login.create({ username: "alice", password: "secret" })]);
44
45
  */
45
- export declare function createPraxisStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<Readonly<PraxisState & {
46
+ declare function createPraxisStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<Readonly<PraxisState & {
46
47
  context: TContext;
47
48
  }>> & {
48
49
  dispatch: (events: PraxisEvent[]) => void;
@@ -57,7 +58,7 @@ export declare function createPraxisStore<TContext = unknown>(engine: LogicEngin
57
58
  * // In Svelte component:
58
59
  * $: context = $contextStore;
59
60
  */
60
- export declare function createContextStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<TContext> & {
61
+ declare function createContextStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<TContext> & {
61
62
  dispatch: (events: PraxisEvent[]) => void;
62
63
  };
63
64
  /**
@@ -70,13 +71,13 @@ export declare function createContextStore<TContext = unknown>(engine: LogicEngi
70
71
  * // In Svelte component:
71
72
  * $: count = $countStore;
72
73
  */
73
- export declare function createDerivedStore<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): Readable<TDerived> & {
74
+ declare function createDerivedStore<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): Readable<TDerived> & {
74
75
  dispatch: (events: PraxisEvent[]) => void;
75
76
  };
76
77
  /**
77
78
  * Snapshot of engine state for time-travel debugging
78
79
  */
79
- export interface StateSnapshot<TContext = unknown> {
80
+ interface StateSnapshot<TContext = unknown> {
80
81
  timestamp: number;
81
82
  state: Readonly<PraxisState & {
82
83
  context: TContext;
@@ -86,7 +87,7 @@ export interface StateSnapshot<TContext = unknown> {
86
87
  /**
87
88
  * Options for usePraxisEngine composable
88
89
  */
89
- export interface UsePraxisEngineOptions {
90
+ interface UsePraxisEngineOptions {
90
91
  /** Enable snapshot history for time-travel debugging */
91
92
  enableHistory?: boolean;
92
93
  /** Maximum number of snapshots to keep */
@@ -95,7 +96,7 @@ export interface UsePraxisEngineOptions {
95
96
  /**
96
97
  * Result of usePraxisEngine composable with Svelte 5 runes
97
98
  */
98
- export interface PraxisEngineBinding<TContext = unknown> {
99
+ interface PraxisEngineBinding<TContext = unknown> {
99
100
  /** Current state (reactive via $state) */
100
101
  state: Readonly<PraxisState & {
101
102
  context: TContext;
@@ -155,7 +156,7 @@ export interface PraxisEngineBinding<TContext = unknown> {
155
156
  * @param options Configuration options
156
157
  * @returns Reactive binding with state, context, and control methods
157
158
  */
158
- export declare function usePraxisEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: UsePraxisEngineOptions): PraxisEngineBinding<TContext>;
159
+ declare function usePraxisEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: UsePraxisEngineOptions): PraxisEngineBinding<TContext>;
159
160
  /**
160
161
  * Create a reactive derived value from engine context with Svelte 5 runes.
161
162
  *
@@ -176,7 +177,7 @@ export declare function usePraxisEngine<TContext = unknown>(engine: LogicEngine<
176
177
  * @param selector Function to extract value from context
177
178
  * @returns Reactive derived value
178
179
  */
179
- export declare function usePraxisContext<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): TDerived;
180
+ declare function usePraxisContext<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): TDerived;
180
181
  /**
181
182
  * Subscribe to engine state changes with automatic cleanup.
182
183
  *
@@ -197,13 +198,13 @@ export declare function usePraxisContext<TContext = unknown, TDerived = unknown>
197
198
  * @param engine The Praxis logic engine
198
199
  * @param callback Function to call when state changes
199
200
  */
200
- export declare function usePraxisSubscription<TContext = unknown>(engine: LogicEngine<TContext>, callback: (state: Readonly<PraxisState & {
201
+ declare function usePraxisSubscription<TContext = unknown>(engine: LogicEngine<TContext>, callback: (state: Readonly<PraxisState & {
201
202
  context: TContext;
202
203
  }>) => void): () => void;
203
204
  /**
204
205
  * History state entry for tracking state transitions
205
206
  */
206
- export interface HistoryEntry<TContext = unknown> {
207
+ interface HistoryEntry<TContext = unknown> {
207
208
  /** Unique identifier for this history entry */
208
209
  id: string;
209
210
  /** Timestamp when this state was entered */
@@ -220,7 +221,7 @@ export interface HistoryEntry<TContext = unknown> {
220
221
  /**
221
222
  * History state manager for Praxis engines
222
223
  */
223
- export declare class HistoryStateManager<TContext = unknown> {
224
+ declare class HistoryStateManager<TContext = unknown> {
224
225
  private history;
225
226
  private currentIndex;
226
227
  private readonly maxSize;
@@ -289,7 +290,7 @@ export declare class HistoryStateManager<TContext = unknown> {
289
290
  * @param options History configuration
290
291
  * @returns Enhanced engine with history methods
291
292
  */
292
- export declare function createHistoryEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: {
293
+ declare function createHistoryEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: {
293
294
  maxHistorySize?: number;
294
295
  initialLabel?: string;
295
296
  }): {
@@ -303,4 +304,5 @@ export declare function createHistoryEngine<TContext = unknown>(engine: LogicEng
303
304
  goToHistory: (index: number) => boolean;
304
305
  clearHistory: () => void;
305
306
  };
306
- //# sourceMappingURL=svelte.d.ts.map
307
+
308
+ export { type HistoryEntry, HistoryStateManager, type PraxisEngineBinding, type Readable, type StateSnapshot, type UsePraxisEngineOptions, type Writable, createContextStore, createDerivedStore, createHistoryEngine, createPraxisStore, usePraxisContext, usePraxisEngine, usePraxisSubscription };
@@ -0,0 +1,298 @@
1
+ // src/integrations/svelte.ts
2
+ function createPraxisStore(engine) {
3
+ let currentState = engine.getState();
4
+ const subscribers = /* @__PURE__ */ new Set();
5
+ const notify = () => {
6
+ currentState = engine.getState();
7
+ subscribers.forEach((sub) => sub(currentState));
8
+ };
9
+ return {
10
+ subscribe(run) {
11
+ subscribers.add(run);
12
+ run(currentState);
13
+ return () => {
14
+ subscribers.delete(run);
15
+ };
16
+ },
17
+ dispatch(events) {
18
+ engine.step(events);
19
+ notify();
20
+ }
21
+ };
22
+ }
23
+ function createContextStore(engine) {
24
+ let currentContext = engine.getContext();
25
+ const subscribers = /* @__PURE__ */ new Set();
26
+ const notify = () => {
27
+ currentContext = engine.getContext();
28
+ subscribers.forEach((sub) => sub(currentContext));
29
+ };
30
+ return {
31
+ subscribe(run) {
32
+ subscribers.add(run);
33
+ run(currentContext);
34
+ return () => {
35
+ subscribers.delete(run);
36
+ };
37
+ },
38
+ dispatch(events) {
39
+ engine.step(events);
40
+ notify();
41
+ }
42
+ };
43
+ }
44
+ function createDerivedStore(engine, selector) {
45
+ let currentValue = selector(engine.getContext());
46
+ const subscribers = /* @__PURE__ */ new Set();
47
+ const notify = () => {
48
+ const newValue = selector(engine.getContext());
49
+ if (newValue !== currentValue) {
50
+ currentValue = newValue;
51
+ subscribers.forEach((sub) => sub(currentValue));
52
+ }
53
+ };
54
+ return {
55
+ subscribe(run) {
56
+ subscribers.add(run);
57
+ run(currentValue);
58
+ return () => {
59
+ subscribers.delete(run);
60
+ };
61
+ },
62
+ dispatch(events) {
63
+ engine.step(events);
64
+ notify();
65
+ }
66
+ };
67
+ }
68
+ function usePraxisEngine(engine, options = {}) {
69
+ const { enableHistory = false, maxHistorySize = 50 } = options;
70
+ let currentState = engine.getState();
71
+ let snapshots = [];
72
+ let historyIndex = -1;
73
+ if (enableHistory) {
74
+ snapshots.push({
75
+ timestamp: Date.now(),
76
+ state: currentState,
77
+ events: []
78
+ });
79
+ historyIndex = 0;
80
+ }
81
+ const dispatch = (events) => {
82
+ if (enableHistory && historyIndex < snapshots.length - 1) {
83
+ snapshots = snapshots.slice(0, historyIndex + 1);
84
+ }
85
+ engine.step(events);
86
+ currentState = engine.getState();
87
+ if (enableHistory) {
88
+ snapshots.push({
89
+ timestamp: Date.now(),
90
+ state: currentState,
91
+ events
92
+ });
93
+ if (snapshots.length > maxHistorySize) {
94
+ snapshots.shift();
95
+ } else {
96
+ historyIndex++;
97
+ }
98
+ }
99
+ };
100
+ const goToSnapshot = (index) => {
101
+ if (!enableHistory) {
102
+ console.warn("History is not enabled for this engine");
103
+ return;
104
+ }
105
+ if (index < 0 || index >= snapshots.length) {
106
+ console.warn(`Invalid snapshot index: ${index}`);
107
+ return;
108
+ }
109
+ historyIndex = index;
110
+ currentState = snapshots[index].state;
111
+ };
112
+ const undo = () => {
113
+ if (historyIndex > 0) {
114
+ goToSnapshot(historyIndex - 1);
115
+ }
116
+ };
117
+ const redo = () => {
118
+ if (historyIndex < snapshots.length - 1) {
119
+ goToSnapshot(historyIndex + 1);
120
+ }
121
+ };
122
+ return {
123
+ get state() {
124
+ return currentState;
125
+ },
126
+ get context() {
127
+ return currentState.context;
128
+ },
129
+ get facts() {
130
+ return currentState.facts;
131
+ },
132
+ dispatch,
133
+ get snapshots() {
134
+ return snapshots;
135
+ },
136
+ goToSnapshot,
137
+ undo,
138
+ redo,
139
+ get canUndo() {
140
+ return enableHistory && historyIndex > 0;
141
+ },
142
+ get canRedo() {
143
+ return enableHistory && historyIndex < snapshots.length - 1;
144
+ },
145
+ get historyIndex() {
146
+ return historyIndex;
147
+ }
148
+ };
149
+ }
150
+ function usePraxisContext(engine, selector) {
151
+ let currentValue = selector(engine.getContext());
152
+ return currentValue;
153
+ }
154
+ function usePraxisSubscription(engine, callback) {
155
+ const store = createPraxisStore(engine);
156
+ const unsubscribe = store.subscribe(callback);
157
+ return unsubscribe;
158
+ }
159
+ var HistoryStateManager = class {
160
+ history = [];
161
+ currentIndex = -1;
162
+ maxSize;
163
+ idCounter = 0;
164
+ constructor(maxSize = 50) {
165
+ this.maxSize = maxSize;
166
+ }
167
+ /**
168
+ * Record a new history entry
169
+ */
170
+ record(state, events, label) {
171
+ if (this.currentIndex < this.history.length - 1) {
172
+ this.history = this.history.slice(0, this.currentIndex + 1);
173
+ }
174
+ this.history.push({
175
+ id: `history-${++this.idCounter}`,
176
+ timestamp: Date.now(),
177
+ state,
178
+ events,
179
+ label
180
+ });
181
+ if (this.history.length > this.maxSize) {
182
+ this.history.shift();
183
+ } else {
184
+ this.currentIndex++;
185
+ }
186
+ }
187
+ /**
188
+ * Navigate to a specific history entry
189
+ */
190
+ goTo(index) {
191
+ if (index < 0 || index >= this.history.length) {
192
+ return null;
193
+ }
194
+ this.currentIndex = index;
195
+ return this.history[index];
196
+ }
197
+ /**
198
+ * Go back to previous state
199
+ */
200
+ back() {
201
+ if (!this.canGoBack()) {
202
+ return null;
203
+ }
204
+ return this.goTo(this.currentIndex - 1);
205
+ }
206
+ /**
207
+ * Go forward to next state
208
+ */
209
+ forward() {
210
+ if (!this.canGoForward()) {
211
+ return null;
212
+ }
213
+ return this.goTo(this.currentIndex + 1);
214
+ }
215
+ /**
216
+ * Check if can go back
217
+ */
218
+ canGoBack() {
219
+ return this.currentIndex > 0;
220
+ }
221
+ /**
222
+ * Check if can go forward
223
+ */
224
+ canGoForward() {
225
+ return this.currentIndex < this.history.length - 1;
226
+ }
227
+ /**
228
+ * Get current history entry
229
+ */
230
+ current() {
231
+ if (this.currentIndex < 0 || this.currentIndex >= this.history.length) {
232
+ return null;
233
+ }
234
+ return this.history[this.currentIndex];
235
+ }
236
+ /**
237
+ * Get all history entries
238
+ */
239
+ getHistory() {
240
+ return [...this.history];
241
+ }
242
+ /**
243
+ * Get current index in history
244
+ */
245
+ getCurrentIndex() {
246
+ return this.currentIndex;
247
+ }
248
+ /**
249
+ * Clear all history
250
+ */
251
+ clear() {
252
+ this.history = [];
253
+ this.currentIndex = -1;
254
+ }
255
+ };
256
+ function createHistoryEngine(engine, options = {}) {
257
+ const history = new HistoryStateManager(options.maxHistorySize);
258
+ history.record(engine.getState(), [], options.initialLabel || "Initial");
259
+ const dispatch = (events, label) => {
260
+ engine.step(events);
261
+ history.record(engine.getState(), events, label);
262
+ };
263
+ const undo = () => {
264
+ const entry = history.back();
265
+ if (entry) {
266
+ return true;
267
+ }
268
+ return false;
269
+ };
270
+ const redo = () => {
271
+ const entry = history.forward();
272
+ if (entry) {
273
+ return true;
274
+ }
275
+ return false;
276
+ };
277
+ return {
278
+ engine,
279
+ dispatch,
280
+ undo,
281
+ redo,
282
+ canUndo: () => history.canGoBack(),
283
+ canRedo: () => history.canGoForward(),
284
+ getHistory: () => history.getHistory(),
285
+ goToHistory: (index) => history.goTo(index) !== null,
286
+ clearHistory: () => history.clear()
287
+ };
288
+ }
289
+ export {
290
+ HistoryStateManager,
291
+ createContextStore,
292
+ createDerivedStore,
293
+ createHistoryEngine,
294
+ createPraxisStore,
295
+ usePraxisContext,
296
+ usePraxisEngine,
297
+ usePraxisSubscription
298
+ };
@@ -0,0 +1,207 @@
1
+ import {
2
+ createSponsorsClient
3
+ } from "./chunk-DSDC2JWZ.js";
4
+ import {
5
+ authenticateWithDeviceFlow
6
+ } from "./chunk-FXQZXAWF.js";
7
+ import "./chunk-QGM4M3NI.js";
8
+
9
+ // src/cli/commands/auth.ts
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ import * as os from "os";
13
+ var AUTH_DIR = path.join(os.homedir(), ".praxis");
14
+ var AUTH_FILE = path.join(AUTH_DIR, "auth.json");
15
+ var GITHUB_CLIENT_ID = "Ov23liQxF7P0BqUxVXHk";
16
+ function loadAuth() {
17
+ try {
18
+ if (fs.existsSync(AUTH_FILE)) {
19
+ const data = fs.readFileSync(AUTH_FILE, "utf-8");
20
+ return JSON.parse(data);
21
+ }
22
+ } catch (error) {
23
+ console.warn("Failed to load authentication:", error);
24
+ }
25
+ return null;
26
+ }
27
+ function saveAuth(auth) {
28
+ try {
29
+ if (!fs.existsSync(AUTH_DIR)) {
30
+ fs.mkdirSync(AUTH_DIR, { recursive: true });
31
+ }
32
+ fs.writeFileSync(AUTH_FILE, JSON.stringify(auth, null, 2), { mode: 384 });
33
+ console.log(`
34
+ \u2713 Authentication saved to ${AUTH_FILE}`);
35
+ } catch (error) {
36
+ console.error("Failed to save authentication:", error);
37
+ throw error;
38
+ }
39
+ }
40
+ function deleteAuth() {
41
+ try {
42
+ if (fs.existsSync(AUTH_FILE)) {
43
+ fs.unlinkSync(AUTH_FILE);
44
+ }
45
+ } catch (error) {
46
+ console.warn("Failed to delete authentication:", error);
47
+ }
48
+ }
49
+ async function loginCommand(options) {
50
+ 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");
51
+ console.log("\u2551 Praxis Cloud Authentication \u2551");
52
+ 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");
53
+ const existingAuth = loadAuth();
54
+ if (existingAuth) {
55
+ console.log("\u26A0 Already authenticated");
56
+ console.log(` User: ${existingAuth.userLogin}`);
57
+ console.log(
58
+ ` Authenticated at: ${new Date(existingAuth.authenticatedAt).toLocaleString()}
59
+ `
60
+ );
61
+ console.log("Run 'praxis logout' to log out first.");
62
+ return;
63
+ }
64
+ let authResult;
65
+ if (options.token) {
66
+ console.log("\u{1F510} Using provided personal access token...");
67
+ try {
68
+ const response = await fetch("https://api.github.com/user", {
69
+ headers: {
70
+ Authorization: `Bearer ${options.token}`,
71
+ Accept: "application/vnd.github.v3+json"
72
+ }
73
+ });
74
+ if (!response.ok) {
75
+ throw new Error(`Invalid token: ${response.statusText}`);
76
+ }
77
+ const userData = await response.json();
78
+ authResult = {
79
+ success: true,
80
+ token: options.token,
81
+ user: {
82
+ id: userData.id,
83
+ login: userData.login,
84
+ email: userData.email,
85
+ name: userData.name,
86
+ avatarUrl: userData.avatar_url
87
+ }
88
+ };
89
+ } catch (error) {
90
+ console.error("\n\u2717 Authentication failed");
91
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
92
+ process.exit(1);
93
+ }
94
+ } else {
95
+ console.log("\u{1F510} Authenticating with GitHub device flow...");
96
+ authResult = await authenticateWithDeviceFlow(GITHUB_CLIENT_ID);
97
+ }
98
+ if (!authResult.success || !authResult.token || !authResult.user) {
99
+ console.error("\n\u2717 Authentication failed");
100
+ process.exit(1);
101
+ }
102
+ console.log(`\u2713 Authenticated as ${authResult.user.login}`);
103
+ console.log("\n\u{1F50D} Checking GitHub Sponsors status...");
104
+ try {
105
+ const sponsorsClient = createSponsorsClient(authResult.token);
106
+ const subscription = await sponsorsClient.getSubscription(authResult.user.login);
107
+ console.log(`\u2713 Subscription tier: ${subscription.tier}`);
108
+ console.log(` Status: ${subscription.status}`);
109
+ console.log(` Provider: ${subscription.provider}`);
110
+ if (subscription.tier === "free") {
111
+ console.log("\n\u{1F4A1} Upgrade to a paid tier for more features!");
112
+ console.log(" Visit: https://github.com/sponsors/plures");
113
+ }
114
+ } catch (error) {
115
+ console.warn("\n\u26A0 Could not check Sponsors status");
116
+ console.warn(` Error: ${error instanceof Error ? error.message : String(error)}`);
117
+ }
118
+ const storedAuth = {
119
+ token: authResult.token,
120
+ userId: authResult.user.id,
121
+ userLogin: authResult.user.login,
122
+ userName: authResult.user.name,
123
+ userEmail: authResult.user.email,
124
+ authenticatedAt: Date.now()
125
+ };
126
+ saveAuth(storedAuth);
127
+ console.log("\n\u2713 Successfully logged in!");
128
+ console.log("\nNext steps:");
129
+ console.log(" \u2022 Use 'praxis cloud init' to set up cloud connection");
130
+ console.log(" \u2022 Use 'praxis whoami' to check your authentication");
131
+ console.log(" \u2022 Use 'praxis cloud status' to check subscription\n");
132
+ }
133
+ async function logoutCommand() {
134
+ const auth = loadAuth();
135
+ if (!auth) {
136
+ console.log("\n\u2717 Not currently logged in");
137
+ console.log(" Run 'praxis login' to authenticate\n");
138
+ return;
139
+ }
140
+ console.log(`
141
+ Logging out user: ${auth.userLogin}...`);
142
+ deleteAuth();
143
+ console.log("\u2713 Successfully logged out\n");
144
+ }
145
+ async function whoamiCommand() {
146
+ const auth = loadAuth();
147
+ if (!auth) {
148
+ console.log("\n\u2717 Not currently logged in");
149
+ console.log(" Run 'praxis login' to authenticate\n");
150
+ process.exit(1);
151
+ }
152
+ 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");
153
+ console.log("\u2551 Current Authentication \u2551");
154
+ 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");
155
+ console.log(`User: ${auth.userLogin}`);
156
+ if (auth.userName) {
157
+ console.log(`Name: ${auth.userName}`);
158
+ }
159
+ if (auth.userEmail) {
160
+ console.log(`Email: ${auth.userEmail}`);
161
+ }
162
+ console.log(`User ID: ${auth.userId}`);
163
+ console.log(`Authenticated: ${new Date(auth.authenticatedAt).toLocaleString()}`);
164
+ console.log("\n\u{1F50D} Checking token validity...");
165
+ try {
166
+ const response = await fetch("https://api.github.com/user", {
167
+ headers: {
168
+ Authorization: `Bearer ${auth.token}`,
169
+ Accept: "application/vnd.github.v3+json"
170
+ }
171
+ });
172
+ if (response.ok) {
173
+ console.log("\u2713 Token is valid");
174
+ console.log("\n\u{1F50D} Checking subscription...");
175
+ const sponsorsClient = createSponsorsClient(auth.token);
176
+ const subscription = await sponsorsClient.getSubscription(auth.userLogin);
177
+ console.log(`Tier: ${subscription.tier}`);
178
+ console.log(`Status: ${subscription.status}`);
179
+ console.log(`Provider: ${subscription.provider}`);
180
+ console.log("\nLimits:");
181
+ console.log(` Syncs/month: ${subscription.limits.maxSyncsPerMonth.toLocaleString()}`);
182
+ console.log(
183
+ ` Storage: ${(subscription.limits.maxStorageBytes / 1024 / 1024).toFixed(0)} MB`
184
+ );
185
+ console.log(` Apps: ${subscription.limits.maxApps}`);
186
+ console.log(` Team members: ${subscription.limits.maxTeamMembers ?? "Unlimited"}`);
187
+ console.log(` Support: ${subscription.limits.supportLevel}`);
188
+ } else {
189
+ console.log("\u2717 Token is invalid or expired");
190
+ console.log(" Run 'praxis login' to re-authenticate");
191
+ }
192
+ } catch (error) {
193
+ console.error("\n\u2717 Failed to check token validity");
194
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
195
+ }
196
+ console.log();
197
+ }
198
+ function getAuthToken() {
199
+ const auth = loadAuth();
200
+ return auth?.token || null;
201
+ }
202
+ export {
203
+ getAuthToken,
204
+ loginCommand,
205
+ logoutCommand,
206
+ whoamiCommand
207
+ };