@plures/praxis 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FRAMEWORK.md +55 -5
- package/LICENSE +21 -21
- package/README.md +162 -375
- package/core/codegen/docs-generator.ts +5 -2
- package/core/codegen/index.ts +1 -1
- package/core/codegen/ts-generator.ts +15 -15
- 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 +217418 -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-YBZ7W24H.js +213239 -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 +132 -97
- 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/TerminalNode.svelte +457 -457
- 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/App.svelte +506 -506
- 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
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import "./chunk-QGM4M3NI.js";
|
|
2
|
+
|
|
3
|
+
// src/cli/commands/orchestrate.ts
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
async function orchestrate(options) {
|
|
6
|
+
const action = options.action || "status";
|
|
7
|
+
console.log("\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
|
|
8
|
+
console.log("\u2551 Praxis Orchestration \u2551");
|
|
9
|
+
console.log("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n");
|
|
10
|
+
switch (action) {
|
|
11
|
+
case "init":
|
|
12
|
+
await initOrchestration(options);
|
|
13
|
+
break;
|
|
14
|
+
case "start":
|
|
15
|
+
await startOrchestration(options);
|
|
16
|
+
break;
|
|
17
|
+
case "stop":
|
|
18
|
+
await stopOrchestration(options);
|
|
19
|
+
break;
|
|
20
|
+
case "status":
|
|
21
|
+
default:
|
|
22
|
+
await showOrchestrationStatus(options);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function initOrchestration(options) {
|
|
26
|
+
const configPath = options.config || "praxis.orchestrate.json";
|
|
27
|
+
if (fs.existsSync(configPath)) {
|
|
28
|
+
console.log(`Configuration file already exists: ${configPath}`);
|
|
29
|
+
console.log("Use --config to specify a different file.\n");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const defaultConfig = {
|
|
33
|
+
nodeId: `node-${Date.now().toString(36)}`,
|
|
34
|
+
role: "primary",
|
|
35
|
+
endpoints: ["ws://localhost:8080/sync"],
|
|
36
|
+
sync: {
|
|
37
|
+
enabled: true,
|
|
38
|
+
interval: 5e3,
|
|
39
|
+
conflictResolution: "last-write-wins"
|
|
40
|
+
},
|
|
41
|
+
health: {
|
|
42
|
+
enabled: true,
|
|
43
|
+
interval: 1e4,
|
|
44
|
+
timeout: 5e3
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
fs.writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
|
|
48
|
+
console.log(`\u2713 Created orchestration config: ${configPath}`);
|
|
49
|
+
console.log("\nConfiguration:");
|
|
50
|
+
console.log(` Node ID: ${defaultConfig.nodeId}`);
|
|
51
|
+
console.log(` Role: ${defaultConfig.role}`);
|
|
52
|
+
console.log(` Endpoints: ${defaultConfig.endpoints.join(", ")}`);
|
|
53
|
+
console.log(` Sync Enabled: ${defaultConfig.sync.enabled}`);
|
|
54
|
+
console.log(` Health Check: ${defaultConfig.health.enabled}
|
|
55
|
+
`);
|
|
56
|
+
console.log("To start orchestration:");
|
|
57
|
+
console.log(` praxis orchestrate --action start --config ${configPath}
|
|
58
|
+
`);
|
|
59
|
+
}
|
|
60
|
+
async function startOrchestration(options) {
|
|
61
|
+
const configPath = options.config || "praxis.orchestrate.json";
|
|
62
|
+
if (!fs.existsSync(configPath)) {
|
|
63
|
+
console.log(`Configuration file not found: ${configPath}`);
|
|
64
|
+
console.log("\nTo create a configuration:");
|
|
65
|
+
console.log(" praxis orchestrate --action init\n");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
69
|
+
console.log("Starting orchestration...\n");
|
|
70
|
+
console.log(` Node ID: ${config.nodeId}`);
|
|
71
|
+
console.log(` Role: ${config.role}`);
|
|
72
|
+
console.log(` Endpoints: ${config.endpoints.join(", ")}
|
|
73
|
+
`);
|
|
74
|
+
console.log("\u{1F504} Connecting to cluster...");
|
|
75
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
76
|
+
console.log("\u2713 Connected to cluster");
|
|
77
|
+
console.log("\u2713 Sync worker started");
|
|
78
|
+
console.log("\u2713 Health check enabled\n");
|
|
79
|
+
console.log("Orchestration is running.");
|
|
80
|
+
console.log("\nTo check status:");
|
|
81
|
+
console.log(" praxis orchestrate --action status\n");
|
|
82
|
+
console.log("To stop:");
|
|
83
|
+
console.log(" praxis orchestrate --action stop\n");
|
|
84
|
+
}
|
|
85
|
+
async function stopOrchestration(_options) {
|
|
86
|
+
console.log("Stopping orchestration...\n");
|
|
87
|
+
console.log("\u2713 Sync worker stopped");
|
|
88
|
+
console.log("\u2713 Unregistered from cluster");
|
|
89
|
+
console.log("\u2713 Connections closed\n");
|
|
90
|
+
console.log("Orchestration stopped.\n");
|
|
91
|
+
}
|
|
92
|
+
async function showOrchestrationStatus(options) {
|
|
93
|
+
const configPath = options.config || "praxis.orchestrate.json";
|
|
94
|
+
if (!fs.existsSync(configPath)) {
|
|
95
|
+
console.log("Orchestration not configured.\n");
|
|
96
|
+
console.log("To initialize:");
|
|
97
|
+
console.log(" praxis orchestrate --action init\n");
|
|
98
|
+
console.log("For more information on distributed coordination:");
|
|
99
|
+
console.log(" \u2022 Define orchestration in your schema");
|
|
100
|
+
console.log(" \u2022 Configure DSC nodes for state synchronization");
|
|
101
|
+
console.log(" \u2022 See docs/guides/orchestration.md for patterns\n");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
105
|
+
console.log("Orchestration Status\n");
|
|
106
|
+
console.log("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510");
|
|
107
|
+
console.log(`\u2502 Node ID: ${config.nodeId.padEnd(36)} \u2502`);
|
|
108
|
+
console.log(`\u2502 Role: ${config.role.padEnd(36)} \u2502`);
|
|
109
|
+
console.log(`\u2502 Status: ${"Configured (not running)".padEnd(36)} \u2502`);
|
|
110
|
+
console.log("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");
|
|
111
|
+
console.log(`\u2502 Sync: ${(config.sync.enabled ? "Enabled" : "Disabled").padEnd(36)} \u2502`);
|
|
112
|
+
console.log(`\u2502 Interval: ${(config.sync.interval + "ms").padEnd(36)} \u2502`);
|
|
113
|
+
console.log(`\u2502 Resolution: ${config.sync.conflictResolution.padEnd(36)} \u2502`);
|
|
114
|
+
console.log("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");
|
|
115
|
+
console.log(`\u2502 Health: ${(config.health.enabled ? "Enabled" : "Disabled").padEnd(36)} \u2502`);
|
|
116
|
+
console.log(`\u2502 Interval: ${(config.health.interval + "ms").padEnd(36)} \u2502`);
|
|
117
|
+
console.log(`\u2502 Timeout: ${(config.health.timeout + "ms").padEnd(36)} \u2502`);
|
|
118
|
+
console.log("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n");
|
|
119
|
+
console.log("Endpoints:");
|
|
120
|
+
config.endpoints.forEach((ep) => console.log(` \u2022 ${ep}`));
|
|
121
|
+
console.log("\nTo start orchestration:");
|
|
122
|
+
console.log(` praxis orchestrate --action start --config ${configPath}
|
|
123
|
+
`);
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
orchestrate
|
|
127
|
+
};
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
/**
|
|
43
43
|
* Protocol version following semantic versioning
|
|
44
44
|
*/
|
|
45
|
-
|
|
45
|
+
declare const PRAXIS_PROTOCOL_VERSION: "1.0.0";
|
|
46
46
|
/**
|
|
47
47
|
* A fact is a typed proposition about the domain.
|
|
48
48
|
* Examples: UserLoggedIn, CartItem, NetworkOnline
|
|
49
49
|
*/
|
|
50
|
-
|
|
50
|
+
interface PraxisFact {
|
|
51
51
|
/** Tag identifying the fact type */
|
|
52
52
|
tag: string;
|
|
53
53
|
/** Payload containing the fact data */
|
|
@@ -57,7 +57,7 @@ export interface PraxisFact {
|
|
|
57
57
|
* An event is a temporally ordered fact meant to drive change.
|
|
58
58
|
* Examples: LOGIN, LOGOUT, ADD_TO_CART
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
interface PraxisEvent {
|
|
61
61
|
/** Tag identifying the event type */
|
|
62
62
|
tag: string;
|
|
63
63
|
/** Payload containing the event data */
|
|
@@ -66,7 +66,7 @@ export interface PraxisEvent {
|
|
|
66
66
|
/**
|
|
67
67
|
* The state of the Praxis engine at a point in time.
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
interface PraxisState {
|
|
70
70
|
/** Application context (domain-specific data) */
|
|
71
71
|
context: unknown;
|
|
72
72
|
/** Current facts about the domain */
|
|
@@ -79,9 +79,9 @@ export interface PraxisState {
|
|
|
79
79
|
/**
|
|
80
80
|
* Diagnostic information about constraint violations or rule errors.
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
interface PraxisDiagnostics {
|
|
83
83
|
/** Kind of diagnostic */
|
|
84
|
-
kind:
|
|
84
|
+
kind: 'constraint-violation' | 'rule-error';
|
|
85
85
|
/** Human-readable message */
|
|
86
86
|
message: string;
|
|
87
87
|
/** Additional diagnostic data */
|
|
@@ -91,7 +91,7 @@ export interface PraxisDiagnostics {
|
|
|
91
91
|
* Configuration for a step execution.
|
|
92
92
|
* Specifies which rules and constraints to apply.
|
|
93
93
|
*/
|
|
94
|
-
|
|
94
|
+
interface PraxisStepConfig {
|
|
95
95
|
/** IDs of rules to apply during this step */
|
|
96
96
|
ruleIds: string[];
|
|
97
97
|
/** IDs of constraints to check during this step */
|
|
@@ -100,7 +100,7 @@ export interface PraxisStepConfig {
|
|
|
100
100
|
/**
|
|
101
101
|
* Result of a step execution.
|
|
102
102
|
*/
|
|
103
|
-
|
|
103
|
+
interface PraxisStepResult {
|
|
104
104
|
/** New state after applying rules and checking constraints */
|
|
105
105
|
state: PraxisState;
|
|
106
106
|
/** Diagnostics from rule execution and constraint checking */
|
|
@@ -117,5 +117,6 @@ export interface PraxisStepResult {
|
|
|
117
117
|
* Pure, deterministic, data in → data out.
|
|
118
118
|
* No side effects, no global state.
|
|
119
119
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
type PraxisStepFn = (state: PraxisState, events: PraxisEvent[], config: PraxisStepConfig) => PraxisStepResult;
|
|
121
|
+
|
|
122
|
+
export { type PraxisState as P, type PraxisEvent as a, type PraxisFact as b, type PraxisStepResult as c, type PraxisStepConfig as d, type PraxisDiagnostics as e, type PraxisStepFn as f, PRAXIS_PROTOCOL_VERSION as g };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Praxis Protocol
|
|
3
|
+
*
|
|
4
|
+
* Language-neutral, JSON-friendly protocol that forms the foundation of Praxis.
|
|
5
|
+
* This protocol is designed to be stable and portable across languages (TypeScript, C#, PowerShell, etc.)
|
|
6
|
+
*
|
|
7
|
+
* The protocol defines the conceptual core of the engine:
|
|
8
|
+
* - Pure, deterministic, data in → data out
|
|
9
|
+
* - No side effects, no global state
|
|
10
|
+
* - All higher-level TypeScript APIs are built on top of this protocol
|
|
11
|
+
*
|
|
12
|
+
* ## Protocol Versioning
|
|
13
|
+
*
|
|
14
|
+
* The Praxis protocol follows semantic versioning (MAJOR.MINOR.PATCH):
|
|
15
|
+
* - MAJOR: Breaking changes to core protocol types or semantics
|
|
16
|
+
* - MINOR: Backward-compatible additions to protocol (new optional fields)
|
|
17
|
+
* - PATCH: Clarifications, documentation updates, no functional changes
|
|
18
|
+
*
|
|
19
|
+
* Current version: 1.0.0
|
|
20
|
+
*
|
|
21
|
+
* ### Stability Guarantees
|
|
22
|
+
*
|
|
23
|
+
* 1. **Core Types Stability**: The following types are considered stable and will not
|
|
24
|
+
* change in backward-incompatible ways within the same major version:
|
|
25
|
+
* - PraxisFact (tag, payload structure)
|
|
26
|
+
* - PraxisEvent (tag, payload structure)
|
|
27
|
+
* - PraxisState (context, facts, meta structure)
|
|
28
|
+
* - PraxisStepFn signature
|
|
29
|
+
*
|
|
30
|
+
* 2. **JSON Compatibility**: All protocol types will remain JSON-serializable.
|
|
31
|
+
* No non-JSON-safe types (functions, symbols, etc.) will be added to the protocol.
|
|
32
|
+
*
|
|
33
|
+
* 3. **Cross-Language Compatibility**: Protocol changes will be coordinated across
|
|
34
|
+
* all official language implementations (TypeScript, C#, PowerShell) to ensure
|
|
35
|
+
* interoperability.
|
|
36
|
+
*
|
|
37
|
+
* 4. **Migration Path**: Major version changes will be accompanied by:
|
|
38
|
+
* - Migration guide
|
|
39
|
+
* - Deprecation warnings in previous version
|
|
40
|
+
* - Compatibility shims where possible
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Protocol version following semantic versioning
|
|
44
|
+
*/
|
|
45
|
+
declare const PRAXIS_PROTOCOL_VERSION: "1.0.0";
|
|
46
|
+
/**
|
|
47
|
+
* A fact is a typed proposition about the domain.
|
|
48
|
+
* Examples: UserLoggedIn, CartItem, NetworkOnline
|
|
49
|
+
*/
|
|
50
|
+
interface PraxisFact {
|
|
51
|
+
/** Tag identifying the fact type */
|
|
52
|
+
tag: string;
|
|
53
|
+
/** Payload containing the fact data */
|
|
54
|
+
payload: unknown;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* An event is a temporally ordered fact meant to drive change.
|
|
58
|
+
* Examples: LOGIN, LOGOUT, ADD_TO_CART
|
|
59
|
+
*/
|
|
60
|
+
interface PraxisEvent {
|
|
61
|
+
/** Tag identifying the event type */
|
|
62
|
+
tag: string;
|
|
63
|
+
/** Payload containing the event data */
|
|
64
|
+
payload: unknown;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The state of the Praxis engine at a point in time.
|
|
68
|
+
*/
|
|
69
|
+
interface PraxisState {
|
|
70
|
+
/** Application context (domain-specific data) */
|
|
71
|
+
context: unknown;
|
|
72
|
+
/** Current facts about the domain */
|
|
73
|
+
facts: PraxisFact[];
|
|
74
|
+
/** Optional metadata (timestamps, version, etc.) */
|
|
75
|
+
meta?: Record<string, unknown>;
|
|
76
|
+
/** Protocol version (for cross-language compatibility) */
|
|
77
|
+
protocolVersion?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Diagnostic information about constraint violations or rule errors.
|
|
81
|
+
*/
|
|
82
|
+
interface PraxisDiagnostics {
|
|
83
|
+
/** Kind of diagnostic */
|
|
84
|
+
kind: 'constraint-violation' | 'rule-error';
|
|
85
|
+
/** Human-readable message */
|
|
86
|
+
message: string;
|
|
87
|
+
/** Additional diagnostic data */
|
|
88
|
+
data?: unknown;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Configuration for a step execution.
|
|
92
|
+
* Specifies which rules and constraints to apply.
|
|
93
|
+
*/
|
|
94
|
+
interface PraxisStepConfig {
|
|
95
|
+
/** IDs of rules to apply during this step */
|
|
96
|
+
ruleIds: string[];
|
|
97
|
+
/** IDs of constraints to check during this step */
|
|
98
|
+
constraintIds: string[];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Result of a step execution.
|
|
102
|
+
*/
|
|
103
|
+
interface PraxisStepResult {
|
|
104
|
+
/** New state after applying rules and checking constraints */
|
|
105
|
+
state: PraxisState;
|
|
106
|
+
/** Diagnostics from rule execution and constraint checking */
|
|
107
|
+
diagnostics: PraxisDiagnostics[];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The core step function of the Praxis engine.
|
|
111
|
+
*
|
|
112
|
+
* This is the conceptual heart of the engine:
|
|
113
|
+
* - Takes current state, events, and configuration
|
|
114
|
+
* - Applies rules and checks constraints
|
|
115
|
+
* - Returns new state and diagnostics
|
|
116
|
+
*
|
|
117
|
+
* Pure, deterministic, data in → data out.
|
|
118
|
+
* No side effects, no global state.
|
|
119
|
+
*/
|
|
120
|
+
type PraxisStepFn = (state: PraxisState, events: PraxisEvent[], config: PraxisStepConfig) => PraxisStepResult;
|
|
121
|
+
|
|
122
|
+
export { type PraxisState as P, type PraxisEvent as a, type PraxisFact as b, type PraxisStepResult as c, type PraxisStepConfig as d, type PraxisDiagnostics as e, type PraxisStepFn as f, PRAXIS_PROTOCOL_VERSION as g };
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/core/schema/types.ts
|
|
21
|
+
var types_exports = {};
|
|
22
|
+
__export(types_exports, {
|
|
23
|
+
createSchemaTemplate: () => createSchemaTemplate,
|
|
24
|
+
validateSchema: () => validateSchema
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(types_exports);
|
|
27
|
+
function validateSchema(schema) {
|
|
28
|
+
const errors = [];
|
|
29
|
+
if (!schema.version) {
|
|
30
|
+
errors.push({ path: "version", message: "Schema version is required" });
|
|
31
|
+
}
|
|
32
|
+
if (!schema.name) {
|
|
33
|
+
errors.push({ path: "name", message: "Schema name is required" });
|
|
34
|
+
}
|
|
35
|
+
if (schema.models) {
|
|
36
|
+
schema.models.forEach((model, index) => {
|
|
37
|
+
if (!model.name) {
|
|
38
|
+
errors.push({
|
|
39
|
+
path: `models[${index}].name`,
|
|
40
|
+
message: "Model name is required"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (!model.fields || model.fields.length === 0) {
|
|
44
|
+
errors.push({
|
|
45
|
+
path: `models[${index}].fields`,
|
|
46
|
+
message: "Model must have at least one field"
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (schema.components) {
|
|
52
|
+
schema.components.forEach((component, index) => {
|
|
53
|
+
if (!component.name) {
|
|
54
|
+
errors.push({
|
|
55
|
+
path: `components[${index}].name`,
|
|
56
|
+
message: "Component name is required"
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (!component.type) {
|
|
60
|
+
errors.push({
|
|
61
|
+
path: `components[${index}].type`,
|
|
62
|
+
message: "Component type is required"
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (schema.logic) {
|
|
68
|
+
schema.logic.forEach((logic, logicIndex) => {
|
|
69
|
+
if (logic.facts) {
|
|
70
|
+
logic.facts.forEach((fact, factIndex) => {
|
|
71
|
+
if (!fact.tag) {
|
|
72
|
+
errors.push({
|
|
73
|
+
path: `logic[${logicIndex}].facts[${factIndex}].tag`,
|
|
74
|
+
message: "Fact tag is required"
|
|
75
|
+
});
|
|
76
|
+
} else if (!isValidIdentifier(fact.tag)) {
|
|
77
|
+
errors.push({
|
|
78
|
+
path: `logic[${logicIndex}].facts[${factIndex}].tag`,
|
|
79
|
+
message: `Fact tag "${fact.tag}" is not a valid JavaScript identifier. Use only letters, numbers, underscores, and dollar signs, and do not start with a number.`
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (logic.events) {
|
|
85
|
+
logic.events.forEach((event, eventIndex) => {
|
|
86
|
+
if (!event.tag) {
|
|
87
|
+
errors.push({
|
|
88
|
+
path: `logic[${logicIndex}].events[${eventIndex}].tag`,
|
|
89
|
+
message: "Event tag is required"
|
|
90
|
+
});
|
|
91
|
+
} else if (!isValidIdentifier(event.tag)) {
|
|
92
|
+
errors.push({
|
|
93
|
+
path: `logic[${logicIndex}].events[${eventIndex}].tag`,
|
|
94
|
+
message: `Event tag "${event.tag}" is not a valid JavaScript identifier. Use only letters, numbers, underscores, and dollar signs, and do not start with a number.`
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (schema.orchestration?.nodes) {
|
|
102
|
+
schema.orchestration.nodes.forEach((node, index) => {
|
|
103
|
+
if (!node.id) {
|
|
104
|
+
errors.push({
|
|
105
|
+
path: `orchestration.nodes[${index}].id`,
|
|
106
|
+
message: "Node id is required"
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (!node.type) {
|
|
110
|
+
errors.push({
|
|
111
|
+
path: `orchestration.nodes[${index}].type`,
|
|
112
|
+
message: "Node type is required"
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
if (node.type === "terminal" && node.props) {
|
|
116
|
+
const props = node.props;
|
|
117
|
+
if (props.inputMode && !["text", "widget"].includes(props.inputMode)) {
|
|
118
|
+
errors.push({
|
|
119
|
+
path: `orchestration.nodes[${index}].props.inputMode`,
|
|
120
|
+
message: 'Terminal node inputMode must be "text" or "widget"'
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (props.history && !Array.isArray(props.history)) {
|
|
124
|
+
errors.push({
|
|
125
|
+
path: `orchestration.nodes[${index}].props.history`,
|
|
126
|
+
message: "Terminal node history must be an array"
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
valid: errors.length === 0,
|
|
134
|
+
errors
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function isValidIdentifier(str) {
|
|
138
|
+
const identifierRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
139
|
+
const reservedKeywords = [
|
|
140
|
+
"break",
|
|
141
|
+
"case",
|
|
142
|
+
"catch",
|
|
143
|
+
"class",
|
|
144
|
+
"const",
|
|
145
|
+
"continue",
|
|
146
|
+
"debugger",
|
|
147
|
+
"default",
|
|
148
|
+
"delete",
|
|
149
|
+
"do",
|
|
150
|
+
"else",
|
|
151
|
+
"export",
|
|
152
|
+
"extends",
|
|
153
|
+
"finally",
|
|
154
|
+
"for",
|
|
155
|
+
"function",
|
|
156
|
+
"if",
|
|
157
|
+
"import",
|
|
158
|
+
"in",
|
|
159
|
+
"instanceof",
|
|
160
|
+
"new",
|
|
161
|
+
"return",
|
|
162
|
+
"super",
|
|
163
|
+
"switch",
|
|
164
|
+
"this",
|
|
165
|
+
"throw",
|
|
166
|
+
"try",
|
|
167
|
+
"typeof",
|
|
168
|
+
"var",
|
|
169
|
+
"void",
|
|
170
|
+
"while",
|
|
171
|
+
"with",
|
|
172
|
+
"yield",
|
|
173
|
+
"let",
|
|
174
|
+
"static",
|
|
175
|
+
"enum",
|
|
176
|
+
"await",
|
|
177
|
+
"implements",
|
|
178
|
+
"interface",
|
|
179
|
+
"package",
|
|
180
|
+
"private",
|
|
181
|
+
"protected",
|
|
182
|
+
"public"
|
|
183
|
+
];
|
|
184
|
+
return identifierRegex.test(str) && !reservedKeywords.includes(str);
|
|
185
|
+
}
|
|
186
|
+
function createSchemaTemplate(name) {
|
|
187
|
+
return {
|
|
188
|
+
version: "1.0.0",
|
|
189
|
+
name,
|
|
190
|
+
description: `Schema for ${name}`,
|
|
191
|
+
models: [],
|
|
192
|
+
components: [],
|
|
193
|
+
logic: []
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
197
|
+
0 && (module.exports = {
|
|
198
|
+
createSchemaTemplate,
|
|
199
|
+
validateSchema
|
|
200
|
+
});
|