kastell 2.2.7 → 2.3.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/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +100 -0
- package/README.md +34 -6
- package/README.tr.md +6 -6
- package/dist/commands/audit.d.ts +3 -2
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +88 -47
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +14 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/domain.d.ts.map +1 -1
- package/dist/commands/domain.js +18 -1
- package/dist/commands/domain.js.map +1 -1
- package/dist/commands/evidence.d.ts.map +1 -1
- package/dist/commands/evidence.js +2 -1
- package/dist/commands/evidence.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +12 -4
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lock.d.ts.map +1 -1
- package/dist/commands/lock.js +7 -2
- package/dist/commands/lock.js.map +1 -1
- package/dist/commands/maintain.d.ts.map +1 -1
- package/dist/commands/maintain.js +13 -0
- package/dist/commands/maintain.js.map +1 -1
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +5 -4
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/snapshot.d.ts.map +1 -1
- package/dist/commands/snapshot.js +16 -0
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +30 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/core/audit/commands.d.ts +4 -1
- package/dist/core/audit/commands.d.ts.map +1 -1
- package/dist/core/audit/commands.js +7 -3
- package/dist/core/audit/commands.js.map +1 -1
- package/dist/core/audit/diff.d.ts +31 -0
- package/dist/core/audit/diff.d.ts.map +1 -1
- package/dist/core/audit/diff.js +43 -0
- package/dist/core/audit/diff.js.map +1 -1
- package/dist/core/audit/errors.d.ts +4 -0
- package/dist/core/audit/errors.d.ts.map +1 -0
- package/dist/core/audit/errors.js +4 -0
- package/dist/core/audit/errors.js.map +1 -0
- package/dist/core/audit/fix-history.d.ts.map +1 -1
- package/dist/core/audit/fix-history.js +3 -5
- package/dist/core/audit/fix-history.js.map +1 -1
- package/dist/core/audit/fix.d.ts.map +1 -1
- package/dist/core/audit/fix.js +16 -18
- package/dist/core/audit/fix.js.map +1 -1
- package/dist/core/audit/history.d.ts +8 -0
- package/dist/core/audit/history.d.ts.map +1 -1
- package/dist/core/audit/history.js +67 -5
- package/dist/core/audit/history.js.map +1 -1
- package/dist/core/audit/index.d.ts.map +1 -1
- package/dist/core/audit/index.js +24 -12
- package/dist/core/audit/index.js.map +1 -1
- package/dist/core/audit/listChecks.d.ts.map +1 -1
- package/dist/core/audit/listChecks.js +2 -1
- package/dist/core/audit/listChecks.js.map +1 -1
- package/dist/core/audit/pluginAudit.d.ts +10 -0
- package/dist/core/audit/pluginAudit.d.ts.map +1 -1
- package/dist/core/audit/pluginAudit.js +59 -23
- package/dist/core/audit/pluginAudit.js.map +1 -1
- package/dist/core/audit/pluginFix.d.ts +22 -1
- package/dist/core/audit/pluginFix.d.ts.map +1 -1
- package/dist/core/audit/pluginFix.js +27 -10
- package/dist/core/audit/pluginFix.js.map +1 -1
- package/dist/core/audit/regression.d.ts +1 -0
- package/dist/core/audit/regression.d.ts.map +1 -1
- package/dist/core/audit/regression.js +7 -5
- package/dist/core/audit/regression.js.map +1 -1
- package/dist/core/audit/snapshot.d.ts.map +1 -1
- package/dist/core/audit/snapshot.js +3 -4
- package/dist/core/audit/snapshot.js.map +1 -1
- package/dist/core/audit/types.d.ts +2 -2
- package/dist/core/audit/types.d.ts.map +1 -1
- package/dist/core/completions.d.ts.map +1 -1
- package/dist/core/completions.js +71 -47
- package/dist/core/completions.js.map +1 -1
- package/dist/core/configRepair.d.ts.map +1 -1
- package/dist/core/configRepair.js +5 -12
- package/dist/core/configRepair.js.map +1 -1
- package/dist/core/doctor.d.ts +2 -1
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +4 -5
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/evidence.d.ts.map +1 -1
- package/dist/core/evidence.js +4 -7
- package/dist/core/evidence.js.map +1 -1
- package/dist/core/fleet.d.ts +5 -2
- package/dist/core/fleet.d.ts.map +1 -1
- package/dist/core/fleet.js +34 -22
- package/dist/core/fleet.js.map +1 -1
- package/dist/core/notify.d.ts.map +1 -1
- package/dist/core/notify.js +13 -24
- package/dist/core/notify.js.map +1 -1
- package/dist/core/plugin/audit.d.ts +25 -0
- package/dist/core/plugin/audit.d.ts.map +1 -0
- package/dist/core/plugin/audit.js +43 -0
- package/dist/core/plugin/audit.js.map +1 -0
- package/dist/core/plugin.d.ts +19 -6
- package/dist/core/plugin.d.ts.map +1 -1
- package/dist/core/plugin.js +40 -19
- package/dist/core/plugin.js.map +1 -1
- package/dist/core/provision.d.ts +25 -1
- package/dist/core/provision.d.ts.map +1 -1
- package/dist/core/provision.js +127 -12
- package/dist/core/provision.js.map +1 -1
- package/dist/core/scheduleManager.d.ts.map +1 -1
- package/dist/core/scheduleManager.js +7 -8
- package/dist/core/scheduleManager.js.map +1 -1
- package/dist/core/tokens.d.ts +1 -1
- package/dist/core/tokens.d.ts.map +1 -1
- package/dist/core/tokens.js +12 -11
- package/dist/core/tokens.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +118 -96
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/startupDiagnostic.d.ts +6 -0
- package/dist/mcp/startupDiagnostic.d.ts.map +1 -0
- package/dist/mcp/startupDiagnostic.js +7 -0
- package/dist/mcp/startupDiagnostic.js.map +1 -0
- package/dist/mcp/tools/serverAudit.d.ts +2 -1
- package/dist/mcp/tools/serverAudit.d.ts.map +1 -1
- package/dist/mcp/tools/serverAudit.js.map +1 -1
- package/dist/mcp/tools/serverBackup.handlers.d.ts.map +1 -1
- package/dist/mcp/tools/serverBackup.handlers.js +1 -0
- package/dist/mcp/tools/serverBackup.handlers.js.map +1 -1
- package/dist/mcp/tools/serverCompare.d.ts +13 -14
- package/dist/mcp/tools/serverCompare.d.ts.map +1 -1
- package/dist/mcp/tools/serverCompare.js +20 -15
- package/dist/mcp/tools/serverCompare.js.map +1 -1
- package/dist/mcp/tools/serverFix.d.ts +61 -17
- package/dist/mcp/tools/serverFix.d.ts.map +1 -1
- package/dist/mcp/tools/serverFix.js +67 -78
- package/dist/mcp/tools/serverFix.js.map +1 -1
- package/dist/mcp/tools/serverGuard.d.ts.map +1 -1
- package/dist/mcp/tools/serverGuard.js +4 -1
- package/dist/mcp/tools/serverGuard.js.map +1 -1
- package/dist/mcp/tools/serverInfo.d.ts +11 -3
- package/dist/mcp/tools/serverInfo.d.ts.map +1 -1
- package/dist/mcp/tools/serverInfo.js +11 -3
- package/dist/mcp/tools/serverInfo.js.map +1 -1
- package/dist/mcp/tools/serverLogs.d.ts.map +1 -1
- package/dist/mcp/tools/serverLogs.js +2 -1
- package/dist/mcp/tools/serverLogs.js.map +1 -1
- package/dist/mcp/tools/serverMaintain.d.ts +4 -2
- package/dist/mcp/tools/serverMaintain.d.ts.map +1 -1
- package/dist/mcp/tools/serverMaintain.js +4 -2
- package/dist/mcp/tools/serverMaintain.js.map +1 -1
- package/dist/mcp/tools/serverPlugin.js +2 -2
- package/dist/mcp/tools/serverPlugin.js.map +1 -1
- package/dist/mcp/tools/serverProvision.d.ts +8 -0
- package/dist/mcp/tools/serverProvision.d.ts.map +1 -1
- package/dist/mcp/tools/serverProvision.js +31 -3
- package/dist/mcp/tools/serverProvision.js.map +1 -1
- package/dist/mcp/tools/serverSecure.actions.d.ts +21 -0
- package/dist/mcp/tools/serverSecure.actions.d.ts.map +1 -0
- package/dist/mcp/tools/serverSecure.actions.js +22 -0
- package/dist/mcp/tools/serverSecure.actions.js.map +1 -0
- package/dist/mcp/tools/serverSecure.d.ts +23 -1
- package/dist/mcp/tools/serverSecure.d.ts.map +1 -1
- package/dist/mcp/tools/serverSecure.js +16 -9
- package/dist/mcp/tools/serverSecure.js.map +1 -1
- package/dist/mcp/utils/parseMetrics.d.ts +27 -0
- package/dist/mcp/utils/parseMetrics.d.ts.map +1 -0
- package/dist/mcp/utils/parseMetrics.js +35 -0
- package/dist/mcp/utils/parseMetrics.js.map +1 -0
- package/dist/mcp/utils.d.ts +9 -0
- package/dist/mcp/utils.d.ts.map +1 -1
- package/dist/mcp/utils.js +1 -2
- package/dist/mcp/utils.js.map +1 -1
- package/dist/mcp-bundle.mjs +5862 -4939
- package/dist/plugin/loader.js +3 -2
- package/dist/plugin/loader.js.map +1 -1
- package/dist/plugin/registry.d.ts +26 -5
- package/dist/plugin/registry.d.ts.map +1 -1
- package/dist/plugin/registry.js +46 -18
- package/dist/plugin/registry.js.map +1 -1
- package/dist/plugin/sdk/constants.d.ts +2 -0
- package/dist/plugin/sdk/constants.d.ts.map +1 -1
- package/dist/plugin/sdk/constants.js +1 -0
- package/dist/plugin/sdk/constants.js.map +1 -1
- package/dist/plugin/sdk/types.d.ts +18 -4
- package/dist/plugin/sdk/types.d.ts.map +1 -1
- package/dist/plugin/sdk/types.js +1 -1
- package/dist/plugin/sdk/types.js.map +1 -1
- package/dist/plugin/validate.d.ts.map +1 -1
- package/dist/plugin/validate.js +17 -8
- package/dist/plugin/validate.js.map +1 -1
- package/dist/types/severity.d.ts +3 -0
- package/dist/types/severity.d.ts.map +1 -0
- package/dist/types/severity.js +2 -0
- package/dist/types/severity.js.map +1 -0
- package/dist/utils/atomicWrite.d.ts +23 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +44 -0
- package/dist/utils/atomicWrite.js.map +1 -0
- package/dist/utils/concurrency.d.ts +17 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +38 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +44 -33
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/encryption.d.ts.map +1 -1
- package/dist/utils/encryption.js +7 -2
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/exitCode.d.ts +2 -0
- package/dist/utils/exitCode.d.ts.map +1 -0
- package/dist/utils/exitCode.js +4 -0
- package/dist/utils/exitCode.js.map +1 -0
- package/dist/utils/fileLock.d.ts.map +1 -1
- package/dist/utils/fileLock.js +177 -30
- package/dist/utils/fileLock.js.map +1 -1
- package/dist/utils/fsMtime.d.ts +32 -0
- package/dist/utils/fsMtime.d.ts.map +1 -0
- package/dist/utils/fsMtime.js +61 -0
- package/dist/utils/fsMtime.js.map +1 -0
- package/dist/utils/fsRetry.d.ts +20 -0
- package/dist/utils/fsRetry.d.ts.map +1 -0
- package/dist/utils/fsRetry.js +56 -0
- package/dist/utils/fsRetry.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +8 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/openBrowser.d.ts.map +1 -1
- package/dist/utils/openBrowser.js +3 -2
- package/dist/utils/openBrowser.js.map +1 -1
- package/dist/utils/platform.d.ts +2 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +2 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/secureWrite.d.ts +1 -0
- package/dist/utils/secureWrite.d.ts.map +1 -1
- package/dist/utils/secureWrite.js +8 -2
- package/dist/utils/secureWrite.js.map +1 -1
- package/dist/utils/securityLogger.d.ts.map +1 -1
- package/dist/utils/securityLogger.js +16 -4
- package/dist/utils/securityLogger.js.map +1 -1
- package/dist/utils/ssh.d.ts +2 -1
- package/dist/utils/ssh.d.ts.map +1 -1
- package/dist/utils/ssh.js +14 -4
- package/dist/utils/ssh.js.map +1 -1
- package/dist/utils/version.d.ts +5 -0
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +26 -0
- package/dist/utils/version.js.map +1 -1
- package/dist/utils/webhookSecurity.d.ts +13 -0
- package/dist/utils/webhookSecurity.d.ts.map +1 -0
- package/dist/utils/webhookSecurity.js +130 -0
- package/dist/utils/webhookSecurity.js.map +1 -0
- package/kastell-plugin/.claude-plugin/plugin.json +2 -2
- package/kastell-plugin/README.md +6 -0
- package/package.json +3 -4
package/dist/core/fleet.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import pLimit from "p-limit";
|
|
2
1
|
import chalk from "chalk";
|
|
2
|
+
import { chunkConcurrent } from "../utils/concurrency.js";
|
|
3
3
|
import { getServers } from "../utils/config.js";
|
|
4
|
-
import { createSpinner } from "../utils/logger.js";
|
|
4
|
+
import { createSpinner, logger } from "../utils/logger.js";
|
|
5
|
+
import { getErrorMessage } from "../utils/errorMapper.js";
|
|
5
6
|
import { checkServerHealth } from "./health.js";
|
|
6
|
-
import {
|
|
7
|
+
import { loadLatestAudit } from "./audit/history.js";
|
|
7
8
|
import { listSnapshots, loadSnapshot } from "./audit/snapshot.js";
|
|
8
9
|
const VALID_SORT_FIELDS = ["score", "name", "provider"];
|
|
9
10
|
/**
|
|
10
11
|
* Get the most recent audit score for a server IP from history.
|
|
11
12
|
* Returns null when no history exists.
|
|
13
|
+
*
|
|
14
|
+
* Delegates to `loadLatestAudit` so callers share the mtime-cached read path
|
|
15
|
+
* (CQS-04 / simplify C1): N fleet rows = 1 file read, not N.
|
|
12
16
|
*/
|
|
13
17
|
export function getLatestAuditScore(serverIp) {
|
|
14
|
-
|
|
15
|
-
if (history.length === 0)
|
|
16
|
-
return null;
|
|
17
|
-
const sorted = [...history].sort((a, b) => b.timestamp.localeCompare(a.timestamp));
|
|
18
|
-
return sorted[0].overallScore;
|
|
18
|
+
return loadLatestAudit(serverIp)?.overallScore ?? null;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Get the lowest-scoring audit category from the latest snapshot for a server.
|
|
@@ -66,8 +66,8 @@ export function sortRows(rows, field) {
|
|
|
66
66
|
return copy.sort((a, b) => a[key].localeCompare(b[key]));
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
|
-
* Probe all registered servers in parallel (
|
|
70
|
-
*
|
|
69
|
+
* Probe all registered servers in parallel (chunkConcurrent, concurrency=5) and return fleet rows.
|
|
70
|
+
* Unreachable servers become OFFLINE rows, never thrown.
|
|
71
71
|
*/
|
|
72
72
|
export async function runFleet(options) {
|
|
73
73
|
const servers = getServers();
|
|
@@ -77,18 +77,30 @@ export async function runFleet(options) {
|
|
|
77
77
|
}
|
|
78
78
|
const spinner = createSpinner(`Probing ${servers.length} server(s)...`);
|
|
79
79
|
spinner.start();
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
const safeProbe = async (server) => {
|
|
81
|
+
try {
|
|
82
|
+
const health = await checkServerHealth(server);
|
|
83
|
+
const auditScore = getLatestAuditScore(server.ip);
|
|
84
|
+
const weakest = options.categories ? await getWeakestCategory(server.ip) : null;
|
|
85
|
+
return { health, auditScore, weakest, errorReason: null };
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
const reason = getErrorMessage(err);
|
|
89
|
+
logger.error("safeProbe failed", { server: server.name, ip: server.ip, error: reason });
|
|
90
|
+
const unreachableHealth = { server, status: "unreachable", responseTime: 0 };
|
|
91
|
+
return {
|
|
92
|
+
health: unreachableHealth,
|
|
93
|
+
auditScore: null,
|
|
94
|
+
weakest: null,
|
|
95
|
+
errorReason: reason,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const rawResults = await chunkConcurrent(servers, 5, safeProbe);
|
|
88
100
|
spinner.stop();
|
|
89
|
-
const rows =
|
|
101
|
+
const rows = rawResults.map((result, i) => {
|
|
90
102
|
const server = servers[i];
|
|
91
|
-
if (result.status === "
|
|
103
|
+
if (!result || result.health.status === "unreachable") {
|
|
92
104
|
return {
|
|
93
105
|
name: server.name,
|
|
94
106
|
ip: server.ip,
|
|
@@ -96,10 +108,10 @@ export async function runFleet(options) {
|
|
|
96
108
|
status: "OFFLINE",
|
|
97
109
|
auditScore: null,
|
|
98
110
|
responseTime: null,
|
|
99
|
-
errorReason:
|
|
111
|
+
errorReason: result?.errorReason ?? null,
|
|
100
112
|
};
|
|
101
113
|
}
|
|
102
|
-
const { health, auditScore, weakest } = result
|
|
114
|
+
const { health, auditScore, weakest } = result;
|
|
103
115
|
let status;
|
|
104
116
|
if (health.status === "healthy") {
|
|
105
117
|
status = "ONLINE";
|
package/dist/core/fleet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/core/fleet.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/core/fleet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAI7B,CAAC;AAMH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,gBAAgB,IAAI,YAAY,CAE/C;AAiBD,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAM/C;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AAED,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AAID,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CA2B1B;AAID,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAczD;AAmBD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCpE"}
|
package/dist/core/notify.js
CHANGED
|
@@ -5,34 +5,15 @@ import axios from "axios";
|
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import inquirer from "inquirer";
|
|
7
7
|
import { KASTELL_DIR } from "../utils/paths.js";
|
|
8
|
-
import { ValidationError } from "../utils/errors.js";
|
|
9
8
|
import { createSpinner } from "../utils/logger.js";
|
|
10
9
|
import { loadNotifyChannels, saveNotifyChannel, removeNotifyChannel } from "./notifyStore.js";
|
|
11
10
|
import { secureWriteFileSync, secureMkdirSync } from "../utils/secureWrite.js";
|
|
12
11
|
import { extractReason } from "../utils/errors.js";
|
|
12
|
+
import { assertSafeWebhookUrl, createSafeWebhookAgent, } from "../utils/webhookSecurity.js";
|
|
13
13
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
14
14
|
const COOLDOWN_FILE = join(KASTELL_DIR, "notify-cooldown.json");
|
|
15
15
|
const COOLDOWN_MS = 30 * 60 * 1000; // 30 minutes
|
|
16
16
|
const NOTIFY_TIMEOUT_MS = 10_000;
|
|
17
|
-
// ─── SSRF Protection ─────────────────────────────────────────────────────────
|
|
18
|
-
const PRIVATE_IP_PATTERNS = [
|
|
19
|
-
/^127\./,
|
|
20
|
-
/^10\./,
|
|
21
|
-
/^192\.168\./,
|
|
22
|
-
/^172\.(1[6-9]|2\d|3[01])\./,
|
|
23
|
-
/^169\.254\./,
|
|
24
|
-
/^0\./,
|
|
25
|
-
/^localhost$/i,
|
|
26
|
-
];
|
|
27
|
-
function assertSafeWebhookUrl(url) {
|
|
28
|
-
const parsed = new URL(url);
|
|
29
|
-
if (PRIVATE_IP_PATTERNS.some((p) => p.test(parsed.hostname))) {
|
|
30
|
-
throw new ValidationError("Webhook URL points to a private/reserved address", { hint: "Use a public webhook URL" });
|
|
31
|
-
}
|
|
32
|
-
if (parsed.protocol !== "https:") {
|
|
33
|
-
throw new ValidationError("Webhook URL must use HTTPS", { hint: "Webhook URL must start with https://" });
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
17
|
// ─── Schemas ──────────────────────────────────────────────────────────────────
|
|
37
18
|
const TelegramChannelSchema = z.object({
|
|
38
19
|
botToken: z.string().regex(/^\d+:[A-Za-z0-9_-]+$/, "Invalid Telegram bot token format"),
|
|
@@ -52,9 +33,9 @@ export function loadNotifyConfig() {
|
|
|
52
33
|
return loadNotifyChannels();
|
|
53
34
|
}
|
|
54
35
|
// ─── Channel Dispatchers ──────────────────────────────────────────────────────
|
|
55
|
-
async function sendHttp(url, body) {
|
|
36
|
+
async function sendHttp(url, body, options = {}) {
|
|
56
37
|
try {
|
|
57
|
-
await axios.post(url, body, { timeout: NOTIFY_TIMEOUT_MS });
|
|
38
|
+
await axios.post(url, body, { timeout: NOTIFY_TIMEOUT_MS, ...options });
|
|
58
39
|
return { success: true };
|
|
59
40
|
}
|
|
60
41
|
catch (err) {
|
|
@@ -70,11 +51,19 @@ export async function sendTelegram(botToken, chatId, text) {
|
|
|
70
51
|
}
|
|
71
52
|
export async function sendDiscord(webhookUrl, content) {
|
|
72
53
|
assertSafeWebhookUrl(webhookUrl);
|
|
73
|
-
return sendHttp(webhookUrl, { content }
|
|
54
|
+
return sendHttp(webhookUrl, { content }, {
|
|
55
|
+
maxRedirects: 0,
|
|
56
|
+
proxy: false,
|
|
57
|
+
httpsAgent: createSafeWebhookAgent(),
|
|
58
|
+
});
|
|
74
59
|
}
|
|
75
60
|
export async function sendSlack(webhookUrl, text) {
|
|
76
61
|
assertSafeWebhookUrl(webhookUrl);
|
|
77
|
-
return sendHttp(webhookUrl, { text }
|
|
62
|
+
return sendHttp(webhookUrl, { text }, {
|
|
63
|
+
maxRedirects: 0,
|
|
64
|
+
proxy: false,
|
|
65
|
+
httpsAgent: createSafeWebhookAgent(),
|
|
66
|
+
});
|
|
78
67
|
}
|
|
79
68
|
// ─── Fan-out ──────────────────────────────────────────────────────────────────
|
|
80
69
|
export async function dispatchNotification(message, config) {
|
package/dist/core/notify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/core/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PluginCheck } from "../../plugin/sdk/types.js";
|
|
2
|
+
export interface CheckResult {
|
|
3
|
+
checkId: string;
|
|
4
|
+
status: "pass" | "error" | "timeout";
|
|
5
|
+
output?: string;
|
|
6
|
+
reason?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ExecutePluginChecksResult {
|
|
9
|
+
results: CheckResult[];
|
|
10
|
+
aborted?: boolean;
|
|
11
|
+
completed: number;
|
|
12
|
+
pending: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ExecutePluginChecksContext {
|
|
15
|
+
ssh: (cmd: string, opts?: {
|
|
16
|
+
timeoutMs?: number;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}) => Promise<{
|
|
19
|
+
stdout: string;
|
|
20
|
+
stderr: string;
|
|
21
|
+
code: number;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export declare function executePluginChecks(checks: PluginCheck[], ctx: ExecutePluginChecksContext): Promise<ExecutePluginChecksResult>;
|
|
25
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtI;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EAAE,EACrB,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAgCpC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { chunkConcurrent } from "../../utils/concurrency.js";
|
|
2
|
+
// Lazy lookup — module-load `parseInt(process.env, …)` traps tests that
|
|
3
|
+
// mutate PLUGIN_AUDIT_PARALLELISM after import. Evaluated per-call so
|
|
4
|
+
// `jest.isolateModules` is no longer required for env variation.
|
|
5
|
+
function getDefaultParallelism() {
|
|
6
|
+
return parseInt(process.env.PLUGIN_AUDIT_PARALLELISM ?? "3", 10);
|
|
7
|
+
}
|
|
8
|
+
// Aggregate ceiling — bounds worst-case latency for N slow checks (LESSONS.md
|
|
9
|
+
// "Plugin Parallel Execution" flags this as mandatory: N × per-check = stall risk).
|
|
10
|
+
const AGGREGATE_TIMEOUT_MS = 120_000;
|
|
11
|
+
export async function executePluginChecks(checks, ctx) {
|
|
12
|
+
const hasMutatingCheck = checks.some((check) => check.checkCommand.kind !== "read");
|
|
13
|
+
const concurrency = hasMutatingCheck ? 1 : getDefaultParallelism();
|
|
14
|
+
const controller = new AbortController();
|
|
15
|
+
const aggregateTimer = setTimeout(() => controller.abort(), AGGREGATE_TIMEOUT_MS);
|
|
16
|
+
const runCheck = async (check) => {
|
|
17
|
+
if (controller.signal.aborted) {
|
|
18
|
+
return { checkId: check.id, status: "timeout" };
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const ssh = await ctx.ssh(check.checkCommand.cmd, { timeoutMs: 15000, signal: controller.signal });
|
|
22
|
+
if (ssh.code !== 0) {
|
|
23
|
+
return { checkId: check.id, status: "error", reason: ssh.stderr || `Exit code ${ssh.code}` };
|
|
24
|
+
}
|
|
25
|
+
return { checkId: check.id, status: "pass", output: ssh.stdout };
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (controller.signal.aborted) {
|
|
29
|
+
return { checkId: check.id, status: "timeout" };
|
|
30
|
+
}
|
|
31
|
+
return { checkId: check.id, status: "error", reason: err instanceof Error ? err.message : String(err) };
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
try {
|
|
35
|
+
const results = await chunkConcurrent(checks, concurrency, runCheck);
|
|
36
|
+
const completed = results.filter((r) => r.status !== "timeout").length;
|
|
37
|
+
return { results, completed, pending: checks.length - completed };
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
clearTimeout(aggregateTimer);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/core/plugin/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAiB7D,wEAAwE;AACxE,sEAAsE;AACtE,iEAAiE;AACjE,SAAS,qBAAqB;IAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,oFAAoF;AACpF,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAMrC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,GAA+B;IAE/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAEnE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAElF,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAkB,EAAwB,EAAE;QAClE,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACnG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/F,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1G,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;IACpE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
package/dist/core/plugin.d.ts
CHANGED
|
@@ -5,20 +5,32 @@ export interface PluginOperationResult {
|
|
|
5
5
|
}
|
|
6
6
|
export declare function installPlugin(name: string, version?: string): Promise<PluginOperationResult>;
|
|
7
7
|
export declare function removePlugin(name: string): Promise<PluginOperationResult>;
|
|
8
|
-
|
|
8
|
+
interface PluginListEntryBase {
|
|
9
9
|
name: string;
|
|
10
10
|
version: string;
|
|
11
11
|
prefix: string;
|
|
12
|
+
}
|
|
13
|
+
export type PluginListEntry = (PluginListEntryBase & {
|
|
14
|
+
status: "loaded";
|
|
12
15
|
checks: number;
|
|
13
|
-
|
|
14
|
-
commands?: {
|
|
16
|
+
commands: {
|
|
15
17
|
name: string;
|
|
16
18
|
}[];
|
|
17
|
-
mcpTools
|
|
19
|
+
mcpTools: {
|
|
18
20
|
name: string;
|
|
19
21
|
}[];
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
}) | (PluginListEntryBase & {
|
|
23
|
+
status: "failed";
|
|
24
|
+
checks: 0;
|
|
25
|
+
commands: [];
|
|
26
|
+
mcpTools: [];
|
|
27
|
+
reason: string;
|
|
28
|
+
}) | (PluginListEntryBase & {
|
|
29
|
+
status: "disabled";
|
|
30
|
+
checks: 0;
|
|
31
|
+
commands: [];
|
|
32
|
+
mcpTools: [];
|
|
33
|
+
});
|
|
22
34
|
export declare function listPlugins(): PluginListEntry[];
|
|
23
35
|
export interface PluginValidationResult {
|
|
24
36
|
name: string;
|
|
@@ -26,4 +38,5 @@ export interface PluginValidationResult {
|
|
|
26
38
|
reason?: string;
|
|
27
39
|
}
|
|
28
40
|
export declare function validatePlugins(name?: string): PluginValidationResult[];
|
|
41
|
+
export {};
|
|
29
42
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwBD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CA6BhC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4B/E;AAOD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GACvB,CAAC,mBAAmB,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7B,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9B,CAAC,GACF,CAAC,mBAAmB,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,EAAE,CAAC;IACb,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,GACF,CAAC,mBAAmB,GAAG;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,EAAE,CAAC;IACb,QAAQ,EAAE,EAAE,CAAC;CACd,CAAC,CAAC;AAiCP,wBAAgB,WAAW,IAAI,eAAe,EAAE,CAE/C;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAYvE"}
|
package/dist/core/plugin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "child_process";
|
|
2
|
+
import { PLUGIN_STATUS_LOADED } from "../plugin/registry.js";
|
|
2
3
|
import { existsSync } from "fs";
|
|
3
4
|
import { join } from "path";
|
|
4
5
|
import { getPluginRegistry, mapRegistryPlugins, deletePlugin as deletePluginFromRegistry, savePluginCache } from "../plugin/registry.js";
|
|
@@ -71,21 +72,49 @@ export async function removePlugin(name) {
|
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
deletePluginFromRegistry(name);
|
|
74
|
-
const manifests = mapRegistryPlugins((_, entry) => entry.status ===
|
|
75
|
+
const manifests = mapRegistryPlugins((_, entry) => entry.status === PLUGIN_STATUS_LOADED ? entry.manifest : null).filter((m) => m !== null);
|
|
75
76
|
savePluginCache(manifests);
|
|
76
77
|
return { success: true, name };
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
// Discriminator-narrowing helpers — P139 simplify C3/A12: replace
|
|
80
|
+
// `entry.status === PLUGIN_STATUS_LOADED ? ... : ...` ternaries with structural narrowing.
|
|
81
|
+
function toListEntry(_, entry) {
|
|
82
|
+
const base = {
|
|
80
83
|
name: entry.manifest.name,
|
|
81
84
|
version: entry.manifest.version,
|
|
82
85
|
prefix: entry.manifest.checkPrefix,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
};
|
|
87
|
+
if (entry.status === PLUGIN_STATUS_LOADED) {
|
|
88
|
+
return {
|
|
89
|
+
...base,
|
|
90
|
+
status: "loaded",
|
|
91
|
+
checks: entry.checks.length,
|
|
92
|
+
commands: entry.commands ?? [],
|
|
93
|
+
mcpTools: entry.mcpTools ?? [],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (entry.status === "failed") {
|
|
97
|
+
return {
|
|
98
|
+
...base,
|
|
99
|
+
status: "failed",
|
|
100
|
+
checks: 0,
|
|
101
|
+
commands: [],
|
|
102
|
+
mcpTools: [],
|
|
103
|
+
reason: entry.reason,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// disabled
|
|
107
|
+
return { ...base, status: "disabled", checks: 0, commands: [], mcpTools: [] };
|
|
108
|
+
}
|
|
109
|
+
export function listPlugins() {
|
|
110
|
+
return mapRegistryPlugins(toListEntry);
|
|
111
|
+
}
|
|
112
|
+
function toValidationResult(name, entry) {
|
|
113
|
+
return {
|
|
114
|
+
name: entry.manifest.name,
|
|
115
|
+
valid: entry.status === PLUGIN_STATUS_LOADED,
|
|
116
|
+
...(entry.status === "failed" ? { reason: entry.reason } : {}),
|
|
117
|
+
};
|
|
89
118
|
}
|
|
90
119
|
export function validatePlugins(name) {
|
|
91
120
|
const registry = getPluginRegistry();
|
|
@@ -94,16 +123,8 @@ export function validatePlugins(name) {
|
|
|
94
123
|
if (!entry) {
|
|
95
124
|
return [{ name, valid: false, reason: "Plugin not found in registry" }];
|
|
96
125
|
}
|
|
97
|
-
return [
|
|
98
|
-
name: entry.manifest.name,
|
|
99
|
-
valid: entry.status === "loaded",
|
|
100
|
-
...(entry.reason ? { reason: entry.reason } : {}),
|
|
101
|
-
}];
|
|
126
|
+
return [toValidationResult(name, entry)];
|
|
102
127
|
}
|
|
103
|
-
return mapRegistryPlugins(
|
|
104
|
-
name: entry.manifest.name,
|
|
105
|
-
valid: entry.status === "loaded",
|
|
106
|
-
...(entry.reason ? { reason: entry.reason } : {}),
|
|
107
|
-
}));
|
|
128
|
+
return mapRegistryPlugins(toValidationResult);
|
|
108
129
|
}
|
|
109
130
|
//# sourceMappingURL=plugin.js.map
|
package/dist/core/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,IAAI,wBAAwB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/core/provision.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { KastellError } from "../utils/errors.js";
|
|
1
2
|
import type { CloudProvider } from "../providers/base.js";
|
|
2
3
|
import type { ServerRecord } from "../types/index.js";
|
|
3
4
|
export interface ProvisionConfig {
|
|
@@ -9,12 +10,35 @@ export interface ProvisionConfig {
|
|
|
9
10
|
/** @deprecated Use platform field. Accepts "coolify", "dokploy", or "bare" for backward compat. */
|
|
10
11
|
mode?: string;
|
|
11
12
|
}
|
|
13
|
+
export type ReadinessPolicy = "wait" | "defer";
|
|
14
|
+
export interface ProvisionOptions {
|
|
15
|
+
readinessPolicy?: ReadinessPolicy;
|
|
16
|
+
}
|
|
17
|
+
export interface ProvisionReadiness {
|
|
18
|
+
status: "pending" | "ready" | "unknown";
|
|
19
|
+
message?: string;
|
|
20
|
+
}
|
|
12
21
|
export interface ProvisionResult {
|
|
13
22
|
success: boolean;
|
|
14
23
|
server?: ServerRecord;
|
|
24
|
+
readiness?: ProvisionReadiness;
|
|
15
25
|
error?: string;
|
|
16
26
|
hint?: string;
|
|
17
27
|
}
|
|
28
|
+
export declare class ProvisionPersistenceError extends KastellError {
|
|
29
|
+
readonly provider: string;
|
|
30
|
+
readonly serverId: string;
|
|
31
|
+
readonly serverName: string;
|
|
32
|
+
readonly ip: string;
|
|
33
|
+
readonly warning: string;
|
|
34
|
+
readonly recovery: string[];
|
|
35
|
+
constructor(details: {
|
|
36
|
+
provider: string;
|
|
37
|
+
serverId: string;
|
|
38
|
+
serverName: string;
|
|
39
|
+
ip: string;
|
|
40
|
+
}, cause: unknown);
|
|
41
|
+
}
|
|
18
42
|
export declare function uploadSshKeyBestEffort(provider: CloudProvider): Promise<string[]>;
|
|
19
|
-
export declare function provisionServer(config: ProvisionConfig): Promise<ProvisionResult>;
|
|
43
|
+
export declare function provisionServer(config: ProvisionConfig, options?: ProvisionOptions): Promise<ProvisionResult>;
|
|
20
44
|
//# sourceMappingURL=provision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/core/provision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/core/provision.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,mBAAmB,CAAC;AAQhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAG1B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;KACZ,EACD,KAAK,EAAE,OAAO;CAkBjB;AA6CD,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBvF;AAID,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAwP1B"}
|