@singbox-iac/cli 0.1.6 → 0.1.8

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.
Files changed (82) hide show
  1. package/README-en.md +24 -1
  2. package/README.md +24 -1
  3. package/dist/cli/commands/apply.js +21 -9
  4. package/dist/cli/commands/apply.js.map +1 -1
  5. package/dist/cli/commands/author.d.ts +3 -0
  6. package/dist/cli/commands/author.js +25 -3
  7. package/dist/cli/commands/author.js.map +1 -1
  8. package/dist/cli/commands/history.d.ts +2 -0
  9. package/dist/cli/commands/history.js +21 -0
  10. package/dist/cli/commands/history.js.map +1 -0
  11. package/dist/cli/commands/proxifier.js +60 -5
  12. package/dist/cli/commands/proxifier.js.map +1 -1
  13. package/dist/cli/commands/rollback.d.ts +2 -0
  14. package/dist/cli/commands/rollback.js +38 -0
  15. package/dist/cli/commands/rollback.js.map +1 -0
  16. package/dist/cli/commands/setup.js +24 -4
  17. package/dist/cli/commands/setup.js.map +1 -1
  18. package/dist/cli/commands/update.js +8 -0
  19. package/dist/cli/commands/update.js.map +1 -1
  20. package/dist/cli/commands/use.js +7 -0
  21. package/dist/cli/commands/use.js.map +1 -1
  22. package/dist/cli/commands/verify.js +72 -20
  23. package/dist/cli/commands/verify.js.map +1 -1
  24. package/dist/cli/index.js +6 -0
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/domain/dns-plan.d.ts +27 -0
  27. package/dist/domain/dns-plan.js +2 -0
  28. package/dist/domain/dns-plan.js.map +1 -0
  29. package/dist/domain/intent.d.ts +61 -0
  30. package/dist/domain/intent.js +2 -0
  31. package/dist/domain/intent.js.map +1 -0
  32. package/dist/domain/runtime-mode.d.ts +8 -0
  33. package/dist/domain/runtime-mode.js +2 -0
  34. package/dist/domain/runtime-mode.js.map +1 -0
  35. package/dist/domain/transaction.d.ts +12 -0
  36. package/dist/domain/transaction.js +2 -0
  37. package/dist/domain/transaction.js.map +1 -0
  38. package/dist/domain/verification-plan.d.ts +34 -0
  39. package/dist/domain/verification-plan.js +2 -0
  40. package/dist/domain/verification-plan.js.map +1 -0
  41. package/dist/modules/authoring/index.d.ts +4 -0
  42. package/dist/modules/authoring/index.js +50 -21
  43. package/dist/modules/authoring/index.js.map +1 -1
  44. package/dist/modules/build/index.d.ts +3 -0
  45. package/dist/modules/build/index.js +8 -1
  46. package/dist/modules/build/index.js.map +1 -1
  47. package/dist/modules/compiler/index.d.ts +2 -2
  48. package/dist/modules/compiler/index.js +38 -53
  49. package/dist/modules/compiler/index.js.map +1 -1
  50. package/dist/modules/dns-plan/index.d.ts +10 -0
  51. package/dist/modules/dns-plan/index.js +104 -0
  52. package/dist/modules/dns-plan/index.js.map +1 -0
  53. package/dist/modules/intent/index.d.ts +7 -0
  54. package/dist/modules/intent/index.js +101 -0
  55. package/dist/modules/intent/index.js.map +1 -0
  56. package/dist/modules/natural-language/index.d.ts +5 -0
  57. package/dist/modules/natural-language/index.js +52 -9
  58. package/dist/modules/natural-language/index.js.map +1 -1
  59. package/dist/modules/preview/index.d.ts +4 -0
  60. package/dist/modules/preview/index.js +3 -0
  61. package/dist/modules/preview/index.js.map +1 -1
  62. package/dist/modules/proxifier/index.d.ts +15 -4
  63. package/dist/modules/proxifier/index.js +146 -40
  64. package/dist/modules/proxifier/index.js.map +1 -1
  65. package/dist/modules/runtime-mode/index.d.ts +18 -0
  66. package/dist/modules/runtime-mode/index.js +72 -0
  67. package/dist/modules/runtime-mode/index.js.map +1 -0
  68. package/dist/modules/transactions/index.d.ts +20 -0
  69. package/dist/modules/transactions/index.js +150 -0
  70. package/dist/modules/transactions/index.js.map +1 -0
  71. package/dist/modules/update/index.d.ts +1 -0
  72. package/dist/modules/update/index.js +22 -6
  73. package/dist/modules/update/index.js.map +1 -1
  74. package/dist/modules/verification/index.d.ts +42 -0
  75. package/dist/modules/verification/index.js +274 -0
  76. package/dist/modules/verification/index.js.map +1 -1
  77. package/dist/modules/verification-plan/index.d.ts +9 -0
  78. package/dist/modules/verification-plan/index.js +117 -0
  79. package/dist/modules/verification-plan/index.js.map +1 -0
  80. package/docs/natural-language-authoring.md +36 -0
  81. package/docs/proxifier-onboarding.md +14 -0
  82. 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: "Recommended process patterns for Google Antigravity and its language services.",
8
- processes: [
9
- "Antigravity.app",
10
- "Antigravity",
11
- "com.google.antigravity",
12
- "*Antigravity*",
13
- "language_server_macos_arm",
14
- "antigravity-auto-updater",
15
- "*antigravity*",
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: "Common Cursor desktop and helper process names.",
22
- processes: ["Cursor", "Cursor.app", "Cursor Helper", "cursor", "*cursor*"],
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: "Common developer-facing AI and coding tool process names.",
28
- processes: [
29
- "claude",
30
- "codex",
31
- "gemini",
32
- "codebuddy",
33
- "cbc",
34
- "opencode",
35
- "qoder",
36
- "qodercli",
37
- "trae",
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
- "developer-ai-cli": [
45
- "claude",
46
- "codex",
47
- "gemini",
48
- "codebuddy",
49
- "opencode",
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
- await mkdir(bundlesDir, { recursive: true });
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 filePath = path.join(bundlesDir, `${bundle.id}.txt`);
106
- await writeFile(filePath, [`# ${bundle.name}`, `# ${bundle.description}`, ...bundle.processes, ""].join("\n"), "utf8");
107
- bundlePaths.push(filePath);
108
- for (const processName of bundle.processes) {
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
- if (!bundle || !bundlePath) {
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/proxifier/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BuilderConfig } from "../../config/schema.js";
2
+ import type { IntentIR } from "../../domain/intent.js";
3
+ import type { 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 selectVerificationScenariosForRuntimeMode<T extends RuntimeModeScenario>(mode: RuntimeMode, scenarios: readonly T[]): readonly T[];
18
+ export {};
@@ -0,0 +1,72 @@
1
+ const processKeywords = [
2
+ "proxifier",
3
+ "进程级",
4
+ "process-level",
5
+ "process proxy",
6
+ "独立入口",
7
+ "独立的入口",
8
+ ];
9
+ export function inferRuntimeMode(input) {
10
+ if (input.phase === "update") {
11
+ return "headless-daemon";
12
+ }
13
+ const prompt = input.prompt?.toLowerCase() ?? "";
14
+ const hasProcessPrompt = processKeywords.some((keyword) => prompt.includes(keyword));
15
+ const hasProcessIntent = (input.intent?.processPolicies.length ?? 0) > 0;
16
+ const hasProxifierBundles = (input.proxifierBundleIds?.length ?? 0) > 0;
17
+ const hasProxifierScenarios = input.config?.verification.scenarios.some((scenario) => scenario.inbound === "in-proxifier") ??
18
+ false;
19
+ if (hasProcessPrompt || hasProcessIntent || hasProxifierBundles || hasProxifierScenarios) {
20
+ return "process-proxy";
21
+ }
22
+ if (input.runInForeground === false) {
23
+ return "headless-daemon";
24
+ }
25
+ return "browser-proxy";
26
+ }
27
+ export function getRuntimeModeDefaults(mode) {
28
+ switch (mode) {
29
+ case "process-proxy":
30
+ return {
31
+ preferredListeners: ["proxifier", "mixed"],
32
+ dnsMode: "real-ip",
33
+ openVisibleBrowserByDefault: true,
34
+ visibleBrowserScenarioLimit: 4,
35
+ scheduleRecommended: true,
36
+ };
37
+ case "headless-daemon":
38
+ return {
39
+ preferredListeners: ["mixed"],
40
+ dnsMode: "real-ip",
41
+ openVisibleBrowserByDefault: false,
42
+ visibleBrowserScenarioLimit: 0,
43
+ scheduleRecommended: true,
44
+ };
45
+ default:
46
+ return {
47
+ preferredListeners: ["mixed"],
48
+ dnsMode: "real-ip",
49
+ openVisibleBrowserByDefault: true,
50
+ visibleBrowserScenarioLimit: 3,
51
+ scheduleRecommended: false,
52
+ };
53
+ }
54
+ }
55
+ export function selectVerificationScenariosForRuntimeMode(mode, scenarios) {
56
+ switch (mode) {
57
+ case "process-proxy":
58
+ return sortScenariosByInbound(scenarios, ["in-proxifier", "in-mixed"]);
59
+ case "headless-daemon":
60
+ case "browser-proxy": {
61
+ const mixedOnly = scenarios.filter((scenario) => scenario.inbound === "in-mixed");
62
+ return mixedOnly.length > 0 ? mixedOnly : sortScenariosByInbound(scenarios, ["in-mixed"]);
63
+ }
64
+ default:
65
+ return scenarios;
66
+ }
67
+ }
68
+ function sortScenariosByInbound(scenarios, priority) {
69
+ const rank = new Map(priority.map((value, index) => [value, index]));
70
+ return [...scenarios].sort((left, right) => (rank.get(left.inbound) ?? priority.length) - (rank.get(right.inbound) ?? priority.length));
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/runtime-mode/index.ts"],"names":[],"mappings":"AAiBA,MAAM,eAAe,GAAG;IACtB,WAAW;IACX,KAAK;IACL,eAAe;IACf,eAAe;IACf,MAAM;IACN,OAAO;CACR,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACjD,MAAM,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,qBAAqB,GACzB,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,cAAc,CAAC;QAC5F,KAAK,CAAC;IAER,IAAI,gBAAgB,IAAI,gBAAgB,IAAI,mBAAmB,IAAI,qBAAqB,EAAE,CAAC;QACzF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;QACpC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAiB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe;YAClB,OAAO;gBACL,kBAAkB,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;gBAC1C,OAAO,EAAE,SAAS;gBAClB,2BAA2B,EAAE,IAAI;gBACjC,2BAA2B,EAAE,CAAC;gBAC9B,mBAAmB,EAAE,IAAI;aAC1B,CAAC;QAEJ,KAAK,iBAAiB;YACpB,OAAO;gBACL,kBAAkB,EAAE,CAAC,OAAO,CAAC;gBAC7B,OAAO,EAAE,SAAS;gBAClB,2BAA2B,EAAE,KAAK;gBAClC,2BAA2B,EAAE,CAAC;gBAC9B,mBAAmB,EAAE,IAAI;aAC1B,CAAC;QAEJ;YACE,OAAO;gBACL,kBAAkB,EAAE,CAAC,OAAO,CAAC;gBAC7B,OAAO,EAAE,SAAS;gBAClB,2BAA2B,EAAE,IAAI;gBACjC,2BAA2B,EAAE,CAAC;gBAC9B,mBAAmB,EAAE,KAAK;aAC3B,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,IAAiB,EACjB,SAAuB;IAEvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,sBAAsB,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QAEzE,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;YAClF,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,SAAuB,EACvB,QAAmD;IAEnD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CACxB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAC7F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { BuilderConfig } from "../../config/schema.js";
2
+ import type { ApplyTransaction } from "../../domain/transaction.js";
3
+ export interface ApplyWithTransactionInput {
4
+ readonly config: BuilderConfig;
5
+ readonly generatedPath: string;
6
+ readonly livePath: string;
7
+ readonly backupPath: string;
8
+ readonly verificationSummary: Record<string, unknown>;
9
+ readonly retainSnapshots?: number;
10
+ readonly apply: () => Promise<void>;
11
+ }
12
+ export interface RollbackInput {
13
+ readonly config: BuilderConfig;
14
+ readonly livePath?: string;
15
+ readonly afterRestore?: () => Promise<void>;
16
+ }
17
+ export declare function applyWithTransaction(input: ApplyWithTransactionInput): Promise<ApplyTransaction>;
18
+ export declare function listTransactionHistory(config: BuilderConfig): Promise<readonly ApplyTransaction[]>;
19
+ export declare function rollbackToPrevious(input: RollbackInput): Promise<ApplyTransaction>;
20
+ export declare function resolveTransactionHistoryPath(config: BuilderConfig): string;
@@ -0,0 +1,150 @@
1
+ import { constants } from "node:fs";
2
+ import { access, copyFile, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export async function applyWithTransaction(input) {
5
+ const txId = createTxId();
6
+ const historyPath = resolveTransactionHistoryPath(input.config);
7
+ const snapshotsDir = resolveSnapshotsDir(input.config);
8
+ await mkdir(path.dirname(historyPath), { recursive: true });
9
+ await mkdir(snapshotsDir, { recursive: true });
10
+ const liveExists = await pathExists(input.livePath);
11
+ const snapshotPath = liveExists ? path.join(snapshotsDir, `${txId}.json`) : undefined;
12
+ if (snapshotPath) {
13
+ await copyFile(input.livePath, snapshotPath);
14
+ }
15
+ if (input.backupPath && liveExists) {
16
+ await mkdir(path.dirname(input.backupPath), { recursive: true });
17
+ await copyFile(input.livePath, input.backupPath);
18
+ }
19
+ const pending = {
20
+ txId,
21
+ generatedPath: input.generatedPath,
22
+ livePath: input.livePath,
23
+ backupPath: input.backupPath,
24
+ ...(snapshotPath ? { snapshotPath } : {}),
25
+ startedAt: new Date().toISOString(),
26
+ status: "pending",
27
+ verificationSummary: input.verificationSummary,
28
+ };
29
+ await appendTransaction(historyPath, pending);
30
+ try {
31
+ await input.apply();
32
+ const applied = {
33
+ ...pending,
34
+ completedAt: new Date().toISOString(),
35
+ status: "applied",
36
+ };
37
+ await replaceLatestTransaction(historyPath, applied);
38
+ await trimSnapshots(historyPath, snapshotsDir, input.retainSnapshots ?? 5);
39
+ return applied;
40
+ }
41
+ catch (error) {
42
+ if (snapshotPath && (await pathExists(snapshotPath))) {
43
+ await copyFile(snapshotPath, input.livePath);
44
+ const rolledBack = {
45
+ ...pending,
46
+ completedAt: new Date().toISOString(),
47
+ status: "rolled-back",
48
+ error: error instanceof Error ? error.message : String(error),
49
+ };
50
+ await replaceLatestTransaction(historyPath, rolledBack);
51
+ }
52
+ else {
53
+ const failed = {
54
+ ...pending,
55
+ completedAt: new Date().toISOString(),
56
+ status: "failed",
57
+ error: error instanceof Error ? error.message : String(error),
58
+ };
59
+ await replaceLatestTransaction(historyPath, failed);
60
+ }
61
+ throw error;
62
+ }
63
+ }
64
+ export async function listTransactionHistory(config) {
65
+ return (await loadTransactionLog(resolveTransactionHistoryPath(config))).entries;
66
+ }
67
+ export async function rollbackToPrevious(input) {
68
+ const config = input.config;
69
+ const livePath = input.livePath ?? config.output.livePath;
70
+ const historyPath = resolveTransactionHistoryPath(config);
71
+ const log = await loadTransactionLog(historyPath);
72
+ const previous = log.entries.find((entry) => entry.status === "applied" && entry.snapshotPath);
73
+ if (!previous?.snapshotPath) {
74
+ throw new Error("No previous snapshot is available for rollback.");
75
+ }
76
+ if (!(await pathExists(previous.snapshotPath))) {
77
+ throw new Error(`The previous snapshot is missing: ${previous.snapshotPath}`);
78
+ }
79
+ await mkdir(path.dirname(livePath), { recursive: true });
80
+ await copyFile(previous.snapshotPath, livePath);
81
+ if (input.afterRestore) {
82
+ await input.afterRestore();
83
+ }
84
+ const tx = {
85
+ txId: createTxId(),
86
+ generatedPath: previous.snapshotPath,
87
+ livePath,
88
+ backupPath: config.output.backupPath,
89
+ snapshotPath: previous.snapshotPath,
90
+ startedAt: new Date().toISOString(),
91
+ completedAt: new Date().toISOString(),
92
+ status: "rolled-back",
93
+ verificationSummary: {
94
+ rollbackTo: previous.txId,
95
+ },
96
+ };
97
+ await appendTransaction(historyPath, tx);
98
+ return tx;
99
+ }
100
+ export function resolveTransactionHistoryPath(config) {
101
+ return path.join(path.dirname(config.output.stagingPath), "transactions.json");
102
+ }
103
+ function resolveSnapshotsDir(config) {
104
+ return path.join(path.dirname(config.output.stagingPath), "snapshots");
105
+ }
106
+ async function loadTransactionLog(historyPath) {
107
+ if (!(await pathExists(historyPath))) {
108
+ return { version: 1, entries: [] };
109
+ }
110
+ return JSON.parse(await readFile(historyPath, "utf8"));
111
+ }
112
+ async function appendTransaction(historyPath, entry) {
113
+ const log = await loadTransactionLog(historyPath);
114
+ await writeFile(historyPath, `${JSON.stringify({ version: 1, entries: [entry, ...log.entries] }, null, 2)}\n`, "utf8");
115
+ }
116
+ async function replaceLatestTransaction(historyPath, entry) {
117
+ const log = await loadTransactionLog(historyPath);
118
+ const [, ...rest] = log.entries;
119
+ await writeFile(historyPath, `${JSON.stringify({ version: 1, entries: [entry, ...rest] }, null, 2)}\n`, "utf8");
120
+ }
121
+ async function trimSnapshots(historyPath, snapshotsDir, retainSnapshots) {
122
+ const log = await loadTransactionLog(historyPath);
123
+ const keep = new Set(log.entries
124
+ .filter((entry) => entry.snapshotPath)
125
+ .slice(0, retainSnapshots)
126
+ .map((entry) => entry.snapshotPath));
127
+ if (!(await pathExists(snapshotsDir))) {
128
+ return;
129
+ }
130
+ const files = await readdir(snapshotsDir);
131
+ await Promise.all(files.map(async (fileName) => {
132
+ const filePath = path.join(snapshotsDir, fileName);
133
+ if (!keep.has(filePath)) {
134
+ await rm(filePath, { force: true });
135
+ }
136
+ }));
137
+ }
138
+ async function pathExists(filePath) {
139
+ try {
140
+ await access(filePath, constants.F_OK);
141
+ return true;
142
+ }
143
+ catch {
144
+ return false;
145
+ }
146
+ }
147
+ function createTxId() {
148
+ return `tx-${Date.now()}-${Math.random().toString(16).slice(2, 10)}`;
149
+ }
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/transactions/index.ts"],"names":[],"mappings":"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"}
@@ -19,5 +19,6 @@ export interface UpdateResult {
19
19
  readonly livePath: string;
20
20
  readonly backupPath?: string;
21
21
  readonly reloaded: boolean;
22
+ readonly transactionId: string;
22
23
  }
23
24
  export declare function runUpdate(input: RunUpdateInput): Promise<UpdateResult>;
@@ -1,6 +1,7 @@
1
1
  import { buildConfigArtifact } from "../build/index.js";
2
2
  import { applyConfig } from "../manager/index.js";
3
3
  import { shouldAutoReloadRuntime } from "../manager/index.js";
4
+ import { applyWithTransaction } from "../transactions/index.js";
4
5
  import { assertVerificationReportPassed, verifyConfigRoutes, } from "../verification/index.js";
5
6
  export async function runUpdate(input) {
6
7
  const build = await buildConfigArtifact({
@@ -22,13 +23,27 @@ export async function runUpdate(input) {
22
23
  const livePath = input.livePath ?? input.config.output.livePath;
23
24
  const backupPath = input.backupPath ?? input.config.output.backupPath;
24
25
  const reloaded = input.reload ?? (await shouldAutoReloadRuntime(input.config.runtime.reload));
25
- await applyConfig({
26
- stagingPath: build.outputPath,
26
+ const transaction = await applyWithTransaction({
27
+ config: input.config,
28
+ generatedPath: build.outputPath,
27
29
  livePath,
28
- ...(backupPath ? { backupPath } : {}),
29
- ...(input.singBoxBinary ? { singBoxBinary: input.singBoxBinary } : {}),
30
- reload: reloaded,
31
- runtime: input.config.runtime.reload,
30
+ backupPath,
31
+ verificationSummary: verification
32
+ ? {
33
+ routeScenariosPassed: verification.scenarios.filter((scenario) => scenario.passed).length,
34
+ routeScenariosTotal: verification.scenarios.length,
35
+ }
36
+ : { routeScenariosSkipped: true },
37
+ apply: async () => {
38
+ await applyConfig({
39
+ stagingPath: build.outputPath,
40
+ livePath,
41
+ ...(backupPath ? { backupPath } : {}),
42
+ ...(input.singBoxBinary ? { singBoxBinary: input.singBoxBinary } : {}),
43
+ reload: reloaded,
44
+ runtime: input.config.runtime.reload,
45
+ });
46
+ },
32
47
  });
33
48
  return {
34
49
  build,
@@ -36,6 +51,7 @@ export async function runUpdate(input) {
36
51
  livePath,
37
52
  ...(backupPath ? { backupPath } : {}),
38
53
  reloaded,
54
+ transactionId: transaction.txId,
39
55
  };
40
56
  }
41
57
  //# sourceMappingURL=index.js.map