@mmapp/react-compiler 0.1.0-alpha.18 → 0.1.0-alpha.19

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 (189) hide show
  1. package/dist/babel/index.d.mts +1 -1
  2. package/dist/babel/index.d.ts +1 -1
  3. package/dist/babel/index.js +9 -6
  4. package/dist/babel/index.mjs +1 -1
  5. package/dist/chunk-26U577GB.mjs +3465 -0
  6. package/dist/chunk-2FBDFAX6.mjs +2362 -0
  7. package/dist/chunk-2REDFOER.mjs +931 -0
  8. package/dist/{chunk-FPAMQXKB.mjs → chunk-2UTXM2QX.mjs} +10 -20
  9. package/dist/chunk-2YDQTFAL.mjs +879 -0
  10. package/dist/chunk-2ZRKQE74.mjs +175 -0
  11. package/dist/chunk-3QHG2JWV.mjs +154 -0
  12. package/dist/chunk-466OWSTT.mjs +186 -0
  13. package/dist/chunk-467SFYOD.mjs +3127 -0
  14. package/dist/chunk-4AIJO7DZ.mjs +214 -0
  15. package/dist/chunk-4D43TZYL.mjs +7495 -0
  16. package/dist/chunk-4HX4PI4R.mjs +734 -0
  17. package/dist/chunk-4VU56NTZ.mjs +544 -0
  18. package/dist/chunk-4XHK6FWL.mjs +2058 -0
  19. package/dist/chunk-52C2JKH2.mjs +186 -0
  20. package/dist/chunk-52XHYD2V.mjs +214 -0
  21. package/dist/chunk-5GUFFFGL.mjs +148 -0
  22. package/dist/chunk-5N2FDDS6.mjs +214 -0
  23. package/dist/chunk-5ZSJXWZT.mjs +1646 -0
  24. package/dist/chunk-6CQOAAMV.mjs +1803 -0
  25. package/dist/chunk-6SEVAAVT.mjs +3516 -0
  26. package/dist/chunk-6YLR5ZDA.mjs +2829 -0
  27. package/dist/chunk-77UJB356.mjs +244 -0
  28. package/dist/chunk-7QOAJPQF.mjs +774 -0
  29. package/dist/chunk-A5RCMIBP.mjs +1795 -0
  30. package/dist/chunk-A63R3GKH.mjs +1803 -0
  31. package/dist/chunk-ABNTZXF5.mjs +951 -0
  32. package/dist/chunk-ADHWW56I.mjs +214 -0
  33. package/dist/chunk-AOGY2GK6.mjs +3292 -0
  34. package/dist/chunk-AXXUXRNA.mjs +1434 -0
  35. package/dist/chunk-BZLU5YK5.mjs +1025 -0
  36. package/dist/chunk-C7XCDDBH.mjs +1802 -0
  37. package/dist/chunk-CHLVKMQW.mjs +175 -0
  38. package/dist/chunk-CKGOZAB7.mjs +939 -0
  39. package/dist/chunk-CSXYDIVC.mjs +214 -0
  40. package/dist/chunk-CXTV4VGG.mjs +148 -0
  41. package/dist/chunk-D34RAZUX.mjs +2223 -0
  42. package/dist/chunk-DDIC7WM6.mjs +3127 -0
  43. package/dist/chunk-DPUQOBU6.mjs +4810 -0
  44. package/dist/chunk-E6MDVTGT.mjs +148 -0
  45. package/dist/chunk-EGKMUEM6.mjs +544 -0
  46. package/dist/chunk-EO6SYNCG.mjs +175 -0
  47. package/dist/chunk-EQGA6A6D.mjs +121 -0
  48. package/dist/chunk-EY2CSXYA.mjs +822 -0
  49. package/dist/chunk-FF5BQVII.mjs +148 -0
  50. package/dist/chunk-FIQ65CDR.mjs +925 -0
  51. package/dist/chunk-FOZXJFAR.mjs +186 -0
  52. package/dist/chunk-G2IAZ5Q6.mjs +148 -0
  53. package/dist/chunk-G7SMOWOL.mjs +828 -0
  54. package/dist/chunk-GK7NU6DO.mjs +214 -0
  55. package/dist/chunk-HDSCPEHY.mjs +4061 -0
  56. package/dist/chunk-HJELFNEA.mjs +186 -0
  57. package/dist/chunk-HOIUP6IF.mjs +690 -0
  58. package/dist/chunk-HRJGDPNE.mjs +148 -0
  59. package/dist/chunk-I3AU7GRD.mjs +120 -0
  60. package/dist/chunk-I3VQQJZ6.mjs +2843 -0
  61. package/dist/chunk-IPTX5MJU.mjs +3223 -0
  62. package/dist/chunk-ITGUSH2Z.mjs +2783 -0
  63. package/dist/chunk-IXHBCAMF.mjs +3306 -0
  64. package/dist/chunk-J7JUAHS4.mjs +186 -0
  65. package/dist/chunk-J7TWJ3TM.mjs +2784 -0
  66. package/dist/chunk-JDPLDGVF.mjs +4810 -0
  67. package/dist/chunk-JK72MQ4N.mjs +877 -0
  68. package/dist/chunk-K2HHCAS2.mjs +148 -0
  69. package/dist/chunk-K5HX2SVL.mjs +1902 -0
  70. package/dist/chunk-KAUEQ2F3.mjs +148 -0
  71. package/dist/chunk-KFVVOS5N.mjs +925 -0
  72. package/dist/chunk-KIH4AN3Y.mjs +154 -0
  73. package/dist/chunk-KPDMN5IX.mjs +175 -0
  74. package/dist/chunk-LZL2IRCH.mjs +186 -0
  75. package/dist/chunk-MIZV3TAN.mjs +3293 -0
  76. package/dist/chunk-MRH4J7IX.mjs +2846 -0
  77. package/dist/chunk-NKBL5GUC.mjs +186 -0
  78. package/dist/chunk-NQCNSCF6.mjs +148 -0
  79. package/dist/chunk-NRP5J3BR.mjs +4811 -0
  80. package/dist/chunk-NTB7OEX2.mjs +2918 -0
  81. package/dist/chunk-NUPJYPFU.mjs +801 -0
  82. package/dist/chunk-NVQUTSQX.mjs +3128 -0
  83. package/dist/chunk-OGMG64EY.mjs +148 -0
  84. package/dist/chunk-OL5B2HTH.mjs +175 -0
  85. package/dist/chunk-OPJKP747.mjs +7506 -0
  86. package/dist/chunk-OQLGGBNE.mjs +2918 -0
  87. package/dist/chunk-OW4AQUDL.mjs +544 -0
  88. package/dist/chunk-OWI6XWCD.mjs +3375 -0
  89. package/dist/chunk-OZT2EAF2.mjs +2776 -0
  90. package/dist/chunk-PBRBRKIQ.mjs +175 -0
  91. package/dist/chunk-PRUMNNDI.mjs +3192 -0
  92. package/dist/chunk-QPNHDTSM.mjs +4839 -0
  93. package/dist/chunk-RNEIAJDR.mjs +897 -0
  94. package/dist/chunk-RY7POBNT.mjs +3127 -0
  95. package/dist/chunk-S6FJ4DXL.mjs +1813 -0
  96. package/dist/chunk-SU4E6E7B.mjs +3153 -0
  97. package/dist/chunk-SYUUKW5A.mjs +3379 -0
  98. package/dist/chunk-THB5SX2S.mjs +113 -0
  99. package/dist/chunk-THFYE5ZX.mjs +244 -0
  100. package/dist/chunk-TK3QMXIP.mjs +2921 -0
  101. package/dist/chunk-TRR2NPAV.mjs +248 -0
  102. package/dist/chunk-TTTTOT7P.mjs +1803 -0
  103. package/dist/chunk-TXONBY6A.mjs +7509 -0
  104. package/dist/chunk-U2PX3JSY.mjs +1933 -0
  105. package/dist/chunk-UASOWKDI.mjs +186 -0
  106. package/dist/chunk-UDDTWG5J.mjs +734 -0
  107. package/dist/chunk-UIWLAQCL.mjs +175 -0
  108. package/dist/chunk-UL2XZEMA.mjs +3128 -0
  109. package/dist/chunk-US3AVDAI.mjs +3456 -0
  110. package/dist/chunk-V5DIDOTT.mjs +148 -0
  111. package/dist/chunk-VLTKQDJ3.mjs +244 -0
  112. package/dist/chunk-VVC42PTS.mjs +175 -0
  113. package/dist/chunk-VX3T3NIR.mjs +897 -0
  114. package/dist/chunk-WBYMW4NQ.mjs +3450 -0
  115. package/dist/chunk-XMWUHQVV.mjs +939 -0
  116. package/dist/chunk-Y6FXYEAI.mjs +10 -0
  117. package/dist/chunk-YCWC2SCO.mjs +148 -0
  118. package/dist/chunk-YFS6JMYO.mjs +3342 -0
  119. package/dist/chunk-ZE67HOSN.mjs +148 -0
  120. package/dist/chunk-ZSK5TPIV.mjs +148 -0
  121. package/dist/cli/index.js +317 -645
  122. package/dist/cli/index.mjs +8 -8
  123. package/dist/config-PL24KEWL.mjs +219 -0
  124. package/dist/dev-server-Bs_sz2DG.d.mts +111 -0
  125. package/dist/dev-server-Bs_sz2DG.d.ts +111 -0
  126. package/dist/dev-server-RmGHIntF.d.mts +113 -0
  127. package/dist/dev-server-RmGHIntF.d.ts +113 -0
  128. package/dist/dev-server.js +194 -515
  129. package/dist/dev-server.mjs +4 -4
  130. package/dist/engine-binary-KQB23JDR.mjs +97 -0
  131. package/dist/envelope-DD7v0v6E.d.mts +265 -0
  132. package/dist/envelope-DD7v0v6E.d.ts +265 -0
  133. package/dist/envelope.js +9 -6
  134. package/dist/envelope.mjs +2 -2
  135. package/dist/index-B5gSgvnd.d.mts +44 -0
  136. package/dist/index-B5gSgvnd.d.ts +44 -0
  137. package/dist/index-Bs0MnR54.d.mts +103 -0
  138. package/dist/index-Bs0MnR54.d.ts +103 -0
  139. package/dist/index-DR0nNc_f.d.mts +101 -0
  140. package/dist/index-DR0nNc_f.d.ts +101 -0
  141. package/dist/index-revho_gS.d.mts +104 -0
  142. package/dist/index-revho_gS.d.ts +104 -0
  143. package/dist/index-vQjwYekL.d.mts +104 -0
  144. package/dist/index-vQjwYekL.d.ts +104 -0
  145. package/dist/index.d.mts +2 -2
  146. package/dist/index.d.ts +2 -2
  147. package/dist/index.js +198 -517
  148. package/dist/index.mjs +9 -8
  149. package/dist/init-2XLTUF7O.mjs +407 -0
  150. package/dist/init-7FJENUDK.mjs +407 -0
  151. package/dist/init-DQDX3QK6.mjs +369 -0
  152. package/dist/init-K3GVM4JS.mjs +538 -0
  153. package/dist/init-NXS5BJN3.mjs +454 -0
  154. package/dist/init-UC3FWPIW.mjs +367 -0
  155. package/dist/init-UNV5XIDE.mjs +367 -0
  156. package/dist/project-compiler-2HOPO7GC.mjs +10 -0
  157. package/dist/project-compiler-D245L5QR.mjs +10 -0
  158. package/dist/project-compiler-FUQRMB4X.mjs +10 -0
  159. package/dist/project-compiler-LA5OBI5P.mjs +10 -0
  160. package/dist/project-compiler-OP2VVGJQ.mjs +10 -0
  161. package/dist/project-compiler-PZNFE6AH.mjs +10 -0
  162. package/dist/project-compiler-QBVF6MFI.mjs +10 -0
  163. package/dist/project-compiler-VFR6CSDX.mjs +10 -0
  164. package/dist/project-compiler-WMJZA4UH.mjs +10 -0
  165. package/dist/project-compiler-XXS27TZT.mjs +10 -0
  166. package/dist/project-compiler-YYGDSHY5.mjs +10 -0
  167. package/dist/project-decompiler-5GY2KSG4.mjs +7 -0
  168. package/dist/project-decompiler-7I2OMUVY.mjs +7 -0
  169. package/dist/project-decompiler-US7GAVIC.mjs +7 -0
  170. package/dist/pull-2Q53HF3H.mjs +107 -0
  171. package/dist/pull-5AFHD3QG.mjs +109 -0
  172. package/dist/pull-65GUSX6F.mjs +109 -0
  173. package/dist/pull-6LVI4LMM.mjs +109 -0
  174. package/dist/pull-A2QUHW4K.mjs +109 -0
  175. package/dist/pull-B6T5BUKV.mjs +109 -0
  176. package/dist/pull-CKHWZT33.mjs +109 -0
  177. package/dist/pull-GM74ERRT.mjs +109 -0
  178. package/dist/pull-JBEQWVPE.mjs +109 -0
  179. package/dist/pull-P44LDRWB.mjs +109 -0
  180. package/dist/pull-W2US3T3E.mjs +109 -0
  181. package/dist/testing/index.js +9 -6
  182. package/dist/testing/index.mjs +1 -1
  183. package/dist/verify-3PPS4XAM.mjs +1833 -0
  184. package/dist/verify-GKEH5FZQ.mjs +1833 -0
  185. package/dist/verify-HDKUNHZ4.mjs +1833 -0
  186. package/dist/verify-SEIXUGN4.mjs +1833 -0
  187. package/dist/vite/index.js +10 -7
  188. package/dist/vite/index.mjs +2 -2
  189. package/package.json +2 -2
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-NVQUTSQX.mjs";
4
+ import "./chunk-Y6FXYEAI.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-US3AVDAI.mjs";
4
+ import "./chunk-CIESM3BP.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-RY7POBNT.mjs";
4
+ import "./chunk-Y6FXYEAI.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-UL2XZEMA.mjs";
4
+ import "./chunk-Y6FXYEAI.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-DDIC7WM6.mjs";
4
+ import "./chunk-Y6FXYEAI.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-MRH4J7IX.mjs";
4
+ import "./chunk-Y6FXYEAI.mjs";
5
+
6
+ // src/cli/pull.ts
7
+ import { mkdirSync, writeFileSync } from "fs";
8
+ import { join, dirname } from "path";
9
+ async function pull(options) {
10
+ const { slug, apiUrl, token } = options;
11
+ const outDir = options.outDir ?? slug;
12
+ console.log(`[mmrc pull] Fetching "${slug}" from ${apiUrl}...`);
13
+ const ir = await fetchDefinition(apiUrl, token, slug);
14
+ if (!ir) {
15
+ throw new Error(`Definition "${slug}" not found`);
16
+ }
17
+ console.log(` Found: ${ir.name || ir.slug} (${ir.category || "workflow"}, v${ir.version || "1.0.0"})`);
18
+ console.log(` Fields: ${ir.fields?.length ?? 0}, States: ${ir.states?.length ?? 0}, Transitions: ${ir.transitions?.length ?? 0}`);
19
+ const result = decompileProjectEnhanced(ir);
20
+ mkdirSync(outDir, { recursive: true });
21
+ const filesWritten = [];
22
+ for (const file of result.files) {
23
+ const filePath = join(outDir, file.path);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ writeFileSync(filePath, file.content, "utf-8");
26
+ filesWritten.push(file.path);
27
+ console.log(` + ${file.path}`);
28
+ }
29
+ console.log(`
30
+ [mmrc pull] Scaffolded ${filesWritten.length} files in ${outDir}/`);
31
+ console.log(` Entry: ${result.entryFile}`);
32
+ console.log(`
33
+ Next steps:`);
34
+ console.log(` cd ${outDir}`);
35
+ console.log(` mmrc dev --src .`);
36
+ console.log(` # Edit files, then deploy back:`);
37
+ console.log(` mmrc deploy --src . --api-url ${apiUrl} --token <token>`);
38
+ return { slug, filesWritten, outDir };
39
+ }
40
+ async function fetchDefinition(apiUrl, token, slug) {
41
+ const bySlug = await tryFetch(`${apiUrl}/workflow/definitions?slug=${encodeURIComponent(slug)}`, token);
42
+ if (bySlug) return bySlug;
43
+ const bySearch = await tryFetch(`${apiUrl}/workflow/catalog/search?q=${encodeURIComponent(slug)}`, token);
44
+ if (bySearch) return bySearch;
45
+ const modulesRes = await fetch(`${apiUrl}/modules`, {
46
+ headers: { Authorization: `Bearer ${token}` }
47
+ });
48
+ if (modulesRes.ok) {
49
+ const modules = await modulesRes.json();
50
+ const mod = modules.find((m) => m.module_id === slug || m.name?.toLowerCase() === slug.toLowerCase());
51
+ if (mod) {
52
+ const fullRes = await fetch(`${apiUrl}/workflow/definitions/${mod.module_id}`, {
53
+ headers: { Authorization: `Bearer ${token}` }
54
+ });
55
+ if (fullRes.ok) {
56
+ return normalizeApiResponse(await fullRes.json());
57
+ }
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ async function tryFetch(url, token) {
63
+ try {
64
+ const res = await fetch(url, {
65
+ headers: { Authorization: `Bearer ${token}` }
66
+ });
67
+ if (!res.ok) return null;
68
+ const data = await res.json();
69
+ if (Array.isArray(data)) {
70
+ if (data.length === 0) return null;
71
+ return normalizeApiResponse(data[0]);
72
+ }
73
+ const items = data.items ?? data.data;
74
+ if (items && Array.isArray(items)) {
75
+ if (items.length === 0) return null;
76
+ return normalizeApiResponse(items[0]);
77
+ }
78
+ return normalizeApiResponse(data);
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+ function normalizeApiResponse(def) {
84
+ const ir = {
85
+ slug: def.slug,
86
+ name: def.name,
87
+ version: def.version || "1.0.0",
88
+ description: def.description || "",
89
+ category: def.category || "workflow",
90
+ fields: def.fields || [],
91
+ states: def.states || [],
92
+ transitions: def.transitions || [],
93
+ roles: def.roles || [],
94
+ on_event: def.on_event || [],
95
+ metadata: {
96
+ ...def.metadata || {}
97
+ }
98
+ };
99
+ const experience = def.view || def.experience || def.metadata?.experience;
100
+ if (experience) {
101
+ ir.experience = experience;
102
+ ir.metadata.experience = experience;
103
+ ir.view = experience;
104
+ }
105
+ return ir;
106
+ }
107
+ export {
108
+ pull
109
+ };