@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,456 @@
1
+ import {
2
+ connectRelay,
3
+ createCloudRelay
4
+ } from "../chunk-XCY2VIFX.js";
5
+ import {
6
+ BillingProvider,
7
+ GitHubSponsorsClient,
8
+ SubscriptionStatus,
9
+ SubscriptionTier,
10
+ TIER_LIMITS,
11
+ checkUsageLimits,
12
+ createFreeSubscription,
13
+ createSponsorSubscription,
14
+ createSponsorsClient,
15
+ hasAccessToTier
16
+ } from "../chunk-DSDC2JWZ.js";
17
+ import {
18
+ GitHubOAuth,
19
+ authenticateWithDeviceFlow,
20
+ createGitHubOAuth
21
+ } from "../chunk-FXQZXAWF.js";
22
+ import "../chunk-QGM4M3NI.js";
23
+
24
+ // src/cloud/marketplace.ts
25
+ var MARKETPLACE_PLANS = {
26
+ solo: {
27
+ name: "Praxis Cloud Solo",
28
+ description: "For individual developers",
29
+ monthlyPriceInCents: 500,
30
+ // $5/month
31
+ yearlyPriceInCents: 5e3,
32
+ // $50/year (2 months free)
33
+ features: ["50,000 syncs/month", "1 GB storage", "10 apps/projects", "Standard support"]
34
+ },
35
+ team: {
36
+ name: "Praxis Cloud Team",
37
+ description: "For small teams",
38
+ monthlyPriceInCents: 2e3,
39
+ // $20/month
40
+ yearlyPriceInCents: 2e4,
41
+ // $200/year (2 months free)
42
+ features: [
43
+ "500,000 syncs/month",
44
+ "10 GB storage",
45
+ "50 apps/projects",
46
+ "Up to 10 team members",
47
+ "Standard support"
48
+ ]
49
+ },
50
+ enterprise: {
51
+ name: "Praxis Cloud Enterprise",
52
+ description: "For large teams and organizations",
53
+ monthlyPriceInCents: 5e3,
54
+ // $50/month
55
+ yearlyPriceInCents: 5e4,
56
+ // $500/year (2 months free)
57
+ features: [
58
+ "5,000,000 syncs/month",
59
+ "100 GB storage",
60
+ "1,000 apps/projects",
61
+ "Unlimited team members",
62
+ "Priority support",
63
+ "SLA guarantees"
64
+ ]
65
+ }
66
+ };
67
+ var GitHubMarketplaceClient = class {
68
+ token;
69
+ constructor(token) {
70
+ this.token = token;
71
+ }
72
+ /**
73
+ * Get accounts for the authenticated user
74
+ */
75
+ async getAccounts() {
76
+ try {
77
+ const response = await fetch("https://api.github.com/marketplace_listing/accounts", {
78
+ headers: {
79
+ Authorization: `Bearer ${this.token}`,
80
+ Accept: "application/vnd.github.v3+json"
81
+ }
82
+ });
83
+ if (!response.ok) {
84
+ throw new Error(`GitHub API error: ${response.statusText}`);
85
+ }
86
+ return await response.json();
87
+ } catch (error) {
88
+ console.error("Failed to get marketplace accounts:", error);
89
+ return [];
90
+ }
91
+ }
92
+ /**
93
+ * Get subscription from marketplace account
94
+ */
95
+ async getSubscription(accountId) {
96
+ const accounts = await this.getAccounts();
97
+ const account = accounts.find((a) => a.id === accountId);
98
+ if (!account) {
99
+ return null;
100
+ }
101
+ let tier = "free" /* FREE */;
102
+ if (account.plan.monthlyPriceInCents >= 5e3) {
103
+ tier = "enterprise" /* ENTERPRISE */;
104
+ } else if (account.plan.monthlyPriceInCents >= 2e3) {
105
+ tier = "team" /* TEAM */;
106
+ } else if (account.plan.monthlyPriceInCents >= 500) {
107
+ tier = "solo" /* SOLO */;
108
+ }
109
+ return {
110
+ tier,
111
+ status: "active" /* ACTIVE */,
112
+ provider: "marketplace" /* MARKETPLACE */,
113
+ marketplacePlanId: account.plan.id,
114
+ startDate: account.onFreeTrial && account.freeTrialEndsOn ? new Date(account.freeTrialEndsOn).getTime() : Date.now(),
115
+ periodEnd: account.nextBillingDate ? new Date(account.nextBillingDate).getTime() : void 0,
116
+ autoRenew: true,
117
+ limits: TIER_LIMITS[tier]
118
+ };
119
+ }
120
+ /**
121
+ * Handle marketplace webhook event
122
+ */
123
+ handleWebhookEvent(event) {
124
+ const account = event.marketplacePurchase.account;
125
+ if (event.action === "cancelled") {
126
+ return null;
127
+ }
128
+ let tier = "free" /* FREE */;
129
+ if (account.plan.monthlyPriceInCents >= 5e3) {
130
+ tier = "enterprise" /* ENTERPRISE */;
131
+ } else if (account.plan.monthlyPriceInCents >= 2e3) {
132
+ tier = "team" /* TEAM */;
133
+ } else if (account.plan.monthlyPriceInCents >= 500) {
134
+ tier = "solo" /* SOLO */;
135
+ }
136
+ return {
137
+ userId: account.id,
138
+ userLogin: account.login,
139
+ subscription: {
140
+ tier,
141
+ status: "active" /* ACTIVE */,
142
+ provider: "marketplace" /* MARKETPLACE */,
143
+ marketplacePlanId: account.plan.id,
144
+ startDate: Date.now(),
145
+ periodEnd: event.marketplacePurchase.nextBillingDate ? new Date(event.marketplacePurchase.nextBillingDate).getTime() : void 0,
146
+ autoRenew: true,
147
+ limits: TIER_LIMITS[tier]
148
+ }
149
+ };
150
+ }
151
+ };
152
+ function createMarketplaceClient(token) {
153
+ return new GitHubMarketplaceClient(token);
154
+ }
155
+
156
+ // src/cloud/provisioning.ts
157
+ function generateStorageNamespace(githubLogin, userId) {
158
+ const sanitized = githubLogin.toLowerCase().replace(/[^a-z0-9]/g, "-");
159
+ const hash = userId.toString(36).padStart(6, "0");
160
+ return `gh-${sanitized}-${hash}`;
161
+ }
162
+ function generateTenantId(githubUser) {
163
+ return `github-${githubUser.id}`;
164
+ }
165
+ function createTenant(githubUser, subscription) {
166
+ const tenantId = generateTenantId(githubUser);
167
+ const storageNamespace = generateStorageNamespace(githubUser.login, githubUser.id);
168
+ return {
169
+ id: tenantId,
170
+ githubUserId: githubUser.id,
171
+ githubLogin: githubUser.login,
172
+ type: "user",
173
+ // Could be "organization" if checking org membership
174
+ subscription,
175
+ storageNamespace,
176
+ createdAt: Date.now(),
177
+ lastAccessedAt: Date.now()
178
+ };
179
+ }
180
+ function validateStorageNamespace(namespace) {
181
+ if (namespace.length < 3 || namespace.length > 63) {
182
+ return {
183
+ valid: false,
184
+ error: "Namespace must be 3-63 characters"
185
+ };
186
+ }
187
+ if (!/^[a-z0-9]/.test(namespace)) {
188
+ return {
189
+ valid: false,
190
+ error: "Namespace must start with a letter or number"
191
+ };
192
+ }
193
+ if (!/^[a-z0-9-]+$/.test(namespace)) {
194
+ return {
195
+ valid: false,
196
+ error: "Namespace can only contain lowercase letters, numbers, and hyphens"
197
+ };
198
+ }
199
+ if (/--/.test(namespace)) {
200
+ return {
201
+ valid: false,
202
+ error: "Namespace cannot contain consecutive hyphens"
203
+ };
204
+ }
205
+ return { valid: true };
206
+ }
207
+ function getAppStorageContainer(tenantNamespace, appId) {
208
+ const sanitizedAppId = appId.toLowerCase().replace(/[^a-z0-9]/g, "-");
209
+ return `${tenantNamespace}-${sanitizedAppId}`;
210
+ }
211
+ async function provisionTenant(githubUser, subscription) {
212
+ try {
213
+ const tenant = createTenant(githubUser, subscription);
214
+ const validation = validateStorageNamespace(tenant.storageNamespace);
215
+ if (!validation.valid) {
216
+ return {
217
+ success: false,
218
+ error: validation.error
219
+ };
220
+ }
221
+ console.log(`Provisioned tenant: ${tenant.id}`);
222
+ console.log(`Storage namespace: ${tenant.storageNamespace}`);
223
+ return {
224
+ success: true,
225
+ tenant
226
+ };
227
+ } catch (error) {
228
+ return {
229
+ success: false,
230
+ error: error instanceof Error ? error.message : String(error)
231
+ };
232
+ }
233
+ }
234
+ async function getOrCreateTenant(githubUser, subscription, tenantLookup) {
235
+ const tenantId = generateTenantId(githubUser);
236
+ const existing = await tenantLookup(tenantId);
237
+ if (existing) {
238
+ existing.lastAccessedAt = Date.now();
239
+ return existing;
240
+ }
241
+ const result = await provisionTenant(githubUser, subscription);
242
+ if (!result.success || !result.tenant) {
243
+ throw new Error(`Failed to provision tenant: ${result.error}`);
244
+ }
245
+ return result.tenant;
246
+ }
247
+
248
+ // src/cloud/relay/endpoints.ts
249
+ var storage = {
250
+ syncs: /* @__PURE__ */ new Map(),
251
+ usage: /* @__PURE__ */ new Map()
252
+ };
253
+ async function healthEndpoint(context, _req) {
254
+ context.log("Health check requested");
255
+ const response = {
256
+ status: "healthy",
257
+ timestamp: Date.now(),
258
+ version: "0.1.0",
259
+ services: {
260
+ relay: true,
261
+ eventGrid: true,
262
+ storage: true,
263
+ auth: true
264
+ }
265
+ };
266
+ return {
267
+ status: 200,
268
+ headers: { "Content-Type": "application/json" },
269
+ body: response
270
+ };
271
+ }
272
+ async function syncEndpoint(context, req) {
273
+ context.log("Sync request received");
274
+ if (req.method !== "POST") {
275
+ return {
276
+ status: 405,
277
+ body: { error: "Method not allowed" }
278
+ };
279
+ }
280
+ const message = req.body;
281
+ if (!message || !message.appId) {
282
+ return {
283
+ status: 400,
284
+ body: { error: "Invalid sync message" }
285
+ };
286
+ }
287
+ const appSyncs = storage.syncs.get(message.appId) || [];
288
+ appSyncs.push(message);
289
+ storage.syncs.set(message.appId, appSyncs);
290
+ const usage = storage.usage.get(message.appId) || {
291
+ appId: message.appId,
292
+ syncCount: 0,
293
+ eventCount: 0,
294
+ factCount: 0,
295
+ storageBytes: 0,
296
+ periodStart: Date.now(),
297
+ periodEnd: Date.now()
298
+ };
299
+ usage.syncCount++;
300
+ usage.eventCount += message.events?.length || 0;
301
+ usage.factCount += message.facts?.length || 0;
302
+ usage.storageBytes += JSON.stringify(message).length;
303
+ usage.periodEnd = Date.now();
304
+ storage.usage.set(message.appId, usage);
305
+ context.log(`Synced for app ${message.appId}: ${usage.syncCount} total syncs`);
306
+ return {
307
+ status: 200,
308
+ headers: { "Content-Type": "application/json" },
309
+ body: {
310
+ success: true,
311
+ clock: message.clock,
312
+ timestamp: Date.now()
313
+ }
314
+ };
315
+ }
316
+ async function usageEndpoint(context, req) {
317
+ context.log("Usage metrics requested");
318
+ const appId = req.query.appId;
319
+ if (!appId) {
320
+ return {
321
+ status: 400,
322
+ body: { error: "appId query parameter is required" }
323
+ };
324
+ }
325
+ const usage = storage.usage.get(appId);
326
+ if (!usage) {
327
+ return {
328
+ status: 404,
329
+ body: { error: "No usage data found for this app" }
330
+ };
331
+ }
332
+ return {
333
+ status: 200,
334
+ headers: { "Content-Type": "application/json" },
335
+ body: usage
336
+ };
337
+ }
338
+ async function statsEndpoint(context, req) {
339
+ context.log("Stats requested");
340
+ const appId = req.query.appId;
341
+ if (!appId) {
342
+ return {
343
+ status: 400,
344
+ body: { error: "appId query parameter is required" }
345
+ };
346
+ }
347
+ const usage = storage.usage.get(appId);
348
+ const syncs = storage.syncs.get(appId) || [];
349
+ return {
350
+ status: 200,
351
+ headers: { "Content-Type": "application/json" },
352
+ body: {
353
+ appId,
354
+ totalSyncs: syncs.length,
355
+ usage: usage || null,
356
+ lastSync: syncs.length > 0 ? syncs[syncs.length - 1].timestamp : null
357
+ }
358
+ };
359
+ }
360
+ async function eventsEndpoint(context, req) {
361
+ context.log("Event forwarding requested");
362
+ if (req.method !== "POST") {
363
+ return {
364
+ status: 405,
365
+ body: { error: "Method not allowed" }
366
+ };
367
+ }
368
+ const { appId, events } = req.body;
369
+ if (!appId || !events) {
370
+ return {
371
+ status: 400,
372
+ body: { error: "Invalid event forwarding request" }
373
+ };
374
+ }
375
+ context.log(`Forwarding ${events.length} events for app ${appId}`);
376
+ return {
377
+ status: 200,
378
+ headers: { "Content-Type": "application/json" },
379
+ body: {
380
+ success: true,
381
+ forwarded: events.length,
382
+ timestamp: Date.now()
383
+ }
384
+ };
385
+ }
386
+ async function schemaEndpoint(context, req) {
387
+ context.log("Schema registry requested");
388
+ if (req.method === "POST") {
389
+ const { appId: appId2, schema } = req.body;
390
+ if (!appId2 || !schema) {
391
+ return {
392
+ status: 400,
393
+ body: { error: "Invalid schema registration request" }
394
+ };
395
+ }
396
+ context.log(`Schema registered for app ${appId2}`);
397
+ return {
398
+ status: 200,
399
+ headers: { "Content-Type": "application/json" },
400
+ body: {
401
+ success: true,
402
+ schemaId: `${appId2}-${Date.now()}`,
403
+ timestamp: Date.now()
404
+ }
405
+ };
406
+ }
407
+ const appId = req.query.appId;
408
+ if (!appId) {
409
+ return {
410
+ status: 400,
411
+ body: { error: "appId query parameter is required" }
412
+ };
413
+ }
414
+ return {
415
+ status: 200,
416
+ headers: { "Content-Type": "application/json" },
417
+ body: {
418
+ appId,
419
+ schema: null,
420
+ message: "Schema not found"
421
+ }
422
+ };
423
+ }
424
+ export {
425
+ BillingProvider,
426
+ GitHubMarketplaceClient,
427
+ GitHubOAuth,
428
+ GitHubSponsorsClient,
429
+ MARKETPLACE_PLANS,
430
+ SubscriptionStatus,
431
+ SubscriptionTier,
432
+ TIER_LIMITS,
433
+ authenticateWithDeviceFlow,
434
+ checkUsageLimits,
435
+ connectRelay,
436
+ createCloudRelay,
437
+ createFreeSubscription,
438
+ createGitHubOAuth,
439
+ createMarketplaceClient,
440
+ createSponsorSubscription,
441
+ createSponsorsClient,
442
+ createTenant,
443
+ eventsEndpoint,
444
+ generateStorageNamespace,
445
+ generateTenantId,
446
+ getAppStorageContainer,
447
+ getOrCreateTenant,
448
+ hasAccessToTier,
449
+ healthEndpoint,
450
+ provisionTenant,
451
+ schemaEndpoint,
452
+ statsEndpoint,
453
+ syncEndpoint,
454
+ usageEndpoint,
455
+ validateStorageNamespace
456
+ };
@@ -0,0 +1,212 @@
1
+ import {
2
+ connectRelay
3
+ } from "./chunk-XCY2VIFX.js";
4
+ import {
5
+ authenticateWithDeviceFlow
6
+ } from "./chunk-FXQZXAWF.js";
7
+ import "./chunk-QGM4M3NI.js";
8
+
9
+ // src/cli/commands/cloud.ts
10
+ import * as fs from "fs";
11
+ import * as path from "path";
12
+ var CONFIG_FILE = ".praxis-cloud.json";
13
+ var GITHUB_CLIENT_ID = "Ov23liQxF7P0BqUxVXHk";
14
+ function loadConfig() {
15
+ try {
16
+ const configPath = path.join(process.cwd(), CONFIG_FILE);
17
+ if (fs.existsSync(configPath)) {
18
+ const data = fs.readFileSync(configPath, "utf-8");
19
+ return JSON.parse(data);
20
+ }
21
+ } catch (error) {
22
+ console.warn("Failed to load cloud configuration:", error);
23
+ }
24
+ return null;
25
+ }
26
+ function saveConfig(config) {
27
+ try {
28
+ const configPath = path.join(process.cwd(), CONFIG_FILE);
29
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
30
+ console.log(`
31
+ \u2713 Configuration saved to ${CONFIG_FILE}`);
32
+ } catch (error) {
33
+ console.error("Failed to save cloud configuration:", error);
34
+ throw error;
35
+ }
36
+ }
37
+ async function cloudInit(options) {
38
+ 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");
39
+ console.log("\u2551 Welcome to Praxis Cloud Setup Wizard \u2551");
40
+ 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");
41
+ const existingConfig = loadConfig();
42
+ if (existingConfig) {
43
+ console.log("\u26A0 Existing cloud configuration found.");
44
+ console.log(` Endpoint: ${existingConfig.endpoint}`);
45
+ console.log(` App ID: ${existingConfig.appId}
46
+ `);
47
+ }
48
+ let endpoint = options.endpoint;
49
+ if (!endpoint) {
50
+ endpoint = "https://praxis-relay.azurewebsites.net";
51
+ console.log(`Using default endpoint: ${endpoint}`);
52
+ }
53
+ let appId = options.appId;
54
+ if (!appId) {
55
+ appId = path.basename(process.cwd());
56
+ console.log(`Using app ID from directory name: ${appId}`);
57
+ }
58
+ console.log("\n\u{1F510} Authenticating with GitHub...");
59
+ const authResult = await authenticateWithDeviceFlow(GITHUB_CLIENT_ID);
60
+ if (!authResult.success || !authResult.token) {
61
+ console.error("\n\u2717 Authentication failed");
62
+ process.exit(1);
63
+ }
64
+ console.log(`\u2713 Authenticated as ${authResult.user?.login || "unknown"}`);
65
+ console.log("\n\u{1F517} Testing connection to Praxis Cloud...");
66
+ try {
67
+ const config = {
68
+ endpoint,
69
+ appId,
70
+ authToken: authResult.token,
71
+ autoSync: options.autoSync,
72
+ syncInterval: options.interval ? parseInt(options.interval) : 5e3
73
+ };
74
+ const client = await connectRelay(endpoint, config);
75
+ const health = await client.getHealth();
76
+ if (health.status === "healthy") {
77
+ console.log("\u2713 Connected successfully!");
78
+ console.log(` Status: ${health.status}`);
79
+ console.log(` Version: ${health.version}`);
80
+ } else {
81
+ console.log(`\u26A0 Connected but service is ${health.status}`);
82
+ }
83
+ await client.disconnect();
84
+ const storedConfig = {
85
+ endpoint,
86
+ appId,
87
+ authToken: authResult.token,
88
+ autoSync: options.autoSync,
89
+ syncInterval: config.syncInterval
90
+ };
91
+ saveConfig(storedConfig);
92
+ console.log("\n\u2713 Praxis Cloud is now configured!");
93
+ console.log("\nNext steps:");
94
+ console.log(" \u2022 Use 'praxis cloud status' to check connection");
95
+ console.log(" \u2022 Use 'praxis cloud sync' to manually sync");
96
+ console.log(" \u2022 Use 'praxis cloud usage' to view metrics");
97
+ console.log("\nIn your code:");
98
+ console.log(' import { connectRelay } from "@plures/praxis/cloud";');
99
+ console.log(` const relay = await connectRelay("${endpoint}", {`);
100
+ console.log(` appId: "${appId}",`);
101
+ console.log(` authToken: "<your-token>"`);
102
+ console.log(" });\n");
103
+ } catch (error) {
104
+ console.error("\n\u2717 Failed to connect to Praxis Cloud");
105
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ async function cloudStatus() {
110
+ const config = loadConfig();
111
+ if (!config) {
112
+ console.log("\n\u2717 No cloud configuration found");
113
+ console.log(" Run 'praxis cloud init' to set up cloud connection\n");
114
+ process.exit(1);
115
+ }
116
+ 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");
117
+ console.log("\u2551 Praxis Cloud Status \u2551");
118
+ 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");
119
+ console.log(`Endpoint: ${config.endpoint}`);
120
+ console.log(`App ID: ${config.appId}`);
121
+ console.log(`Auto Sync: ${config.autoSync ? "enabled" : "disabled"}`);
122
+ if (config.autoSync) {
123
+ console.log(`Sync Interval: ${config.syncInterval}ms`);
124
+ }
125
+ try {
126
+ const client = await connectRelay(config.endpoint, config);
127
+ const health = await client.getHealth();
128
+ console.log(`
129
+ Connection: \u2713 Connected`);
130
+ console.log(`Status: ${health.status}`);
131
+ console.log(`Version: ${health.version}`);
132
+ console.log("\nServices:");
133
+ console.log(` Relay: ${health.services.relay ? "\u2713" : "\u2717"}`);
134
+ console.log(` Event Grid: ${health.services.eventGrid ? "\u2713" : "\u2717"}`);
135
+ console.log(` Storage: ${health.services.storage ? "\u2713" : "\u2717"}`);
136
+ console.log(` Auth: ${health.services.auth ? "\u2713" : "\u2717"}`);
137
+ await client.disconnect();
138
+ } catch (error) {
139
+ console.log(`
140
+ Connection: \u2717 Failed`);
141
+ console.log(`Error: ${error instanceof Error ? error.message : String(error)}`);
142
+ }
143
+ console.log();
144
+ }
145
+ async function cloudSync() {
146
+ const config = loadConfig();
147
+ if (!config) {
148
+ console.log("\n\u2717 No cloud configuration found");
149
+ console.log(" Run 'praxis cloud init' to set up cloud connection\n");
150
+ process.exit(1);
151
+ }
152
+ console.log("\n\u{1F504} Syncing to Praxis Cloud...");
153
+ try {
154
+ const client = await connectRelay(config.endpoint, config);
155
+ await client.sync({
156
+ type: "delta",
157
+ appId: config.appId,
158
+ clock: {},
159
+ facts: [],
160
+ events: [],
161
+ timestamp: Date.now()
162
+ });
163
+ console.log("\u2713 Sync completed successfully\n");
164
+ await client.disconnect();
165
+ } catch (error) {
166
+ console.error("\n\u2717 Sync failed");
167
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}
168
+ `);
169
+ process.exit(1);
170
+ }
171
+ }
172
+ async function cloudUsage() {
173
+ const config = loadConfig();
174
+ if (!config) {
175
+ console.log("\n\u2717 No cloud configuration found");
176
+ console.log(" Run 'praxis cloud init' to set up cloud connection\n");
177
+ process.exit(1);
178
+ }
179
+ 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");
180
+ console.log("\u2551 Praxis Cloud Usage Metrics \u2551");
181
+ 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");
182
+ try {
183
+ const client = await connectRelay(config.endpoint, config);
184
+ const usage = await client.getUsage();
185
+ console.log(`App ID: ${usage.appId}`);
186
+ console.log(`
187
+ Metrics:`);
188
+ console.log(` Total Syncs: ${usage.syncCount}`);
189
+ console.log(` Events Forwarded: ${usage.eventCount}`);
190
+ console.log(` Facts Synced: ${usage.factCount}`);
191
+ console.log(` Storage Used: ${(usage.storageBytes / 1024).toFixed(2)} KB`);
192
+ const periodDuration = usage.periodEnd - usage.periodStart;
193
+ const durationHours = (periodDuration / 1e3 / 60 / 60).toFixed(1);
194
+ console.log(`
195
+ Period: ${durationHours} hours`);
196
+ console.log(` From: ${new Date(usage.periodStart).toLocaleString()}`);
197
+ console.log(` To: ${new Date(usage.periodEnd).toLocaleString()}`);
198
+ console.log();
199
+ await client.disconnect();
200
+ } catch (error) {
201
+ console.error("\n\u2717 Failed to retrieve usage metrics");
202
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}
203
+ `);
204
+ process.exit(1);
205
+ }
206
+ }
207
+ export {
208
+ cloudInit,
209
+ cloudStatus,
210
+ cloudSync,
211
+ cloudUsage
212
+ };