@singbox-iac/cli 0.1.16 → 0.1.18
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-en.md +70 -19
- package/README.md +75 -23
- package/dist/cli/commands/apply.js +3 -0
- package/dist/cli/commands/apply.js.map +1 -1
- 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 +39 -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 +122 -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/proxifier.js +13 -4
- package/dist/cli/commands/proxifier.js.map +1 -1
- package/dist/cli/commands/reload.js +1 -0
- package/dist/cli/commands/reload.js.map +1 -1
- package/dist/cli/commands/restart.js +71 -7
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/rollback.js +1 -0
- package/dist/cli/commands/rollback.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 +40 -14
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.js +56 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +140 -28
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.js +28 -5
- 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/commands/verify.js +1 -1
- package/dist/cli/commands/verify.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 +222 -35
- package/dist/config/schema.js +80 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/domain/dns-plan.d.ts +11 -1
- package/dist/domain/intent.d.ts +2 -2
- package/dist/domain/verification-plan.d.ts +3 -3
- package/dist/modules/authoring/index.js +26 -9
- 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 +52 -0
- package/dist/modules/bundle-registry/index.js +691 -0
- package/dist/modules/bundle-registry/index.js.map +1 -0
- package/dist/modules/compiler/index.js +79 -12
- package/dist/modules/compiler/index.js.map +1 -1
- package/dist/modules/desktop-runtime/index.d.ts +36 -0
- package/dist/modules/desktop-runtime/index.js +154 -12
- 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 +306 -0
- package/dist/modules/diagnostics/index.js.map +1 -0
- package/dist/modules/dns-plan/index.js +73 -12
- package/dist/modules/dns-plan/index.js.map +1 -1
- package/dist/modules/intent/index.js +2 -2
- package/dist/modules/intent/index.js.map +1 -1
- 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/manager/index.d.ts +3 -1
- package/dist/modules/manager/index.js +26 -1
- package/dist/modules/manager/index.js.map +1 -1
- package/dist/modules/natural-language/index.d.ts +8 -5
- 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 +13 -143
- 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-mode/index.d.ts +1 -1
- package/dist/modules/runtime-mode/index.js +0 -5
- package/dist/modules/runtime-mode/index.js.map +1 -1
- 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 +57 -0
- package/dist/modules/status/index.js +307 -31
- 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/dist/modules/update/index.js +3 -1
- package/dist/modules/update/index.js.map +1 -1
- package/dist/modules/verification/index.d.ts +5 -5
- package/dist/modules/verification/index.js +93 -12
- package/dist/modules/verification/index.js.map +1 -1
- package/dist/modules/verification-plan/index.js +13 -4
- package/dist/modules/verification-plan/index.js.map +1 -1
- 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 +59 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/proxifier/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/proxifier/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface OfficialRuleSetCatalog {
|
|
2
|
+
readonly refreshedAt: string;
|
|
3
|
+
readonly geositeRef: string;
|
|
4
|
+
readonly geoipRef: string;
|
|
5
|
+
readonly geositeTags: readonly string[];
|
|
6
|
+
readonly geoipTags: readonly string[];
|
|
7
|
+
}
|
|
8
|
+
export interface LoadedOfficialRuleSetCatalog extends OfficialRuleSetCatalog {
|
|
9
|
+
readonly cachePath: string;
|
|
10
|
+
readonly source: "remote" | "cache" | "stale-cache";
|
|
11
|
+
}
|
|
12
|
+
export interface LoadOfficialRuleSetCatalogInput {
|
|
13
|
+
readonly cachePath?: string;
|
|
14
|
+
readonly fetchImpl?: typeof fetch;
|
|
15
|
+
readonly now?: () => Date;
|
|
16
|
+
readonly refresh?: boolean;
|
|
17
|
+
readonly ttlMs?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function defaultOfficialRuleSetCatalogCachePath(): string;
|
|
20
|
+
export declare function loadOfficialRuleSetCatalog(input?: LoadOfficialRuleSetCatalogInput): Promise<LoadedOfficialRuleSetCatalog>;
|
|
21
|
+
export declare function fetchOfficialRuleSetCatalog(input?: {
|
|
22
|
+
readonly fetchImpl?: typeof fetch;
|
|
23
|
+
readonly refreshedAt?: string;
|
|
24
|
+
}): Promise<OfficialRuleSetCatalog>;
|
|
25
|
+
export declare function isOfficialRuleSetTag(catalog: OfficialRuleSetCatalog, tag: string): boolean;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
const defaultCatalogTtlMs = 24 * 60 * 60 * 1000;
|
|
6
|
+
export function defaultOfficialRuleSetCatalogCachePath() {
|
|
7
|
+
return path.join(homedir(), ".config", "singbox-iac", "cache", "official-rule-set-catalog.json");
|
|
8
|
+
}
|
|
9
|
+
export async function loadOfficialRuleSetCatalog(input = {}) {
|
|
10
|
+
const cachePath = input.cachePath ?? defaultOfficialRuleSetCatalogCachePath();
|
|
11
|
+
const ttlMs = input.ttlMs ?? defaultCatalogTtlMs;
|
|
12
|
+
const now = input.now ?? (() => new Date());
|
|
13
|
+
const cached = await readCatalogCache(cachePath);
|
|
14
|
+
if (input.refresh !== true && cached) {
|
|
15
|
+
const ageMs = Math.max(0, now().getTime() - Date.parse(cached.refreshedAt));
|
|
16
|
+
if (Number.isFinite(ageMs) && ageMs <= ttlMs) {
|
|
17
|
+
return {
|
|
18
|
+
...cached,
|
|
19
|
+
cachePath,
|
|
20
|
+
source: "cache",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const refreshed = await fetchOfficialRuleSetCatalog({
|
|
26
|
+
...(input.fetchImpl ? { fetchImpl: input.fetchImpl } : {}),
|
|
27
|
+
refreshedAt: now().toISOString(),
|
|
28
|
+
});
|
|
29
|
+
await writeCatalogCache(cachePath, refreshed);
|
|
30
|
+
return {
|
|
31
|
+
...refreshed,
|
|
32
|
+
cachePath,
|
|
33
|
+
source: "remote",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
if (!cached) {
|
|
38
|
+
throw new Error("Unable to refresh the official rule-set catalog and no cached catalog is available.");
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...cached,
|
|
42
|
+
cachePath,
|
|
43
|
+
source: "stale-cache",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function fetchOfficialRuleSetCatalog(input) {
|
|
48
|
+
const fetchImpl = input?.fetchImpl ?? fetch;
|
|
49
|
+
const [geositeRef, geoipRef] = await Promise.all([
|
|
50
|
+
fetchRuleSetBranchHead(fetchImpl, "SagerNet", "sing-geosite"),
|
|
51
|
+
fetchRuleSetBranchHead(fetchImpl, "SagerNet", "sing-geoip"),
|
|
52
|
+
]);
|
|
53
|
+
const [geositeTags, geoipTags] = await Promise.all([
|
|
54
|
+
fetchRuleSetTags(fetchImpl, "SagerNet", "sing-geosite", geositeRef),
|
|
55
|
+
fetchRuleSetTags(fetchImpl, "SagerNet", "sing-geoip", geoipRef),
|
|
56
|
+
]);
|
|
57
|
+
return {
|
|
58
|
+
refreshedAt: input?.refreshedAt ?? new Date().toISOString(),
|
|
59
|
+
geositeRef,
|
|
60
|
+
geoipRef,
|
|
61
|
+
geositeTags,
|
|
62
|
+
geoipTags,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function isOfficialRuleSetTag(catalog, tag) {
|
|
66
|
+
return catalog.geositeTags.includes(tag) || catalog.geoipTags.includes(tag);
|
|
67
|
+
}
|
|
68
|
+
async function fetchRuleSetBranchHead(fetchImpl, owner, repo) {
|
|
69
|
+
const response = await fetchGithubJson(fetchImpl, `https://api.github.com/repos/${owner}/${repo}/git/ref/heads/rule-set`);
|
|
70
|
+
const sha = response.object?.sha;
|
|
71
|
+
if (!sha) {
|
|
72
|
+
throw new Error(`Missing rule-set branch head for ${owner}/${repo}.`);
|
|
73
|
+
}
|
|
74
|
+
return sha;
|
|
75
|
+
}
|
|
76
|
+
async function fetchRuleSetTags(fetchImpl, owner, repo, treeSha) {
|
|
77
|
+
const response = await fetchGithubJson(fetchImpl, `https://api.github.com/repos/${owner}/${repo}/git/trees/${treeSha}?recursive=1`);
|
|
78
|
+
const tags = new Set();
|
|
79
|
+
for (const entry of response.tree ?? []) {
|
|
80
|
+
const nextPath = entry.path;
|
|
81
|
+
if (!nextPath || !nextPath.endsWith(".srs")) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
tags.add(nextPath.slice(0, -4));
|
|
85
|
+
}
|
|
86
|
+
return [...tags].sort();
|
|
87
|
+
}
|
|
88
|
+
async function fetchGithubJson(fetchImpl, url) {
|
|
89
|
+
const response = await fetchImpl(url, {
|
|
90
|
+
headers: {
|
|
91
|
+
accept: "application/vnd.github+json",
|
|
92
|
+
"user-agent": "singbox-iac/0.1.16",
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`GitHub API request failed for ${url}: HTTP ${response.status}`);
|
|
97
|
+
}
|
|
98
|
+
return (await response.json());
|
|
99
|
+
}
|
|
100
|
+
async function readCatalogCache(filePath) {
|
|
101
|
+
if (!(await pathExists(filePath))) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
const raw = await readFile(filePath, "utf8");
|
|
105
|
+
const parsed = JSON.parse(raw);
|
|
106
|
+
if (!parsed ||
|
|
107
|
+
typeof parsed.refreshedAt !== "string" ||
|
|
108
|
+
typeof parsed.geositeRef !== "string" ||
|
|
109
|
+
typeof parsed.geoipRef !== "string" ||
|
|
110
|
+
!Array.isArray(parsed.geositeTags) ||
|
|
111
|
+
!Array.isArray(parsed.geoipTags)) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
refreshedAt: parsed.refreshedAt,
|
|
116
|
+
geositeRef: parsed.geositeRef,
|
|
117
|
+
geoipRef: parsed.geoipRef,
|
|
118
|
+
geositeTags: parsed.geositeTags.filter((value) => typeof value === "string"),
|
|
119
|
+
geoipTags: parsed.geoipTags.filter((value) => typeof value === "string"),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async function writeCatalogCache(filePath, catalog) {
|
|
123
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
124
|
+
await writeFile(filePath, JSON.stringify(catalog, null, 2).concat("\n"), "utf8");
|
|
125
|
+
}
|
|
126
|
+
async function pathExists(filePath) {
|
|
127
|
+
try {
|
|
128
|
+
await access(filePath, constants.F_OK);
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/rule-set-catalog/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ interface RuntimeModeInferenceInput {
|
|
|
10
10
|
readonly runInForeground?: boolean;
|
|
11
11
|
}
|
|
12
12
|
interface RuntimeModeScenario {
|
|
13
|
-
readonly inbound: "in-mixed" | "in-proxifier";
|
|
13
|
+
readonly inbound: "in-mixed" | "in-proxifier" | "in-tun";
|
|
14
14
|
}
|
|
15
15
|
export declare function inferRuntimeMode(input: RuntimeModeInferenceInput): RuntimeMode;
|
|
16
16
|
export declare function getRuntimeModeDefaults(mode: RuntimeMode): RuntimeModeDefaults;
|
|
@@ -6,7 +6,6 @@ const processKeywords = [
|
|
|
6
6
|
"独立入口",
|
|
7
7
|
"独立的入口",
|
|
8
8
|
];
|
|
9
|
-
const tunKeywords = ["tun", "全局代理", "全局模式", "系统全局", "utun", "全局接管"];
|
|
10
9
|
export function inferRuntimeMode(input) {
|
|
11
10
|
if (input.phase === "update") {
|
|
12
11
|
return "headless-daemon";
|
|
@@ -57,10 +56,6 @@ export function getRuntimeModeDefaults(mode) {
|
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
export function inferDesktopRuntimeProfile(input) {
|
|
60
|
-
const prompt = input.prompt?.toLowerCase() ?? "";
|
|
61
|
-
if (tunKeywords.some((keyword) => prompt.includes(keyword))) {
|
|
62
|
-
return "tun";
|
|
63
|
-
}
|
|
64
59
|
if (input.config?.runtime.desktop.profile) {
|
|
65
60
|
return input.config.runtime.desktop.profile;
|
|
66
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/runtime-mode/index.ts"],"names":[],"mappings":"AAqBA,MAAM,eAAe,GAAG;IACtB,WAAW;IACX,KAAK;IACL,eAAe;IACf,eAAe;IACf,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/runtime-mode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { BuilderConfig } from "../../config/schema.js";
|
|
2
|
+
import { type RuntimeAgentRecoverInput, type RuntimeAgentRecoverResult } from "../desktop-runtime/index.js";
|
|
3
|
+
import { type SystemProxyRuntimeSnapshot } from "../system-proxy/index.js";
|
|
4
|
+
export interface RuntimeWatchdogAgentInstallInput {
|
|
5
|
+
readonly configPath: string;
|
|
6
|
+
readonly cliEntrypoint: string;
|
|
7
|
+
readonly intervalSeconds: number;
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
readonly launchAgentsDir?: string;
|
|
10
|
+
readonly logsDir?: string;
|
|
11
|
+
readonly workingDirectory?: string;
|
|
12
|
+
readonly force?: boolean;
|
|
13
|
+
readonly load?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface RuntimeWatchdogAgentInstallResult {
|
|
16
|
+
readonly label: string;
|
|
17
|
+
readonly plistPath: string;
|
|
18
|
+
readonly stdoutPath: string;
|
|
19
|
+
readonly stderrPath: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RuntimeWatchdogAgentRemoveInput {
|
|
22
|
+
readonly label?: string;
|
|
23
|
+
readonly launchAgentsDir?: string;
|
|
24
|
+
readonly unload?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface RuntimeWatchdogState {
|
|
27
|
+
readonly version: 1;
|
|
28
|
+
readonly label: string;
|
|
29
|
+
readonly lastCheckedAt: string;
|
|
30
|
+
readonly lastResult: "healthy" | "reasserted" | "restarted" | "process-missing" | "listener-missing" | "proxy-unknown" | "reassert-failed" | "restart-failed" | "restart-skipped-cooldown" | "disabled" | "unsupported-profile";
|
|
31
|
+
readonly lastMessage: string;
|
|
32
|
+
readonly lastTrigger?: RuntimeWatchdogTrigger;
|
|
33
|
+
readonly lastRecoveryAction?: RuntimeWatchdogRecoveryAction;
|
|
34
|
+
readonly lastReassertAt?: string;
|
|
35
|
+
readonly lastRestartAt?: string;
|
|
36
|
+
readonly lastError?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface RunRuntimeWatchdogTickInput {
|
|
39
|
+
readonly config: BuilderConfig;
|
|
40
|
+
readonly configPath: string;
|
|
41
|
+
readonly snapshotCollector?: (config: BuilderConfig) => Promise<SystemProxyRuntimeSnapshot>;
|
|
42
|
+
readonly commandRunner?: RuntimeCommandRunner;
|
|
43
|
+
readonly runtimeAgentRecoverer?: RuntimeAgentRecoverer;
|
|
44
|
+
readonly runtimeLaunchAgentsDir?: string;
|
|
45
|
+
readonly statePath?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface RunRuntimeWatchdogTickResult {
|
|
48
|
+
readonly statePath: string;
|
|
49
|
+
readonly state: RuntimeWatchdogState;
|
|
50
|
+
}
|
|
51
|
+
export interface RuntimeCommandRunnerResult {
|
|
52
|
+
readonly stdout: string;
|
|
53
|
+
readonly stderr: string;
|
|
54
|
+
}
|
|
55
|
+
export type RuntimeCommandRunner = (command: string, args: readonly string[]) => Promise<RuntimeCommandRunnerResult>;
|
|
56
|
+
export type RuntimeWatchdogTrigger = "process-missing" | "listener-missing" | "proxy-drift";
|
|
57
|
+
export type RuntimeWatchdogRecoveryAction = "reassert-proxy" | "restart-runtime";
|
|
58
|
+
export type RuntimeAgentRecoverer = (input: RuntimeAgentRecoverInput) => Promise<RuntimeAgentRecoverResult>;
|
|
59
|
+
export declare const defaultRuntimeWatchdogLaunchAgentLabel = "org.singbox-iac.runtime.watchdog";
|
|
60
|
+
export declare const defaultRuntimeWatchdogRestartCooldownMs: number;
|
|
61
|
+
export declare function installRuntimeWatchdogAgent(input: RuntimeWatchdogAgentInstallInput): Promise<RuntimeWatchdogAgentInstallResult>;
|
|
62
|
+
export declare function removeRuntimeWatchdogAgent(input: RuntimeWatchdogAgentRemoveInput): Promise<string>;
|
|
63
|
+
export declare function renderRuntimeWatchdogLaunchAgentPlist(input: {
|
|
64
|
+
readonly label: string;
|
|
65
|
+
readonly intervalSeconds: number;
|
|
66
|
+
readonly workingDirectory: string;
|
|
67
|
+
readonly stdoutPath: string;
|
|
68
|
+
readonly stderrPath: string;
|
|
69
|
+
readonly programArguments: readonly string[];
|
|
70
|
+
}): string;
|
|
71
|
+
export declare function runRuntimeWatchdogTick(input: RunRuntimeWatchdogTickInput): Promise<RunRuntimeWatchdogTickResult>;
|
|
72
|
+
export declare function readRuntimeWatchdogState(statePath: string): Promise<RuntimeWatchdogState | undefined>;
|
|
73
|
+
export declare function resolveRuntimeWatchdogStatePath(label?: string): string;
|