@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
@@ -0,0 +1,212 @@
1
+ import { WebSocket } from "ws";
2
+ import { configPath, ensureJson, writeJson } from "@sfmc-bds/sdk/node/config";
3
+ import { cmdRestart, cmdSend, cmdStart, cmdStop } from "./commands.js";
4
+ import { ROOT } from "./runtime.js";
5
+ import { SERVICE_NAMES, serviceStatus } from "./services.js";
6
+ let socket = null;
7
+ let retryTimer = null;
8
+ let retryDelay = 1000;
9
+ let heartbeatTimer = null;
10
+ let lastError = "";
11
+ let warnedMissingConfig = false;
12
+ let stopping = false;
13
+ const HEARTBEAT_INTERVAL_MS = 20_000;
14
+ /** 启动时确保 remote.json 存在,返回现有或空配置。 */
15
+ function loadConfig() {
16
+ return ensureJson(configPath(ROOT, "remote.json"), {});
17
+ }
18
+ function writeConfig(config) {
19
+ writeJson(configPath(ROOT, "remote.json"), config);
20
+ }
21
+ function isService(value) {
22
+ return !!value && SERVICE_NAMES.includes(value);
23
+ }
24
+ function isAction(value) {
25
+ return value === "status" || value === "start" || value === "stop" || value === "restart" || value === "send";
26
+ }
27
+ function websocketUrl(controllerUrl, agentId) {
28
+ const url = new URL(controllerUrl);
29
+ url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
30
+ url.pathname = "/v1/agent";
31
+ url.search = new URLSearchParams({ id: agentId }).toString();
32
+ return url.toString();
33
+ }
34
+ function send(payload) {
35
+ if (socket?.readyState === WebSocket.OPEN)
36
+ socket.send(JSON.stringify(payload));
37
+ }
38
+ function startHeartbeat() {
39
+ stopHeartbeat();
40
+ heartbeatTimer = setInterval(() => send({ type: "ping" }), HEARTBEAT_INTERVAL_MS);
41
+ }
42
+ function stopHeartbeat() {
43
+ if (heartbeatTimer) {
44
+ clearInterval(heartbeatTimer);
45
+ heartbeatTimer = null;
46
+ }
47
+ }
48
+ async function execute(task) {
49
+ if (!isAction(task.action))
50
+ throw new Error("invalid task action");
51
+ if (task.action === "status")
52
+ return { services: serviceStatus() };
53
+ if (!isService(task.service))
54
+ throw new Error("service is required and must be one of: " + SERVICE_NAMES.join(", "));
55
+ if (task.action === "send") {
56
+ if (!task.message)
57
+ throw new Error("message is required for send action");
58
+ return { output: await cmdSend(task.service, task.message), services: serviceStatus() };
59
+ }
60
+ const output = task.action === "start"
61
+ ? await cmdStart(task.service)
62
+ : task.action === "stop"
63
+ ? await cmdStop(task.service)
64
+ : await cmdRestart(task.service);
65
+ return { output, services: serviceStatus() };
66
+ }
67
+ function scheduleReconnect() {
68
+ if (retryTimer || stopping)
69
+ return;
70
+ const delay = retryDelay;
71
+ retryTimer = setTimeout(() => {
72
+ retryTimer = null;
73
+ startRemoteAgent();
74
+ }, delay);
75
+ }
76
+ function resetReconnect(reason) {
77
+ retryDelay = 1000;
78
+ if (reason) {
79
+ lastError = reason;
80
+ console.warn(`[remote-agent] ${reason} — will retry in ${retryDelay}ms`);
81
+ }
82
+ }
83
+ /** Close the active socket (if any) and stop reconnecting. Idempotent. */
84
+ export function stopRemoteAgent() {
85
+ stopping = true;
86
+ stopHeartbeat();
87
+ if (retryTimer) {
88
+ clearTimeout(retryTimer);
89
+ retryTimer = null;
90
+ }
91
+ if (socket) {
92
+ try {
93
+ socket.close(1000, "client_shutdown");
94
+ }
95
+ catch {
96
+ /* ignore */
97
+ }
98
+ socket = null;
99
+ }
100
+ }
101
+ /** Start one outbound-only remote-management connection for this supervisor process. */
102
+ export function startRemoteAgent() {
103
+ if (stopping)
104
+ return;
105
+ if (socket || retryTimer)
106
+ return;
107
+ const config = loadConfig();
108
+ if (!config.enabled || !config.controller_url || !config.agent_id || !config.agent_secret) {
109
+ if (!warnedMissingConfig) {
110
+ const missing = [];
111
+ if (!config.enabled)
112
+ missing.push("enabled");
113
+ if (!config.controller_url)
114
+ missing.push("controller_url");
115
+ if (!config.agent_id)
116
+ missing.push("agent_id");
117
+ if (!config.agent_secret)
118
+ missing.push("agent_secret");
119
+ if (missing.length) {
120
+ console.warn(`[remote-agent] disabled — missing remote.json fields: ${missing.join(", ")} (run \`sfmc remote enroll\`)`);
121
+ }
122
+ warnedMissingConfig = true;
123
+ }
124
+ return;
125
+ }
126
+ warnedMissingConfig = true;
127
+ let ws;
128
+ try {
129
+ ws = new WebSocket(websocketUrl(config.controller_url, config.agent_id));
130
+ }
131
+ catch (e) {
132
+ resetReconnect(`failed to construct websocket: ${e.message}`);
133
+ scheduleReconnect();
134
+ return;
135
+ }
136
+ socket = ws;
137
+ ws.on("open", () => {
138
+ retryDelay = 1000;
139
+ lastError = "";
140
+ send({ type: "hello", agentId: config.agent_id, secret: config.agent_secret, status: serviceStatus() });
141
+ startHeartbeat();
142
+ });
143
+ ws.on("message", (raw) => {
144
+ let msg;
145
+ try {
146
+ msg = JSON.parse(raw.toString());
147
+ }
148
+ catch {
149
+ return;
150
+ }
151
+ if (msg.type === "ping") {
152
+ send({ type: "pong" });
153
+ return;
154
+ }
155
+ if (msg.type !== "task")
156
+ return;
157
+ const task = msg;
158
+ void execute(task)
159
+ .then((result) => send({ type: "task_result", taskId: task.taskId, ok: true, result }))
160
+ .catch((error) => send({ type: "task_result", taskId: task.taskId, ok: false, error: error.message }));
161
+ });
162
+ ws.on("close", (code, reason) => {
163
+ if (socket === ws)
164
+ socket = null;
165
+ stopHeartbeat();
166
+ if (stopping)
167
+ return;
168
+ resetReconnect(`disconnected (code=${code} ${reason.toString() || "no_reason"})`);
169
+ scheduleReconnect();
170
+ });
171
+ ws.on("error", (e) => {
172
+ resetReconnect(`socket error: ${e.message}`);
173
+ /* close event will follow and trigger reconnect */
174
+ });
175
+ }
176
+ export async function enrollRemoteAgent(controllerUrl, enrollmentToken, name) {
177
+ const response = await fetch(new URL("/v1/enroll", controllerUrl), {
178
+ method: "POST",
179
+ headers: { "content-type": "application/json", authorization: `Bearer ${enrollmentToken}` },
180
+ body: JSON.stringify({ name }),
181
+ });
182
+ const result = (await response.json());
183
+ if (!response.ok || !result.agentId || !result.agentSecret)
184
+ throw new Error(result.error ?? "enrollment failed");
185
+ writeConfig({ enabled: true, controller_url: controllerUrl, agent_id: result.agentId, agent_secret: result.agentSecret });
186
+ return result.agentId;
187
+ }
188
+ /** Disable the remote agent: clear enabled flag and close the connection. */
189
+ export function disableRemoteAgent() {
190
+ const config = loadConfig();
191
+ if (config.agent_id || config.agent_secret) {
192
+ writeConfig({ ...config, enabled: false });
193
+ }
194
+ stopRemoteAgent();
195
+ stopping = false;
196
+ }
197
+ export function remoteStatus() {
198
+ const config = loadConfig();
199
+ const result = { connected: socket?.readyState === WebSocket.OPEN };
200
+ if (config.enabled !== undefined)
201
+ result.enabled = config.enabled;
202
+ if (config.controller_url)
203
+ result.controller_url = config.controller_url;
204
+ if (config.agent_id)
205
+ result.agent_id = config.agent_id;
206
+ if (lastError) {
207
+ result.last_error = lastError;
208
+ result.retry_in_ms = retryDelay;
209
+ }
210
+ return result;
211
+ }
212
+ //# sourceMappingURL=remote-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-agent.js","sourceRoot":"","sources":["../src/remote-agent.ts"],"names":[],"mappings":"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"}
package/dist/repl.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export declare const HELP: string;
2
+ interface SelectItem {
3
+ label: string;
4
+ value: string;
5
+ }
6
+ export declare const SOURCE_ITEMS: SelectItem[];
7
+ export declare function startRepl(): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,IAAI,QA+BhB,CAAC;AAwGF,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAyQD,eAAO,MAAM,YAAY,EAAE,UAAU,EAQpC,CAAC;AAYF,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAuG/C"}