@plures/praxis 0.2.1 → 1.0.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 (486) hide show
  1. package/README.md +188 -61
  2. package/core/codegen/docs-generator.ts +808 -0
  3. package/core/codegen/index.ts +27 -0
  4. package/core/codegen/ts-generator.ts +15 -0
  5. package/core/db-adapter/index.ts +52 -0
  6. package/core/db-adapter/sync-engine.ts +450 -0
  7. package/core/logic-engine/engine.ts +12 -0
  8. package/core/logic-engine/index.ts +16 -0
  9. package/core/logic-engine/protocol.ts +16 -0
  10. package/core/logic-engine/psf-adapter.ts +269 -0
  11. package/core/logic-engine/rules.ts +16 -0
  12. package/core/schema-engine/compiler.ts +431 -0
  13. package/core/schema-engine/generator.ts +635 -0
  14. package/core/schema-engine/index.ts +18 -0
  15. package/core/schema-engine/psf.ts +664 -0
  16. package/core/schema-engine/types.ts +63 -0
  17. package/core/schema-engine/validator.ts +541 -0
  18. package/dist/core/codegen/docs-generator.d.ts +123 -0
  19. package/dist/core/codegen/docs-generator.d.ts.map +1 -0
  20. package/dist/core/codegen/docs-generator.js +674 -0
  21. package/dist/core/codegen/docs-generator.js.map +1 -0
  22. package/dist/core/codegen/index.d.ts +11 -0
  23. package/dist/core/codegen/index.d.ts.map +1 -0
  24. package/dist/core/codegen/index.js +13 -0
  25. package/dist/core/codegen/index.js.map +1 -0
  26. package/dist/core/codegen/ts-generator.d.ts +8 -0
  27. package/dist/core/codegen/ts-generator.d.ts.map +1 -0
  28. package/dist/core/codegen/ts-generator.js +8 -0
  29. package/dist/core/codegen/ts-generator.js.map +1 -0
  30. package/dist/core/db-adapter/index.d.ts +18 -0
  31. package/dist/core/db-adapter/index.d.ts.map +1 -0
  32. package/dist/core/db-adapter/index.js +23 -0
  33. package/dist/core/db-adapter/index.js.map +1 -0
  34. package/dist/core/db-adapter/sync-engine.d.ts +180 -0
  35. package/dist/core/db-adapter/sync-engine.d.ts.map +1 -0
  36. package/dist/core/db-adapter/sync-engine.js +342 -0
  37. package/dist/core/db-adapter/sync-engine.js.map +1 -0
  38. package/dist/core/logic-engine/engine.d.ts +8 -0
  39. package/dist/core/logic-engine/engine.d.ts.map +1 -0
  40. package/dist/core/logic-engine/engine.js +8 -0
  41. package/dist/core/logic-engine/engine.js.map +1 -0
  42. package/dist/core/logic-engine/index.d.ts +16 -0
  43. package/dist/core/logic-engine/index.d.ts.map +1 -0
  44. package/dist/core/logic-engine/index.js +16 -0
  45. package/dist/core/logic-engine/index.js.map +1 -0
  46. package/dist/core/logic-engine/protocol.d.ts +7 -0
  47. package/dist/core/logic-engine/protocol.d.ts.map +1 -0
  48. package/dist/core/logic-engine/protocol.js +7 -0
  49. package/dist/core/logic-engine/protocol.js.map +1 -0
  50. package/dist/core/logic-engine/psf-adapter.d.ts +88 -0
  51. package/dist/core/logic-engine/psf-adapter.d.ts.map +1 -0
  52. package/dist/core/logic-engine/psf-adapter.js +207 -0
  53. package/dist/core/logic-engine/psf-adapter.js.map +1 -0
  54. package/dist/core/logic-engine/rules.d.ts +7 -0
  55. package/dist/core/logic-engine/rules.d.ts.map +1 -0
  56. package/dist/core/logic-engine/rules.js +7 -0
  57. package/dist/core/logic-engine/rules.js.map +1 -0
  58. package/dist/core/schema-engine/compiler.d.ts +198 -0
  59. package/dist/core/schema-engine/compiler.d.ts.map +1 -0
  60. package/dist/core/schema-engine/compiler.js +262 -0
  61. package/dist/core/schema-engine/compiler.js.map +1 -0
  62. package/dist/core/schema-engine/generator.d.ts +115 -0
  63. package/dist/core/schema-engine/generator.d.ts.map +1 -0
  64. package/dist/core/schema-engine/generator.js +506 -0
  65. package/dist/core/schema-engine/generator.js.map +1 -0
  66. package/dist/core/schema-engine/index.d.ts +18 -0
  67. package/dist/core/schema-engine/index.d.ts.map +1 -0
  68. package/dist/core/schema-engine/index.js +18 -0
  69. package/dist/core/schema-engine/index.js.map +1 -0
  70. package/dist/core/schema-engine/psf.d.ts +612 -0
  71. package/dist/core/schema-engine/psf.d.ts.map +1 -0
  72. package/dist/core/schema-engine/psf.js +45 -0
  73. package/dist/core/schema-engine/psf.js.map +1 -0
  74. package/dist/core/schema-engine/types.d.ts +10 -0
  75. package/dist/core/schema-engine/types.d.ts.map +1 -0
  76. package/dist/core/schema-engine/types.js +7 -0
  77. package/dist/core/schema-engine/types.js.map +1 -0
  78. package/dist/core/schema-engine/validator.d.ts +140 -0
  79. package/dist/core/schema-engine/validator.d.ts.map +1 -0
  80. package/dist/core/schema-engine/validator.js +407 -0
  81. package/dist/core/schema-engine/validator.js.map +1 -0
  82. package/dist/src/adapters/cli.d.ts.map +1 -0
  83. package/dist/src/adapters/cli.js.map +1 -0
  84. package/dist/src/cli/commands/auth.d.ts.map +1 -0
  85. package/dist/src/cli/commands/auth.js.map +1 -0
  86. package/dist/src/cli/commands/build.d.ts +23 -0
  87. package/dist/src/cli/commands/build.d.ts.map +1 -0
  88. package/dist/src/cli/commands/build.js +162 -0
  89. package/dist/src/cli/commands/build.js.map +1 -0
  90. package/dist/src/cli/commands/canvas.d.ts +23 -0
  91. package/dist/src/cli/commands/canvas.d.ts.map +1 -0
  92. package/dist/src/cli/commands/canvas.js +215 -0
  93. package/dist/src/cli/commands/canvas.js.map +1 -0
  94. package/dist/src/cli/commands/cloud.d.ts.map +1 -0
  95. package/dist/src/cli/commands/cloud.js.map +1 -0
  96. package/dist/src/cli/commands/create.d.ts +21 -0
  97. package/dist/src/cli/commands/create.d.ts.map +1 -0
  98. package/dist/src/cli/commands/create.js +621 -0
  99. package/dist/src/cli/commands/create.js.map +1 -0
  100. package/dist/src/cli/commands/dev.d.ts +21 -0
  101. package/dist/src/cli/commands/dev.d.ts.map +1 -0
  102. package/dist/src/cli/commands/dev.js +71 -0
  103. package/dist/src/cli/commands/dev.js.map +1 -0
  104. package/dist/src/cli/commands/generate.d.ts.map +1 -0
  105. package/dist/src/cli/commands/generate.js.map +1 -0
  106. package/dist/src/cli/commands/orchestrate.d.ts +44 -0
  107. package/dist/src/cli/commands/orchestrate.d.ts.map +1 -0
  108. package/dist/src/cli/commands/orchestrate.js +150 -0
  109. package/dist/src/cli/commands/orchestrate.js.map +1 -0
  110. package/dist/{cli → src/cli}/index.d.ts.map +1 -1
  111. package/dist/{cli → src/cli}/index.js +53 -21
  112. package/dist/src/cli/index.js.map +1 -0
  113. package/dist/src/cloud/auth.d.ts.map +1 -0
  114. package/dist/src/cloud/auth.js.map +1 -0
  115. package/dist/src/cloud/billing.d.ts.map +1 -0
  116. package/dist/src/cloud/billing.js.map +1 -0
  117. package/dist/src/cloud/client.d.ts.map +1 -0
  118. package/dist/src/cloud/client.js.map +1 -0
  119. package/dist/src/cloud/index.d.ts.map +1 -0
  120. package/dist/src/cloud/index.js.map +1 -0
  121. package/dist/src/cloud/marketplace.d.ts.map +1 -0
  122. package/dist/src/cloud/marketplace.js.map +1 -0
  123. package/dist/src/cloud/provisioning.d.ts.map +1 -0
  124. package/dist/src/cloud/provisioning.js.map +1 -0
  125. package/dist/src/cloud/relay/endpoints.d.ts.map +1 -0
  126. package/dist/src/cloud/relay/endpoints.js.map +1 -0
  127. package/dist/src/cloud/relay/health/index.d.ts.map +1 -0
  128. package/dist/src/cloud/relay/health/index.js.map +1 -0
  129. package/dist/src/cloud/relay/stats/index.d.ts.map +1 -0
  130. package/dist/src/cloud/relay/stats/index.js.map +1 -0
  131. package/dist/src/cloud/relay/sync/index.d.ts.map +1 -0
  132. package/dist/src/cloud/relay/sync/index.js.map +1 -0
  133. package/dist/src/cloud/relay/usage/index.d.ts.map +1 -0
  134. package/dist/src/cloud/relay/usage/index.js.map +1 -0
  135. package/dist/src/cloud/sponsors.d.ts.map +1 -0
  136. package/dist/src/cloud/sponsors.js.map +1 -0
  137. package/dist/src/cloud/types.d.ts.map +1 -0
  138. package/dist/src/cloud/types.js.map +1 -0
  139. package/dist/src/components/index.d.ts.map +1 -0
  140. package/dist/src/components/index.js.map +1 -0
  141. package/dist/src/core/actors.d.ts.map +1 -0
  142. package/dist/src/core/actors.js.map +1 -0
  143. package/dist/src/core/component/generator.d.ts.map +1 -0
  144. package/dist/{core → src/core}/component/generator.js +45 -3
  145. package/dist/src/core/component/generator.js.map +1 -0
  146. package/dist/src/core/engine.d.ts.map +1 -0
  147. package/dist/src/core/engine.js.map +1 -0
  148. package/dist/src/core/introspection.d.ts.map +1 -0
  149. package/dist/src/core/introspection.js.map +1 -0
  150. package/dist/src/core/logic/generator.d.ts.map +1 -0
  151. package/dist/{core → src/core}/logic/generator.js +35 -4
  152. package/dist/src/core/logic/generator.js.map +1 -0
  153. package/dist/src/core/pluresdb/adapter.d.ts +72 -0
  154. package/dist/src/core/pluresdb/adapter.d.ts.map +1 -0
  155. package/dist/src/core/pluresdb/adapter.js +73 -0
  156. package/dist/src/core/pluresdb/adapter.js.map +1 -0
  157. package/dist/src/core/pluresdb/generator.d.ts.map +1 -0
  158. package/dist/{core → src/core}/pluresdb/generator.js +33 -4
  159. package/dist/src/core/pluresdb/generator.js.map +1 -0
  160. package/dist/src/core/pluresdb/index.d.ts +15 -0
  161. package/dist/src/core/pluresdb/index.d.ts.map +1 -0
  162. package/dist/src/core/pluresdb/index.js +11 -0
  163. package/dist/src/core/pluresdb/index.js.map +1 -0
  164. package/dist/src/core/pluresdb/schema-registry.d.ts +104 -0
  165. package/dist/src/core/pluresdb/schema-registry.d.ts.map +1 -0
  166. package/dist/src/core/pluresdb/schema-registry.js +130 -0
  167. package/dist/src/core/pluresdb/schema-registry.js.map +1 -0
  168. package/dist/src/core/pluresdb/store.d.ts +199 -0
  169. package/dist/src/core/pluresdb/store.d.ts.map +1 -0
  170. package/dist/src/core/pluresdb/store.js +344 -0
  171. package/dist/src/core/pluresdb/store.js.map +1 -0
  172. package/dist/src/core/protocol.d.ts.map +1 -0
  173. package/dist/src/core/protocol.js.map +1 -0
  174. package/dist/src/core/rules.d.ts.map +1 -0
  175. package/dist/src/core/rules.js.map +1 -0
  176. package/dist/src/core/schema/loader.d.ts.map +1 -0
  177. package/dist/src/core/schema/loader.js.map +1 -0
  178. package/dist/src/core/schema/normalize.d.ts.map +1 -0
  179. package/dist/src/core/schema/normalize.js.map +1 -0
  180. package/dist/src/core/schema/types.d.ts.map +1 -0
  181. package/dist/src/core/schema/types.js.map +1 -0
  182. package/dist/src/dsl/index.d.ts.map +1 -0
  183. package/dist/src/dsl/index.js.map +1 -0
  184. package/dist/src/dsl.d.ts.map +1 -0
  185. package/dist/src/dsl.js.map +1 -0
  186. package/dist/src/examples/advanced-todo/index.d.ts.map +1 -0
  187. package/dist/src/examples/advanced-todo/index.js.map +1 -0
  188. package/dist/src/examples/auth-basic/index.d.ts.map +1 -0
  189. package/dist/src/examples/auth-basic/index.js.map +1 -0
  190. package/dist/src/examples/cart/index.d.ts.map +1 -0
  191. package/dist/src/examples/cart/index.js.map +1 -0
  192. package/dist/src/examples/hero-ecommerce/index.d.ts.map +1 -0
  193. package/dist/src/examples/hero-ecommerce/index.js.map +1 -0
  194. package/dist/src/examples/svelte-counter/index.d.ts.map +1 -0
  195. package/dist/src/examples/svelte-counter/index.js.map +1 -0
  196. package/dist/src/flows.d.ts.map +1 -0
  197. package/dist/src/flows.js.map +1 -0
  198. package/dist/{index.d.ts → src/index.d.ts} +12 -2
  199. package/dist/src/index.d.ts.map +1 -0
  200. package/dist/{index.js → src/index.js} +6 -1
  201. package/dist/src/index.js.map +1 -0
  202. package/dist/src/integrations/code-canvas.d.ts +265 -0
  203. package/dist/src/integrations/code-canvas.d.ts.map +1 -0
  204. package/dist/src/integrations/code-canvas.js +451 -0
  205. package/dist/src/integrations/code-canvas.js.map +1 -0
  206. package/dist/src/integrations/pluresdb.d.ts +117 -0
  207. package/dist/src/integrations/pluresdb.d.ts.map +1 -0
  208. package/dist/src/integrations/pluresdb.js +117 -0
  209. package/dist/src/integrations/pluresdb.js.map +1 -0
  210. package/dist/src/integrations/state-docs.d.ts +191 -0
  211. package/dist/src/integrations/state-docs.d.ts.map +1 -0
  212. package/dist/src/integrations/state-docs.js +515 -0
  213. package/dist/src/integrations/state-docs.js.map +1 -0
  214. package/dist/src/integrations/svelte.d.ts.map +1 -0
  215. package/dist/src/integrations/svelte.js.map +1 -0
  216. package/dist/src/integrations/tauri.d.ts +360 -0
  217. package/dist/src/integrations/tauri.d.ts.map +1 -0
  218. package/dist/src/integrations/tauri.js +278 -0
  219. package/dist/src/integrations/tauri.js.map +1 -0
  220. package/dist/src/integrations/unum.d.ts +159 -0
  221. package/dist/src/integrations/unum.d.ts.map +1 -0
  222. package/dist/src/integrations/unum.js +240 -0
  223. package/dist/src/integrations/unum.js.map +1 -0
  224. package/dist/src/registry.d.ts.map +1 -0
  225. package/dist/src/registry.js.map +1 -0
  226. package/dist/{runtime → src/runtime}/terminal-adapter.d.ts +58 -7
  227. package/dist/src/runtime/terminal-adapter.d.ts.map +1 -0
  228. package/dist/src/runtime/terminal-adapter.js +237 -0
  229. package/dist/src/runtime/terminal-adapter.js.map +1 -0
  230. package/dist/src/step.d.ts.map +1 -0
  231. package/dist/src/step.js.map +1 -0
  232. package/dist/src/types.d.ts.map +1 -0
  233. package/dist/{cloud → src}/types.js.map +1 -1
  234. package/dist/tools/cli/commands/index.d.ts +7 -0
  235. package/dist/tools/cli/commands/index.d.ts.map +1 -0
  236. package/dist/tools/cli/commands/index.js +7 -0
  237. package/dist/tools/cli/commands/index.js.map +1 -0
  238. package/dist/tools/cli/index.d.ts +8 -0
  239. package/dist/tools/cli/index.d.ts.map +1 -0
  240. package/dist/tools/cli/index.js +9 -0
  241. package/dist/tools/cli/index.js.map +1 -0
  242. package/dist/tools/watcher/index.d.ts +105 -0
  243. package/dist/tools/watcher/index.d.ts.map +1 -0
  244. package/dist/tools/watcher/index.js +213 -0
  245. package/dist/tools/watcher/index.js.map +1 -0
  246. package/dist/ui/canvas/canvas-projection.d.ts +78 -0
  247. package/dist/ui/canvas/canvas-projection.d.ts.map +1 -0
  248. package/dist/ui/canvas/canvas-projection.js +416 -0
  249. package/dist/ui/canvas/canvas-projection.js.map +1 -0
  250. package/dist/ui/canvas/canvas-state.d.ts +200 -0
  251. package/dist/ui/canvas/canvas-state.d.ts.map +1 -0
  252. package/dist/ui/canvas/canvas-state.js +464 -0
  253. package/dist/ui/canvas/canvas-state.js.map +1 -0
  254. package/dist/ui/canvas/components/index.d.ts +95 -0
  255. package/dist/ui/canvas/components/index.d.ts.map +1 -0
  256. package/dist/ui/canvas/components/index.js +19 -0
  257. package/dist/ui/canvas/components/index.js.map +1 -0
  258. package/dist/ui/canvas/index.d.ts +32 -0
  259. package/dist/ui/canvas/index.d.ts.map +1 -0
  260. package/dist/ui/canvas/index.js +32 -0
  261. package/dist/ui/canvas/index.js.map +1 -0
  262. package/dist/ui/svelte-generator/index.d.ts +9 -0
  263. package/dist/ui/svelte-generator/index.d.ts.map +1 -0
  264. package/dist/ui/svelte-generator/index.js +11 -0
  265. package/dist/ui/svelte-generator/index.js.map +1 -0
  266. package/dist/ui/svelte-generator/psf-generator.d.ts +128 -0
  267. package/dist/ui/svelte-generator/psf-generator.d.ts.map +1 -0
  268. package/dist/ui/svelte-generator/psf-generator.js +506 -0
  269. package/dist/ui/svelte-generator/psf-generator.js.map +1 -0
  270. package/docs/README.md +155 -0
  271. package/docs/core/building-extensions.md +553 -0
  272. package/docs/core/cli-usage.md +498 -0
  273. package/docs/core/code-canvas-sync.md +468 -0
  274. package/docs/core/logic-engine.md +566 -0
  275. package/docs/core/pluresdb-integration.md +646 -0
  276. package/docs/core/schema-model.md +414 -0
  277. package/docs/core/ui-generation.md +580 -0
  278. package/docs/core/what-is-praxis.md +240 -0
  279. package/docs/tutorials/README.md +84 -0
  280. package/docs/tutorials/ecommerce-cart.md +631 -0
  281. package/docs/tutorials/first-app.md +529 -0
  282. package/docs/tutorials/form-builder.md +620 -0
  283. package/docs/tutorials/todo-pluresdb.md +589 -0
  284. package/package.json +1 -1
  285. package/src/__tests__/canvas-components.test.ts +450 -0
  286. package/src/__tests__/cli-create.test.ts +178 -0
  287. package/src/__tests__/code-canvas-integration.test.ts +277 -0
  288. package/src/__tests__/docs-generator.test.ts +181 -0
  289. package/src/__tests__/generators.test.ts +3 -2
  290. package/src/__tests__/pluresdb.test.ts +457 -0
  291. package/src/__tests__/psf-schema-engine.test.ts +450 -0
  292. package/src/__tests__/state-docs-integration.test.ts +297 -0
  293. package/src/__tests__/tauri-integration.test.ts +298 -0
  294. package/src/__tests__/terminal-node.test.ts +1 -1
  295. package/src/__tests__/unum-integration.test.ts +142 -0
  296. package/src/cli/commands/build.ts +203 -0
  297. package/src/cli/commands/canvas.ts +246 -0
  298. package/src/cli/commands/create.ts +666 -0
  299. package/src/cli/commands/dev.ts +95 -0
  300. package/src/cli/commands/orchestrate.ts +212 -0
  301. package/src/cli/index.ts +48 -21
  302. package/src/core/component/generator.ts +45 -3
  303. package/src/core/logic/generator.ts +39 -4
  304. package/src/core/pluresdb/adapter.ts +117 -0
  305. package/src/core/pluresdb/generator.ts +33 -4
  306. package/src/core/pluresdb/index.ts +37 -0
  307. package/src/core/pluresdb/schema-registry.ts +162 -0
  308. package/src/core/pluresdb/store.ts +443 -0
  309. package/src/index.ts +109 -0
  310. package/src/integrations/code-canvas.ts +717 -0
  311. package/src/integrations/pluresdb.ts +140 -29
  312. package/src/integrations/state-docs.ts +710 -0
  313. package/src/integrations/tauri.ts +638 -0
  314. package/src/integrations/unum.ts +395 -0
  315. package/src/runtime/terminal-adapter.ts +178 -23
  316. package/dist/adapters/cli.d.ts.map +0 -1
  317. package/dist/adapters/cli.js.map +0 -1
  318. package/dist/cli/commands/auth.d.ts.map +0 -1
  319. package/dist/cli/commands/auth.js.map +0 -1
  320. package/dist/cli/commands/cloud.d.ts.map +0 -1
  321. package/dist/cli/commands/cloud.js.map +0 -1
  322. package/dist/cli/commands/generate.d.ts.map +0 -1
  323. package/dist/cli/commands/generate.js.map +0 -1
  324. package/dist/cli/index.js.map +0 -1
  325. package/dist/cloud/auth.d.ts.map +0 -1
  326. package/dist/cloud/auth.js.map +0 -1
  327. package/dist/cloud/billing.d.ts.map +0 -1
  328. package/dist/cloud/billing.js.map +0 -1
  329. package/dist/cloud/client.d.ts.map +0 -1
  330. package/dist/cloud/client.js.map +0 -1
  331. package/dist/cloud/index.d.ts.map +0 -1
  332. package/dist/cloud/index.js.map +0 -1
  333. package/dist/cloud/marketplace.d.ts.map +0 -1
  334. package/dist/cloud/marketplace.js.map +0 -1
  335. package/dist/cloud/provisioning.d.ts.map +0 -1
  336. package/dist/cloud/provisioning.js.map +0 -1
  337. package/dist/cloud/relay/endpoints.d.ts.map +0 -1
  338. package/dist/cloud/relay/endpoints.js.map +0 -1
  339. package/dist/cloud/relay/health/index.d.ts.map +0 -1
  340. package/dist/cloud/relay/health/index.js.map +0 -1
  341. package/dist/cloud/relay/stats/index.d.ts.map +0 -1
  342. package/dist/cloud/relay/stats/index.js.map +0 -1
  343. package/dist/cloud/relay/sync/index.d.ts.map +0 -1
  344. package/dist/cloud/relay/sync/index.js.map +0 -1
  345. package/dist/cloud/relay/usage/index.d.ts.map +0 -1
  346. package/dist/cloud/relay/usage/index.js.map +0 -1
  347. package/dist/cloud/sponsors.d.ts.map +0 -1
  348. package/dist/cloud/sponsors.js.map +0 -1
  349. package/dist/cloud/types.d.ts.map +0 -1
  350. package/dist/components/index.d.ts.map +0 -1
  351. package/dist/components/index.js.map +0 -1
  352. package/dist/core/actors.d.ts.map +0 -1
  353. package/dist/core/actors.js.map +0 -1
  354. package/dist/core/component/generator.d.ts.map +0 -1
  355. package/dist/core/component/generator.js.map +0 -1
  356. package/dist/core/engine.d.ts.map +0 -1
  357. package/dist/core/engine.js.map +0 -1
  358. package/dist/core/introspection.d.ts.map +0 -1
  359. package/dist/core/introspection.js.map +0 -1
  360. package/dist/core/logic/generator.d.ts.map +0 -1
  361. package/dist/core/logic/generator.js.map +0 -1
  362. package/dist/core/pluresdb/generator.d.ts.map +0 -1
  363. package/dist/core/pluresdb/generator.js.map +0 -1
  364. package/dist/core/protocol.d.ts.map +0 -1
  365. package/dist/core/protocol.js.map +0 -1
  366. package/dist/core/rules.d.ts.map +0 -1
  367. package/dist/core/rules.js.map +0 -1
  368. package/dist/core/schema/loader.d.ts.map +0 -1
  369. package/dist/core/schema/loader.js.map +0 -1
  370. package/dist/core/schema/normalize.d.ts.map +0 -1
  371. package/dist/core/schema/normalize.js.map +0 -1
  372. package/dist/core/schema/types.d.ts.map +0 -1
  373. package/dist/core/schema/types.js.map +0 -1
  374. package/dist/dsl/index.d.ts.map +0 -1
  375. package/dist/dsl/index.js.map +0 -1
  376. package/dist/dsl.d.ts.map +0 -1
  377. package/dist/dsl.js.map +0 -1
  378. package/dist/examples/advanced-todo/index.d.ts.map +0 -1
  379. package/dist/examples/advanced-todo/index.js.map +0 -1
  380. package/dist/examples/auth-basic/index.d.ts.map +0 -1
  381. package/dist/examples/auth-basic/index.js.map +0 -1
  382. package/dist/examples/cart/index.d.ts.map +0 -1
  383. package/dist/examples/cart/index.js.map +0 -1
  384. package/dist/examples/hero-ecommerce/index.d.ts.map +0 -1
  385. package/dist/examples/hero-ecommerce/index.js.map +0 -1
  386. package/dist/examples/svelte-counter/index.d.ts.map +0 -1
  387. package/dist/examples/svelte-counter/index.js.map +0 -1
  388. package/dist/flows.d.ts.map +0 -1
  389. package/dist/flows.js.map +0 -1
  390. package/dist/index.d.ts.map +0 -1
  391. package/dist/index.js.map +0 -1
  392. package/dist/integrations/pluresdb.d.ts +0 -56
  393. package/dist/integrations/pluresdb.d.ts.map +0 -1
  394. package/dist/integrations/pluresdb.js +0 -46
  395. package/dist/integrations/pluresdb.js.map +0 -1
  396. package/dist/integrations/svelte.d.ts.map +0 -1
  397. package/dist/integrations/svelte.js.map +0 -1
  398. package/dist/registry.d.ts.map +0 -1
  399. package/dist/registry.js.map +0 -1
  400. package/dist/runtime/terminal-adapter.d.ts.map +0 -1
  401. package/dist/runtime/terminal-adapter.js +0 -113
  402. package/dist/runtime/terminal-adapter.js.map +0 -1
  403. package/dist/step.d.ts.map +0 -1
  404. package/dist/step.js.map +0 -1
  405. package/dist/types.d.ts.map +0 -1
  406. package/dist/types.js.map +0 -1
  407. /package/dist/{adapters → src/adapters}/cli.d.ts +0 -0
  408. /package/dist/{adapters → src/adapters}/cli.js +0 -0
  409. /package/dist/{cli → src/cli}/commands/auth.d.ts +0 -0
  410. /package/dist/{cli → src/cli}/commands/auth.js +0 -0
  411. /package/dist/{cli → src/cli}/commands/cloud.d.ts +0 -0
  412. /package/dist/{cli → src/cli}/commands/cloud.js +0 -0
  413. /package/dist/{cli → src/cli}/commands/generate.d.ts +0 -0
  414. /package/dist/{cli → src/cli}/commands/generate.js +0 -0
  415. /package/dist/{cli → src/cli}/index.d.ts +0 -0
  416. /package/dist/{cloud → src/cloud}/auth.d.ts +0 -0
  417. /package/dist/{cloud → src/cloud}/auth.js +0 -0
  418. /package/dist/{cloud → src/cloud}/billing.d.ts +0 -0
  419. /package/dist/{cloud → src/cloud}/billing.js +0 -0
  420. /package/dist/{cloud → src/cloud}/client.d.ts +0 -0
  421. /package/dist/{cloud → src/cloud}/client.js +0 -0
  422. /package/dist/{cloud → src/cloud}/index.d.ts +0 -0
  423. /package/dist/{cloud → src/cloud}/index.js +0 -0
  424. /package/dist/{cloud → src/cloud}/marketplace.d.ts +0 -0
  425. /package/dist/{cloud → src/cloud}/marketplace.js +0 -0
  426. /package/dist/{cloud → src/cloud}/provisioning.d.ts +0 -0
  427. /package/dist/{cloud → src/cloud}/provisioning.js +0 -0
  428. /package/dist/{cloud → src/cloud}/relay/endpoints.d.ts +0 -0
  429. /package/dist/{cloud → src/cloud}/relay/endpoints.js +0 -0
  430. /package/dist/{cloud → src/cloud}/relay/health/index.d.ts +0 -0
  431. /package/dist/{cloud → src/cloud}/relay/health/index.js +0 -0
  432. /package/dist/{cloud → src/cloud}/relay/stats/index.d.ts +0 -0
  433. /package/dist/{cloud → src/cloud}/relay/stats/index.js +0 -0
  434. /package/dist/{cloud → src/cloud}/relay/sync/index.d.ts +0 -0
  435. /package/dist/{cloud → src/cloud}/relay/sync/index.js +0 -0
  436. /package/dist/{cloud → src/cloud}/relay/usage/index.d.ts +0 -0
  437. /package/dist/{cloud → src/cloud}/relay/usage/index.js +0 -0
  438. /package/dist/{cloud → src/cloud}/sponsors.d.ts +0 -0
  439. /package/dist/{cloud → src/cloud}/sponsors.js +0 -0
  440. /package/dist/{cloud → src/cloud}/types.d.ts +0 -0
  441. /package/dist/{cloud → src/cloud}/types.js +0 -0
  442. /package/dist/{components → src/components}/index.d.ts +0 -0
  443. /package/dist/{components → src/components}/index.js +0 -0
  444. /package/dist/{core → src/core}/actors.d.ts +0 -0
  445. /package/dist/{core → src/core}/actors.js +0 -0
  446. /package/dist/{core → src/core}/component/generator.d.ts +0 -0
  447. /package/dist/{core → src/core}/engine.d.ts +0 -0
  448. /package/dist/{core → src/core}/engine.js +0 -0
  449. /package/dist/{core → src/core}/introspection.d.ts +0 -0
  450. /package/dist/{core → src/core}/introspection.js +0 -0
  451. /package/dist/{core → src/core}/logic/generator.d.ts +0 -0
  452. /package/dist/{core → src/core}/pluresdb/generator.d.ts +0 -0
  453. /package/dist/{core → src/core}/protocol.d.ts +0 -0
  454. /package/dist/{core → src/core}/protocol.js +0 -0
  455. /package/dist/{core → src/core}/rules.d.ts +0 -0
  456. /package/dist/{core → src/core}/rules.js +0 -0
  457. /package/dist/{core → src/core}/schema/loader.d.ts +0 -0
  458. /package/dist/{core → src/core}/schema/loader.js +0 -0
  459. /package/dist/{core → src/core}/schema/normalize.d.ts +0 -0
  460. /package/dist/{core → src/core}/schema/normalize.js +0 -0
  461. /package/dist/{core → src/core}/schema/types.d.ts +0 -0
  462. /package/dist/{core → src/core}/schema/types.js +0 -0
  463. /package/dist/{dsl → src/dsl}/index.d.ts +0 -0
  464. /package/dist/{dsl → src/dsl}/index.js +0 -0
  465. /package/dist/{dsl.d.ts → src/dsl.d.ts} +0 -0
  466. /package/dist/{dsl.js → src/dsl.js} +0 -0
  467. /package/dist/{examples → src/examples}/advanced-todo/index.d.ts +0 -0
  468. /package/dist/{examples → src/examples}/advanced-todo/index.js +0 -0
  469. /package/dist/{examples → src/examples}/auth-basic/index.d.ts +0 -0
  470. /package/dist/{examples → src/examples}/auth-basic/index.js +0 -0
  471. /package/dist/{examples → src/examples}/cart/index.d.ts +0 -0
  472. /package/dist/{examples → src/examples}/cart/index.js +0 -0
  473. /package/dist/{examples → src/examples}/hero-ecommerce/index.d.ts +0 -0
  474. /package/dist/{examples → src/examples}/hero-ecommerce/index.js +0 -0
  475. /package/dist/{examples → src/examples}/svelte-counter/index.d.ts +0 -0
  476. /package/dist/{examples → src/examples}/svelte-counter/index.js +0 -0
  477. /package/dist/{flows.d.ts → src/flows.d.ts} +0 -0
  478. /package/dist/{flows.js → src/flows.js} +0 -0
  479. /package/dist/{integrations → src/integrations}/svelte.d.ts +0 -0
  480. /package/dist/{integrations → src/integrations}/svelte.js +0 -0
  481. /package/dist/{registry.d.ts → src/registry.d.ts} +0 -0
  482. /package/dist/{registry.js → src/registry.js} +0 -0
  483. /package/dist/{step.d.ts → src/step.d.ts} +0 -0
  484. /package/dist/{step.js → src/step.js} +0 -0
  485. /package/dist/{types.d.ts → src/types.d.ts} +0 -0
  486. /package/dist/{types.js → src/types.js} +0 -0
@@ -0,0 +1,674 @@
1
+ /**
2
+ * Documentation Generator
3
+ *
4
+ * Generates Markdown documentation from PSF schemas.
5
+ * Produces API docs, architecture diagrams, and user guides.
6
+ */
7
+ /**
8
+ * Documentation Generator class
9
+ */
10
+ export class DocsGenerator {
11
+ options;
12
+ constructor(options = {}) {
13
+ this.options = {
14
+ outputDir: options.outputDir || './docs',
15
+ includeDiagrams: options.includeDiagrams ?? true,
16
+ includeExamples: options.includeExamples ?? true,
17
+ includeApiReference: options.includeApiReference ?? true,
18
+ includeToc: options.includeToc ?? true,
19
+ format: options.format || 'markdown',
20
+ };
21
+ }
22
+ /**
23
+ * Generate all documentation from schema
24
+ */
25
+ generate(schema) {
26
+ const files = [];
27
+ const errors = [];
28
+ try {
29
+ // Generate overview
30
+ files.push(this.generateOverview(schema));
31
+ // Generate API reference
32
+ if (this.options.includeApiReference) {
33
+ files.push(this.generateApiReference(schema));
34
+ }
35
+ // Generate model docs
36
+ if (schema.models.length > 0) {
37
+ files.push(this.generateModelsDoc(schema.models));
38
+ }
39
+ // Generate component docs
40
+ if (schema.components.length > 0) {
41
+ files.push(this.generateComponentsDoc(schema.components));
42
+ }
43
+ // Generate flow docs
44
+ if (schema.flows.length > 0) {
45
+ files.push(this.generateFlowsDoc(schema.flows));
46
+ }
47
+ // Generate diagrams
48
+ if (this.options.includeDiagrams) {
49
+ files.push(this.generateDiagrams(schema));
50
+ }
51
+ // Generate index
52
+ files.push(this.generateIndex(schema, files));
53
+ }
54
+ catch (error) {
55
+ errors.push(error instanceof Error ? error.message : 'Unknown error');
56
+ }
57
+ return {
58
+ success: errors.length === 0,
59
+ files,
60
+ errors,
61
+ };
62
+ }
63
+ /**
64
+ * Generate overview document
65
+ */
66
+ generateOverview(schema) {
67
+ const lines = [];
68
+ lines.push(`# ${schema.name}`);
69
+ lines.push('');
70
+ if (schema.description) {
71
+ lines.push(schema.description);
72
+ lines.push('');
73
+ }
74
+ // Schema info
75
+ lines.push('## Schema Information');
76
+ lines.push('');
77
+ lines.push(`- **Version**: ${schema.$version}`);
78
+ lines.push(`- **ID**: ${schema.id}`);
79
+ if (schema.createdAt) {
80
+ lines.push(`- **Created**: ${new Date(schema.createdAt).toLocaleString()}`);
81
+ }
82
+ if (schema.modifiedAt) {
83
+ lines.push(`- **Last Modified**: ${new Date(schema.modifiedAt).toLocaleString()}`);
84
+ }
85
+ lines.push('');
86
+ // Quick stats
87
+ lines.push('## Overview');
88
+ lines.push('');
89
+ lines.push(`| Type | Count |`);
90
+ lines.push(`| ---- | ----- |`);
91
+ lines.push(`| Facts | ${schema.facts.length} |`);
92
+ lines.push(`| Events | ${schema.events.length} |`);
93
+ lines.push(`| Rules | ${schema.rules.length} |`);
94
+ lines.push(`| Constraints | ${schema.constraints.length} |`);
95
+ lines.push(`| Models | ${schema.models.length} |`);
96
+ lines.push(`| Components | ${schema.components.length} |`);
97
+ lines.push(`| Flows | ${schema.flows.length} |`);
98
+ lines.push('');
99
+ // Schema documentation if available
100
+ if (schema.docs) {
101
+ if (schema.docs.overview) {
102
+ lines.push('## About');
103
+ lines.push('');
104
+ lines.push(schema.docs.overview);
105
+ lines.push('');
106
+ }
107
+ if (schema.docs.gettingStarted) {
108
+ lines.push('## Getting Started');
109
+ lines.push('');
110
+ lines.push(schema.docs.gettingStarted);
111
+ lines.push('');
112
+ }
113
+ }
114
+ return {
115
+ path: `${this.options.outputDir}/overview.md`,
116
+ content: lines.join('\n'),
117
+ type: 'overview',
118
+ };
119
+ }
120
+ /**
121
+ * Generate API reference
122
+ */
123
+ generateApiReference(schema) {
124
+ const lines = [];
125
+ lines.push('# API Reference');
126
+ lines.push('');
127
+ if (this.options.includeToc) {
128
+ lines.push('## Table of Contents');
129
+ lines.push('');
130
+ lines.push('- [Facts](#facts)');
131
+ lines.push('- [Events](#events)');
132
+ lines.push('- [Rules](#rules)');
133
+ lines.push('- [Constraints](#constraints)');
134
+ lines.push('');
135
+ }
136
+ // Facts
137
+ lines.push('## Facts');
138
+ lines.push('');
139
+ if (schema.facts.length === 0) {
140
+ lines.push('No facts defined.');
141
+ }
142
+ else {
143
+ for (const fact of schema.facts) {
144
+ lines.push(this.generateFactDoc(fact));
145
+ }
146
+ }
147
+ lines.push('');
148
+ // Events
149
+ lines.push('## Events');
150
+ lines.push('');
151
+ if (schema.events.length === 0) {
152
+ lines.push('No events defined.');
153
+ }
154
+ else {
155
+ for (const event of schema.events) {
156
+ lines.push(this.generateEventDoc(event));
157
+ }
158
+ }
159
+ lines.push('');
160
+ // Rules
161
+ lines.push('## Rules');
162
+ lines.push('');
163
+ if (schema.rules.length === 0) {
164
+ lines.push('No rules defined.');
165
+ }
166
+ else {
167
+ for (const rule of schema.rules) {
168
+ lines.push(this.generateRuleDoc(rule));
169
+ }
170
+ }
171
+ lines.push('');
172
+ // Constraints
173
+ lines.push('## Constraints');
174
+ lines.push('');
175
+ if (schema.constraints.length === 0) {
176
+ lines.push('No constraints defined.');
177
+ }
178
+ else {
179
+ for (const constraint of schema.constraints) {
180
+ lines.push(this.generateConstraintDoc(constraint));
181
+ }
182
+ }
183
+ return {
184
+ path: `${this.options.outputDir}/api.md`,
185
+ content: lines.join('\n'),
186
+ type: 'api',
187
+ };
188
+ }
189
+ /**
190
+ * Generate fact documentation
191
+ */
192
+ generateFactDoc(fact) {
193
+ const lines = [];
194
+ lines.push(`### ${fact.tag}`);
195
+ lines.push('');
196
+ if (fact.description) {
197
+ lines.push(fact.description);
198
+ lines.push('');
199
+ }
200
+ if (fact.docs?.summary) {
201
+ lines.push(`> ${fact.docs.summary}`);
202
+ lines.push('');
203
+ }
204
+ // Payload schema
205
+ if (fact.payload && Object.keys(fact.payload.properties).length > 0) {
206
+ lines.push('**Payload**');
207
+ lines.push('');
208
+ lines.push('| Property | Type | Description |');
209
+ lines.push('| -------- | ---- | ----------- |');
210
+ for (const [name, prop] of Object.entries(fact.payload.properties)) {
211
+ const type = this.formatFieldType(prop.type);
212
+ const desc = prop.description || '-';
213
+ lines.push(`| \`${name}\` | \`${type}\` | ${desc} |`);
214
+ }
215
+ lines.push('');
216
+ }
217
+ if (this.options.includeExamples) {
218
+ lines.push('**Example**');
219
+ lines.push('');
220
+ lines.push('```typescript');
221
+ lines.push(`const fact = ${fact.tag}.create({`);
222
+ for (const [name, prop] of Object.entries(fact.payload.properties)) {
223
+ const example = this.getExampleValue(prop.type);
224
+ lines.push(` ${name}: ${example},`);
225
+ }
226
+ lines.push('});');
227
+ lines.push('```');
228
+ lines.push('');
229
+ }
230
+ return lines.join('\n');
231
+ }
232
+ /**
233
+ * Generate event documentation
234
+ */
235
+ generateEventDoc(event) {
236
+ const lines = [];
237
+ lines.push(`### ${event.tag}`);
238
+ lines.push('');
239
+ if (event.description) {
240
+ lines.push(event.description);
241
+ lines.push('');
242
+ }
243
+ if (event.docs?.summary) {
244
+ lines.push(`> ${event.docs.summary}`);
245
+ lines.push('');
246
+ }
247
+ // Payload schema
248
+ if (event.payload && Object.keys(event.payload.properties).length > 0) {
249
+ lines.push('**Payload**');
250
+ lines.push('');
251
+ lines.push('| Property | Type | Description |');
252
+ lines.push('| -------- | ---- | ----------- |');
253
+ for (const [name, prop] of Object.entries(event.payload.properties)) {
254
+ const type = this.formatFieldType(prop.type);
255
+ const desc = prop.description || '-';
256
+ lines.push(`| \`${name}\` | \`${type}\` | ${desc} |`);
257
+ }
258
+ lines.push('');
259
+ }
260
+ if (this.options.includeExamples) {
261
+ lines.push('**Example**');
262
+ lines.push('');
263
+ lines.push('```typescript');
264
+ lines.push(`const event = ${event.tag}.create({`);
265
+ for (const [name, prop] of Object.entries(event.payload.properties)) {
266
+ const example = this.getExampleValue(prop.type);
267
+ lines.push(` ${name}: ${example},`);
268
+ }
269
+ lines.push('});');
270
+ lines.push('```');
271
+ lines.push('');
272
+ }
273
+ return lines.join('\n');
274
+ }
275
+ /**
276
+ * Generate rule documentation
277
+ */
278
+ generateRuleDoc(rule) {
279
+ const lines = [];
280
+ lines.push(`### ${rule.name || rule.id}`);
281
+ lines.push('');
282
+ lines.push(`**ID**: \`${rule.id}\``);
283
+ lines.push('');
284
+ if (rule.description) {
285
+ lines.push(rule.description);
286
+ lines.push('');
287
+ }
288
+ if (rule.triggers && rule.triggers.length > 0) {
289
+ lines.push(`**Triggers**: ${rule.triggers.map((t) => `\`${t}\``).join(', ')}`);
290
+ lines.push('');
291
+ }
292
+ if (rule.priority !== undefined) {
293
+ lines.push(`**Priority**: ${rule.priority}`);
294
+ lines.push('');
295
+ }
296
+ return lines.join('\n');
297
+ }
298
+ /**
299
+ * Generate constraint documentation
300
+ */
301
+ generateConstraintDoc(constraint) {
302
+ const lines = [];
303
+ lines.push(`### ${constraint.name || constraint.id}`);
304
+ lines.push('');
305
+ lines.push(`**ID**: \`${constraint.id}\``);
306
+ lines.push('');
307
+ if (constraint.description) {
308
+ lines.push(constraint.description);
309
+ lines.push('');
310
+ }
311
+ if (constraint.severity) {
312
+ lines.push(`**Severity**: ${constraint.severity}`);
313
+ lines.push('');
314
+ }
315
+ if (constraint.errorMessage) {
316
+ lines.push(`**Error Message**: "${constraint.errorMessage}"`);
317
+ lines.push('');
318
+ }
319
+ return lines.join('\n');
320
+ }
321
+ /**
322
+ * Generate models documentation
323
+ */
324
+ generateModelsDoc(models) {
325
+ const lines = [];
326
+ lines.push('# Data Models');
327
+ lines.push('');
328
+ for (const model of models) {
329
+ lines.push(`## ${model.name}`);
330
+ lines.push('');
331
+ if (model.description) {
332
+ lines.push(model.description);
333
+ lines.push('');
334
+ }
335
+ // Fields table
336
+ lines.push('### Fields');
337
+ lines.push('');
338
+ lines.push('| Field | Type | Optional | Description |');
339
+ lines.push('| ----- | ---- | -------- | ----------- |');
340
+ for (const field of model.fields) {
341
+ const type = this.formatFieldType(field.type);
342
+ const optional = field.optional ? 'Yes' : 'No';
343
+ const desc = field.description || '-';
344
+ lines.push(`| \`${field.name}\` | \`${type}\` | ${optional} | ${desc} |`);
345
+ }
346
+ lines.push('');
347
+ // Relationships
348
+ if (model.relationships && model.relationships.length > 0) {
349
+ lines.push('### Relationships');
350
+ lines.push('');
351
+ for (const rel of model.relationships) {
352
+ lines.push(`- **${rel.name}** → \`${rel.target}\` (${rel.type})`);
353
+ }
354
+ lines.push('');
355
+ }
356
+ // Indexes
357
+ if (model.indexes && model.indexes.length > 0) {
358
+ lines.push('### Indexes');
359
+ lines.push('');
360
+ for (const idx of model.indexes) {
361
+ const unique = idx.unique ? ' (unique)' : '';
362
+ lines.push(`- **${idx.name}**: ${idx.fields.join(', ')}${unique}`);
363
+ }
364
+ lines.push('');
365
+ }
366
+ }
367
+ return {
368
+ path: `${this.options.outputDir}/models.md`,
369
+ content: lines.join('\n'),
370
+ type: 'model',
371
+ };
372
+ }
373
+ /**
374
+ * Generate components documentation
375
+ */
376
+ generateComponentsDoc(components) {
377
+ const lines = [];
378
+ lines.push('# UI Components');
379
+ lines.push('');
380
+ for (const comp of components) {
381
+ lines.push(`## ${comp.name}`);
382
+ lines.push('');
383
+ lines.push(`**Type**: ${comp.type}`);
384
+ lines.push('');
385
+ if (comp.description) {
386
+ lines.push(comp.description);
387
+ lines.push('');
388
+ }
389
+ if (comp.model) {
390
+ lines.push(`**Bound Model**: \`${comp.model}\``);
391
+ lines.push('');
392
+ }
393
+ // Props
394
+ if (comp.props.length > 0) {
395
+ lines.push('### Props');
396
+ lines.push('');
397
+ lines.push('| Prop | Type | Required | Description |');
398
+ lines.push('| ---- | ---- | -------- | ----------- |');
399
+ for (const prop of comp.props) {
400
+ const required = prop.required ? 'Yes' : 'No';
401
+ const desc = prop.description || '-';
402
+ lines.push(`| \`${prop.name}\` | \`${prop.type}\` | ${required} | ${desc} |`);
403
+ }
404
+ lines.push('');
405
+ }
406
+ // Events
407
+ if (comp.events.length > 0) {
408
+ lines.push('### Events');
409
+ lines.push('');
410
+ for (const event of comp.events) {
411
+ lines.push(`- **${event.name}**${event.payload ? `: ${event.payload}` : ''}`);
412
+ if (event.description) {
413
+ lines.push(` - ${event.description}`);
414
+ }
415
+ }
416
+ lines.push('');
417
+ }
418
+ }
419
+ return {
420
+ path: `${this.options.outputDir}/components.md`,
421
+ content: lines.join('\n'),
422
+ type: 'component',
423
+ };
424
+ }
425
+ /**
426
+ * Generate flows documentation
427
+ */
428
+ generateFlowsDoc(flows) {
429
+ const lines = [];
430
+ lines.push('# Flows & Orchestration');
431
+ lines.push('');
432
+ for (const flow of flows) {
433
+ lines.push(`## ${flow.name}`);
434
+ lines.push('');
435
+ lines.push(`**Type**: ${flow.type}`);
436
+ lines.push('');
437
+ if (flow.description) {
438
+ lines.push(flow.description);
439
+ lines.push('');
440
+ }
441
+ if (flow.initial) {
442
+ lines.push(`**Initial Step**: \`${flow.initial}\``);
443
+ lines.push('');
444
+ }
445
+ // Steps
446
+ if (flow.steps.length > 0) {
447
+ lines.push('### Steps');
448
+ lines.push('');
449
+ for (const step of flow.steps) {
450
+ lines.push(`#### ${step.name || step.id}`);
451
+ lines.push('');
452
+ lines.push(`- **ID**: \`${step.id}\``);
453
+ lines.push(`- **Type**: ${step.type}`);
454
+ if (step.next) {
455
+ if (typeof step.next === 'string') {
456
+ lines.push(`- **Next**: \`${step.next}\``);
457
+ }
458
+ else {
459
+ lines.push('- **Next**:');
460
+ for (const [condition, target] of Object.entries(step.next)) {
461
+ lines.push(` - \`${condition}\` → \`${target}\``);
462
+ }
463
+ }
464
+ }
465
+ lines.push('');
466
+ }
467
+ }
468
+ }
469
+ return {
470
+ path: `${this.options.outputDir}/flows.md`,
471
+ content: lines.join('\n'),
472
+ type: 'flow',
473
+ };
474
+ }
475
+ /**
476
+ * Generate Mermaid diagrams
477
+ */
478
+ generateDiagrams(schema) {
479
+ const lines = [];
480
+ lines.push('# Architecture Diagrams');
481
+ lines.push('');
482
+ // Entity Relationship Diagram
483
+ lines.push('## Data Model Diagram');
484
+ lines.push('');
485
+ lines.push('```mermaid');
486
+ lines.push('erDiagram');
487
+ for (const model of schema.models) {
488
+ for (const rel of model.relationships || []) {
489
+ const cardinalityMap = {
490
+ 'one-to-one': '||--||',
491
+ 'one-to-many': '||--o{',
492
+ 'many-to-many': '}o--o{',
493
+ };
494
+ const cardinality = cardinalityMap[rel.type] || '||--||';
495
+ lines.push(` ${model.name} ${cardinality} ${rel.target} : "${rel.name}"`);
496
+ }
497
+ }
498
+ for (const model of schema.models) {
499
+ lines.push(` ${model.name} {`);
500
+ for (const field of model.fields) {
501
+ const type = this.formatFieldTypeSimple(field.type);
502
+ lines.push(` ${type} ${field.name}`);
503
+ }
504
+ lines.push(' }');
505
+ }
506
+ lines.push('```');
507
+ lines.push('');
508
+ // Event Flow Diagram
509
+ if (schema.rules.length > 0) {
510
+ lines.push('## Event Flow Diagram');
511
+ lines.push('');
512
+ lines.push('```mermaid');
513
+ lines.push('flowchart LR');
514
+ for (const rule of schema.rules) {
515
+ const ruleNode = `rule_${this.sanitizeId(rule.id)}`;
516
+ lines.push(` ${ruleNode}["${rule.name || rule.id}"]`);
517
+ if (rule.triggers) {
518
+ for (const trigger of rule.triggers) {
519
+ lines.push(` event_${trigger}((${trigger})) --> ${ruleNode}`);
520
+ }
521
+ }
522
+ }
523
+ lines.push('```');
524
+ lines.push('');
525
+ }
526
+ // Component Diagram
527
+ if (schema.components.length > 0) {
528
+ lines.push('## Component Diagram');
529
+ lines.push('');
530
+ lines.push('```mermaid');
531
+ lines.push('flowchart TB');
532
+ lines.push(' subgraph UI[UI Layer]');
533
+ for (const comp of schema.components) {
534
+ lines.push(` ${comp.name}[${comp.name}]`);
535
+ }
536
+ lines.push(' end');
537
+ lines.push(' subgraph Data[Data Layer]');
538
+ for (const model of schema.models) {
539
+ lines.push(` ${model.name}[(${model.name})]`);
540
+ }
541
+ lines.push(' end');
542
+ // Bindings
543
+ for (const comp of schema.components) {
544
+ if (comp.model) {
545
+ lines.push(` ${comp.name} --> ${comp.model}`);
546
+ }
547
+ }
548
+ lines.push('```');
549
+ lines.push('');
550
+ }
551
+ return {
552
+ path: `${this.options.outputDir}/diagrams.md`,
553
+ content: lines.join('\n'),
554
+ type: 'diagram',
555
+ };
556
+ }
557
+ /**
558
+ * Generate index document
559
+ */
560
+ generateIndex(schema, files) {
561
+ const lines = [];
562
+ lines.push(`# ${schema.name} Documentation`);
563
+ lines.push('');
564
+ if (schema.description) {
565
+ lines.push(schema.description);
566
+ lines.push('');
567
+ }
568
+ lines.push('## Documentation');
569
+ lines.push('');
570
+ const docLinks = {
571
+ overview: { title: 'Overview', desc: 'Project overview and introduction' },
572
+ api: { title: 'API Reference', desc: 'Facts, events, rules, and constraints' },
573
+ model: { title: 'Data Models', desc: 'Entity definitions and relationships' },
574
+ component: { title: 'UI Components', desc: 'Component documentation' },
575
+ flow: { title: 'Flows', desc: 'Orchestration and workflows' },
576
+ diagram: { title: 'Diagrams', desc: 'Architecture and flow diagrams' },
577
+ };
578
+ for (const file of files) {
579
+ if (file.type === 'index')
580
+ continue;
581
+ const link = docLinks[file.type];
582
+ if (link) {
583
+ const relativePath = file.path.replace(`${this.options.outputDir}/`, '');
584
+ lines.push(`- [${link.title}](${relativePath}) - ${link.desc}`);
585
+ }
586
+ }
587
+ lines.push('');
588
+ lines.push('---');
589
+ lines.push('');
590
+ lines.push(`Generated from PSF Schema v${schema.$version}`);
591
+ return {
592
+ path: `${this.options.outputDir}/README.md`,
593
+ content: lines.join('\n'),
594
+ type: 'index',
595
+ };
596
+ }
597
+ /**
598
+ * Format field type for display
599
+ */
600
+ formatFieldType(type) {
601
+ if (typeof type === 'string')
602
+ return type;
603
+ if ('array' in type)
604
+ return `${this.formatFieldType(type.array)}[]`;
605
+ if ('reference' in type)
606
+ return type.reference;
607
+ if ('enum' in type)
608
+ return type.enum.join(' | ');
609
+ if ('union' in type)
610
+ return type.union.map((t) => this.formatFieldType(t)).join(' | ');
611
+ return 'object';
612
+ }
613
+ /**
614
+ * Format field type simple (for Mermaid)
615
+ */
616
+ formatFieldTypeSimple(type) {
617
+ if (typeof type === 'string')
618
+ return type;
619
+ if ('array' in type)
620
+ return 'array';
621
+ if ('reference' in type)
622
+ return 'ref';
623
+ if ('enum' in type)
624
+ return 'enum';
625
+ return 'object';
626
+ }
627
+ /**
628
+ * Get example value for type
629
+ */
630
+ getExampleValue(type) {
631
+ if (typeof type === 'string') {
632
+ switch (type) {
633
+ case 'string':
634
+ return '"example"';
635
+ case 'number':
636
+ return '42';
637
+ case 'boolean':
638
+ return 'true';
639
+ case 'date':
640
+ case 'datetime':
641
+ return 'new Date()';
642
+ case 'uuid':
643
+ return '"550e8400-e29b-41d4-a716-446655440000"';
644
+ default:
645
+ return 'null';
646
+ }
647
+ }
648
+ if ('array' in type)
649
+ return '[]';
650
+ if ('enum' in type && type.enum.length > 0)
651
+ return `"${type.enum[0]}"`;
652
+ return '{}';
653
+ }
654
+ /**
655
+ * Sanitize ID for Mermaid
656
+ */
657
+ sanitizeId(id) {
658
+ return id.replace(/[^a-zA-Z0-9_]/g, '_');
659
+ }
660
+ }
661
+ /**
662
+ * Create a docs generator
663
+ */
664
+ export function createDocsGenerator(options) {
665
+ return new DocsGenerator(options);
666
+ }
667
+ /**
668
+ * Generate documentation from PSF schema (convenience function)
669
+ */
670
+ export function generateDocs(schema, options) {
671
+ const generator = new DocsGenerator(options);
672
+ return generator.generate(schema);
673
+ }
674
+ //# sourceMappingURL=docs-generator.js.map