onboardconnect-agent 1.2.0 → 1.2.2

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.
package/dist/index.js CHANGED
@@ -6,7 +6,13 @@ import { OcHeartbeat } from "./heartbeat.js";
6
6
  import { OcUpdater } from "./updater.js";
7
7
  import { OcStore } from "./store.js";
8
8
  import { OcServer } from "./server.js";
9
- const logger = new OcLogger("main");
9
+ // IMPORTANT: do NOT instantiate OcLogger at module-load. The logger opens a
10
+ // DailyRotateFile transport against C:\ProgramData\OnboardConnect\logs\
11
+ // agent-<DATE>.log, which is locked by the running Windows service. Calling
12
+ // `onboardconnect-agent uninstall` while the service is up would otherwise
13
+ // crash the CLI with an unhandled EPERM before the uninstall branch even
14
+ // runs. Subcommands that don't run the agent service (uninstall/setup/token)
15
+ // must not touch the file logger.
10
16
  const subcommand = process.argv[2];
11
17
  // ─── Uninstall ────────────────────────────────────────────────────────────────
12
18
  if (subcommand === "uninstall") {
@@ -37,16 +43,35 @@ if (subcommand === "token") {
37
43
  }
38
44
  process.exit(0);
39
45
  }
46
+ // Module-level logger handle, initialized lazily in ocMain so subcommand
47
+ // branches above never touch the file transport. The unhandledRejection /
48
+ // uncaughtException / startup-error handlers below resolve this binding at
49
+ // call time, so a null logger before init falls back to console.
50
+ let logger = null;
51
+ function ocLog(level, msg) {
52
+ if (logger)
53
+ logger[level](msg);
54
+ else
55
+ console[level === "error" ? "error" : "log"](`[oc-agent] ${msg}`);
56
+ }
40
57
  async function ocMain() {
41
- logger.info("OnboardConnect On-Prem Agent starting...");
58
+ // Constructed here, AFTER the subcommand branches above, so the daily-rotate
59
+ // file transport is only opened when we actually run the agent. The module-
60
+ // level `logger` is published so the top-of-file process.on handlers can
61
+ // pick it up via ocLog; we also capture a local non-null binding so the
62
+ // closures below (heartbeat, relay, shutdown) satisfy TypeScript without a
63
+ // non-null assertion at every call site.
64
+ const log = new OcLogger("main");
65
+ logger = log;
66
+ log.info("OnboardConnect On-Prem Agent starting...");
42
67
  // Check for updates on startup
43
68
  const updater = new OcUpdater();
44
69
  await updater.checkForUpdates();
45
70
  const store = new OcStore();
46
71
  let credentials = await store.loadCredentials();
47
72
  if (credentials) {
48
- logger.info(`Agent ID: ${credentials.agentId}`);
49
- logger.info(`Tenant ID: ${credentials.tenantId}`);
73
+ log.info(`Agent ID: ${credentials.agentId}`);
74
+ log.info(`Tenant ID: ${credentials.tenantId}`);
50
75
  // Backfill connectionId for agents registered before 1.1.32 (which didn't
51
76
  // get connectionId from the exchange-token response). Best-effort: failure
52
77
  // is logged and tolerated — UI just won't show connectionId until next try.
@@ -71,21 +96,21 @@ async function ocMain() {
71
96
  const data = (await res.json());
72
97
  if (data.connectionId) {
73
98
  await store.saveCredentials({ ...credsForBackfill, connectionId: data.connectionId });
74
- logger.info(`Connection ID backfilled (applies on next restart): ${data.connectionId}`);
99
+ log.info(`Connection ID backfilled (applies on next restart): ${data.connectionId}`);
75
100
  }
76
101
  }
77
102
  else {
78
- logger.warn(`connection-info fetch returned ${res.status}`);
103
+ log.warn(`connection-info fetch returned ${res.status}`);
79
104
  }
80
105
  }
81
106
  catch (err) {
82
- logger.warn(`connection-info fetch failed: ${err instanceof Error ? err.message : String(err)}`);
107
+ log.warn(`connection-info fetch failed: ${err instanceof Error ? err.message : String(err)}`);
83
108
  }
84
109
  })();
85
110
  }
86
111
  }
87
112
  else {
88
- logger.info("No credentials found — starting in setup mode. Open http://localhost:7432 to configure.");
113
+ log.info("No credentials found — starting in setup mode. Open http://localhost:7432 to configure.");
89
114
  }
90
115
  // Load or generate the UI token
91
116
  let uiToken = await store.loadUiToken();
@@ -97,7 +122,7 @@ async function ocMain() {
97
122
  const relay = new OcRelay(credentials);
98
123
  const heartbeat = new OcHeartbeat(credentials, (reason) => {
99
124
  relay.setBlockedByHeartbeat(reason);
100
- logger.error(`Agent blocked by relay: ${reason}`);
125
+ log.error(`Agent blocked by relay: ${reason}`);
101
126
  }, () => relay.paused);
102
127
  // Connect to relay only if credentials are present. NON-BLOCKING and
103
128
  // NON-FATAL: a failure here (e.g. corrupt/undecryptable LDAP credentials —
@@ -108,7 +133,7 @@ async function ocMain() {
108
133
  if (credentials) {
109
134
  relay.connect().catch((err) => {
110
135
  const msg = err instanceof Error ? err.message : String(err);
111
- logger.error(`Relay connection failed at startup: ${msg}. ` +
136
+ log.error(`Relay connection failed at startup: ${msg}. ` +
112
137
  `If this is a credential-decryption error, re-run setup to re-enter credentials. ` +
113
138
  `The local agent UI remains available at http://localhost:7432.`);
114
139
  });
@@ -136,14 +161,14 @@ async function ocMain() {
136
161
  console.log("");
137
162
  // Graceful shutdown
138
163
  const shutdown = async (signal) => {
139
- logger.info(`Received ${signal}. Shutting down gracefully...`);
164
+ log.info(`Received ${signal}. Shutting down gracefully...`);
140
165
  heartbeat.stop();
141
166
  await relay.disconnect();
142
167
  process.exit(0);
143
168
  };
144
169
  process.on("SIGTERM", () => shutdown("SIGTERM"));
145
170
  process.on("SIGINT", () => shutdown("SIGINT"));
146
- logger.info("Agent running. Press Ctrl+C to stop.");
171
+ log.info("Agent running. Press Ctrl+C to stop.");
147
172
  }
148
173
  // Keep the service process alive unconditionally. A Windows service must never
149
174
  // let its event loop drain and exit cleanly — node-windows treats a code-0 exit
@@ -158,15 +183,15 @@ setInterval(() => { }, 1 << 30);
158
183
  // this.connect()` retry path) — which node-windows treats as a crash and, after
159
184
  // maxRestarts, stops the service. Log and keep running instead of exiting.
160
185
  process.on("unhandledRejection", (reason) => {
161
- logger.error(`Unhandled rejection (kept alive): ${reason instanceof Error ? reason.stack ?? reason.message : String(reason)}`);
186
+ ocLog("error", `Unhandled rejection (kept alive): ${reason instanceof Error ? reason.stack ?? reason.message : String(reason)}`);
162
187
  });
163
188
  process.on("uncaughtException", (err) => {
164
- logger.error(`Uncaught exception (kept alive): ${err.stack ?? err.message}`);
189
+ ocLog("error", `Uncaught exception (kept alive): ${err.stack ?? err.message}`);
165
190
  });
166
191
  ocMain().catch((err) => {
167
192
  // Log but do NOT exit. The keep-alive timer + handlers above hold the process
168
193
  // up so the local UI stays reachable and the relay keeps retrying, rather than
169
194
  // crash-looping the Windows service.
170
- logger.error(`Agent startup error (service stays up): ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
195
+ ocLog("error", `Agent startup error (service stays up): ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
171
196
  });
172
197
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAIjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;CAC3C;AAoHD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,qBAAa,OAAO;IACZ,eAAe,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMrD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxD,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAY5C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D;;;;;;;;;;OAUG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoEvE,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAInD,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,2FAA2F;IAC3F,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,wFAAwF;IACxF,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAIjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAAC;CAC3C;AAoHD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,qBAAa,OAAO;IACZ,eAAe,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAMrD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxD,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAY5C,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D;;;;;;;;;;OAUG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoEvE,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAInD,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,2FAA2F;IAC3F,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,wFAAwF;IACxF,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
package/dist/store.js CHANGED
@@ -3,7 +3,25 @@ import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from "f
3
3
  import { execSync } from "child_process";
4
4
  import { join, isAbsolute, normalize, sep } from "path";
5
5
  import { OcLogger } from "./logger.js";
6
- const ocStoreLogger = new OcLogger("store");
6
+ // Lazy logger instantiating OcLogger opens a DailyRotateFile transport
7
+ // against C:\ProgramData\OnboardConnect\logs\agent-<DATE>.log which is
8
+ // locked by the running Windows service. Module-load construction would
9
+ // crash `onboardconnect-agent uninstall` with an unhandled EPERM before the
10
+ // uninstall branch in index.ts ever runs. We defer until first use; the
11
+ // uninstall code path never reads store credentials, so this never fires
12
+ // during uninstall.
13
+ let ocStoreLoggerInstance = null;
14
+ function ocStoreLog(level, message, meta) {
15
+ if (!ocStoreLoggerInstance)
16
+ ocStoreLoggerInstance = new OcLogger("store");
17
+ ocStoreLoggerInstance[level](message, meta);
18
+ }
19
+ const ocStoreLogger = {
20
+ info: (m, meta) => ocStoreLog("info", m, meta),
21
+ warn: (m, meta) => ocStoreLog("warn", m, meta),
22
+ error: (m, meta) => ocStoreLog("error", m, meta),
23
+ debug: (m, meta) => ocStoreLog("debug", m, meta),
24
+ };
7
25
  const OC_CONFIG_DIR = process.platform === "win32"
8
26
  ? join(process.env["PROGRAMDATA"] ?? "C:\\ProgramData", "OnboardConnect")
9
27
  : "/etc/onboardconnect";
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAgKA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCjD"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAgNA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCjD"}
package/dist/uninstall.js CHANGED
@@ -42,9 +42,14 @@ async function ocForceRemoveWithRetry(target, timeoutMs) {
42
42
  const OC_CONFIG_DIR = process.platform === "win32"
43
43
  ? join(process.env["PROGRAMDATA"] ?? "C:\\ProgramData", "OnboardConnect")
44
44
  : "/etc/onboardconnect";
45
+ // MUST match logger.ts's OC_LOG_DIR — Windows logs land under
46
+ // %PROGRAMDATA%\OnboardConnect\logs, NOT under %USERPROFILE%\.oc-agent. The
47
+ // previous (wrong) path here meant log files were never deleted AND the
48
+ // recursive rmSync of OC_CONFIG_DIR hit ENOTEMPTY when it tripped over the
49
+ // still-locked log file inside it.
45
50
  const OC_LOG_DIR = process.platform === "win32"
46
- ? join(process.env["USERPROFILE"] ?? "C:\\Users\\Default", ".oc-agent")
47
- : join(process.env["HOME"] ?? "/root", ".oc-agent");
51
+ ? join(process.env["PROGRAMDATA"] ?? "C:\\ProgramData", "OnboardConnect", "logs")
52
+ : join(process.env["HOME"] ?? "/root", ".oc-agent", "logs");
48
53
  async function ocStopAndRemoveService() {
49
54
  const spinner = ora("Removing OnboardConnect Agent service...").start();
50
55
  if (process.platform === "win32") {
@@ -55,14 +60,42 @@ async function ocStopAndRemoveService() {
55
60
  // Remove any legacy Task Scheduler task from older installs
56
61
  spawnSync("schtasks", ["/end", "/tn", name], { stdio: "pipe" });
57
62
  spawnSync("schtasks", ["/delete", "/tn", name, "/f"], { stdio: "pipe" });
58
- // Stop the service and wait until it actually reports STOPPED (or is already
59
- // gone). This lets the winsw wrapper process exit and release its daemon log
60
- // file handles before we remove anything.
61
- spawnSync("sc", ["stop", name], { stdio: "pipe" });
63
+ // Stop the service and wait until it actually reports STOPPED (or is
64
+ // already gone). `sc stop` requires SERVICE_STOP rights, which a
65
+ // non-elevated shell does not have — the call returns "Access denied"
66
+ // and we wait 30s for a transition that will never happen. Detect that
67
+ // up-front and fall back to PowerShell's Stop-Service -Force (still
68
+ // requires admin, but emits a clearer message) and finally taskkill
69
+ // against the winsw wrapper PID for the truly stuck cases.
70
+ const scStop = spawnSync("sc", ["stop", name], { encoding: "utf8" });
71
+ const scStopOutput = `${scStop.stdout ?? ""}${scStop.stderr ?? ""}`;
72
+ const accessDenied = /access is denied|5:/i.test(scStopOutput);
73
+ if (accessDenied) {
74
+ spinner.fail(`Cannot stop service: access denied. Re-run from an ELEVATED prompt ` +
75
+ `(Right-click → "Run as administrator"), then run \`onboardconnect-agent uninstall\` again.`);
76
+ throw new Error("Service stop requires administrator privileges");
77
+ }
62
78
  const stopDeadline = Date.now() + 30000;
63
79
  while (Date.now() < stopDeadline && ocWinServiceState(name) === "running") {
64
80
  await ocSleep(1000);
65
81
  }
82
+ // Stuck in STOP_PENDING? Force via PowerShell.
83
+ if (ocWinServiceState(name) === "running") {
84
+ spawnSync("powershell", [
85
+ "-NoProfile",
86
+ "-Command",
87
+ `Stop-Service -Name '${name}' -Force -ErrorAction SilentlyContinue`,
88
+ ], { stdio: "pipe" });
89
+ const forceDeadline = Date.now() + 15000;
90
+ while (Date.now() < forceDeadline && ocWinServiceState(name) === "running") {
91
+ await ocSleep(1000);
92
+ }
93
+ }
94
+ // Last resort: kill the winsw wrapper process that holds the service.
95
+ if (ocWinServiceState(name) === "running") {
96
+ spawnSync("taskkill", ["/F", "/FI", `SERVICES eq ${name}`], { stdio: "pipe" });
97
+ await ocSleep(2000);
98
+ }
66
99
  // Deregister via sc.exe. Unlike node-windows' uninstall (which unlinks the
67
100
  // daemon .out/.err/.wrapper logs and throws an *uncaught* EBUSY when winsw
68
101
  // still holds them), sc delete removes the registration without touching any
@@ -106,45 +139,58 @@ async function ocStopAndRemoveService() {
106
139
  }
107
140
  }
108
141
  async function ocDeleteConfigDir(removeLogs) {
142
+ // ORDER MATTERS: on Windows the log files inside OC_CONFIG_DIR\logs are
143
+ // often still held open for a few seconds after the service stops (the
144
+ // service process releases the handle async, and winston's daily-rotate
145
+ // transport keeps its own file handle). Deleting the parent OC_CONFIG_DIR
146
+ // first hits ENOTEMPTY on the locked logs subdir. We always remove the
147
+ // logs subdir FIRST (with retry, regardless of `removeLogs`) so the parent
148
+ // can succeed; the `removeLogs` flag only controls whether we surface a
149
+ // warning vs an info note when logs can't be removed.
150
+ if (process.platform === "win32" && existsSync(OC_LOG_DIR)) {
151
+ const spinner = ora(`Removing log directory: ${OC_LOG_DIR}`).start();
152
+ // Try PowerShell force-remove first (handles transient locks better than rmSync)
153
+ const { spawnSync } = await import("child_process");
154
+ spawnSync("powershell", [
155
+ "-NoProfile",
156
+ "-Command",
157
+ `Remove-Item -Recurse -Force -Path '${OC_LOG_DIR}' -ErrorAction SilentlyContinue`,
158
+ ], { stdio: "pipe" });
159
+ // Fall back to our retry helper for stubborn handles.
160
+ const removed = existsSync(OC_LOG_DIR)
161
+ ? await ocForceRemoveWithRetry(OC_LOG_DIR, 20000)
162
+ : true;
163
+ if (removed)
164
+ spinner.succeed("Log directory deleted ✓");
165
+ else if (removeLogs)
166
+ spinner.warn(`Log files still locked — delete manually: ${OC_LOG_DIR}`);
167
+ else
168
+ spinner.info("Log directory present but could not be removed (locked); parent deletion will skip it");
169
+ }
170
+ else if (removeLogs && existsSync(OC_LOG_DIR)) {
171
+ const spinner = ora(`Deleting log directory: ${OC_LOG_DIR}`).start();
172
+ try {
173
+ rmSync(OC_LOG_DIR, { recursive: true, force: true });
174
+ spinner.succeed("Log directory deleted ✓");
175
+ }
176
+ catch (err) {
177
+ spinner.warn(`Could not delete logs: ${err instanceof Error ? err.message : String(err)}`);
178
+ }
179
+ }
109
180
  if (existsSync(OC_CONFIG_DIR)) {
110
181
  const spinner = ora(`Deleting config directory: ${OC_CONFIG_DIR}`).start();
111
- try {
112
- rmSync(OC_CONFIG_DIR, { recursive: true, force: true });
182
+ const removed = await ocForceRemoveWithRetry(OC_CONFIG_DIR, 15000);
183
+ if (removed) {
113
184
  spinner.succeed("Config directory deleted ✓");
114
185
  }
115
- catch (err) {
116
- spinner.fail(`Failed to delete config dir: ${err instanceof Error ? err.message : String(err)}`);
186
+ else {
187
+ spinner.warn(`Some files in ${OC_CONFIG_DIR} are still locked (likely the active log file). ` +
188
+ `Reboot to release the handles, then delete the folder manually.`);
117
189
  }
118
190
  }
119
191
  else {
120
192
  console.log(chalk.gray(` Config directory not found, skipping: ${OC_CONFIG_DIR}`));
121
193
  }
122
- if (removeLogs && existsSync(OC_LOG_DIR)) {
123
- const spinner = ora(`Deleting log directory: ${OC_LOG_DIR}`).start();
124
- try {
125
- if (process.platform === "win32") {
126
- // Use PowerShell to force-remove; Node rmSync can fail on locked log files
127
- const { spawnSync } = await import("child_process");
128
- spawnSync("powershell", [
129
- "-Command",
130
- `Remove-Item -Recurse -Force -Path '${OC_LOG_DIR}' -ErrorAction SilentlyContinue`,
131
- ], { stdio: "pipe" });
132
- if (!existsSync(OC_LOG_DIR)) {
133
- spinner.succeed("Log directory deleted ✓");
134
- }
135
- else {
136
- spinner.warn(`Log files still locked — delete manually: ${OC_LOG_DIR}`);
137
- }
138
- }
139
- else {
140
- rmSync(OC_LOG_DIR, { recursive: true, force: true });
141
- spinner.succeed("Log directory deleted ✓");
142
- }
143
- }
144
- catch (err) {
145
- spinner.warn(`Could not delete logs: ${err instanceof Error ? err.message : String(err)}`);
146
- }
147
- }
148
194
  }
149
195
  function ocUninstallPackage() {
150
196
  const spinner = ora("Removing npm global package...").start();
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAKA,qBAAa,SAAS;IACd,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BvC"}
1
+ {"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAiBA,qBAAa,SAAS;IACd,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BvC"}
package/dist/updater.js CHANGED
@@ -1,6 +1,19 @@
1
1
  import { OcLogger } from "./logger.js";
2
2
  import { createRequire } from "module";
3
- const logger = new OcLogger("updater");
3
+ // Lazy: see comment in store.ts. Module-load OcLogger opens a daily-rotate
4
+ // file handle that the running Windows service holds — crashes uninstall.
5
+ let loggerInstance = null;
6
+ function ocLog(level, message, meta) {
7
+ if (!loggerInstance)
8
+ loggerInstance = new OcLogger("updater");
9
+ loggerInstance[level](message, meta);
10
+ }
11
+ const logger = {
12
+ info: (m, meta) => ocLog("info", m, meta),
13
+ warn: (m, meta) => ocLog("warn", m, meta),
14
+ error: (m, meta) => ocLog("error", m, meta),
15
+ debug: (m, meta) => ocLog("debug", m, meta),
16
+ };
4
17
  export class OcUpdater {
5
18
  async checkForUpdates() {
6
19
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;AAEvC,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wDAAwD,EAAE;gBACrF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO;YAEzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyB,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CACT,8BAA8B,MAAM,cAAc,OAAO,GAAG,EAC5D,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,wDAAwD;oBACxD,2BAA2B,OAAO,OAAO,MAAM,OAAO;oBACtD,uDAAuD;oBACvD,sDAAsD,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,2EAA2E;AAC3E,0EAA0E;AAC1E,IAAI,cAAc,GAAoB,IAAI,CAAC;AAC3C,SAAS,KAAK,CAAC,KAA0C,EAAE,OAAe,EAAE,IAA8B;IACxG,IAAI,CAAC,cAAc;QAAE,cAAc,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9D,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AACD,MAAM,MAAM,GAAG;IACb,IAAI,EAAG,CAAC,CAAS,EAAE,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC;IAC7E,IAAI,EAAG,CAAC,CAAS,EAAE,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAG,CAAC,EAAE,IAAI,CAAC;IAC7E,KAAK,EAAE,CAAC,CAAS,EAAE,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;IAC7E,KAAK,EAAE,CAAC,CAAS,EAAE,IAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wDAAwD,EAAE;gBACrF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO;YAEzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyB,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CACT,8BAA8B,MAAM,cAAc,OAAO,GAAG,EAC5D,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,wDAAwD;oBACxD,2BAA2B,OAAO,OAAO,MAAM,OAAO;oBACtD,uDAAuD;oBACvD,sDAAsD,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onboardconnect-agent",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "OnboardConnect On-Prem Agent — LDAP provisioning bridge for on-premises Active Directory",
5
5
  "keywords": [
6
6
  "onboardconnect",
@@ -28,7 +28,7 @@
28
28
  "setup": "tsx src/setup.ts",
29
29
  "start": "node dist/index.js",
30
30
  "typecheck": "tsc --noEmit",
31
- "test:unit": "vitest run",
31
+ "test:unit": "vitest run --passWithNoTests",
32
32
  "clean": "rimraf dist *.tsbuildinfo",
33
33
  "uninstall": "tsx src/uninstall.ts",
34
34
  "postinstall": "node scripts/postinstall.js"
@@ -49,14 +49,14 @@ Error generating stack: `+o.message+`
49
49
  disabled:opacity-40 disabled:cursor-not-allowed`,children:[a&&u.jsx("span",{className:"oc-spinner"}),a?"Checking":"Run Access Check"]}),i&&!a&&u.jsx("span",{className:"text-xs text-slate-500",children:"Last check completed"})]})]})}function $0({initial:i}){const l=Kr(),[a,d]=G.useState(()=>new Set(i??Ds)),[p,y]=G.useState(null);G.useEffect(()=>{d(new Set(i??Ds))},[i]);function j(T){d(I=>{const H=new Set(I);return H.has(T)?H.delete(T):H.add(T),H}),y(null)}function S(T,I){d(H=>{const Q=new Set(H);return T.forEach(O=>I?Q.delete(O):Q.add(O)),Q}),y(null)}function P(){d(new Set(Ds)),y(null)}const b=a.size,M=b===Ds.length,L=Is({mutationFn:()=>{const T=M?null:Array.from(a);return Pt.saveAllowedCommands(T)},onSuccess:()=>{y({ok:!0,msg:"Saved. Restart the service for changes to take effect."}),l.invalidateQueries({queryKey:["oc-agent-allowed-commands"]})},onError:()=>y({ok:!1,msg:"Failed to save command filter."})});return u.jsxs("div",{className:"bg-oc-navy-800 border border-oc-navy-700 rounded-xl overflow-hidden",children:[u.jsx(Rf,{title:"Allowed Command Types",description:"Control which operations this agent is permitted to execute. Disabled types are rejected before any AD action is taken.",badge:u.jsxs("span",{className:he("flex-shrink-0 text-xs font-mono px-2.5 py-1 rounded-full border",M?"text-teal-400 bg-teal-500/10 border-teal-500/20":"text-amber-400 bg-amber-500/10 border-amber-500/20"),children:[b," / ",Ds.length," enabled"]})}),u.jsxs("div",{className:"mx-5 mt-4 flex items-start gap-2.5 rounded-xl bg-amber-500/10 border border-amber-500/20 px-4 py-3",children:[u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 text-amber-400 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",clipRule:"evenodd"})}),u.jsxs("p",{className:"text-xs text-amber-300/90",children:[u.jsx("strong",{className:"font-semibold",children:"Restart required."})," Changes are loaded at agent startup and will not take effect until the service is restarted."]})]}),u.jsx("div",{className:"p-5 space-y-6",children:_f.map(T=>{const I=T.commands.map(O=>O.type),H=I.every(O=>a.has(O)),Q=I.some(O=>a.has(O));return u.jsxs("div",{children:[u.jsxs("div",{className:"flex items-center justify-between mb-2.5",children:[u.jsxs("div",{children:[u.jsx("p",{className:"text-xs font-bold text-slate-300",children:T.label}),u.jsx("p",{className:"text-[11px] text-slate-500 mt-0.5",children:T.desc})]}),u.jsx("button",{type:"button",onClick:()=>S(I,H),className:"text-xs text-slate-500 hover:text-teal-400 transition-colors ml-4 whitespace-nowrap",children:H?"Disable all":"Enable all"})]}),u.jsx("div",{className:"rounded-xl border border-oc-navy-700 overflow-hidden divide-y divide-oc-navy-700",children:T.commands.map(O=>{const ee=a.has(O.type),ae="destructive"in O&&O.destructive;return u.jsxs("div",{className:he("flex items-center gap-4 px-4 py-3.5 bg-oc-navy-900/40 transition-opacity",ae&&"border-l-2 border-red-500/40",!ee&&"opacity-55"),children:[u.jsxs("div",{className:"flex-1 min-w-0",children:[u.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[u.jsx("span",{className:"text-sm text-slate-200 font-medium",children:O.label}),ae&&u.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wide text-red-400 bg-red-500/10 border border-red-500/20 rounded-full px-1.5 py-0.5",children:"Destructive"})]}),u.jsx("span",{className:"text-xs text-slate-500 leading-snug",children:O.desc})]}),u.jsx("code",{className:"hidden sm:inline-block text-[11px] font-mono text-slate-500 bg-oc-navy-800 border border-oc-navy-700 rounded-lg px-2 py-1 whitespace-nowrap",children:O.type}),u.jsx(W0,{on:ee,onChange:()=>j(O.type)})]},O.type)})})]},T.label)})}),p&&u.jsx("div",{className:he("mx-5 mb-3 px-4 py-3 rounded-xl text-sm border",p.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:p.msg}),u.jsxs("div",{className:"px-5 py-5 flex items-center gap-3 border-t border-oc-navy-700",children:[u.jsxs("button",{type:"button",onClick:()=>L.mutate(),disabled:L.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500
50
50
  text-white text-sm font-semibold transition-colors
51
51
  disabled:opacity-40 disabled:cursor-not-allowed`,children:[L.isPending&&u.jsx("span",{className:"oc-spinner"}),"Save Command Filter"]}),u.jsx("button",{type:"button",onClick:P,className:`px-4 py-2.5 rounded-xl border border-oc-navy-600 text-slate-400
52
- hover:text-slate-200 hover:border-oc-navy-500 text-sm transition-colors`,children:"Restore Defaults"})]})]})}function K0(){const{data:i,isLoading:l}=Da({queryKey:["oc-agent-allowed-commands"],queryFn:Pt.getAllowedCommands});return l?u.jsxs("div",{className:"flex items-center justify-center h-48",children:[u.jsx("span",{className:"oc-spinner"}),u.jsx("span",{className:"ml-3 text-slate-500 text-sm",children:"Loading settings"})]}):u.jsxs("div",{className:"space-y-6",children:[u.jsxs("div",{children:[u.jsx("h1",{className:"text-lg font-bold text-slate-100",children:"Settings"}),u.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Configure service account access and restrict which command types this agent can execute."})]}),u.jsx(V0,{}),u.jsx($0,{initial:(i==null?void 0:i.allowedCommands)??null})]})}function Nn(i){return he("w-full bg-oc-navy-900 rounded-xl px-4 py-2.5 text-sm","text-slate-100 placeholder-slate-600","focus:outline-none transition-colors",i?"border-2 border-red-500 focus:border-red-400":"border border-oc-navy-600 focus:border-teal-500")}function En({label:i,optional:l,hint:a,children:d,error:p}){return u.jsxs("div",{children:[u.jsxs("label",{className:"block text-sm font-semibold text-slate-300 mb-1.5",children:[i,l&&u.jsx("span",{className:"ml-1.5 text-xs text-slate-600 font-normal",children:"optional"})]}),d,a&&u.jsx("p",{className:"mt-1.5 text-xs text-slate-500",children:a}),p&&u.jsx("p",{className:"mt-1 text-xs text-red-400",children:"This field is required."})]})}function Ia({stepNum:i,title:l,description:a,children:d}){return u.jsxs("div",{className:"bg-oc-navy-800 border border-oc-navy-700 rounded-xl overflow-hidden",children:[u.jsxs("div",{className:"px-6 py-5 border-b border-oc-navy-700 flex items-start gap-4",children:[u.jsx("span",{className:"flex-shrink-0 w-7 h-7 rounded-full bg-teal-600/20 border border-teal-600/40 flex items-center justify-center text-xs font-bold text-teal-400",children:i}),u.jsxs("div",{children:[u.jsx("h2",{className:"text-sm font-bold text-slate-200",children:l}),u.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:a})]})]}),u.jsx("div",{className:"p-6",children:d})]})}function q0({initial:i}){const l=Kr(),a={host:"",port:389,baseDn:"",bindDn:"",bindPassword:"",authMode:"explicit"},[d,p]=G.useState(i??a),[y,j]=G.useState(!1),[S,P]=G.useState(null),[b,M]=G.useState(null),[L,T]=G.useState(!1);G.useEffect(()=>{i&&p(i)},[i]);function I(V,F){p(ie=>({...ie,[V]:F})),P(null),M(null)}const H=d.authMode==="service_account",Q=H||d.bindDn.trim().length>0&&(d.bindPassword??"").trim().length>0,O=Is({mutationFn:()=>Pt.saveLdap(d),onSuccess:()=>{P({ok:!0,msg:"LDAP settings saved."}),l.invalidateQueries({queryKey:["oc-agent-settings"]})},onError:()=>P({ok:!1,msg:"Failed to save settings."})}),ee=Is({mutationFn:Pt.testLdap,onSuccess:V=>{V.success?M({ok:!0,msg:`Connected successfully — ${V.latencyMs??"?"}ms`}):M({ok:!1,msg:V.error??"Connection failed"})},onError:()=>M({ok:!1,msg:"Request to test LDAP failed."})});function ae(){T(!0),Q&&O.mutate()}return u.jsx(Ia,{stepNum:1,title:"LDAP Connection",description:"Connect this agent to your on-premises Active Directory via LDAP.",children:u.jsxs("div",{className:"space-y-5",children:[u.jsxs("div",{children:[u.jsx("p",{className:"text-sm font-semibold text-slate-300 mb-2.5",children:"Authentication Mode"}),u.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:["explicit","service_account"].map(V=>{const F=d.authMode===V;return u.jsxs("button",{type:"button",onClick:()=>{p(ie=>({...ie,authMode:V,port:V==="service_account"&&ie.port===636?389:ie.port})),P(null)},className:he("flex items-start gap-3 rounded-xl border px-4 py-3.5 text-left transition-all",F?"border-teal-500 bg-teal-500/10 ring-1 ring-teal-500/20":"border-oc-navy-600 bg-oc-navy-900 hover:border-oc-navy-500"),children:[u.jsx("span",{className:he("mt-0.5 flex-shrink-0 w-4 h-4 rounded-full border-2 flex items-center justify-center",F?"border-teal-400":"border-slate-600"),children:F&&u.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-teal-400"})}),u.jsxs("span",{children:[u.jsx("span",{className:he("block text-sm font-semibold",F?"text-teal-300":"text-slate-300"),children:V==="explicit"?"Explicit Credentials":"Domain Service Account"}),u.jsx("span",{className:"block text-xs text-slate-500 mt-0.5",children:V==="explicit"?"Bind with a dedicated service account DN and password":"Use the domain identity the agent task runs as — no password stored"})]})]},V)})}),H&&u.jsxs("div",{className:"mt-3 flex items-start gap-2.5 rounded-xl bg-blue-500/10 border border-blue-500/20 px-4 py-3",children:[u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 text-blue-400 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z",clipRule:"evenodd"})}),u.jsxs("p",{className:"text-xs text-blue-300/90",children:["Open ",u.jsx("strong",{children:"Windows Services"})," (services.msc), find ",u.jsx("strong",{children:"OnboardConnectAgent"}),", go to the ",u.jsx("strong",{children:"Log On"})," tab, and set the account to a domain user with LDAP read/write access."]})]})]}),u.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[u.jsx(En,{label:"Host",hint:"LDAP server hostname or IP address",children:u.jsx("input",{type:"text",className:Nn(),value:d.host,onChange:V=>I("host",V.target.value),placeholder:"ldap.example.com"})}),u.jsx(En,{label:"Port",children:u.jsx("input",{type:"number",className:Nn(),value:d.port,onChange:V=>I("port",parseInt(V.target.value,10)||389),placeholder:H?"389":"636"})}),u.jsx(En,{label:"Base DN",hint:"Root of the directory tree to search",children:u.jsx("input",{type:"text",className:Nn(),value:d.baseDn,onChange:V=>I("baseDn",V.target.value),placeholder:"DC=example,DC=com"})}),!H&&u.jsx(En,{label:"Username",error:L&&!H&&!d.bindDn.trim(),children:u.jsx("input",{type:"text",className:Nn(L&&!H&&!d.bindDn.trim()),value:d.bindDn,onChange:V=>I("bindDn",V.target.value),placeholder:"jdoe"})}),!H&&u.jsx(En,{label:"Password",error:L&&!H&&!(d.bindPassword??"").trim(),children:u.jsxs("div",{className:"relative",children:[u.jsx("input",{type:y?"text":"password",className:he(Nn(L&&!H&&!(d.bindPassword??"").trim()),"pr-10"),value:d.bindPassword??"",onChange:V=>I("bindPassword",V.target.value),placeholder:"Service account password"}),u.jsx("button",{type:"button",onClick:()=>j(V=>!V),className:"absolute right-3.5 top-1/2 -translate-y-1/2 text-slate-500 hover:text-slate-300 transition-colors","aria-label":y?"Hide password":"Show password",children:y?u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",className:"w-4 h-4",children:[u.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),u.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",className:"w-4 h-4",children:[u.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),u.jsx("circle",{cx:"12",cy:"12",r:"3",stroke:"currentColor",strokeWidth:"2"})]})})]})})]}),b&&u.jsxs("div",{className:he("flex items-start gap-2.5 px-4 py-3 rounded-xl text-sm border",b.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:[b.ok?u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z",clipRule:"evenodd"})}):u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z",clipRule:"evenodd"})}),b.msg]}),S&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",S.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:S.msg}),u.jsxs("div",{className:"flex gap-3 pt-1",children:[u.jsxs("button",{type:"button",onClick:()=>ee.mutate(),disabled:ee.isPending||O.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl border border-oc-navy-600
53
- text-slate-300 hover:text-slate-100 hover:bg-oc-navy-700 text-sm font-medium
54
- transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,children:[ee.isPending&&u.jsx("span",{className:"oc-spinner"}),"Test Connection"]}),u.jsxs("button",{type:"button",onClick:ae,disabled:O.isPending||ee.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500
55
- text-white text-sm font-semibold transition-colors
56
- disabled:opacity-40 disabled:cursor-not-allowed`,children:[O.isPending&&u.jsx("span",{className:"oc-spinner"}),"Save LDAP Settings"]})]})]})})}function G0({initial:i}){const l=Kr(),[a,d]=G.useState(i.read??""),[p,y]=G.useState(i.write??""),[j,S]=G.useState(null);G.useEffect(()=>{d(i.read??""),y(i.write??"")},[i]);const P=Is({mutationFn:()=>Pt.savePaths({...i,...a.trim()?{read:a.trim()}:{},...p.trim()?{write:p.trim()}:{}}),onSuccess:()=>{S({ok:!0,msg:"File paths saved. Restart the service for changes to take effect."}),l.invalidateQueries({queryKey:["oc-agent-settings"]})},onError:()=>S({ok:!1,msg:"Failed to save paths."})});return u.jsx(Ia,{stepNum:2,title:"File Paths",description:"Absolute paths on this server that the agent is permitted to read from and write to.",children:u.jsxs("div",{className:"space-y-4",children:[u.jsx(En,{label:"File Read Path",hint:"Directory where the agent reads incoming CSV files.",children:u.jsx("input",{type:"text",className:Nn(),value:a,onChange:b=>{d(b.target.value),S(null)},placeholder:"C:\\OC\\Import"})}),u.jsx(En,{label:"File Write Path",hint:"Directory where the agent writes output and export files.",children:u.jsx("input",{type:"text",className:Nn(),value:p,onChange:b=>{y(b.target.value),S(null)},placeholder:"C:\\OC\\Export"})}),j&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",j.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:j.msg}),u.jsxs("button",{type:"button",onClick:()=>P.mutate(),disabled:P.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500
57
- text-white text-sm font-semibold transition-colors
58
- disabled:opacity-40 disabled:cursor-not-allowed`,children:[P.isPending&&u.jsx("span",{className:"oc-spinner"}),"Save Paths"]})]})})}function Z0(){const[i,l]=G.useState(""),[a,d]=G.useState(null),p=Is({mutationFn:()=>Pt.setup({setupToken:i.trim()}),onSuccess:y=>{y.ok?(d({ok:!0,msg:"Agent re-registered successfully. The service will reconnect shortly."}),l("")):d({ok:!1,msg:y.error??"Registration failed."})},onError:()=>d({ok:!1,msg:"Request failed — check that the agent service is running."})});return u.jsx(Ia,{stepNum:3,title:"Re-register Agent",description:"Link this agent to a tenant by providing a one-time setup token from the OnboardConnect portal.",children:u.jsxs("div",{className:"space-y-4",children:[u.jsxs("div",{className:"flex items-start gap-3 rounded-xl border border-amber-500/30 bg-amber-500/10 px-4 py-4",children:[u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-5 w-5 text-amber-400 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",clipRule:"evenodd"})}),u.jsxs("div",{children:[u.jsx("p",{className:"text-sm font-semibold text-amber-300",children:"Re-registration replaces current credentials"}),u.jsx("p",{className:"text-xs text-amber-400/80 mt-0.5",children:"This will overwrite the existing agent registration. The current connection will be terminated and the agent will reconnect with the new token. This action cannot be undone."})]})]}),u.jsx(En,{label:"Setup Token",hint:"Generate this token from the OnboardConnect tenant portal under Settings > Connections.",children:u.jsx("textarea",{className:he(Nn(),"resize-none h-24 font-mono text-xs leading-relaxed"),value:i,onChange:y=>{l(y.target.value),d(null)},placeholder:"Paste your one-time setup token here",spellCheck:!1})}),a&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",a.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:a.msg}),u.jsxs("button",{type:"button",onClick:()=>p.mutate(),disabled:p.isPending||!i.trim(),className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500
59
- text-white text-sm font-semibold transition-colors
52
+ hover:text-slate-200 hover:border-oc-navy-500 text-sm transition-colors`,children:"Restore Defaults"})]})]})}function K0(){const{data:i,isLoading:l}=Da({queryKey:["oc-agent-allowed-commands"],queryFn:Pt.getAllowedCommands});return l?u.jsxs("div",{className:"flex items-center justify-center h-48",children:[u.jsx("span",{className:"oc-spinner"}),u.jsx("span",{className:"ml-3 text-slate-500 text-sm",children:"Loading settings"})]}):u.jsxs("div",{className:"space-y-6",children:[u.jsxs("div",{children:[u.jsx("h1",{className:"text-lg font-bold text-slate-100",children:"Settings"}),u.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Configure service account access and restrict which command types this agent can execute."})]}),u.jsx(V0,{}),u.jsx($0,{initial:(i==null?void 0:i.allowedCommands)??null})]})}function Nn(i){return he("w-full bg-oc-navy-900 rounded-xl px-4 py-2.5 text-sm","text-slate-100 placeholder-slate-600","focus:outline-none transition-colors",i?"border-2 border-red-500 focus:border-red-400":"border border-oc-navy-600 focus:border-teal-500")}function En({label:i,optional:l,hint:a,children:d,error:p}){return u.jsxs("div",{children:[u.jsxs("label",{className:"block text-sm font-semibold text-slate-300 mb-1.5",children:[i,l&&u.jsx("span",{className:"ml-1.5 text-xs text-slate-600 font-normal",children:"optional"})]}),d,a&&u.jsx("p",{className:"mt-1.5 text-xs text-slate-500",children:a}),p&&u.jsx("p",{className:"mt-1 text-xs text-red-400",children:"This field is required."})]})}function Ia({stepNum:i,title:l,description:a,children:d}){return u.jsxs("div",{className:"bg-oc-navy-800 border border-oc-navy-700 rounded-xl overflow-hidden",children:[u.jsxs("div",{className:"px-6 py-5 border-b border-oc-navy-700 flex items-start gap-4",children:[u.jsx("span",{className:"flex-shrink-0 w-7 h-7 rounded-full bg-teal-600/20 border border-teal-600/40 flex items-center justify-center text-xs font-bold text-teal-400",children:i}),u.jsxs("div",{children:[u.jsx("h2",{className:"text-sm font-bold text-slate-200",children:l}),u.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:a})]})]}),u.jsx("div",{className:"p-6",children:d})]})}function q0({initial:i}){const l=Kr(),a={host:"",port:389,baseDn:"",bindDn:"",bindPassword:"",authMode:"explicit"},[d,p]=G.useState(i??a),[y,j]=G.useState(!1),[S,P]=G.useState(null),[b,M]=G.useState(null),[L,T]=G.useState(!1);G.useEffect(()=>{i&&p(i)},[i]);function I(V,F){p(ie=>({...ie,[V]:F})),P(null),M(null)}const H=d.authMode==="service_account",Q=H||d.bindDn.trim().length>0&&(d.bindPassword??"").trim().length>0,O=Is({mutationFn:()=>Pt.saveLdap(d),onSuccess:()=>{P({ok:!0,msg:"LDAP settings saved."}),l.invalidateQueries({queryKey:["oc-agent-settings"]})},onError:()=>P({ok:!1,msg:"Failed to save settings."})}),ee=Is({mutationFn:Pt.testLdap,onSuccess:V=>{V.success?M({ok:!0,msg:`Connected successfully — ${V.latencyMs??"?"}ms`}):M({ok:!1,msg:V.error??"Connection failed"})},onError:()=>M({ok:!1,msg:"Request to test LDAP failed."})});function ae(){T(!0),Q&&O.mutate()}return u.jsx(Ia,{stepNum:1,title:"LDAP Connection",description:"Connect this agent to your on-premises Active Directory via LDAP.",children:u.jsxs("div",{className:"space-y-5",children:[u.jsxs("div",{children:[u.jsx("p",{className:"text-sm font-semibold text-slate-300 mb-2.5",children:"Authentication Mode"}),u.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:["explicit","service_account"].map(V=>{const F=d.authMode===V;return u.jsxs("button",{type:"button",onClick:()=>{p(ie=>({...ie,authMode:V,port:V==="service_account"&&ie.port===636?389:ie.port})),P(null)},className:he("flex items-start gap-3 rounded-xl border px-4 py-3.5 text-left transition-all",F?"border-teal-500 bg-teal-500/10 ring-1 ring-teal-500/20":"border-oc-navy-600 bg-oc-navy-900 hover:border-oc-navy-500"),children:[u.jsx("span",{className:he("mt-0.5 flex-shrink-0 w-4 h-4 rounded-full border-2 flex items-center justify-center",F?"border-teal-400":"border-slate-600"),children:F&&u.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-teal-400"})}),u.jsxs("span",{children:[u.jsx("span",{className:he("block text-sm font-semibold",F?"text-teal-300":"text-slate-300"),children:V==="explicit"?"Explicit Credentials":"Domain Service Account"}),u.jsx("span",{className:"block text-xs text-slate-500 mt-0.5",children:V==="explicit"?"Bind with a dedicated service account DN and password":"Use the domain identity the agent task runs as — no password stored"})]})]},V)})}),H&&u.jsxs("div",{className:"mt-3 flex items-start gap-2.5 rounded-xl bg-blue-500/10 border border-blue-500/20 px-4 py-3",children:[u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 text-blue-400 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-7-4a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM9 9a.75.75 0 0 0 0 1.5h.253a.25.25 0 0 1 .244.304l-.459 2.066A1.75 1.75 0 0 0 10.747 15H11a.75.75 0 0 0 0-1.5h-.253a.25.25 0 0 1-.244-.304l.459-2.066A1.75 1.75 0 0 0 9.253 9H9Z",clipRule:"evenodd"})}),u.jsxs("p",{className:"text-xs text-blue-300/90",children:["Open ",u.jsx("strong",{children:"Windows Services"})," (services.msc), find ",u.jsx("strong",{children:"OnboardConnectAgent"}),", go to the ",u.jsx("strong",{children:"Log On"})," tab, and set the account to a domain user with LDAP read/write access."]})]})]}),u.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[u.jsx(En,{label:"Host",hint:"LDAP server hostname or IP address",children:u.jsx("input",{type:"text",className:Nn(),value:d.host,onChange:V=>I("host",V.target.value),placeholder:"ldap.example.com"})}),u.jsx(En,{label:"Port",children:u.jsx("input",{type:"number",className:Nn(),value:d.port,onChange:V=>I("port",parseInt(V.target.value,10)||389),placeholder:H?"389":"636"})}),u.jsx(En,{label:"Base DN",hint:"Root of the directory tree to search",children:u.jsx("input",{type:"text",className:Nn(),value:d.baseDn,onChange:V=>I("baseDn",V.target.value),placeholder:"DC=example,DC=com"})}),!H&&u.jsx(En,{label:"Username",error:L&&!H&&!d.bindDn.trim(),children:u.jsx("input",{type:"text",className:Nn(L&&!H&&!d.bindDn.trim()),value:d.bindDn,onChange:V=>I("bindDn",V.target.value),placeholder:"jdoe"})}),!H&&u.jsx(En,{label:"Password",error:L&&!H&&!(d.bindPassword??"").trim(),children:u.jsxs("div",{className:"relative",children:[u.jsx("input",{type:y?"text":"password",className:he(Nn(L&&!H&&!(d.bindPassword??"").trim()),"pr-10"),value:d.bindPassword??"",onChange:V=>I("bindPassword",V.target.value),placeholder:"Service account password"}),u.jsx("button",{type:"button",onClick:()=>j(V=>!V),className:"absolute right-3.5 top-1/2 -translate-y-1/2 text-slate-500 hover:text-slate-300 transition-colors","aria-label":y?"Hide password":"Show password",children:y?u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",className:"w-4 h-4",children:[u.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),u.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",className:"w-4 h-4",children:[u.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),u.jsx("circle",{cx:"12",cy:"12",r:"3",stroke:"currentColor",strokeWidth:"2"})]})})]})})]}),b&&u.jsxs("div",{className:he("flex items-start gap-2.5 px-4 py-3 rounded-xl text-sm border",b.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:[b.ok?u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z",clipRule:"evenodd"})}):u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-4 w-4 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16ZM8.28 7.22a.75.75 0 0 0-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 1 0 1.06 1.06L10 11.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L11.06 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L10 8.94 8.28 7.22Z",clipRule:"evenodd"})}),b.msg]}),S&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",S.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:S.msg}),u.jsxs("div",{className:"flex gap-3 pt-1",children:[u.jsxs("button",{type:"button",onClick:()=>ee.mutate(),disabled:ee.isPending||O.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl border border-oc-navy-600\r
53
+ text-slate-300 hover:text-slate-100 hover:bg-oc-navy-700 text-sm font-medium\r
54
+ transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,children:[ee.isPending&&u.jsx("span",{className:"oc-spinner"}),"Test Connection"]}),u.jsxs("button",{type:"button",onClick:ae,disabled:O.isPending||ee.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500\r
55
+ text-white text-sm font-semibold transition-colors\r
56
+ disabled:opacity-40 disabled:cursor-not-allowed`,children:[O.isPending&&u.jsx("span",{className:"oc-spinner"}),"Save LDAP Settings"]})]})]})})}function G0({initial:i}){const l=Kr(),[a,d]=G.useState(i.read??""),[p,y]=G.useState(i.write??""),[j,S]=G.useState(null);G.useEffect(()=>{d(i.read??""),y(i.write??"")},[i]);const P=Is({mutationFn:()=>Pt.savePaths({...i,...a.trim()?{read:a.trim()}:{},...p.trim()?{write:p.trim()}:{}}),onSuccess:()=>{S({ok:!0,msg:"File paths saved. Restart the service for changes to take effect."}),l.invalidateQueries({queryKey:["oc-agent-settings"]})},onError:()=>S({ok:!1,msg:"Failed to save paths."})});return u.jsx(Ia,{stepNum:2,title:"File Paths",description:"Absolute paths on this server that the agent is permitted to read from and write to.",children:u.jsxs("div",{className:"space-y-4",children:[u.jsx(En,{label:"File Read Path",hint:"Directory where the agent reads incoming CSV files.",children:u.jsx("input",{type:"text",className:Nn(),value:a,onChange:b=>{d(b.target.value),S(null)},placeholder:"C:\\OC\\Import"})}),u.jsx(En,{label:"File Write Path",hint:"Directory where the agent writes output and export files.",children:u.jsx("input",{type:"text",className:Nn(),value:p,onChange:b=>{y(b.target.value),S(null)},placeholder:"C:\\OC\\Export"})}),j&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",j.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:j.msg}),u.jsxs("button",{type:"button",onClick:()=>P.mutate(),disabled:P.isPending,className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500\r
57
+ text-white text-sm font-semibold transition-colors\r
58
+ disabled:opacity-40 disabled:cursor-not-allowed`,children:[P.isPending&&u.jsx("span",{className:"oc-spinner"}),"Save Paths"]})]})})}function Z0(){const[i,l]=G.useState(""),[a,d]=G.useState(null),p=Is({mutationFn:()=>Pt.setup({setupToken:i.trim()}),onSuccess:y=>{y.ok?(d({ok:!0,msg:"Agent re-registered successfully. The service will reconnect shortly."}),l("")):d({ok:!1,msg:y.error??"Registration failed."})},onError:()=>d({ok:!1,msg:"Request failed — check that the agent service is running."})});return u.jsx(Ia,{stepNum:3,title:"Re-register Agent",description:"Link this agent to a tenant by providing a one-time setup token from the OnboardConnect portal.",children:u.jsxs("div",{className:"space-y-4",children:[u.jsxs("div",{className:"flex items-start gap-3 rounded-xl border border-amber-500/30 bg-amber-500/10 px-4 py-4",children:[u.jsx("svg",{viewBox:"0 0 20 20",fill:"currentColor",className:"h-5 w-5 text-amber-400 flex-shrink-0 mt-0.5",children:u.jsx("path",{fillRule:"evenodd",d:"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",clipRule:"evenodd"})}),u.jsxs("div",{children:[u.jsx("p",{className:"text-sm font-semibold text-amber-300",children:"Re-registration replaces current credentials"}),u.jsx("p",{className:"text-xs text-amber-400/80 mt-0.5",children:"This will overwrite the existing agent registration. The current connection will be terminated and the agent will reconnect with the new token. This action cannot be undone."})]})]}),u.jsx(En,{label:"Setup Token",hint:"Generate this token from the OnboardConnect tenant portal under Settings > Connections.",children:u.jsx("textarea",{className:he(Nn(),"resize-none h-24 font-mono text-xs leading-relaxed"),value:i,onChange:y=>{l(y.target.value),d(null)},placeholder:"Paste your one-time setup token here",spellCheck:!1})}),a&&u.jsx("div",{className:he("px-4 py-3 rounded-xl text-sm border",a.ok?"bg-green-500/10 border-green-500/30 text-green-400":"bg-red-500/10 border-red-500/30 text-red-400"),children:a.msg}),u.jsxs("button",{type:"button",onClick:()=>p.mutate(),disabled:p.isPending||!i.trim(),className:`flex items-center gap-2 px-4 py-2.5 rounded-xl bg-teal-600 hover:bg-teal-500\r
59
+ text-white text-sm font-semibold transition-colors\r
60
60
  disabled:opacity-40 disabled:cursor-not-allowed`,children:[p.isPending&&u.jsx("span",{className:"oc-spinner"}),"Register Agent"]})]})})}function Y0(){const{data:i,isLoading:l}=Da({queryKey:["oc-agent-settings"],queryFn:Pt.settings});return l?u.jsxs("div",{className:"flex items-center justify-center h-48",children:[u.jsx("span",{className:"oc-spinner"}),u.jsx("span",{className:"ml-3 text-slate-500 text-sm",children:"Loading configuration"})]}):u.jsxs("div",{className:"space-y-6",children:[u.jsxs("div",{children:[u.jsx("h1",{className:"text-lg font-bold text-slate-100",children:"Setup"}),u.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Configure LDAP connectivity, file paths, and agent registration."})]}),u.jsx(q0,{initial:(i==null?void 0:i.ldap)??null}),u.jsx(G0,{initial:(i==null?void 0:i.paths)??{}}),u.jsx(Z0,{})]})}function X0({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function J0({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function em({className:i}){return u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:[u.jsx("path",{d:"M12 15a3 3 0 100-6 3 3 0 000 6z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),u.jsx("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-2 2 2 2 0 01-2-2v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 01-2-2 2 2 0 012-2h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 010-2.83 2 2 0 012.83 0l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 012-2 2 2 0 012 2v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 0 2 2 0 010 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 012 2 2 2 0 01-2 2h-.09a1.65 1.65 0 00-1.51 1z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function tm({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function Of({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4M16 17l5-5-5-5M21 12H9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function nm({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M4 6h16M4 12h16M4 18h16",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function rm({className:i}){return u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:i,children:u.jsx("path",{d:"M18 6L6 18M6 6l12 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function Lf({size:i=32}){return u.jsx("div",{className:"rounded-xl bg-teal-600 flex items-center justify-center flex-shrink-0",style:{width:i,height:i},children:u.jsxs("svg",{viewBox:"0 0 56 56",fill:"none",style:{width:i*.57,height:i*.57},children:[u.jsx("path",{d:"M28 5 L47 13 L47 29 C47 41 37.5 49 28 54 C18.5 49 9 41 9 29 L9 13 Z",fill:"none",stroke:"white",strokeWidth:"2.5"}),u.jsx("path",{d:"M18 29 L24 36 L38 22",stroke:"white",strokeWidth:"3.5",strokeLinecap:"round",strokeLinejoin:"round"})]})})}const Mf=[{id:"status",label:"Status",Icon:X0},{id:"requests",label:"Requests",Icon:J0},{id:"setup",label:"Setup",Icon:tm},{id:"settings",label:"Settings",Icon:em}];function Ea({connected:i,configured:l,paused:a,canRun:d}){return l?d?a?u.jsx("span",{className:"w-2 h-2 rounded-full bg-yellow-400 oc-pulse-dot flex-shrink-0"}):i?u.jsx("span",{className:"w-2 h-2 rounded-full bg-green-400 oc-pulse-dot flex-shrink-0"}):u.jsx("span",{className:"w-2 h-2 rounded-full bg-slate-500 flex-shrink-0"}):u.jsx("span",{className:"w-2 h-2 rounded-full bg-red-500 flex-shrink-0"}):u.jsx("span",{className:"w-2 h-2 rounded-full bg-amber-400 flex-shrink-0"})}function sm({active:i,onTabChange:l,onDisconnect:a,version:d,connected:p,configured:y,paused:j,canRun:S}){return u.jsxs("aside",{className:"w-56 flex-shrink-0 bg-oc-navy-800 border-r border-oc-navy-700 flex flex-col min-h-screen sticky top-0",children:[u.jsx("div",{className:"px-4 py-5 border-b border-oc-navy-700",children:u.jsxs("div",{className:"flex items-center gap-2.5",children:[u.jsx(Lf,{size:36}),u.jsxs("div",{className:"leading-none min-w-0",children:[u.jsx("span",{className:"block text-sm font-bold text-slate-100 tracking-tight truncate",children:"OnboardConnect"}),u.jsx("span",{className:"block text-xs text-teal-400 font-medium mt-0.5",children:"Agent"})]})]})}),u.jsx("nav",{className:"flex-1 px-3 py-4 space-y-1","aria-label":"Agent navigation",children:Mf.map(({id:P,label:b,Icon:M})=>{const L=i===P;return u.jsxs("button",{onClick:()=>l(P),"aria-current":L?"page":void 0,className:he("w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-all",L?"bg-teal-500/10 text-teal-300":"text-slate-400 hover:text-slate-200 hover:bg-oc-navy-700"),children:[u.jsx(M,{className:"w-4 h-4 flex-shrink-0"}),u.jsx("span",{className:"flex-1 text-left",children:b}),P==="status"&&u.jsx(Ea,{connected:p,configured:y,paused:j,canRun:S})]},P)})}),u.jsxs("div",{className:"px-3 py-4 border-t border-oc-navy-700 space-y-1",children:[d&&u.jsx("div",{className:"px-3 py-1.5 mb-2",children:u.jsxs("span",{className:"text-xs text-slate-600 font-mono",children:["v",d]})}),u.jsxs("button",{onClick:a,className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium
61
61
  text-slate-500 hover:text-red-400 hover:bg-red-500/5 transition-all border-l-2 border-transparent`,children:[u.jsx(Of,{className:"w-4 h-4 flex-shrink-0"}),"Disconnect"]})]})]})}function lm({active:i,onTabChange:l,onDisconnect:a,version:d,mobileOpen:p,setMobileOpen:y,connected:j,configured:S,paused:P,canRun:b}){return u.jsxs(u.Fragment,{children:[u.jsxs("header",{className:"lg:hidden bg-oc-navy-800 border-b border-oc-navy-700 px-4 h-14 flex items-center justify-between sticky top-0 z-30",children:[u.jsxs("div",{className:"flex items-center gap-2.5",children:[u.jsx(Lf,{size:30}),u.jsx("span",{className:"text-sm font-bold text-slate-100",children:"OnboardConnect"}),u.jsx("span",{className:"text-xs text-teal-400 font-medium",children:"Agent"}),u.jsx(Ea,{connected:j,configured:S,paused:P,canRun:b})]}),u.jsx("button",{onClick:()=>y(!p),className:"p-2 rounded-lg text-slate-400 hover:text-slate-200 hover:bg-oc-navy-700 transition-colors","aria-label":"Toggle navigation",children:p?u.jsx(rm,{className:"w-5 h-5"}):u.jsx(nm,{className:"w-5 h-5"})})]}),p&&u.jsx("div",{className:"lg:hidden fixed inset-0 z-20 bg-black/60",onClick:()=>y(!1),children:u.jsxs("nav",{className:"absolute left-0 top-14 bottom-0 w-56 bg-oc-navy-800 border-r border-oc-navy-700 flex flex-col",onClick:M=>M.stopPropagation(),children:[u.jsx("div",{className:"flex-1 px-3 py-4 space-y-1",children:Mf.map(({id:M,label:L,Icon:T})=>{const I=i===M;return u.jsxs("button",{onClick:()=>{l(M),y(!1)},"aria-current":I?"page":void 0,className:he("w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-all",I?"bg-teal-500/10 text-teal-300":"text-slate-400 hover:text-slate-200 hover:bg-oc-navy-700"),children:[u.jsx(T,{className:"w-4 h-4 flex-shrink-0"}),u.jsx("span",{className:"flex-1 text-left",children:L}),M==="status"&&u.jsx(Ea,{connected:j,configured:S,paused:P,canRun:b})]},M)})}),u.jsxs("div",{className:"px-3 py-4 border-t border-oc-navy-700 space-y-1",children:[d&&u.jsx("div",{className:"px-3 py-1 mb-1",children:u.jsxs("span",{className:"text-xs text-slate-600 font-mono",children:["v",d]})}),u.jsxs("button",{onClick:()=>{a(),y(!1)},className:`w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium
62
62
  text-slate-500 hover:text-red-400 hover:bg-red-500/5 transition-all border-l-2 border-transparent`,children:[u.jsx(Of,{className:"w-4 h-4 flex-shrink-0"}),"Disconnect"]})]})]})})]})}function im({onDisconnect:i}){const[l,a]=G.useState("status"),[d,p]=G.useState(!1),y=Pf(),j=(y==null?void 0:y.connected)??!1,S=(y==null?void 0:y.configured)??!1,P=(y==null?void 0:y.paused)??!1,b=(y==null?void 0:y.canRun)??!0,M=y==null?void 0:y.version;return u.jsxs("div",{className:"min-h-screen bg-oc-navy-900 flex flex-col",children:[u.jsx(lm,{active:l,onTabChange:a,onDisconnect:i,...M!==void 0?{version:M}:{},mobileOpen:d,setMobileOpen:p,connected:j,configured:S,paused:P,canRun:b}),u.jsxs("div",{className:"flex flex-1",children:[u.jsx("div",{className:"hidden lg:flex",children:u.jsx(sm,{active:l,onTabChange:a,onDisconnect:i,...M!==void 0?{version:M}:{},connected:j,configured:S,paused:P,canRun:b})}),u.jsxs("main",{className:"flex-1 px-6 py-6 lg:py-8 lg:px-8 max-w-5xl",children:[l==="status"&&u.jsx(F0,{status:y}),l==="requests"&&u.jsx(H0,{}),l==="settings"&&u.jsx(K0,{}),l==="setup"&&u.jsx(Y0,{})]})]}),u.jsx("footer",{className:"text-center py-4 text-xs text-slate-700 border-t border-oc-navy-800",children:"OnboardConnect Agent UI · localhost:7432"})]})}function om(){const[i,l]=G.useState(()=>!!ba()),a=G.useCallback(()=>l(!0),[]),d=G.useCallback(()=>{C0(),l(!1)},[]);return i?u.jsx(im,{onDisconnect:d}):u.jsx(_0,{onAuthenticated:a})}class am extends hf.Component{constructor(l){super(l),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(l,a){console.error("OcErrorBoundary caught an error:",l,a.componentStack)}render(){return this.state.hasError?u.jsx("div",{className:"min-h-screen flex items-center justify-center px-4 bg-oc-navy-900",children:u.jsxs("div",{className:"w-full max-w-md rounded-xl border border-oc-navy-700 bg-oc-navy-800 p-8 text-center",children:[u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",className:"mx-auto h-12 w-12 text-amber-400","aria-hidden":"true",children:u.jsx("path",{d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})}),u.jsx("h1",{className:"mt-4 text-lg font-bold text-slate-100 tracking-tight",children:"Something went wrong"}),u.jsx("p",{className:"mt-2 text-sm text-slate-400",children:"An unexpected error occurred. Reloading the page usually fixes it."}),u.jsx("button",{type:"button",onClick:()=>location.reload(),className:"mt-6 inline-flex items-center justify-center rounded-lg bg-teal-600 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-teal-500 focus:outline-none focus:ring-2 focus:ring-teal-400 focus:ring-offset-2 focus:ring-offset-oc-navy-800",children:"Reload"})]})}):this.props.children}}const um=new c0({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}});Ip.createRoot(document.getElementById("root")).render(u.jsx(hf.StrictMode,{children:u.jsx(am,{children:u.jsx(d0,{client:um,children:u.jsx(om,{})})})}));
package/ui/index.html CHANGED
@@ -15,7 +15,7 @@
15
15
  href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap"
16
16
  rel="stylesheet"
17
17
  />
18
- <script type="module" crossorigin src="/assets/index-BnqKvq_1.js"></script>
18
+ <script type="module" crossorigin src="/assets/index-29QFVPeQ.js"></script>
19
19
  <link rel="stylesheet" crossorigin href="/assets/index-BfxhjG2Q.css">
20
20
  </head>
21
21
  <body>