@sfmc-bds/cli 0.1.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 (62) hide show
  1. package/README.md +22 -0
  2. package/dist/commands-behavior-pack.d.ts +46 -0
  3. package/dist/commands-behavior-pack.d.ts.map +1 -0
  4. package/dist/commands-behavior-pack.js +160 -0
  5. package/dist/commands-behavior-pack.js.map +1 -0
  6. package/dist/commands.d.ts +11 -0
  7. package/dist/commands.d.ts.map +1 -0
  8. package/dist/commands.js +191 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/dispatcher.d.ts +13 -0
  11. package/dist/dispatcher.d.ts.map +1 -0
  12. package/dist/dispatcher.js +23 -0
  13. package/dist/dispatcher.js.map +1 -0
  14. package/dist/index.d.ts +31 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +43 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/logs.d.ts +35 -0
  19. package/dist/logs.d.ts.map +1 -0
  20. package/dist/logs.js +202 -0
  21. package/dist/logs.js.map +1 -0
  22. package/dist/main.d.ts +3 -0
  23. package/dist/main.d.ts.map +1 -0
  24. package/dist/main.js +189 -0
  25. package/dist/main.js.map +1 -0
  26. package/dist/module-commands.d.ts +39 -0
  27. package/dist/module-commands.d.ts.map +1 -0
  28. package/dist/module-commands.js +367 -0
  29. package/dist/module-commands.js.map +1 -0
  30. package/dist/registry.d.ts +53 -0
  31. package/dist/registry.d.ts.map +1 -0
  32. package/dist/registry.js +125 -0
  33. package/dist/registry.js.map +1 -0
  34. package/dist/remote-agent.d.ts +18 -0
  35. package/dist/remote-agent.d.ts.map +1 -0
  36. package/dist/remote-agent.js +212 -0
  37. package/dist/remote-agent.js.map +1 -0
  38. package/dist/repl.d.ts +9 -0
  39. package/dist/repl.d.ts.map +1 -0
  40. package/dist/repl.js +652 -0
  41. package/dist/repl.js.map +1 -0
  42. package/dist/runtime.d.ts +28 -0
  43. package/dist/runtime.d.ts.map +1 -0
  44. package/dist/runtime.js +74 -0
  45. package/dist/runtime.js.map +1 -0
  46. package/dist/services.d.ts +61 -0
  47. package/dist/services.d.ts.map +1 -0
  48. package/dist/services.js +259 -0
  49. package/dist/services.js.map +1 -0
  50. package/dist/terminal.d.ts +3 -0
  51. package/dist/terminal.d.ts.map +1 -0
  52. package/dist/terminal.js +178 -0
  53. package/dist/terminal.js.map +1 -0
  54. package/dist/theme.d.ts +33 -0
  55. package/dist/theme.d.ts.map +1 -0
  56. package/dist/theme.js +55 -0
  57. package/dist/theme.js.map +1 -0
  58. package/dist/wizard.d.ts +2 -0
  59. package/dist/wizard.d.ts.map +1 -0
  60. package/dist/wizard.js +475 -0
  61. package/dist/wizard.js.map +1 -0
  62. package/package.json +65 -0
package/dist/logs.js ADDED
@@ -0,0 +1,202 @@
1
+ /**
2
+ * logs.ts — sfmc 主进程统一日志聚合层
3
+ *
4
+ * 内部委托 @sfmc-bds/logs 共享包的 createMemoryBuffer + inferLevel,
5
+ * 保持向后兼容的 pushLog / onLog / getAllLogs / getRecentLogs API
6
+ * (services.ts 捕获子进程 stdout 后调用 pushLog 汇聚到此)。
7
+ *
8
+ * formatLog 保留 theme.ts (chalk) 配色,比共享包的纯 ANSI 版本视觉更丰富。
9
+ */
10
+ import { createMemoryBuffer, inferLevel as sharedInferLevel, } from "@sfmc-bds/sdk/logs";
11
+ import { SOURCE_ITEMS } from "./repl.js";
12
+ import { c } from "./theme.js";
13
+ const buffer = createMemoryBuffer(5000);
14
+ /** 推送一条日志到内存缓冲 (services.ts 捕获子进程 stdout 后调用) */
15
+ export function pushLog(text, source, level) {
16
+ buffer.pushDirect(text, source, level);
17
+ }
18
+ /** 订阅新日志事件,返回取消订阅函数 */
19
+ export function onLog(fn) {
20
+ return buffer.subscribe(fn);
21
+ }
22
+ /** 获取全部日志 (按时间顺序) */
23
+ export function getAllLogs() {
24
+ return buffer.getAll();
25
+ }
26
+ /** 获取最近 n 条,可按 level / source 过滤 */
27
+ export function getRecentLogs(n, levels, sources) {
28
+ return buffer.getRecent(n, levels, sources);
29
+ }
30
+ /** 从原始文本推断日志级别 (委托共享包) */
31
+ export function inferLevel(text) {
32
+ return sharedInferLevel(text);
33
+ }
34
+ /** 简化BDS日志 */
35
+ function stripLogPrefix(line) {
36
+ // 匹配格式: [2026-07-18 23:56:06:778 INFO]
37
+ const prefixRegex = /^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}:\d{3} (INFO|WARNING|ERROR|FATAL|DEBUG)\]\s*/;
38
+ return line.replace(prefixRegex, "");
39
+ }
40
+ /**
41
+ * 从一行 BDS 日志中提取日志等级
42
+ * @param line 日志行字符串
43
+ * @returns 日志等级(大写),若无法识别则返回 'UNKNOWN'
44
+ */
45
+ function getLogLevel(line) {
46
+ // 定义所有可能出现的等级(不区分大小写)
47
+ const levelNames = ["INFO", "WARNING", "ERROR", "FATAL", "DEBUG", "TRACE", "WARN"];
48
+ const levelPattern = levelNames.join("|");
49
+ // 1. 等级在方括号内,如 [INFO] 或 [WARNING]
50
+ let match = line.match(new RegExp(`\\[(${levelPattern})\\]`, "i"));
51
+ if (match && match[1])
52
+ return match[1].toUpperCase();
53
+ // 2. 等级紧跟在时间戳方括号之后,如 [2026-...] INFO
54
+ match = line.match(new RegExp(`^\\[.*?\\]\\s*(${levelPattern})`, "i"));
55
+ if (match && match[1])
56
+ return match[1].toUpperCase();
57
+ // 3. 等级在行首,后跟冒号,如 INFO: 或 ERROR:
58
+ match = line.match(new RegExp(`^(${levelPattern})\\s*:`, "i"));
59
+ if (match && match[1])
60
+ return match[1].toUpperCase();
61
+ // 4. 等级在类似 [Server] 后的方括号外,如 [Server] INFO:
62
+ match = line.match(new RegExp(`\\[.*?\\]\\s*(${levelPattern})\\s*:`, "i"));
63
+ if (match && match[1])
64
+ return match[1].toUpperCase();
65
+ // 5. 若上述均未匹配,返回未知
66
+ return "UNKNOWN";
67
+ }
68
+ /** 格式化日志用于 REPL 展示 (用 theme.ts chalk 配色) */
69
+ export function formatLog(l) {
70
+ let src = c.bold(padSource(l.source));
71
+ let ts = c.dim(l.time.toLocaleTimeString());
72
+ let lvl = levelTag(l.level);
73
+ let txt = highlightText(l.text);
74
+ for (let _src of SOURCE_ITEMS) {
75
+ if (_src["value"] === l.source)
76
+ src = `[${_src["label"]}]`;
77
+ continue;
78
+ }
79
+ if (l.source === "bds") {
80
+ lvl = getLogLevel(l.text);
81
+ switch (lvl) {
82
+ case "INFO":
83
+ lvl = "info";
84
+ break;
85
+ case "WARNING":
86
+ lvl = "warn";
87
+ break;
88
+ case "ERROR":
89
+ lvl = "error";
90
+ break;
91
+ case "DEBUG":
92
+ lvl = "debug";
93
+ break;
94
+ default:
95
+ lvl = "info";
96
+ break;
97
+ }
98
+ txt = stripLogPrefix(l.text);
99
+ lvl = levelTag(l.level);
100
+ }
101
+ return `${ts} ${src} ${lvl} ${txt}`;
102
+ }
103
+ function padSource(s) {
104
+ return s.padEnd(7);
105
+ }
106
+ function levelTag(lvl) {
107
+ switch (lvl) {
108
+ case "error":
109
+ return c.red("[ERR]");
110
+ case "warn":
111
+ return c.yellow("[WRN]");
112
+ case "success":
113
+ return c.green(c.bold("[OK]"));
114
+ case "debug":
115
+ return c.dim("[DBG]");
116
+ default:
117
+ return c.blue("[INF]");
118
+ }
119
+ }
120
+ function highlightText(raw) {
121
+ let s = raw;
122
+ s = s.replace(/§[0-9a-fklmnor]/g, "");
123
+ s = s.replace(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d+)?\b/g, (m) => c.cyan(m));
124
+ s = s.replace(/\b(TPS|MSPT|tick|loaded|saved)\b/gi, (m) => c.cyan(m));
125
+ return s;
126
+ }
127
+ /* ==================================================================
128
+ * 软换行: 超终端宽度时换行,后续行缩进对齐
129
+ * ================================================================== */
130
+ /** 单个字符在终端的显示宽度 (CJK 全角=2, 其余=1) */
131
+ function charWidth(ch) {
132
+ const c = ch.codePointAt(0) ?? 0;
133
+ if (c >= 0x1100 &&
134
+ (c <= 0x115f ||
135
+ (c >= 0x2e80 && c <= 0xa4cf && c !== 0x303f) ||
136
+ (c >= 0xac00 && c <= 0xd7a3) ||
137
+ (c >= 0xf900 && c <= 0xfaff) ||
138
+ (c >= 0xfe30 && c <= 0xfe4f) ||
139
+ (c >= 0xff00 && c <= 0xff60) ||
140
+ (c >= 0xffe0 && c <= 0xffe6) ||
141
+ (c >= 0x20000 && c <= 0x2fffd)))
142
+ return 2;
143
+ return 1;
144
+ }
145
+ /** 字符串在终端的可见宽度 (strip ANSI 后按 CJK 宽度累加) */
146
+ export function visibleWidth(s) {
147
+ const stripped = s.replace(/\x1b\[[0-9;]*m/g, "");
148
+ let w = 0;
149
+ for (const ch of stripped)
150
+ w += charWidth(ch);
151
+ return w;
152
+ }
153
+ /**
154
+ * 按终端可见宽度换行,后续行左侧缩进 indent 个空格。
155
+ * 保留 ANSI 颜色码:换行时先 reset 避免缩进空格带色,新行恢复颜色状态。
156
+ * 宽字符(CJK)按 2 列计算,避免中文行换行位置偏后。
157
+ */
158
+ export function wrapLogLine(s, indent) {
159
+ const cols = process.stdout.columns || 80;
160
+ if (visibleWidth(s) <= cols)
161
+ return s;
162
+ const lines = [];
163
+ let cur = "";
164
+ let w = 0;
165
+ let limit = cols;
166
+ let activeAnsi = "";
167
+ let i = 0;
168
+ while (i < s.length) {
169
+ const m = /^\x1b\[[0-9;]*m/.exec(s.slice(i));
170
+ if (m) {
171
+ const code = m[0];
172
+ cur += code;
173
+ if (code === "\x1b[0m")
174
+ activeAnsi = "";
175
+ else
176
+ activeAnsi = code;
177
+ i += code.length;
178
+ }
179
+ else {
180
+ const ch = s[i];
181
+ const cw = charWidth(ch);
182
+ if (w + cw > limit) {
183
+ if (activeAnsi)
184
+ cur += "\x1b[0m";
185
+ lines.push(cur);
186
+ cur = " ".repeat(indent);
187
+ if (activeAnsi)
188
+ cur += activeAnsi;
189
+ w = 0;
190
+ limit = cols - indent;
191
+ }
192
+ cur += ch;
193
+ w += cw;
194
+ i++;
195
+ }
196
+ }
197
+ if (activeAnsi)
198
+ cur += "\x1b[0m";
199
+ lines.push(cur);
200
+ return lines.join("\n");
201
+ }
202
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,UAAU,IAAI,gBAAgB,GAG/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAM/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExC,iDAAiD;AACjD,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,MAAiB,EAAE,KAAe;IACtE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,KAAK,CAAC,EAA6B;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,MAAkB,EAAE,OAAoB;IAC/E,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,cAAc;AACd,SAAS,cAAc,CAAC,IAAY;IAClC,uCAAuC;IACvC,MAAM,WAAW,GAAG,oFAAoF,CAAC;IACzG,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,sBAAsB;IACtB,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,kCAAkC;IAClC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,qCAAqC;IACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,kBAAkB,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,iCAAiC;IACjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,YAAY,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,4CAA4C;IAC5C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,YAAY,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,kBAAkB;IAClB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,SAAS,CAAC,CAAa;IACrC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;YAAE,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3D,SAAS;IACX,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,MAAM;gBACT,GAAG,GAAG,MAAM,CAAC;gBACb,MAAM;YACR,KAAK,SAAS;gBACZ,GAAG,GAAG,MAAM,CAAC;gBACb,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,GAAG,OAAO,CAAC;gBACd,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,GAAG,OAAO,CAAC;gBACd,MAAM;YACR;gBACE,GAAG,GAAG,MAAM,CAAC;gBACb,MAAM;QACV,CAAC;QACD,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,CAAY;IAC7B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAa;IAC7B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gDAAgD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;wEAEwE;AAExE,oCAAoC;AACpC,SAAS,SAAS,CAAC,EAAU;IAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,IACE,CAAC,IAAI,MAAM;QACX,CAAC,CAAC,IAAI,MAAM;YACV,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;YAC5C,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;QAEjC,OAAO,CAAC,CAAC;IACX,OAAO,CAAC,CAAC;AACX,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,EAAE,IAAI,QAAQ;QAAE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,MAAc;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,GAAG,IAAI,IAAI,CAAC;YACZ,IAAI,IAAI,KAAK,SAAS;gBAAE,UAAU,GAAG,EAAE,CAAC;;gBACnC,UAAU,GAAG,IAAI,CAAC;YACvB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YACjB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnB,IAAI,UAAU;oBAAE,GAAG,IAAI,SAAS,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,UAAU;oBAAE,GAAG,IAAI,UAAU,CAAC;gBAClC,CAAC,GAAG,CAAC,CAAC;gBACN,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;YACxB,CAAC;YACD,GAAG,IAAI,EAAE,CAAC;YACV,CAAC,IAAI,EAAE,CAAC;YACR,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IACD,IAAI,UAAU;QAAE,GAAG,IAAI,SAAS,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
package/dist/main.js ADDED
@@ -0,0 +1,189 @@
1
+ #!/usr/bin/env node
2
+ import fs from "node:fs";
3
+ import process from "node:process";
4
+ import { configPath } from "@sfmc-bds/sdk/node/config";
5
+ import pkg from "../package.json" with { type: "json" };
6
+ import { cmdLogs, cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from "./commands.js";
7
+ import { HELP, startRepl } from "./repl.js";
8
+ import { cmdModuleDisable, cmdModuleEnable, cmdModuleInfo, cmdModuleInstall, cmdModuleList, cmdModuleUninstall, cmdModuleVerify, scanAndWarnUnknown } from "./module-commands.js";
9
+ import { cmdBehaviorPackBuild, cmdBehaviorPackDeploy } from "./commands-behavior-pack.js";
10
+ import { disableRemoteAgent, enrollRemoteAgent, remoteStatus, startRemoteAgent, stopRemoteAgent } from "./remote-agent.js";
11
+ import { c } from "./theme.js";
12
+ function printVersion() {
13
+ `${c.text(`⠪⡁⡯⠁`)}
14
+ ${c.text(`⠒⠁⠃`)}${c.purple(`⠄`)}
15
+ ${c.text(`⡷⡇⡎⠁`)} ${c.text(`S`)}${c.dim(`cripts`)} ${c.text(`F`)}${c.dim(`or`)} ${c.text(`M`)}${c.dim(`ine`)}${c.text(`c`)}${c.dim(`raft Server`)} v${pkg.version}
16
+ ${c.text(`⠃⠃⠑⠂`)} ${c.dim(`https://github.com/DogeLakeDev/ScriptsForMinecraftServer`)}\n`;
17
+ }
18
+ function printUsage() {
19
+ console.log(`${HELP}`);
20
+ }
21
+ async function main() {
22
+ const args = process.argv.slice(2);
23
+ if (args.length === 0) {
24
+ const { ROOT } = await import("./runtime.js");
25
+ const configFile = configPath(ROOT, "db_config.json");
26
+ if (!fs.existsSync(configFile)) {
27
+ const { runWizard } = await import("./wizard.js");
28
+ await runWizard();
29
+ const { refreshServices } = await import("./services.js");
30
+ refreshServices();
31
+ }
32
+ /* Print yellow warnings for modules from outside the first-party registry.
33
+ * Best-effort: registry unreachable → no warning, no failure. */
34
+ const warn = await scanAndWarnUnknown();
35
+ if (warn)
36
+ console.log(warn);
37
+ startRemoteAgent();
38
+ await startRepl();
39
+ return;
40
+ }
41
+ const [cmd, ...rest] = args;
42
+ switch (cmd) {
43
+ case "--help":
44
+ case "-h":
45
+ case "help":
46
+ printUsage();
47
+ break;
48
+ case "--version":
49
+ case "-v":
50
+ printVersion();
51
+ break;
52
+ case "status":
53
+ console.log(cmdStatus());
54
+ break;
55
+ case "logs":
56
+ case "log": {
57
+ const out = cmdLogs(rest);
58
+ if (out)
59
+ console.log(out);
60
+ break;
61
+ }
62
+ case "start":
63
+ if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
64
+ console.log(await cmdStartAll());
65
+ }
66
+ else if (rest[0]) {
67
+ console.log(await cmdStart(rest[0]));
68
+ }
69
+ else {
70
+ console.log(c.yellow("Usage: sfmc start <service>|-all"));
71
+ }
72
+ break;
73
+ case "stop":
74
+ if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
75
+ console.log(await cmdStopAll());
76
+ }
77
+ else if (rest[0]) {
78
+ console.log(await cmdStop(rest[0]));
79
+ }
80
+ else {
81
+ console.log(c.yellow("Usage: sfmc stop <service>|-all"));
82
+ }
83
+ break;
84
+ case "restart":
85
+ if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
86
+ await cmdStopAll();
87
+ console.log(await cmdStartAll());
88
+ }
89
+ else if (rest[0]) {
90
+ console.log(await cmdRestart(rest[0]));
91
+ }
92
+ else {
93
+ console.log(c.yellow("Usage: sfmc restart <service>|-all"));
94
+ }
95
+ break;
96
+ case "update":
97
+ console.log(await cmdUpdate(rest));
98
+ break;
99
+ case "behavior-pack":
100
+ case "bp": {
101
+ const [sub, ...subRest] = rest;
102
+ switch (sub) {
103
+ case "build":
104
+ console.log(await cmdBehaviorPackBuild(subRest));
105
+ break;
106
+ case "deploy":
107
+ console.log(await cmdBehaviorPackDeploy(subRest));
108
+ break;
109
+ default:
110
+ console.log(c.yellow("Usage: sfmc behavior-pack <build|deploy>"));
111
+ }
112
+ break;
113
+ }
114
+ case "init": {
115
+ const { runWizard } = await import("./wizard.js");
116
+ await runWizard();
117
+ break;
118
+ }
119
+ case "remote": {
120
+ const [subcommand, ...remoteArgs] = rest;
121
+ if (subcommand === "enroll" && remoteArgs[0] && remoteArgs[1]) {
122
+ const name = remoteArgs[2] ?? process.env.COMPUTERNAME ?? "sfmc-agent";
123
+ const agentId = await enrollRemoteAgent(remoteArgs[0], remoteArgs[1], name);
124
+ console.log(`Enrolled remote agent: ${agentId}`);
125
+ startRemoteAgent();
126
+ const exit = () => {
127
+ stopRemoteAgent();
128
+ process.exit(0);
129
+ };
130
+ process.once("SIGINT", exit);
131
+ process.once("SIGTERM", exit);
132
+ /* keep alive so the WS loop can run; ctrl-c exits. */
133
+ await new Promise(() => undefined);
134
+ }
135
+ else if (subcommand === "status") {
136
+ console.log(JSON.stringify(remoteStatus(), null, 2));
137
+ }
138
+ else if (subcommand === "disable") {
139
+ disableRemoteAgent();
140
+ console.log("Remote agent disabled");
141
+ }
142
+ else {
143
+ console.log("Usage: sfmc remote enroll <controller-url> <enrollment-token> [name] | sfmc remote status | sfmc remote disable");
144
+ }
145
+ break;
146
+ }
147
+ case "module":
148
+ case "mod": {
149
+ const [sub, ...subRest] = rest;
150
+ switch (sub) {
151
+ case "list":
152
+ console.log(await cmdModuleList(subRest));
153
+ break;
154
+ case "install":
155
+ console.log(await cmdModuleInstall(subRest));
156
+ break;
157
+ case "uninstall":
158
+ case "remove":
159
+ console.log(await cmdModuleUninstall(subRest));
160
+ break;
161
+ case "verify":
162
+ console.log(await cmdModuleVerify(subRest));
163
+ break;
164
+ case "info":
165
+ console.log(await cmdModuleInfo(subRest));
166
+ break;
167
+ case "enable":
168
+ console.log(await cmdModuleEnable(subRest));
169
+ break;
170
+ case "disable":
171
+ console.log(await cmdModuleDisable(subRest));
172
+ break;
173
+ default:
174
+ console.log(c.yellow("Usage: sfmc module <list|install|uninstall|verify|info|enable|disable> [args]"));
175
+ }
176
+ break;
177
+ }
178
+ default:
179
+ console.log(c.red(`Unknown command: ${cmd}`));
180
+ printUsage();
181
+ process.exit(1);
182
+ }
183
+ process.exit(0);
184
+ }
185
+ main().catch((err) => {
186
+ console.error(c.red(err?.message ? `Error: ${err.message}` : "Fatal"));
187
+ process.exit(1);
188
+ });
189
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClL,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3H,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAE/B,SAAS,YAAY;IACnB,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACf,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,OAAO;IACpK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,0DAA0D,CAAC,IAAI,CAAC;AACjG,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC1D,eAAe,EAAE,CAAC;QACpB,CAAC;QACD;yEACiE;QACjE,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACxC,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,gBAAgB,EAAE,CAAC;QACnB,MAAM,SAAS,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,UAAU,EAAE,CAAC;YACb,MAAM;QACR,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,YAAY,EAAE,CAAC;YACf,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM;QACR,CAAC;QACD,KAAK,OAAO;YACV,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM;QACR,KAAK,MAAM;YACT,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACnE,MAAM,UAAU,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;YACnC,CAAC;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,eAAe,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;YAC/B,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,OAAO;oBACV,OAAO,CAAC,GAAG,CAAC,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAClD,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;YACzC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,YAAY,CAAC;gBACvE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;gBACjD,gBAAgB,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,GAAS,EAAE;oBACtB,eAAe,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC9B,sDAAsD;gBACtD,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,kBAAkB,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iHAAiH,CAAC,CAAC;YACjI,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;YAC/B,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,WAAW,CAAC;gBACjB,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5C,MAAM;gBACR,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5C,MAAM;gBACR,KAAK,SAAS;oBACZ,OAAO,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC7C,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,+EAA+E,CAAC,CAAC,CAAC;YAC3G,CAAC;YACD,MAAM;QACR,CAAC;QACD;YACE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9C,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * sfmc module-commands — runtime CLI for inspecting and managing modules
3
+ * already on disk under `modules/packages/<id>/`.
4
+ *
5
+ * Subcommands:
6
+ * list List every installed module (reads each
7
+ * modules/packages/<id>/sapi/manifest.json).
8
+ * Marks registry-known modules with `●` and
9
+ * modules from an unknown publisher with `?`.
10
+ * info <id> Show one module's manifest + on-disk fingerprint
11
+ * verify [id] Recompute the SHA-256 fingerprint of installed
12
+ * modules (id = one; no id = all)
13
+ * install <id> Wrapper around `tools/fetch-module.mjs install`.
14
+ * If `--from` is omitted, the first-party registry
15
+ * is consulted (Tanya7z/sfmc-modules).
16
+ * uninstall <id> Remove packages/<id>/ + catalog/lock via fetch-module
17
+ * enable <id> POST /api/sfmc/modules/:id/enable on db-server
18
+ * disable <id> POST /api/sfmc/modules/:id/disable on db-server
19
+ *
20
+ * The runtime SEA process never connects to the network. `install`/`uninstall`
21
+ * delegate to `tools/fetch-module.mjs` (install syncs catalog + lock).
22
+ * enable/disable go through db-server REST so module-lock.json stays consistent.
23
+ */
24
+ export declare function cmdModuleList(_args: string[]): Promise<string>;
25
+ /**
26
+ * Walk `modules/packages/<id>/` and print a one-line yellow warning for each
27
+ * id that isn't in the first-party registry. Intended for the REPL startup
28
+ * hook so users immediately see modules they installed from somewhere else.
29
+ *
30
+ * Best-effort: registry unreachable → no warning (no false positives).
31
+ */
32
+ export declare function scanAndWarnUnknown(): Promise<string>;
33
+ export declare function cmdModuleInfo(args: string[]): Promise<string>;
34
+ export declare function cmdModuleVerify(args: string[]): Promise<string>;
35
+ export declare function cmdModuleEnable(args: string[]): Promise<string>;
36
+ export declare function cmdModuleDisable(args: string[]): Promise<string>;
37
+ export declare function cmdModuleInstall(args: string[]): Promise<string>;
38
+ export declare function cmdModuleUninstall(args: string[]): Promise<string>;
39
+ //# sourceMappingURL=module-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-commands.d.ts","sourceRoot":"","sources":["../src/module-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAsHH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBpE;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAKD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BnE;AAKD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAerE;AA4CD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE;AAKD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCtE;AAKD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BxE"}