onboardconnect-agent 0.1.1

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 (58) hide show
  1. package/dist/crypto.d.ts +3 -0
  2. package/dist/crypto.d.ts.map +1 -0
  3. package/dist/crypto.js +12 -0
  4. package/dist/crypto.js.map +1 -0
  5. package/dist/heartbeat.d.ts +17 -0
  6. package/dist/heartbeat.d.ts.map +1 -0
  7. package/dist/heartbeat.js +86 -0
  8. package/dist/heartbeat.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +81 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/ldap.d.ts +31 -0
  14. package/dist/ldap.d.ts.map +1 -0
  15. package/dist/ldap.js +420 -0
  16. package/dist/ldap.js.map +1 -0
  17. package/dist/logger.d.ts +9 -0
  18. package/dist/logger.d.ts.map +1 -0
  19. package/dist/logger.js +47 -0
  20. package/dist/logger.js.map +1 -0
  21. package/dist/relay.d.ts +38 -0
  22. package/dist/relay.d.ts.map +1 -0
  23. package/dist/relay.js +347 -0
  24. package/dist/relay.js.map +1 -0
  25. package/dist/request-log.d.ts +24 -0
  26. package/dist/request-log.d.ts.map +1 -0
  27. package/dist/request-log.js +52 -0
  28. package/dist/request-log.js.map +1 -0
  29. package/dist/server.d.ts +30 -0
  30. package/dist/server.d.ts.map +1 -0
  31. package/dist/server.js +509 -0
  32. package/dist/server.js.map +1 -0
  33. package/dist/setup.d.ts +3 -0
  34. package/dist/setup.d.ts.map +1 -0
  35. package/dist/setup.js +342 -0
  36. package/dist/setup.js.map +1 -0
  37. package/dist/store.d.ts +53 -0
  38. package/dist/store.d.ts.map +1 -0
  39. package/dist/store.js +170 -0
  40. package/dist/store.js.map +1 -0
  41. package/dist/uninstall.d.ts +2 -0
  42. package/dist/uninstall.d.ts.map +1 -0
  43. package/dist/uninstall.js +127 -0
  44. package/dist/uninstall.js.map +1 -0
  45. package/dist/updater.d.ts +4 -0
  46. package/dist/updater.d.ts.map +1 -0
  47. package/dist/updater.js +30 -0
  48. package/dist/updater.js.map +1 -0
  49. package/package.json +62 -0
  50. package/scripts/install.ps1 +133 -0
  51. package/scripts/install.sh +132 -0
  52. package/scripts/postinstall.js +21 -0
  53. package/scripts/postinstall.ts +24 -0
  54. package/scripts/uninstall.ps1 +93 -0
  55. package/scripts/uninstall.sh +85 -0
  56. package/ui/assets/index-Bf505_Hi.css +1 -0
  57. package/ui/assets/index-zxbHz6zx.js +71 -0
  58. package/ui/index.html +23 -0
package/dist/ldap.js ADDED
@@ -0,0 +1,420 @@
1
+ import { Attribute, Change, Client } from "ldapts";
2
+ import { OcLogger } from "./logger.js";
3
+ const RETRY_DELAYS = [1000, 2000, 4000];
4
+ export class OcCommandExecutor {
5
+ config;
6
+ logger = new OcLogger("ldap");
7
+ client = null;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ async execute(command) {
12
+ const startedAt = Date.now();
13
+ const { commandId, commandType, dryRun } = command;
14
+ this.logger.info("Executing command", { commandId, commandType, dryRun });
15
+ if (commandType === "read_groups") {
16
+ for (let attempt = 0; attempt <= RETRY_DELAYS.length; attempt++) {
17
+ try {
18
+ await this.ensureConnected();
19
+ const groups = await this.readGroups(command.payload);
20
+ return { commandId, success: true, groups, executedAt: new Date().toISOString() };
21
+ }
22
+ catch (err) {
23
+ const error = err instanceof Error ? err.message : String(err);
24
+ if (attempt < RETRY_DELAYS.length) {
25
+ await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt] ?? 4000));
26
+ this.client = null;
27
+ }
28
+ else {
29
+ return { commandId, success: false, error, executedAt: new Date().toISOString() };
30
+ }
31
+ }
32
+ }
33
+ return { commandId, success: false, error: "Max retries exceeded", executedAt: new Date().toISOString() };
34
+ }
35
+ if (commandType === "get_schema") {
36
+ for (let attempt = 0; attempt <= RETRY_DELAYS.length; attempt++) {
37
+ try {
38
+ await this.ensureConnected();
39
+ const schema = await this.getSchema();
40
+ this.logger.info("get_schema success", { commandId, count: schema.length });
41
+ return { commandId, success: true, schema, executedAt: new Date().toISOString() };
42
+ }
43
+ catch (err) {
44
+ const error = err instanceof Error ? err.message : String(err);
45
+ this.logger.warn("get_schema attempt failed", { commandId, attempt, error });
46
+ if (attempt < RETRY_DELAYS.length) {
47
+ await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt] ?? 4000));
48
+ this.client = null;
49
+ }
50
+ else {
51
+ return { commandId, success: false, error, executedAt: new Date().toISOString() };
52
+ }
53
+ }
54
+ }
55
+ return { commandId, success: false, error: "Max retries exceeded", executedAt: new Date().toISOString() };
56
+ }
57
+ if (commandType === "search_users") {
58
+ for (let attempt = 0; attempt <= RETRY_DELAYS.length; attempt++) {
59
+ try {
60
+ await this.ensureConnected();
61
+ const users = await this.searchUsers(command.payload);
62
+ this.logger.info("search_users success", { commandId, count: users.length });
63
+ return { commandId, success: true, users, executedAt: new Date().toISOString() };
64
+ }
65
+ catch (err) {
66
+ const error = err instanceof Error ? err.message : String(err);
67
+ this.logger.warn("search_users attempt failed", { commandId, attempt, error });
68
+ if (attempt < RETRY_DELAYS.length) {
69
+ await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt] ?? 4000));
70
+ this.client = null;
71
+ }
72
+ else {
73
+ return { commandId, success: false, error, executedAt: new Date().toISOString() };
74
+ }
75
+ }
76
+ }
77
+ return { commandId, success: false, error: "Max retries exceeded", executedAt: new Date().toISOString() };
78
+ }
79
+ // read_users returns rows, not a DN — handle separately but still uses LDAP
80
+ if (commandType === "read_users") {
81
+ for (let attempt = 0; attempt <= RETRY_DELAYS.length; attempt++) {
82
+ try {
83
+ await this.ensureConnected();
84
+ const users = await this.readUsers(command.payload);
85
+ this.logger.info("read_users success", { commandId, count: users.length });
86
+ return { commandId, success: true, users, executedAt: new Date().toISOString() };
87
+ }
88
+ catch (err) {
89
+ const error = err instanceof Error ? err.message : String(err);
90
+ this.logger.warn("read_users attempt failed", { commandId, attempt, error });
91
+ if (attempt < RETRY_DELAYS.length) {
92
+ await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt] ?? 4000));
93
+ this.client = null;
94
+ }
95
+ else {
96
+ return { commandId, success: false, error, executedAt: new Date().toISOString() };
97
+ }
98
+ }
99
+ }
100
+ return { commandId, success: false, error: "Max retries exceeded", executedAt: new Date().toISOString() };
101
+ }
102
+ // Standard LDAP write operations with retry
103
+ for (let attempt = 0; attempt <= RETRY_DELAYS.length; attempt++) {
104
+ try {
105
+ await this.ensureConnected();
106
+ const adObjectDn = await this.dispatch(command);
107
+ const duration = Date.now() - startedAt;
108
+ this.logger.info("Command success", { commandId, commandType, duration });
109
+ const result = { commandId, success: true, executedAt: new Date().toISOString() };
110
+ if (adObjectDn !== undefined)
111
+ result.adObjectDn = adObjectDn;
112
+ return result;
113
+ }
114
+ catch (err) {
115
+ const error = err instanceof Error ? err.message : String(err);
116
+ this.logger.warn("Command attempt failed", { commandId, attempt, error });
117
+ if (attempt < RETRY_DELAYS.length) {
118
+ const delay = RETRY_DELAYS[attempt] ?? 4000;
119
+ await new Promise((r) => setTimeout(r, delay));
120
+ this.client = null;
121
+ }
122
+ else {
123
+ return { commandId, success: false, error, executedAt: new Date().toISOString() };
124
+ }
125
+ }
126
+ }
127
+ return { commandId, success: false, error: "Max retries exceeded", executedAt: new Date().toISOString() };
128
+ }
129
+ async dispatch(command) {
130
+ const payload = command.payload;
131
+ if (command.dryRun) {
132
+ this.logger.info("Dry run — no AD write", { commandId: command.commandId });
133
+ return undefined;
134
+ }
135
+ switch (command.commandType) {
136
+ case "create_user":
137
+ return this.createUser(payload);
138
+ case "disable_user":
139
+ return this.disableUser(payload);
140
+ case "activate_user":
141
+ return this.activateUser(payload);
142
+ case "move_ou":
143
+ return this.moveOu(payload);
144
+ case "set_password":
145
+ case "reset_password":
146
+ return this.setPassword(payload);
147
+ case "delete_user":
148
+ return this.deleteUser(payload);
149
+ case "update_user":
150
+ return this.updateUser(payload);
151
+ default:
152
+ throw new Error(`Unknown command type: ${command.commandType}`);
153
+ }
154
+ }
155
+ async ensureConnected() {
156
+ if (this.client)
157
+ return;
158
+ const useTls = this.config.port === 636;
159
+ this.client = new Client({
160
+ url: `${useTls ? "ldaps" : "ldap"}://${this.config.host}:${this.config.port}`,
161
+ ...(useTls ? { tlsOptions: { rejectUnauthorized: true } } : {}),
162
+ });
163
+ if ((this.config.authMode ?? "explicit") === "explicit") {
164
+ await this.client.bind(this.config.bindDn, this.config.bindPassword);
165
+ }
166
+ }
167
+ async createUser(p) {
168
+ if (!this.client)
169
+ throw new Error("LDAP not connected");
170
+ const dn = `CN=${p.firstName} ${p.lastName},${p.ouPath}`;
171
+ await this.client.add(dn, {
172
+ objectClass: ["top", "person", "organizationalPerson", "user"],
173
+ cn: `${p.firstName} ${p.lastName}`,
174
+ givenName: p.firstName,
175
+ sn: p.lastName,
176
+ sAMAccountName: p.samAccountName,
177
+ userPrincipalName: p.email,
178
+ mail: p.email,
179
+ userAccountControl: "512",
180
+ });
181
+ return dn;
182
+ }
183
+ async disableUser(p) {
184
+ if (!this.client)
185
+ throw new Error("LDAP not connected");
186
+ const entries = await this.client.search(this.config.baseDn, {
187
+ filter: `(sAMAccountName=${p.samAccountName})`,
188
+ attributes: ["distinguishedName", "userAccountControl"],
189
+ });
190
+ const entry = entries.searchEntries[0];
191
+ if (!entry)
192
+ throw new Error(`User not found: ${p.samAccountName}`);
193
+ let dn = entry["distinguishedName"];
194
+ await this.client.modify(dn, [
195
+ new Change({ operation: "replace", modification: new Attribute({ type: "userAccountControl", values: ["514"] }) }),
196
+ ]);
197
+ if (p.moveToOu) {
198
+ const cn = dn.split(",")[0];
199
+ if (!cn)
200
+ throw new Error("Could not parse CN from DN");
201
+ const newDn = `${cn},${p.moveToOu}`;
202
+ await this.client.modifyDN(dn, newDn);
203
+ dn = newDn;
204
+ }
205
+ return dn;
206
+ }
207
+ async activateUser(p) {
208
+ if (!this.client)
209
+ throw new Error("LDAP not connected");
210
+ const entries = await this.client.search(this.config.baseDn, {
211
+ filter: `(sAMAccountName=${p.samAccountName})`,
212
+ attributes: ["distinguishedName"],
213
+ });
214
+ const entry = entries.searchEntries[0];
215
+ if (!entry)
216
+ throw new Error(`User not found: ${p.samAccountName}`);
217
+ const dn = entry["distinguishedName"];
218
+ await this.client.modify(dn, [
219
+ new Change({ operation: "replace", modification: new Attribute({ type: "userAccountControl", values: ["512"] }) }),
220
+ ]);
221
+ return dn;
222
+ }
223
+ async moveOu(p) {
224
+ if (!this.client)
225
+ throw new Error("LDAP not connected");
226
+ const entries = await this.client.search(this.config.baseDn, {
227
+ filter: `(sAMAccountName=${p.samAccountName})`,
228
+ attributes: ["distinguishedName"],
229
+ });
230
+ const entry = entries.searchEntries[0];
231
+ if (!entry)
232
+ throw new Error(`User not found: ${p.samAccountName}`);
233
+ const dn = entry["distinguishedName"];
234
+ const cn = dn.split(",")[0];
235
+ if (!cn)
236
+ throw new Error("Could not parse CN from DN");
237
+ const newDn = `${cn},${p.targetOu}`;
238
+ await this.client.modifyDN(dn, newDn);
239
+ return newDn;
240
+ }
241
+ async setPassword(p) {
242
+ if (!this.client)
243
+ throw new Error("LDAP not connected");
244
+ const entries = await this.client.search(this.config.baseDn, {
245
+ filter: `(sAMAccountName=${p.samAccountName})`,
246
+ attributes: ["distinguishedName"],
247
+ });
248
+ const entry = entries.searchEntries[0];
249
+ if (!entry)
250
+ throw new Error(`User not found: ${p.samAccountName}`);
251
+ const dn = entry["distinguishedName"];
252
+ const encodedPw = Buffer.from(`"${p.password}"`, "utf16le").toString("base64");
253
+ await this.client.modify(dn, [
254
+ new Change({ operation: "replace", modification: new Attribute({ type: "unicodePwd", values: [encodedPw] }) }),
255
+ ]);
256
+ if (p.mustChangeOnLogon) {
257
+ await this.client.modify(dn, [
258
+ new Change({ operation: "replace", modification: new Attribute({ type: "pwdLastSet", values: ["0"] }) }),
259
+ ]);
260
+ }
261
+ return dn;
262
+ }
263
+ async deleteUser(p) {
264
+ if (!this.client)
265
+ throw new Error("LDAP not connected");
266
+ await this.client.del(p.distinguishedName);
267
+ return p.distinguishedName;
268
+ }
269
+ async updateUser(p) {
270
+ if (!this.client)
271
+ throw new Error("LDAP not connected");
272
+ const entries = await this.client.search(this.config.baseDn, {
273
+ filter: `(sAMAccountName=${p.samAccountName})`,
274
+ attributes: ["distinguishedName"],
275
+ });
276
+ const entry = entries.searchEntries[0];
277
+ if (!entry)
278
+ throw new Error(`User not found: ${p.samAccountName}`);
279
+ const dn = entry["distinguishedName"];
280
+ const changes = Object.entries(p.attributes).map(([attr, value]) => new Change({
281
+ operation: "replace",
282
+ modification: new Attribute({ type: attr, values: [value] }),
283
+ }));
284
+ if (changes.length > 0) {
285
+ await this.client.modify(dn, changes);
286
+ }
287
+ return dn;
288
+ }
289
+ async readGroups(p) {
290
+ if (!this.client)
291
+ throw new Error("LDAP not connected");
292
+ const userResult = await this.client.search(this.config.baseDn, {
293
+ filter: `(sAMAccountName=${p.samAccountName})`,
294
+ attributes: ["distinguishedName"],
295
+ });
296
+ const user = userResult.searchEntries[0];
297
+ if (!user)
298
+ throw new Error(`User not found: ${p.samAccountName}`);
299
+ const userDn = user["distinguishedName"];
300
+ let groupFilter;
301
+ if (p.groupType === "security") {
302
+ groupFilter = `(&(objectClass=group)(groupType:1.2.840.113556.1.4.803:=2147483648)(member=${userDn}))`;
303
+ }
304
+ else if (p.groupType === "distribution") {
305
+ groupFilter = `(&(objectClass=group)(!(groupType:1.2.840.113556.1.4.803:=2147483648))(member=${userDn}))`;
306
+ }
307
+ else {
308
+ groupFilter = `(&(objectClass=group)(member=${userDn}))`;
309
+ }
310
+ const groupResult = await this.client.search(this.config.baseDn, {
311
+ filter: groupFilter,
312
+ attributes: ["distinguishedName", "cn", "mail"],
313
+ });
314
+ return groupResult.searchEntries.map((entry) => ({
315
+ dn: entry["distinguishedName"] ?? "",
316
+ name: entry["cn"] ?? "",
317
+ ...(entry["mail"] ? { mail: entry["mail"] } : {}),
318
+ }));
319
+ }
320
+ async getSchema() {
321
+ if (!this.client)
322
+ throw new Error("LDAP not connected");
323
+ // Fetch a sample of enabled users and collect all attribute names across entries
324
+ const result = await this.client.search(this.config.baseDn, {
325
+ filter: "(&(objectClass=user)(objectCategory=person))",
326
+ attributes: ["*"],
327
+ sizeLimit: 5,
328
+ });
329
+ const knownAttrs = new Set();
330
+ for (const entry of result.searchEntries) {
331
+ for (const key of Object.keys(entry)) {
332
+ if (key !== "dn" && !key.startsWith("_"))
333
+ knownAttrs.add(key);
334
+ }
335
+ }
336
+ const typeMap = {
337
+ mail: "email", userPrincipalName: "email",
338
+ accountEnabled: "boolean",
339
+ givenName: "text", sn: "text", displayName: "text",
340
+ sAMAccountName: "text", department: "text", title: "text",
341
+ userAccountControl: "number",
342
+ };
343
+ const labelMap = {
344
+ sAMAccountName: "SAM Account", sn: "Last Name", givenName: "First Name",
345
+ displayName: "Display Name", mail: "Email", userPrincipalName: "UPN",
346
+ department: "Department", title: "Job Title", userAccountControl: "Account Control",
347
+ };
348
+ const skip = new Set(["objectClass", "objectCategory", "objectGUID", "objectSid", "distinguishedName", "pwdLastSet", "lastLogon", "badPasswordTime", "whenCreated", "whenChanged", "uSNCreated", "uSNChanged", "memberOf"]);
349
+ return Array.from(knownAttrs)
350
+ .filter((a) => !skip.has(a))
351
+ .map((name) => ({
352
+ name,
353
+ label: labelMap[name] ?? name.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase()),
354
+ type: typeMap[name] ?? "text",
355
+ }))
356
+ .sort((a, b) => a.label.localeCompare(b.label));
357
+ }
358
+ async searchUsers(p) {
359
+ if (!this.client)
360
+ throw new Error("LDAP not connected");
361
+ const escaped = p.query.replace(/[*()\\]/g, "\\$&");
362
+ const filter = `(&(objectClass=user)(objectCategory=person)(|(displayName=*${escaped}*)(sAMAccountName=*${escaped}*)(mail=*${escaped}*)))`;
363
+ const extAttrs = Array.from({ length: 15 }, (_, i) => `extensionAttribute${i + 1}`);
364
+ const attrs = [
365
+ "objectGUID", "displayName", "givenName", "sn", "mail", "userPrincipalName",
366
+ "department", "title", "sAMAccountName", "userAccountControl",
367
+ ...extAttrs,
368
+ ];
369
+ const result = await this.client.search(this.config.baseDn, {
370
+ filter,
371
+ attributes: attrs,
372
+ sizeLimit: p.maxResults ?? 25,
373
+ });
374
+ return result.searchEntries.map((entry) => {
375
+ const row = {};
376
+ for (const attr of attrs) {
377
+ if (attr === "objectGUID") {
378
+ const v = entry[attr];
379
+ row[attr] = Buffer.isBuffer(v) ? v.toString("hex") : (v != null ? String(v) : "");
380
+ }
381
+ else {
382
+ const v = entry[attr];
383
+ row[attr] = Array.isArray(v) ? (v[0]?.toString() ?? "") : (v != null ? String(v) : "");
384
+ }
385
+ }
386
+ return row;
387
+ });
388
+ }
389
+ async readUsers(p) {
390
+ if (!this.client)
391
+ throw new Error("LDAP not connected");
392
+ const searchBase = p.searchBase ?? this.config.baseDn;
393
+ const filter = p.filter ?? "(objectClass=user)";
394
+ const requestedAttrs = p.attributes ?? [
395
+ "sAMAccountName", "displayName", "givenName", "sn",
396
+ "mail", "userAccountControl", "distinguishedName", "department",
397
+ ];
398
+ const result = await this.client.search(searchBase, {
399
+ filter,
400
+ attributes: requestedAttrs,
401
+ });
402
+ return result.searchEntries.map((entry) => {
403
+ const row = {};
404
+ for (const attr of requestedAttrs) {
405
+ const val = entry[attr];
406
+ if (Array.isArray(val)) {
407
+ row[attr] = val[0]?.toString() ?? "";
408
+ }
409
+ else if (val !== undefined && val !== null) {
410
+ row[attr] = val.toString();
411
+ }
412
+ else {
413
+ row[attr] = "";
414
+ }
415
+ }
416
+ return row;
417
+ });
418
+ }
419
+ }
420
+ //# sourceMappingURL=ldap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldap.js","sourceRoot":"","sources":["../src/ldap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class OcLogger {
2
+ private readonly logger;
3
+ constructor(context: string);
4
+ info(message: string, meta?: Record<string, unknown>): void;
5
+ error(message: string, meta?: Record<string, unknown>): void;
6
+ warn(message: string, meta?: Record<string, unknown>): void;
7
+ debug(message: string, meta?: Record<string, unknown>): void;
8
+ }
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAQA,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM;IAgC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAG7D"}
package/dist/logger.js ADDED
@@ -0,0 +1,47 @@
1
+ import { createLogger, format, transports } from "winston";
2
+ import DailyRotateFile from "winston-daily-rotate-file";
3
+ import { join } from "path";
4
+ import { homedir } from "os";
5
+ const OC_LOG_LEVEL = process.env["OC_LOG_LEVEL"] ?? "info";
6
+ const OC_LOG_DIR = join(homedir(), ".oc-agent", "logs");
7
+ export class OcLogger {
8
+ logger;
9
+ constructor(context) {
10
+ this.logger = createLogger({
11
+ level: OC_LOG_LEVEL,
12
+ format: format.combine(format.timestamp(), format.json()),
13
+ defaultMeta: { context },
14
+ transports: [
15
+ new transports.Console({
16
+ format: format.combine(format.colorize(), format.printf(({ timestamp, level, message, context: ctx, ...rest }) => {
17
+ const meta = Object.keys(rest).length
18
+ ? ` ${JSON.stringify(rest)}`
19
+ : "";
20
+ return `${timestamp} [${level}] [${ctx}] ${message}${meta}`;
21
+ })),
22
+ }),
23
+ new DailyRotateFile({
24
+ dirname: OC_LOG_DIR,
25
+ filename: "agent-%DATE%.log",
26
+ datePattern: "YYYY-MM-DD",
27
+ maxSize: "10m",
28
+ maxFiles: "5",
29
+ format: format.combine(format.timestamp(), format.json()),
30
+ }),
31
+ ],
32
+ });
33
+ }
34
+ info(message, meta) {
35
+ this.logger.info(message, meta);
36
+ }
37
+ error(message, meta) {
38
+ this.logger.error(message, meta);
39
+ }
40
+ warn(message, meta) {
41
+ this.logger.warn(message, meta);
42
+ }
43
+ debug(message, meta) {
44
+ this.logger.debug(message, meta);
45
+ }
46
+ }
47
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC;AAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,OAAO,QAAQ;IACF,MAAM,CAAC;IAExB,YAAY,OAAe;QACzB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YACzB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,MAAM,CAAC,OAAO,CACpB,MAAM,CAAC,SAAS,EAAE,EAClB,MAAM,CAAC,IAAI,EAAE,CACd;YACD,WAAW,EAAE,EAAE,OAAO,EAAE;YACxB,UAAU,EAAE;gBACV,IAAI,UAAU,CAAC,OAAO,CAAC;oBACrB,MAAM,EAAE,MAAM,CAAC,OAAO,CACpB,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;wBACrE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;4BACnC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;4BAC5B,CAAC,CAAC,EAAE,CAAC;wBACP,OAAO,GAAG,SAAS,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,IAAI,EAAE,CAAC;oBAC9D,CAAC,CAAC,CACH;iBACF,CAAC;gBACF,IAAI,eAAe,CAAC;oBAClB,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,kBAAkB;oBAC5B,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,GAAG;oBACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;iBAC1D,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ import { type OcAgentCredentials } from "./store.js";
2
+ export declare class OcRelay {
3
+ private credentials;
4
+ private ws;
5
+ private _reconnectAttempts;
6
+ private isConnected;
7
+ private _paused;
8
+ private _canRun;
9
+ private _runBlockedReason;
10
+ private readonly logger;
11
+ private readonly executedCommands;
12
+ private executor;
13
+ private readonly store;
14
+ private allowedCommandTypes;
15
+ constructor(credentials: OcAgentCredentials | null);
16
+ connect(): Promise<void>;
17
+ private checkPreflight;
18
+ private isPermanentBlock;
19
+ private schedulePreflightRetry;
20
+ setBlockedByHeartbeat(reason: string): void;
21
+ private establishConnection;
22
+ private scheduleReconnect;
23
+ reconnect(): void;
24
+ pause(): void;
25
+ resume(): void;
26
+ reconnectWithNewCredentials(creds: OcAgentCredentials): Promise<void>;
27
+ get reconnectAttempts(): number;
28
+ get paused(): boolean;
29
+ get canRun(): boolean;
30
+ get runBlockedReason(): string | null;
31
+ private handleCommand;
32
+ private handleReadFile;
33
+ private handleWriteFile;
34
+ private sendResult;
35
+ disconnect(): Promise<void>;
36
+ get connected(): boolean;
37
+ }
38
+ //# sourceMappingURL=relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../src/relay.ts"],"names":[],"mappings":"AAWA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAO9D,qBAAa,OAAO;IAiBN,OAAO,CAAC,WAAW;IAhB/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAG9B;IACH,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,OAAO,CAAC,mBAAmB,CAAyB;gBAEhC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAEpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BhB,cAAc;IAiB5B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,sBAAsB;IAM9B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAU7B,mBAAmB;IAyCjC,OAAO,CAAC,iBAAiB;IAQzB,SAAS,IAAI,IAAI;IAQjB,KAAK,IAAI,IAAI;IAKb,MAAM,IAAI,IAAI;IAKR,2BAA2B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3E,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEpC;YAEa,aAAa;YA6Fb,cAAc;YAYd,eAAe;IAY7B,OAAO,CAAC,UAAU;IAMZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF"}