@kaitranntt/ccs 8.10.0-dev.6 → 8.10.0-dev.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 (47) hide show
  1. package/dist/cliproxy/model-catalog.js +3 -3
  2. package/dist/cliproxy/model-catalog.js.map +1 -1
  3. package/dist/dispatcher/flows/settings-flow.d.ts.map +1 -1
  4. package/dist/dispatcher/flows/settings-flow.js +3 -1
  5. package/dist/dispatcher/flows/settings-flow.js.map +1 -1
  6. package/dist/ui/assets/{Trans-CGnOhST_.js → Trans-xqk2XD39.js} +1 -1
  7. package/dist/ui/assets/{accounts-EzUxi_nb.js → accounts-BlRAkYAk.js} +1 -1
  8. package/dist/ui/assets/{alert-dialog-B8DLhTHu.js → alert-dialog-CcUeUYdg.js} +1 -1
  9. package/dist/ui/assets/{api-BxdwejU4.js → api-DhPNQljt.js} +1 -1
  10. package/dist/ui/assets/{auth-section-C3gnKH98.js → auth-section-C_iyNDq5.js} +1 -1
  11. package/dist/ui/assets/{backups-section-ysJe3hyz.js → backups-section-C1-oCcY5.js} +1 -1
  12. package/dist/ui/assets/{channels-B9NWl6fI.js → channels-Cd5H18u0.js} +1 -1
  13. package/dist/ui/assets/{checkbox-Dn33fxA2.js → checkbox-C8n0aFaa.js} +1 -1
  14. package/dist/ui/assets/{claude-extension-BLJ2-jOC.js → claude-extension-B-5VnJRC.js} +1 -1
  15. package/dist/ui/assets/{cliproxy-OyBpbqud.js → cliproxy-CZ8tSogS.js} +1 -1
  16. package/dist/ui/assets/{cliproxy-ai-providers-D_IjDRe2.js → cliproxy-ai-providers-B-hYIiu3.js} +1 -1
  17. package/dist/ui/assets/{cliproxy-control-panel-5C0_vnAr.js → cliproxy-control-panel-CfDoejqf.js} +1 -1
  18. package/dist/ui/assets/{codex-BaEuhJ3i.js → codex--S3Cvw0c.js} +1 -1
  19. package/dist/ui/assets/{confirm-dialog-CVMiAMls.js → confirm-dialog-BwnBmAl6.js} +1 -1
  20. package/dist/ui/assets/{copilot-DY7q7vsg.js → copilot-DVlAGiRd.js} +1 -1
  21. package/dist/ui/assets/{cursor-vbfvu0qi.js → cursor-CmxPgdan.js} +1 -1
  22. package/dist/ui/assets/{droid-DWricpYw.js → droid-jWGgUjda.js} +1 -1
  23. package/dist/ui/assets/{globalenv-section-DYelCtK4.js → globalenv-section-DOYFOppa.js} +1 -1
  24. package/dist/ui/assets/{health-COliT3Ib.js → health-jYSmfBRk.js} +1 -1
  25. package/dist/ui/assets/{index-B_LdwIHs.js → index-9WkoYsht.js} +1 -1
  26. package/dist/ui/assets/{index-qzNip7SS.js → index-BLTGC5pm.js} +1 -1
  27. package/dist/ui/assets/{index-SXMyauQZ.js → index-C3B7rTv-.js} +1 -1
  28. package/dist/ui/assets/{index-CJxkDieI.js → index-CFkHtxyR.js} +1 -1
  29. package/dist/ui/assets/{index-ByKMFb5S.js → index-CHgrn1Ho.js} +1 -1
  30. package/dist/ui/assets/{index-BFwJElVR.js → index-Ct0P3utn.js} +2 -2
  31. package/dist/ui/assets/{index-C6r3KFWo.js → index-D2YFM7Y_.js} +1 -1
  32. package/dist/ui/assets/{logs-DbTkz4NK.js → logs-C4RaKgfS.js} +1 -1
  33. package/dist/ui/assets/{masked-input-DK2W99EZ.js → masked-input-iFuJsKLA.js} +1 -1
  34. package/dist/ui/assets/{proxy-status-widget-CY8C5RfG.js → proxy-status-widget-DNKaYr3b.js} +1 -1
  35. package/dist/ui/assets/{raw-json-settings-editor-panel-CLflAaZG.js → raw-json-settings-editor-panel-BfyXAaAb.js} +1 -1
  36. package/dist/ui/assets/{searchable-select-C-kb4Qfj.js → searchable-select-CN5pxfc9.js} +1 -1
  37. package/dist/ui/assets/{separator-ClOIK-BS.js → separator-CQyYsq4C.js} +1 -1
  38. package/dist/ui/assets/{shared-BbalNvwM.js → shared-DsI6Zxot.js} +1 -1
  39. package/dist/ui/assets/{table-Ce6VOiHM.js → table-D89Qn9vl.js} +1 -1
  40. package/dist/ui/assets/{updates-DS3ZgMst.js → updates-C_sclBwV.js} +1 -1
  41. package/dist/ui/assets/{use-accounts-WNtTqblM.js → use-accounts-Ck9maHL2.js} +1 -1
  42. package/dist/ui/index.html +1 -1
  43. package/dist/utils/openai-compat-launch-settings.d.ts +11 -1
  44. package/dist/utils/openai-compat-launch-settings.d.ts.map +1 -1
  45. package/dist/utils/openai-compat-launch-settings.js +55 -5
  46. package/dist/utils/openai-compat-launch-settings.js.map +1 -1
  47. package/package.json +1 -1
@@ -27,6 +27,8 @@ exports.createOpenAICompatLaunchSettings = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const os = __importStar(require("os"));
29
29
  const path = __importStar(require("path"));
30
+ const crypto_1 = require("crypto");
31
+ const config_manager_1 = require("./config-manager");
30
32
  const shell_executor_1 = require("./shell-executor");
31
33
  // SIBLING HELPER: src/cliproxy/executor/launch-settings.ts (prepareLaunchSettings)
32
34
  // solves the same problem by OVERLAYING resolved routing values instead of
@@ -34,9 +36,7 @@ const shell_executor_1 = require("./shell-executor");
34
36
  // delete a routing key (e.g. ANTHROPIC_API_KEY in settings-flow) and need it
35
37
  // ABSENT from the launch settings. Do not unify without an explicit force-absent
36
38
  // key list — see issue #1609.
37
- function createOpenAICompatLaunchSettings(settingsPath, settings) {
38
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-openai-compat-settings-'));
39
- fs.chmodSync(tempDir, 0o700);
39
+ function createOpenAICompatLaunchSettings(settingsPath, settings, options) {
40
40
  const launchSettings = JSON.parse(JSON.stringify(settings));
41
41
  const sanitizedEnv = Object.fromEntries(Object.entries((0, shell_executor_1.stripAnthropicRoutingEnv)({ ...(launchSettings.env ?? {}) })).filter((entry) => typeof entry[1] === 'string'));
42
42
  if (Object.keys(sanitizedEnv).length > 0) {
@@ -45,8 +45,53 @@ function createOpenAICompatLaunchSettings(settingsPath, settings) {
45
45
  else {
46
46
  delete launchSettings.env;
47
47
  }
48
+ const contentStr = JSON.stringify(launchSettings, null, 2) + '\n';
49
+ if (options?.durable) {
50
+ // Durable mode: key one private directory per canonical settings path so each
51
+ // profile has exactly one snapshot, atomically replaced on content updates.
52
+ // Do not fall back to $TMPDIR: failure here must fail the launch early rather than
53
+ // causing a deferred background fleet respawn crash (Issue #1734).
54
+ const pathHash = (0, crypto_1.createHash)('sha256')
55
+ .update(path.resolve(settingsPath))
56
+ .digest('hex')
57
+ .slice(0, 16);
58
+ const durableDir = path.join((0, config_manager_1.getCcsDir)(), 'cache', 'isolated-settings', pathHash);
59
+ fs.mkdirSync(durableDir, { recursive: true, mode: 0o700 });
60
+ fs.chmodSync(durableDir, 0o700);
61
+ const launchSettingsPath = path.join(durableDir, path.basename(settingsPath));
62
+ const tempFile = path.join(durableDir, `.${path.basename(settingsPath)}.${(0, crypto_1.randomUUID)()}.tmp`);
63
+ let renamed = false;
64
+ try {
65
+ fs.writeFileSync(tempFile, contentStr, {
66
+ encoding: 'utf8',
67
+ mode: 0o600,
68
+ flag: 'wx',
69
+ });
70
+ fs.renameSync(tempFile, launchSettingsPath);
71
+ renamed = true;
72
+ }
73
+ finally {
74
+ if (!renamed) {
75
+ try {
76
+ fs.unlinkSync(tempFile);
77
+ }
78
+ catch {
79
+ // best-effort cleanup on failure
80
+ }
81
+ }
82
+ }
83
+ return {
84
+ settingsPath: launchSettingsPath,
85
+ cleanup: () => {
86
+ // No-op in durable mode: snapshot persists for background fleet daemon respawns.
87
+ },
88
+ };
89
+ }
90
+ // Ephemeral mode (default / headless): create isolated tempdir in os.tmpdir() and purge on cleanup.
91
+ const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ccs-openai-compat-settings-'));
92
+ fs.chmodSync(tempDir, 0o700);
48
93
  const launchSettingsPath = path.join(tempDir, path.basename(settingsPath));
49
- fs.writeFileSync(launchSettingsPath, JSON.stringify(launchSettings, null, 2) + '\n', {
94
+ fs.writeFileSync(launchSettingsPath, contentStr, {
50
95
  encoding: 'utf8',
51
96
  mode: 0o600,
52
97
  });
@@ -56,7 +101,12 @@ function createOpenAICompatLaunchSettings(settingsPath, settings) {
56
101
  return;
57
102
  }
58
103
  cleanedUp = true;
59
- fs.rmSync(tempDir, { recursive: true, force: true });
104
+ try {
105
+ fs.rmSync(tempDir, { recursive: true, force: true });
106
+ }
107
+ catch {
108
+ // best-effort cleanup
109
+ }
60
110
  };
61
111
  return {
62
112
  settingsPath: launchSettingsPath,
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compat-launch-settings.js","sourceRoot":"","sources":["../../src/utils/openai-compat-launch-settings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAG7B,qDAA4D;AAO5D,mFAAmF;AACnF,2EAA2E;AAC3E,kFAAkF;AAClF,6EAA6E;AAC7E,iFAAiF;AACjF,8BAA8B;AAC9B,SAAgB,gCAAgC,CAC9C,YAAoB,EACpB,QAAkB;IAElB,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACtF,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE7B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAa,CAAC;IACxE,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,OAAO,CAAC,IAAA,yCAAwB,EAAC,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAChF,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CACnE,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,cAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACnF,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,SAAS,GAAG,IAAI,CAAC;QACjB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,kBAAkB;QAChC,OAAO;KACR,CAAC;AACJ,CAAC;AAvCD,4EAuCC"}
1
+ {"version":3,"file":"openai-compat-launch-settings.js","sourceRoot":"","sources":["../../src/utils/openai-compat-launch-settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaitranntt/ccs",
3
- "version": "8.10.0-dev.6",
3
+ "version": "8.10.0-dev.8",
4
4
  "description": "Claude Codex Switch - Instant profile switching between Claude, GLM, Kimi, and more",
5
5
  "keywords": [
6
6
  "cli",