@plures/praxis 1.0.3 → 1.1.1
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.
- package/FRAMEWORK.md +55 -5
- package/README.md +162 -375
- package/core/codegen/docs-generator.ts +5 -2
- package/core/codegen/index.ts +1 -1
- package/core/db-adapter/index.ts +2 -2
- package/core/db-adapter/sync-engine.ts +17 -6
- package/core/logic-engine/engine.ts +1 -1
- package/core/logic-engine/index.ts +2 -2
- package/core/logic-engine/protocol.ts +1 -1
- package/core/logic-engine/psf-adapter.ts +8 -4
- package/core/logic-engine/rules.ts +1 -1
- package/core/schema-engine/compiler.ts +53 -11
- package/core/schema-engine/generator.ts +17 -7
- package/core/schema-engine/index.ts +2 -2
- package/core/schema-engine/psf.ts +12 -3
- package/core/schema-engine/types.ts +3 -11
- package/core/schema-engine/validator.ts +112 -22
- package/dist/browser/engine-BjdqxeXG.d.ts +333 -0
- package/dist/browser/index.d.ts +3004 -0
- package/dist/browser/index.js +2892 -0
- package/dist/{src → browser}/integrations/svelte.d.ts +19 -17
- package/dist/browser/integrations/svelte.js +298 -0
- package/dist/node/auth-STARLY7I.js +207 -0
- package/dist/node/build-Y7OT5VBF.js +144 -0
- package/dist/node/canvas-UERZHJYW.js +362 -0
- package/dist/node/chunk-DSDC2JWZ.js +256 -0
- package/dist/node/chunk-FXQZXAWF.js +175 -0
- package/dist/node/chunk-N5Y37EUV.js +202 -0
- package/dist/node/chunk-QGM4M3NI.js +37 -0
- package/dist/node/chunk-RJMWCNHR.js +175 -0
- package/dist/node/chunk-SRM3OPPM.js +404 -0
- package/dist/node/chunk-UATVJBNV.js +175 -0
- package/dist/node/chunk-UY7YEBE2.js +159 -0
- package/dist/node/chunk-XCY2VIFX.js +143 -0
- package/dist/node/chunk-YXH4Y7ZZ.js +349 -0
- package/dist/node/cli/index.cjs +215139 -0
- package/dist/node/cli/index.d.cts +1 -0
- package/dist/node/cli/index.d.ts +1 -0
- package/dist/node/cli/index.js +690 -0
- package/dist/node/cloud/index.cjs +1043 -0
- package/dist/node/cloud/index.d.cts +864 -0
- package/dist/node/cloud/index.d.ts +864 -0
- package/dist/node/cloud/index.js +456 -0
- package/dist/node/cloud-AXOK4PSN.js +212 -0
- package/dist/node/component.cjs +374 -0
- package/dist/node/component.d.cts +125 -0
- package/dist/{src/core/component/generator.d.ts → node/component.d.ts} +11 -8
- package/dist/node/component.js +9 -0
- package/dist/node/components/index.cjs +216 -0
- package/dist/node/components/index.d.cts +43 -0
- package/dist/{src → node}/components/index.d.ts +8 -8
- package/dist/node/components/index.js +7 -0
- package/dist/node/create-TRLSVCNQ.js +584 -0
- package/dist/node/dev-PMJZUYGE.js +65 -0
- package/dist/node/engine-1iqLe6_P.d.ts +214 -0
- package/dist/node/engine-CVJobhHm.d.cts +214 -0
- package/dist/node/index.cjs +3247 -0
- package/dist/node/index.d.cts +2579 -0
- package/dist/node/index.d.ts +2579 -0
- package/dist/node/index.js +2098 -0
- package/dist/node/integrations/svelte.cjs +330 -0
- package/dist/node/integrations/svelte.d.cts +309 -0
- package/dist/node/integrations/svelte.d.ts +309 -0
- package/dist/node/integrations/svelte.js +300 -0
- package/dist/node/orchestrate-737TCL5H.js +127 -0
- package/dist/{src/core/protocol.d.ts → node/protocol-Qek7ebBl.d.cts} +11 -10
- package/dist/node/protocol-Qek7ebBl.d.ts +122 -0
- package/dist/node/schema.cjs +200 -0
- package/dist/{src/core/schema/types.d.ts → node/schema.d.cts} +30 -29
- package/dist/node/schema.d.ts +371 -0
- package/dist/node/schema.js +9 -0
- package/dist/{src/runtime/terminal-adapter.d.ts → node/terminal-adapter-07HGftGQ.d.ts} +86 -11
- package/dist/node/terminal-adapter-XLtCjjb_.d.cts +231 -0
- package/dist/node/verify-QRYKRIDU.js +210960 -0
- package/docs/MONETIZATION.md +21 -16
- package/docs/REACTIVE_REDESIGN.md +132 -0
- package/docs/README.md +47 -36
- package/docs/SVELTE_INTEGRATION_STRATEGY.md +68 -0
- package/docs/TERMINAL_NODE.md +27 -24
- package/docs/core/building-extensions.md +58 -61
- package/docs/core/cli-usage.md +59 -59
- package/docs/core/code-canvas-sync.md +28 -16
- package/docs/core/logic-engine.md +77 -82
- package/docs/core/pluresdb-integration.md +29 -39
- package/docs/core/schema-model.md +66 -52
- package/docs/core/ui-generation.md +57 -49
- package/docs/core/what-is-praxis.md +32 -15
- package/docs/guides/canvas.md +21 -5
- package/docs/guides/getting-started.md +13 -7
- package/docs/guides/history-state-pattern.md +65 -51
- package/docs/guides/orchestration.md +46 -32
- package/docs/guides/parallel-state-pattern.md +56 -72
- package/docs/guides/svelte-integration.md +45 -53
- package/docs/tutorials/README.md +16 -0
- package/docs/tutorials/ecommerce-cart.md +177 -95
- package/docs/tutorials/first-app.md +26 -41
- package/docs/tutorials/form-builder.md +191 -138
- package/docs/tutorials/todo-pluresdb.md +71 -69
- package/package.json +58 -23
- package/src/__tests__/actors.test.ts +68 -68
- package/src/__tests__/billing.test.ts +32 -32
- package/src/__tests__/canvas-components.test.ts +94 -73
- package/src/__tests__/cli-create.test.ts +28 -28
- package/src/__tests__/cloud.test.ts +36 -36
- package/src/__tests__/code-canvas-integration.test.ts +132 -141
- package/src/__tests__/docs-generator.test.ts +3 -9
- package/src/__tests__/dsl.test.ts +58 -64
- package/src/__tests__/edge-cases.test.ts +106 -108
- package/src/__tests__/engine.test.ts +51 -25
- package/src/__tests__/generators.test.ts +42 -44
- package/src/__tests__/introspection.test.ts +104 -114
- package/src/__tests__/pluresdb.test.ts +189 -187
- package/src/__tests__/protocol.test.ts +15 -15
- package/src/__tests__/provisioning.test.ts +61 -61
- package/src/__tests__/schema.test.ts +7 -11
- package/src/__tests__/state-docs-integration.test.ts +162 -145
- package/src/__tests__/svelte-integration.test.ts +16 -19
- package/src/__tests__/tauri-integration.test.ts +149 -147
- package/src/__tests__/terminal-node.test.ts +12 -7
- package/src/__tests__/unum-integration.test.ts +68 -68
- package/src/adapters/cli.ts +21 -15
- package/src/cli/commands/auth.ts +82 -78
- package/src/cli/commands/build.ts +29 -27
- package/src/cli/commands/canvas.ts +338 -127
- package/src/cli/commands/cloud.ts +47 -47
- package/src/cli/commands/create.ts +59 -47
- package/src/cli/commands/dev.ts +12 -12
- package/src/cli/commands/generate.ts +29 -40
- package/src/cli/commands/orchestrate.ts +24 -24
- package/src/cli/commands/verify.ts +7 -8
- package/src/cli/index.ts +14 -10
- package/src/cloud/README.md +28 -15
- package/src/cloud/auth.ts +55 -70
- package/src/cloud/billing.ts +59 -58
- package/src/cloud/client.ts +29 -35
- package/src/cloud/index.ts +19 -40
- package/src/cloud/marketplace.ts +69 -78
- package/src/cloud/provisioning.ts +42 -51
- package/src/cloud/relay/endpoints.ts +30 -34
- package/src/cloud/relay/health/index.ts +1 -1
- package/src/cloud/relay/stats/index.ts +1 -1
- package/src/cloud/relay/sync/index.ts +1 -1
- package/src/cloud/relay/usage/index.ts +1 -1
- package/src/cloud/sponsors.ts +31 -34
- package/src/cloud/types.ts +4 -4
- package/src/components/README.md +1 -0
- package/src/components/index.ts +3 -4
- package/src/core/actors.ts +7 -7
- package/src/core/component/generator.ts +10 -28
- package/src/core/engine.ts +51 -24
- package/src/core/introspection.ts +37 -35
- package/src/core/logic/generator.ts +62 -62
- package/src/core/pluresdb/adapter.ts +8 -8
- package/src/core/pluresdb/generator.ts +39 -35
- package/src/core/pluresdb/index.ts +9 -12
- package/src/core/pluresdb/schema-registry.ts +22 -25
- package/src/core/pluresdb/store.ts +57 -57
- package/src/core/protocol.ts +14 -14
- package/src/core/reactive-engine.svelte.ts +65 -0
- package/src/core/reactive-engine.ts +67 -0
- package/src/core/rules.ts +4 -4
- package/src/core/schema/loader.common.ts +150 -0
- package/src/core/schema/loader.ts +19 -149
- package/src/core/schema/normalize.ts +34 -51
- package/src/core/schema/types.ts +47 -11
- package/src/dsl/index.ts +8 -8
- package/src/dsl.ts +11 -17
- package/src/examples/advanced-todo/README.md +58 -40
- package/src/examples/advanced-todo/index.ts +3 -3
- package/src/examples/auth-basic/index.ts +30 -30
- package/src/examples/cart/index.ts +50 -50
- package/src/examples/hero-ecommerce/index.ts +130 -157
- package/src/examples/svelte-counter/index.ts +22 -26
- package/src/flows.ts +6 -17
- package/src/index.browser.ts +204 -0
- package/src/index.ts +37 -42
- package/src/integrations/code-canvas.ts +237 -193
- package/src/integrations/pluresdb.ts +55 -35
- package/src/integrations/state-docs.ts +104 -104
- package/src/integrations/svelte.ts +35 -35
- package/src/integrations/tauri.ts +75 -73
- package/src/integrations/unum.ts +68 -61
- package/src/registry.ts +7 -14
- package/src/runtime/terminal-adapter.ts +31 -26
- package/src/step.ts +10 -16
- package/src/types.ts +1 -1
- package/templates/basic-app/README.md +6 -9
- package/templates/fullstack-app/README.md +10 -0
- package/dist/core/codegen/docs-generator.d.ts +0 -123
- package/dist/core/codegen/docs-generator.d.ts.map +0 -1
- package/dist/core/codegen/docs-generator.js +0 -674
- package/dist/core/codegen/docs-generator.js.map +0 -1
- package/dist/core/codegen/index.d.ts +0 -11
- package/dist/core/codegen/index.d.ts.map +0 -1
- package/dist/core/codegen/index.js +0 -13
- package/dist/core/codegen/index.js.map +0 -1
- package/dist/core/codegen/ts-generator.d.ts +0 -8
- package/dist/core/codegen/ts-generator.d.ts.map +0 -1
- package/dist/core/codegen/ts-generator.js +0 -8
- package/dist/core/codegen/ts-generator.js.map +0 -1
- package/dist/core/db-adapter/index.d.ts +0 -18
- package/dist/core/db-adapter/index.d.ts.map +0 -1
- package/dist/core/db-adapter/index.js +0 -23
- package/dist/core/db-adapter/index.js.map +0 -1
- package/dist/core/db-adapter/sync-engine.d.ts +0 -180
- package/dist/core/db-adapter/sync-engine.d.ts.map +0 -1
- package/dist/core/db-adapter/sync-engine.js +0 -342
- package/dist/core/db-adapter/sync-engine.js.map +0 -1
- package/dist/core/logic-engine/engine.d.ts +0 -8
- package/dist/core/logic-engine/engine.d.ts.map +0 -1
- package/dist/core/logic-engine/engine.js +0 -8
- package/dist/core/logic-engine/engine.js.map +0 -1
- package/dist/core/logic-engine/index.d.ts +0 -16
- package/dist/core/logic-engine/index.d.ts.map +0 -1
- package/dist/core/logic-engine/index.js +0 -16
- package/dist/core/logic-engine/index.js.map +0 -1
- package/dist/core/logic-engine/protocol.d.ts +0 -7
- package/dist/core/logic-engine/protocol.d.ts.map +0 -1
- package/dist/core/logic-engine/protocol.js +0 -7
- package/dist/core/logic-engine/protocol.js.map +0 -1
- package/dist/core/logic-engine/psf-adapter.d.ts +0 -88
- package/dist/core/logic-engine/psf-adapter.d.ts.map +0 -1
- package/dist/core/logic-engine/psf-adapter.js +0 -207
- package/dist/core/logic-engine/psf-adapter.js.map +0 -1
- package/dist/core/logic-engine/rules.d.ts +0 -7
- package/dist/core/logic-engine/rules.d.ts.map +0 -1
- package/dist/core/logic-engine/rules.js +0 -7
- package/dist/core/logic-engine/rules.js.map +0 -1
- package/dist/core/schema-engine/compiler.d.ts +0 -198
- package/dist/core/schema-engine/compiler.d.ts.map +0 -1
- package/dist/core/schema-engine/compiler.js +0 -262
- package/dist/core/schema-engine/compiler.js.map +0 -1
- package/dist/core/schema-engine/generator.d.ts +0 -115
- package/dist/core/schema-engine/generator.d.ts.map +0 -1
- package/dist/core/schema-engine/generator.js +0 -506
- package/dist/core/schema-engine/generator.js.map +0 -1
- package/dist/core/schema-engine/index.d.ts +0 -18
- package/dist/core/schema-engine/index.d.ts.map +0 -1
- package/dist/core/schema-engine/index.js +0 -18
- package/dist/core/schema-engine/index.js.map +0 -1
- package/dist/core/schema-engine/psf.d.ts +0 -612
- package/dist/core/schema-engine/psf.d.ts.map +0 -1
- package/dist/core/schema-engine/psf.js +0 -45
- package/dist/core/schema-engine/psf.js.map +0 -1
- package/dist/core/schema-engine/types.d.ts +0 -10
- package/dist/core/schema-engine/types.d.ts.map +0 -1
- package/dist/core/schema-engine/types.js +0 -7
- package/dist/core/schema-engine/types.js.map +0 -1
- package/dist/core/schema-engine/validator.d.ts +0 -140
- package/dist/core/schema-engine/validator.d.ts.map +0 -1
- package/dist/core/schema-engine/validator.js +0 -407
- package/dist/core/schema-engine/validator.js.map +0 -1
- package/dist/src/adapters/cli.d.ts +0 -43
- package/dist/src/adapters/cli.d.ts.map +0 -1
- package/dist/src/adapters/cli.js +0 -126
- package/dist/src/adapters/cli.js.map +0 -1
- package/dist/src/cli/commands/auth.d.ts +0 -26
- package/dist/src/cli/commands/auth.d.ts.map +0 -1
- package/dist/src/cli/commands/auth.js +0 -233
- package/dist/src/cli/commands/auth.js.map +0 -1
- package/dist/src/cli/commands/build.d.ts +0 -23
- package/dist/src/cli/commands/build.d.ts.map +0 -1
- package/dist/src/cli/commands/build.js +0 -162
- package/dist/src/cli/commands/build.js.map +0 -1
- package/dist/src/cli/commands/canvas.d.ts +0 -23
- package/dist/src/cli/commands/canvas.d.ts.map +0 -1
- package/dist/src/cli/commands/canvas.js +0 -215
- package/dist/src/cli/commands/canvas.js.map +0 -1
- package/dist/src/cli/commands/cloud.d.ts +0 -27
- package/dist/src/cli/commands/cloud.d.ts.map +0 -1
- package/dist/src/cli/commands/cloud.js +0 -232
- package/dist/src/cli/commands/cloud.js.map +0 -1
- package/dist/src/cli/commands/create.d.ts +0 -21
- package/dist/src/cli/commands/create.d.ts.map +0 -1
- package/dist/src/cli/commands/create.js +0 -621
- package/dist/src/cli/commands/create.js.map +0 -1
- package/dist/src/cli/commands/dev.d.ts +0 -21
- package/dist/src/cli/commands/dev.d.ts.map +0 -1
- package/dist/src/cli/commands/dev.js +0 -71
- package/dist/src/cli/commands/dev.js.map +0 -1
- package/dist/src/cli/commands/generate.d.ts +0 -25
- package/dist/src/cli/commands/generate.d.ts.map +0 -1
- package/dist/src/cli/commands/generate.js +0 -168
- package/dist/src/cli/commands/generate.js.map +0 -1
- package/dist/src/cli/commands/orchestrate.d.ts +0 -44
- package/dist/src/cli/commands/orchestrate.d.ts.map +0 -1
- package/dist/src/cli/commands/orchestrate.js +0 -150
- package/dist/src/cli/commands/orchestrate.js.map +0 -1
- package/dist/src/cli/commands/verify.d.ts +0 -10
- package/dist/src/cli/commands/verify.d.ts.map +0 -1
- package/dist/src/cli/commands/verify.js +0 -39
- package/dist/src/cli/commands/verify.js.map +0 -1
- package/dist/src/cli/index.d.ts +0 -8
- package/dist/src/cli/index.d.ts.map +0 -1
- package/dist/src/cli/index.js +0 -226
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cloud/auth.d.ts +0 -51
- package/dist/src/cloud/auth.d.ts.map +0 -1
- package/dist/src/cloud/auth.js +0 -194
- package/dist/src/cloud/auth.js.map +0 -1
- package/dist/src/cloud/billing.d.ts +0 -184
- package/dist/src/cloud/billing.d.ts.map +0 -1
- package/dist/src/cloud/billing.js +0 -179
- package/dist/src/cloud/billing.js.map +0 -1
- package/dist/src/cloud/client.d.ts +0 -39
- package/dist/src/cloud/client.d.ts.map +0 -1
- package/dist/src/cloud/client.js +0 -176
- package/dist/src/cloud/client.js.map +0 -1
- package/dist/src/cloud/index.d.ts +0 -44
- package/dist/src/cloud/index.d.ts.map +0 -1
- package/dist/src/cloud/index.js +0 -44
- package/dist/src/cloud/index.js.map +0 -1
- package/dist/src/cloud/marketplace.d.ts +0 -166
- package/dist/src/cloud/marketplace.d.ts.map +0 -1
- package/dist/src/cloud/marketplace.js +0 -159
- package/dist/src/cloud/marketplace.js.map +0 -1
- package/dist/src/cloud/provisioning.d.ts +0 -110
- package/dist/src/cloud/provisioning.d.ts.map +0 -1
- package/dist/src/cloud/provisioning.js +0 -148
- package/dist/src/cloud/provisioning.js.map +0 -1
- package/dist/src/cloud/relay/endpoints.d.ts +0 -62
- package/dist/src/cloud/relay/endpoints.d.ts.map +0 -1
- package/dist/src/cloud/relay/endpoints.js +0 -217
- package/dist/src/cloud/relay/endpoints.js.map +0 -1
- package/dist/src/cloud/relay/health/index.d.ts +0 -5
- package/dist/src/cloud/relay/health/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/health/index.js +0 -9
- package/dist/src/cloud/relay/health/index.js.map +0 -1
- package/dist/src/cloud/relay/stats/index.d.ts +0 -5
- package/dist/src/cloud/relay/stats/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/stats/index.js +0 -9
- package/dist/src/cloud/relay/stats/index.js.map +0 -1
- package/dist/src/cloud/relay/sync/index.d.ts +0 -5
- package/dist/src/cloud/relay/sync/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/sync/index.js +0 -9
- package/dist/src/cloud/relay/sync/index.js.map +0 -1
- package/dist/src/cloud/relay/usage/index.d.ts +0 -5
- package/dist/src/cloud/relay/usage/index.d.ts.map +0 -1
- package/dist/src/cloud/relay/usage/index.js +0 -9
- package/dist/src/cloud/relay/usage/index.js.map +0 -1
- package/dist/src/cloud/sponsors.d.ts +0 -81
- package/dist/src/cloud/sponsors.d.ts.map +0 -1
- package/dist/src/cloud/sponsors.js +0 -130
- package/dist/src/cloud/sponsors.js.map +0 -1
- package/dist/src/cloud/types.d.ts +0 -169
- package/dist/src/cloud/types.d.ts.map +0 -1
- package/dist/src/cloud/types.js +0 -7
- package/dist/src/cloud/types.js.map +0 -1
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/index.js +0 -17
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/core/actors.d.ts +0 -95
- package/dist/src/core/actors.d.ts.map +0 -1
- package/dist/src/core/actors.js +0 -158
- package/dist/src/core/actors.js.map +0 -1
- package/dist/src/core/component/generator.d.ts.map +0 -1
- package/dist/src/core/component/generator.js +0 -349
- package/dist/src/core/component/generator.js.map +0 -1
- package/dist/src/core/engine.d.ts +0 -92
- package/dist/src/core/engine.d.ts.map +0 -1
- package/dist/src/core/engine.js +0 -199
- package/dist/src/core/engine.js.map +0 -1
- package/dist/src/core/introspection.d.ts +0 -141
- package/dist/src/core/introspection.d.ts.map +0 -1
- package/dist/src/core/introspection.js +0 -208
- package/dist/src/core/introspection.js.map +0 -1
- package/dist/src/core/logic/generator.d.ts +0 -76
- package/dist/src/core/logic/generator.d.ts.map +0 -1
- package/dist/src/core/logic/generator.js +0 -370
- package/dist/src/core/logic/generator.js.map +0 -1
- package/dist/src/core/pluresdb/adapter.d.ts +0 -72
- package/dist/src/core/pluresdb/adapter.d.ts.map +0 -1
- package/dist/src/core/pluresdb/adapter.js +0 -73
- package/dist/src/core/pluresdb/adapter.js.map +0 -1
- package/dist/src/core/pluresdb/generator.d.ts +0 -58
- package/dist/src/core/pluresdb/generator.d.ts.map +0 -1
- package/dist/src/core/pluresdb/generator.js +0 -191
- package/dist/src/core/pluresdb/generator.js.map +0 -1
- package/dist/src/core/pluresdb/index.d.ts +0 -15
- package/dist/src/core/pluresdb/index.d.ts.map +0 -1
- package/dist/src/core/pluresdb/index.js +0 -11
- package/dist/src/core/pluresdb/index.js.map +0 -1
- package/dist/src/core/pluresdb/schema-registry.d.ts +0 -104
- package/dist/src/core/pluresdb/schema-registry.d.ts.map +0 -1
- package/dist/src/core/pluresdb/schema-registry.js +0 -130
- package/dist/src/core/pluresdb/schema-registry.js.map +0 -1
- package/dist/src/core/pluresdb/store.d.ts +0 -199
- package/dist/src/core/pluresdb/store.d.ts.map +0 -1
- package/dist/src/core/pluresdb/store.js +0 -344
- package/dist/src/core/pluresdb/store.js.map +0 -1
- package/dist/src/core/protocol.d.ts.map +0 -1
- package/dist/src/core/protocol.js +0 -46
- package/dist/src/core/protocol.js.map +0 -1
- package/dist/src/core/rules.d.ts +0 -120
- package/dist/src/core/rules.d.ts.map +0 -1
- package/dist/src/core/rules.js +0 -81
- package/dist/src/core/rules.js.map +0 -1
- package/dist/src/core/schema/loader.d.ts +0 -47
- package/dist/src/core/schema/loader.d.ts.map +0 -1
- package/dist/src/core/schema/loader.js +0 -189
- package/dist/src/core/schema/loader.js.map +0 -1
- package/dist/src/core/schema/normalize.d.ts +0 -72
- package/dist/src/core/schema/normalize.d.ts.map +0 -1
- package/dist/src/core/schema/normalize.js +0 -190
- package/dist/src/core/schema/normalize.js.map +0 -1
- package/dist/src/core/schema/types.d.ts.map +0 -1
- package/dist/src/core/schema/types.js +0 -161
- package/dist/src/core/schema/types.js.map +0 -1
- package/dist/src/dsl/index.d.ts +0 -152
- package/dist/src/dsl/index.d.ts.map +0 -1
- package/dist/src/dsl/index.js +0 -132
- package/dist/src/dsl/index.js.map +0 -1
- package/dist/src/dsl.d.ts +0 -124
- package/dist/src/dsl.d.ts.map +0 -1
- package/dist/src/dsl.js +0 -130
- package/dist/src/dsl.js.map +0 -1
- package/dist/src/examples/advanced-todo/index.d.ts +0 -55
- package/dist/src/examples/advanced-todo/index.d.ts.map +0 -1
- package/dist/src/examples/advanced-todo/index.js +0 -222
- package/dist/src/examples/advanced-todo/index.js.map +0 -1
- package/dist/src/examples/auth-basic/index.d.ts +0 -17
- package/dist/src/examples/auth-basic/index.d.ts.map +0 -1
- package/dist/src/examples/auth-basic/index.js +0 -122
- package/dist/src/examples/auth-basic/index.js.map +0 -1
- package/dist/src/examples/cart/index.d.ts +0 -19
- package/dist/src/examples/cart/index.d.ts.map +0 -1
- package/dist/src/examples/cart/index.js +0 -202
- package/dist/src/examples/cart/index.js.map +0 -1
- package/dist/src/examples/hero-ecommerce/index.d.ts +0 -39
- package/dist/src/examples/hero-ecommerce/index.d.ts.map +0 -1
- package/dist/src/examples/hero-ecommerce/index.js +0 -506
- package/dist/src/examples/hero-ecommerce/index.js.map +0 -1
- package/dist/src/examples/svelte-counter/index.d.ts +0 -31
- package/dist/src/examples/svelte-counter/index.d.ts.map +0 -1
- package/dist/src/examples/svelte-counter/index.js +0 -123
- package/dist/src/examples/svelte-counter/index.js.map +0 -1
- package/dist/src/flows.d.ts +0 -125
- package/dist/src/flows.d.ts.map +0 -1
- package/dist/src/flows.js +0 -160
- package/dist/src/flows.js.map +0 -1
- package/dist/src/index.d.ts +0 -77
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -64
- package/dist/src/index.js.map +0 -1
- package/dist/src/integrations/code-canvas.d.ts +0 -265
- package/dist/src/integrations/code-canvas.d.ts.map +0 -1
- package/dist/src/integrations/code-canvas.js +0 -451
- package/dist/src/integrations/code-canvas.js.map +0 -1
- package/dist/src/integrations/pluresdb.d.ts +0 -117
- package/dist/src/integrations/pluresdb.d.ts.map +0 -1
- package/dist/src/integrations/pluresdb.js +0 -117
- package/dist/src/integrations/pluresdb.js.map +0 -1
- package/dist/src/integrations/state-docs.d.ts +0 -191
- package/dist/src/integrations/state-docs.d.ts.map +0 -1
- package/dist/src/integrations/state-docs.js +0 -515
- package/dist/src/integrations/state-docs.js.map +0 -1
- package/dist/src/integrations/svelte.d.ts.map +0 -1
- package/dist/src/integrations/svelte.js +0 -447
- package/dist/src/integrations/svelte.js.map +0 -1
- package/dist/src/integrations/tauri.d.ts +0 -360
- package/dist/src/integrations/tauri.d.ts.map +0 -1
- package/dist/src/integrations/tauri.js +0 -278
- package/dist/src/integrations/tauri.js.map +0 -1
- package/dist/src/integrations/unum.d.ts +0 -159
- package/dist/src/integrations/unum.d.ts.map +0 -1
- package/dist/src/integrations/unum.js +0 -240
- package/dist/src/integrations/unum.js.map +0 -1
- package/dist/src/registry.d.ts +0 -94
- package/dist/src/registry.d.ts.map +0 -1
- package/dist/src/registry.js +0 -181
- package/dist/src/registry.js.map +0 -1
- package/dist/src/runtime/terminal-adapter.d.ts.map +0 -1
- package/dist/src/runtime/terminal-adapter.js +0 -239
- package/dist/src/runtime/terminal-adapter.js.map +0 -1
- package/dist/src/step.d.ts +0 -34
- package/dist/src/step.d.ts.map +0 -1
- package/dist/src/step.js +0 -111
- package/dist/src/step.js.map +0 -1
- package/dist/src/types.d.ts +0 -63
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -6
- package/dist/src/types.js.map +0 -1
- package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts +0 -8
- package/dist/tools/ast-analyzer/src/ast-analyzer.d.ts.map +0 -1
- package/dist/tools/ast-analyzer/src/ast-analyzer.js +0 -119
- package/dist/tools/ast-analyzer/src/ast-analyzer.js.map +0 -1
- package/dist/tools/cli/commands/index.d.ts +0 -7
- package/dist/tools/cli/commands/index.d.ts.map +0 -1
- package/dist/tools/cli/commands/index.js +0 -7
- package/dist/tools/cli/commands/index.js.map +0 -1
- package/dist/tools/cli/index.d.ts +0 -8
- package/dist/tools/cli/index.d.ts.map +0 -1
- package/dist/tools/cli/index.js +0 -9
- package/dist/tools/cli/index.js.map +0 -1
- package/dist/tools/watcher/index.d.ts +0 -105
- package/dist/tools/watcher/index.d.ts.map +0 -1
- package/dist/tools/watcher/index.js +0 -213
- package/dist/tools/watcher/index.js.map +0 -1
- package/dist/ui/canvas/canvas-projection.d.ts +0 -78
- package/dist/ui/canvas/canvas-projection.d.ts.map +0 -1
- package/dist/ui/canvas/canvas-projection.js +0 -416
- package/dist/ui/canvas/canvas-projection.js.map +0 -1
- package/dist/ui/canvas/canvas-state.d.ts +0 -200
- package/dist/ui/canvas/canvas-state.d.ts.map +0 -1
- package/dist/ui/canvas/canvas-state.js +0 -464
- package/dist/ui/canvas/canvas-state.js.map +0 -1
- package/dist/ui/canvas/components/index.d.ts +0 -95
- package/dist/ui/canvas/components/index.d.ts.map +0 -1
- package/dist/ui/canvas/components/index.js +0 -19
- package/dist/ui/canvas/components/index.js.map +0 -1
- package/dist/ui/canvas/index.d.ts +0 -32
- package/dist/ui/canvas/index.d.ts.map +0 -1
- package/dist/ui/canvas/index.js +0 -32
- package/dist/ui/canvas/index.js.map +0 -1
- package/dist/ui/canvas-inspector/src/server.d.ts +0 -2
- package/dist/ui/canvas-inspector/src/server.d.ts.map +0 -1
- package/dist/ui/canvas-inspector/src/server.js +0 -248
- package/dist/ui/canvas-inspector/src/server.js.map +0 -1
- package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts +0 -5
- package/dist/ui/canvas-inspector/src/verify-fsm-implementation.d.ts.map +0 -1
- package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js +0 -58
- package/dist/ui/canvas-inspector/src/verify-fsm-implementation.js.map +0 -1
- package/dist/ui/svelte-generator/index.d.ts +0 -9
- package/dist/ui/svelte-generator/index.d.ts.map +0 -1
- package/dist/ui/svelte-generator/index.js +0 -11
- package/dist/ui/svelte-generator/index.js.map +0 -1
- package/dist/ui/svelte-generator/psf-generator.d.ts +0 -128
- package/dist/ui/svelte-generator/psf-generator.d.ts.map +0 -1
- package/dist/ui/svelte-generator/psf-generator.js +0 -506
- package/dist/ui/svelte-generator/psf-generator.js.map +0 -1
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CodeCanvas Integration
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Integration with plures/code-canvas - A visual schema editor and FSM enforcement tool.
|
|
5
5
|
* Provides visual editing capabilities for Praxis schemas and logic flows.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* Features:
|
|
8
8
|
* - Visual Schema Editor: Drag-and-drop interface for schema design
|
|
9
9
|
* - FSM Visualization: Mermaid and DOT graph generation
|
|
10
10
|
* - State Lifecycle Management: Activity tracking and validation
|
|
11
11
|
* - Canvas Export/Import: YAML and JSON Canvas formats
|
|
12
12
|
* - Guardian Integration: Pre-commit validation and rules enforcement
|
|
13
|
-
*
|
|
13
|
+
*
|
|
14
14
|
* @see https://github.com/plures/code-canvas
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
PSFSchema,
|
|
19
|
+
PSFModel,
|
|
20
|
+
PSFComponent,
|
|
21
|
+
PSFFact,
|
|
22
|
+
PSFEvent,
|
|
23
|
+
PSFRule,
|
|
24
|
+
PSFConstraint,
|
|
25
|
+
PSFFlow,
|
|
26
|
+
} from '../../core/schema-engine/psf.js';
|
|
18
27
|
|
|
19
28
|
/**
|
|
20
29
|
* Canvas node representing a visual element
|
|
@@ -55,7 +64,7 @@ export interface CanvasEdge {
|
|
|
55
64
|
/** Edge label */
|
|
56
65
|
label?: string;
|
|
57
66
|
/** Edge type */
|
|
58
|
-
type?: 'dependency' | 'transition' | 'trigger' | 'reference';
|
|
67
|
+
type?: 'dependency' | 'transition' | 'trigger' | 'reference' | 'event';
|
|
59
68
|
/** Edge style */
|
|
60
69
|
style?: CanvasEdgeStyle;
|
|
61
70
|
}
|
|
@@ -106,6 +115,8 @@ export interface CanvasDocument {
|
|
|
106
115
|
nodes: CanvasNode[];
|
|
107
116
|
/** All edges in the canvas */
|
|
108
117
|
edges: CanvasEdge[];
|
|
118
|
+
/** Logic flows */
|
|
119
|
+
flows?: PSFFlow[];
|
|
109
120
|
/** Document metadata */
|
|
110
121
|
metadata?: {
|
|
111
122
|
created: number;
|
|
@@ -166,7 +177,7 @@ export interface CanvasEditorConfig {
|
|
|
166
177
|
/** Canvas document to edit */
|
|
167
178
|
document?: CanvasDocument;
|
|
168
179
|
/** Schema to visualize */
|
|
169
|
-
schema?:
|
|
180
|
+
schema?: PSFSchema;
|
|
170
181
|
/** Enable FSM validation */
|
|
171
182
|
enableFSM?: boolean;
|
|
172
183
|
/** Custom node styles by type */
|
|
@@ -225,21 +236,21 @@ export interface GuardianWarning {
|
|
|
225
236
|
|
|
226
237
|
/**
|
|
227
238
|
* Create a canvas document from a Praxis schema
|
|
228
|
-
*
|
|
239
|
+
*
|
|
229
240
|
* @example
|
|
230
241
|
* ```typescript
|
|
231
242
|
* import { schemaToCanvas } from '@plures/praxis/integrations/code-canvas';
|
|
232
|
-
*
|
|
243
|
+
*
|
|
233
244
|
* const canvas = schemaToCanvas(mySchema, {
|
|
234
245
|
* layout: 'hierarchical',
|
|
235
246
|
* });
|
|
236
|
-
*
|
|
247
|
+
*
|
|
237
248
|
* // Export to YAML
|
|
238
249
|
* const yaml = canvasToYaml(canvas);
|
|
239
250
|
* ```
|
|
240
251
|
*/
|
|
241
252
|
export function schemaToCanvas(
|
|
242
|
-
schema:
|
|
253
|
+
schema: PSFSchema,
|
|
243
254
|
_options: { layout?: 'hierarchical' | 'force' | 'grid' | 'circular' } = {}
|
|
244
255
|
): CanvasDocument {
|
|
245
256
|
// Note: layout option reserved for future auto-layout implementation
|
|
@@ -249,16 +260,21 @@ export function schemaToCanvas(
|
|
|
249
260
|
let yOffset = 0;
|
|
250
261
|
const xSpacing = 200;
|
|
251
262
|
const ySpacing = 100;
|
|
252
|
-
|
|
263
|
+
|
|
253
264
|
// Add model nodes
|
|
254
265
|
if (schema.models) {
|
|
255
|
-
schema.models.forEach((model, index) => {
|
|
266
|
+
schema.models.forEach((model: PSFModel, index: number) => {
|
|
267
|
+
const pos =
|
|
268
|
+
model.position && (model.position.x !== 0 || model.position.y !== 0)
|
|
269
|
+
? model.position
|
|
270
|
+
: { x: 50, y: yOffset + index * ySpacing };
|
|
271
|
+
|
|
256
272
|
const node: CanvasNode = {
|
|
257
|
-
id: `model-${nodeId++}`,
|
|
273
|
+
id: model.id || `model-${nodeId++}`,
|
|
258
274
|
type: 'model',
|
|
259
275
|
label: model.name,
|
|
260
|
-
x:
|
|
261
|
-
y:
|
|
276
|
+
x: pos.x,
|
|
277
|
+
y: pos.y,
|
|
262
278
|
width: 150,
|
|
263
279
|
height: 60,
|
|
264
280
|
data: model,
|
|
@@ -269,18 +285,23 @@ export function schemaToCanvas(
|
|
|
269
285
|
};
|
|
270
286
|
nodes.push(node);
|
|
271
287
|
});
|
|
272
|
-
yOffset +=
|
|
288
|
+
yOffset += schema.models.length * ySpacing + 50;
|
|
273
289
|
}
|
|
274
|
-
|
|
290
|
+
|
|
275
291
|
// Add component nodes
|
|
276
292
|
if (schema.components) {
|
|
277
|
-
schema.components.forEach((component, index) => {
|
|
293
|
+
schema.components.forEach((component: PSFComponent, index: number) => {
|
|
294
|
+
const pos =
|
|
295
|
+
component.position && (component.position.x !== 0 || component.position.y !== 0)
|
|
296
|
+
? component.position
|
|
297
|
+
: { x: 50 + xSpacing, y: yOffset + index * ySpacing };
|
|
298
|
+
|
|
278
299
|
const node: CanvasNode = {
|
|
279
|
-
id: `component-${nodeId++}`,
|
|
300
|
+
id: component.id || `component-${nodeId++}`,
|
|
280
301
|
type: 'component',
|
|
281
302
|
label: component.name,
|
|
282
|
-
x:
|
|
283
|
-
y:
|
|
303
|
+
x: pos.x,
|
|
304
|
+
y: pos.y,
|
|
284
305
|
width: 150,
|
|
285
306
|
height: 60,
|
|
286
307
|
data: component,
|
|
@@ -290,10 +311,10 @@ export function schemaToCanvas(
|
|
|
290
311
|
},
|
|
291
312
|
};
|
|
292
313
|
nodes.push(node);
|
|
293
|
-
|
|
314
|
+
|
|
294
315
|
// Add edges for component-model relationships
|
|
295
316
|
if (component.model) {
|
|
296
|
-
const modelNode = nodes.find(n => n.type === 'model' && n.label === component.model);
|
|
317
|
+
const modelNode = nodes.find((n) => n.type === 'model' && n.label === component.model);
|
|
297
318
|
if (modelNode) {
|
|
298
319
|
edges.push({
|
|
299
320
|
id: `edge-${edges.length}`,
|
|
@@ -305,83 +326,139 @@ export function schemaToCanvas(
|
|
|
305
326
|
}
|
|
306
327
|
}
|
|
307
328
|
});
|
|
308
|
-
yOffset +=
|
|
329
|
+
yOffset += schema.components.length * ySpacing + 50;
|
|
309
330
|
}
|
|
310
|
-
|
|
311
|
-
// Add
|
|
312
|
-
if (schema.
|
|
313
|
-
schema.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
label: rule.id,
|
|
362
|
-
x: 50 + (xSpacing * 4),
|
|
363
|
-
y: yOffset + (ruleIndex * ySpacing),
|
|
364
|
-
width: 150,
|
|
365
|
-
height: 50,
|
|
366
|
-
data: rule,
|
|
367
|
-
style: {
|
|
368
|
-
backgroundColor: '#e1f5fe',
|
|
369
|
-
borderColor: '#0288d1',
|
|
370
|
-
},
|
|
371
|
-
};
|
|
372
|
-
nodes.push(node);
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
yOffset += ((logic.rules?.length || 0) * ySpacing) + 30;
|
|
331
|
+
|
|
332
|
+
// Add events
|
|
333
|
+
if (schema.events) {
|
|
334
|
+
schema.events.forEach((event: PSFEvent, index: number) => {
|
|
335
|
+
const pos =
|
|
336
|
+
event.position && (event.position.x !== 0 || event.position.y !== 0)
|
|
337
|
+
? event.position
|
|
338
|
+
: { x: 50 + xSpacing * 2, y: yOffset + index * ySpacing };
|
|
339
|
+
|
|
340
|
+
const node: CanvasNode = {
|
|
341
|
+
id: event.id || `event-${nodeId++}`,
|
|
342
|
+
type: 'event',
|
|
343
|
+
label: event.tag,
|
|
344
|
+
x: pos.x,
|
|
345
|
+
y: pos.y,
|
|
346
|
+
width: 150,
|
|
347
|
+
height: 50,
|
|
348
|
+
data: event,
|
|
349
|
+
style: {
|
|
350
|
+
backgroundColor: '#fff3e0',
|
|
351
|
+
borderColor: '#f57c00',
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
nodes.push(node);
|
|
355
|
+
});
|
|
356
|
+
yOffset += schema.events.length * ySpacing + 30;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// Add facts
|
|
360
|
+
if (schema.facts) {
|
|
361
|
+
schema.facts.forEach((fact: PSFFact, index: number) => {
|
|
362
|
+
const pos =
|
|
363
|
+
fact.position && (fact.position.x !== 0 || fact.position.y !== 0)
|
|
364
|
+
? fact.position
|
|
365
|
+
: { x: 50 + xSpacing * 3, y: yOffset + index * ySpacing };
|
|
366
|
+
|
|
367
|
+
const node: CanvasNode = {
|
|
368
|
+
id: fact.id || `fact-${nodeId++}`,
|
|
369
|
+
type: 'fact',
|
|
370
|
+
label: fact.tag,
|
|
371
|
+
x: pos.x,
|
|
372
|
+
y: pos.y,
|
|
373
|
+
width: 150,
|
|
374
|
+
height: 50,
|
|
375
|
+
data: fact,
|
|
376
|
+
style: {
|
|
377
|
+
backgroundColor: '#fce4ec',
|
|
378
|
+
borderColor: '#c2185b',
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
nodes.push(node);
|
|
376
382
|
});
|
|
383
|
+
yOffset += schema.facts.length * ySpacing + 30;
|
|
377
384
|
}
|
|
378
|
-
|
|
385
|
+
|
|
386
|
+
// Add rules
|
|
387
|
+
if (schema.rules) {
|
|
388
|
+
schema.rules.forEach((rule: PSFRule, index: number) => {
|
|
389
|
+
const pos =
|
|
390
|
+
rule.position && (rule.position.x !== 0 || rule.position.y !== 0)
|
|
391
|
+
? rule.position
|
|
392
|
+
: { x: 50 + xSpacing * 4, y: yOffset + index * ySpacing };
|
|
393
|
+
|
|
394
|
+
const node: CanvasNode = {
|
|
395
|
+
id: rule.id || `rule-${nodeId++}`,
|
|
396
|
+
type: 'rule',
|
|
397
|
+
label: rule.id,
|
|
398
|
+
x: pos.x,
|
|
399
|
+
y: pos.y,
|
|
400
|
+
width: 150,
|
|
401
|
+
height: 50,
|
|
402
|
+
data: rule,
|
|
403
|
+
style: {
|
|
404
|
+
backgroundColor: '#e1f5fe',
|
|
405
|
+
borderColor: '#0288d1',
|
|
406
|
+
},
|
|
407
|
+
};
|
|
408
|
+
nodes.push(node);
|
|
409
|
+
|
|
410
|
+
// Add edges for rule triggers
|
|
411
|
+
if (rule.triggers) {
|
|
412
|
+
rule.triggers.forEach((trigger: string) => {
|
|
413
|
+
const eventNode = nodes.find((n) => n.type === 'event' && n.label === trigger);
|
|
414
|
+
if (eventNode) {
|
|
415
|
+
edges.push({
|
|
416
|
+
id: `edge-${edges.length}`,
|
|
417
|
+
source: eventNode.id,
|
|
418
|
+
target: node.id,
|
|
419
|
+
type: 'event',
|
|
420
|
+
label: 'triggers',
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
yOffset += schema.rules.length * ySpacing + 30;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// Add constraints
|
|
430
|
+
if (schema.constraints) {
|
|
431
|
+
schema.constraints.forEach((constraint: PSFConstraint, index: number) => {
|
|
432
|
+
const pos =
|
|
433
|
+
constraint.position && (constraint.position.x !== 0 || constraint.position.y !== 0)
|
|
434
|
+
? constraint.position
|
|
435
|
+
: { x: 50 + xSpacing * 5, y: yOffset + index * ySpacing };
|
|
436
|
+
|
|
437
|
+
const node: CanvasNode = {
|
|
438
|
+
id: constraint.id || `constraint-${nodeId++}`,
|
|
439
|
+
type: 'constraint',
|
|
440
|
+
label: constraint.id,
|
|
441
|
+
x: pos.x,
|
|
442
|
+
y: pos.y,
|
|
443
|
+
width: 150,
|
|
444
|
+
height: 50,
|
|
445
|
+
data: constraint,
|
|
446
|
+
style: {
|
|
447
|
+
backgroundColor: '#ffebee',
|
|
448
|
+
borderColor: '#c62828',
|
|
449
|
+
},
|
|
450
|
+
};
|
|
451
|
+
nodes.push(node);
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
|
|
379
455
|
return {
|
|
380
456
|
id: `canvas-${Date.now()}`,
|
|
381
457
|
name: schema.name || 'Praxis Schema',
|
|
382
|
-
version: schema
|
|
458
|
+
version: schema.$version || '1.0.0',
|
|
383
459
|
nodes,
|
|
384
460
|
edges,
|
|
461
|
+
flows: schema.flows || [],
|
|
385
462
|
metadata: {
|
|
386
463
|
created: Date.now(),
|
|
387
464
|
modified: Date.now(),
|
|
@@ -394,95 +471,64 @@ export function schemaToCanvas(
|
|
|
394
471
|
/**
|
|
395
472
|
* Convert a canvas document back to a Praxis schema
|
|
396
473
|
*/
|
|
397
|
-
export function canvasToSchema(canvas: CanvasDocument):
|
|
398
|
-
const models:
|
|
399
|
-
const components:
|
|
400
|
-
const
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
const
|
|
404
|
-
|
|
405
|
-
const rules: Array<{ id: string; description: string; on?: string[]; when?: string; then: string; priority?: number }> = [];
|
|
406
|
-
const constraints: Array<{ id: string; description: string; check: string; message: string }> = [];
|
|
407
|
-
|
|
474
|
+
export function canvasToSchema(canvas: CanvasDocument): PSFSchema {
|
|
475
|
+
const models: PSFModel[] = [];
|
|
476
|
+
const components: PSFComponent[] = [];
|
|
477
|
+
const events: PSFEvent[] = [];
|
|
478
|
+
const facts: PSFFact[] = [];
|
|
479
|
+
const rules: PSFRule[] = [];
|
|
480
|
+
const constraints: PSFConstraint[] = [];
|
|
481
|
+
|
|
408
482
|
for (const node of canvas.nodes) {
|
|
483
|
+
const position = { x: node.x, y: node.y };
|
|
484
|
+
|
|
409
485
|
switch (node.type) {
|
|
410
486
|
case 'model':
|
|
411
487
|
if (node.data) {
|
|
412
|
-
models.push(node.data as
|
|
488
|
+
models.push({ ...(node.data as PSFModel), position });
|
|
413
489
|
}
|
|
414
490
|
break;
|
|
415
491
|
case 'component':
|
|
416
492
|
if (node.data) {
|
|
417
|
-
components.push(node.data as
|
|
493
|
+
components.push({ ...(node.data as PSFComponent), position });
|
|
418
494
|
}
|
|
419
495
|
break;
|
|
420
496
|
case 'event':
|
|
421
497
|
if (node.data) {
|
|
422
|
-
|
|
423
|
-
events.push({
|
|
424
|
-
tag: eventData.tag,
|
|
425
|
-
payload: eventData.payload || {},
|
|
426
|
-
description: eventData.description,
|
|
427
|
-
});
|
|
498
|
+
events.push({ ...(node.data as PSFEvent), position });
|
|
428
499
|
}
|
|
429
500
|
break;
|
|
430
501
|
case 'fact':
|
|
431
502
|
if (node.data) {
|
|
432
|
-
|
|
433
|
-
facts.push({
|
|
434
|
-
tag: factData.tag,
|
|
435
|
-
payload: factData.payload || {},
|
|
436
|
-
description: factData.description,
|
|
437
|
-
});
|
|
503
|
+
facts.push({ ...(node.data as PSFFact), position });
|
|
438
504
|
}
|
|
439
505
|
break;
|
|
440
506
|
case 'rule':
|
|
441
507
|
if (node.data) {
|
|
442
|
-
|
|
443
|
-
rules.push({
|
|
444
|
-
id: ruleData.id,
|
|
445
|
-
description: ruleData.description || '',
|
|
446
|
-
on: ruleData.on,
|
|
447
|
-
when: ruleData.when,
|
|
448
|
-
then: ruleData.then || '',
|
|
449
|
-
priority: ruleData.priority,
|
|
450
|
-
});
|
|
508
|
+
rules.push({ ...(node.data as PSFRule), position });
|
|
451
509
|
}
|
|
452
510
|
break;
|
|
453
511
|
case 'constraint':
|
|
454
512
|
if (node.data) {
|
|
455
|
-
|
|
456
|
-
constraints.push({
|
|
457
|
-
id: constraintData.id,
|
|
458
|
-
description: constraintData.description || '',
|
|
459
|
-
check: constraintData.check || 'true',
|
|
460
|
-
message: constraintData.message || '',
|
|
461
|
-
});
|
|
513
|
+
constraints.push({ ...(node.data as PSFConstraint), position });
|
|
462
514
|
}
|
|
463
515
|
break;
|
|
464
516
|
}
|
|
465
517
|
}
|
|
466
|
-
|
|
467
|
-
// Create logic definition if we have any logic elements
|
|
468
|
-
if (events.length > 0 || facts.length > 0 || rules.length > 0 || constraints.length > 0) {
|
|
469
|
-
logic.push({
|
|
470
|
-
id: 'canvas-logic',
|
|
471
|
-
description: 'Logic extracted from canvas',
|
|
472
|
-
events: events.length > 0 ? events : undefined,
|
|
473
|
-
facts: facts.length > 0 ? facts : undefined,
|
|
474
|
-
rules: rules.length > 0 ? rules : undefined,
|
|
475
|
-
constraints: constraints.length > 0 ? constraints : undefined,
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
|
|
518
|
+
|
|
479
519
|
return {
|
|
480
|
-
version:
|
|
520
|
+
$version: '1.0.0',
|
|
521
|
+
id: canvas.id,
|
|
481
522
|
name: canvas.name,
|
|
482
523
|
description: canvas.metadata?.description,
|
|
483
524
|
models,
|
|
484
525
|
components,
|
|
485
|
-
|
|
526
|
+
events,
|
|
527
|
+
facts,
|
|
528
|
+
rules,
|
|
529
|
+
constraints,
|
|
530
|
+
flows: canvas.flows || [],
|
|
531
|
+
metadata: canvas.metadata,
|
|
486
532
|
};
|
|
487
533
|
}
|
|
488
534
|
|
|
@@ -497,7 +543,7 @@ export function canvasToYaml(canvas: CanvasDocument): string {
|
|
|
497
543
|
'',
|
|
498
544
|
'nodes:',
|
|
499
545
|
];
|
|
500
|
-
|
|
546
|
+
|
|
501
547
|
for (const node of canvas.nodes) {
|
|
502
548
|
lines.push(` - id: "${node.id}"`);
|
|
503
549
|
lines.push(` type: "${node.type}"`);
|
|
@@ -511,7 +557,7 @@ export function canvasToYaml(canvas: CanvasDocument): string {
|
|
|
511
557
|
}
|
|
512
558
|
lines.push('');
|
|
513
559
|
}
|
|
514
|
-
|
|
560
|
+
|
|
515
561
|
lines.push('edges:');
|
|
516
562
|
for (const edge of canvas.edges) {
|
|
517
563
|
lines.push(` - id: "${edge.id}"`);
|
|
@@ -525,7 +571,7 @@ export function canvasToYaml(canvas: CanvasDocument): string {
|
|
|
525
571
|
}
|
|
526
572
|
lines.push('');
|
|
527
573
|
}
|
|
528
|
-
|
|
574
|
+
|
|
529
575
|
return lines.join('\n');
|
|
530
576
|
}
|
|
531
577
|
|
|
@@ -533,10 +579,8 @@ export function canvasToYaml(canvas: CanvasDocument): string {
|
|
|
533
579
|
* Export canvas to Mermaid diagram format
|
|
534
580
|
*/
|
|
535
581
|
export function canvasToMermaid(canvas: CanvasDocument): string {
|
|
536
|
-
const lines: string[] = [
|
|
537
|
-
|
|
538
|
-
];
|
|
539
|
-
|
|
582
|
+
const lines: string[] = ['graph TD'];
|
|
583
|
+
|
|
540
584
|
// Add node definitions with styling
|
|
541
585
|
for (const node of canvas.nodes) {
|
|
542
586
|
let shape: string;
|
|
@@ -564,21 +608,21 @@ export function canvasToMermaid(canvas: CanvasDocument): string {
|
|
|
564
608
|
}
|
|
565
609
|
lines.push(` ${node.id}${shape}`);
|
|
566
610
|
}
|
|
567
|
-
|
|
611
|
+
|
|
568
612
|
lines.push('');
|
|
569
|
-
|
|
613
|
+
|
|
570
614
|
// Add edges
|
|
571
615
|
for (const edge of canvas.edges) {
|
|
572
616
|
const label = edge.label ? `|${edge.label}|` : '';
|
|
573
617
|
lines.push(` ${edge.source} -->${label} ${edge.target}`);
|
|
574
618
|
}
|
|
575
|
-
|
|
619
|
+
|
|
576
620
|
return lines.join('\n');
|
|
577
621
|
}
|
|
578
622
|
|
|
579
623
|
/**
|
|
580
624
|
* Validate files against FSM lifecycle rules
|
|
581
|
-
*
|
|
625
|
+
*
|
|
582
626
|
* This provides integration with the CodeCanvas Guardian for pre-commit validation.
|
|
583
627
|
*/
|
|
584
628
|
export function validateWithGuardian(
|
|
@@ -588,9 +632,9 @@ export function validateWithGuardian(
|
|
|
588
632
|
): GuardianResult {
|
|
589
633
|
const errors: GuardianError[] = [];
|
|
590
634
|
const warnings: GuardianWarning[] = [];
|
|
591
|
-
|
|
635
|
+
|
|
592
636
|
// Check if activity is in a valid state
|
|
593
|
-
const currentState = lifecycle.find(s => s.id === activity.activity);
|
|
637
|
+
const currentState = lifecycle.find((s) => s.id === activity.activity);
|
|
594
638
|
if (!currentState) {
|
|
595
639
|
errors.push({
|
|
596
640
|
code: 'INVALID_ACTIVITY',
|
|
@@ -598,16 +642,16 @@ export function validateWithGuardian(
|
|
|
598
642
|
rule: 'lifecycle-state',
|
|
599
643
|
});
|
|
600
644
|
}
|
|
601
|
-
|
|
645
|
+
|
|
602
646
|
// Validate file access based on allowed paths
|
|
603
647
|
if (activity.allowedPaths) {
|
|
604
648
|
for (const file of files) {
|
|
605
|
-
const allowed = activity.allowedPaths.some(pattern => {
|
|
649
|
+
const allowed = activity.allowedPaths.some((pattern) => {
|
|
606
650
|
// Simple glob matching
|
|
607
651
|
const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
|
|
608
652
|
return regex.test(file);
|
|
609
653
|
});
|
|
610
|
-
|
|
654
|
+
|
|
611
655
|
if (!allowed) {
|
|
612
656
|
errors.push({
|
|
613
657
|
code: 'PATH_NOT_ALLOWED',
|
|
@@ -618,7 +662,7 @@ export function validateWithGuardian(
|
|
|
618
662
|
}
|
|
619
663
|
}
|
|
620
664
|
}
|
|
621
|
-
|
|
665
|
+
|
|
622
666
|
return {
|
|
623
667
|
valid: errors.length === 0,
|
|
624
668
|
errors,
|
|
@@ -630,7 +674,7 @@ export function validateWithGuardian(
|
|
|
630
674
|
|
|
631
675
|
/**
|
|
632
676
|
* Create a CodeCanvas editor instance
|
|
633
|
-
*
|
|
677
|
+
*
|
|
634
678
|
* Note: This is a placeholder for the visual editor integration.
|
|
635
679
|
* The actual visual editor requires a browser environment.
|
|
636
680
|
*/
|
|
@@ -640,28 +684,30 @@ export function createCanvasEditor(config: CanvasEditorConfig): {
|
|
|
640
684
|
removeNode: (id: string) => void;
|
|
641
685
|
addEdge: (edge: Omit<CanvasEdge, 'id'>) => CanvasEdge;
|
|
642
686
|
removeEdge: (id: string) => void;
|
|
643
|
-
toSchema: () =>
|
|
687
|
+
toSchema: () => PSFSchema;
|
|
644
688
|
toYaml: () => string;
|
|
645
689
|
toMermaid: () => string;
|
|
646
690
|
} {
|
|
647
|
-
const document =
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
691
|
+
const document =
|
|
692
|
+
config.document ||
|
|
693
|
+
(config.schema
|
|
694
|
+
? schemaToCanvas(config.schema, { layout: config.layout })
|
|
695
|
+
: {
|
|
696
|
+
id: `canvas-${Date.now()}`,
|
|
697
|
+
name: 'New Canvas',
|
|
698
|
+
version: '1.0.0',
|
|
699
|
+
nodes: [],
|
|
700
|
+
edges: [],
|
|
701
|
+
metadata: { created: Date.now(), modified: Date.now() },
|
|
702
|
+
viewport: { x: 0, y: 0, zoom: 1 },
|
|
703
|
+
});
|
|
704
|
+
|
|
659
705
|
let nodeIdCounter = document.nodes.length;
|
|
660
706
|
let edgeIdCounter = document.edges.length;
|
|
661
|
-
|
|
707
|
+
|
|
662
708
|
return {
|
|
663
709
|
document,
|
|
664
|
-
|
|
710
|
+
|
|
665
711
|
addNode(node: Omit<CanvasNode, 'id'>): CanvasNode {
|
|
666
712
|
const fullNode: CanvasNode = {
|
|
667
713
|
...node,
|
|
@@ -671,19 +717,17 @@ export function createCanvasEditor(config: CanvasEditorConfig): {
|
|
|
671
717
|
document.metadata!.modified = Date.now();
|
|
672
718
|
return fullNode;
|
|
673
719
|
},
|
|
674
|
-
|
|
720
|
+
|
|
675
721
|
removeNode(id: string): void {
|
|
676
|
-
const index = document.nodes.findIndex(n => n.id === id);
|
|
722
|
+
const index = document.nodes.findIndex((n) => n.id === id);
|
|
677
723
|
if (index !== -1) {
|
|
678
724
|
document.nodes.splice(index, 1);
|
|
679
725
|
// Also remove connected edges
|
|
680
|
-
document.edges = document.edges.filter(
|
|
681
|
-
e => e.source !== id && e.target !== id
|
|
682
|
-
);
|
|
726
|
+
document.edges = document.edges.filter((e) => e.source !== id && e.target !== id);
|
|
683
727
|
document.metadata!.modified = Date.now();
|
|
684
728
|
}
|
|
685
729
|
},
|
|
686
|
-
|
|
730
|
+
|
|
687
731
|
addEdge(edge: Omit<CanvasEdge, 'id'>): CanvasEdge {
|
|
688
732
|
const fullEdge: CanvasEdge = {
|
|
689
733
|
...edge,
|
|
@@ -693,23 +737,23 @@ export function createCanvasEditor(config: CanvasEditorConfig): {
|
|
|
693
737
|
document.metadata!.modified = Date.now();
|
|
694
738
|
return fullEdge;
|
|
695
739
|
},
|
|
696
|
-
|
|
740
|
+
|
|
697
741
|
removeEdge(id: string): void {
|
|
698
|
-
const index = document.edges.findIndex(e => e.id === id);
|
|
742
|
+
const index = document.edges.findIndex((e) => e.id === id);
|
|
699
743
|
if (index !== -1) {
|
|
700
744
|
document.edges.splice(index, 1);
|
|
701
745
|
document.metadata!.modified = Date.now();
|
|
702
746
|
}
|
|
703
747
|
},
|
|
704
|
-
|
|
705
|
-
toSchema():
|
|
748
|
+
|
|
749
|
+
toSchema(): PSFSchema {
|
|
706
750
|
return canvasToSchema(document);
|
|
707
751
|
},
|
|
708
|
-
|
|
752
|
+
|
|
709
753
|
toYaml(): string {
|
|
710
754
|
return canvasToYaml(document);
|
|
711
755
|
},
|
|
712
|
-
|
|
756
|
+
|
|
713
757
|
toMermaid(): string {
|
|
714
758
|
return canvasToMermaid(document);
|
|
715
759
|
},
|