@manifesto-ai/compiler 1.6.2 → 1.8.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 (201) hide show
  1. package/README.md +67 -18
  2. package/dist/chunk-BH25NHMN.js +74 -0
  3. package/dist/chunk-BH25NHMN.js.map +1 -0
  4. package/dist/chunk-D62NIFP4.js +33 -0
  5. package/dist/chunk-D62NIFP4.js.map +1 -0
  6. package/dist/chunk-MKLDAZ2Z.js +6920 -0
  7. package/dist/chunk-MKLDAZ2Z.js.map +1 -0
  8. package/dist/esbuild.d.ts +8 -0
  9. package/dist/esbuild.js +14 -0
  10. package/dist/esbuild.js.map +1 -0
  11. package/dist/index.d.ts +2810 -11
  12. package/dist/index.js +2425 -43
  13. package/dist/index.js.map +1 -1
  14. package/dist/node-loader.d.ts +18 -0
  15. package/dist/node-loader.js +47 -0
  16. package/dist/node-loader.js.map +1 -0
  17. package/dist/rollup.d.ts +8 -0
  18. package/dist/rollup.js +14 -0
  19. package/dist/rollup.js.map +1 -0
  20. package/dist/rspack.d.ts +7 -0
  21. package/dist/rspack.js +14 -0
  22. package/dist/rspack.js.map +1 -0
  23. package/dist/unplugin-6wnvFiEo.d.ts +17 -0
  24. package/dist/vite.d.ts +8 -17
  25. package/dist/vite.js +13 -33
  26. package/dist/vite.js.map +1 -1
  27. package/dist/webpack.d.ts +8 -0
  28. package/dist/webpack.js +14 -0
  29. package/dist/webpack.js.map +1 -0
  30. package/package.json +40 -22
  31. package/dist/analyzer/index.d.ts +0 -6
  32. package/dist/analyzer/index.d.ts.map +0 -1
  33. package/dist/analyzer/index.js +0 -6
  34. package/dist/analyzer/index.js.map +0 -1
  35. package/dist/analyzer/scope.d.ts +0 -77
  36. package/dist/analyzer/scope.d.ts.map +0 -1
  37. package/dist/analyzer/scope.js +0 -296
  38. package/dist/analyzer/scope.js.map +0 -1
  39. package/dist/analyzer/validator.d.ts +0 -60
  40. package/dist/analyzer/validator.d.ts.map +0 -1
  41. package/dist/analyzer/validator.js +0 -439
  42. package/dist/analyzer/validator.js.map +0 -1
  43. package/dist/api/compile-mel-patch-collector.d.ts +0 -32
  44. package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
  45. package/dist/api/compile-mel-patch-collector.js +0 -425
  46. package/dist/api/compile-mel-patch-collector.js.map +0 -1
  47. package/dist/api/compile-mel-patch-expr.d.ts +0 -9
  48. package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
  49. package/dist/api/compile-mel-patch-expr.js +0 -179
  50. package/dist/api/compile-mel-patch-expr.js.map +0 -1
  51. package/dist/api/compile-mel-patch-location.d.ts +0 -10
  52. package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
  53. package/dist/api/compile-mel-patch-location.js +0 -48
  54. package/dist/api/compile-mel-patch-location.js.map +0 -1
  55. package/dist/api/compile-mel-patch.d.ts +0 -6
  56. package/dist/api/compile-mel-patch.d.ts.map +0 -1
  57. package/dist/api/compile-mel-patch.js +0 -244
  58. package/dist/api/compile-mel-patch.js.map +0 -1
  59. package/dist/api/compile-mel.d.ts +0 -126
  60. package/dist/api/compile-mel.d.ts.map +0 -1
  61. package/dist/api/compile-mel.js +0 -114
  62. package/dist/api/compile-mel.js.map +0 -1
  63. package/dist/api/index.d.ts +0 -10
  64. package/dist/api/index.d.ts.map +0 -1
  65. package/dist/api/index.js +0 -9
  66. package/dist/api/index.js.map +0 -1
  67. package/dist/diagnostics/codes.d.ts +0 -25
  68. package/dist/diagnostics/codes.d.ts.map +0 -1
  69. package/dist/diagnostics/codes.js +0 -154
  70. package/dist/diagnostics/codes.js.map +0 -1
  71. package/dist/diagnostics/index.d.ts +0 -6
  72. package/dist/diagnostics/index.d.ts.map +0 -1
  73. package/dist/diagnostics/index.js +0 -6
  74. package/dist/diagnostics/index.js.map +0 -1
  75. package/dist/diagnostics/types.d.ts +0 -67
  76. package/dist/diagnostics/types.d.ts.map +0 -1
  77. package/dist/diagnostics/types.js +0 -58
  78. package/dist/diagnostics/types.js.map +0 -1
  79. package/dist/evaluation/context.d.ts +0 -91
  80. package/dist/evaluation/context.d.ts.map +0 -1
  81. package/dist/evaluation/context.js +0 -53
  82. package/dist/evaluation/context.js.map +0 -1
  83. package/dist/evaluation/evaluate-expr.d.ts +0 -24
  84. package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
  85. package/dist/evaluation/evaluate-expr.js +0 -577
  86. package/dist/evaluation/evaluate-expr.js.map +0 -1
  87. package/dist/evaluation/evaluate-patch.d.ts +0 -123
  88. package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
  89. package/dist/evaluation/evaluate-patch.js +0 -202
  90. package/dist/evaluation/evaluate-patch.js.map +0 -1
  91. package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
  92. package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
  93. package/dist/evaluation/evaluate-runtime-patch.js +0 -185
  94. package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
  95. package/dist/evaluation/index.d.ts +0 -15
  96. package/dist/evaluation/index.d.ts.map +0 -1
  97. package/dist/evaluation/index.js +0 -13
  98. package/dist/evaluation/index.js.map +0 -1
  99. package/dist/generator/index.d.ts +0 -7
  100. package/dist/generator/index.d.ts.map +0 -1
  101. package/dist/generator/index.js +0 -7
  102. package/dist/generator/index.js.map +0 -1
  103. package/dist/generator/ir.d.ts +0 -348
  104. package/dist/generator/ir.d.ts.map +0 -1
  105. package/dist/generator/ir.js +0 -715
  106. package/dist/generator/ir.js.map +0 -1
  107. package/dist/generator/lowering.d.ts +0 -11
  108. package/dist/generator/lowering.d.ts.map +0 -1
  109. package/dist/generator/lowering.js +0 -369
  110. package/dist/generator/lowering.js.map +0 -1
  111. package/dist/generator/normalizer.d.ts +0 -16
  112. package/dist/generator/normalizer.d.ts.map +0 -1
  113. package/dist/generator/normalizer.js +0 -181
  114. package/dist/generator/normalizer.js.map +0 -1
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/lexer/index.d.ts +0 -7
  117. package/dist/lexer/index.d.ts.map +0 -1
  118. package/dist/lexer/index.js +0 -7
  119. package/dist/lexer/index.js.map +0 -1
  120. package/dist/lexer/lexer.d.ts +0 -59
  121. package/dist/lexer/lexer.d.ts.map +0 -1
  122. package/dist/lexer/lexer.js +0 -433
  123. package/dist/lexer/lexer.js.map +0 -1
  124. package/dist/lexer/source-location.d.ts +0 -41
  125. package/dist/lexer/source-location.d.ts.map +0 -1
  126. package/dist/lexer/source-location.js +0 -33
  127. package/dist/lexer/source-location.js.map +0 -1
  128. package/dist/lexer/tokens.d.ts +0 -47
  129. package/dist/lexer/tokens.d.ts.map +0 -1
  130. package/dist/lexer/tokens.js +0 -73
  131. package/dist/lexer/tokens.js.map +0 -1
  132. package/dist/loader.d.ts +0 -23
  133. package/dist/loader.d.ts.map +0 -1
  134. package/dist/loader.js +0 -62
  135. package/dist/loader.js.map +0 -1
  136. package/dist/lowering/context.d.ts +0 -96
  137. package/dist/lowering/context.d.ts.map +0 -1
  138. package/dist/lowering/context.js +0 -42
  139. package/dist/lowering/context.js.map +0 -1
  140. package/dist/lowering/errors.d.ts +0 -84
  141. package/dist/lowering/errors.d.ts.map +0 -1
  142. package/dist/lowering/errors.js +0 -81
  143. package/dist/lowering/errors.js.map +0 -1
  144. package/dist/lowering/index.d.ts +0 -20
  145. package/dist/lowering/index.d.ts.map +0 -1
  146. package/dist/lowering/index.js +0 -13
  147. package/dist/lowering/index.js.map +0 -1
  148. package/dist/lowering/lower-expr.d.ts +0 -76
  149. package/dist/lowering/lower-expr.d.ts.map +0 -1
  150. package/dist/lowering/lower-expr.js +0 -366
  151. package/dist/lowering/lower-expr.js.map +0 -1
  152. package/dist/lowering/lower-patch.d.ts +0 -231
  153. package/dist/lowering/lower-patch.d.ts.map +0 -1
  154. package/dist/lowering/lower-patch.js +0 -146
  155. package/dist/lowering/lower-patch.js.map +0 -1
  156. package/dist/lowering/lower-runtime-patch.d.ts +0 -100
  157. package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
  158. package/dist/lowering/lower-runtime-patch.js +0 -49
  159. package/dist/lowering/lower-runtime-patch.js.map +0 -1
  160. package/dist/mel-module.d.ts +0 -13
  161. package/dist/mel-module.d.ts.map +0 -1
  162. package/dist/mel-module.js +0 -33
  163. package/dist/mel-module.js.map +0 -1
  164. package/dist/parser/ast.d.ts +0 -344
  165. package/dist/parser/ast.d.ts.map +0 -1
  166. package/dist/parser/ast.js +0 -24
  167. package/dist/parser/ast.js.map +0 -1
  168. package/dist/parser/index.d.ts +0 -7
  169. package/dist/parser/index.d.ts.map +0 -1
  170. package/dist/parser/index.js +0 -7
  171. package/dist/parser/index.js.map +0 -1
  172. package/dist/parser/parser.d.ts +0 -92
  173. package/dist/parser/parser.d.ts.map +0 -1
  174. package/dist/parser/parser.js +0 -892
  175. package/dist/parser/parser.js.map +0 -1
  176. package/dist/parser/precedence.d.ts +0 -44
  177. package/dist/parser/precedence.d.ts.map +0 -1
  178. package/dist/parser/precedence.js +0 -69
  179. package/dist/parser/precedence.js.map +0 -1
  180. package/dist/renderer/expr-node.d.ts +0 -172
  181. package/dist/renderer/expr-node.d.ts.map +0 -1
  182. package/dist/renderer/expr-node.js +0 -218
  183. package/dist/renderer/expr-node.js.map +0 -1
  184. package/dist/renderer/fragment.d.ts +0 -84
  185. package/dist/renderer/fragment.d.ts.map +0 -1
  186. package/dist/renderer/fragment.js +0 -172
  187. package/dist/renderer/fragment.js.map +0 -1
  188. package/dist/renderer/index.d.ts +0 -23
  189. package/dist/renderer/index.d.ts.map +0 -1
  190. package/dist/renderer/index.js +0 -27
  191. package/dist/renderer/index.js.map +0 -1
  192. package/dist/renderer/patch-op.d.ts +0 -82
  193. package/dist/renderer/patch-op.d.ts.map +0 -1
  194. package/dist/renderer/patch-op.js +0 -204
  195. package/dist/renderer/patch-op.js.map +0 -1
  196. package/dist/renderer/type-expr.d.ts +0 -61
  197. package/dist/renderer/type-expr.d.ts.map +0 -1
  198. package/dist/renderer/type-expr.js +0 -131
  199. package/dist/renderer/type-expr.js.map +0 -1
  200. package/dist/vite.d.ts.map +0 -1
  201. package/loader.cjs +0 -22
@@ -1,84 +0,0 @@
1
- /**
2
- * PatchFragment to MEL Renderer
3
- *
4
- * Converts PatchFragment to MEL syntax with metadata comments.
5
- */
6
- import { PatchOp, RenderOptions } from "./patch-op.js";
7
- export interface PatchFragment {
8
- /**
9
- * Unique fragment identifier (content-addressed)
10
- */
11
- fragmentId: string;
12
- /**
13
- * Source intent identifier
14
- */
15
- sourceIntentId: string;
16
- /**
17
- * Fragment operation
18
- */
19
- op: PatchOp;
20
- /**
21
- * Confidence score (0-1)
22
- */
23
- confidence: number;
24
- /**
25
- * Evidence strings
26
- */
27
- evidence: string[];
28
- /**
29
- * Creation timestamp (ISO 8601)
30
- */
31
- createdAt: string;
32
- }
33
- export interface FragmentRenderOptions extends RenderOptions {
34
- /**
35
- * Include fragment metadata as comments
36
- */
37
- includeMetadata?: boolean;
38
- /**
39
- * Include evidence as comments
40
- */
41
- includeEvidence?: boolean;
42
- /**
43
- * Include confidence score
44
- */
45
- includeConfidence?: boolean;
46
- /**
47
- * Include fragment ID
48
- */
49
- includeFragmentId?: boolean;
50
- }
51
- /**
52
- * Renders a PatchFragment to MEL syntax string with optional metadata.
53
- *
54
- * @param fragment - The PatchFragment to render
55
- * @param options - Rendering options
56
- * @returns MEL syntax string with metadata comments
57
- */
58
- export declare function renderFragment(fragment: PatchFragment, options?: FragmentRenderOptions): string;
59
- /**
60
- * Renders multiple PatchFragments to MEL syntax string.
61
- *
62
- * @param fragments - The PatchFragments to render
63
- * @param options - Rendering options
64
- * @returns MEL syntax string with all fragments
65
- */
66
- export declare function renderFragments(fragments: PatchFragment[], options?: FragmentRenderOptions): string;
67
- /**
68
- * Renders PatchFragments grouped by operation kind.
69
- *
70
- * @param fragments - The PatchFragments to render
71
- * @param options - Rendering options
72
- * @returns Object with rendered strings grouped by operation kind
73
- */
74
- export declare function renderFragmentsByKind(fragments: PatchFragment[], options?: FragmentRenderOptions): Record<string, string>;
75
- /**
76
- * Renders PatchFragments as a complete MEL domain block.
77
- *
78
- * @param domainName - The domain name
79
- * @param fragments - The PatchFragments to render
80
- * @param options - Rendering options
81
- * @returns Complete MEL domain string
82
- */
83
- export declare function renderAsDomain(domainName: string, fragments: PatchFragment[], options?: FragmentRenderOptions): string;
84
- //# sourceMappingURL=fragment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../src/renderer/fragment.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAItE,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,EAAE,EAAE,OAAO,CAAC;IAEZ;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CA+BR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAQR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAoFR"}
@@ -1,172 +0,0 @@
1
- /**
2
- * PatchFragment to MEL Renderer
3
- *
4
- * Converts PatchFragment to MEL syntax with metadata comments.
5
- */
6
- import { renderPatchOp } from "./patch-op.js";
7
- const DEFAULT_FRAGMENT_OPTIONS = {
8
- indent: " ",
9
- includeComments: true,
10
- commentPrefix: "// ",
11
- includeMetadata: true,
12
- includeEvidence: false,
13
- includeConfidence: true,
14
- includeFragmentId: false,
15
- };
16
- // ============ Fragment Renderer ============
17
- /**
18
- * Renders a PatchFragment to MEL syntax string with optional metadata.
19
- *
20
- * @param fragment - The PatchFragment to render
21
- * @param options - Rendering options
22
- * @returns MEL syntax string with metadata comments
23
- */
24
- export function renderFragment(fragment, options) {
25
- const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
26
- const lines = [];
27
- // Add metadata comments
28
- if (opts.includeMetadata) {
29
- if (opts.includeFragmentId) {
30
- lines.push(`${opts.commentPrefix}Fragment: ${fragment.fragmentId}`);
31
- }
32
- if (opts.includeConfidence) {
33
- const confidencePercent = (fragment.confidence * 100).toFixed(0);
34
- lines.push(`${opts.commentPrefix}Confidence: ${confidencePercent}%`);
35
- }
36
- if (opts.includeEvidence && fragment.evidence.length > 0) {
37
- lines.push(`${opts.commentPrefix}Evidence:`);
38
- for (const evidence of fragment.evidence) {
39
- lines.push(`${opts.commentPrefix} - ${evidence}`);
40
- }
41
- }
42
- }
43
- // Render the operation
44
- const opStr = renderPatchOp(fragment.op, {
45
- indent: opts.indent,
46
- includeComments: opts.includeComments,
47
- commentPrefix: opts.commentPrefix,
48
- });
49
- lines.push(opStr);
50
- return lines.join("\n");
51
- }
52
- /**
53
- * Renders multiple PatchFragments to MEL syntax string.
54
- *
55
- * @param fragments - The PatchFragments to render
56
- * @param options - Rendering options
57
- * @returns MEL syntax string with all fragments
58
- */
59
- export function renderFragments(fragments, options) {
60
- const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
61
- const renderedFragments = fragments.map((fragment) => renderFragment(fragment, opts));
62
- return renderedFragments.join("\n\n");
63
- }
64
- /**
65
- * Renders PatchFragments grouped by operation kind.
66
- *
67
- * @param fragments - The PatchFragments to render
68
- * @param options - Rendering options
69
- * @returns Object with rendered strings grouped by operation kind
70
- */
71
- export function renderFragmentsByKind(fragments, options) {
72
- const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
73
- const grouped = {};
74
- for (const fragment of fragments) {
75
- const kind = fragment.op.kind;
76
- if (!grouped[kind]) {
77
- grouped[kind] = [];
78
- }
79
- grouped[kind].push(fragment);
80
- }
81
- const result = {};
82
- for (const [kind, kindFragments] of Object.entries(grouped)) {
83
- result[kind] = renderFragments(kindFragments, opts);
84
- }
85
- return result;
86
- }
87
- /**
88
- * Renders PatchFragments as a complete MEL domain block.
89
- *
90
- * @param domainName - The domain name
91
- * @param fragments - The PatchFragments to render
92
- * @param options - Rendering options
93
- * @returns Complete MEL domain string
94
- */
95
- export function renderAsDomain(domainName, fragments, options) {
96
- const opts = { ...DEFAULT_FRAGMENT_OPTIONS, ...options };
97
- const indent = opts.indent ?? " ";
98
- // Group fragments by type for organized output
99
- const types = [];
100
- const fields = [];
101
- const defaults = [];
102
- const computed = [];
103
- const constraints = [];
104
- const actions = [];
105
- for (const fragment of fragments) {
106
- switch (fragment.op.kind) {
107
- case "addType":
108
- types.push(fragment);
109
- break;
110
- case "addField":
111
- case "setFieldType":
112
- fields.push(fragment);
113
- break;
114
- case "setDefaultValue":
115
- defaults.push(fragment);
116
- break;
117
- case "addComputed":
118
- computed.push(fragment);
119
- break;
120
- case "addConstraint":
121
- constraints.push(fragment);
122
- break;
123
- case "addActionAvailable":
124
- actions.push(fragment);
125
- break;
126
- }
127
- }
128
- const lines = [];
129
- lines.push(`domain ${domainName} {`);
130
- // State section
131
- if (fields.length > 0 || defaults.length > 0) {
132
- lines.push(`${indent}state {`);
133
- for (const fragment of [...fields, ...defaults]) {
134
- const rendered = renderPatchOp(fragment.op, { indent: indent + indent, includeComments: false });
135
- lines.push(`${indent}${indent}${rendered}`);
136
- }
137
- lines.push(`${indent}}`);
138
- lines.push("");
139
- }
140
- // Types section
141
- for (const fragment of types) {
142
- const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
143
- // Indent each line
144
- const indented = rendered.split("\n").map(line => `${indent}${line}`).join("\n");
145
- lines.push(indented);
146
- lines.push("");
147
- }
148
- // Computed section
149
- for (const fragment of computed) {
150
- const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
151
- lines.push(`${indent}${rendered}`);
152
- }
153
- if (computed.length > 0)
154
- lines.push("");
155
- // Constraints section (as comments)
156
- for (const fragment of constraints) {
157
- const rendered = renderPatchOp(fragment.op, { indent, includeComments: true });
158
- lines.push(`${indent}${rendered}`);
159
- }
160
- if (constraints.length > 0)
161
- lines.push("");
162
- // Actions section
163
- for (const fragment of actions) {
164
- const rendered = renderPatchOp(fragment.op, { indent, includeComments: false });
165
- const indented = rendered.split("\n").map(line => `${indent}${line}`).join("\n");
166
- lines.push(indented);
167
- lines.push("");
168
- }
169
- lines.push("}");
170
- return lines.join("\n");
171
- }
172
- //# sourceMappingURL=fragment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../src/renderer/fragment.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * MEL Renderer
3
- *
4
- * Converts PatchFragment AST to MEL text syntax.
5
- *
6
- * This is the inverse of the parser: Parser (MEL text → AST), Renderer (AST → MEL text).
7
- *
8
- * @example
9
- * ```typescript
10
- * import { renderFragment, renderAsDomain } from '@manifesto-ai/compiler';
11
- *
12
- * // Render a single fragment
13
- * const mel = renderFragment(fragment);
14
- *
15
- * // Render multiple fragments as a domain
16
- * const domain = renderAsDomain('MyDomain', fragments);
17
- * ```
18
- */
19
- export { renderTypeExpr, renderTypeField, renderValue, type TypeExpr, type TypeField, } from "./type-expr.js";
20
- export { renderExprNode, type ExprNode, } from "./expr-node.js";
21
- export { renderPatchOp, extractTypeName, type PatchOp, type AddTypeOp, type AddFieldOp, type SetFieldTypeOp, type SetDefaultValueOp, type AddConstraintOp, type AddComputedOp, type AddActionAvailableOp, type RenderOptions, } from "./patch-op.js";
22
- export { renderFragment, renderFragments, renderFragmentsByKind, renderAsDomain, type PatchFragment, type FragmentRenderOptions, } from "./fragment.js";
23
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC"}
@@ -1,27 +0,0 @@
1
- /**
2
- * MEL Renderer
3
- *
4
- * Converts PatchFragment AST to MEL text syntax.
5
- *
6
- * This is the inverse of the parser: Parser (MEL text → AST), Renderer (AST → MEL text).
7
- *
8
- * @example
9
- * ```typescript
10
- * import { renderFragment, renderAsDomain } from '@manifesto-ai/compiler';
11
- *
12
- * // Render a single fragment
13
- * const mel = renderFragment(fragment);
14
- *
15
- * // Render multiple fragments as a domain
16
- * const domain = renderAsDomain('MyDomain', fragments);
17
- * ```
18
- */
19
- // Type expression renderer
20
- export { renderTypeExpr, renderTypeField, renderValue, } from "./type-expr.js";
21
- // Expression node renderer
22
- export { renderExprNode, } from "./expr-node.js";
23
- // Patch operation renderer
24
- export { renderPatchOp, extractTypeName, } from "./patch-op.js";
25
- // Fragment renderer
26
- export { renderFragment, renderFragments, renderFragmentsByKind, renderAsDomain, } from "./fragment.js";
27
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,2BAA2B;AAC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,GAGZ,MAAM,gBAAgB,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EACL,cAAc,GAEf,MAAM,gBAAgB,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,eAAe,GAUhB,MAAM,eAAe,CAAC;AAEvB,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,cAAc,GAGf,MAAM,eAAe,CAAC"}
@@ -1,82 +0,0 @@
1
- /**
2
- * PatchOp to MEL Renderer
3
- *
4
- * Converts PatchOp AST to MEL syntax snippets.
5
- *
6
- * Note: These are fragments, not complete domain definitions.
7
- * The caller is responsible for assembling fragments into a valid MEL domain.
8
- */
9
- import { TypeExpr, TypeField } from "./type-expr.js";
10
- import { ExprNode } from "./expr-node.js";
11
- export type AddTypeOp = {
12
- kind: "addType";
13
- typeName: string;
14
- typeExpr: TypeExpr;
15
- };
16
- export type AddFieldOp = {
17
- kind: "addField";
18
- typeName: string;
19
- field: TypeField & {
20
- defaultValue?: unknown;
21
- };
22
- };
23
- export type SetFieldTypeOp = {
24
- kind: "setFieldType";
25
- path: string;
26
- typeExpr: TypeExpr;
27
- };
28
- export type SetDefaultValueOp = {
29
- kind: "setDefaultValue";
30
- path: string;
31
- value: unknown;
32
- };
33
- export type AddConstraintOp = {
34
- kind: "addConstraint";
35
- targetPath: string;
36
- rule: ExprNode;
37
- message?: string;
38
- };
39
- export type AddComputedOp = {
40
- kind: "addComputed";
41
- name: string;
42
- expr: ExprNode;
43
- deps?: string[];
44
- };
45
- export type AddActionAvailableOp = {
46
- kind: "addActionAvailable";
47
- actionName: string;
48
- expr: ExprNode;
49
- };
50
- export type PatchOp = AddTypeOp | AddFieldOp | SetFieldTypeOp | SetDefaultValueOp | AddConstraintOp | AddComputedOp | AddActionAvailableOp;
51
- export interface RenderOptions {
52
- /**
53
- * Indentation string (default: " ")
54
- */
55
- indent?: string;
56
- /**
57
- * Include comments with metadata
58
- */
59
- includeComments?: boolean;
60
- /**
61
- * Comment prefix for metadata
62
- */
63
- commentPrefix?: string;
64
- }
65
- /**
66
- * Renders a PatchOp to MEL syntax string.
67
- *
68
- * @param op - The PatchOp to render
69
- * @param options - Rendering options
70
- * @returns MEL syntax string
71
- */
72
- export declare function renderPatchOp(op: PatchOp, options?: RenderOptions): string;
73
- /**
74
- * Gets the type name from a semantic path.
75
- *
76
- * @example
77
- * // "Todo.title" -> "Todo"
78
- * // "User.address.city" -> "User"
79
- * // "count" -> undefined
80
- */
81
- export declare function extractTypeName(path: string): string | undefined;
82
- //# sourceMappingURL=patch-op.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch-op.d.ts","sourceRoot":"","sources":["../../src/renderer/patch-op.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgD,QAAQ,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAkB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK1D,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,SAAS,GACT,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,oBAAoB,CAAC;AAIzB,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAUD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAqB1E;AAwKD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE"}
@@ -1,204 +0,0 @@
1
- /**
2
- * PatchOp to MEL Renderer
3
- *
4
- * Converts PatchOp AST to MEL syntax snippets.
5
- *
6
- * Note: These are fragments, not complete domain definitions.
7
- * The caller is responsible for assembling fragments into a valid MEL domain.
8
- */
9
- import { renderTypeExpr, renderTypeField, renderValue } from "./type-expr.js";
10
- import { renderExprNode } from "./expr-node.js";
11
- import { parsePath } from "@manifesto-ai/core";
12
- const DEFAULT_OPTIONS = {
13
- indent: " ",
14
- includeComments: false,
15
- commentPrefix: "// ",
16
- };
17
- // ============ PatchOp Renderers ============
18
- /**
19
- * Renders a PatchOp to MEL syntax string.
20
- *
21
- * @param op - The PatchOp to render
22
- * @param options - Rendering options
23
- * @returns MEL syntax string
24
- */
25
- export function renderPatchOp(op, options) {
26
- const opts = { ...DEFAULT_OPTIONS, ...options };
27
- switch (op.kind) {
28
- case "addType":
29
- return renderAddType(op, opts);
30
- case "addField":
31
- return renderAddField(op, opts);
32
- case "setFieldType":
33
- return renderSetFieldType(op, opts);
34
- case "setDefaultValue":
35
- return renderSetDefaultValue(op, opts);
36
- case "addConstraint":
37
- return renderAddConstraint(op, opts);
38
- case "addComputed":
39
- return renderAddComputed(op, opts);
40
- case "addActionAvailable":
41
- return renderAddActionAvailable(op, opts);
42
- default:
43
- return `// Unknown operation: ${JSON.stringify(op)}`;
44
- }
45
- }
46
- /**
47
- * Renders an addType operation.
48
- *
49
- * @example
50
- * // Input: { kind: "addType", typeName: "Todo", typeExpr: { kind: "object", fields: [...] } }
51
- * // Output:
52
- * // type Todo {
53
- * // id: string
54
- * // title: string
55
- * // completed: boolean
56
- * // }
57
- */
58
- function renderAddType(op, opts) {
59
- const { indent } = opts;
60
- if (op.typeExpr.kind === "object") {
61
- const fields = op.typeExpr.fields
62
- .map((field) => `${indent}${renderTypeField(field)}`)
63
- .join("\n");
64
- return `type ${op.typeName} {\n${fields}\n}`;
65
- }
66
- // For non-object types (aliases)
67
- return `type ${op.typeName} = ${renderTypeExpr(op.typeExpr)}`;
68
- }
69
- /**
70
- * Renders an addField operation.
71
- *
72
- * @example
73
- * // Input: { kind: "addField", typeName: "Todo", field: { name: "priority", type: { kind: "primitive", name: "number" }, optional: true } }
74
- * // Output: priority?: number
75
- *
76
- * // With default value:
77
- * // Input: { field: { name: "status", type: {...}, optional: false }, defaultValue: "active" }
78
- * // Output: status: "idle" | "active" | "done" = "active"
79
- */
80
- function renderAddField(op, _opts) {
81
- const field = op.field;
82
- if ("defaultValue" in field && field.defaultValue !== undefined) {
83
- return renderTypeField(field, field.defaultValue);
84
- }
85
- return renderTypeField(field);
86
- }
87
- /**
88
- * Renders a setFieldType operation.
89
- *
90
- * @example
91
- * // Input: { kind: "setFieldType", path: "Todo.status", typeExpr: { kind: "union", members: [...] } }
92
- * // Output: // Change Todo.status type to: "idle" | "active" | "done"
93
- * // status: "idle" | "active" | "done"
94
- */
95
- function renderSetFieldType(op, opts) {
96
- const typeStr = renderTypeExpr(op.typeExpr);
97
- const fieldName = extractFieldName(op.path);
98
- const lines = [];
99
- if (opts.includeComments) {
100
- lines.push(`${opts.commentPrefix}Change ${op.path} type to: ${typeStr}`);
101
- }
102
- lines.push(`${fieldName}: ${typeStr}`);
103
- return lines.join("\n");
104
- }
105
- /**
106
- * Renders a setDefaultValue operation.
107
- *
108
- * @example
109
- * // Input: { kind: "setDefaultValue", path: "Todo.completed", value: false }
110
- * // Output: completed: boolean = false
111
- */
112
- function renderSetDefaultValue(op, opts) {
113
- const fieldName = extractFieldName(op.path);
114
- const valueStr = renderValue(op.value);
115
- const lines = [];
116
- if (opts.includeComments) {
117
- lines.push(`${opts.commentPrefix}Set default value for ${op.path}`);
118
- }
119
- lines.push(`${fieldName} = ${valueStr}`);
120
- return lines.join("\n");
121
- }
122
- /**
123
- * Renders an addConstraint operation.
124
- *
125
- * Note: MEL constraints are typically expressed as validation rules or invariants.
126
- * Since MEL v0.3.3 doesn't have explicit constraint syntax in the examples,
127
- * we render as a comment with the constraint expression.
128
- *
129
- * @example
130
- * // Input: { kind: "addConstraint", targetPath: "User.age", rule: { kind: "gte", ... }, message: "Must be adult" }
131
- * // Output: // Constraint on User.age: gte(age, 18) - "Must be adult"
132
- */
133
- function renderAddConstraint(op, opts) {
134
- const exprStr = renderExprNode(op.rule);
135
- const messageStr = op.message ? ` - "${op.message}"` : "";
136
- // Constraints are rendered as comments since MEL v0.3.3 doesn't have explicit constraint syntax
137
- // The actual validation would be done via when guards in actions
138
- return `${opts.commentPrefix}Constraint on ${op.targetPath}: ${exprStr}${messageStr}`;
139
- }
140
- /**
141
- * Renders an addComputed operation.
142
- *
143
- * @example
144
- * // Input: { kind: "addComputed", name: "totalPrice", expr: { kind: "mul", left: {...}, right: {...} } }
145
- * // Output: computed totalPrice = mul(price, quantity)
146
- */
147
- function renderAddComputed(op, opts) {
148
- const exprStr = renderExprNode(op.expr);
149
- const lines = [];
150
- if (opts.includeComments && op.deps && op.deps.length > 0) {
151
- lines.push(`${opts.commentPrefix}Dependencies: ${op.deps.join(", ")}`);
152
- }
153
- lines.push(`computed ${op.name} = ${exprStr}`);
154
- return lines.join("\n");
155
- }
156
- /**
157
- * Renders an addActionAvailable operation.
158
- *
159
- * @example
160
- * // Input: { kind: "addActionAvailable", actionName: "submit", expr: { kind: "and", args: [...] } }
161
- * // Output: action submit() available when and(isValid, not(isSubmitting)) {
162
- * // // action body...
163
- * // }
164
- */
165
- function renderAddActionAvailable(op, opts) {
166
- const exprStr = renderExprNode(op.expr);
167
- const lines = [];
168
- if (opts.includeComments) {
169
- lines.push(`${opts.commentPrefix}Add availability condition to ${op.actionName}`);
170
- }
171
- lines.push(`action ${op.actionName}() available when ${exprStr} {`);
172
- lines.push(`${opts.indent}// action body...`);
173
- lines.push(`}`);
174
- return lines.join("\n");
175
- }
176
- // ============ Utility Functions ============
177
- /**
178
- * Extracts the field name from a semantic path.
179
- *
180
- * @example
181
- * // "Todo.title" -> "title"
182
- * // "User.address.city" -> "city"
183
- * // "count" -> "count"
184
- */
185
- function extractFieldName(path) {
186
- const parts = parsePath(path);
187
- return parts[parts.length - 1] ?? "";
188
- }
189
- /**
190
- * Gets the type name from a semantic path.
191
- *
192
- * @example
193
- * // "Todo.title" -> "Todo"
194
- * // "User.address.city" -> "User"
195
- * // "count" -> undefined
196
- */
197
- export function extractTypeName(path) {
198
- const parts = parsePath(path);
199
- if (parts.length >= 2) {
200
- return parts[0];
201
- }
202
- return undefined;
203
- }
204
- //# sourceMappingURL=patch-op.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"patch-op.js","sourceRoot":"","sources":["../../src/renderer/patch-op.ts"],"names":[],"mappings":"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"}