@mmapp/react-compiler 0.1.0-alpha.17 → 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 (190) 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-GMW45YVD.mjs +868 -0
  56. package/dist/chunk-HDSCPEHY.mjs +4061 -0
  57. package/dist/chunk-HJELFNEA.mjs +186 -0
  58. package/dist/chunk-HOIUP6IF.mjs +690 -0
  59. package/dist/chunk-HRJGDPNE.mjs +148 -0
  60. package/dist/chunk-I3AU7GRD.mjs +120 -0
  61. package/dist/chunk-I3VQQJZ6.mjs +2843 -0
  62. package/dist/chunk-IPTX5MJU.mjs +3223 -0
  63. package/dist/chunk-ITGUSH2Z.mjs +2783 -0
  64. package/dist/chunk-IXHBCAMF.mjs +3306 -0
  65. package/dist/chunk-J7JUAHS4.mjs +186 -0
  66. package/dist/chunk-J7TWJ3TM.mjs +2784 -0
  67. package/dist/chunk-JDPLDGVF.mjs +4810 -0
  68. package/dist/chunk-JK72MQ4N.mjs +877 -0
  69. package/dist/chunk-K2HHCAS2.mjs +148 -0
  70. package/dist/chunk-K5HX2SVL.mjs +1902 -0
  71. package/dist/chunk-KAUEQ2F3.mjs +148 -0
  72. package/dist/chunk-KFVVOS5N.mjs +925 -0
  73. package/dist/chunk-KIH4AN3Y.mjs +154 -0
  74. package/dist/chunk-KPDMN5IX.mjs +175 -0
  75. package/dist/chunk-LZL2IRCH.mjs +186 -0
  76. package/dist/chunk-MIZV3TAN.mjs +3293 -0
  77. package/dist/chunk-MRH4J7IX.mjs +2846 -0
  78. package/dist/chunk-NKBL5GUC.mjs +186 -0
  79. package/dist/chunk-NQCNSCF6.mjs +148 -0
  80. package/dist/chunk-NRP5J3BR.mjs +4811 -0
  81. package/dist/chunk-NTB7OEX2.mjs +2918 -0
  82. package/dist/chunk-NUPJYPFU.mjs +801 -0
  83. package/dist/chunk-NVQUTSQX.mjs +3128 -0
  84. package/dist/chunk-OGMG64EY.mjs +148 -0
  85. package/dist/chunk-OL5B2HTH.mjs +175 -0
  86. package/dist/chunk-OPJKP747.mjs +7506 -0
  87. package/dist/chunk-OQLGGBNE.mjs +2918 -0
  88. package/dist/chunk-OW4AQUDL.mjs +544 -0
  89. package/dist/chunk-OWI6XWCD.mjs +3375 -0
  90. package/dist/chunk-OZT2EAF2.mjs +2776 -0
  91. package/dist/chunk-PBRBRKIQ.mjs +175 -0
  92. package/dist/chunk-PRUMNNDI.mjs +3192 -0
  93. package/dist/chunk-QPNHDTSM.mjs +4839 -0
  94. package/dist/chunk-RNEIAJDR.mjs +897 -0
  95. package/dist/chunk-RY7POBNT.mjs +3127 -0
  96. package/dist/chunk-S6FJ4DXL.mjs +1813 -0
  97. package/dist/chunk-SU4E6E7B.mjs +3153 -0
  98. package/dist/chunk-SYUUKW5A.mjs +3379 -0
  99. package/dist/chunk-THB5SX2S.mjs +113 -0
  100. package/dist/chunk-THFYE5ZX.mjs +244 -0
  101. package/dist/chunk-TK3QMXIP.mjs +2921 -0
  102. package/dist/chunk-TRR2NPAV.mjs +248 -0
  103. package/dist/chunk-TTTTOT7P.mjs +1803 -0
  104. package/dist/chunk-TXONBY6A.mjs +7509 -0
  105. package/dist/chunk-U2PX3JSY.mjs +1933 -0
  106. package/dist/chunk-UASOWKDI.mjs +186 -0
  107. package/dist/chunk-UDDTWG5J.mjs +734 -0
  108. package/dist/chunk-UIWLAQCL.mjs +175 -0
  109. package/dist/chunk-UL2XZEMA.mjs +3128 -0
  110. package/dist/chunk-US3AVDAI.mjs +3456 -0
  111. package/dist/chunk-V5DIDOTT.mjs +148 -0
  112. package/dist/chunk-VLTKQDJ3.mjs +244 -0
  113. package/dist/chunk-VVC42PTS.mjs +175 -0
  114. package/dist/chunk-VX3T3NIR.mjs +897 -0
  115. package/dist/chunk-WBYMW4NQ.mjs +3450 -0
  116. package/dist/chunk-XMWUHQVV.mjs +939 -0
  117. package/dist/chunk-Y6FXYEAI.mjs +10 -0
  118. package/dist/chunk-YCWC2SCO.mjs +148 -0
  119. package/dist/chunk-YFS6JMYO.mjs +3342 -0
  120. package/dist/chunk-ZE67HOSN.mjs +148 -0
  121. package/dist/chunk-ZSK5TPIV.mjs +148 -0
  122. package/dist/cli/index.js +317 -656
  123. package/dist/cli/index.mjs +8 -8
  124. package/dist/config-PL24KEWL.mjs +219 -0
  125. package/dist/dev-server-Bs_sz2DG.d.mts +111 -0
  126. package/dist/dev-server-Bs_sz2DG.d.ts +111 -0
  127. package/dist/dev-server-RmGHIntF.d.mts +113 -0
  128. package/dist/dev-server-RmGHIntF.d.ts +113 -0
  129. package/dist/dev-server.js +194 -526
  130. package/dist/dev-server.mjs +4 -4
  131. package/dist/engine-binary-KQB23JDR.mjs +97 -0
  132. package/dist/envelope-DD7v0v6E.d.mts +265 -0
  133. package/dist/envelope-DD7v0v6E.d.ts +265 -0
  134. package/dist/envelope.js +9 -6
  135. package/dist/envelope.mjs +2 -2
  136. package/dist/index-B5gSgvnd.d.mts +44 -0
  137. package/dist/index-B5gSgvnd.d.ts +44 -0
  138. package/dist/index-Bs0MnR54.d.mts +103 -0
  139. package/dist/index-Bs0MnR54.d.ts +103 -0
  140. package/dist/index-DR0nNc_f.d.mts +101 -0
  141. package/dist/index-DR0nNc_f.d.ts +101 -0
  142. package/dist/index-revho_gS.d.mts +104 -0
  143. package/dist/index-revho_gS.d.ts +104 -0
  144. package/dist/index-vQjwYekL.d.mts +104 -0
  145. package/dist/index-vQjwYekL.d.ts +104 -0
  146. package/dist/index.d.mts +2 -2
  147. package/dist/index.d.ts +2 -2
  148. package/dist/index.js +198 -528
  149. package/dist/index.mjs +9 -8
  150. package/dist/init-2XLTUF7O.mjs +407 -0
  151. package/dist/init-7FJENUDK.mjs +407 -0
  152. package/dist/init-DQDX3QK6.mjs +369 -0
  153. package/dist/init-K3GVM4JS.mjs +538 -0
  154. package/dist/init-NXS5BJN3.mjs +454 -0
  155. package/dist/init-UC3FWPIW.mjs +367 -0
  156. package/dist/init-UNV5XIDE.mjs +367 -0
  157. package/dist/project-compiler-2HOPO7GC.mjs +10 -0
  158. package/dist/project-compiler-D245L5QR.mjs +10 -0
  159. package/dist/project-compiler-FUQRMB4X.mjs +10 -0
  160. package/dist/project-compiler-LA5OBI5P.mjs +10 -0
  161. package/dist/project-compiler-OP2VVGJQ.mjs +10 -0
  162. package/dist/project-compiler-PZNFE6AH.mjs +10 -0
  163. package/dist/project-compiler-QBVF6MFI.mjs +10 -0
  164. package/dist/project-compiler-VFR6CSDX.mjs +10 -0
  165. package/dist/project-compiler-WMJZA4UH.mjs +10 -0
  166. package/dist/project-compiler-XXS27TZT.mjs +10 -0
  167. package/dist/project-compiler-YYGDSHY5.mjs +10 -0
  168. package/dist/project-decompiler-5GY2KSG4.mjs +7 -0
  169. package/dist/project-decompiler-7I2OMUVY.mjs +7 -0
  170. package/dist/project-decompiler-US7GAVIC.mjs +7 -0
  171. package/dist/pull-2Q53HF3H.mjs +107 -0
  172. package/dist/pull-5AFHD3QG.mjs +109 -0
  173. package/dist/pull-65GUSX6F.mjs +109 -0
  174. package/dist/pull-6LVI4LMM.mjs +109 -0
  175. package/dist/pull-A2QUHW4K.mjs +109 -0
  176. package/dist/pull-B6T5BUKV.mjs +109 -0
  177. package/dist/pull-CKHWZT33.mjs +109 -0
  178. package/dist/pull-GM74ERRT.mjs +109 -0
  179. package/dist/pull-JBEQWVPE.mjs +109 -0
  180. package/dist/pull-P44LDRWB.mjs +109 -0
  181. package/dist/pull-W2US3T3E.mjs +109 -0
  182. package/dist/testing/index.js +9 -6
  183. package/dist/testing/index.mjs +1 -1
  184. package/dist/verify-3PPS4XAM.mjs +1833 -0
  185. package/dist/verify-GKEH5FZQ.mjs +1833 -0
  186. package/dist/verify-HDKUNHZ4.mjs +1833 -0
  187. package/dist/verify-SEIXUGN4.mjs +1833 -0
  188. package/dist/vite/index.js +10 -7
  189. package/dist/vite/index.mjs +2 -2
  190. package/package.json +2 -2
@@ -0,0 +1,109 @@
1
+ import {
2
+ decompileProjectEnhanced
3
+ } from "./chunk-467SFYOD.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-SU4E6E7B.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-WBYMW4NQ.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-I3VQQJZ6.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
+ };
@@ -6266,7 +6266,8 @@ function convertOnEvent(sub) {
6266
6266
  };
6267
6267
  }
6268
6268
  function emitIR(extracted) {
6269
- const { slug, name, version, description, category, fields, states, transitions } = extracted;
6269
+ const { slug, name, version, description, category: rawCategory, fields, states, transitions } = extracted;
6270
+ const category = Array.isArray(rawCategory) ? rawCategory : [rawCategory];
6270
6271
  const stateArray = Array.from(states.values());
6271
6272
  if (stateArray.length === 0) {
6272
6273
  stateArray.push({
@@ -6654,13 +6655,15 @@ function emitCanonical(extracted, sourceFilename) {
6654
6655
  }
6655
6656
  ]
6656
6657
  });
6657
- const category = extracted.category;
6658
+ const rawCat = extracted.category;
6658
6659
  let categoryArray;
6659
- if (category.includes("/")) {
6660
- const [primary, ...tags] = category.split("/");
6660
+ if (Array.isArray(rawCat)) {
6661
+ categoryArray = rawCat;
6662
+ } else if (rawCat.includes("/")) {
6663
+ const [primary, ...tags] = rawCat.split("/");
6661
6664
  categoryArray = (0, import_player_core.normalizeCategory)(primary, ...tags);
6662
6665
  } else {
6663
- categoryArray = [category];
6666
+ categoryArray = [rawCat];
6664
6667
  }
6665
6668
  return {
6666
6669
  slug: ir.slug,
@@ -6807,7 +6810,7 @@ function compilerStateToWorkflow(state, metadata) {
6807
6810
  name: metadata.name || "Workflow",
6808
6811
  version: metadata.version || "0.1.0",
6809
6812
  description: metadata.description,
6810
- category: metadata.category || "workflow",
6813
+ category: metadata.categoryArray ? metadata.categoryArray : [metadata.category || "workflow"],
6811
6814
  fields: state.fields || [],
6812
6815
  states: state.states || /* @__PURE__ */ new Map(),
6813
6816
  transitions: state.transitions || [],
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  babelPlugin
3
- } from "../chunk-7T6Q5KAA.mjs";
3
+ } from "../chunk-TXONBY6A.mjs";
4
4
  import {
5
5
  __require
6
6
  } from "../chunk-CIESM3BP.mjs";