@itznexus/itznexus-cli 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.js +63 -10
- package/dist/lib/config.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { Command } from "commander";
|
|
7
7
|
import { checkForUpdates } from "./lib/auto-update.js";
|
|
8
|
+
import { setActiveProfile } from "./lib/config.js";
|
|
8
9
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
10
|
const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, "..", "package.json"), "utf-8"));
|
|
10
11
|
// API-mapped commands (1-1 with API domains)
|
|
@@ -92,6 +93,7 @@ COMMON FLAGS
|
|
|
92
93
|
--help Show help for command/domain
|
|
93
94
|
--version Show itznexus version
|
|
94
95
|
--json Output as JSON
|
|
96
|
+
--profile <name> Config profile to use (or ITZNEXUS_PROFILE)
|
|
95
97
|
|
|
96
98
|
EXAMPLES
|
|
97
99
|
$ itznexus health
|
|
@@ -141,5 +143,24 @@ program.addCommand(upworkCommand);
|
|
|
141
143
|
program.addCommand(healthCommand);
|
|
142
144
|
program.addCommand(authCommand);
|
|
143
145
|
program.addCommand(schemaCommand);
|
|
144
|
-
|
|
146
|
+
// Resolve `--profile` before Commander parses, so it works in any position
|
|
147
|
+
// (e.g. `itznexus lead list --profile staging`) and is set before any
|
|
148
|
+
// loadConfig() runs. The flag is stripped from argv so Commander never sees it.
|
|
149
|
+
const rawArgs = process.argv.slice(2);
|
|
150
|
+
const parsedArgs = [];
|
|
151
|
+
let profile;
|
|
152
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
153
|
+
const arg = rawArgs[i];
|
|
154
|
+
if (arg === "--profile") {
|
|
155
|
+
profile = rawArgs[++i];
|
|
156
|
+
}
|
|
157
|
+
else if (arg.startsWith("--profile=")) {
|
|
158
|
+
profile = arg.slice("--profile=".length);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
parsedArgs.push(arg);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
setActiveProfile(profile);
|
|
165
|
+
program.parse(parsedArgs, { from: "user" });
|
|
145
166
|
//# 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,CAAC;AACvB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ type Config = {
|
|
|
2
2
|
apiUrl: string;
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
};
|
|
5
|
+
/** Set by the CLI entrypoint from the `--profile` flag (overrides env). */
|
|
6
|
+
export declare function setActiveProfile(name?: string): void;
|
|
7
|
+
export declare function getActiveProfile(): string;
|
|
5
8
|
export declare function loadConfig(): Config;
|
|
6
9
|
export declare function saveConfig(config: Partial<Config>): void;
|
|
7
10
|
export {};
|
package/dist/lib/config.js
CHANGED
|
@@ -3,26 +3,79 @@ import path from "node:path";
|
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
const CONFIG_DIR = path.join(os.homedir(), ".itznexus");
|
|
5
5
|
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
6
|
+
const DEFAULT_PROFILE = "default";
|
|
7
|
+
let activeProfile = process.env.ITZNEXUS_PROFILE?.trim() || DEFAULT_PROFILE;
|
|
8
|
+
/** Set by the CLI entrypoint from the `--profile` flag (overrides env). */
|
|
9
|
+
export function setActiveProfile(name) {
|
|
10
|
+
const trimmed = name?.trim();
|
|
11
|
+
if (trimmed) {
|
|
12
|
+
activeProfile = trimmed;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function getActiveProfile() {
|
|
16
|
+
return activeProfile;
|
|
17
|
+
}
|
|
6
18
|
function defaultConfig() {
|
|
7
19
|
return {
|
|
8
20
|
apiUrl: process.env.ITZNEXUS_API_URL ?? "https://api.itznex.us",
|
|
9
21
|
};
|
|
10
22
|
}
|
|
11
|
-
|
|
12
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Legacy single-profile format: `{ apiUrl, apiKey }` written at the top level.
|
|
25
|
+
* Distinguished from the multi-profile format (where values are objects) by a
|
|
26
|
+
* non-object `apiUrl`/`apiKey` at the root.
|
|
27
|
+
*/
|
|
28
|
+
function isLegacyFlat(raw) {
|
|
29
|
+
return ((typeof raw.apiUrl === "string" || typeof raw.apiKey === "string") &&
|
|
30
|
+
typeof raw.default !== "object");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read the full multi-profile store, migrating the legacy flat format to
|
|
34
|
+
* `{ default: { ... } }` and persisting the fix when needed.
|
|
35
|
+
*/
|
|
36
|
+
function readStore() {
|
|
13
37
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
14
|
-
return
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
const parsed = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
41
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
42
|
+
return {};
|
|
15
43
|
}
|
|
16
|
-
const raw =
|
|
17
|
-
|
|
18
|
-
|
|
44
|
+
const raw = parsed;
|
|
45
|
+
if (isLegacyFlat(raw)) {
|
|
46
|
+
const migrated = { [DEFAULT_PROFILE]: raw };
|
|
47
|
+
writeStore(migrated);
|
|
48
|
+
return migrated;
|
|
49
|
+
}
|
|
50
|
+
return raw;
|
|
19
51
|
}
|
|
20
|
-
|
|
21
|
-
const current = loadConfig();
|
|
22
|
-
const merged = { ...current, ...config };
|
|
52
|
+
function writeStore(store) {
|
|
23
53
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
24
54
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
25
55
|
}
|
|
26
|
-
fs.writeFileSync(CONFIG_FILE, JSON.stringify(
|
|
56
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(store, null, 2) + "\n");
|
|
57
|
+
}
|
|
58
|
+
export function loadConfig() {
|
|
59
|
+
const store = readStore();
|
|
60
|
+
const merged = { ...defaultConfig(), ...store[activeProfile] };
|
|
61
|
+
// Explicitly-set env vars win over the stored profile. The worker
|
|
62
|
+
// injects a per-profile identity this way:
|
|
63
|
+
// ITZNEXUS_API_KEY=… ITZNEXUS_API_URL=… itznexus claude ingest …
|
|
64
|
+
if (process.env.ITZNEXUS_API_URL) {
|
|
65
|
+
merged.apiUrl = process.env.ITZNEXUS_API_URL;
|
|
66
|
+
}
|
|
67
|
+
if (process.env.ITZNEXUS_API_KEY) {
|
|
68
|
+
merged.apiKey = process.env.ITZNEXUS_API_KEY;
|
|
69
|
+
}
|
|
70
|
+
return merged;
|
|
71
|
+
}
|
|
72
|
+
export function saveConfig(config) {
|
|
73
|
+
const store = readStore();
|
|
74
|
+
store[activeProfile] = {
|
|
75
|
+
...defaultConfig(),
|
|
76
|
+
...store[activeProfile],
|
|
77
|
+
...config,
|
|
78
|
+
};
|
|
79
|
+
writeStore(store);
|
|
27
80
|
}
|
|
28
81
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|