@agentgazer/cli 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.js +786 -408
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts +2 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +469 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/agents.d.ts +2 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +70 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/events.d.ts +21 -0
- package/dist/commands/events.d.ts.map +1 -0
- package/dist/commands/events.js +247 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/overview.d.ts +2 -0
- package/dist/commands/overview.d.ts.map +1 -0
- package/dist/commands/overview.js +8 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/provider.d.ts +2 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +210 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/providers.d.ts +2 -0
- package/dist/commands/providers.d.ts.map +1 -0
- package/dist/commands/providers.js +77 -0
- package/dist/commands/providers.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +97 -60
- package/dist/config.js.map +1 -1
- package/dist/dashboard/assets/index-5AtWzXiJ.js +143 -0
- package/dist/dashboard/assets/index-B7NvhJW9.js +143 -0
- package/dist/dashboard/assets/index-B9izZ4lr.js +139 -0
- package/dist/dashboard/assets/index-BADwu2fU.js +143 -0
- package/dist/dashboard/assets/index-BBonREkg.js +143 -0
- package/dist/dashboard/assets/index-BGdw1Ss1.js +139 -0
- package/dist/dashboard/assets/index-BLIagyHw.css +1 -0
- package/dist/dashboard/assets/index-BN2gLOCd.js +143 -0
- package/dist/dashboard/assets/index-BOcemxE3.js +143 -0
- package/dist/dashboard/assets/index-BYYSUJ-G.js +143 -0
- package/dist/dashboard/assets/index-BhGhcADW.js +143 -0
- package/dist/dashboard/assets/index-Bjr8f_u_.js +143 -0
- package/dist/dashboard/assets/index-BsaxUL45.js +143 -0
- package/dist/dashboard/assets/index-C-DguelG.css +1 -0
- package/dist/dashboard/assets/index-C-QgKsob.js +143 -0
- package/dist/dashboard/assets/index-C6t4YWSY.js +143 -0
- package/dist/dashboard/assets/index-C9EQrGpe.js +143 -0
- package/dist/dashboard/assets/index-CB6k7nz0.js +143 -0
- package/dist/dashboard/assets/index-CBCLOBvd.js +139 -0
- package/dist/dashboard/assets/index-CGwUmIVh.js +139 -0
- package/dist/dashboard/assets/index-CLMyGFxA.js +145 -0
- package/dist/dashboard/assets/index-CYnfgO3k.js +143 -0
- package/dist/dashboard/assets/index-CiGGhaUw.js +143 -0
- package/dist/dashboard/assets/index-Cj3GjdoQ.js +143 -0
- package/dist/dashboard/assets/index-CxEl0O9p.js +143 -0
- package/dist/dashboard/assets/index-D2mLKlRw.css +1 -0
- package/dist/dashboard/assets/index-D5AUmtdo.js +139 -0
- package/dist/dashboard/assets/index-DACbampq.css +1 -0
- package/dist/dashboard/assets/index-DB0fFjgr.js +139 -0
- package/dist/dashboard/assets/index-DI-JqWdh.css +1 -0
- package/dist/dashboard/assets/index-DRcLEFcl.js +143 -0
- package/dist/dashboard/assets/index-DaUEJqLn.css +1 -0
- package/dist/dashboard/assets/index-Db5ik9Wo.js +143 -0
- package/dist/dashboard/assets/index-DfV-2ewH.css +1 -0
- package/dist/dashboard/assets/index-DgEq2MBB.css +1 -0
- package/dist/dashboard/assets/index-DhmVjP8v.js +143 -0
- package/dist/dashboard/assets/index-Dipd1pd3.js +143 -0
- package/dist/dashboard/assets/index-DirRSEOl.js +143 -0
- package/dist/dashboard/assets/index-Dr9wOl47.js +143 -0
- package/dist/dashboard/assets/index-ee-BCW5i.js +143 -0
- package/dist/dashboard/assets/index-g4KzDTwu.js +139 -0
- package/dist/dashboard/assets/index-odup_N3G.css +1 -0
- package/dist/dashboard/assets/index-wHHHG0bR.css +1 -0
- package/dist/dashboard/assets/index-wNn2zMSu.js +143 -0
- package/dist/dashboard/assets/index-wvU3UdVf.js +143 -0
- package/dist/dashboard/assets/index-yHwKni1U.css +1 -0
- package/dist/dashboard/assets/index-z-YzEeVY.js +143 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +1 -11
- package/dist/index.js.map +1 -1
- package/dist/secret-store.js +26 -68
- package/dist/secret-store.js.map +1 -1
- package/dist/tui/AgentTable.d.ts +15 -0
- package/dist/tui/AgentTable.d.ts.map +1 -0
- package/dist/tui/AgentTable.js +35 -0
- package/dist/tui/AgentTable.js.map +1 -0
- package/dist/tui/EventLog.d.ts +15 -0
- package/dist/tui/EventLog.d.ts.map +1 -0
- package/dist/tui/EventLog.js +15 -0
- package/dist/tui/EventLog.js.map +1 -0
- package/dist/tui/HelpOverlay.d.ts +7 -0
- package/dist/tui/HelpOverlay.d.ts.map +1 -0
- package/dist/tui/HelpOverlay.js +11 -0
- package/dist/tui/HelpOverlay.js.map +1 -0
- package/dist/tui/Overview.d.ts +7 -0
- package/dist/tui/Overview.d.ts.map +1 -0
- package/dist/tui/Overview.js +69 -0
- package/dist/tui/Overview.js.map +1 -0
- package/dist/tui/StatusBar.d.ts +11 -0
- package/dist/tui/StatusBar.d.ts.map +1 -0
- package/dist/tui/StatusBar.js +27 -0
- package/dist/tui/StatusBar.js.map +1 -0
- package/dist/utils/api.d.ts +10 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +114 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/format.d.ts +7 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +56 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/prompt.d.ts +4 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +40 -0
- package/dist/utils/prompt.js.map +1 -0
- package/package.json +13 -6
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { apiGet, handleApiError } from "../utils/api.js";
|
|
2
|
+
import { formatCurrency } from "../utils/format.js";
|
|
3
|
+
// ANSI color codes
|
|
4
|
+
const colors = {
|
|
5
|
+
reset: "\x1b[0m",
|
|
6
|
+
bold: "\x1b[1m",
|
|
7
|
+
dim: "\x1b[2m",
|
|
8
|
+
green: "\x1b[32m",
|
|
9
|
+
yellow: "\x1b[33m",
|
|
10
|
+
cyan: "\x1b[36m",
|
|
11
|
+
gray: "\x1b[90m",
|
|
12
|
+
};
|
|
13
|
+
function formatTokens(n) {
|
|
14
|
+
if (n >= 1_000_000)
|
|
15
|
+
return `${(n / 1_000_000).toFixed(1)}M`;
|
|
16
|
+
if (n >= 1_000)
|
|
17
|
+
return `${(n / 1_000).toFixed(1)}K`;
|
|
18
|
+
return String(n);
|
|
19
|
+
}
|
|
20
|
+
export async function cmdProviders(port = 18800) {
|
|
21
|
+
try {
|
|
22
|
+
const resp = await apiGet("/api/providers", port);
|
|
23
|
+
const providers = resp.providers;
|
|
24
|
+
if (!providers || providers.length === 0) {
|
|
25
|
+
console.log("\n No providers configured. Use 'agentgazer provider add' to add one.\n");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const c = colors;
|
|
29
|
+
console.log(`
|
|
30
|
+
${c.bold} AgentGazer — Providers${c.reset}
|
|
31
|
+
───────────────────────────────────────────────────────────────
|
|
32
|
+
`);
|
|
33
|
+
// Header
|
|
34
|
+
const header = ` ${"Provider".padEnd(12)}${"Status".padEnd(12)}${"API Key".padEnd(14)}${"Tokens".padStart(10)} ${"Today".padStart(8)} ${"Total".padStart(8)}`;
|
|
35
|
+
console.log(`${c.dim}${header}${c.reset}`);
|
|
36
|
+
console.log(`${c.dim} ${"─".repeat(header.length - 2)}${c.reset}`);
|
|
37
|
+
for (const p of providers) {
|
|
38
|
+
const name = p.name.padEnd(12);
|
|
39
|
+
// Status with color
|
|
40
|
+
let status;
|
|
41
|
+
if (!p.active) {
|
|
42
|
+
status = `${c.gray}inactive${c.reset}`.padEnd(12 + 9); // Account for ANSI codes
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
status = `${c.green}● active${c.reset}`.padEnd(12 + 9);
|
|
46
|
+
}
|
|
47
|
+
// Key status with icon
|
|
48
|
+
let keyStatus;
|
|
49
|
+
if (p.configured) {
|
|
50
|
+
keyStatus = `${c.green}✓ secured${c.reset}`.padEnd(14 + 9);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
keyStatus = `${c.yellow}○ not set${c.reset}`.padEnd(14 + 9);
|
|
54
|
+
}
|
|
55
|
+
const tokens = formatTokens(p.total_tokens ?? 0).padStart(10);
|
|
56
|
+
const todayCost = formatCurrency(p.today_cost ?? 0).padStart(8);
|
|
57
|
+
const totalCost = formatCurrency(p.total_cost ?? 0).padStart(8);
|
|
58
|
+
console.log(` ${c.cyan}${name}${c.reset}${status}${keyStatus}${c.dim}${tokens}${c.reset} ${todayCost} ${c.bold}${totalCost}${c.reset}`);
|
|
59
|
+
}
|
|
60
|
+
// Summary
|
|
61
|
+
const totalCostSum = providers.reduce((sum, p) => sum + (p.total_cost ?? 0), 0);
|
|
62
|
+
const todayCostSum = providers.reduce((sum, p) => sum + (p.today_cost ?? 0), 0);
|
|
63
|
+
const configuredCount = providers.filter(p => p.configured).length;
|
|
64
|
+
console.log(`${c.dim} ${"─".repeat(header.length - 2)}${c.reset}`);
|
|
65
|
+
console.log(` ${c.dim}${configuredCount}/${providers.length} configured${c.reset} ${formatCurrency(todayCostSum).padStart(8)} ${c.bold}${formatCurrency(totalCostSum).padStart(8)}${c.reset}`);
|
|
66
|
+
console.log(`
|
|
67
|
+
${c.dim}Commands:${c.reset}
|
|
68
|
+
agentgazer provider add <name> Add API key
|
|
69
|
+
agentgazer provider <name> stat View statistics
|
|
70
|
+
agentgazer provider <name> models List available models
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
handleApiError(err);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/commands/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -11,11 +11,51 @@ export interface ProviderConfig {
|
|
|
11
11
|
/** @deprecated Rate limits are now managed in the Dashboard. This field is ignored. */
|
|
12
12
|
rateLimit?: ProviderRateLimit;
|
|
13
13
|
}
|
|
14
|
+
export interface ServerConfig {
|
|
15
|
+
/** Dashboard port (default: 18800) */
|
|
16
|
+
port?: number;
|
|
17
|
+
/** LLM proxy port (default: 18900) */
|
|
18
|
+
proxyPort?: number;
|
|
19
|
+
/** Auto-open browser on start (default: true) */
|
|
20
|
+
autoOpen?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface DataConfig {
|
|
23
|
+
/** Data retention period in days (default: 30) */
|
|
24
|
+
retentionDays?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface TelegramDefaults {
|
|
27
|
+
botToken?: string;
|
|
28
|
+
chatId?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface WebhookDefaults {
|
|
31
|
+
url?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface EmailDefaults {
|
|
34
|
+
host?: string;
|
|
35
|
+
port?: number;
|
|
36
|
+
secure?: boolean;
|
|
37
|
+
user?: string;
|
|
38
|
+
pass?: string;
|
|
39
|
+
from?: string;
|
|
40
|
+
to?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface AlertDefaults {
|
|
43
|
+
telegram?: TelegramDefaults;
|
|
44
|
+
webhook?: WebhookDefaults;
|
|
45
|
+
email?: EmailDefaults;
|
|
46
|
+
}
|
|
47
|
+
export interface AlertsConfig {
|
|
48
|
+
defaults?: AlertDefaults;
|
|
49
|
+
}
|
|
14
50
|
export interface AgentGazerConfig {
|
|
15
51
|
token: string;
|
|
52
|
+
server?: ServerConfig;
|
|
53
|
+
data?: DataConfig;
|
|
54
|
+
alerts?: AlertsConfig;
|
|
16
55
|
providers?: Record<string, ProviderConfig>;
|
|
17
56
|
}
|
|
18
57
|
export declare function getConfigDir(): string;
|
|
58
|
+
export declare function getConfigPath(): string;
|
|
19
59
|
export declare function getDbPath(): string;
|
|
20
60
|
export declare function ensureConfig(): AgentGazerConfig;
|
|
21
61
|
export declare function readConfig(): AgentGazerConfig | null;
|
|
@@ -24,4 +64,10 @@ export declare function setProvider(name: string, providerConfig: ProviderConfig
|
|
|
24
64
|
export declare function removeProvider(name: string): AgentGazerConfig;
|
|
25
65
|
export declare function listProviders(): Record<string, ProviderConfig>;
|
|
26
66
|
export declare function resetToken(): AgentGazerConfig;
|
|
67
|
+
export declare function getServerPort(config: AgentGazerConfig | null): number;
|
|
68
|
+
export declare function getProxyPort(config: AgentGazerConfig | null): number;
|
|
69
|
+
export declare function getAutoOpen(config: AgentGazerConfig | null): boolean;
|
|
70
|
+
export declare function getRetentionDays(config: AgentGazerConfig | null): number;
|
|
71
|
+
export declare function getAlertDefaults(config: AgentGazerConfig | null): AlertDefaults;
|
|
72
|
+
export declare function updateAlertDefaults(defaults: AlertDefaults): AgentGazerConfig;
|
|
27
73
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C;AAMD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,64 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getConfigDir = getConfigDir;
|
|
37
|
-
exports.getDbPath = getDbPath;
|
|
38
|
-
exports.ensureConfig = ensureConfig;
|
|
39
|
-
exports.readConfig = readConfig;
|
|
40
|
-
exports.saveConfig = saveConfig;
|
|
41
|
-
exports.setProvider = setProvider;
|
|
42
|
-
exports.removeProvider = removeProvider;
|
|
43
|
-
exports.listProviders = listProviders;
|
|
44
|
-
exports.resetToken = resetToken;
|
|
45
|
-
const fs = __importStar(require("node:fs"));
|
|
46
|
-
const path = __importStar(require("node:path"));
|
|
47
|
-
const crypto = __importStar(require("node:crypto"));
|
|
48
|
-
const os = __importStar(require("node:os"));
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as crypto from "node:crypto";
|
|
4
|
+
import * as os from "node:os";
|
|
49
5
|
const CONFIG_DIR = path.join(os.homedir(), ".agentgazer");
|
|
50
6
|
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
51
7
|
const DB_FILE = path.join(CONFIG_DIR, "data.db");
|
|
52
|
-
function getConfigDir() {
|
|
8
|
+
export function getConfigDir() {
|
|
53
9
|
return CONFIG_DIR;
|
|
54
10
|
}
|
|
55
|
-
function
|
|
11
|
+
export function getConfigPath() {
|
|
12
|
+
return CONFIG_FILE;
|
|
13
|
+
}
|
|
14
|
+
export function getDbPath() {
|
|
56
15
|
return DB_FILE;
|
|
57
16
|
}
|
|
58
17
|
function generateToken() {
|
|
59
18
|
return crypto.randomBytes(32).toString("hex");
|
|
60
19
|
}
|
|
61
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Migrate old flat config to new hierarchical structure.
|
|
22
|
+
* Returns true if migration was performed.
|
|
23
|
+
*/
|
|
24
|
+
function migrateConfig(parsed) {
|
|
25
|
+
const config = { token: parsed.token };
|
|
26
|
+
let migrated = false;
|
|
27
|
+
// Check for old flat structure
|
|
28
|
+
const hasOldFormat = typeof parsed.port === "number" ||
|
|
29
|
+
typeof parsed.proxyPort === "number" ||
|
|
30
|
+
typeof parsed.autoOpen === "boolean" ||
|
|
31
|
+
typeof parsed.retentionDays === "number";
|
|
32
|
+
if (hasOldFormat) {
|
|
33
|
+
migrated = true;
|
|
34
|
+
// Migrate to new structure
|
|
35
|
+
if (typeof parsed.port === "number" || typeof parsed.proxyPort === "number" || typeof parsed.autoOpen === "boolean") {
|
|
36
|
+
config.server = {};
|
|
37
|
+
if (typeof parsed.port === "number")
|
|
38
|
+
config.server.port = parsed.port;
|
|
39
|
+
if (typeof parsed.proxyPort === "number")
|
|
40
|
+
config.server.proxyPort = parsed.proxyPort;
|
|
41
|
+
if (typeof parsed.autoOpen === "boolean")
|
|
42
|
+
config.server.autoOpen = parsed.autoOpen;
|
|
43
|
+
}
|
|
44
|
+
if (typeof parsed.retentionDays === "number") {
|
|
45
|
+
config.data = { retentionDays: parsed.retentionDays };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Already new format or fresh config
|
|
50
|
+
if (parsed.server && typeof parsed.server === "object") {
|
|
51
|
+
config.server = parsed.server;
|
|
52
|
+
}
|
|
53
|
+
if (parsed.data && typeof parsed.data === "object") {
|
|
54
|
+
config.data = parsed.data;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Alerts config (new, no migration needed)
|
|
58
|
+
if (parsed.alerts && typeof parsed.alerts === "object") {
|
|
59
|
+
config.alerts = parsed.alerts;
|
|
60
|
+
}
|
|
61
|
+
// Providers
|
|
62
|
+
if (parsed.providers && typeof parsed.providers === "object") {
|
|
63
|
+
config.providers = parsed.providers;
|
|
64
|
+
}
|
|
65
|
+
return { config, migrated };
|
|
66
|
+
}
|
|
67
|
+
export function ensureConfig() {
|
|
62
68
|
// Create directory if it doesn't exist
|
|
63
69
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
64
70
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
@@ -74,7 +80,7 @@ function ensureConfig() {
|
|
|
74
80
|
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), "utf-8");
|
|
75
81
|
return config;
|
|
76
82
|
}
|
|
77
|
-
function readConfig() {
|
|
83
|
+
export function readConfig() {
|
|
78
84
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
79
85
|
return null;
|
|
80
86
|
}
|
|
@@ -82,9 +88,10 @@ function readConfig() {
|
|
|
82
88
|
const raw = fs.readFileSync(CONFIG_FILE, "utf-8");
|
|
83
89
|
const parsed = JSON.parse(raw);
|
|
84
90
|
if (typeof parsed.token === "string" && parsed.token.length > 0) {
|
|
85
|
-
const config
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
const { config, migrated } = migrateConfig(parsed);
|
|
92
|
+
// Write back if migrated
|
|
93
|
+
if (migrated) {
|
|
94
|
+
saveConfig(config);
|
|
88
95
|
}
|
|
89
96
|
return config;
|
|
90
97
|
}
|
|
@@ -94,13 +101,13 @@ function readConfig() {
|
|
|
94
101
|
return null;
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
|
-
function saveConfig(config) {
|
|
104
|
+
export function saveConfig(config) {
|
|
98
105
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
99
106
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
100
107
|
}
|
|
101
108
|
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), "utf-8");
|
|
102
109
|
}
|
|
103
|
-
function setProvider(name, providerConfig) {
|
|
110
|
+
export function setProvider(name, providerConfig) {
|
|
104
111
|
const config = ensureConfig();
|
|
105
112
|
if (!config.providers) {
|
|
106
113
|
config.providers = {};
|
|
@@ -109,7 +116,7 @@ function setProvider(name, providerConfig) {
|
|
|
109
116
|
saveConfig(config);
|
|
110
117
|
return config;
|
|
111
118
|
}
|
|
112
|
-
function removeProvider(name) {
|
|
119
|
+
export function removeProvider(name) {
|
|
113
120
|
const config = ensureConfig();
|
|
114
121
|
if (config.providers) {
|
|
115
122
|
delete config.providers[name];
|
|
@@ -120,11 +127,11 @@ function removeProvider(name) {
|
|
|
120
127
|
saveConfig(config);
|
|
121
128
|
return config;
|
|
122
129
|
}
|
|
123
|
-
function listProviders() {
|
|
130
|
+
export function listProviders() {
|
|
124
131
|
const config = readConfig();
|
|
125
132
|
return config?.providers ?? {};
|
|
126
133
|
}
|
|
127
|
-
function resetToken() {
|
|
134
|
+
export function resetToken() {
|
|
128
135
|
const existing = readConfig();
|
|
129
136
|
const config = {
|
|
130
137
|
...existing,
|
|
@@ -133,4 +140,34 @@ function resetToken() {
|
|
|
133
140
|
saveConfig(config);
|
|
134
141
|
return config;
|
|
135
142
|
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Helper functions for accessing config values with defaults
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
export function getServerPort(config) {
|
|
147
|
+
return config?.server?.port ?? 18800;
|
|
148
|
+
}
|
|
149
|
+
export function getProxyPort(config) {
|
|
150
|
+
return config?.server?.proxyPort ?? 18900;
|
|
151
|
+
}
|
|
152
|
+
export function getAutoOpen(config) {
|
|
153
|
+
return config?.server?.autoOpen ?? true;
|
|
154
|
+
}
|
|
155
|
+
export function getRetentionDays(config) {
|
|
156
|
+
return config?.data?.retentionDays ?? 30;
|
|
157
|
+
}
|
|
158
|
+
export function getAlertDefaults(config) {
|
|
159
|
+
return config?.alerts?.defaults ?? {};
|
|
160
|
+
}
|
|
161
|
+
export function updateAlertDefaults(defaults) {
|
|
162
|
+
const config = ensureConfig();
|
|
163
|
+
if (!config.alerts) {
|
|
164
|
+
config.alerts = {};
|
|
165
|
+
}
|
|
166
|
+
config.alerts.defaults = {
|
|
167
|
+
...config.alerts.defaults,
|
|
168
|
+
...defaults,
|
|
169
|
+
};
|
|
170
|
+
saveConfig(config);
|
|
171
|
+
return config;
|
|
172
|
+
}
|
|
136
173
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|