@plures/praxis 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/FRAMEWORK.md +420 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1310 -0
  4. package/dist/adapters/cli.d.ts +43 -0
  5. package/dist/adapters/cli.d.ts.map +1 -0
  6. package/dist/adapters/cli.js +126 -0
  7. package/dist/adapters/cli.js.map +1 -0
  8. package/dist/cli/commands/auth.d.ts +26 -0
  9. package/dist/cli/commands/auth.d.ts.map +1 -0
  10. package/dist/cli/commands/auth.js +233 -0
  11. package/dist/cli/commands/auth.js.map +1 -0
  12. package/dist/cli/commands/cloud.d.ts +27 -0
  13. package/dist/cli/commands/cloud.d.ts.map +1 -0
  14. package/dist/cli/commands/cloud.js +232 -0
  15. package/dist/cli/commands/cloud.js.map +1 -0
  16. package/dist/cli/commands/generate.d.ts +25 -0
  17. package/dist/cli/commands/generate.d.ts.map +1 -0
  18. package/dist/cli/commands/generate.js +168 -0
  19. package/dist/cli/commands/generate.js.map +1 -0
  20. package/dist/cli/index.d.ts +8 -0
  21. package/dist/cli/index.d.ts.map +1 -0
  22. package/dist/cli/index.js +179 -0
  23. package/dist/cli/index.js.map +1 -0
  24. package/dist/cloud/auth.d.ts +51 -0
  25. package/dist/cloud/auth.d.ts.map +1 -0
  26. package/dist/cloud/auth.js +194 -0
  27. package/dist/cloud/auth.js.map +1 -0
  28. package/dist/cloud/billing.d.ts +184 -0
  29. package/dist/cloud/billing.d.ts.map +1 -0
  30. package/dist/cloud/billing.js +179 -0
  31. package/dist/cloud/billing.js.map +1 -0
  32. package/dist/cloud/client.d.ts +39 -0
  33. package/dist/cloud/client.d.ts.map +1 -0
  34. package/dist/cloud/client.js +176 -0
  35. package/dist/cloud/client.js.map +1 -0
  36. package/dist/cloud/index.d.ts +44 -0
  37. package/dist/cloud/index.d.ts.map +1 -0
  38. package/dist/cloud/index.js +44 -0
  39. package/dist/cloud/index.js.map +1 -0
  40. package/dist/cloud/marketplace.d.ts +166 -0
  41. package/dist/cloud/marketplace.d.ts.map +1 -0
  42. package/dist/cloud/marketplace.js +159 -0
  43. package/dist/cloud/marketplace.js.map +1 -0
  44. package/dist/cloud/provisioning.d.ts +110 -0
  45. package/dist/cloud/provisioning.d.ts.map +1 -0
  46. package/dist/cloud/provisioning.js +148 -0
  47. package/dist/cloud/provisioning.js.map +1 -0
  48. package/dist/cloud/relay/endpoints.d.ts +62 -0
  49. package/dist/cloud/relay/endpoints.d.ts.map +1 -0
  50. package/dist/cloud/relay/endpoints.js +217 -0
  51. package/dist/cloud/relay/endpoints.js.map +1 -0
  52. package/dist/cloud/relay/health/index.d.ts +5 -0
  53. package/dist/cloud/relay/health/index.d.ts.map +1 -0
  54. package/dist/cloud/relay/health/index.js +9 -0
  55. package/dist/cloud/relay/health/index.js.map +1 -0
  56. package/dist/cloud/relay/stats/index.d.ts +5 -0
  57. package/dist/cloud/relay/stats/index.d.ts.map +1 -0
  58. package/dist/cloud/relay/stats/index.js +9 -0
  59. package/dist/cloud/relay/stats/index.js.map +1 -0
  60. package/dist/cloud/relay/sync/index.d.ts +5 -0
  61. package/dist/cloud/relay/sync/index.d.ts.map +1 -0
  62. package/dist/cloud/relay/sync/index.js +9 -0
  63. package/dist/cloud/relay/sync/index.js.map +1 -0
  64. package/dist/cloud/relay/usage/index.d.ts +5 -0
  65. package/dist/cloud/relay/usage/index.d.ts.map +1 -0
  66. package/dist/cloud/relay/usage/index.js +9 -0
  67. package/dist/cloud/relay/usage/index.js.map +1 -0
  68. package/dist/cloud/sponsors.d.ts +81 -0
  69. package/dist/cloud/sponsors.d.ts.map +1 -0
  70. package/dist/cloud/sponsors.js +130 -0
  71. package/dist/cloud/sponsors.js.map +1 -0
  72. package/dist/cloud/types.d.ts +169 -0
  73. package/dist/cloud/types.d.ts.map +1 -0
  74. package/dist/cloud/types.js +7 -0
  75. package/dist/cloud/types.js.map +1 -0
  76. package/dist/components/index.d.ts +43 -0
  77. package/dist/components/index.d.ts.map +1 -0
  78. package/dist/components/index.js +17 -0
  79. package/dist/components/index.js.map +1 -0
  80. package/dist/core/actors.d.ts +95 -0
  81. package/dist/core/actors.d.ts.map +1 -0
  82. package/dist/core/actors.js +158 -0
  83. package/dist/core/actors.js.map +1 -0
  84. package/dist/core/component/generator.d.ts +122 -0
  85. package/dist/core/component/generator.d.ts.map +1 -0
  86. package/dist/core/component/generator.js +307 -0
  87. package/dist/core/component/generator.js.map +1 -0
  88. package/dist/core/engine.d.ts +92 -0
  89. package/dist/core/engine.d.ts.map +1 -0
  90. package/dist/core/engine.js +199 -0
  91. package/dist/core/engine.js.map +1 -0
  92. package/dist/core/introspection.d.ts +141 -0
  93. package/dist/core/introspection.d.ts.map +1 -0
  94. package/dist/core/introspection.js +208 -0
  95. package/dist/core/introspection.js.map +1 -0
  96. package/dist/core/logic/generator.d.ts +76 -0
  97. package/dist/core/logic/generator.d.ts.map +1 -0
  98. package/dist/core/logic/generator.js +339 -0
  99. package/dist/core/logic/generator.js.map +1 -0
  100. package/dist/core/pluresdb/generator.d.ts +58 -0
  101. package/dist/core/pluresdb/generator.d.ts.map +1 -0
  102. package/dist/core/pluresdb/generator.js +162 -0
  103. package/dist/core/pluresdb/generator.js.map +1 -0
  104. package/dist/core/protocol.d.ts +121 -0
  105. package/dist/core/protocol.d.ts.map +1 -0
  106. package/dist/core/protocol.js +46 -0
  107. package/dist/core/protocol.js.map +1 -0
  108. package/dist/core/rules.d.ts +120 -0
  109. package/dist/core/rules.d.ts.map +1 -0
  110. package/dist/core/rules.js +81 -0
  111. package/dist/core/rules.js.map +1 -0
  112. package/dist/core/schema/loader.d.ts +47 -0
  113. package/dist/core/schema/loader.d.ts.map +1 -0
  114. package/dist/core/schema/loader.js +189 -0
  115. package/dist/core/schema/loader.js.map +1 -0
  116. package/dist/core/schema/normalize.d.ts +72 -0
  117. package/dist/core/schema/normalize.d.ts.map +1 -0
  118. package/dist/core/schema/normalize.js +190 -0
  119. package/dist/core/schema/normalize.js.map +1 -0
  120. package/dist/core/schema/types.d.ts +370 -0
  121. package/dist/core/schema/types.d.ts.map +1 -0
  122. package/dist/core/schema/types.js +161 -0
  123. package/dist/core/schema/types.js.map +1 -0
  124. package/dist/dsl/index.d.ts +152 -0
  125. package/dist/dsl/index.d.ts.map +1 -0
  126. package/dist/dsl/index.js +132 -0
  127. package/dist/dsl/index.js.map +1 -0
  128. package/dist/dsl.d.ts +124 -0
  129. package/dist/dsl.d.ts.map +1 -0
  130. package/dist/dsl.js +130 -0
  131. package/dist/dsl.js.map +1 -0
  132. package/dist/examples/advanced-todo/index.d.ts +55 -0
  133. package/dist/examples/advanced-todo/index.d.ts.map +1 -0
  134. package/dist/examples/advanced-todo/index.js +222 -0
  135. package/dist/examples/advanced-todo/index.js.map +1 -0
  136. package/dist/examples/auth-basic/index.d.ts +17 -0
  137. package/dist/examples/auth-basic/index.d.ts.map +1 -0
  138. package/dist/examples/auth-basic/index.js +122 -0
  139. package/dist/examples/auth-basic/index.js.map +1 -0
  140. package/dist/examples/cart/index.d.ts +19 -0
  141. package/dist/examples/cart/index.d.ts.map +1 -0
  142. package/dist/examples/cart/index.js +202 -0
  143. package/dist/examples/cart/index.js.map +1 -0
  144. package/dist/examples/hero-ecommerce/index.d.ts +39 -0
  145. package/dist/examples/hero-ecommerce/index.d.ts.map +1 -0
  146. package/dist/examples/hero-ecommerce/index.js +506 -0
  147. package/dist/examples/hero-ecommerce/index.js.map +1 -0
  148. package/dist/examples/svelte-counter/index.d.ts +31 -0
  149. package/dist/examples/svelte-counter/index.d.ts.map +1 -0
  150. package/dist/examples/svelte-counter/index.js +123 -0
  151. package/dist/examples/svelte-counter/index.js.map +1 -0
  152. package/dist/flows.d.ts +125 -0
  153. package/dist/flows.d.ts.map +1 -0
  154. package/dist/flows.js +160 -0
  155. package/dist/flows.js.map +1 -0
  156. package/dist/index.d.ts +67 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +59 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/integrations/pluresdb.d.ts +56 -0
  161. package/dist/integrations/pluresdb.d.ts.map +1 -0
  162. package/dist/integrations/pluresdb.js +46 -0
  163. package/dist/integrations/pluresdb.js.map +1 -0
  164. package/dist/integrations/svelte.d.ts +306 -0
  165. package/dist/integrations/svelte.d.ts.map +1 -0
  166. package/dist/integrations/svelte.js +447 -0
  167. package/dist/integrations/svelte.js.map +1 -0
  168. package/dist/registry.d.ts +94 -0
  169. package/dist/registry.d.ts.map +1 -0
  170. package/dist/registry.js +181 -0
  171. package/dist/registry.js.map +1 -0
  172. package/dist/runtime/terminal-adapter.d.ts +105 -0
  173. package/dist/runtime/terminal-adapter.d.ts.map +1 -0
  174. package/dist/runtime/terminal-adapter.js +113 -0
  175. package/dist/runtime/terminal-adapter.js.map +1 -0
  176. package/dist/step.d.ts +34 -0
  177. package/dist/step.d.ts.map +1 -0
  178. package/dist/step.js +111 -0
  179. package/dist/step.js.map +1 -0
  180. package/dist/types.d.ts +63 -0
  181. package/dist/types.d.ts.map +1 -0
  182. package/dist/types.js +6 -0
  183. package/dist/types.js.map +1 -0
  184. package/docs/MONETIZATION.md +394 -0
  185. package/docs/TERMINAL_NODE.md +588 -0
  186. package/docs/guides/canvas.md +389 -0
  187. package/docs/guides/getting-started.md +347 -0
  188. package/docs/guides/history-state-pattern.md +618 -0
  189. package/docs/guides/orchestration.md +617 -0
  190. package/docs/guides/parallel-state-pattern.md +767 -0
  191. package/docs/guides/svelte-integration.md +691 -0
  192. package/package.json +96 -0
  193. package/src/__tests__/actors.test.ts +270 -0
  194. package/src/__tests__/billing.test.ts +175 -0
  195. package/src/__tests__/cloud.test.ts +247 -0
  196. package/src/__tests__/dsl.test.ts +154 -0
  197. package/src/__tests__/edge-cases.test.ts +475 -0
  198. package/src/__tests__/engine.test.ts +137 -0
  199. package/src/__tests__/generators.test.ts +270 -0
  200. package/src/__tests__/introspection.test.ts +321 -0
  201. package/src/__tests__/protocol.test.ts +40 -0
  202. package/src/__tests__/provisioning.test.ts +162 -0
  203. package/src/__tests__/schema.test.ts +241 -0
  204. package/src/__tests__/svelte-integration.test.ts +431 -0
  205. package/src/__tests__/terminal-node.test.ts +352 -0
  206. package/src/adapters/cli.ts +175 -0
  207. package/src/cli/commands/auth.ts +271 -0
  208. package/src/cli/commands/cloud.ts +281 -0
  209. package/src/cli/commands/generate.ts +225 -0
  210. package/src/cli/index.ts +190 -0
  211. package/src/cloud/README.md +383 -0
  212. package/src/cloud/auth.ts +245 -0
  213. package/src/cloud/billing.ts +336 -0
  214. package/src/cloud/client.ts +221 -0
  215. package/src/cloud/index.ts +121 -0
  216. package/src/cloud/marketplace.ts +303 -0
  217. package/src/cloud/provisioning.ts +254 -0
  218. package/src/cloud/relay/endpoints.ts +307 -0
  219. package/src/cloud/relay/health/function.json +17 -0
  220. package/src/cloud/relay/health/index.ts +10 -0
  221. package/src/cloud/relay/host.json +15 -0
  222. package/src/cloud/relay/local.settings.json +8 -0
  223. package/src/cloud/relay/stats/function.json +17 -0
  224. package/src/cloud/relay/stats/index.ts +10 -0
  225. package/src/cloud/relay/sync/function.json +17 -0
  226. package/src/cloud/relay/sync/index.ts +10 -0
  227. package/src/cloud/relay/usage/function.json +17 -0
  228. package/src/cloud/relay/usage/index.ts +10 -0
  229. package/src/cloud/sponsors.ts +213 -0
  230. package/src/cloud/types.ts +198 -0
  231. package/src/components/README.md +125 -0
  232. package/src/components/TerminalNode.svelte +457 -0
  233. package/src/components/index.ts +46 -0
  234. package/src/core/actors.ts +205 -0
  235. package/src/core/component/generator.ts +432 -0
  236. package/src/core/engine.ts +243 -0
  237. package/src/core/introspection.ts +329 -0
  238. package/src/core/logic/generator.ts +420 -0
  239. package/src/core/pluresdb/generator.ts +229 -0
  240. package/src/core/protocol.ts +132 -0
  241. package/src/core/rules.ts +167 -0
  242. package/src/core/schema/loader.ts +247 -0
  243. package/src/core/schema/normalize.ts +322 -0
  244. package/src/core/schema/types.ts +557 -0
  245. package/src/dsl/index.ts +218 -0
  246. package/src/dsl.ts +214 -0
  247. package/src/examples/advanced-todo/App.svelte +506 -0
  248. package/src/examples/advanced-todo/README.md +371 -0
  249. package/src/examples/advanced-todo/index.ts +309 -0
  250. package/src/examples/auth-basic/index.ts +163 -0
  251. package/src/examples/cart/index.ts +259 -0
  252. package/src/examples/hero-ecommerce/index.ts +657 -0
  253. package/src/examples/svelte-counter/index.ts +168 -0
  254. package/src/flows.ts +268 -0
  255. package/src/index.ts +154 -0
  256. package/src/integrations/pluresdb.ts +93 -0
  257. package/src/integrations/svelte.ts +617 -0
  258. package/src/registry.ts +223 -0
  259. package/src/runtime/terminal-adapter.ts +175 -0
  260. package/src/step.ts +151 -0
  261. package/src/types.ts +70 -0
  262. package/templates/basic-app/README.md +147 -0
  263. package/templates/fullstack-app/README.md +279 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Praxis Schema Normalizer
3
+ *
4
+ * Expands and normalizes schema definitions for code generation.
5
+ */
6
+ import type { PraxisSchema, ModelDefinition, ComponentDefinition, LogicDefinition, FieldDefinition } from './types.js';
7
+ /**
8
+ * Normalized schema with expanded and validated definitions
9
+ */
10
+ export interface NormalizedSchema extends PraxisSchema {
11
+ /** Normalized models with expanded references */
12
+ models: NormalizedModel[];
13
+ /** Normalized components */
14
+ components: NormalizedComponent[];
15
+ /** Normalized logic */
16
+ logic: NormalizedLogic[];
17
+ }
18
+ /**
19
+ * Normalized model definition
20
+ */
21
+ export interface NormalizedModel extends ModelDefinition {
22
+ /** Fully qualified name */
23
+ fullName: string;
24
+ /** All fields including inherited ones */
25
+ allFields: FieldDefinition[];
26
+ /** Model dependencies */
27
+ dependencies: string[];
28
+ }
29
+ /**
30
+ * Normalized component definition
31
+ */
32
+ export interface NormalizedComponent extends ComponentDefinition {
33
+ /** Fully qualified name */
34
+ fullName: string;
35
+ /** Resolved model reference */
36
+ resolvedModel?: NormalizedModel;
37
+ }
38
+ /**
39
+ * Normalized logic definition
40
+ */
41
+ export interface NormalizedLogic extends LogicDefinition {
42
+ /** Fully qualified identifier */
43
+ fullId: string;
44
+ }
45
+ /**
46
+ * Normalization options
47
+ */
48
+ export interface NormalizationOptions {
49
+ /** Schema name prefix for fully qualified names */
50
+ schemaPrefix?: string;
51
+ /** Expand all field references */
52
+ expandReferences?: boolean;
53
+ /** Include computed metadata */
54
+ includeMetadata?: boolean;
55
+ }
56
+ /**
57
+ * Normalize a Praxis schema for code generation
58
+ */
59
+ export declare function normalizeSchema(schema: PraxisSchema, options?: NormalizationOptions): NormalizedSchema;
60
+ /**
61
+ * Expand field type to fully qualified type string
62
+ */
63
+ export declare function expandFieldType(fieldType: any, schemaPrefix?: string): string;
64
+ /**
65
+ * Generate TypeScript type from field type
66
+ */
67
+ export declare function fieldTypeToTypeScript(fieldType: any): string;
68
+ /**
69
+ * Sort models by dependency order (models with no dependencies first)
70
+ */
71
+ export declare function sortModelsByDependencies(models: NormalizedModel[]): NormalizedModel[];
72
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/core/schema/normalize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,iDAAiD;IACjD,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,4BAA4B;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,uBAAuB;IACvB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,yBAAyB;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gCAAgC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,oBAAyB,GACjC,gBAAgB,CAoClB;AA0FD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,GAAG,EACd,YAAY,GAAE,MAAW,GACxB,MAAM,CAsBR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,GAAG,GAAG,MAAM,CA2C5D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EAAE,GACxB,eAAe,EAAE,CAsCnB"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Praxis Schema Normalizer
3
+ *
4
+ * Expands and normalizes schema definitions for code generation.
5
+ */
6
+ /**
7
+ * Normalize a Praxis schema for code generation
8
+ */
9
+ export function normalizeSchema(schema, options = {}) {
10
+ const schemaPrefix = options.schemaPrefix || schema.name;
11
+ // Normalize models
12
+ const normalizedModels = normalizeModels(schema.models || [], schemaPrefix, options);
13
+ // Create model lookup map
14
+ const modelMap = new Map(normalizedModels.map((model) => [model.name, model]));
15
+ // Normalize components
16
+ const normalizedComponents = normalizeComponents(schema.components || [], schemaPrefix, modelMap, options);
17
+ // Normalize logic
18
+ const normalizedLogic = normalizeLogic(schema.logic || [], schemaPrefix, options);
19
+ return {
20
+ ...schema,
21
+ models: normalizedModels,
22
+ components: normalizedComponents,
23
+ logic: normalizedLogic,
24
+ };
25
+ }
26
+ /**
27
+ * Normalize model definitions
28
+ */
29
+ function normalizeModels(models, schemaPrefix, _options) {
30
+ return models.map((model) => {
31
+ const fullName = `${schemaPrefix}.${model.name}`;
32
+ const dependencies = extractModelDependencies(model);
33
+ // For now, allFields is the same as fields
34
+ // In the future, this could include inherited fields
35
+ const allFields = [...model.fields];
36
+ return {
37
+ ...model,
38
+ fullName,
39
+ allFields,
40
+ dependencies,
41
+ };
42
+ });
43
+ }
44
+ /**
45
+ * Extract model dependencies from field references
46
+ */
47
+ function extractModelDependencies(model) {
48
+ const dependencies = new Set();
49
+ for (const field of model.fields) {
50
+ if (typeof field.type === 'object' && 'reference' in field.type) {
51
+ dependencies.add(field.type.reference);
52
+ }
53
+ }
54
+ // Add relationship dependencies
55
+ if (model.relationships) {
56
+ for (const rel of model.relationships) {
57
+ dependencies.add(rel.target);
58
+ }
59
+ }
60
+ return Array.from(dependencies);
61
+ }
62
+ /**
63
+ * Normalize component definitions
64
+ */
65
+ function normalizeComponents(components, schemaPrefix, modelMap, _options) {
66
+ return components.map((component) => {
67
+ const fullName = `${schemaPrefix}.${component.name}`;
68
+ const resolvedModel = component.model
69
+ ? modelMap.get(component.model)
70
+ : undefined;
71
+ return {
72
+ ...component,
73
+ fullName,
74
+ resolvedModel,
75
+ };
76
+ });
77
+ }
78
+ /**
79
+ * Normalize logic definitions
80
+ */
81
+ function normalizeLogic(logic, schemaPrefix, _options) {
82
+ return logic.map((logicDef) => {
83
+ const fullId = `${schemaPrefix}.${logicDef.id}`;
84
+ return {
85
+ ...logicDef,
86
+ fullId,
87
+ };
88
+ });
89
+ }
90
+ /**
91
+ * Expand field type to fully qualified type string
92
+ */
93
+ export function expandFieldType(fieldType, schemaPrefix = '') {
94
+ if (typeof fieldType === 'string') {
95
+ return fieldType;
96
+ }
97
+ if (typeof fieldType === 'object') {
98
+ if ('array' in fieldType) {
99
+ const innerType = expandFieldType(fieldType.array, schemaPrefix);
100
+ return `${innerType}[]`;
101
+ }
102
+ if ('object' in fieldType) {
103
+ return 'object';
104
+ }
105
+ if ('reference' in fieldType) {
106
+ const refName = fieldType.reference;
107
+ return schemaPrefix ? `${schemaPrefix}.${refName}` : refName;
108
+ }
109
+ }
110
+ return 'unknown';
111
+ }
112
+ /**
113
+ * Generate TypeScript type from field type
114
+ */
115
+ export function fieldTypeToTypeScript(fieldType) {
116
+ if (typeof fieldType === 'string') {
117
+ switch (fieldType) {
118
+ case 'string':
119
+ return 'string';
120
+ case 'number':
121
+ return 'number';
122
+ case 'boolean':
123
+ return 'boolean';
124
+ case 'date':
125
+ return 'Date';
126
+ case 'array':
127
+ return 'unknown[]';
128
+ case 'object':
129
+ return 'Record<string, unknown>';
130
+ default:
131
+ return 'unknown';
132
+ }
133
+ }
134
+ if (typeof fieldType === 'object') {
135
+ if ('array' in fieldType) {
136
+ const innerType = fieldTypeToTypeScript(fieldType.array);
137
+ return `${innerType}[]`;
138
+ }
139
+ if ('object' in fieldType) {
140
+ const fields = fieldType.object;
141
+ const fieldTypes = Object.entries(fields)
142
+ .map(([key, field]) => {
143
+ const type = fieldTypeToTypeScript(field.type || field);
144
+ return `${key}: ${type}`;
145
+ })
146
+ .join('; ');
147
+ return `{ ${fieldTypes} }`;
148
+ }
149
+ if ('reference' in fieldType) {
150
+ return fieldType.reference;
151
+ }
152
+ }
153
+ return 'unknown';
154
+ }
155
+ /**
156
+ * Sort models by dependency order (models with no dependencies first)
157
+ */
158
+ export function sortModelsByDependencies(models) {
159
+ const sorted = [];
160
+ const visited = new Set();
161
+ const visiting = new Set();
162
+ function visit(model) {
163
+ if (visited.has(model.name)) {
164
+ return;
165
+ }
166
+ if (visiting.has(model.name)) {
167
+ // Circular dependency detected, just add it
168
+ visiting.delete(model.name);
169
+ sorted.push(model);
170
+ visited.add(model.name);
171
+ return;
172
+ }
173
+ visiting.add(model.name);
174
+ // Visit dependencies first
175
+ for (const depName of model.dependencies) {
176
+ const dep = models.find((m) => m.name === depName);
177
+ if (dep) {
178
+ visit(dep);
179
+ }
180
+ }
181
+ visiting.delete(model.name);
182
+ visited.add(model.name);
183
+ sorted.push(model);
184
+ }
185
+ for (const model of models) {
186
+ visit(model);
187
+ }
188
+ return sorted;
189
+ }
190
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/core/schema/normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Praxis Schema System
3
+ *
4
+ * Declarative schema definitions for generating models, components, logic, and documentation.
5
+ */
6
+ /**
7
+ * Base schema definition
8
+ */
9
+ export interface PraxisSchema {
10
+ /** Schema version (semver) */
11
+ version: string;
12
+ /** Schema name/identifier */
13
+ name: string;
14
+ /** Human-readable description */
15
+ description?: string;
16
+ /** Data models */
17
+ models?: ModelDefinition[];
18
+ /** UI components */
19
+ components?: ComponentDefinition[];
20
+ /** Logic definitions */
21
+ logic?: LogicDefinition[];
22
+ /** Orchestration configuration */
23
+ orchestration?: OrchestrationDefinition;
24
+ /** Additional metadata */
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ /**
28
+ * Model definition for data structures
29
+ */
30
+ export interface ModelDefinition {
31
+ /** Model name */
32
+ name: string;
33
+ /** Model description */
34
+ description?: string;
35
+ /** Model fields */
36
+ fields: FieldDefinition[];
37
+ /** Validation constraints */
38
+ constraints?: ConstraintDefinition[];
39
+ /** Indexes for queries */
40
+ indexes?: IndexDefinition[];
41
+ /** Relationships to other models */
42
+ relationships?: RelationshipDefinition[];
43
+ }
44
+ /**
45
+ * Field definition within a model
46
+ */
47
+ export interface FieldDefinition {
48
+ /** Field name */
49
+ name: string;
50
+ /** Field type */
51
+ type: FieldType;
52
+ /** Optional field */
53
+ optional?: boolean;
54
+ /** Default value */
55
+ default?: unknown;
56
+ /** Field description */
57
+ description?: string;
58
+ /** Validation rules */
59
+ validation?: ValidationRule[];
60
+ }
61
+ /**
62
+ * Supported field types
63
+ */
64
+ export type FieldType = 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object' | 'reference' | {
65
+ array: FieldType;
66
+ } | {
67
+ object: Record<string, FieldDefinition>;
68
+ } | {
69
+ reference: string;
70
+ };
71
+ /**
72
+ * Validation rule for a field
73
+ */
74
+ export interface ValidationRule {
75
+ /** Validation type */
76
+ type: 'required' | 'min' | 'max' | 'pattern' | 'custom';
77
+ /** Validation value */
78
+ value?: unknown;
79
+ /** Error message */
80
+ message?: string;
81
+ }
82
+ /**
83
+ * Constraint definition for models
84
+ */
85
+ export interface ConstraintDefinition {
86
+ /** Constraint identifier */
87
+ id: string;
88
+ /** Constraint description */
89
+ description: string;
90
+ /** Constraint type */
91
+ type: 'unique' | 'check' | 'foreign_key';
92
+ /** Constraint fields */
93
+ fields: string[];
94
+ /** Additional constraint options */
95
+ options?: Record<string, unknown>;
96
+ }
97
+ /**
98
+ * Index definition for queries
99
+ */
100
+ export interface IndexDefinition {
101
+ /** Index name */
102
+ name: string;
103
+ /** Indexed fields */
104
+ fields: string[];
105
+ /** Unique index */
106
+ unique?: boolean;
107
+ /** Index type */
108
+ type?: 'btree' | 'hash' | 'fulltext';
109
+ }
110
+ /**
111
+ * Relationship definition between models
112
+ */
113
+ export interface RelationshipDefinition {
114
+ /** Relationship name */
115
+ name: string;
116
+ /** Relationship type */
117
+ type: 'one-to-one' | 'one-to-many' | 'many-to-many';
118
+ /** Target model */
119
+ target: string;
120
+ /** Foreign key field */
121
+ foreignKey?: string;
122
+ /** Cascade delete */
123
+ cascadeDelete?: boolean;
124
+ }
125
+ /**
126
+ * Component definition for UI
127
+ */
128
+ export interface ComponentDefinition {
129
+ /** Component name */
130
+ name: string;
131
+ /** Component type */
132
+ type: 'form' | 'display' | 'list' | 'navigation' | 'custom';
133
+ /** Component description */
134
+ description?: string;
135
+ /** Model binding */
136
+ model?: string;
137
+ /** Component properties */
138
+ props?: ComponentProp[];
139
+ /** Component events */
140
+ events?: ComponentEvent[];
141
+ /** Component layout */
142
+ layout?: LayoutDefinition;
143
+ /** Component styling */
144
+ styling?: StylingDefinition;
145
+ }
146
+ /**
147
+ * Component property definition
148
+ */
149
+ export interface ComponentProp {
150
+ /** Property name */
151
+ name: string;
152
+ /** Property type */
153
+ type: string;
154
+ /** Required property */
155
+ required?: boolean;
156
+ /** Default value */
157
+ default?: unknown;
158
+ /** Property description */
159
+ description?: string;
160
+ }
161
+ /**
162
+ * Component event definition
163
+ */
164
+ export interface ComponentEvent {
165
+ /** Event name */
166
+ name: string;
167
+ /** Event payload type */
168
+ payload?: string;
169
+ /** Event description */
170
+ description?: string;
171
+ }
172
+ /**
173
+ * Layout definition for components
174
+ */
175
+ export interface LayoutDefinition {
176
+ /** Layout type */
177
+ type: 'stack' | 'grid' | 'flex' | 'absolute';
178
+ /** Layout direction */
179
+ direction?: 'horizontal' | 'vertical';
180
+ /** Layout gap */
181
+ gap?: number;
182
+ /** Layout padding */
183
+ padding?: number;
184
+ /** Layout alignment */
185
+ alignment?: string;
186
+ }
187
+ /**
188
+ * Styling definition for components
189
+ */
190
+ export interface StylingDefinition {
191
+ /** CSS classes */
192
+ classes?: string[];
193
+ /** Inline styles */
194
+ styles?: Record<string, string>;
195
+ /** Theme tokens */
196
+ theme?: Record<string, string>;
197
+ }
198
+ /**
199
+ * Logic definition for business rules
200
+ */
201
+ export interface LogicDefinition {
202
+ /** Logic identifier */
203
+ id: string;
204
+ /** Logic description */
205
+ description: string;
206
+ /** Facts definitions */
207
+ facts?: FactDefinition[];
208
+ /** Events definitions */
209
+ events?: EventDefinition[];
210
+ /** Rules definitions */
211
+ rules?: RuleDefinition[];
212
+ /** Constraints definitions */
213
+ constraints?: LogicConstraint[];
214
+ }
215
+ /**
216
+ * Fact definition
217
+ */
218
+ export interface FactDefinition {
219
+ /** Fact tag */
220
+ tag: string;
221
+ /** Fact payload type */
222
+ payload: Record<string, string>;
223
+ /** Fact description */
224
+ description?: string;
225
+ }
226
+ /**
227
+ * Event definition
228
+ */
229
+ export interface EventDefinition {
230
+ /** Event tag */
231
+ tag: string;
232
+ /** Event payload type */
233
+ payload: Record<string, string>;
234
+ /** Event description */
235
+ description?: string;
236
+ }
237
+ /**
238
+ * Rule definition
239
+ */
240
+ export interface RuleDefinition {
241
+ /** Rule identifier */
242
+ id: string;
243
+ /** Rule description */
244
+ description: string;
245
+ /** Input events */
246
+ on?: string[];
247
+ /** Rule condition */
248
+ when?: string;
249
+ /** Rule action */
250
+ then: string;
251
+ /** Rule priority */
252
+ priority?: number;
253
+ }
254
+ /**
255
+ * Logic constraint definition
256
+ */
257
+ export interface LogicConstraint {
258
+ /** Constraint identifier */
259
+ id: string;
260
+ /** Constraint description */
261
+ description: string;
262
+ /** Constraint check */
263
+ check: string;
264
+ /** Error message */
265
+ message: string;
266
+ }
267
+ /**
268
+ * Orchestration definition
269
+ */
270
+ export interface OrchestrationDefinition {
271
+ /** Orchestration type */
272
+ type: 'dsc' | 'mcp' | 'custom';
273
+ /** Node configurations */
274
+ nodes?: NodeDefinition[];
275
+ /** State synchronization */
276
+ sync?: SyncDefinition;
277
+ /** Health checks */
278
+ health?: HealthDefinition;
279
+ }
280
+ /**
281
+ * Node definition for orchestration
282
+ */
283
+ export interface NodeDefinition {
284
+ /** Node identifier */
285
+ id: string;
286
+ /** Node type */
287
+ type: string;
288
+ /** Node configuration */
289
+ config: Record<string, unknown>;
290
+ /** Node position (x, y coordinates for canvas) */
291
+ x?: number;
292
+ y?: number;
293
+ /** Node props (type-specific properties) */
294
+ props?: Record<string, unknown>;
295
+ /** Node bindings (connections to pluresdb paths) */
296
+ bindings?: NodeBindings;
297
+ }
298
+ /**
299
+ * Node bindings for pluresdb path connections
300
+ */
301
+ export interface NodeBindings {
302
+ /** Output binding to pluresdb path */
303
+ output?: string;
304
+ /** Input binding to pluresdb path */
305
+ input?: string;
306
+ /** Additional custom bindings */
307
+ [key: string]: string | undefined;
308
+ }
309
+ /**
310
+ * Terminal node specific configuration
311
+ */
312
+ export interface TerminalNodeProps {
313
+ /** Input mode: text input or widget-based */
314
+ inputMode: 'text' | 'widget';
315
+ /** Command history */
316
+ history: string[];
317
+ /** Last command output */
318
+ lastOutput: string | null;
319
+ }
320
+ /**
321
+ * Sync definition for state synchronization
322
+ */
323
+ export interface SyncDefinition {
324
+ /** Sync interval in ms */
325
+ interval: number;
326
+ /** Conflict resolution strategy */
327
+ conflictResolution: 'last-write-wins' | 'merge' | 'custom';
328
+ /** Sync targets */
329
+ targets: string[];
330
+ }
331
+ /**
332
+ * Health check definition
333
+ */
334
+ export interface HealthDefinition {
335
+ /** Check interval in ms */
336
+ interval: number;
337
+ /** Health check endpoints */
338
+ endpoints: string[];
339
+ /** Timeout in ms */
340
+ timeout: number;
341
+ }
342
+ /**
343
+ * Schema validation result
344
+ */
345
+ export interface ValidationResult {
346
+ /** Validation success */
347
+ valid: boolean;
348
+ /** Validation errors */
349
+ errors: ValidationError[];
350
+ }
351
+ /**
352
+ * Validation error
353
+ */
354
+ export interface ValidationError {
355
+ /** Error path in schema */
356
+ path: string;
357
+ /** Error message */
358
+ message: string;
359
+ /** Error code */
360
+ code?: string;
361
+ }
362
+ /**
363
+ * Validate a Praxis schema
364
+ */
365
+ export declare function validateSchema(schema: PraxisSchema): ValidationResult;
366
+ /**
367
+ * Create a basic schema template
368
+ */
369
+ export declare function createSchemaTemplate(name: string): PraxisSchema;
370
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/schema/types.ts"],"names":[],"mappings":"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"}