@singbox-iac/cli 0.1.15 → 0.1.17
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 +70 -24
- package/dist/cli/commands/author.d.ts +2 -0
- package/dist/cli/commands/author.js +49 -19
- package/dist/cli/commands/author.js.map +1 -1
- package/dist/cli/commands/build.js +25 -13
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/diagnose.d.ts +2 -0
- package/dist/cli/commands/diagnose.js +120 -0
- package/dist/cli/commands/diagnose.js.map +1 -0
- package/dist/cli/commands/doctor.js +21 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/restart.js +42 -2
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/rulesets.d.ts +2 -0
- package/dist/cli/commands/rulesets.js +125 -0
- package/dist/cli/commands/rulesets.js.map +1 -0
- package/dist/cli/commands/runtime-watchdog.d.ts +2 -0
- package/dist/cli/commands/runtime-watchdog.js +45 -0
- package/dist/cli/commands/runtime-watchdog.js.map +1 -0
- package/dist/cli/commands/setup.js +190 -20
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.js +29 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +135 -28
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.js +19 -1
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/use.js +3 -1
- package/dist/cli/commands/use.js.map +1 -1
- package/dist/cli/index.js +12 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/config/schema.d.ts +49 -6
- package/dist/config/schema.js +17 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/modules/authoring/index.js +25 -8
- package/dist/modules/authoring/index.js.map +1 -1
- package/dist/modules/build/index.d.ts +4 -1
- package/dist/modules/build/index.js +17 -4
- package/dist/modules/build/index.js.map +1 -1
- package/dist/modules/bundle-registry/index.d.ts +46 -0
- package/dist/modules/bundle-registry/index.js +650 -0
- package/dist/modules/bundle-registry/index.js.map +1 -0
- package/dist/modules/desktop-runtime/index.d.ts +11 -0
- package/dist/modules/desktop-runtime/index.js +41 -0
- package/dist/modules/desktop-runtime/index.js.map +1 -1
- package/dist/modules/diagnostics/index.d.ts +28 -0
- package/dist/modules/diagnostics/index.js +288 -0
- package/dist/modules/diagnostics/index.js.map +1 -0
- package/dist/modules/layered-authoring/index.d.ts +45 -0
- package/dist/modules/layered-authoring/index.js +549 -0
- package/dist/modules/layered-authoring/index.js.map +1 -0
- package/dist/modules/natural-language/index.d.ts +6 -3
- package/dist/modules/natural-language/index.js +74 -69
- package/dist/modules/natural-language/index.js.map +1 -1
- package/dist/modules/proxifier/index.d.ts +1 -14
- package/dist/modules/proxifier/index.js +10 -139
- package/dist/modules/proxifier/index.js.map +1 -1
- package/dist/modules/rule-set-catalog/index.d.ts +25 -0
- package/dist/modules/rule-set-catalog/index.js +135 -0
- package/dist/modules/rule-set-catalog/index.js.map +1 -0
- package/dist/modules/runtime-watchdog/index.d.ts +73 -0
- package/dist/modules/runtime-watchdog/index.js +532 -0
- package/dist/modules/runtime-watchdog/index.js.map +1 -0
- package/dist/modules/status/index.d.ts +48 -0
- package/dist/modules/status/index.js +254 -23
- package/dist/modules/status/index.js.map +1 -1
- package/dist/modules/system-proxy/index.d.ts +31 -0
- package/dist/modules/system-proxy/index.js +164 -0
- package/dist/modules/system-proxy/index.js.map +1 -0
- package/docs/agent-context.md +131 -0
- package/docs/natural-language-authoring.md +106 -1
- package/docs/proxifier-onboarding.md +15 -4
- package/docs/rule-templates.md +2 -0
- package/docs/runtime-modes.md +84 -0
- package/docs/runtime-on-macos.md +53 -4
- package/examples/builder.config.yaml +60 -0
- package/package.json +3 -2
- package/dist/cli/commands/quickstart.d.ts +0 -2
- package/dist/cli/commands/quickstart.js +0 -54
- package/dist/cli/commands/quickstart.js.map +0 -1
|
@@ -33,7 +33,17 @@ export interface RuntimeAgentRemoveInput {
|
|
|
33
33
|
export interface RuntimeAgentRestartInput {
|
|
34
34
|
readonly label?: string;
|
|
35
35
|
}
|
|
36
|
+
export interface RuntimeAgentRecoverInput {
|
|
37
|
+
readonly label?: string;
|
|
38
|
+
readonly launchAgentsDir?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface RuntimeAgentRecoverResult {
|
|
41
|
+
readonly label: string;
|
|
42
|
+
readonly plistPath: string;
|
|
43
|
+
readonly method: "kickstart" | "bootstrap";
|
|
44
|
+
}
|
|
36
45
|
export declare const defaultRuntimeLaunchAgentLabel = "org.singbox-iac.runtime";
|
|
46
|
+
export declare const defaultRuntimeWatchdogLaunchAgentLabel = "org.singbox-iac.runtime.watchdog";
|
|
37
47
|
export declare function resolveDesktopRuntimeProfile(config: BuilderConfig): DesktopRuntimeProfile;
|
|
38
48
|
export declare function updateBuilderDesktopRuntime(input: {
|
|
39
49
|
readonly configPath: string;
|
|
@@ -42,6 +52,7 @@ export declare function updateBuilderDesktopRuntime(input: {
|
|
|
42
52
|
export declare function installDesktopRuntimeAgent(input: RuntimeAgentInstallInput): Promise<RuntimeAgentInstallResult>;
|
|
43
53
|
export declare function removeDesktopRuntimeAgent(input: RuntimeAgentRemoveInput): Promise<string>;
|
|
44
54
|
export declare function restartDesktopRuntimeAgent(input: RuntimeAgentRestartInput): Promise<string>;
|
|
55
|
+
export declare function recoverDesktopRuntimeAgent(input: RuntimeAgentRecoverInput): Promise<RuntimeAgentRecoverResult>;
|
|
45
56
|
export declare function renderRuntimeLaunchAgentPlist(input: {
|
|
46
57
|
readonly label: string;
|
|
47
58
|
readonly workingDirectory: string;
|
|
@@ -5,6 +5,7 @@ import { homedir } from "node:os";
|
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import YAML from "yaml";
|
|
7
7
|
export const defaultRuntimeLaunchAgentLabel = "org.singbox-iac.runtime";
|
|
8
|
+
export const defaultRuntimeWatchdogLaunchAgentLabel = "org.singbox-iac.runtime.watchdog";
|
|
8
9
|
export function resolveDesktopRuntimeProfile(config) {
|
|
9
10
|
if (config.runtime.desktop.profile === "tun") {
|
|
10
11
|
return {
|
|
@@ -39,6 +40,13 @@ export async function updateBuilderDesktopRuntime(input) {
|
|
|
39
40
|
"fdfe:dcba:9876::1/126",
|
|
40
41
|
],
|
|
41
42
|
},
|
|
43
|
+
watchdog: {
|
|
44
|
+
...(parsed.runtime?.desktop?.watchdog ?? {}),
|
|
45
|
+
enabled: parsed.runtime?.desktop?.watchdog?.enabled ?? true,
|
|
46
|
+
intervalSeconds: parsed.runtime?.desktop?.watchdog?.intervalSeconds ?? 60,
|
|
47
|
+
launchAgentLabel: parsed.runtime?.desktop?.watchdog?.launchAgentLabel ??
|
|
48
|
+
defaultRuntimeWatchdogLaunchAgentLabel,
|
|
49
|
+
},
|
|
42
50
|
},
|
|
43
51
|
};
|
|
44
52
|
await writeFile(input.configPath, YAML.stringify(parsed), "utf8");
|
|
@@ -93,6 +101,39 @@ export async function restartDesktopRuntimeAgent(input) {
|
|
|
93
101
|
await runLaunchctl(["kickstart", "-k", launchctlDomainService(label)]);
|
|
94
102
|
return label;
|
|
95
103
|
}
|
|
104
|
+
export async function recoverDesktopRuntimeAgent(input) {
|
|
105
|
+
const label = input.label ?? defaultRuntimeLaunchAgentLabel;
|
|
106
|
+
const launchAgentsDir = input.launchAgentsDir ?? path.join(homedir(), "Library", "LaunchAgents");
|
|
107
|
+
const plistPath = path.join(launchAgentsDir, `${label}.plist`);
|
|
108
|
+
if (!(await pathExists(plistPath))) {
|
|
109
|
+
throw new Error(`Runtime LaunchAgent does not exist: ${plistPath}`);
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await runLaunchctl(["kickstart", "-k", launchctlDomainService(label)]);
|
|
113
|
+
return {
|
|
114
|
+
label,
|
|
115
|
+
plistPath,
|
|
116
|
+
method: "kickstart",
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (kickstartError) {
|
|
120
|
+
try {
|
|
121
|
+
await runLaunchctl(["bootstrap", launchctlDomain(), plistPath]);
|
|
122
|
+
return {
|
|
123
|
+
label,
|
|
124
|
+
plistPath,
|
|
125
|
+
method: "bootstrap",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (bootstrapError) {
|
|
129
|
+
const details = [
|
|
130
|
+
kickstartError instanceof Error ? `kickstart: ${kickstartError.message}` : undefined,
|
|
131
|
+
bootstrapError instanceof Error ? `bootstrap: ${bootstrapError.message}` : undefined,
|
|
132
|
+
].filter((value) => Boolean(value));
|
|
133
|
+
throw new Error(details.join("\n") || `Failed to recover runtime LaunchAgent: ${label}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
96
137
|
export function renderRuntimeLaunchAgentPlist(input) {
|
|
97
138
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
98
139
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/desktop-runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/desktop-runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type StatusInput, type StatusReport } from "../status/index.js";
|
|
2
|
+
export interface DiagnosticsInput extends StatusInput {
|
|
3
|
+
readonly statusCollector?: (input: StatusInput) => Promise<StatusReport>;
|
|
4
|
+
readonly commandRunner?: DiagnosticsCommandRunner;
|
|
5
|
+
readonly dnsLookup?: (hostname: string) => Promise<readonly string[]>;
|
|
6
|
+
}
|
|
7
|
+
export interface DiagnosticsCheck {
|
|
8
|
+
readonly status: "PASS" | "WARN" | "FAIL";
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly details: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DiagnosticsReport {
|
|
13
|
+
readonly generatedAt: string;
|
|
14
|
+
readonly builderConfigPath?: string;
|
|
15
|
+
readonly summary: {
|
|
16
|
+
readonly pass: number;
|
|
17
|
+
readonly warn: number;
|
|
18
|
+
readonly fail: number;
|
|
19
|
+
};
|
|
20
|
+
readonly checks: readonly DiagnosticsCheck[];
|
|
21
|
+
readonly status: StatusReport;
|
|
22
|
+
}
|
|
23
|
+
export interface DiagnosticsCommandResult {
|
|
24
|
+
readonly stdout: string;
|
|
25
|
+
readonly stderr: string;
|
|
26
|
+
}
|
|
27
|
+
export type DiagnosticsCommandRunner = (command: string, args: readonly string[]) => Promise<DiagnosticsCommandResult>;
|
|
28
|
+
export declare function collectDiagnosticsReport(input: DiagnosticsInput): Promise<DiagnosticsReport>;
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { lookup } from "node:dns/promises";
|
|
3
|
+
import net from "node:net";
|
|
4
|
+
import { collectStatusReport, } from "../status/index.js";
|
|
5
|
+
export async function collectDiagnosticsReport(input) {
|
|
6
|
+
const statusCollector = input.statusCollector ?? collectStatusReport;
|
|
7
|
+
const status = await statusCollector({
|
|
8
|
+
...(input.config ? { config: input.config } : {}),
|
|
9
|
+
...(input.configPath ? { configPath: input.configPath } : {}),
|
|
10
|
+
...(input.singBoxBinary ? { singBoxBinary: input.singBoxBinary } : {}),
|
|
11
|
+
...(input.launchAgentsDir ? { launchAgentsDir: input.launchAgentsDir } : {}),
|
|
12
|
+
...(input.label ? { label: input.label } : {}),
|
|
13
|
+
...(input.runtimeLabel ? { runtimeLabel: input.runtimeLabel } : {}),
|
|
14
|
+
});
|
|
15
|
+
const commandRunner = input.commandRunner ?? runCommand;
|
|
16
|
+
const dnsLookup = input.dnsLookup ?? lookupHostnameAddresses;
|
|
17
|
+
const checks = [
|
|
18
|
+
createRuntimeProcessCheck(status),
|
|
19
|
+
...createListenerChecks(status),
|
|
20
|
+
...(status.runtime.systemProxy ? [createSystemProxyCheck(status)] : []),
|
|
21
|
+
createLiveConfigCheck(status),
|
|
22
|
+
createScheduleCheck(status),
|
|
23
|
+
createTransactionCheck(status),
|
|
24
|
+
...(await createLocalNetworkChecks({
|
|
25
|
+
...(input.config ? { config: input.config } : {}),
|
|
26
|
+
status,
|
|
27
|
+
commandRunner,
|
|
28
|
+
dnsLookup,
|
|
29
|
+
})),
|
|
30
|
+
];
|
|
31
|
+
return {
|
|
32
|
+
generatedAt: new Date().toISOString(),
|
|
33
|
+
...(status.builderConfigPath ? { builderConfigPath: status.builderConfigPath } : {}),
|
|
34
|
+
summary: summarizeChecks(checks),
|
|
35
|
+
checks,
|
|
36
|
+
status,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createRuntimeProcessCheck(status) {
|
|
40
|
+
return {
|
|
41
|
+
status: status.runtime.processRunning ? "PASS" : "WARN",
|
|
42
|
+
name: "runtime-process",
|
|
43
|
+
details: status.runtime.processRunning
|
|
44
|
+
? `running${status.runtime.processIds.length > 0 ? ` (${status.runtime.processIds.join(", ")})` : ""}`
|
|
45
|
+
: `stopped (label=${status.runtime.runtimeLabel})`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createListenerChecks(status) {
|
|
49
|
+
return status.runtime.listeners.map((listener) => ({
|
|
50
|
+
status: listener.active ? "PASS" : "WARN",
|
|
51
|
+
name: `listener:${listener.tag}`,
|
|
52
|
+
details: `${listener.listen}:${listener.port} ${listener.active ? "accepting connections" : "not accepting connections"}`,
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
function createSystemProxyCheck(status) {
|
|
56
|
+
const systemProxy = status.runtime.systemProxy;
|
|
57
|
+
if (!systemProxy) {
|
|
58
|
+
return makeCheck("WARN", "system-proxy", "Desktop runtime is not in system-proxy mode.");
|
|
59
|
+
}
|
|
60
|
+
const actual = formatSystemProxyServices(systemProxy.actual);
|
|
61
|
+
if (systemProxy.state === "active") {
|
|
62
|
+
return makeCheck("PASS", "system-proxy", `active at ${formatProxyEndpoint(systemProxy.expected)} (${actual})`);
|
|
63
|
+
}
|
|
64
|
+
return makeCheck("WARN", "system-proxy", `state=${systemProxy.state}, expected=${formatProxyEndpoint(systemProxy.expected)}, actual=${actual}${systemProxy.nextAction ? `, hint=${systemProxy.nextAction}` : ""}`);
|
|
65
|
+
}
|
|
66
|
+
function createLiveConfigCheck(status) {
|
|
67
|
+
return makeCheck(status.config.liveExists ? "PASS" : "WARN", "live-config", status.config.livePath
|
|
68
|
+
? `${status.config.livePath}${status.config.liveExists ? " [present]" : " [missing]"}`
|
|
69
|
+
: "(unset)");
|
|
70
|
+
}
|
|
71
|
+
function createScheduleCheck(status) {
|
|
72
|
+
if (!status.scheduler.enabled) {
|
|
73
|
+
return makeCheck("PASS", "schedule", `disabled in builder config (label=${status.scheduler.label})`);
|
|
74
|
+
}
|
|
75
|
+
if (!status.scheduler.installed) {
|
|
76
|
+
return makeCheck("WARN", "schedule", `enabled in builder config but no LaunchAgent exists at ${status.scheduler.plistPath}`);
|
|
77
|
+
}
|
|
78
|
+
return makeCheck(status.scheduler.loaded === false ? "WARN" : "PASS", "schedule", `${status.scheduler.label} installed${status.scheduler.loaded !== undefined ? ` loaded=${String(status.scheduler.loaded)}` : ""}`);
|
|
79
|
+
}
|
|
80
|
+
function createTransactionCheck(status) {
|
|
81
|
+
if (!status.history.lastTransactionId) {
|
|
82
|
+
return makeCheck("WARN", "latest-transaction", "No publish transaction was recorded.");
|
|
83
|
+
}
|
|
84
|
+
const transactionDetails = `${status.history.lastTransactionId} ${status.history.lastTransactionStatus ?? "unknown"}${status.history.lastTransactionAt ? ` at ${status.history.lastTransactionAt}` : ""}`;
|
|
85
|
+
return makeCheck(status.history.lastTransactionStatus === "applied" ? "PASS" : "WARN", "latest-transaction", transactionDetails);
|
|
86
|
+
}
|
|
87
|
+
async function createLocalNetworkChecks(input) {
|
|
88
|
+
const checks = [];
|
|
89
|
+
checks.push(await createDefaultRouteCheck(input.commandRunner));
|
|
90
|
+
checks.push(await createSystemDnsCheck(input.commandRunner));
|
|
91
|
+
for (const hostname of selectDiagnosticHostnames(input.config)) {
|
|
92
|
+
checks.push(await createDnsProbeCheck(hostname, input.status, input.dnsLookup));
|
|
93
|
+
}
|
|
94
|
+
return checks;
|
|
95
|
+
}
|
|
96
|
+
async function createDefaultRouteCheck(commandRunner) {
|
|
97
|
+
try {
|
|
98
|
+
const result = await runCommandWithFallback(commandRunner, ["/usr/sbin/route", "/sbin/route"], ["-n", "get", "default"]);
|
|
99
|
+
const gateway = matchCommandValue(result.stdout, "gateway");
|
|
100
|
+
const networkInterface = matchCommandValue(result.stdout, "interface");
|
|
101
|
+
if (!gateway || !networkInterface) {
|
|
102
|
+
return makeCheck("WARN", "default-route", "Default route output was present, but gateway or interface could not be parsed.");
|
|
103
|
+
}
|
|
104
|
+
return makeCheck("PASS", "default-route", `interface=${networkInterface}, gateway=${gateway}`);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return makeCheck("WARN", "default-route", error instanceof Error ? error.message : String(error));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function runCommandWithFallback(commandRunner, commands, args) {
|
|
111
|
+
let lastError;
|
|
112
|
+
for (const command of commands) {
|
|
113
|
+
try {
|
|
114
|
+
return await commandRunner(command, args);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
lastError = error;
|
|
118
|
+
if (!isCommandMissingError(error)) {
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
throw lastError instanceof Error
|
|
124
|
+
? lastError
|
|
125
|
+
: new Error("No executable command candidates succeeded.");
|
|
126
|
+
}
|
|
127
|
+
async function createSystemDnsCheck(commandRunner) {
|
|
128
|
+
try {
|
|
129
|
+
const result = await commandRunner("/usr/sbin/scutil", ["--dns"]);
|
|
130
|
+
const nameservers = parseSystemDnsNameservers(result.stdout);
|
|
131
|
+
if (nameservers.length === 0) {
|
|
132
|
+
return makeCheck("WARN", "system-dns", "No nameservers were parsed from `scutil --dns`.");
|
|
133
|
+
}
|
|
134
|
+
return makeCheck("PASS", "system-dns", `nameservers=${nameservers.slice(0, 4).join(", ")}`);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
return makeCheck("WARN", "system-dns", error instanceof Error ? error.message : String(error));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function createDnsProbeCheck(hostname, status, dnsLookup) {
|
|
141
|
+
try {
|
|
142
|
+
const addresses = [...new Set(await dnsLookup(hostname))];
|
|
143
|
+
if (addresses.length === 0) {
|
|
144
|
+
return makeCheck("WARN", `dns-probe:${hostname}`, "Lookup returned no addresses.");
|
|
145
|
+
}
|
|
146
|
+
const onlySuspiciousAddresses = addresses.every(isSuspiciousPublicAddress);
|
|
147
|
+
if (onlySuspiciousAddresses) {
|
|
148
|
+
return makeCheck("WARN", `dns-probe:${hostname}`, `Resolved only suspicious addresses: ${addresses.join(", ")}`);
|
|
149
|
+
}
|
|
150
|
+
return makeCheck("PASS", `dns-probe:${hostname}`, `resolved ${addresses.slice(0, 3).join(", ")}${addresses.length > 3 ? ` (+${addresses.length - 3} more)` : ""}`);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
const suffix = status.runtime.systemProxy?.state === "active"
|
|
154
|
+
? " while runtime proxy state is healthy."
|
|
155
|
+
: ".";
|
|
156
|
+
return makeCheck("WARN", `dns-probe:${hostname}`, `${error instanceof Error ? error.message : String(error)}${suffix}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async function lookupHostnameAddresses(hostname) {
|
|
160
|
+
const records = await lookup(hostname, { all: true, verbatim: true });
|
|
161
|
+
return records.map((record) => record.address);
|
|
162
|
+
}
|
|
163
|
+
function selectDiagnosticHostnames(config) {
|
|
164
|
+
if (!config) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
const hostnames = config.verification.scenarios
|
|
168
|
+
.map((scenario) => {
|
|
169
|
+
try {
|
|
170
|
+
return new URL(scenario.url).hostname;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
.filter((value) => Boolean(value));
|
|
177
|
+
return [...new Set(hostnames)].slice(0, 3);
|
|
178
|
+
}
|
|
179
|
+
function summarizeChecks(checks) {
|
|
180
|
+
const summary = {
|
|
181
|
+
pass: 0,
|
|
182
|
+
warn: 0,
|
|
183
|
+
fail: 0,
|
|
184
|
+
};
|
|
185
|
+
for (const check of checks) {
|
|
186
|
+
if (check.status === "PASS") {
|
|
187
|
+
summary.pass += 1;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (check.status === "WARN") {
|
|
191
|
+
summary.warn += 1;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
summary.fail += 1;
|
|
195
|
+
}
|
|
196
|
+
return summary;
|
|
197
|
+
}
|
|
198
|
+
function makeCheck(status, name, details) {
|
|
199
|
+
return { status, name, details };
|
|
200
|
+
}
|
|
201
|
+
function formatProxyEndpoint(endpoint) {
|
|
202
|
+
return `${endpoint.host}:${endpoint.port}`;
|
|
203
|
+
}
|
|
204
|
+
function formatSystemProxyServices(services) {
|
|
205
|
+
if (services.length === 0) {
|
|
206
|
+
return "unknown";
|
|
207
|
+
}
|
|
208
|
+
const enabledServices = services.filter((service) => service.enabled);
|
|
209
|
+
if (enabledServices.length === 0) {
|
|
210
|
+
return "inactive";
|
|
211
|
+
}
|
|
212
|
+
return enabledServices
|
|
213
|
+
.map((service) => service.host && typeof service.port === "number"
|
|
214
|
+
? `${service.kind}=${service.host}:${service.port}`
|
|
215
|
+
: `${service.kind}=(incomplete)`)
|
|
216
|
+
.join(", ");
|
|
217
|
+
}
|
|
218
|
+
function parseSystemDnsNameservers(stdout) {
|
|
219
|
+
const nameservers = stdout
|
|
220
|
+
.split("\n")
|
|
221
|
+
.map((line) => line.match(/nameserver\[[0-9]+\]\s*:\s*(.+?)\s*$/)?.[1]?.trim())
|
|
222
|
+
.filter((value) => Boolean(value));
|
|
223
|
+
return [...new Set(nameservers)];
|
|
224
|
+
}
|
|
225
|
+
function matchCommandValue(stdout, key) {
|
|
226
|
+
return stdout
|
|
227
|
+
.split("\n")
|
|
228
|
+
.map((line) => line.match(new RegExp(`^\\s*${key}:\\s*(.+?)\\s*$`))?.[1]?.trim())
|
|
229
|
+
.find((value) => Boolean(value));
|
|
230
|
+
}
|
|
231
|
+
function isCommandMissingError(error) {
|
|
232
|
+
if (error instanceof Error) {
|
|
233
|
+
const commandError = error;
|
|
234
|
+
return commandError.code === "ENOENT" || error.message.includes("ENOENT");
|
|
235
|
+
}
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
function isSuspiciousPublicAddress(address) {
|
|
239
|
+
const ipVersion = net.isIP(address);
|
|
240
|
+
if (ipVersion === 4) {
|
|
241
|
+
const octets = address.split(".").map((part) => Number.parseInt(part, 10));
|
|
242
|
+
if (octets.length !== 4 || octets.some((part) => Number.isNaN(part))) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
const a = octets[0] ?? -1;
|
|
246
|
+
const b = octets[1] ?? -1;
|
|
247
|
+
return (a === 0 ||
|
|
248
|
+
a === 10 ||
|
|
249
|
+
a === 127 ||
|
|
250
|
+
(a === 169 && b === 254) ||
|
|
251
|
+
(a === 172 && b >= 16 && b <= 31) ||
|
|
252
|
+
(a === 192 && b === 168));
|
|
253
|
+
}
|
|
254
|
+
if (ipVersion === 6) {
|
|
255
|
+
const normalized = address.toLowerCase();
|
|
256
|
+
return (normalized === "::1" ||
|
|
257
|
+
normalized === "::" ||
|
|
258
|
+
normalized.startsWith("fc") ||
|
|
259
|
+
normalized.startsWith("fd") ||
|
|
260
|
+
normalized.startsWith("fe80:"));
|
|
261
|
+
}
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
async function runCommand(command, args) {
|
|
265
|
+
return new Promise((resolve, reject) => {
|
|
266
|
+
const child = spawn(command, args, {
|
|
267
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
268
|
+
});
|
|
269
|
+
let stdout = "";
|
|
270
|
+
let stderr = "";
|
|
271
|
+
child.stdout.on("data", (chunk) => {
|
|
272
|
+
stdout += chunk.toString();
|
|
273
|
+
});
|
|
274
|
+
child.stderr.on("data", (chunk) => {
|
|
275
|
+
stderr += chunk.toString();
|
|
276
|
+
});
|
|
277
|
+
child.on("error", reject);
|
|
278
|
+
child.on("close", (code) => {
|
|
279
|
+
if (code === 0) {
|
|
280
|
+
resolve({ stdout, stderr });
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
const details = [stdout.trim(), stderr.trim()].filter((value) => value.length > 0).join("\n");
|
|
284
|
+
reject(new Error(details || `Command failed: ${command} ${args.join(" ")}`));
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/diagnostics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { BuilderConfig } from "../../config/schema.js";
|
|
2
|
+
import type { IntentIR } from "../../domain/intent.js";
|
|
3
|
+
import type { NaturalLanguagePlan } from "../natural-language/index.js";
|
|
4
|
+
import { type LoadedUserRules } from "../user-rules/index.js";
|
|
5
|
+
export type AuthoringWriteMode = "patch" | "replace";
|
|
6
|
+
export interface LayeredAuthoringLayer {
|
|
7
|
+
readonly prompt?: string;
|
|
8
|
+
readonly appliedAt?: string;
|
|
9
|
+
readonly plan: NaturalLanguagePlan;
|
|
10
|
+
}
|
|
11
|
+
export interface LayeredAuthoringState {
|
|
12
|
+
readonly version: 1;
|
|
13
|
+
readonly base: LayeredAuthoringLayer;
|
|
14
|
+
readonly patches: readonly LayeredAuthoringLayer[];
|
|
15
|
+
}
|
|
16
|
+
export interface ResolvedLayeredAuthoringState {
|
|
17
|
+
readonly filePath: string;
|
|
18
|
+
readonly exists: boolean;
|
|
19
|
+
readonly state: LayeredAuthoringState;
|
|
20
|
+
readonly mergedPlan: NaturalLanguagePlan;
|
|
21
|
+
readonly mergedIntent: IntentIR;
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveLayeredAuthoringState(input: {
|
|
24
|
+
readonly config: BuilderConfig;
|
|
25
|
+
readonly rulesPath?: string;
|
|
26
|
+
readonly loadedUserRules?: LoadedUserRules;
|
|
27
|
+
}): Promise<ResolvedLayeredAuthoringState>;
|
|
28
|
+
export declare function resolveLayeredAuthoringPath(rulesPath: string): string;
|
|
29
|
+
export declare function applyLayeredAuthoringUpdate(input: {
|
|
30
|
+
readonly current: LayeredAuthoringState;
|
|
31
|
+
readonly prompt: string;
|
|
32
|
+
readonly plan: NaturalLanguagePlan;
|
|
33
|
+
readonly mode: AuthoringWriteMode;
|
|
34
|
+
readonly appliedAt?: string;
|
|
35
|
+
}): LayeredAuthoringState;
|
|
36
|
+
export declare function writeLayeredAuthoringState(input: {
|
|
37
|
+
readonly rulesPath: string;
|
|
38
|
+
readonly state: LayeredAuthoringState;
|
|
39
|
+
}): Promise<string>;
|
|
40
|
+
export declare function mergeNaturalLanguagePlans(plans: readonly NaturalLanguagePlan[]): NaturalLanguagePlan;
|
|
41
|
+
export declare function materializeLayeredAuthoringState(input: {
|
|
42
|
+
readonly filePath: string;
|
|
43
|
+
readonly exists: boolean;
|
|
44
|
+
readonly state: LayeredAuthoringState;
|
|
45
|
+
}): ResolvedLayeredAuthoringState;
|