@plures/praxis 0.2.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -61
- 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/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/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/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/loader.js +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
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development Server Command
|
|
3
|
+
*
|
|
4
|
+
* Starts the Praxis development server with Vite.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { spawn } from 'child_process';
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Development server options
|
|
13
|
+
*/
|
|
14
|
+
export interface DevOptions {
|
|
15
|
+
/** Port number */
|
|
16
|
+
port?: string;
|
|
17
|
+
/** Host to bind to */
|
|
18
|
+
host?: string;
|
|
19
|
+
/** Open browser */
|
|
20
|
+
open?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Start development server
|
|
25
|
+
*/
|
|
26
|
+
export async function dev(options: DevOptions): Promise<void> {
|
|
27
|
+
const port = options.port || '5173';
|
|
28
|
+
const host = options.host || 'localhost';
|
|
29
|
+
|
|
30
|
+
console.log('\n╔═══════════════════════════════════════════════════╗');
|
|
31
|
+
console.log('║ Praxis Development Server ║');
|
|
32
|
+
console.log('╚═══════════════════════════════════════════════════╝\n');
|
|
33
|
+
|
|
34
|
+
// Check if we're in a Praxis project
|
|
35
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
36
|
+
const viteConfigPath = path.join(process.cwd(), 'vite.config.ts');
|
|
37
|
+
void viteConfigPath; // Silence unused variable warning
|
|
38
|
+
|
|
39
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
40
|
+
console.error('Error: No package.json found in current directory.');
|
|
41
|
+
console.log('Make sure you are in a Praxis project directory.\n');
|
|
42
|
+
console.log('To create a new project, run:');
|
|
43
|
+
console.log(' praxis create app my-app\n');
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Read package.json to check for dev script
|
|
48
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
49
|
+
|
|
50
|
+
if (!packageJson.scripts?.dev) {
|
|
51
|
+
console.error('Error: No "dev" script found in package.json.');
|
|
52
|
+
console.log('\nTo use the Praxis dev server, add a dev script to your package.json:');
|
|
53
|
+
console.log(' "scripts": {');
|
|
54
|
+
console.log(' "dev": "vite"');
|
|
55
|
+
console.log(' }\n');
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log(`Starting development server on http://${host}:${port}\n`);
|
|
60
|
+
|
|
61
|
+
// Spawn npm run dev with port configuration
|
|
62
|
+
const args = ['run', 'dev', '--', '--port', port, '--host', host];
|
|
63
|
+
if (options.open) {
|
|
64
|
+
args.push('--open');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const child = spawn('npm', args, {
|
|
68
|
+
stdio: 'inherit',
|
|
69
|
+
shell: true,
|
|
70
|
+
cwd: process.cwd(),
|
|
71
|
+
env: {
|
|
72
|
+
...process.env,
|
|
73
|
+
FORCE_COLOR: '1',
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
child.on('error', (error) => {
|
|
78
|
+
console.error('Failed to start development server:', error.message);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
child.on('exit', (code) => {
|
|
83
|
+
if (code !== 0 && code !== null) {
|
|
84
|
+
console.error(`Development server exited with code ${code}`);
|
|
85
|
+
process.exit(code);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// Handle Ctrl+C gracefully
|
|
90
|
+
process.on('SIGINT', () => {
|
|
91
|
+
console.log('\n\nStopping development server...');
|
|
92
|
+
child.kill('SIGTERM');
|
|
93
|
+
process.exit(0);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrate Command
|
|
3
|
+
*
|
|
4
|
+
* Manages distributed orchestration and coordination.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Orchestration configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface OrchestrationConfig {
|
|
13
|
+
/** Node identifier */
|
|
14
|
+
nodeId: string;
|
|
15
|
+
/** Node role */
|
|
16
|
+
role: 'primary' | 'replica' | 'worker';
|
|
17
|
+
/** Cluster endpoints */
|
|
18
|
+
endpoints: string[];
|
|
19
|
+
/** Sync configuration */
|
|
20
|
+
sync: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
interval: number;
|
|
23
|
+
conflictResolution: 'last-write-wins' | 'merge' | 'manual';
|
|
24
|
+
};
|
|
25
|
+
/** Health check configuration */
|
|
26
|
+
health: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
interval: number;
|
|
29
|
+
timeout: number;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Orchestrate command options
|
|
35
|
+
*/
|
|
36
|
+
export interface OrchestrateOptions {
|
|
37
|
+
/** Configuration file path */
|
|
38
|
+
config?: string;
|
|
39
|
+
/** Number of nodes */
|
|
40
|
+
nodes?: string;
|
|
41
|
+
/** Action to perform */
|
|
42
|
+
action?: 'start' | 'stop' | 'status' | 'init';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Manage orchestration
|
|
47
|
+
*/
|
|
48
|
+
export async function orchestrate(options: OrchestrateOptions): Promise<void> {
|
|
49
|
+
const action = options.action || 'status';
|
|
50
|
+
|
|
51
|
+
console.log('\n╔═══════════════════════════════════════════════════╗');
|
|
52
|
+
console.log('║ Praxis Orchestration ║');
|
|
53
|
+
console.log('╚═══════════════════════════════════════════════════╝\n');
|
|
54
|
+
|
|
55
|
+
switch (action) {
|
|
56
|
+
case 'init':
|
|
57
|
+
await initOrchestration(options);
|
|
58
|
+
break;
|
|
59
|
+
case 'start':
|
|
60
|
+
await startOrchestration(options);
|
|
61
|
+
break;
|
|
62
|
+
case 'stop':
|
|
63
|
+
await stopOrchestration(options);
|
|
64
|
+
break;
|
|
65
|
+
case 'status':
|
|
66
|
+
default:
|
|
67
|
+
await showOrchestrationStatus(options);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Initialize orchestration configuration
|
|
73
|
+
*/
|
|
74
|
+
async function initOrchestration(options: OrchestrateOptions): Promise<void> {
|
|
75
|
+
const configPath = options.config || 'praxis.orchestrate.json';
|
|
76
|
+
|
|
77
|
+
if (fs.existsSync(configPath)) {
|
|
78
|
+
console.log(`Configuration file already exists: ${configPath}`);
|
|
79
|
+
console.log('Use --config to specify a different file.\n');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const defaultConfig: OrchestrationConfig = {
|
|
84
|
+
nodeId: `node-${Date.now().toString(36)}`,
|
|
85
|
+
role: 'primary',
|
|
86
|
+
endpoints: ['ws://localhost:8080/sync'],
|
|
87
|
+
sync: {
|
|
88
|
+
enabled: true,
|
|
89
|
+
interval: 5000,
|
|
90
|
+
conflictResolution: 'last-write-wins',
|
|
91
|
+
},
|
|
92
|
+
health: {
|
|
93
|
+
enabled: true,
|
|
94
|
+
interval: 10000,
|
|
95
|
+
timeout: 5000,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
fs.writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
|
|
100
|
+
|
|
101
|
+
console.log(`✓ Created orchestration config: ${configPath}`);
|
|
102
|
+
console.log('\nConfiguration:');
|
|
103
|
+
console.log(` Node ID: ${defaultConfig.nodeId}`);
|
|
104
|
+
console.log(` Role: ${defaultConfig.role}`);
|
|
105
|
+
console.log(` Endpoints: ${defaultConfig.endpoints.join(', ')}`);
|
|
106
|
+
console.log(` Sync Enabled: ${defaultConfig.sync.enabled}`);
|
|
107
|
+
console.log(` Health Check: ${defaultConfig.health.enabled}\n`);
|
|
108
|
+
console.log('To start orchestration:');
|
|
109
|
+
console.log(` praxis orchestrate --action start --config ${configPath}\n`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Start orchestration
|
|
114
|
+
*/
|
|
115
|
+
async function startOrchestration(options: OrchestrateOptions): Promise<void> {
|
|
116
|
+
const configPath = options.config || 'praxis.orchestrate.json';
|
|
117
|
+
|
|
118
|
+
if (!fs.existsSync(configPath)) {
|
|
119
|
+
console.log(`Configuration file not found: ${configPath}`);
|
|
120
|
+
console.log('\nTo create a configuration:');
|
|
121
|
+
console.log(' praxis orchestrate --action init\n');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const config: OrchestrationConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
126
|
+
|
|
127
|
+
console.log('Starting orchestration...\n');
|
|
128
|
+
console.log(` Node ID: ${config.nodeId}`);
|
|
129
|
+
console.log(` Role: ${config.role}`);
|
|
130
|
+
console.log(` Endpoints: ${config.endpoints.join(', ')}\n`);
|
|
131
|
+
|
|
132
|
+
// In a real implementation, this would:
|
|
133
|
+
// 1. Connect to cluster endpoints
|
|
134
|
+
// 2. Register node with cluster
|
|
135
|
+
// 3. Start sync worker
|
|
136
|
+
// 4. Start health check worker
|
|
137
|
+
|
|
138
|
+
console.log('🔄 Connecting to cluster...');
|
|
139
|
+
|
|
140
|
+
// Simulate connection delay
|
|
141
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
142
|
+
|
|
143
|
+
console.log('✓ Connected to cluster');
|
|
144
|
+
console.log('✓ Sync worker started');
|
|
145
|
+
console.log('✓ Health check enabled\n');
|
|
146
|
+
|
|
147
|
+
console.log('Orchestration is running.');
|
|
148
|
+
console.log('\nTo check status:');
|
|
149
|
+
console.log(' praxis orchestrate --action status\n');
|
|
150
|
+
console.log('To stop:');
|
|
151
|
+
console.log(' praxis orchestrate --action stop\n');
|
|
152
|
+
|
|
153
|
+
// For a full implementation, this would keep running
|
|
154
|
+
// and handle sync/health checks in the background
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Stop orchestration
|
|
159
|
+
*/
|
|
160
|
+
async function stopOrchestration(_options: OrchestrateOptions): Promise<void> {
|
|
161
|
+
console.log('Stopping orchestration...\n');
|
|
162
|
+
|
|
163
|
+
// In a real implementation, this would:
|
|
164
|
+
// 1. Stop sync worker
|
|
165
|
+
// 2. Unregister from cluster
|
|
166
|
+
// 3. Close connections
|
|
167
|
+
|
|
168
|
+
console.log('✓ Sync worker stopped');
|
|
169
|
+
console.log('✓ Unregistered from cluster');
|
|
170
|
+
console.log('✓ Connections closed\n');
|
|
171
|
+
|
|
172
|
+
console.log('Orchestration stopped.\n');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Show orchestration status
|
|
177
|
+
*/
|
|
178
|
+
async function showOrchestrationStatus(options: OrchestrateOptions): Promise<void> {
|
|
179
|
+
const configPath = options.config || 'praxis.orchestrate.json';
|
|
180
|
+
|
|
181
|
+
if (!fs.existsSync(configPath)) {
|
|
182
|
+
console.log('Orchestration not configured.\n');
|
|
183
|
+
console.log('To initialize:');
|
|
184
|
+
console.log(' praxis orchestrate --action init\n');
|
|
185
|
+
console.log('For more information on distributed coordination:');
|
|
186
|
+
console.log(' • Define orchestration in your schema');
|
|
187
|
+
console.log(' • Configure DSC nodes for state synchronization');
|
|
188
|
+
console.log(' • See docs/guides/orchestration.md for patterns\n');
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const config: OrchestrationConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
193
|
+
|
|
194
|
+
console.log('Orchestration Status\n');
|
|
195
|
+
console.log('┌──────────────────────────────────────────────────┐');
|
|
196
|
+
console.log(`│ Node ID: ${config.nodeId.padEnd(36)} │`);
|
|
197
|
+
console.log(`│ Role: ${config.role.padEnd(36)} │`);
|
|
198
|
+
console.log(`│ Status: ${'Configured (not running)'.padEnd(36)} │`);
|
|
199
|
+
console.log('├──────────────────────────────────────────────────┤');
|
|
200
|
+
console.log(`│ Sync: ${(config.sync.enabled ? 'Enabled' : 'Disabled').padEnd(36)} │`);
|
|
201
|
+
console.log(`│ Interval: ${(config.sync.interval + 'ms').padEnd(36)} │`);
|
|
202
|
+
console.log(`│ Resolution: ${config.sync.conflictResolution.padEnd(36)} │`);
|
|
203
|
+
console.log('├──────────────────────────────────────────────────┤');
|
|
204
|
+
console.log(`│ Health: ${(config.health.enabled ? 'Enabled' : 'Disabled').padEnd(36)} │`);
|
|
205
|
+
console.log(`│ Interval: ${(config.health.interval + 'ms').padEnd(36)} │`);
|
|
206
|
+
console.log(`│ Timeout: ${(config.health.timeout + 'ms').padEnd(36)} │`);
|
|
207
|
+
console.log('└──────────────────────────────────────────────────┘\n');
|
|
208
|
+
console.log('Endpoints:');
|
|
209
|
+
config.endpoints.forEach(ep => console.log(` • ${ep}`));
|
|
210
|
+
console.log('\nTo start orchestration:');
|
|
211
|
+
console.log(` praxis orchestrate --action start --config ${configPath}\n`);
|
|
212
|
+
}
|
package/src/cli/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ const program = new Command();
|
|
|
14
14
|
program
|
|
15
15
|
.name('praxis')
|
|
16
16
|
.description('Praxis Framework - Full-stack application development')
|
|
17
|
-
.version('0.1
|
|
17
|
+
.version('0.2.1');
|
|
18
18
|
|
|
19
19
|
// Authentication command
|
|
20
20
|
program
|
|
@@ -64,10 +64,14 @@ program
|
|
|
64
64
|
.option('-t, --template <template>', 'Template to use', 'basic')
|
|
65
65
|
.option('-d, --directory <dir>', 'Output directory')
|
|
66
66
|
.option('--features <features...>', 'Features to include')
|
|
67
|
-
.action((type, name, options) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
.action(async (type, name, options) => {
|
|
68
|
+
try {
|
|
69
|
+
const { create } = await import('./commands/create.js');
|
|
70
|
+
await create(type, name, options);
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error('Error creating:', error);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
71
75
|
});
|
|
72
76
|
|
|
73
77
|
program
|
|
@@ -87,10 +91,16 @@ program
|
|
|
87
91
|
.description('Open CodeCanvas for visual editing')
|
|
88
92
|
.option('-p, --port <port>', 'Port for Canvas server', '3000')
|
|
89
93
|
.option('-m, --mode <mode>', 'Mode (edit, view, present)', 'edit')
|
|
90
|
-
.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
.option('-e, --export <format>', 'Export format (yaml, mermaid, json)')
|
|
95
|
+
.option('-o, --output <file>', 'Output file for export')
|
|
96
|
+
.action(async (schema, options) => {
|
|
97
|
+
try {
|
|
98
|
+
const { canvas } = await import('./commands/canvas.js');
|
|
99
|
+
await canvas(schema, options);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error('Error with canvas:', error);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
94
104
|
});
|
|
95
105
|
|
|
96
106
|
program
|
|
@@ -98,20 +108,31 @@ program
|
|
|
98
108
|
.description('Manage orchestration and distributed coordination')
|
|
99
109
|
.option('-c, --config <file>', 'Orchestration configuration file')
|
|
100
110
|
.option('-n, --nodes <count>', 'Number of nodes', '1')
|
|
101
|
-
.action(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
111
|
+
.option('-a, --action <action>', 'Action (init, start, stop, status)', 'status')
|
|
112
|
+
.action(async (options) => {
|
|
113
|
+
try {
|
|
114
|
+
const { orchestrate } = await import('./commands/orchestrate.js');
|
|
115
|
+
await orchestrate(options);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.error('Error with orchestration:', error);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
105
120
|
});
|
|
106
121
|
|
|
107
122
|
program
|
|
108
123
|
.command('dev')
|
|
109
124
|
.description('Start development server')
|
|
110
125
|
.option('-p, --port <port>', 'Port number', '5173')
|
|
111
|
-
.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
126
|
+
.option('-h, --host <host>', 'Host to bind to', 'localhost')
|
|
127
|
+
.option('-o, --open', 'Open browser')
|
|
128
|
+
.action(async (options) => {
|
|
129
|
+
try {
|
|
130
|
+
const { dev } = await import('./commands/dev.js');
|
|
131
|
+
await dev(options);
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.error('Error starting dev server:', error);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
115
136
|
});
|
|
116
137
|
|
|
117
138
|
program
|
|
@@ -119,10 +140,16 @@ program
|
|
|
119
140
|
.description('Build application for production')
|
|
120
141
|
.option('-o, --output <dir>', 'Output directory', './dist')
|
|
121
142
|
.option('--target <target>', 'Build target (web, desktop, mobile)', 'web')
|
|
122
|
-
.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
143
|
+
.option('--minify', 'Minify output', true)
|
|
144
|
+
.option('--sourcemap', 'Generate source maps', false)
|
|
145
|
+
.action(async (options) => {
|
|
146
|
+
try {
|
|
147
|
+
const { build } = await import('./commands/build.js');
|
|
148
|
+
await build(options);
|
|
149
|
+
} catch (error) {
|
|
150
|
+
console.error('Error building:', error);
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
126
153
|
});
|
|
127
154
|
|
|
128
155
|
// Cloud commands
|
|
@@ -178,9 +178,51 @@ ${styles ? `<style>\n${styles}\n</style>` : ''}`;
|
|
|
178
178
|
lines.push('');
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
// Component logic
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
// Component logic based on component type
|
|
182
|
+
switch (component.type) {
|
|
183
|
+
case 'form':
|
|
184
|
+
lines.push(' // Form handling logic');
|
|
185
|
+
lines.push(' import { createEventDispatcher } from "svelte";');
|
|
186
|
+
lines.push(' const dispatch = createEventDispatcher();');
|
|
187
|
+
lines.push('');
|
|
188
|
+
lines.push(' function handleSubmit() {');
|
|
189
|
+
lines.push(' dispatch("submit", data);');
|
|
190
|
+
lines.push(' }');
|
|
191
|
+
lines.push('');
|
|
192
|
+
lines.push(' function handleReset() {');
|
|
193
|
+
lines.push(' data = { ...initialData };');
|
|
194
|
+
lines.push(' }');
|
|
195
|
+
break;
|
|
196
|
+
case 'list':
|
|
197
|
+
lines.push(' // List handling logic');
|
|
198
|
+
lines.push(' import { createEventDispatcher } from "svelte";');
|
|
199
|
+
lines.push(' const dispatch = createEventDispatcher();');
|
|
200
|
+
lines.push('');
|
|
201
|
+
lines.push(' function handleSelect(item) {');
|
|
202
|
+
lines.push(' dispatch("select", item);');
|
|
203
|
+
lines.push(' }');
|
|
204
|
+
lines.push('');
|
|
205
|
+
lines.push(' function handleDelete(item) {');
|
|
206
|
+
lines.push(' dispatch("delete", item);');
|
|
207
|
+
lines.push(' }');
|
|
208
|
+
break;
|
|
209
|
+
case 'display':
|
|
210
|
+
lines.push(' // Display component - reactive to data changes');
|
|
211
|
+
lines.push(' $: formattedData = data ? JSON.stringify(data, null, 2) : "No data";');
|
|
212
|
+
break;
|
|
213
|
+
case 'navigation':
|
|
214
|
+
lines.push(' // Navigation handling');
|
|
215
|
+
lines.push(' import { createEventDispatcher } from "svelte";');
|
|
216
|
+
lines.push(' const dispatch = createEventDispatcher();');
|
|
217
|
+
lines.push('');
|
|
218
|
+
lines.push(' function navigate(path) {');
|
|
219
|
+
lines.push(' dispatch("navigate", { path });');
|
|
220
|
+
lines.push(' }');
|
|
221
|
+
break;
|
|
222
|
+
default:
|
|
223
|
+
lines.push(' // Component logic');
|
|
224
|
+
lines.push(' $: console.log("Component data updated:", data);');
|
|
225
|
+
}
|
|
184
226
|
|
|
185
227
|
return lines.join('\n');
|
|
186
228
|
}
|
|
@@ -216,11 +216,46 @@ export class LogicGenerator {
|
|
|
216
216
|
lines.push(` priority: ${rule.priority},`);
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
+
// Generate implementation based on rule definition
|
|
220
|
+
const eventTriggers = rule.on || [];
|
|
221
|
+
const condition = rule.when || 'true';
|
|
222
|
+
const action = rule.then;
|
|
223
|
+
|
|
219
224
|
lines.push(' impl: (state, events) => {');
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
225
|
+
|
|
226
|
+
// Add event filtering if triggers are specified
|
|
227
|
+
if (eventTriggers.length > 0) {
|
|
228
|
+
lines.push(` // Filter for triggering events: ${eventTriggers.join(', ')}`);
|
|
229
|
+
lines.push(` const triggerEvents = events.filter(e => `);
|
|
230
|
+
lines.push(` [${eventTriggers.map(e => `'${e}'`).join(', ')}].includes(e.tag)`);
|
|
231
|
+
lines.push(' );');
|
|
232
|
+
lines.push(' if (triggerEvents.length === 0) return [];');
|
|
233
|
+
lines.push('');
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Add condition check
|
|
237
|
+
if (condition && condition !== 'true') {
|
|
238
|
+
lines.push(` // Condition: ${condition}`);
|
|
239
|
+
lines.push(` // Implement condition logic here`);
|
|
240
|
+
lines.push('');
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Parse action to generate appropriate response
|
|
244
|
+
lines.push(` // Action: ${action}`);
|
|
245
|
+
|
|
246
|
+
// Try to generate a fact from the action
|
|
247
|
+
const factMatch = action.match(/emit\s*\(\s*['"](\w+)['"]/);
|
|
248
|
+
if (factMatch) {
|
|
249
|
+
const factName = factMatch[1];
|
|
250
|
+
lines.push(` return [{ tag: '${factName}', payload: {} }];`);
|
|
251
|
+
} else if (action.includes('return')) {
|
|
252
|
+
// If action already has return, use it as-is
|
|
253
|
+
lines.push(` ${action}`);
|
|
254
|
+
} else {
|
|
255
|
+
// Default: return empty array
|
|
256
|
+
lines.push(' return [];');
|
|
257
|
+
}
|
|
258
|
+
|
|
224
259
|
lines.push(' },');
|
|
225
260
|
lines.push('});');
|
|
226
261
|
lines.push('');
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PraxisDB Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides a minimal adapter layer for PluresDB integration.
|
|
5
|
+
* This module defines the core interface and an in-memory implementation.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Function to unsubscribe from a watch
|
|
10
|
+
*/
|
|
11
|
+
export type UnsubscribeFn = () => void;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Core database interface for Praxis
|
|
15
|
+
*
|
|
16
|
+
* Provides a minimal API for get/set/watch operations.
|
|
17
|
+
* Can be backed by in-memory storage or PluresDB.
|
|
18
|
+
*/
|
|
19
|
+
export interface PraxisDB {
|
|
20
|
+
/**
|
|
21
|
+
* Get a value by key
|
|
22
|
+
* @param key The key to retrieve
|
|
23
|
+
* @returns The value or undefined if not found
|
|
24
|
+
*/
|
|
25
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Set a value by key
|
|
29
|
+
* @param key The key to set
|
|
30
|
+
* @param value The value to store
|
|
31
|
+
*/
|
|
32
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Watch a key for changes
|
|
36
|
+
* @param key The key to watch
|
|
37
|
+
* @param callback Called when the value changes
|
|
38
|
+
* @returns Function to unsubscribe from updates
|
|
39
|
+
*/
|
|
40
|
+
watch<T>(key: string, callback: (val: T) => void): UnsubscribeFn;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* In-memory implementation of PraxisDB
|
|
45
|
+
*
|
|
46
|
+
* Provides a simple in-memory store for development and testing.
|
|
47
|
+
* Suitable for proxying to PluresDB later.
|
|
48
|
+
*/
|
|
49
|
+
export class InMemoryPraxisDB implements PraxisDB {
|
|
50
|
+
private store = new Map<string, unknown>();
|
|
51
|
+
private watchers = new Map<string, Set<(val: unknown) => void>>();
|
|
52
|
+
|
|
53
|
+
async get<T>(key: string): Promise<T | undefined> {
|
|
54
|
+
return this.store.get(key) as T | undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async set<T>(key: string, value: T): Promise<void> {
|
|
58
|
+
this.store.set(key, value);
|
|
59
|
+
|
|
60
|
+
// Notify watchers
|
|
61
|
+
const keyWatchers = this.watchers.get(key);
|
|
62
|
+
if (keyWatchers) {
|
|
63
|
+
for (const callback of keyWatchers) {
|
|
64
|
+
callback(value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
watch<T>(key: string, callback: (val: T) => void): UnsubscribeFn {
|
|
70
|
+
if (!this.watchers.has(key)) {
|
|
71
|
+
this.watchers.set(key, new Set());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const watchers = this.watchers.get(key)!;
|
|
75
|
+
const wrappedCallback = (val: unknown) => callback(val as T);
|
|
76
|
+
watchers.add(wrappedCallback);
|
|
77
|
+
|
|
78
|
+
// Return unsubscribe function
|
|
79
|
+
return () => {
|
|
80
|
+
watchers.delete(wrappedCallback);
|
|
81
|
+
if (watchers.size === 0) {
|
|
82
|
+
this.watchers.delete(key);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get all keys (for testing/debugging)
|
|
89
|
+
*/
|
|
90
|
+
keys(): string[] {
|
|
91
|
+
return Array.from(this.store.keys());
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Clear all data (for testing)
|
|
96
|
+
*/
|
|
97
|
+
clear(): void {
|
|
98
|
+
this.store.clear();
|
|
99
|
+
this.watchers.clear();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Create a new in-memory PraxisDB instance
|
|
105
|
+
*
|
|
106
|
+
* @returns InMemoryPraxisDB instance
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* const db = createInMemoryDB();
|
|
111
|
+
* await db.set('user:1', { name: 'Alice' });
|
|
112
|
+
* const user = await db.get('user:1');
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export function createInMemoryDB(): InMemoryPraxisDB {
|
|
116
|
+
return new InMemoryPraxisDB();
|
|
117
|
+
}
|