@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,256 @@
1
+ // src/cloud/billing.ts
2
+ var SubscriptionTier = /* @__PURE__ */ ((SubscriptionTier2) => {
3
+ SubscriptionTier2["FREE"] = "free";
4
+ SubscriptionTier2["SOLO"] = "solo";
5
+ SubscriptionTier2["TEAM"] = "team";
6
+ SubscriptionTier2["ENTERPRISE"] = "enterprise";
7
+ return SubscriptionTier2;
8
+ })(SubscriptionTier || {});
9
+ var BillingProvider = /* @__PURE__ */ ((BillingProvider2) => {
10
+ BillingProvider2["SPONSORS"] = "sponsors";
11
+ BillingProvider2["MARKETPLACE"] = "marketplace";
12
+ BillingProvider2["NONE"] = "none";
13
+ return BillingProvider2;
14
+ })(BillingProvider || {});
15
+ var SubscriptionStatus = /* @__PURE__ */ ((SubscriptionStatus2) => {
16
+ SubscriptionStatus2["ACTIVE"] = "active";
17
+ SubscriptionStatus2["CANCELLED"] = "cancelled";
18
+ SubscriptionStatus2["EXPIRED"] = "expired";
19
+ SubscriptionStatus2["NONE"] = "none";
20
+ return SubscriptionStatus2;
21
+ })(SubscriptionStatus || {});
22
+ var TIER_LIMITS = {
23
+ ["free" /* FREE */]: {
24
+ maxSyncsPerMonth: 1e3,
25
+ maxStorageBytes: 10 * 1024 * 1024,
26
+ // 10 MB
27
+ maxTeamMembers: 1,
28
+ maxApps: 1,
29
+ supportLevel: "community"
30
+ },
31
+ ["solo" /* SOLO */]: {
32
+ maxSyncsPerMonth: 5e4,
33
+ maxStorageBytes: 1024 * 1024 * 1024,
34
+ // 1 GB
35
+ maxTeamMembers: 1,
36
+ maxApps: 10,
37
+ supportLevel: "standard"
38
+ },
39
+ ["team" /* TEAM */]: {
40
+ maxSyncsPerMonth: 5e5,
41
+ maxStorageBytes: 10 * 1024 * 1024 * 1024,
42
+ // 10 GB
43
+ maxTeamMembers: 10,
44
+ maxApps: 50,
45
+ supportLevel: "standard"
46
+ },
47
+ ["enterprise" /* ENTERPRISE */]: {
48
+ maxSyncsPerMonth: 5e6,
49
+ maxStorageBytes: 100 * 1024 * 1024 * 1024,
50
+ // 100 GB
51
+ maxTeamMembers: null,
52
+ // unlimited
53
+ maxApps: 1e3,
54
+ supportLevel: "priority"
55
+ }
56
+ };
57
+ function hasAccessToTier(subscription, requiredTier) {
58
+ if (subscription.status !== "active" /* ACTIVE */) {
59
+ return false;
60
+ }
61
+ const tierOrder = [
62
+ "free" /* FREE */,
63
+ "solo" /* SOLO */,
64
+ "team" /* TEAM */,
65
+ "enterprise" /* ENTERPRISE */
66
+ ];
67
+ const currentTierIndex = tierOrder.indexOf(subscription.tier);
68
+ const requiredTierIndex = tierOrder.indexOf(requiredTier);
69
+ return currentTierIndex >= requiredTierIndex;
70
+ }
71
+ function checkUsageLimits(subscription, usage) {
72
+ const violations = [];
73
+ if (usage.syncCount > subscription.limits.maxSyncsPerMonth) {
74
+ violations.push(
75
+ `Sync limit exceeded: ${usage.syncCount}/${subscription.limits.maxSyncsPerMonth}`
76
+ );
77
+ }
78
+ if (usage.storageBytes > subscription.limits.maxStorageBytes) {
79
+ violations.push(
80
+ `Storage limit exceeded: ${(usage.storageBytes / 1024 / 1024).toFixed(2)}MB/${(subscription.limits.maxStorageBytes / 1024 / 1024).toFixed(2)}MB`
81
+ );
82
+ }
83
+ if (subscription.limits.maxTeamMembers !== null && usage.teamMembers > subscription.limits.maxTeamMembers) {
84
+ violations.push(
85
+ `Team member limit exceeded: ${usage.teamMembers}/${subscription.limits.maxTeamMembers}`
86
+ );
87
+ }
88
+ if (usage.appCount > subscription.limits.maxApps) {
89
+ violations.push(`App limit exceeded: ${usage.appCount}/${subscription.limits.maxApps}`);
90
+ }
91
+ return {
92
+ withinLimits: violations.length === 0,
93
+ violations
94
+ };
95
+ }
96
+ function createFreeSubscription() {
97
+ return {
98
+ tier: "free" /* FREE */,
99
+ status: "active" /* ACTIVE */,
100
+ provider: "none" /* NONE */,
101
+ startDate: Date.now(),
102
+ autoRenew: true,
103
+ limits: TIER_LIMITS["free" /* FREE */]
104
+ };
105
+ }
106
+ function createSponsorSubscription(tierName, monthlyPriceInCents) {
107
+ let tier = "free" /* FREE */;
108
+ if (monthlyPriceInCents >= 5e3) {
109
+ tier = "enterprise" /* ENTERPRISE */;
110
+ } else if (monthlyPriceInCents >= 2e3) {
111
+ tier = "team" /* TEAM */;
112
+ } else if (monthlyPriceInCents >= 500) {
113
+ tier = "solo" /* SOLO */;
114
+ }
115
+ return {
116
+ tier,
117
+ status: "active" /* ACTIVE */,
118
+ provider: "sponsors" /* SPONSORS */,
119
+ sponsorTierId: tierName,
120
+ startDate: Date.now(),
121
+ autoRenew: true,
122
+ limits: TIER_LIMITS[tier]
123
+ };
124
+ }
125
+
126
+ // src/cloud/sponsors.ts
127
+ var GitHubSponsorsClient = class {
128
+ token;
129
+ accountLogin;
130
+ constructor(token, accountLogin) {
131
+ this.token = token;
132
+ this.accountLogin = accountLogin;
133
+ }
134
+ /**
135
+ * Get current user's sponsorship of the Praxis account
136
+ */
137
+ async getSponsorship(userLogin) {
138
+ try {
139
+ const query = `
140
+ query($accountLogin: String!, $userLogin: String!) {
141
+ user(login: $userLogin) {
142
+ sponsorshipForViewerAsSponsor(activeOnly: true) {
143
+ tier {
144
+ id
145
+ name
146
+ monthlyPriceInCents
147
+ description
148
+ isOneTime
149
+ }
150
+ createdAt
151
+ isActive
152
+ }
153
+ sponsorshipsAsSponsor(first: 100, activeOnly: true) {
154
+ nodes {
155
+ sponsorable {
156
+ ... on User {
157
+ login
158
+ }
159
+ ... on Organization {
160
+ login
161
+ }
162
+ }
163
+ tier {
164
+ id
165
+ name
166
+ monthlyPriceInCents
167
+ description
168
+ isOneTime
169
+ }
170
+ createdAt
171
+ isActive
172
+ }
173
+ }
174
+ }
175
+ }
176
+ `;
177
+ const response = await fetch("https://api.github.com/graphql", {
178
+ method: "POST",
179
+ headers: {
180
+ Authorization: `Bearer ${this.token}`,
181
+ "Content-Type": "application/json"
182
+ },
183
+ body: JSON.stringify({
184
+ query,
185
+ variables: {
186
+ accountLogin: this.accountLogin,
187
+ userLogin
188
+ }
189
+ })
190
+ });
191
+ if (!response.ok) {
192
+ throw new Error(`GitHub API error: ${response.statusText}`);
193
+ }
194
+ const data = await response.json();
195
+ if (data.errors) {
196
+ throw new Error(`GraphQL error: ${JSON.stringify(data.errors)}`);
197
+ }
198
+ const sponsorships = data.data?.user?.sponsorshipsAsSponsor?.nodes || [];
199
+ const praxisSponsorship = sponsorships.find(
200
+ (s) => s.sponsorable?.login === this.accountLogin
201
+ );
202
+ if (!praxisSponsorship) {
203
+ return null;
204
+ }
205
+ return {
206
+ sponsorLogin: userLogin,
207
+ sponsorId: data.data.user.id,
208
+ tier: {
209
+ id: praxisSponsorship.tier.id,
210
+ name: praxisSponsorship.tier.name,
211
+ monthlyPriceInCents: praxisSponsorship.tier.monthlyPriceInCents,
212
+ description: praxisSponsorship.tier.description,
213
+ isOneTime: praxisSponsorship.tier.isOneTime
214
+ },
215
+ createdAt: praxisSponsorship.createdAt,
216
+ isActive: praxisSponsorship.isActive
217
+ };
218
+ } catch (error) {
219
+ console.error("Failed to get sponsorship:", error);
220
+ return null;
221
+ }
222
+ }
223
+ /**
224
+ * Get subscription from sponsorship
225
+ */
226
+ async getSubscription(userLogin) {
227
+ const sponsorship = await this.getSponsorship(userLogin);
228
+ if (!sponsorship || !sponsorship.isActive) {
229
+ return createFreeSubscription();
230
+ }
231
+ return createSponsorSubscription(sponsorship.tier.name, sponsorship.tier.monthlyPriceInCents);
232
+ }
233
+ /**
234
+ * Check if user is a sponsor
235
+ */
236
+ async isSponsor(userLogin) {
237
+ const sponsorship = await this.getSponsorship(userLogin);
238
+ return sponsorship !== null && sponsorship.isActive;
239
+ }
240
+ };
241
+ function createSponsorsClient(token, accountLogin = "plures") {
242
+ return new GitHubSponsorsClient(token, accountLogin);
243
+ }
244
+
245
+ export {
246
+ SubscriptionTier,
247
+ BillingProvider,
248
+ SubscriptionStatus,
249
+ TIER_LIMITS,
250
+ hasAccessToTier,
251
+ checkUsageLimits,
252
+ createFreeSubscription,
253
+ createSponsorSubscription,
254
+ GitHubSponsorsClient,
255
+ createSponsorsClient
256
+ };
@@ -0,0 +1,175 @@
1
+ // src/cloud/auth.ts
2
+ var GitHubOAuth = class {
3
+ config;
4
+ constructor(config) {
5
+ this.config = config;
6
+ }
7
+ /**
8
+ * Get the OAuth authorization URL
9
+ */
10
+ getAuthorizationUrl(state) {
11
+ const params = new URLSearchParams({
12
+ client_id: this.config.clientId,
13
+ scope: this.config.scope || "read:user user:email",
14
+ state: state || this.generateState()
15
+ });
16
+ if (this.config.redirectUri) {
17
+ params.set("redirect_uri", this.config.redirectUri);
18
+ }
19
+ return `https://github.com/login/oauth/authorize?${params.toString()}`;
20
+ }
21
+ /**
22
+ * Exchange authorization code for access token
23
+ */
24
+ async exchangeCode(code) {
25
+ if (!this.config.clientSecret) {
26
+ throw new Error("Client secret is required for code exchange");
27
+ }
28
+ try {
29
+ const response = await fetch("https://github.com/login/oauth/access_token", {
30
+ method: "POST",
31
+ headers: {
32
+ "Content-Type": "application/json",
33
+ Accept: "application/json"
34
+ },
35
+ body: JSON.stringify({
36
+ client_id: this.config.clientId,
37
+ client_secret: this.config.clientSecret,
38
+ code
39
+ })
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(`Token exchange failed: ${response.statusText}`);
43
+ }
44
+ const data = await response.json();
45
+ if (data.error) {
46
+ throw new Error(`GitHub OAuth error: ${data.error_description || data.error}`);
47
+ }
48
+ const user = await this.getUserInfo(data.access_token);
49
+ return {
50
+ success: true,
51
+ token: data.access_token,
52
+ user,
53
+ expiresAt: data.expires_in ? Date.now() + data.expires_in * 1e3 : void 0
54
+ };
55
+ } catch (error) {
56
+ return {
57
+ success: false
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * Get user information from GitHub
63
+ */
64
+ async getUserInfo(token) {
65
+ const response = await fetch("https://api.github.com/user", {
66
+ headers: {
67
+ Authorization: `Bearer ${token}`,
68
+ Accept: "application/vnd.github.v3+json"
69
+ }
70
+ });
71
+ if (!response.ok) {
72
+ throw new Error(`Failed to get user info: ${response.statusText}`);
73
+ }
74
+ const data = await response.json();
75
+ return {
76
+ id: data.id,
77
+ login: data.login,
78
+ email: data.email,
79
+ name: data.name,
80
+ avatarUrl: data.avatar_url
81
+ };
82
+ }
83
+ /**
84
+ * Verify a token is valid
85
+ */
86
+ async verifyToken(token) {
87
+ try {
88
+ await this.getUserInfo(token);
89
+ return true;
90
+ } catch {
91
+ return false;
92
+ }
93
+ }
94
+ /**
95
+ * Generate a random state parameter for CSRF protection
96
+ */
97
+ generateState() {
98
+ const array = new Uint8Array(16);
99
+ if (typeof crypto !== "undefined" && crypto.getRandomValues) {
100
+ crypto.getRandomValues(array);
101
+ } else {
102
+ for (let i = 0; i < array.length; i++) {
103
+ array[i] = Math.floor(Math.random() * 256);
104
+ }
105
+ }
106
+ return Array.from(array, (byte) => byte.toString(16).padStart(2, "0")).join("");
107
+ }
108
+ };
109
+ function createGitHubOAuth(config) {
110
+ return new GitHubOAuth(config);
111
+ }
112
+ async function authenticateWithDeviceFlow(clientId) {
113
+ try {
114
+ const deviceResponse = await fetch("https://github.com/login/device/code", {
115
+ method: "POST",
116
+ headers: {
117
+ "Content-Type": "application/json",
118
+ Accept: "application/json"
119
+ },
120
+ body: JSON.stringify({
121
+ client_id: clientId,
122
+ scope: "read:user user:email"
123
+ })
124
+ });
125
+ if (!deviceResponse.ok) {
126
+ throw new Error(`Device flow initiation failed: ${deviceResponse.statusText}`);
127
+ }
128
+ const deviceData = await deviceResponse.json();
129
+ console.log("\nTo authenticate with GitHub:");
130
+ console.log(`1. Visit: ${deviceData.verification_uri}`);
131
+ console.log(`2. Enter code: ${deviceData.user_code}`);
132
+ console.log("\nWaiting for authentication...\n");
133
+ const interval = deviceData.interval * 1e3 || 5e3;
134
+ const expiresAt = Date.now() + deviceData.expires_in * 1e3;
135
+ while (Date.now() < expiresAt) {
136
+ await new Promise((resolve) => setTimeout(resolve, interval));
137
+ const tokenResponse = await fetch("https://github.com/login/oauth/access_token", {
138
+ method: "POST",
139
+ headers: {
140
+ "Content-Type": "application/json",
141
+ Accept: "application/json"
142
+ },
143
+ body: JSON.stringify({
144
+ client_id: clientId,
145
+ device_code: deviceData.device_code,
146
+ grant_type: "urn:ietf:params:oauth:grant-type:device_code"
147
+ })
148
+ });
149
+ const tokenData = await tokenResponse.json();
150
+ if (tokenData.access_token) {
151
+ const oauth = new GitHubOAuth({ clientId });
152
+ const user = await oauth.getUserInfo(tokenData.access_token);
153
+ return {
154
+ success: true,
155
+ token: tokenData.access_token,
156
+ user
157
+ };
158
+ }
159
+ if (tokenData.error && tokenData.error !== "authorization_pending") {
160
+ throw new Error(`Authentication failed: ${tokenData.error_description || tokenData.error}`);
161
+ }
162
+ }
163
+ throw new Error("Authentication timeout");
164
+ } catch (error) {
165
+ return {
166
+ success: false
167
+ };
168
+ }
169
+ }
170
+
171
+ export {
172
+ GitHubOAuth,
173
+ createGitHubOAuth,
174
+ authenticateWithDeviceFlow
175
+ };
@@ -0,0 +1,202 @@
1
+ // src/runtime/terminal-adapter.ts
2
+ async function defaultExecutor(command, options) {
3
+ try {
4
+ const { exec } = await import("child_process");
5
+ const { promisify } = await import("util");
6
+ const execAsync = promisify(exec);
7
+ const processEnv = typeof process !== "undefined" ? process.env : {};
8
+ const result = await execAsync(command, {
9
+ cwd: options.cwd,
10
+ env: { ...processEnv, ...options.env },
11
+ maxBuffer: 10 * 1024 * 1024,
12
+ // 10MB buffer
13
+ timeout: 6e4
14
+ // 60 second timeout
15
+ });
16
+ return {
17
+ output: result.stdout + (result.stderr ? `
18
+ ${result.stderr}` : ""),
19
+ exitCode: 0
20
+ };
21
+ } catch (error) {
22
+ const execError = error;
23
+ return {
24
+ output: (execError.stdout || "") + (execError.stderr || ""),
25
+ exitCode: execError.code || 1,
26
+ error: execError.message || "Command execution failed"
27
+ };
28
+ }
29
+ }
30
+ var TerminalAdapter = class {
31
+ state;
32
+ inputPath;
33
+ outputPath;
34
+ db;
35
+ executor;
36
+ constructor(options) {
37
+ this.state = {
38
+ nodeId: options.nodeId,
39
+ inputMode: options.props?.inputMode || "text",
40
+ history: options.props?.history || [],
41
+ lastOutput: options.props?.lastOutput || null,
42
+ cwd: options.cwd,
43
+ env: options.env
44
+ };
45
+ this.inputPath = options.inputPath;
46
+ this.outputPath = options.outputPath;
47
+ this.db = options.db;
48
+ this.executor = options.executor || defaultExecutor;
49
+ }
50
+ /**
51
+ * Execute a terminal command
52
+ *
53
+ * @param command - Command to execute
54
+ * @returns Execution result
55
+ */
56
+ async executeCommand(command) {
57
+ this.state.history.push(command);
58
+ const timestamp = Date.now();
59
+ const { output, exitCode, error } = await this.executor(command, {
60
+ cwd: this.state.cwd,
61
+ env: this.state.env
62
+ });
63
+ const result = {
64
+ command,
65
+ output,
66
+ exitCode,
67
+ timestamp,
68
+ error
69
+ };
70
+ this.state.lastOutput = output;
71
+ if (this.db && this.outputPath) {
72
+ await this.syncToPluresDB(this.outputPath, result);
73
+ }
74
+ return result;
75
+ }
76
+ /**
77
+ * Get current terminal state
78
+ */
79
+ getState() {
80
+ return { ...this.state };
81
+ }
82
+ /**
83
+ * Update terminal props
84
+ */
85
+ updateProps(props) {
86
+ this.state = {
87
+ ...this.state,
88
+ ...props
89
+ };
90
+ }
91
+ /**
92
+ * Set working directory
93
+ */
94
+ setCwd(cwd) {
95
+ this.state.cwd = cwd;
96
+ }
97
+ /**
98
+ * Set environment variables
99
+ */
100
+ setEnv(env) {
101
+ this.state.env = { ...this.state.env, ...env };
102
+ }
103
+ /**
104
+ * Clear command history
105
+ */
106
+ clearHistory() {
107
+ this.state.history = [];
108
+ }
109
+ /**
110
+ * Get command history
111
+ */
112
+ getHistory() {
113
+ return [...this.state.history];
114
+ }
115
+ /**
116
+ * Sync state to PluresDB
117
+ *
118
+ * @param path - PluresDB path for storing results
119
+ * @param data - Data to sync
120
+ */
121
+ async syncToPluresDB(path, data) {
122
+ if (!this.db) return;
123
+ try {
124
+ await this.db.set(path, {
125
+ ...data,
126
+ nodeId: this.state.nodeId,
127
+ syncedAt: Date.now()
128
+ });
129
+ const historyPath = `${path}/history`;
130
+ const historyKey = `${historyPath}/${data.timestamp}`;
131
+ await this.db.set(historyKey, data);
132
+ } catch (error) {
133
+ console.warn("Failed to sync to PluresDB:", error);
134
+ }
135
+ }
136
+ /**
137
+ * Load state from PluresDB
138
+ */
139
+ async loadFromPluresDB() {
140
+ if (!this.db || !this.inputPath) return;
141
+ try {
142
+ const data = await this.db.get(this.inputPath);
143
+ if (data && typeof data === "object") {
144
+ const savedState = data;
145
+ if (savedState.history) {
146
+ this.state.history = savedState.history;
147
+ }
148
+ if (savedState.lastOutput !== void 0) {
149
+ this.state.lastOutput = savedState.lastOutput;
150
+ }
151
+ if (savedState.cwd) {
152
+ this.state.cwd = savedState.cwd;
153
+ }
154
+ if (savedState.env) {
155
+ this.state.env = savedState.env;
156
+ }
157
+ }
158
+ } catch (error) {
159
+ console.warn("Failed to load from PluresDB:", error);
160
+ }
161
+ }
162
+ /**
163
+ * Subscribe to input changes from PluresDB
164
+ */
165
+ watchInput(callback) {
166
+ if (!this.db || !this.inputPath) return null;
167
+ return this.db.watch(this.inputPath, (data) => {
168
+ if (data && typeof data === "object" && "command" in data) {
169
+ callback(data.command);
170
+ }
171
+ });
172
+ }
173
+ };
174
+ function createTerminalAdapter(options) {
175
+ return new TerminalAdapter(options);
176
+ }
177
+ async function runTerminalCommand(nodeId, command, options) {
178
+ const adapter = createTerminalAdapter({
179
+ nodeId,
180
+ cwd: options?.cwd,
181
+ env: options?.env,
182
+ db: options?.db,
183
+ executor: options?.executor
184
+ });
185
+ return adapter.executeCommand(command);
186
+ }
187
+ function createMockExecutor(responses) {
188
+ return async (command) => {
189
+ const response = responses[command] || responses["*"] || {
190
+ output: `Mock output for: ${command}`,
191
+ exitCode: 0
192
+ };
193
+ return response;
194
+ };
195
+ }
196
+
197
+ export {
198
+ TerminalAdapter,
199
+ createTerminalAdapter,
200
+ runTerminalCommand,
201
+ createMockExecutor
202
+ };
@@ -0,0 +1,37 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __commonJS = (cb, mod) => function __require2() {
14
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30
+ mod
31
+ ));
32
+
33
+ export {
34
+ __require,
35
+ __commonJS,
36
+ __toESM
37
+ };