@singbox-iac/cli 0.1.7 → 0.1.9
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 +67 -1
- package/README.md +66 -1
- package/dist/cli/commands/apply.js +5 -1
- package/dist/cli/commands/apply.js.map +1 -1
- package/dist/cli/commands/author.d.ts +3 -0
- package/dist/cli/commands/author.js +35 -3
- package/dist/cli/commands/author.js.map +1 -1
- package/dist/cli/commands/build.js +11 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/check.js +5 -1
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/doctor.js +12 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/proxifier.js +60 -5
- package/dist/cli/commands/proxifier.js.map +1 -1
- package/dist/cli/commands/reload.js +5 -1
- package/dist/cli/commands/reload.js.map +1 -1
- package/dist/cli/commands/restart.d.ts +2 -0
- package/dist/cli/commands/restart.js +57 -0
- package/dist/cli/commands/restart.js.map +1 -0
- package/dist/cli/commands/rollback.js +6 -2
- package/dist/cli/commands/rollback.js.map +1 -1
- package/dist/cli/commands/run.js +5 -1
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/schedule.js +10 -2
- package/dist/cli/commands/schedule.js.map +1 -1
- package/dist/cli/commands/setup.js +90 -12
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.d.ts +2 -0
- package/dist/cli/commands/start.js +51 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -0
- package/dist/cli/commands/status.js +65 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +2 -0
- package/dist/cli/commands/stop.js +29 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/use.js +7 -0
- package/dist/cli/commands/use.js.map +1 -1
- package/dist/cli/commands/verify.js +15 -3
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/index.js +17 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/config/schema.d.ts +125 -0
- package/dist/config/schema.js +49 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/domain/runtime-mode.d.ts +10 -0
- package/dist/domain/runtime-mode.js +2 -0
- package/dist/domain/runtime-mode.js.map +1 -0
- package/dist/modules/authoring/index.d.ts +2 -0
- package/dist/modules/authoring/index.js +19 -5
- package/dist/modules/authoring/index.js.map +1 -1
- package/dist/modules/compiler/index.js +32 -14
- package/dist/modules/compiler/index.js.map +1 -1
- package/dist/modules/desktop-runtime/index.d.ts +48 -0
- package/dist/modules/desktop-runtime/index.js +183 -0
- package/dist/modules/desktop-runtime/index.js.map +1 -0
- package/dist/modules/doctor/index.d.ts +5 -0
- package/dist/modules/doctor/index.js +37 -8
- package/dist/modules/doctor/index.js.map +1 -1
- package/dist/modules/manager/index.d.ts +1 -1
- package/dist/modules/manager/index.js +6 -28
- package/dist/modules/manager/index.js.map +1 -1
- package/dist/modules/natural-language/index.d.ts +5 -0
- package/dist/modules/natural-language/index.js +52 -9
- package/dist/modules/natural-language/index.js.map +1 -1
- package/dist/modules/preview/index.d.ts +4 -0
- package/dist/modules/preview/index.js +3 -0
- package/dist/modules/preview/index.js.map +1 -1
- package/dist/modules/proxifier/index.d.ts +15 -4
- package/dist/modules/proxifier/index.js +146 -40
- package/dist/modules/proxifier/index.js.map +1 -1
- package/dist/modules/runtime-dependencies/index.d.ts +22 -0
- package/dist/modules/runtime-dependencies/index.js +114 -0
- package/dist/modules/runtime-dependencies/index.js.map +1 -0
- package/dist/modules/runtime-mode/index.d.ts +23 -0
- package/dist/modules/runtime-mode/index.js +86 -0
- package/dist/modules/runtime-mode/index.js.map +1 -0
- package/dist/modules/schedule/index.d.ts +1 -0
- package/dist/modules/schedule/index.js +1 -1
- package/dist/modules/schedule/index.js.map +1 -1
- package/dist/modules/status/index.d.ts +57 -0
- package/dist/modules/status/index.js +295 -0
- package/dist/modules/status/index.js.map +1 -0
- package/dist/modules/update/index.js +5 -3
- package/dist/modules/update/index.js.map +1 -1
- package/dist/modules/verification/index.d.ts +1 -1
- package/dist/modules/verification/index.js +6 -12
- package/dist/modules/verification/index.js.map +1 -1
- package/docs/natural-language-authoring.md +36 -0
- package/docs/proxifier-onboarding.md +14 -0
- package/docs/runtime-on-macos.md +36 -0
- package/examples/builder.config.yaml +9 -0
- package/package.json +2 -1
|
@@ -1,61 +1,139 @@
|
|
|
1
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import YAML from "yaml";
|
|
3
4
|
const bundleDefinitions = [
|
|
4
5
|
{
|
|
5
6
|
id: "antigravity",
|
|
6
7
|
name: "Antigravity",
|
|
7
|
-
description: "
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
8
|
+
description: "Google Antigravity desktop app, helpers, and language services.",
|
|
9
|
+
targetInbound: "in-proxifier",
|
|
10
|
+
targetOutboundGroup: "Process-Proxy",
|
|
11
|
+
processMatchers: [
|
|
12
|
+
{ processName: "Antigravity.app" },
|
|
13
|
+
{ processName: "Antigravity" },
|
|
14
|
+
{ bundleId: "com.google.antigravity" },
|
|
15
|
+
{ processName: "*Antigravity*" },
|
|
16
|
+
{ processName: "language_server_macos_arm" },
|
|
17
|
+
{ processName: "antigravity-auto-updater" },
|
|
18
|
+
{ processName: "*antigravity*" },
|
|
19
|
+
],
|
|
20
|
+
notes: [
|
|
21
|
+
"Use this bundle when Antigravity or its language server does not honor the normal system proxy path.",
|
|
16
22
|
],
|
|
17
23
|
},
|
|
18
24
|
{
|
|
19
25
|
id: "cursor",
|
|
20
26
|
name: "Cursor",
|
|
21
|
-
description: "
|
|
22
|
-
|
|
27
|
+
description: "Cursor desktop app and helper processes.",
|
|
28
|
+
targetInbound: "in-proxifier",
|
|
29
|
+
targetOutboundGroup: "Process-Proxy",
|
|
30
|
+
processMatchers: [
|
|
31
|
+
{ processName: "Cursor" },
|
|
32
|
+
{ processName: "Cursor.app" },
|
|
33
|
+
{ processName: "Cursor Helper" },
|
|
34
|
+
{ processName: "cursor" },
|
|
35
|
+
{ processName: "*cursor*" },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "vscode",
|
|
40
|
+
name: "VS Code",
|
|
41
|
+
description: "Visual Studio Code desktop app, helper processes, and CLI entrypoints.",
|
|
42
|
+
targetInbound: "in-proxifier",
|
|
43
|
+
targetOutboundGroup: "Process-Proxy",
|
|
44
|
+
processMatchers: [
|
|
45
|
+
{ processName: "Visual Studio Code" },
|
|
46
|
+
{ processName: "Code" },
|
|
47
|
+
{ processName: "Code Helper" },
|
|
48
|
+
{ bundleId: "com.microsoft.VSCode" },
|
|
49
|
+
{ processName: "code" },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "claude-code",
|
|
54
|
+
name: "Claude Code",
|
|
55
|
+
description: "Claude CLI and related coding-agent processes.",
|
|
56
|
+
targetInbound: "in-proxifier",
|
|
57
|
+
targetOutboundGroup: "Process-Proxy",
|
|
58
|
+
processMatchers: [{ processName: "claude" }, { processName: "claude-code" }],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: "gemini-cli",
|
|
62
|
+
name: "Gemini CLI",
|
|
63
|
+
description: "Gemini CLI and related local agent processes.",
|
|
64
|
+
targetInbound: "in-proxifier",
|
|
65
|
+
targetOutboundGroup: "Process-Proxy",
|
|
66
|
+
processMatchers: [{ processName: "gemini" }, { processName: "gemini-cli" }],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "codex",
|
|
70
|
+
name: "Codex",
|
|
71
|
+
description: "Codex desktop or CLI agent processes.",
|
|
72
|
+
targetInbound: "in-proxifier",
|
|
73
|
+
targetOutboundGroup: "Process-Proxy",
|
|
74
|
+
processMatchers: [{ processName: "codex" }, { processName: "codex-cli" }],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "copilot-cli",
|
|
78
|
+
name: "Copilot CLI",
|
|
79
|
+
description: "GitHub Copilot CLI-style developer tooling processes.",
|
|
80
|
+
targetInbound: "in-proxifier",
|
|
81
|
+
targetOutboundGroup: "Process-Proxy",
|
|
82
|
+
processMatchers: [
|
|
83
|
+
{ processName: "copilot" },
|
|
84
|
+
{ processName: "github-copilot" },
|
|
85
|
+
{ processName: "copilot-cli" },
|
|
86
|
+
],
|
|
23
87
|
},
|
|
24
88
|
{
|
|
25
89
|
id: "developer-ai-cli",
|
|
26
90
|
name: "Developer AI CLI",
|
|
27
|
-
description: "
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
91
|
+
description: "A convenience bundle for common coding-agent and AI CLI tools.",
|
|
92
|
+
targetInbound: "in-proxifier",
|
|
93
|
+
targetOutboundGroup: "Process-Proxy",
|
|
94
|
+
processMatchers: [
|
|
95
|
+
{ processName: "claude" },
|
|
96
|
+
{ processName: "codex" },
|
|
97
|
+
{ processName: "gemini" },
|
|
98
|
+
{ processName: "codebuddy" },
|
|
99
|
+
{ processName: "cbc" },
|
|
100
|
+
{ processName: "opencode" },
|
|
101
|
+
{ processName: "qoder" },
|
|
102
|
+
{ processName: "qodercli" },
|
|
103
|
+
{ processName: "trae" },
|
|
104
|
+
],
|
|
105
|
+
notes: [
|
|
106
|
+
"Use this bundle when you want a single catch-all process list for developer AI tools.",
|
|
38
107
|
],
|
|
39
108
|
},
|
|
40
109
|
];
|
|
41
110
|
const promptBundleAliases = {
|
|
42
111
|
antigravity: ["antigravity", "google antigravity", "google.antigravity"],
|
|
43
112
|
cursor: ["cursor"],
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"qoder",
|
|
51
|
-
"trae",
|
|
52
|
-
"ai ide",
|
|
53
|
-
"ai cli",
|
|
54
|
-
],
|
|
113
|
+
vscode: ["vscode", "vs code", "visual studio code", "code helper"],
|
|
114
|
+
"claude-code": ["claude code", "claude cli", "claude"],
|
|
115
|
+
"gemini-cli": ["gemini cli", "gemini"],
|
|
116
|
+
codex: ["codex"],
|
|
117
|
+
"copilot-cli": ["copilot cli", "copilot"],
|
|
118
|
+
"developer-ai-cli": ["ai ide", "ai cli", "coding agent", "developer ai"],
|
|
55
119
|
};
|
|
56
120
|
export function listProxifierBundles() {
|
|
57
121
|
return bundleDefinitions;
|
|
58
122
|
}
|
|
123
|
+
export function getProxifierBundle(id) {
|
|
124
|
+
return bundleDefinitions.find((bundle) => bundle.id === id);
|
|
125
|
+
}
|
|
126
|
+
export function renderProxifierBundleSpec(bundle) {
|
|
127
|
+
return YAML.stringify({
|
|
128
|
+
id: bundle.id,
|
|
129
|
+
name: bundle.name,
|
|
130
|
+
description: bundle.description,
|
|
131
|
+
targetInbound: bundle.targetInbound,
|
|
132
|
+
targetOutboundGroup: bundle.targetOutboundGroup,
|
|
133
|
+
processMatchers: bundle.processMatchers,
|
|
134
|
+
...(bundle.notes && bundle.notes.length > 0 ? { notes: [...bundle.notes] } : {}),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
59
137
|
export function selectProxifierBundlesFromPrompt(prompt) {
|
|
60
138
|
const normalized = prompt.toLowerCase();
|
|
61
139
|
const matched = new Set();
|
|
@@ -77,7 +155,8 @@ export async function writeProxifierScaffold(input) {
|
|
|
77
155
|
const bundles = resolveBundles(input.bundleIds);
|
|
78
156
|
await mkdir(input.outputDir, { recursive: true });
|
|
79
157
|
const bundlesDir = path.join(input.outputDir, "bundles");
|
|
80
|
-
|
|
158
|
+
const specsDir = path.join(input.outputDir, "bundle-specs");
|
|
159
|
+
await Promise.all([mkdir(bundlesDir, { recursive: true }), mkdir(specsDir, { recursive: true })]);
|
|
81
160
|
const guidePath = path.join(input.outputDir, "README.md");
|
|
82
161
|
const proxyEndpointPath = path.join(input.outputDir, "proxy-endpoint.txt");
|
|
83
162
|
const customProcessesPath = path.join(input.outputDir, "custom-processes.txt");
|
|
@@ -100,12 +179,19 @@ export async function writeProxifierScaffold(input) {
|
|
|
100
179
|
"",
|
|
101
180
|
].join("\n"), "utf8");
|
|
102
181
|
const bundlePaths = [];
|
|
182
|
+
const bundleSpecPaths = [];
|
|
103
183
|
const combinedProcesses = new Set();
|
|
104
184
|
for (const bundle of bundles) {
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
185
|
+
const bundlePath = path.join(bundlesDir, `${bundle.id}.txt`);
|
|
186
|
+
const bundleSpecPath = path.join(specsDir, `${bundle.id}.yaml`);
|
|
187
|
+
const processNames = collectDisplayProcessNames(bundle.processMatchers);
|
|
188
|
+
await Promise.all([
|
|
189
|
+
writeFile(bundlePath, [`# ${bundle.name}`, `# ${bundle.description}`, ...processNames, ""].join("\n"), "utf8"),
|
|
190
|
+
writeFile(bundleSpecPath, renderProxifierBundleSpec(bundle), "utf8"),
|
|
191
|
+
]);
|
|
192
|
+
bundlePaths.push(bundlePath);
|
|
193
|
+
bundleSpecPaths.push(bundleSpecPath);
|
|
194
|
+
for (const processName of processNames) {
|
|
109
195
|
combinedProcesses.add(processName);
|
|
110
196
|
}
|
|
111
197
|
}
|
|
@@ -118,6 +204,7 @@ export async function writeProxifierScaffold(input) {
|
|
|
118
204
|
listener: input.listener,
|
|
119
205
|
bundles,
|
|
120
206
|
bundlePaths,
|
|
207
|
+
bundleSpecPaths,
|
|
121
208
|
customProcessesPath,
|
|
122
209
|
...(combinedProcessesPath ? { combinedProcessesPath } : {}),
|
|
123
210
|
}), "utf8");
|
|
@@ -128,6 +215,7 @@ export async function writeProxifierScaffold(input) {
|
|
|
128
215
|
customProcessesPath,
|
|
129
216
|
...(combinedProcessesPath ? { combinedProcessesPath } : {}),
|
|
130
217
|
bundlePaths,
|
|
218
|
+
bundleSpecPaths,
|
|
131
219
|
bundles,
|
|
132
220
|
};
|
|
133
221
|
}
|
|
@@ -170,10 +258,13 @@ function renderGuide(input) {
|
|
|
170
258
|
for (let index = 0; index < input.bundles.length; index += 1) {
|
|
171
259
|
const bundle = input.bundles[index];
|
|
172
260
|
const bundlePath = input.bundlePaths[index];
|
|
173
|
-
|
|
261
|
+
const bundleSpecPath = input.bundleSpecPaths[index];
|
|
262
|
+
if (!bundle || !bundlePath || !bundleSpecPath) {
|
|
174
263
|
continue;
|
|
175
264
|
}
|
|
176
|
-
lines.push(`- \`${bundle.name}\`: \`${path.relative(path.dirname(input.customProcessesPath), bundlePath)}\``);
|
|
265
|
+
lines.push(`- \`${bundle.name}\`: processes \`${path.relative(path.dirname(input.customProcessesPath), bundlePath)}\`, spec \`${path.relative(path.dirname(input.customProcessesPath), bundleSpecPath)}\``);
|
|
266
|
+
lines.push(` - inbound: \`${bundle.targetInbound}\``);
|
|
267
|
+
lines.push(` - outbound: \`${bundle.targetOutboundGroup}\``);
|
|
177
268
|
}
|
|
178
269
|
}
|
|
179
270
|
else {
|
|
@@ -181,4 +272,19 @@ function renderGuide(input) {
|
|
|
181
272
|
}
|
|
182
273
|
return `${lines.join("\n")}\n`;
|
|
183
274
|
}
|
|
275
|
+
function collectDisplayProcessNames(matchers) {
|
|
276
|
+
const values = new Set();
|
|
277
|
+
for (const matcher of matchers) {
|
|
278
|
+
if (matcher.processName) {
|
|
279
|
+
values.add(matcher.processName);
|
|
280
|
+
}
|
|
281
|
+
if (matcher.bundleId) {
|
|
282
|
+
values.add(`bundle:${matcher.bundleId}`);
|
|
283
|
+
}
|
|
284
|
+
if (matcher.pathRegex) {
|
|
285
|
+
values.add(`path:${matcher.pathRegex}`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return [...values];
|
|
289
|
+
}
|
|
184
290
|
//# sourceMappingURL=index.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/proxifier/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type RuntimeDependencySource = "explicit" | "persisted" | "env" | "repo-tool" | "path" | "app-bundle";
|
|
2
|
+
export interface ResolvedRuntimeDependency {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly source: RuntimeDependencySource;
|
|
5
|
+
}
|
|
6
|
+
export interface PersistedRuntimeDependencies {
|
|
7
|
+
readonly singBoxBinary?: string;
|
|
8
|
+
readonly chromeBinary?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveSingBoxDependency(input?: {
|
|
11
|
+
readonly explicitPath?: string | undefined;
|
|
12
|
+
readonly persistedPath?: string | undefined;
|
|
13
|
+
}): Promise<ResolvedRuntimeDependency>;
|
|
14
|
+
export declare function resolveChromeDependency(input?: {
|
|
15
|
+
readonly explicitPath?: string | undefined;
|
|
16
|
+
readonly persistedPath?: string | undefined;
|
|
17
|
+
}): Promise<ResolvedRuntimeDependency>;
|
|
18
|
+
export declare function persistRuntimeDependencies(input: {
|
|
19
|
+
readonly configPath: string;
|
|
20
|
+
readonly singBox?: ResolvedRuntimeDependency;
|
|
21
|
+
readonly chrome?: ResolvedRuntimeDependency;
|
|
22
|
+
}): Promise<boolean>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { access, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { platform } from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import YAML from "yaml";
|
|
6
|
+
export async function resolveSingBoxDependency(input = {}) {
|
|
7
|
+
const candidates = [];
|
|
8
|
+
if (input.explicitPath) {
|
|
9
|
+
candidates.push({ path: input.explicitPath, source: "explicit" });
|
|
10
|
+
}
|
|
11
|
+
if (input.persistedPath) {
|
|
12
|
+
candidates.push({ path: input.persistedPath, source: "persisted" });
|
|
13
|
+
}
|
|
14
|
+
if (process.env.SING_BOX_BIN) {
|
|
15
|
+
candidates.push({ path: process.env.SING_BOX_BIN, source: "env" });
|
|
16
|
+
}
|
|
17
|
+
candidates.push({
|
|
18
|
+
path: path.resolve(process.cwd(), ".tools", "sing-box-1.13.4-darwin-arm64", "sing-box"),
|
|
19
|
+
source: "repo-tool",
|
|
20
|
+
});
|
|
21
|
+
for (const candidate of resolvePathCandidates("sing-box")) {
|
|
22
|
+
candidates.push({ path: candidate, source: "path" });
|
|
23
|
+
}
|
|
24
|
+
for (const candidate of candidates) {
|
|
25
|
+
if (await isExecutable(candidate.path)) {
|
|
26
|
+
return candidate;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const installHint = platform() === "darwin"
|
|
30
|
+
? " Install it with `brew install sing-box`, set runtime.dependencies.singBoxBinary, or set SING_BOX_BIN."
|
|
31
|
+
: " Set runtime.dependencies.singBoxBinary or SING_BOX_BIN after installing sing-box.";
|
|
32
|
+
throw new Error(`Unable to find a usable sing-box binary.${installHint}`);
|
|
33
|
+
}
|
|
34
|
+
export async function resolveChromeDependency(input = {}) {
|
|
35
|
+
const candidates = [];
|
|
36
|
+
if (input.explicitPath) {
|
|
37
|
+
candidates.push({ path: input.explicitPath, source: "explicit" });
|
|
38
|
+
}
|
|
39
|
+
if (input.persistedPath) {
|
|
40
|
+
candidates.push({ path: input.persistedPath, source: "persisted" });
|
|
41
|
+
}
|
|
42
|
+
if (process.env.CHROME_BIN) {
|
|
43
|
+
candidates.push({ path: process.env.CHROME_BIN, source: "env" });
|
|
44
|
+
}
|
|
45
|
+
candidates.push({
|
|
46
|
+
path: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
|
47
|
+
source: "app-bundle",
|
|
48
|
+
});
|
|
49
|
+
candidates.push({
|
|
50
|
+
path: "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
|
|
51
|
+
source: "app-bundle",
|
|
52
|
+
});
|
|
53
|
+
for (const candidate of candidates) {
|
|
54
|
+
if (await isExecutable(candidate.path)) {
|
|
55
|
+
return candidate;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
throw new Error("Unable to find a usable Chrome binary. Install Google Chrome, set runtime.dependencies.chromeBinary, or set CHROME_BIN.");
|
|
59
|
+
}
|
|
60
|
+
export async function persistRuntimeDependencies(input) {
|
|
61
|
+
if (!input.singBox && !input.chrome) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const raw = await readFile(input.configPath, "utf8");
|
|
65
|
+
const parsed = YAML.parse(raw);
|
|
66
|
+
const runtime = asRecord(parsed.runtime);
|
|
67
|
+
const dependencies = asRecord(runtime.dependencies);
|
|
68
|
+
let changed = false;
|
|
69
|
+
if (input.singBox) {
|
|
70
|
+
changed = updateValue(dependencies, "singBoxBinary", input.singBox.path) || changed;
|
|
71
|
+
changed = updateValue(dependencies, "singBoxSource", input.singBox.source) || changed;
|
|
72
|
+
}
|
|
73
|
+
if (input.chrome) {
|
|
74
|
+
changed = updateValue(dependencies, "chromeBinary", input.chrome.path) || changed;
|
|
75
|
+
changed = updateValue(dependencies, "chromeSource", input.chrome.source) || changed;
|
|
76
|
+
}
|
|
77
|
+
changed = updateValue(dependencies, "resolvedAt", new Date().toISOString()) || changed;
|
|
78
|
+
if (!changed) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
runtime.dependencies = dependencies;
|
|
82
|
+
parsed.runtime = runtime;
|
|
83
|
+
await writeFile(input.configPath, YAML.stringify(parsed), "utf8");
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
function asRecord(value) {
|
|
87
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
88
|
+
? { ...value }
|
|
89
|
+
: {};
|
|
90
|
+
}
|
|
91
|
+
function updateValue(target, key, value) {
|
|
92
|
+
if (target[key] === value) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
target[key] = value;
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
async function isExecutable(filePath) {
|
|
99
|
+
try {
|
|
100
|
+
await access(filePath, constants.X_OK);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function resolvePathCandidates(commandName) {
|
|
108
|
+
return (process.env.PATH ?? "")
|
|
109
|
+
.split(path.delimiter)
|
|
110
|
+
.filter((entry) => entry.length > 0)
|
|
111
|
+
.map((entry) => path.join(entry, commandName))
|
|
112
|
+
.filter((candidate, index, items) => items.indexOf(candidate) === index);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/runtime-dependencies/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BuilderConfig } from "../../config/schema.js";
|
|
2
|
+
import type { IntentIR } from "../../domain/intent.js";
|
|
3
|
+
import type { DesktopRuntimeProfileKind, RuntimeMode, RuntimeModeDefaults } from "../../domain/runtime-mode.js";
|
|
4
|
+
interface RuntimeModeInferenceInput {
|
|
5
|
+
readonly phase: "onboarding" | "update";
|
|
6
|
+
readonly prompt?: string;
|
|
7
|
+
readonly intent?: IntentIR;
|
|
8
|
+
readonly config?: BuilderConfig;
|
|
9
|
+
readonly proxifierBundleIds?: readonly string[];
|
|
10
|
+
readonly runInForeground?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface RuntimeModeScenario {
|
|
13
|
+
readonly inbound: "in-mixed" | "in-proxifier";
|
|
14
|
+
}
|
|
15
|
+
export declare function inferRuntimeMode(input: RuntimeModeInferenceInput): RuntimeMode;
|
|
16
|
+
export declare function getRuntimeModeDefaults(mode: RuntimeMode): RuntimeModeDefaults;
|
|
17
|
+
export declare function inferDesktopRuntimeProfile(input: {
|
|
18
|
+
readonly mode: RuntimeMode;
|
|
19
|
+
readonly prompt?: string;
|
|
20
|
+
readonly config?: BuilderConfig;
|
|
21
|
+
}): DesktopRuntimeProfileKind;
|
|
22
|
+
export declare function selectVerificationScenariosForRuntimeMode<T extends RuntimeModeScenario>(mode: RuntimeMode, scenarios: readonly T[]): readonly T[];
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const processKeywords = [
|
|
2
|
+
"proxifier",
|
|
3
|
+
"进程级",
|
|
4
|
+
"process-level",
|
|
5
|
+
"process proxy",
|
|
6
|
+
"独立入口",
|
|
7
|
+
"独立的入口",
|
|
8
|
+
];
|
|
9
|
+
const tunKeywords = ["tun", "全局代理", "全局模式", "系统全局", "utun", "全局接管"];
|
|
10
|
+
export function inferRuntimeMode(input) {
|
|
11
|
+
if (input.phase === "update") {
|
|
12
|
+
return "headless-daemon";
|
|
13
|
+
}
|
|
14
|
+
const prompt = input.prompt?.toLowerCase() ?? "";
|
|
15
|
+
const hasProcessPrompt = processKeywords.some((keyword) => prompt.includes(keyword));
|
|
16
|
+
const hasProcessIntent = (input.intent?.processPolicies.length ?? 0) > 0;
|
|
17
|
+
const hasProxifierBundles = (input.proxifierBundleIds?.length ?? 0) > 0;
|
|
18
|
+
const hasProxifierScenarios = input.config?.verification.scenarios.some((scenario) => scenario.inbound === "in-proxifier") ??
|
|
19
|
+
false;
|
|
20
|
+
if (hasProcessPrompt || hasProcessIntent || hasProxifierBundles || hasProxifierScenarios) {
|
|
21
|
+
return "process-proxy";
|
|
22
|
+
}
|
|
23
|
+
if (input.runInForeground === false) {
|
|
24
|
+
return "headless-daemon";
|
|
25
|
+
}
|
|
26
|
+
return "browser-proxy";
|
|
27
|
+
}
|
|
28
|
+
export function getRuntimeModeDefaults(mode) {
|
|
29
|
+
switch (mode) {
|
|
30
|
+
case "process-proxy":
|
|
31
|
+
return {
|
|
32
|
+
preferredListeners: ["proxifier", "mixed"],
|
|
33
|
+
dnsMode: "real-ip",
|
|
34
|
+
openVisibleBrowserByDefault: true,
|
|
35
|
+
visibleBrowserScenarioLimit: 4,
|
|
36
|
+
scheduleRecommended: true,
|
|
37
|
+
desktopProfile: "system-proxy",
|
|
38
|
+
};
|
|
39
|
+
case "headless-daemon":
|
|
40
|
+
return {
|
|
41
|
+
preferredListeners: ["mixed"],
|
|
42
|
+
dnsMode: "real-ip",
|
|
43
|
+
openVisibleBrowserByDefault: false,
|
|
44
|
+
visibleBrowserScenarioLimit: 0,
|
|
45
|
+
scheduleRecommended: true,
|
|
46
|
+
desktopProfile: "none",
|
|
47
|
+
};
|
|
48
|
+
default:
|
|
49
|
+
return {
|
|
50
|
+
preferredListeners: ["mixed"],
|
|
51
|
+
dnsMode: "real-ip",
|
|
52
|
+
openVisibleBrowserByDefault: true,
|
|
53
|
+
visibleBrowserScenarioLimit: 3,
|
|
54
|
+
scheduleRecommended: false,
|
|
55
|
+
desktopProfile: "system-proxy",
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export function inferDesktopRuntimeProfile(input) {
|
|
60
|
+
const prompt = input.prompt?.toLowerCase() ?? "";
|
|
61
|
+
if (tunKeywords.some((keyword) => prompt.includes(keyword))) {
|
|
62
|
+
return "tun";
|
|
63
|
+
}
|
|
64
|
+
if (input.config?.runtime.desktop.profile) {
|
|
65
|
+
return input.config.runtime.desktop.profile;
|
|
66
|
+
}
|
|
67
|
+
return getRuntimeModeDefaults(input.mode).desktopProfile;
|
|
68
|
+
}
|
|
69
|
+
export function selectVerificationScenariosForRuntimeMode(mode, scenarios) {
|
|
70
|
+
switch (mode) {
|
|
71
|
+
case "process-proxy":
|
|
72
|
+
return sortScenariosByInbound(scenarios, ["in-proxifier", "in-mixed"]);
|
|
73
|
+
case "headless-daemon":
|
|
74
|
+
case "browser-proxy": {
|
|
75
|
+
const mixedOnly = scenarios.filter((scenario) => scenario.inbound === "in-mixed");
|
|
76
|
+
return mixedOnly.length > 0 ? mixedOnly : sortScenariosByInbound(scenarios, ["in-mixed"]);
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
return scenarios;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function sortScenariosByInbound(scenarios, priority) {
|
|
83
|
+
const rank = new Map(priority.map((value, index) => [value, index]));
|
|
84
|
+
return [...scenarios].sort((left, right) => (rank.get(left.inbound) ?? priority.length) - (rank.get(right.inbound) ?? priority.length));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/runtime-mode/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export interface ScheduleRemoveInput {
|
|
|
22
22
|
readonly launchAgentsDir?: string;
|
|
23
23
|
readonly unload?: boolean;
|
|
24
24
|
}
|
|
25
|
+
export declare const defaultLaunchAgentLabel = "org.singbox-iac.update";
|
|
25
26
|
export declare function installLaunchdSchedule(input: ScheduleInstallInput): Promise<ScheduleInstallResult>;
|
|
26
27
|
export declare function removeLaunchdSchedule(input: ScheduleRemoveInput): Promise<string>;
|
|
27
28
|
export declare function renderLaunchAgentPlist(input: {
|
|
@@ -3,7 +3,7 @@ import { constants } from "node:fs";
|
|
|
3
3
|
import { access, mkdir, rm, writeFile } from "node:fs/promises";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
const defaultLaunchAgentLabel = "org.singbox-iac.update";
|
|
6
|
+
export const defaultLaunchAgentLabel = "org.singbox-iac.update";
|
|
7
7
|
export async function installLaunchdSchedule(input) {
|
|
8
8
|
const label = input.label ?? defaultLaunchAgentLabel;
|
|
9
9
|
const launchAgentsDir = input.launchAgentsDir ?? path.join(homedir(), "Library", "LaunchAgents");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/schedule/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,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AA6B7B,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/schedule/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,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AA6B7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAA2B;IAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,uBAAuB,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACjG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC;IAE7D,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;QAC/C,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QAChD,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1C,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACnC,KAAK;QACL,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,gBAAgB;QAChB,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY;YAC3C,CAAC,CAAC;gBACE,WAAW,EAAE;oBACX,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnF,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChF;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,KAAK;QACL,SAAS;QACT,UAAU;QACV,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAA0B;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,uBAAuB,CAAC;IACrD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;IAE/D,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,YAAY,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAQtC;IACC,MAAM,kBAAkB,GAAG;QACzB,IAAI,EAAE,kBAAkB,EAAE;QAC1B,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;KAC7B,CAAC;IAEF,OAAO;;;;;YAKG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;;;EAGhC,KAAK,CAAC,gBAAgB;SACrB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC;;;YAGD,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;;aAEhC,KAAK,CAAC,eAAe,GAAG,EAAE;;;;YAI3B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;;YAE3B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;;;EAGrC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;SACjC,GAAG,CACF,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,YAAY,SAAS,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,KAAK,CAAC,WAAW,CAC/F;SACA,IAAI,CAAC,IAAI,CAAC;;;;CAIZ,CAAC;AACF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,GAAG,eAAe,EAAE,IAAI,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAuB,EAAE,YAAY,GAAG,KAAK;IACvE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE;YAC1C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9F,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG;QACd,OAAO,CAAC,GAAG,CAAC,IAAI;QAChB,gEAAgE;KACjE;SACE,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACjF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAIhC;IACC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACtF,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|