@plures/praxis 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +282 -76
- package/core/codegen/docs-generator.ts +808 -0
- package/core/codegen/index.ts +27 -0
- package/core/codegen/ts-generator.ts +15 -0
- package/core/db-adapter/index.ts +52 -0
- package/core/db-adapter/sync-engine.ts +450 -0
- package/core/logic-engine/engine.ts +12 -0
- package/core/logic-engine/index.ts +16 -0
- package/core/logic-engine/protocol.ts +16 -0
- package/core/logic-engine/psf-adapter.ts +269 -0
- package/core/logic-engine/rules.ts +16 -0
- package/core/schema-engine/compiler.ts +431 -0
- package/core/schema-engine/generator.ts +635 -0
- package/core/schema-engine/index.ts +18 -0
- package/core/schema-engine/psf.ts +664 -0
- package/core/schema-engine/types.ts +63 -0
- package/core/schema-engine/validator.ts +541 -0
- package/dist/core/codegen/docs-generator.d.ts +123 -0
- package/dist/core/codegen/docs-generator.d.ts.map +1 -0
- package/dist/core/codegen/docs-generator.js +674 -0
- package/dist/core/codegen/docs-generator.js.map +1 -0
- package/dist/core/codegen/index.d.ts +11 -0
- package/dist/core/codegen/index.d.ts.map +1 -0
- package/dist/core/codegen/index.js +13 -0
- package/dist/core/codegen/index.js.map +1 -0
- package/dist/core/codegen/ts-generator.d.ts +8 -0
- package/dist/core/codegen/ts-generator.d.ts.map +1 -0
- package/dist/core/codegen/ts-generator.js +8 -0
- package/dist/core/codegen/ts-generator.js.map +1 -0
- package/dist/core/db-adapter/index.d.ts +18 -0
- package/dist/core/db-adapter/index.d.ts.map +1 -0
- package/dist/core/db-adapter/index.js +23 -0
- package/dist/core/db-adapter/index.js.map +1 -0
- package/dist/core/db-adapter/sync-engine.d.ts +180 -0
- package/dist/core/db-adapter/sync-engine.d.ts.map +1 -0
- package/dist/core/db-adapter/sync-engine.js +342 -0
- package/dist/core/db-adapter/sync-engine.js.map +1 -0
- package/dist/core/logic-engine/engine.d.ts +8 -0
- package/dist/core/logic-engine/engine.d.ts.map +1 -0
- package/dist/core/logic-engine/engine.js +8 -0
- package/dist/core/logic-engine/engine.js.map +1 -0
- package/dist/core/logic-engine/index.d.ts +16 -0
- package/dist/core/logic-engine/index.d.ts.map +1 -0
- package/dist/core/logic-engine/index.js +16 -0
- package/dist/core/logic-engine/index.js.map +1 -0
- package/dist/core/logic-engine/protocol.d.ts +7 -0
- package/dist/core/logic-engine/protocol.d.ts.map +1 -0
- package/dist/core/logic-engine/protocol.js +7 -0
- package/dist/core/logic-engine/protocol.js.map +1 -0
- package/dist/core/logic-engine/psf-adapter.d.ts +88 -0
- package/dist/core/logic-engine/psf-adapter.d.ts.map +1 -0
- package/dist/core/logic-engine/psf-adapter.js +207 -0
- package/dist/core/logic-engine/psf-adapter.js.map +1 -0
- package/dist/core/logic-engine/rules.d.ts +7 -0
- package/dist/core/logic-engine/rules.d.ts.map +1 -0
- package/dist/core/logic-engine/rules.js +7 -0
- package/dist/core/logic-engine/rules.js.map +1 -0
- package/dist/core/schema-engine/compiler.d.ts +198 -0
- package/dist/core/schema-engine/compiler.d.ts.map +1 -0
- package/dist/core/schema-engine/compiler.js +262 -0
- package/dist/core/schema-engine/compiler.js.map +1 -0
- package/dist/core/schema-engine/generator.d.ts +115 -0
- package/dist/core/schema-engine/generator.d.ts.map +1 -0
- package/dist/core/schema-engine/generator.js +506 -0
- package/dist/core/schema-engine/generator.js.map +1 -0
- package/dist/core/schema-engine/index.d.ts +18 -0
- package/dist/core/schema-engine/index.d.ts.map +1 -0
- package/dist/core/schema-engine/index.js +18 -0
- package/dist/core/schema-engine/index.js.map +1 -0
- package/dist/core/schema-engine/psf.d.ts +612 -0
- package/dist/core/schema-engine/psf.d.ts.map +1 -0
- package/dist/core/schema-engine/psf.js +45 -0
- package/dist/core/schema-engine/psf.js.map +1 -0
- package/dist/core/schema-engine/types.d.ts +10 -0
- package/dist/core/schema-engine/types.d.ts.map +1 -0
- package/dist/core/schema-engine/types.js +7 -0
- package/dist/core/schema-engine/types.js.map +1 -0
- package/dist/core/schema-engine/validator.d.ts +140 -0
- package/dist/core/schema-engine/validator.d.ts.map +1 -0
- package/dist/core/schema-engine/validator.js +407 -0
- package/dist/core/schema-engine/validator.js.map +1 -0
- package/dist/src/adapters/cli.d.ts.map +1 -0
- package/dist/src/adapters/cli.js.map +1 -0
- package/dist/src/cli/commands/auth.d.ts.map +1 -0
- package/dist/src/cli/commands/auth.js.map +1 -0
- package/dist/src/cli/commands/build.d.ts +23 -0
- package/dist/src/cli/commands/build.d.ts.map +1 -0
- package/dist/src/cli/commands/build.js +162 -0
- package/dist/src/cli/commands/build.js.map +1 -0
- package/dist/src/cli/commands/canvas.d.ts +23 -0
- package/dist/src/cli/commands/canvas.d.ts.map +1 -0
- package/dist/src/cli/commands/canvas.js +215 -0
- package/dist/src/cli/commands/canvas.js.map +1 -0
- package/dist/src/cli/commands/cloud.d.ts.map +1 -0
- package/dist/src/cli/commands/cloud.js.map +1 -0
- package/dist/src/cli/commands/create.d.ts +21 -0
- package/dist/src/cli/commands/create.d.ts.map +1 -0
- package/dist/src/cli/commands/create.js +621 -0
- package/dist/src/cli/commands/create.js.map +1 -0
- package/dist/src/cli/commands/dev.d.ts +21 -0
- package/dist/src/cli/commands/dev.d.ts.map +1 -0
- package/dist/src/cli/commands/dev.js +71 -0
- package/dist/src/cli/commands/dev.js.map +1 -0
- package/dist/src/cli/commands/generate.d.ts.map +1 -0
- package/dist/src/cli/commands/generate.js.map +1 -0
- package/dist/src/cli/commands/orchestrate.d.ts +44 -0
- package/dist/src/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/src/cli/commands/orchestrate.js +150 -0
- package/dist/src/cli/commands/orchestrate.js.map +1 -0
- package/dist/{cli → src/cli}/index.d.ts.map +1 -1
- package/dist/{cli → src/cli}/index.js +53 -21
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cloud/auth.d.ts.map +1 -0
- package/dist/src/cloud/auth.js.map +1 -0
- package/dist/src/cloud/billing.d.ts.map +1 -0
- package/dist/src/cloud/billing.js.map +1 -0
- package/dist/src/cloud/client.d.ts.map +1 -0
- package/dist/src/cloud/client.js.map +1 -0
- package/dist/src/cloud/index.d.ts.map +1 -0
- package/dist/src/cloud/index.js.map +1 -0
- package/dist/src/cloud/marketplace.d.ts.map +1 -0
- package/dist/src/cloud/marketplace.js.map +1 -0
- package/dist/src/cloud/provisioning.d.ts.map +1 -0
- package/dist/src/cloud/provisioning.js.map +1 -0
- package/dist/src/cloud/relay/endpoints.d.ts.map +1 -0
- package/dist/src/cloud/relay/endpoints.js.map +1 -0
- package/dist/src/cloud/relay/health/index.d.ts.map +1 -0
- package/dist/src/cloud/relay/health/index.js.map +1 -0
- package/dist/src/cloud/relay/stats/index.d.ts.map +1 -0
- package/dist/src/cloud/relay/stats/index.js.map +1 -0
- package/dist/src/cloud/relay/sync/index.d.ts.map +1 -0
- package/dist/src/cloud/relay/sync/index.js.map +1 -0
- package/dist/src/cloud/relay/usage/index.d.ts.map +1 -0
- package/dist/src/cloud/relay/usage/index.js.map +1 -0
- package/dist/src/cloud/sponsors.d.ts.map +1 -0
- package/dist/src/cloud/sponsors.js.map +1 -0
- package/dist/src/cloud/types.d.ts.map +1 -0
- package/dist/src/cloud/types.js.map +1 -0
- package/dist/src/components/index.d.ts.map +1 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/core/actors.d.ts.map +1 -0
- package/dist/src/core/actors.js.map +1 -0
- package/dist/src/core/component/generator.d.ts.map +1 -0
- package/dist/{core → src/core}/component/generator.js +45 -3
- package/dist/src/core/component/generator.js.map +1 -0
- package/dist/src/core/engine.d.ts.map +1 -0
- package/dist/src/core/engine.js.map +1 -0
- package/dist/src/core/introspection.d.ts.map +1 -0
- package/dist/src/core/introspection.js.map +1 -0
- package/dist/src/core/logic/generator.d.ts.map +1 -0
- package/dist/{core → src/core}/logic/generator.js +35 -4
- package/dist/src/core/logic/generator.js.map +1 -0
- package/dist/src/core/pluresdb/adapter.d.ts +72 -0
- package/dist/src/core/pluresdb/adapter.d.ts.map +1 -0
- package/dist/src/core/pluresdb/adapter.js +73 -0
- package/dist/src/core/pluresdb/adapter.js.map +1 -0
- package/dist/src/core/pluresdb/generator.d.ts.map +1 -0
- package/dist/{core → src/core}/pluresdb/generator.js +33 -4
- package/dist/src/core/pluresdb/generator.js.map +1 -0
- package/dist/src/core/pluresdb/index.d.ts +15 -0
- package/dist/src/core/pluresdb/index.d.ts.map +1 -0
- package/dist/src/core/pluresdb/index.js +11 -0
- package/dist/src/core/pluresdb/index.js.map +1 -0
- package/dist/src/core/pluresdb/schema-registry.d.ts +104 -0
- package/dist/src/core/pluresdb/schema-registry.d.ts.map +1 -0
- package/dist/src/core/pluresdb/schema-registry.js +130 -0
- package/dist/src/core/pluresdb/schema-registry.js.map +1 -0
- package/dist/src/core/pluresdb/store.d.ts +199 -0
- package/dist/src/core/pluresdb/store.d.ts.map +1 -0
- package/dist/src/core/pluresdb/store.js +344 -0
- package/dist/src/core/pluresdb/store.js.map +1 -0
- package/dist/src/core/protocol.d.ts.map +1 -0
- package/dist/src/core/protocol.js.map +1 -0
- package/dist/src/core/rules.d.ts.map +1 -0
- package/dist/src/core/rules.js.map +1 -0
- package/dist/src/core/schema/loader.d.ts.map +1 -0
- package/dist/{core → src/core}/schema/loader.js +2 -2
- package/dist/src/core/schema/loader.js.map +1 -0
- package/dist/src/core/schema/normalize.d.ts.map +1 -0
- package/dist/src/core/schema/normalize.js.map +1 -0
- package/dist/src/core/schema/types.d.ts.map +1 -0
- package/dist/src/core/schema/types.js.map +1 -0
- package/dist/src/dsl/index.d.ts.map +1 -0
- package/dist/src/dsl/index.js.map +1 -0
- package/dist/src/dsl.d.ts.map +1 -0
- package/dist/src/dsl.js.map +1 -0
- package/dist/src/examples/advanced-todo/index.d.ts.map +1 -0
- package/dist/src/examples/advanced-todo/index.js.map +1 -0
- package/dist/src/examples/auth-basic/index.d.ts.map +1 -0
- package/dist/src/examples/auth-basic/index.js.map +1 -0
- package/dist/src/examples/cart/index.d.ts.map +1 -0
- package/dist/src/examples/cart/index.js.map +1 -0
- package/dist/src/examples/hero-ecommerce/index.d.ts.map +1 -0
- package/dist/src/examples/hero-ecommerce/index.js.map +1 -0
- package/dist/src/examples/svelte-counter/index.d.ts.map +1 -0
- package/dist/src/examples/svelte-counter/index.js.map +1 -0
- package/dist/src/flows.d.ts.map +1 -0
- package/dist/src/flows.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +12 -2
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -1
- package/dist/src/index.js.map +1 -0
- package/dist/src/integrations/code-canvas.d.ts +265 -0
- package/dist/src/integrations/code-canvas.d.ts.map +1 -0
- package/dist/src/integrations/code-canvas.js +451 -0
- package/dist/src/integrations/code-canvas.js.map +1 -0
- package/dist/src/integrations/pluresdb.d.ts +117 -0
- package/dist/src/integrations/pluresdb.d.ts.map +1 -0
- package/dist/src/integrations/pluresdb.js +117 -0
- package/dist/src/integrations/pluresdb.js.map +1 -0
- package/dist/src/integrations/state-docs.d.ts +191 -0
- package/dist/src/integrations/state-docs.d.ts.map +1 -0
- package/dist/src/integrations/state-docs.js +515 -0
- package/dist/src/integrations/state-docs.js.map +1 -0
- package/dist/src/integrations/svelte.d.ts.map +1 -0
- package/dist/src/integrations/svelte.js.map +1 -0
- package/dist/src/integrations/tauri.d.ts +360 -0
- package/dist/src/integrations/tauri.d.ts.map +1 -0
- package/dist/src/integrations/tauri.js +278 -0
- package/dist/src/integrations/tauri.js.map +1 -0
- package/dist/src/integrations/unum.d.ts +159 -0
- package/dist/src/integrations/unum.d.ts.map +1 -0
- package/dist/src/integrations/unum.js +240 -0
- package/dist/src/integrations/unum.js.map +1 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/{runtime → src/runtime}/terminal-adapter.d.ts +58 -7
- package/dist/src/runtime/terminal-adapter.d.ts.map +1 -0
- package/dist/src/runtime/terminal-adapter.js +237 -0
- package/dist/src/runtime/terminal-adapter.js.map +1 -0
- package/dist/src/step.d.ts.map +1 -0
- package/dist/src/step.js.map +1 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/{cloud → src}/types.js.map +1 -1
- package/dist/tools/cli/commands/index.d.ts +7 -0
- package/dist/tools/cli/commands/index.d.ts.map +1 -0
- package/dist/tools/cli/commands/index.js +7 -0
- package/dist/tools/cli/commands/index.js.map +1 -0
- package/dist/tools/cli/index.d.ts +8 -0
- package/dist/tools/cli/index.d.ts.map +1 -0
- package/dist/tools/cli/index.js +9 -0
- package/dist/tools/cli/index.js.map +1 -0
- package/dist/tools/watcher/index.d.ts +105 -0
- package/dist/tools/watcher/index.d.ts.map +1 -0
- package/dist/tools/watcher/index.js +213 -0
- package/dist/tools/watcher/index.js.map +1 -0
- package/dist/ui/canvas/canvas-projection.d.ts +78 -0
- package/dist/ui/canvas/canvas-projection.d.ts.map +1 -0
- package/dist/ui/canvas/canvas-projection.js +416 -0
- package/dist/ui/canvas/canvas-projection.js.map +1 -0
- package/dist/ui/canvas/canvas-state.d.ts +200 -0
- package/dist/ui/canvas/canvas-state.d.ts.map +1 -0
- package/dist/ui/canvas/canvas-state.js +464 -0
- package/dist/ui/canvas/canvas-state.js.map +1 -0
- package/dist/ui/canvas/components/index.d.ts +95 -0
- package/dist/ui/canvas/components/index.d.ts.map +1 -0
- package/dist/ui/canvas/components/index.js +19 -0
- package/dist/ui/canvas/components/index.js.map +1 -0
- package/dist/ui/canvas/index.d.ts +32 -0
- package/dist/ui/canvas/index.d.ts.map +1 -0
- package/dist/ui/canvas/index.js +32 -0
- package/dist/ui/canvas/index.js.map +1 -0
- package/dist/ui/svelte-generator/index.d.ts +9 -0
- package/dist/ui/svelte-generator/index.d.ts.map +1 -0
- package/dist/ui/svelte-generator/index.js +11 -0
- package/dist/ui/svelte-generator/index.js.map +1 -0
- package/dist/ui/svelte-generator/psf-generator.d.ts +128 -0
- package/dist/ui/svelte-generator/psf-generator.d.ts.map +1 -0
- package/dist/ui/svelte-generator/psf-generator.js +506 -0
- package/dist/ui/svelte-generator/psf-generator.js.map +1 -0
- package/docs/README.md +155 -0
- package/docs/core/building-extensions.md +553 -0
- package/docs/core/cli-usage.md +498 -0
- package/docs/core/code-canvas-sync.md +468 -0
- package/docs/core/logic-engine.md +566 -0
- package/docs/core/pluresdb-integration.md +646 -0
- package/docs/core/schema-model.md +414 -0
- package/docs/core/ui-generation.md +580 -0
- package/docs/core/what-is-praxis.md +240 -0
- package/docs/tutorials/README.md +84 -0
- package/docs/tutorials/ecommerce-cart.md +631 -0
- package/docs/tutorials/first-app.md +529 -0
- package/docs/tutorials/form-builder.md +620 -0
- package/docs/tutorials/todo-pluresdb.md +589 -0
- package/package.json +1 -1
- package/src/__tests__/canvas-components.test.ts +450 -0
- package/src/__tests__/cli-create.test.ts +178 -0
- package/src/__tests__/code-canvas-integration.test.ts +277 -0
- package/src/__tests__/docs-generator.test.ts +181 -0
- package/src/__tests__/generators.test.ts +3 -2
- package/src/__tests__/pluresdb.test.ts +457 -0
- package/src/__tests__/psf-schema-engine.test.ts +450 -0
- package/src/__tests__/state-docs-integration.test.ts +297 -0
- package/src/__tests__/tauri-integration.test.ts +298 -0
- package/src/__tests__/terminal-node.test.ts +1 -1
- package/src/__tests__/unum-integration.test.ts +142 -0
- package/src/cli/commands/build.ts +203 -0
- package/src/cli/commands/canvas.ts +246 -0
- package/src/cli/commands/create.ts +666 -0
- package/src/cli/commands/dev.ts +95 -0
- package/src/cli/commands/orchestrate.ts +212 -0
- package/src/cli/index.ts +48 -21
- package/src/core/actors.ts +1 -1
- package/src/core/component/generator.ts +45 -3
- package/src/core/logic/generator.ts +39 -4
- package/src/core/pluresdb/adapter.ts +117 -0
- package/src/core/pluresdb/generator.ts +33 -4
- package/src/core/pluresdb/index.ts +37 -0
- package/src/core/pluresdb/schema-registry.ts +162 -0
- package/src/core/pluresdb/store.ts +443 -0
- package/src/core/schema/loader.ts +2 -2
- package/src/index.ts +109 -0
- package/src/integrations/code-canvas.ts +717 -0
- package/src/integrations/pluresdb.ts +140 -29
- package/src/integrations/state-docs.ts +710 -0
- package/src/integrations/tauri.ts +638 -0
- package/src/integrations/unum.ts +395 -0
- package/src/runtime/terminal-adapter.ts +178 -23
- package/dist/adapters/cli.d.ts.map +0 -1
- package/dist/adapters/cli.js.map +0 -1
- package/dist/cli/commands/auth.d.ts.map +0 -1
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/cloud.d.ts.map +0 -1
- package/dist/cli/commands/cloud.js.map +0 -1
- package/dist/cli/commands/generate.d.ts.map +0 -1
- package/dist/cli/commands/generate.js.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cloud/auth.d.ts.map +0 -1
- package/dist/cloud/auth.js.map +0 -1
- package/dist/cloud/billing.d.ts.map +0 -1
- package/dist/cloud/billing.js.map +0 -1
- package/dist/cloud/client.d.ts.map +0 -1
- package/dist/cloud/client.js.map +0 -1
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/marketplace.d.ts.map +0 -1
- package/dist/cloud/marketplace.js.map +0 -1
- package/dist/cloud/provisioning.d.ts.map +0 -1
- package/dist/cloud/provisioning.js.map +0 -1
- package/dist/cloud/relay/endpoints.d.ts.map +0 -1
- package/dist/cloud/relay/endpoints.js.map +0 -1
- package/dist/cloud/relay/health/index.d.ts.map +0 -1
- package/dist/cloud/relay/health/index.js.map +0 -1
- package/dist/cloud/relay/stats/index.d.ts.map +0 -1
- package/dist/cloud/relay/stats/index.js.map +0 -1
- package/dist/cloud/relay/sync/index.d.ts.map +0 -1
- package/dist/cloud/relay/sync/index.js.map +0 -1
- package/dist/cloud/relay/usage/index.d.ts.map +0 -1
- package/dist/cloud/relay/usage/index.js.map +0 -1
- package/dist/cloud/sponsors.d.ts.map +0 -1
- package/dist/cloud/sponsors.js.map +0 -1
- package/dist/cloud/types.d.ts.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/core/actors.d.ts.map +0 -1
- package/dist/core/actors.js.map +0 -1
- package/dist/core/component/generator.d.ts.map +0 -1
- package/dist/core/component/generator.js.map +0 -1
- package/dist/core/engine.d.ts.map +0 -1
- package/dist/core/engine.js.map +0 -1
- package/dist/core/introspection.d.ts.map +0 -1
- package/dist/core/introspection.js.map +0 -1
- package/dist/core/logic/generator.d.ts.map +0 -1
- package/dist/core/logic/generator.js.map +0 -1
- package/dist/core/pluresdb/generator.d.ts.map +0 -1
- package/dist/core/pluresdb/generator.js.map +0 -1
- package/dist/core/protocol.d.ts.map +0 -1
- package/dist/core/protocol.js.map +0 -1
- package/dist/core/rules.d.ts.map +0 -1
- package/dist/core/rules.js.map +0 -1
- package/dist/core/schema/loader.d.ts.map +0 -1
- package/dist/core/schema/loader.js.map +0 -1
- package/dist/core/schema/normalize.d.ts.map +0 -1
- package/dist/core/schema/normalize.js.map +0 -1
- package/dist/core/schema/types.d.ts.map +0 -1
- package/dist/core/schema/types.js.map +0 -1
- package/dist/dsl/index.d.ts.map +0 -1
- package/dist/dsl/index.js.map +0 -1
- package/dist/dsl.d.ts.map +0 -1
- package/dist/dsl.js.map +0 -1
- package/dist/examples/advanced-todo/index.d.ts.map +0 -1
- package/dist/examples/advanced-todo/index.js.map +0 -1
- package/dist/examples/auth-basic/index.d.ts.map +0 -1
- package/dist/examples/auth-basic/index.js.map +0 -1
- package/dist/examples/cart/index.d.ts.map +0 -1
- package/dist/examples/cart/index.js.map +0 -1
- package/dist/examples/hero-ecommerce/index.d.ts.map +0 -1
- package/dist/examples/hero-ecommerce/index.js.map +0 -1
- package/dist/examples/svelte-counter/index.d.ts.map +0 -1
- package/dist/examples/svelte-counter/index.js.map +0 -1
- package/dist/flows.d.ts.map +0 -1
- package/dist/flows.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrations/pluresdb.d.ts +0 -56
- package/dist/integrations/pluresdb.d.ts.map +0 -1
- package/dist/integrations/pluresdb.js +0 -46
- package/dist/integrations/pluresdb.js.map +0 -1
- package/dist/integrations/svelte.d.ts.map +0 -1
- package/dist/integrations/svelte.js.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/runtime/terminal-adapter.d.ts.map +0 -1
- package/dist/runtime/terminal-adapter.js +0 -113
- package/dist/runtime/terminal-adapter.js.map +0 -1
- package/dist/step.d.ts.map +0 -1
- package/dist/step.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{adapters → src/adapters}/cli.d.ts +0 -0
- /package/dist/{adapters → src/adapters}/cli.js +0 -0
- /package/dist/{cli → src/cli}/commands/auth.d.ts +0 -0
- /package/dist/{cli → src/cli}/commands/auth.js +0 -0
- /package/dist/{cli → src/cli}/commands/cloud.d.ts +0 -0
- /package/dist/{cli → src/cli}/commands/cloud.js +0 -0
- /package/dist/{cli → src/cli}/commands/generate.d.ts +0 -0
- /package/dist/{cli → src/cli}/commands/generate.js +0 -0
- /package/dist/{cli → src/cli}/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/auth.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/auth.js +0 -0
- /package/dist/{cloud → src/cloud}/billing.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/billing.js +0 -0
- /package/dist/{cloud → src/cloud}/client.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/client.js +0 -0
- /package/dist/{cloud → src/cloud}/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/index.js +0 -0
- /package/dist/{cloud → src/cloud}/marketplace.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/marketplace.js +0 -0
- /package/dist/{cloud → src/cloud}/provisioning.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/provisioning.js +0 -0
- /package/dist/{cloud → src/cloud}/relay/endpoints.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/relay/endpoints.js +0 -0
- /package/dist/{cloud → src/cloud}/relay/health/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/relay/health/index.js +0 -0
- /package/dist/{cloud → src/cloud}/relay/stats/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/relay/stats/index.js +0 -0
- /package/dist/{cloud → src/cloud}/relay/sync/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/relay/sync/index.js +0 -0
- /package/dist/{cloud → src/cloud}/relay/usage/index.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/relay/usage/index.js +0 -0
- /package/dist/{cloud → src/cloud}/sponsors.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/sponsors.js +0 -0
- /package/dist/{cloud → src/cloud}/types.d.ts +0 -0
- /package/dist/{cloud → src/cloud}/types.js +0 -0
- /package/dist/{components → src/components}/index.d.ts +0 -0
- /package/dist/{components → src/components}/index.js +0 -0
- /package/dist/{core → src/core}/actors.d.ts +0 -0
- /package/dist/{core → src/core}/actors.js +0 -0
- /package/dist/{core → src/core}/component/generator.d.ts +0 -0
- /package/dist/{core → src/core}/engine.d.ts +0 -0
- /package/dist/{core → src/core}/engine.js +0 -0
- /package/dist/{core → src/core}/introspection.d.ts +0 -0
- /package/dist/{core → src/core}/introspection.js +0 -0
- /package/dist/{core → src/core}/logic/generator.d.ts +0 -0
- /package/dist/{core → src/core}/pluresdb/generator.d.ts +0 -0
- /package/dist/{core → src/core}/protocol.d.ts +0 -0
- /package/dist/{core → src/core}/protocol.js +0 -0
- /package/dist/{core → src/core}/rules.d.ts +0 -0
- /package/dist/{core → src/core}/rules.js +0 -0
- /package/dist/{core → src/core}/schema/loader.d.ts +0 -0
- /package/dist/{core → src/core}/schema/normalize.d.ts +0 -0
- /package/dist/{core → src/core}/schema/normalize.js +0 -0
- /package/dist/{core → src/core}/schema/types.d.ts +0 -0
- /package/dist/{core → src/core}/schema/types.js +0 -0
- /package/dist/{dsl → src/dsl}/index.d.ts +0 -0
- /package/dist/{dsl → src/dsl}/index.js +0 -0
- /package/dist/{dsl.d.ts → src/dsl.d.ts} +0 -0
- /package/dist/{dsl.js → src/dsl.js} +0 -0
- /package/dist/{examples → src/examples}/advanced-todo/index.d.ts +0 -0
- /package/dist/{examples → src/examples}/advanced-todo/index.js +0 -0
- /package/dist/{examples → src/examples}/auth-basic/index.d.ts +0 -0
- /package/dist/{examples → src/examples}/auth-basic/index.js +0 -0
- /package/dist/{examples → src/examples}/cart/index.d.ts +0 -0
- /package/dist/{examples → src/examples}/cart/index.js +0 -0
- /package/dist/{examples → src/examples}/hero-ecommerce/index.d.ts +0 -0
- /package/dist/{examples → src/examples}/hero-ecommerce/index.js +0 -0
- /package/dist/{examples → src/examples}/svelte-counter/index.d.ts +0 -0
- /package/dist/{examples → src/examples}/svelte-counter/index.js +0 -0
- /package/dist/{flows.d.ts → src/flows.d.ts} +0 -0
- /package/dist/{flows.js → src/flows.js} +0 -0
- /package/dist/{integrations → src/integrations}/svelte.d.ts +0 -0
- /package/dist/{integrations → src/integrations}/svelte.js +0 -0
- /package/dist/{registry.d.ts → src/registry.d.ts} +0 -0
- /package/dist/{registry.js → src/registry.js} +0 -0
- /package/dist/{step.d.ts → src/step.d.ts} +0 -0
- /package/dist/{step.js → src/step.js} +0 -0
- /package/dist/{types.d.ts → src/types.d.ts} +0 -0
- /package/dist/{types.js → src/types.js} +0 -0
package/README.md
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
[](https://github.com/plures/praxis/actions/workflows/codeql.yml)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://www.npmjs.com/package/@plures/praxis)
|
|
7
|
+
[](https://www.nuget.org/packages/Plures.Praxis/)
|
|
7
8
|
[](https://jsr.io/@plures/praxis)
|
|
8
9
|
[](https://nodejs.org/)
|
|
9
10
|
[](https://deno.land/)
|
|
@@ -19,29 +20,38 @@
|
|
|
19
20
|
- 💬 [Discussions](https://github.com/plures/praxis/discussions) | [Issues](https://github.com/plures/praxis/issues)
|
|
20
21
|
- 🚀 [Contributing](./CONTRIBUTING.md) | [Security Policy](./SECURITY.md)
|
|
21
22
|
- 📋 [Changelog](./CHANGELOG.md) | [Roadmap](https://github.com/plures/praxis/issues?q=is%3Aissue+is%3Aopen+label%3Aroadmap)
|
|
23
|
+
- 🔄 [Cross-Language Sync](./CROSS_LANGUAGE_SYNC.md) | [C# Documentation](./csharp/Praxis/README.md)
|
|
22
24
|
|
|
23
25
|
### Project Status
|
|
24
26
|
|
|
25
27
|
| Category | Status |
|
|
26
28
|
|----------|--------|
|
|
27
29
|
| **CI/CD** | ✅ Automated testing & builds |
|
|
28
|
-
| **Version** | 0.1
|
|
29
|
-
| **Runtime Support** | Node.js 18+, Deno (experimental) |
|
|
30
|
-
| **Package Registries** | npm ✅ / JSR 🚧 (coming soon) |
|
|
31
|
-
| **Test Coverage** |
|
|
30
|
+
| **Version** | 0.2.1 (Alpha) |
|
|
31
|
+
| **Runtime Support** | Node.js 18+, Deno (experimental), .NET 8+ |
|
|
32
|
+
| **Package Registries** | npm ✅ / NuGet ✅ / JSR 🚧 (coming soon) |
|
|
33
|
+
| **Test Coverage** | 202 TypeScript + 68 C# tests passing |
|
|
32
34
|
| **Documentation** | 📚 Comprehensive guides available |
|
|
33
35
|
|
|
36
|
+
### Language Support
|
|
37
|
+
|
|
38
|
+
| Language | Package | Registry | Status |
|
|
39
|
+
|----------|---------|----------|--------|
|
|
40
|
+
| **TypeScript** | @plures/praxis | npm | ✅ Available |
|
|
41
|
+
| **C#** | Plures.Praxis | NuGet | ✅ Available |
|
|
42
|
+
| **PowerShell** | Praxis.psm1 | GitHub | ✅ Available |
|
|
43
|
+
|
|
34
44
|
### Integration Status
|
|
35
45
|
|
|
36
46
|
| Integration | Status | Notes |
|
|
37
47
|
|------------|--------|-------|
|
|
38
48
|
| **Praxis Cloud** | ✅ Available | Azure-hosted relay for sync & monetization |
|
|
39
|
-
| **PluresDB** |
|
|
40
|
-
| **Unum** |
|
|
49
|
+
| **PluresDB** | ✅ Available | Local-first reactive datastore with 32 tests |
|
|
50
|
+
| **Unum** | ✅ Available | Identity & channels integration |
|
|
41
51
|
| **Svelte 5** | ✅ Full Support | Runes API, stores, history, time-travel |
|
|
42
|
-
| **Tauri** |
|
|
43
|
-
| **CodeCanvas** |
|
|
44
|
-
| **State-Docs** |
|
|
52
|
+
| **Tauri** | ✅ Available | Cross-platform desktop runtime |
|
|
53
|
+
| **CodeCanvas** | ✅ Available | Visual schema editor & FSM enforcement |
|
|
54
|
+
| **State-Docs** | ✅ Available | Documentation generation from schemas |
|
|
45
55
|
|
|
46
56
|
---
|
|
47
57
|
|
|
@@ -49,29 +59,84 @@
|
|
|
49
59
|
|
|
50
60
|
Praxis is not just a logic engine—it's a **complete framework** for building modern, local-first, distributed applications. It provides:
|
|
51
61
|
|
|
52
|
-
- **Declarative Schemas**: Define your data models, logic, and components in a unified schema format
|
|
62
|
+
- **Declarative Schemas**: Define your data models, logic, and components in a unified schema format (PSF)
|
|
53
63
|
- **Logic/State Machines**: Pure, functional application logic with facts, events, rules, and constraints
|
|
54
64
|
- **Component Generation**: Automatically generate Svelte components from schemas
|
|
55
65
|
- **Local-First Data**: Integrated PluresDB for reactive, offline-capable data storage
|
|
56
|
-
- **Documentation Generation**: Automatic
|
|
66
|
+
- **Documentation Generation**: Automatic documentation generation from schemas with Mermaid diagrams
|
|
57
67
|
- **Visual Design**: CodeCanvas integration for visual schema and logic editing
|
|
68
|
+
- **Real-Time Code ↔ Canvas Sync**: Bidirectional synchronization between code and visual editor
|
|
58
69
|
- **Orchestration**: DSC/MCP support for distributed system coordination
|
|
59
70
|
- **Cross-Platform Runtime**: Web, desktop, and mobile via Svelte + Tauri
|
|
60
71
|
|
|
72
|
+
## 🚀 Praxis 1.0 Architecture
|
|
73
|
+
|
|
74
|
+
Praxis 1.0 introduces a **schema-driven, modular architecture** where the Praxis Schema Format (PSF) serves as the single source of truth.
|
|
75
|
+
|
|
76
|
+
### Praxis Schema Format (PSF)
|
|
77
|
+
|
|
78
|
+
PSF is the canonical JSON/AST format that defines your entire application:
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"$version": "1.0.0",
|
|
83
|
+
"id": "my-app",
|
|
84
|
+
"name": "My Application",
|
|
85
|
+
"facts": [...],
|
|
86
|
+
"events": [...],
|
|
87
|
+
"rules": [...],
|
|
88
|
+
"constraints": [...],
|
|
89
|
+
"models": [...],
|
|
90
|
+
"components": [...],
|
|
91
|
+
"flows": [...]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
From this schema, Praxis generates:
|
|
96
|
+
- **TypeScript types** for facts, events, rules
|
|
97
|
+
- **Svelte components** for UI
|
|
98
|
+
- **Markdown documentation** with Mermaid diagrams
|
|
99
|
+
- **Database schemas** for PluresDB
|
|
100
|
+
- **Canvas visualization** for visual editing
|
|
101
|
+
|
|
102
|
+
### Modular Folder Structure
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
/praxis
|
|
106
|
+
├── core/ # Core framework modules
|
|
107
|
+
│ ├── schema-engine/ # PSF types, compiler, generator, validator
|
|
108
|
+
│ ├── logic-engine/ # Rules, constraints, engine, PSF adapter
|
|
109
|
+
│ ├── db-adapter/ # PluresDB sync engine
|
|
110
|
+
│ └── codegen/ # Documentation and code generators
|
|
111
|
+
├── ui/ # UI modules
|
|
112
|
+
│ ├── svelte-generator/ # PSF-aware Svelte component generation
|
|
113
|
+
│ └── canvas/ # Visual canvas state and projection
|
|
114
|
+
├── tools/ # Developer tools
|
|
115
|
+
│ ├── cli/ # Command-line interface
|
|
116
|
+
│ └── watcher/ # File watching and live sync
|
|
117
|
+
├── extensions/ # Optional integrations
|
|
118
|
+
│ ├── dsc/ # DSC/MCP orchestration
|
|
119
|
+
│ ├── azure/ # Azure integration
|
|
120
|
+
│ └── devtools/ # Developer tools
|
|
121
|
+
└── examples/ # Example applications
|
|
122
|
+
├── hero-shop/ # Full e-commerce example
|
|
123
|
+
└── todo/ # Minimal todo example
|
|
124
|
+
```
|
|
125
|
+
|
|
61
126
|
### Framework Philosophy
|
|
62
127
|
|
|
63
128
|
### Core Framework Components
|
|
64
129
|
|
|
65
130
|
Praxis provides these integrated capabilities:
|
|
66
131
|
|
|
67
|
-
- **Schema
|
|
132
|
+
- **Schema Engine** – PSF parser, compiler, generator, and validator
|
|
68
133
|
- **Logic Engine** – Typed facts, events, rules, and constraints for application logic
|
|
69
134
|
- **Component Factory** – Generate Svelte components from schemas with data bindings
|
|
70
135
|
- **Data Layer** – PluresDB integration for reactive, local-first data storage
|
|
71
136
|
- **State Machines** – Flows and scenarios for orchestrated behaviors
|
|
72
137
|
- **Actors** – Effectful units for side effects and external system integration
|
|
73
|
-
- **Terminal Nodes** – Execute commands and scripts within the Praxis framework
|
|
74
|
-
- **Documentation** – Automatic
|
|
138
|
+
- **Terminal Nodes** – Execute commands and scripts within the Praxis framework
|
|
139
|
+
- **Documentation** – Automatic documentation generation from schemas with Mermaid diagrams
|
|
75
140
|
- **Visual IDE** – CodeCanvas integration for schema and logic editing
|
|
76
141
|
- **Orchestration** – DSC/MCP support for distributed coordination
|
|
77
142
|
- **CLI Tools** – Command-line interface for scaffolding and generation
|
|
@@ -144,20 +209,26 @@ Praxis provides these integrated capabilities:
|
|
|
144
209
|
- 🔒 **Type-Safe**: Full TypeScript support with strict typing
|
|
145
210
|
- 🔍 **Introspection**: Generate schemas, graphs, and visualizations of your logic
|
|
146
211
|
- 🌐 **Cross-Language**: PowerShell adapter with protocol versioning (C# coming soon)
|
|
147
|
-
- 📊 **Comprehensive Testing**:
|
|
212
|
+
- 📊 **Comprehensive Testing**: 197+ TypeScript and 95+ C# tests covering all features
|
|
148
213
|
- 🎭 **Hero Example**: Full e-commerce demo with auth, cart, features, and actors
|
|
149
214
|
|
|
150
|
-
## What's New in v0.
|
|
215
|
+
## What's New in v0.2.0
|
|
151
216
|
|
|
152
217
|
### 🎉 Major Features
|
|
153
218
|
|
|
219
|
+
#### Full Application Framework
|
|
220
|
+
Praxis 0.2.0 transforms from a logic engine into a **complete application framework**:
|
|
221
|
+
- **Complete Schema System**: Comprehensive type definitions for models, components, logic, and orchestration
|
|
222
|
+
- **Component Generation**: Automatic Svelte component generation from schemas
|
|
223
|
+
- **CLI Tools**: `praxis create`, `praxis generate`, `praxis canvas` commands
|
|
224
|
+
- **Cloud Integration**: GitHub-based authentication and tier-based billing
|
|
225
|
+
- **PluresDB Integration**: Local-first reactive datastore with full implementation
|
|
226
|
+
|
|
154
227
|
#### Svelte 5 Integration (@plures/praxis/svelte)
|
|
155
|
-
- **Runes Composables**: `
|
|
156
|
-
- **History State Pattern**:
|
|
157
|
-
- **Time-Travel Debugging**: Navigate through state snapshots
|
|
158
|
-
- **Undo/Redo**: Built-in with configurable history size
|
|
228
|
+
- **Runes Composables**: `usePraxisState`, `usePraxisHistory`, `usePraxisComputed`
|
|
229
|
+
- **History State Pattern**: Time-travel debugging with undo/redo
|
|
159
230
|
- **Store API**: Compatible with Svelte 4 and 5
|
|
160
|
-
- **
|
|
231
|
+
- **Full TypeScript support** with generics
|
|
161
232
|
|
|
162
233
|
#### Documentation & Guides
|
|
163
234
|
- **[Svelte Integration Guide](docs/guides/svelte-integration.md)**: Complete guide to Svelte 5 integration
|
|
@@ -166,15 +237,23 @@ Praxis provides these integrated capabilities:
|
|
|
166
237
|
- **[Advanced Todo Example](src/examples/advanced-todo/)**: Full-featured demo with history
|
|
167
238
|
|
|
168
239
|
### 🧪 Hardened TypeScript Core
|
|
169
|
-
- **
|
|
240
|
+
- **197 comprehensive tests** (up from 9 in v0.1.0) covering:
|
|
170
241
|
- Svelte integration with runes and stores
|
|
242
|
+
- PluresDB integration (32 tests)
|
|
171
243
|
- History state management and navigation
|
|
172
244
|
- Edge cases and failure paths
|
|
173
245
|
- Actor lifecycle and state change notifications
|
|
174
246
|
- Constraint violations and rule errors
|
|
175
247
|
- Registry operations and module composition
|
|
248
|
+
- Cloud integration and billing
|
|
249
|
+
- Terminal node functionality
|
|
176
250
|
- Full test coverage ensures production-ready reliability
|
|
177
251
|
|
|
252
|
+
### 🔒 C# Implementation
|
|
253
|
+
- **95 comprehensive C# tests** with full parity to TypeScript features
|
|
254
|
+
- Functional, immutable design with records
|
|
255
|
+
- NuGet package available
|
|
256
|
+
|
|
178
257
|
### 📖 Protocol Versioning (v1.0.0)
|
|
179
258
|
- **Explicit protocol version** (`protocolVersion` field in state)
|
|
180
259
|
- **Stability guarantees** for cross-language compatibility
|
|
@@ -214,6 +293,20 @@ A comprehensive example demonstrating all Praxis features:
|
|
|
214
293
|
npm install @plures/praxis
|
|
215
294
|
```
|
|
216
295
|
|
|
296
|
+
### NuGet (.NET / C#)
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
dotnet add package Plures.Praxis
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Or add to your `.csproj`:
|
|
303
|
+
|
|
304
|
+
```xml
|
|
305
|
+
<PackageReference Include="Plures.Praxis" Version="0.2.1" />
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
See [C# Documentation](./csharp/Praxis/README.md) for detailed usage.
|
|
309
|
+
|
|
217
310
|
### JSR (Deno)
|
|
218
311
|
|
|
219
312
|
```bash
|
|
@@ -227,7 +320,7 @@ For now, you can use Praxis with Deno via import maps:
|
|
|
227
320
|
// import_map.json
|
|
228
321
|
{
|
|
229
322
|
"imports": {
|
|
230
|
-
"@plures/praxis": "npm:@plures/praxis@^0.1
|
|
323
|
+
"@plures/praxis": "npm:@plures/praxis@^0.2.1"
|
|
231
324
|
}
|
|
232
325
|
}
|
|
233
326
|
```
|
|
@@ -239,14 +332,15 @@ For now, you can use Praxis with Deno via import maps:
|
|
|
239
332
|
git clone https://github.com/plures/praxis.git
|
|
240
333
|
cd praxis
|
|
241
334
|
|
|
242
|
-
#
|
|
335
|
+
# TypeScript
|
|
243
336
|
npm install
|
|
244
|
-
|
|
245
|
-
# Build
|
|
246
337
|
npm run build
|
|
247
|
-
|
|
248
|
-
# Run tests
|
|
249
338
|
npm test
|
|
339
|
+
|
|
340
|
+
# C#
|
|
341
|
+
cd csharp
|
|
342
|
+
dotnet build
|
|
343
|
+
dotnet test
|
|
250
344
|
```
|
|
251
345
|
|
|
252
346
|
## Quick Start
|
|
@@ -510,25 +604,41 @@ This protocol is:
|
|
|
510
604
|
│ │ └── introspection.ts # Introspection and visualization
|
|
511
605
|
│ ├── component/ # Component generation
|
|
512
606
|
│ │ └── generator.ts # Svelte component generator
|
|
607
|
+
│ ├── pluresdb/ # PluresDB integration core
|
|
608
|
+
│ │ ├── adapter.ts # Database adapter interface
|
|
609
|
+
│ │ ├── store.ts # Reactive store implementation
|
|
610
|
+
│ │ ├── schema-registry.ts # Schema registry for PluresDB
|
|
611
|
+
│ │ └── generator.ts # PluresDB config generator
|
|
513
612
|
│ └── runtime/ # Runtime abstractions
|
|
613
|
+
├── cloud/ # Praxis Cloud integration
|
|
614
|
+
│ ├── auth.ts # GitHub OAuth authentication
|
|
615
|
+
│ ├── billing.ts # Tier-based billing
|
|
616
|
+
│ ├── provisioning.ts # Tenant provisioning
|
|
617
|
+
│ └── relay/ # Azure relay service
|
|
514
618
|
├── integrations/ # Ecosystem integrations
|
|
515
|
-
│ ├── pluresdb
|
|
619
|
+
│ ├── pluresdb.ts # PluresDB integration exports
|
|
620
|
+
│ ├── svelte.ts # Svelte 5 integration
|
|
516
621
|
│ ├── unum/ # Unum identity and channels
|
|
517
622
|
│ ├── adp/ # Architectural Decision Protocol
|
|
518
623
|
│ ├── state-docs/ # State-Docs documentation
|
|
519
624
|
│ └── canvas/ # CodeCanvas visual editor
|
|
625
|
+
├── components/ # Svelte components
|
|
626
|
+
│ └── TerminalNode.svelte # Terminal node component
|
|
520
627
|
├── cli/ # Command-line interface
|
|
521
628
|
│ ├── index.ts # CLI entry point
|
|
522
629
|
│ └── commands/ # Command implementations
|
|
523
630
|
├── templates/ # Project templates
|
|
524
631
|
│ ├── basic-app/ # Basic application template
|
|
525
|
-
│
|
|
526
|
-
│ ├── component/ # Component template
|
|
527
|
-
│ └── orchestrator/ # Distributed orchestration template
|
|
632
|
+
│ └── fullstack-app/ # Full-stack template
|
|
528
633
|
├── examples/ # Example applications
|
|
529
634
|
│ ├── offline-chat/ # Offline-first chat demo
|
|
530
635
|
│ ├── knowledge-canvas/ # Knowledge management with Canvas
|
|
531
636
|
│ ├── distributed-node/ # Self-orchestrating node demo
|
|
637
|
+
│ ├── terminal-node/ # Terminal node demo
|
|
638
|
+
│ ├── terminal-canvas/ # Terminal + canvas demo
|
|
639
|
+
│ ├── cloud-sync/ # Cloud sync demo
|
|
640
|
+
│ ├── github-monetization/ # GitHub monetization demo
|
|
641
|
+
│ ├── simple-app/ # Simple app demo
|
|
532
642
|
│ ├── auth-basic/ # Login/logout example
|
|
533
643
|
│ ├── cart/ # Shopping cart example
|
|
534
644
|
│ ├── svelte-counter/ # Svelte integration example
|
|
@@ -546,7 +656,7 @@ See [FRAMEWORK.md](./FRAMEWORK.md) for complete architecture documentation.
|
|
|
546
656
|
|
|
547
657
|
## Examples
|
|
548
658
|
|
|
549
|
-
The repository includes
|
|
659
|
+
The repository includes 12 complete examples:
|
|
550
660
|
|
|
551
661
|
### 1. Hero E-Commerce (`src/examples/hero-ecommerce`)
|
|
552
662
|
**NEW!** Comprehensive example demonstrating all Praxis features in a single application:
|
|
@@ -631,6 +741,26 @@ npm run build
|
|
|
631
741
|
node dist/examples/svelte-counter/index.js
|
|
632
742
|
```
|
|
633
743
|
|
|
744
|
+
### 9. Terminal Canvas (`examples/terminal-canvas`)
|
|
745
|
+
Combines terminal nodes with visual canvas features in a Svelte app.
|
|
746
|
+
|
|
747
|
+
See [examples/terminal-canvas/README.md](./examples/terminal-canvas/README.md)
|
|
748
|
+
|
|
749
|
+
### 10. GitHub Monetization (`examples/github-monetization`)
|
|
750
|
+
Example of GitHub-based monetization integration with Praxis Cloud.
|
|
751
|
+
|
|
752
|
+
See [examples/github-monetization/README.md](./examples/github-monetization/README.md)
|
|
753
|
+
|
|
754
|
+
### 11. Simple App (`examples/simple-app`)
|
|
755
|
+
A minimal example demonstrating basic Praxis schema usage.
|
|
756
|
+
|
|
757
|
+
See [examples/simple-app/README.md](./examples/simple-app/README.md)
|
|
758
|
+
|
|
759
|
+
### 12. Cloud Sync (`examples/cloud-sync`)
|
|
760
|
+
Demonstrates real-time synchronization with Praxis Cloud relay service.
|
|
761
|
+
|
|
762
|
+
See [examples/cloud-sync/README.md](./examples/cloud-sync/README.md)
|
|
763
|
+
|
|
634
764
|
## API Reference
|
|
635
765
|
|
|
636
766
|
### Core Types
|
|
@@ -704,34 +834,51 @@ Praxis integrates with the full Plures ecosystem:
|
|
|
704
834
|
|
|
705
835
|
### PluresDB Integration
|
|
706
836
|
|
|
707
|
-
Local-first reactive datastore for offline-capable applications.
|
|
837
|
+
Local-first reactive datastore for offline-capable applications. **Now fully implemented** with 32 tests covering all features.
|
|
708
838
|
|
|
709
839
|
```typescript
|
|
710
|
-
import {
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
840
|
+
import {
|
|
841
|
+
createInMemoryDB,
|
|
842
|
+
createPraxisDBStore,
|
|
843
|
+
createPluresDBAdapter,
|
|
844
|
+
attachToEngine
|
|
845
|
+
} from '@plures/praxis/pluresdb';
|
|
846
|
+
|
|
847
|
+
// Create an in-memory database
|
|
848
|
+
const db = createInMemoryDB();
|
|
849
|
+
|
|
850
|
+
// Create a PraxisDB store for facts and events
|
|
851
|
+
const store = createPraxisDBStore({ db });
|
|
852
|
+
|
|
853
|
+
// Or create an adapter to attach to an engine
|
|
854
|
+
const adapter = createPluresDBAdapter({
|
|
855
|
+
db,
|
|
856
|
+
registry,
|
|
857
|
+
initialContext: {}
|
|
726
858
|
});
|
|
727
859
|
|
|
728
|
-
//
|
|
729
|
-
|
|
730
|
-
|
|
860
|
+
// Attach adapter to engine for automatic persistence
|
|
861
|
+
adapter.attachEngine(engine);
|
|
862
|
+
|
|
863
|
+
// Persist facts and events
|
|
864
|
+
await adapter.persistFacts([{ tag: "UserLoggedIn", payload: { userId: "alice" } }]);
|
|
865
|
+
await adapter.persistEvents([{ tag: "LOGIN", payload: { username: "alice" } }]);
|
|
866
|
+
|
|
867
|
+
// Subscribe to changes
|
|
868
|
+
adapter.subscribeToEvents((events) => {
|
|
869
|
+
console.log("New events:", events);
|
|
870
|
+
});
|
|
731
871
|
```
|
|
732
872
|
|
|
733
|
-
**
|
|
734
|
-
**
|
|
873
|
+
**Features:**
|
|
874
|
+
- **In-memory adapter**: Ready-to-use implementation for development and testing
|
|
875
|
+
- **Reactive store**: Watch for changes with callbacks
|
|
876
|
+
- **Schema registry**: Store and retrieve schemas in PluresDB
|
|
877
|
+
- **Config generator**: Generate PluresDB configuration from Praxis schemas
|
|
878
|
+
- **Engine integration**: Automatic fact/event persistence
|
|
879
|
+
|
|
880
|
+
**Status**: ✅ Available (`src/core/pluresdb/`, `src/integrations/pluresdb.ts`)
|
|
881
|
+
**Tests**: 32 tests covering adapter, store, registry, and engine integration
|
|
735
882
|
|
|
736
883
|
### Unum Integration
|
|
737
884
|
|
|
@@ -887,24 +1034,69 @@ Write-Host "Count: $($result.state.context.count)"
|
|
|
887
1034
|
|
|
888
1035
|
See [powershell/README.md](./powershell/README.md) for complete documentation and examples.
|
|
889
1036
|
|
|
890
|
-
### C# (
|
|
1037
|
+
### C# (.NET 8+)
|
|
1038
|
+
|
|
1039
|
+
**NEW!** Full C# implementation with functional, immutable design:
|
|
1040
|
+
|
|
1041
|
+
```csharp
|
|
1042
|
+
using Praxis.Core;
|
|
1043
|
+
using Praxis.Dsl;
|
|
1044
|
+
|
|
1045
|
+
// Define facts and events
|
|
1046
|
+
var UserLoggedIn = PraxisDsl.DefineFact<UserPayload>("UserLoggedIn");
|
|
1047
|
+
var Login = PraxisDsl.DefineEvent<LoginPayload>("LOGIN");
|
|
1048
|
+
|
|
1049
|
+
record UserPayload(string UserId);
|
|
1050
|
+
record LoginPayload(string Username);
|
|
1051
|
+
|
|
1052
|
+
// Define rules
|
|
1053
|
+
var loginRule = PraxisDsl.DefineRule<AuthContext>(
|
|
1054
|
+
id: "auth.login",
|
|
1055
|
+
description: "Process login event",
|
|
1056
|
+
impl: (state, context, events) =>
|
|
1057
|
+
{
|
|
1058
|
+
var loginEvent = events.FindEvent(Login);
|
|
1059
|
+
if (loginEvent != null)
|
|
1060
|
+
{
|
|
1061
|
+
var payload = Login.GetPayload(loginEvent);
|
|
1062
|
+
return [UserLoggedIn.Create(new UserPayload(payload?.Username ?? "unknown"))];
|
|
1063
|
+
}
|
|
1064
|
+
return [];
|
|
1065
|
+
});
|
|
891
1066
|
|
|
892
|
-
|
|
1067
|
+
// Create engine
|
|
1068
|
+
var registry = new PraxisRegistry<AuthContext>();
|
|
1069
|
+
registry.RegisterRule(loginRule);
|
|
1070
|
+
|
|
1071
|
+
var engine = PraxisEngine.Create(new PraxisEngineOptions<AuthContext>
|
|
1072
|
+
{
|
|
1073
|
+
InitialContext = new AuthContext(null),
|
|
1074
|
+
Registry = registry
|
|
1075
|
+
});
|
|
1076
|
+
|
|
1077
|
+
// Dispatch events
|
|
1078
|
+
var result = engine.Step([Login.Create(new LoginPayload("alice"))]);
|
|
1079
|
+
Console.WriteLine($"Facts: {result.State.Facts.Count}"); // Facts: 1
|
|
1080
|
+
```
|
|
1081
|
+
|
|
1082
|
+
See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for complete documentation.
|
|
893
1083
|
|
|
894
1084
|
## Future Roadmap
|
|
895
1085
|
|
|
896
|
-
### Short Term (v0.2.
|
|
897
|
-
- Complete CLI implementation
|
|
898
|
-
- Basic project templates
|
|
899
|
-
- Component generation MVP
|
|
900
|
-
-
|
|
1086
|
+
### Short Term (v0.2.x) ✅
|
|
1087
|
+
- ✅ Complete CLI implementation
|
|
1088
|
+
- ✅ Basic project templates
|
|
1089
|
+
- ✅ Component generation MVP
|
|
1090
|
+
- ✅ C# implementation with NuGet publishing (95 tests)
|
|
1091
|
+
- ✅ PluresDB integration with full test coverage (32 tests)
|
|
1092
|
+
- ✅ Praxis Cloud with GitHub authentication and billing
|
|
901
1093
|
|
|
902
1094
|
### Medium Term (v0.3.0 - v0.5.0)
|
|
903
1095
|
- Full CodeCanvas integration
|
|
904
1096
|
- Unum identity support
|
|
905
1097
|
- State-Docs generation
|
|
906
1098
|
- Multi-language schemas
|
|
907
|
-
-
|
|
1099
|
+
- Real PluresDB sync (CRDT/offline-first)
|
|
908
1100
|
|
|
909
1101
|
### Long Term (v1.0.0+)
|
|
910
1102
|
- Mobile templates (iOS, Android)
|
|
@@ -917,26 +1109,38 @@ Cross-language adapter for C# is planned with similar JSON-based protocol.
|
|
|
917
1109
|
|
|
918
1110
|
### Ecosystem Integration
|
|
919
1111
|
|
|
920
|
-
- **Svelte v5**: Full reactive binding support
|
|
921
|
-
- **
|
|
922
|
-
- **
|
|
1112
|
+
- **Svelte v5**: ✅ Full reactive binding support with runes and history
|
|
1113
|
+
- **PluresDB**: ✅ Reactive datastore integration with 32 tests
|
|
1114
|
+
- **Cloud**: ✅ GitHub-based auth and tier billing
|
|
1115
|
+
- **unum**: 🚧 Identity/channels and messaging
|
|
923
1116
|
- **Visualization**: VSCode extension, docs generator, canvas tools (introspection API ready)
|
|
924
1117
|
- **ADP**: Architectural guardrails and static checks
|
|
925
1118
|
|
|
926
1119
|
### Cross-Language Support
|
|
927
1120
|
|
|
928
|
-
The core protocol is
|
|
1121
|
+
The core protocol is implemented across multiple languages:
|
|
929
1122
|
|
|
930
|
-
**C# (
|
|
1123
|
+
**C# (Available):**
|
|
931
1124
|
```csharp
|
|
932
|
-
|
|
1125
|
+
// Full functional C# implementation with immutable records
|
|
1126
|
+
var engine = PraxisEngine.Create(new PraxisEngineOptions<TContext> { ... });
|
|
1127
|
+
var result = engine.Step(events);
|
|
933
1128
|
```
|
|
934
1129
|
|
|
935
|
-
|
|
1130
|
+
See [csharp/Praxis/README.md](./csharp/Praxis/README.md) for full documentation.
|
|
1131
|
+
|
|
1132
|
+
**PowerShell (Available):**
|
|
936
1133
|
```powershell
|
|
937
1134
|
$newState = Invoke-PraxisStep -State $state -Events $events
|
|
938
1135
|
```
|
|
939
1136
|
|
|
1137
|
+
See [powershell/README.md](./powershell/README.md) for full documentation.
|
|
1138
|
+
|
|
1139
|
+
### Cross-Language Sync Strategy
|
|
1140
|
+
|
|
1141
|
+
All implementations share the same protocol version and JSON format for interoperability.
|
|
1142
|
+
See [CROSS_LANGUAGE_SYNC.md](./CROSS_LANGUAGE_SYNC.md) for details on keeping implementations in sync.
|
|
1143
|
+
|
|
940
1144
|
### Advanced Features
|
|
941
1145
|
|
|
942
1146
|
- Prolog/CLP-inspired features (facts, rules, declarative constraints, goal-style interactions)
|
|
@@ -1240,12 +1444,14 @@ if (result.effects) {
|
|
|
1240
1444
|
|
|
1241
1445
|
## Future Roadmap
|
|
1242
1446
|
|
|
1243
|
-
-
|
|
1244
|
-
-
|
|
1245
|
-
-
|
|
1246
|
-
-
|
|
1247
|
-
-
|
|
1248
|
-
-
|
|
1447
|
+
- ✅ **Svelte v5 Integration**: First-class support for Svelte 5 runes (available)
|
|
1448
|
+
- ✅ **PluresDB Integration**: Reactive datastore with 32 tests (available)
|
|
1449
|
+
- ✅ **C# Port**: Cross-platform compatibility with 95 tests (available)
|
|
1450
|
+
- ✅ **PowerShell Module**: Scripting and automation support (available)
|
|
1451
|
+
- 🚧 **Unum Integration**: Identity and channels (in progress)
|
|
1452
|
+
- 🚧 **CodeCanvas**: Visual schema and logic editor (planned)
|
|
1453
|
+
- 🚧 **State-Docs**: Documentation generation (planned)
|
|
1454
|
+
- 📊 **Visualization**: Flow and state visualization tools (introspection ready)
|
|
1249
1455
|
|
|
1250
1456
|
## Development
|
|
1251
1457
|
|