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 +40 -15
- package/dist/index.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +19 -1
- package/dist/store.js.map +1 -1
- package/dist/uninstall.d.ts.map +1 -1
- package/dist/uninstall.js +82 -36
- package/dist/uninstall.js.map +1 -1
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +14 -1
- package/dist/updater.js.map +1 -1
- package/package.json +2 -2
- package/ui/assets/{index-BnqKvq_1.js → index-29QFVPeQ.js} +8 -8
- package/ui/index.html +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
99
|
+
log.info(`Connection ID backfilled (applies on next restart): ${data.connectionId}`);
|
|
75
100
|
}
|
|
76
101
|
}
|
|
77
102
|
else {
|
|
78
|
-
|
|
103
|
+
log.warn(`connection-info fetch returned ${res.status}`);
|
|
79
104
|
}
|
|
80
105
|
}
|
|
81
106
|
catch (err) {
|
|
82
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/uninstall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"
|
|
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["
|
|
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
|
|
59
|
-
// gone).
|
|
60
|
-
//
|
|
61
|
-
|
|
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
|
-
|
|
112
|
-
|
|
182
|
+
const removed = await ocForceRemoveWithRetry(OC_CONFIG_DIR, 15000);
|
|
183
|
+
if (removed) {
|
|
113
184
|
spinner.succeed("Config directory deleted ✓");
|
|
114
185
|
}
|
|
115
|
-
|
|
116
|
-
spinner.
|
|
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();
|
package/dist/uninstall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAErC,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,8CAA8C;AAC9C,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IACtD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,kFAAkF;AAClF,+DAA+D;AAC/D,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,SAAiB;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC;QACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,gBAAgB,CAAC;IACzE,CAAC,CAAC,qBAAqB,CAAC;AAE5B,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAErC,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,8CAA8C;AAC9C,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IACtD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,kFAAkF;AAClF,+DAA+D;AAC/D,KAAK,UAAU,sBAAsB,CAAC,MAAc,EAAE,SAAiB;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC;QACR,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GACjB,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,gBAAgB,CAAC;IACzE,CAAC,CAAC,qBAAqB,CAAC;AAE5B,8DAA8D;AAC9D,4EAA4E;AAC5E,wEAAwE;AACxE,2EAA2E;AAC3E,mCAAmC;AACnC,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,KAAK,OAAO;IAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,CAAC;IACjF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAEhE,KAAK,UAAU,sBAAsB;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC;IAExE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,sBAAsB,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,2EAA2E;QAC3E,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1E,4DAA4D;QAC5D,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,EAAK,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzE,qEAAqE;QACrE,iEAAiE;QACjE,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACpE,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,qEAAqE;gBACrE,4FAA4F,CAC7F,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,+CAA+C;QAC/C,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,YAAY,EAAE;gBACtB,YAAY;gBACZ,UAAU;gBACV,uBAAuB,IAAI,wCAAwC;aACpE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACzC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,sEAAsE;QACtE,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/E,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,sDAAsD;QACtD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACzC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YACvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,UAAU;oBACR,+DAA+D;wBAC/D,gEAAgE,SAAS,EAAE,CAAC;YAChF,CAAC;QACH,CAAC;QAED,IAAI,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;YACpC,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,QAAQ,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3E,QAAQ,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,MAAM,QAAQ,GAAG,sCAAsC,CAAC;YACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjB,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAmB;IAClD,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,2EAA2E;IAC3E,wEAAwE;IACxE,sDAAsD;IACtD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACrE,iFAAiF;QACjF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACpD,SAAS,CAAC,YAAY,EAAE;YACtB,YAAY;YACZ,UAAU;YACV,sCAAsC,UAAU,iCAAiC;SAClF,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtB,sDAAsD;QACtD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC;YACpC,CAAC,CAAC,MAAM,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;aACnD,IAAI,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,6CAA6C,UAAU,EAAE,CAAC,CAAC;;YACxF,OAAO,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IAC7G,CAAC;SAAM,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,iBAAiB,aAAa,kDAAkD;gBAChF,iEAAiE,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,aAAa,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,GAAG,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,QAAQ,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAC,CAAC;IAEhI,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB,CAAC;YAC/D,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC;YACzE,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA0B,CAAC;YACrE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA6B,CAAC;YAC3E,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,8CAA8C;YACvD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,sBAAsB,EAAE,CAAC;IAC/B,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEpC,IAAI,aAAa,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;AACxF,CAAC"}
|
package/dist/updater.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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 {
|
package/dist/updater.js.map
CHANGED
|
@@ -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,
|
|
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.
|
|
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-
|
|
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>
|