xcode-copilot-server 2.1.0 → 3.0.0

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 (153) hide show
  1. package/README.md +94 -29
  2. package/config.json5 +13 -8
  3. package/dist/cli-validators.d.ts +6 -0
  4. package/dist/cli-validators.js +35 -0
  5. package/dist/cli-validators.js.map +1 -0
  6. package/dist/config.d.ts +3 -3
  7. package/dist/config.js +11 -10
  8. package/dist/config.js.map +1 -1
  9. package/dist/conversation-manager.d.ts +2 -1
  10. package/dist/conversation-manager.js +20 -1
  11. package/dist/conversation-manager.js.map +1 -1
  12. package/dist/handlers/responses/streaming.d.ts +6 -0
  13. package/dist/handlers/responses/streaming.js +265 -0
  14. package/dist/handlers/responses/streaming.js.map +1 -0
  15. package/dist/handlers/responses/tool-result-handler.d.ts +4 -0
  16. package/dist/handlers/responses/tool-result-handler.js +9 -0
  17. package/dist/handlers/responses/tool-result-handler.js.map +1 -0
  18. package/dist/handlers/responses.d.ts +4 -0
  19. package/dist/handlers/responses.js +164 -0
  20. package/dist/handlers/responses.js.map +1 -0
  21. package/dist/handlers/streaming-utils.d.ts +1 -0
  22. package/dist/handlers/streaming-utils.js +3 -0
  23. package/dist/handlers/streaming-utils.js.map +1 -1
  24. package/dist/index.js +51 -132
  25. package/dist/index.js.map +1 -1
  26. package/dist/logger.js +15 -4
  27. package/dist/logger.js.map +1 -1
  28. package/dist/providers/claude/count-tokens.d.ts +3 -0
  29. package/dist/providers/claude/count-tokens.js +72 -0
  30. package/dist/providers/claude/count-tokens.js.map +1 -0
  31. package/dist/providers/claude/handler.d.ts +4 -0
  32. package/dist/providers/claude/handler.js +150 -0
  33. package/dist/providers/claude/handler.js.map +1 -0
  34. package/dist/providers/claude/prompt.d.ts +2 -0
  35. package/dist/providers/claude/prompt.js +52 -0
  36. package/dist/providers/claude/prompt.js.map +1 -0
  37. package/dist/providers/claude/provider.d.ts +5 -0
  38. package/dist/providers/claude/provider.js +28 -0
  39. package/dist/providers/claude/provider.js.map +1 -0
  40. package/dist/providers/claude/schemas.d.ts +140 -0
  41. package/dist/providers/claude/schemas.js +58 -0
  42. package/dist/providers/claude/schemas.js.map +1 -0
  43. package/dist/providers/claude/streaming.d.ts +6 -0
  44. package/dist/providers/claude/streaming.js +116 -0
  45. package/dist/providers/claude/streaming.js.map +1 -0
  46. package/dist/providers/claude/tool-results.d.ts +4 -0
  47. package/dist/providers/claude/tool-results.js +19 -0
  48. package/dist/providers/claude/tool-results.js.map +1 -0
  49. package/dist/providers/codex/handler.d.ts +4 -0
  50. package/dist/providers/codex/handler.js +164 -0
  51. package/dist/providers/codex/handler.js.map +1 -0
  52. package/dist/providers/codex/prompt.d.ts +4 -0
  53. package/dist/providers/codex/prompt.js +58 -0
  54. package/dist/providers/codex/prompt.js.map +1 -0
  55. package/dist/providers/codex/provider.d.ts +5 -0
  56. package/dist/providers/codex/provider.js +24 -0
  57. package/dist/providers/codex/provider.js.map +1 -0
  58. package/dist/providers/codex/schemas.d.ts +122 -0
  59. package/dist/providers/codex/schemas.js +55 -0
  60. package/dist/providers/codex/schemas.js.map +1 -0
  61. package/dist/providers/codex/streaming.d.ts +9 -0
  62. package/dist/providers/codex/streaming.js +172 -0
  63. package/dist/providers/codex/streaming.js.map +1 -0
  64. package/dist/providers/codex/tool-results.d.ts +4 -0
  65. package/dist/providers/codex/tool-results.js +9 -0
  66. package/dist/providers/codex/tool-results.js.map +1 -0
  67. package/dist/providers/codex.d.ts +5 -0
  68. package/dist/providers/codex.js +24 -0
  69. package/dist/providers/codex.js.map +1 -0
  70. package/dist/providers/index.d.ts +6 -1
  71. package/dist/providers/index.js +5 -3
  72. package/dist/providers/index.js.map +1 -1
  73. package/dist/providers/openai/handler.d.ts +4 -0
  74. package/dist/providers/openai/handler.js +120 -0
  75. package/dist/providers/openai/handler.js.map +1 -0
  76. package/dist/providers/openai/models.d.ts +3 -0
  77. package/dist/providers/openai/models.js +28 -0
  78. package/dist/providers/openai/models.js.map +1 -0
  79. package/dist/providers/openai/prompt.d.ts +3 -0
  80. package/dist/providers/openai/prompt.js +38 -0
  81. package/dist/providers/openai/prompt.js.map +1 -0
  82. package/dist/providers/openai/provider.d.ts +5 -0
  83. package/dist/providers/openai/provider.js +25 -0
  84. package/dist/providers/openai/provider.js.map +1 -0
  85. package/dist/providers/openai/schemas.d.ts +98 -0
  86. package/dist/providers/openai/schemas.js +76 -0
  87. package/dist/providers/openai/schemas.js.map +1 -0
  88. package/dist/providers/openai/streaming.d.ts +4 -0
  89. package/dist/providers/openai/streaming.js +121 -0
  90. package/dist/providers/openai/streaming.js.map +1 -0
  91. package/dist/providers/shared/errors.d.ts +5 -0
  92. package/dist/providers/shared/errors.js +10 -0
  93. package/dist/providers/shared/errors.js.map +1 -0
  94. package/dist/providers/shared/model-resolver.d.ts +3 -0
  95. package/dist/providers/shared/model-resolver.js +45 -0
  96. package/dist/providers/shared/model-resolver.js.map +1 -0
  97. package/dist/providers/shared/prompt-utils.d.ts +1 -0
  98. package/dist/providers/shared/prompt-utils.js +15 -0
  99. package/dist/providers/shared/prompt-utils.js.map +1 -0
  100. package/dist/providers/shared/session-config.d.ts +15 -0
  101. package/dist/providers/shared/session-config.js +98 -0
  102. package/dist/providers/shared/session-config.js.map +1 -0
  103. package/dist/providers/shared/streaming-core.d.ts +19 -0
  104. package/dist/providers/shared/streaming-core.js +176 -0
  105. package/dist/providers/shared/streaming-core.js.map +1 -0
  106. package/dist/providers/shared/streaming-utils.d.ts +10 -0
  107. package/dist/providers/shared/streaming-utils.js +28 -0
  108. package/dist/providers/shared/streaming-utils.js.map +1 -0
  109. package/dist/schemas/config.d.ts +19 -1
  110. package/dist/schemas/config.js +2 -1
  111. package/dist/schemas/config.js.map +1 -1
  112. package/dist/schemas/responses.d.ts +122 -0
  113. package/dist/schemas/responses.js +54 -0
  114. package/dist/schemas/responses.js.map +1 -0
  115. package/dist/server.js +1 -2
  116. package/dist/server.js.map +1 -1
  117. package/dist/settings-patcher/anthropic.d.ts +5 -0
  118. package/dist/{settings-patcher.js → settings-patcher/anthropic.js} +3 -7
  119. package/dist/settings-patcher/anthropic.js.map +1 -0
  120. package/dist/settings-patcher/claude.d.ts +5 -0
  121. package/dist/settings-patcher/claude.js +75 -0
  122. package/dist/settings-patcher/claude.js.map +1 -0
  123. package/dist/settings-patcher/codex.d.ts +23 -0
  124. package/dist/settings-patcher/codex.js +114 -0
  125. package/dist/settings-patcher/codex.js.map +1 -0
  126. package/dist/settings-patcher/index.d.ts +15 -0
  127. package/dist/settings-patcher/index.js +9 -0
  128. package/dist/settings-patcher/index.js.map +1 -0
  129. package/dist/{settings-patcher.d.ts → settings-patcher/types.d.ts} +1 -5
  130. package/dist/settings-patcher/types.js +2 -0
  131. package/dist/settings-patcher/types.js.map +1 -0
  132. package/dist/startup.d.ts +11 -0
  133. package/dist/startup.js +154 -0
  134. package/dist/startup.js.map +1 -0
  135. package/dist/tool-bridge/constants.d.ts +2 -0
  136. package/dist/tool-bridge/constants.js +3 -0
  137. package/dist/tool-bridge/constants.js.map +1 -0
  138. package/dist/tool-bridge/index.d.ts +1 -0
  139. package/dist/tool-bridge/index.js +1 -0
  140. package/dist/tool-bridge/index.js.map +1 -1
  141. package/dist/tool-bridge/routes.js +2 -1
  142. package/dist/tool-bridge/routes.js.map +1 -1
  143. package/dist/tool-bridge/session-lifecycle.js +1 -1
  144. package/dist/tool-bridge/state.d.ts +1 -1
  145. package/dist/tool-bridge/tool-cache.d.ts +1 -1
  146. package/dist/ui.d.ts +36 -0
  147. package/dist/ui.js +71 -0
  148. package/dist/ui.js.map +1 -0
  149. package/dist/utils/responses-prompt.d.ts +4 -0
  150. package/dist/utils/responses-prompt.js +58 -0
  151. package/dist/utils/responses-prompt.js.map +1 -0
  152. package/package.json +3 -1
  153. package/dist/settings-patcher.js.map +0 -1
@@ -41,14 +41,13 @@ export async function detectPatchState(options) {
41
41
  }
42
42
  return { patched: true };
43
43
  }
44
- export async function patchSettings(options) {
44
+ export async function patchAnthropicSettings(options) {
45
45
  const { logger } = options;
46
46
  const p = options.paths ?? defaultSettingsPaths();
47
47
  await mkdir(p.dir, { recursive: true });
48
48
  // Only back up once so crash recovery doesn't overwrite the original.
49
49
  if (existsSync(p.file) && !existsSync(p.backup)) {
50
50
  await copyFile(p.file, p.backup);
51
- logger.info("Backed up settings.json");
52
51
  }
53
52
  let settings = {};
54
53
  try {
@@ -63,17 +62,14 @@ export async function patchSettings(options) {
63
62
  ANTHROPIC_AUTH_TOKEN: options.authToken ?? "12345",
64
63
  };
65
64
  await writeFile(p.file, JSON.stringify(settings, null, 2) + "\n", "utf-8");
66
- logger.info(`Patched settings.json to point to http://localhost:${String(options.port)}`);
67
65
  }
68
- export async function restoreSettings(options) {
69
- const { logger } = options;
66
+ export async function restoreAnthropicSettings(options) {
70
67
  const p = options.paths ?? defaultSettingsPaths();
71
68
  if (existsSync(p.file)) {
72
69
  await unlink(p.file);
73
70
  }
74
71
  if (existsSync(p.backup)) {
75
72
  await rename(p.backup, p.file);
76
- logger.info("Restored settings.json from backup");
77
73
  }
78
74
  }
79
- //# sourceMappingURL=settings-patcher.js.map
75
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/settings-patcher/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SettingsPaths, PatchResult, PatchOptions, RestoreOptions, DetectOptions } from "./types.js";
2
+ export declare function defaultSettingsPaths(): SettingsPaths;
3
+ export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
4
+ export declare function patchClaudeSettings(options: PatchOptions): Promise<void>;
5
+ export declare function restoreClaudeSettings(options: RestoreOptions): Promise<void>;
@@ -0,0 +1,75 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile, writeFile, rename, unlink, mkdir, copyFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { homedir } from "node:os";
5
+ export function defaultSettingsPaths() {
6
+ const dir = join(homedir(), "Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig");
7
+ return {
8
+ dir,
9
+ file: join(dir, "settings.json"),
10
+ backup: join(dir, "settings.json.backup"),
11
+ };
12
+ }
13
+ function isSettings(value) {
14
+ return typeof value === "object" && value !== null && !Array.isArray(value);
15
+ }
16
+ async function readSettingsFile(path) {
17
+ if (!existsSync(path))
18
+ return null;
19
+ const content = await readFile(path, "utf-8");
20
+ const parsed = JSON.parse(content);
21
+ return isSettings(parsed) ? parsed : null;
22
+ }
23
+ export async function detectPatchState(options) {
24
+ const { logger } = options;
25
+ const p = options.paths ?? defaultSettingsPaths();
26
+ if (!existsSync(p.backup)) {
27
+ return { patched: false };
28
+ }
29
+ try {
30
+ const settings = await readSettingsFile(p.file);
31
+ const url = settings?.env?.ANTHROPIC_BASE_URL;
32
+ if (url) {
33
+ const match = /localhost:(\d+)/.exec(url);
34
+ if (match?.[1]) {
35
+ return { patched: true, port: parseInt(match[1], 10) };
36
+ }
37
+ }
38
+ }
39
+ catch (err) {
40
+ logger.warn(`Could not read settings.json to extract port: ${String(err)}`);
41
+ }
42
+ return { patched: true };
43
+ }
44
+ export async function patchClaudeSettings(options) {
45
+ const { logger } = options;
46
+ const p = options.paths ?? defaultSettingsPaths();
47
+ await mkdir(p.dir, { recursive: true });
48
+ // Only back up once so a crash doesn't clobber the real original
49
+ if (existsSync(p.file) && !existsSync(p.backup)) {
50
+ await copyFile(p.file, p.backup);
51
+ }
52
+ let settings = {};
53
+ try {
54
+ settings = await readSettingsFile(p.file) ?? {};
55
+ }
56
+ catch (err) {
57
+ logger.warn(`Could not read settings.json, starting fresh: ${String(err)}`);
58
+ }
59
+ settings.env = {
60
+ ...settings.env,
61
+ ANTHROPIC_BASE_URL: `http://localhost:${String(options.port)}`,
62
+ ANTHROPIC_AUTH_TOKEN: options.authToken ?? "12345",
63
+ };
64
+ await writeFile(p.file, JSON.stringify(settings, null, 2) + "\n", "utf-8");
65
+ }
66
+ export async function restoreClaudeSettings(options) {
67
+ const p = options.paths ?? defaultSettingsPaths();
68
+ if (existsSync(p.file)) {
69
+ await unlink(p.file);
70
+ }
71
+ if (existsSync(p.backup)) {
72
+ await rename(p.backup, p.file);
73
+ }
74
+ }
75
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/settings-patcher/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Logger } from "../logger.js";
2
+ import type { PatchResult } from "./types.js";
3
+ export type ExecFn = (cmd: string, args: string[]) => Promise<string>;
4
+ export declare function defaultCodexBackupPath(): string;
5
+ export interface CodexPatchOptions {
6
+ port: number;
7
+ logger: Logger;
8
+ exec?: ExecFn;
9
+ backupFile?: string;
10
+ }
11
+ export interface CodexRestoreOptions {
12
+ logger: Logger;
13
+ exec?: ExecFn;
14
+ backupFile?: string;
15
+ }
16
+ export interface CodexDetectOptions {
17
+ logger: Logger;
18
+ exec?: ExecFn;
19
+ backupFile?: string;
20
+ }
21
+ export declare function detectCodexPatchState(options: CodexDetectOptions): Promise<PatchResult>;
22
+ export declare function patchCodexSettings(options: CodexPatchOptions): Promise<void>;
23
+ export declare function restoreCodexSettings(options: CodexRestoreOptions): Promise<void>;
@@ -0,0 +1,114 @@
1
+ // Config.toml doesn't work here because the built-in "openai" provider
2
+ // always takes priority over custom [model_providers.openai] entries:
3
+ // https://github.com/openai/codex/blob/abeafbdca17f6102099ac5b792761b6883c52d35/codex-rs/core/src/config/mod.rs#L1544
4
+ //
5
+ // So we set OPENAI_BASE_URL via launchctl instead, that way Xcode (and
6
+ // any Codex process it spawns) can see it without a shell restart.
7
+ import { existsSync } from "node:fs";
8
+ import { readFile, writeFile, unlink, mkdir } from "node:fs/promises";
9
+ import { execFile as execFileCb } from "node:child_process";
10
+ import { promisify } from "node:util";
11
+ import { join } from "node:path";
12
+ import { homedir } from "node:os";
13
+ const execFileAsync = promisify(execFileCb);
14
+ async function defaultExec(cmd, args) {
15
+ const { stdout } = await execFileAsync(cmd, args);
16
+ return stdout;
17
+ }
18
+ export function defaultCodexBackupPath() {
19
+ return join(homedir(), "Library/Developer/Xcode/CodingAssistant/codex", "env.backup.json");
20
+ }
21
+ async function launchctlGetenv(exec, name) {
22
+ try {
23
+ const value = (await exec("launchctl", ["getenv", name])).trim();
24
+ return value || null;
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ export async function detectCodexPatchState(options) {
31
+ const { logger } = options;
32
+ const exec = options.exec ?? defaultExec;
33
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
34
+ if (!existsSync(backupFile)) {
35
+ return { patched: false };
36
+ }
37
+ try {
38
+ const url = await launchctlGetenv(exec, "OPENAI_BASE_URL");
39
+ if (url) {
40
+ const match = /localhost:(\d+)/.exec(url);
41
+ if (match?.[1]) {
42
+ return { patched: true, port: parseInt(match[1], 10) };
43
+ }
44
+ }
45
+ }
46
+ catch (err) {
47
+ logger.warn(`Could not read OPENAI_BASE_URL: ${String(err)}`);
48
+ }
49
+ return { patched: true };
50
+ }
51
+ export async function patchCodexSettings(options) {
52
+ const { port } = options;
53
+ const exec = options.exec ?? defaultExec;
54
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
55
+ const baseUrl = `http://localhost:${String(port)}/v1`;
56
+ // Only back up once so a crash doesn't clobber the real originals
57
+ if (!existsSync(backupFile)) {
58
+ const backup = {
59
+ OPENAI_BASE_URL: await launchctlGetenv(exec, "OPENAI_BASE_URL"),
60
+ OPENAI_API_KEY: await launchctlGetenv(exec, "OPENAI_API_KEY"),
61
+ };
62
+ const dir = join(backupFile, "..");
63
+ await mkdir(dir, { recursive: true });
64
+ await writeFile(backupFile, JSON.stringify(backup, null, 2) + "\n", "utf-8");
65
+ }
66
+ await exec("launchctl", ["setenv", "OPENAI_BASE_URL", baseUrl]);
67
+ await exec("launchctl", ["setenv", "OPENAI_API_KEY", "xcode-copilot"]);
68
+ }
69
+ export async function restoreCodexSettings(options) {
70
+ const { logger } = options;
71
+ const exec = options.exec ?? defaultExec;
72
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
73
+ if (!existsSync(backupFile)) {
74
+ // No backup found, just unset to be safe
75
+ try {
76
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
77
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
78
+ }
79
+ catch (err) {
80
+ logger.warn(`Failed to unset env vars: ${String(err)}`);
81
+ }
82
+ return;
83
+ }
84
+ try {
85
+ const raw = await readFile(backupFile, "utf-8");
86
+ const backup = JSON.parse(raw);
87
+ if (backup.OPENAI_BASE_URL != null) {
88
+ await exec("launchctl", ["setenv", "OPENAI_BASE_URL", backup.OPENAI_BASE_URL]);
89
+ }
90
+ else {
91
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
92
+ }
93
+ if (backup.OPENAI_API_KEY != null) {
94
+ await exec("launchctl", ["setenv", "OPENAI_API_KEY", backup.OPENAI_API_KEY]);
95
+ }
96
+ else {
97
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
98
+ }
99
+ await unlink(backupFile);
100
+ logger.info("Restored env vars from backup");
101
+ }
102
+ catch (err) {
103
+ logger.warn(`Failed to restore env vars: ${String(err)}`);
104
+ // Restore failed, just try to unset both
105
+ try {
106
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
107
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
108
+ }
109
+ catch (unsetErr) {
110
+ logger.warn(`Failed to unset env vars during recovery: ${String(unsetErr)}`);
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/settings-patcher/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Logger } from "../logger.js";
2
+ import type { ProxyName } from "../providers/index.js";
3
+ export type { SettingsPaths, Settings, PatchResult, PatchOptions, RestoreOptions, DetectOptions, } from "./types.js";
4
+ export { defaultSettingsPaths, detectPatchState, patchClaudeSettings, restoreClaudeSettings, } from "./claude.js";
5
+ export type { ExecFn, CodexPatchOptions, CodexRestoreOptions, CodexDetectOptions, } from "./codex.js";
6
+ export { defaultCodexBackupPath, detectCodexPatchState, patchCodexSettings, restoreCodexSettings, } from "./codex.js";
7
+ export declare const patcherByProxy: Partial<Record<ProxyName, {
8
+ patch: (opts: {
9
+ port: number;
10
+ logger: Logger;
11
+ }) => Promise<void>;
12
+ restore: (opts: {
13
+ logger: Logger;
14
+ }) => Promise<void>;
15
+ }>>;
@@ -0,0 +1,9 @@
1
+ import { patchClaudeSettings, restoreClaudeSettings } from "./claude.js";
2
+ import { patchCodexSettings, restoreCodexSettings } from "./codex.js";
3
+ export { defaultSettingsPaths, detectPatchState, patchClaudeSettings, restoreClaudeSettings, } from "./claude.js";
4
+ export { defaultCodexBackupPath, detectCodexPatchState, patchCodexSettings, restoreCodexSettings, } from "./codex.js";
5
+ export const patcherByProxy = {
6
+ claude: { patch: patchClaudeSettings, restore: restoreClaudeSettings },
7
+ codex: { patch: patchCodexSettings, restore: restoreCodexSettings },
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/settings-patcher/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAWtE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AASrB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,cAAc,GAGrB;IACJ,MAAM,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACtE,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,oBAAoB,EAAE;CACpE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Logger } from "./logger.js";
1
+ import type { Logger } from "../logger.js";
2
2
  export interface SettingsPaths {
3
3
  dir: string;
4
4
  file: string;
@@ -22,8 +22,4 @@ export interface PatchOptions extends BaseOptions {
22
22
  }
23
23
  export type RestoreOptions = BaseOptions;
24
24
  export type DetectOptions = BaseOptions;
25
- export declare function defaultSettingsPaths(): SettingsPaths;
26
- export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
27
- export declare function patchSettings(options: PatchOptions): Promise<void>;
28
- export declare function restoreSettings(options: RestoreOptions): Promise<void>;
29
25
  export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/settings-patcher/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export interface StartOptions {
2
+ port: string;
3
+ proxy: string;
4
+ logLevel: string;
5
+ version: string;
6
+ defaultConfigPath: string;
7
+ config?: string;
8
+ cwd?: string;
9
+ autoPatch?: true;
10
+ }
11
+ export declare function startServer(options: StartOptions): Promise<void>;
@@ -0,0 +1,154 @@
1
+ import { existsSync, readdirSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { CopilotService } from "./copilot-service.js";
5
+ import { loadConfig, resolveConfigPath } from "./config.js";
6
+ import { createServer } from "./server.js";
7
+ import { Logger } from "./logger.js";
8
+ import { providers } from "./providers/index.js";
9
+ import { patcherByProxy } from "./settings-patcher/index.js";
10
+ import { parsePort, parseLogLevel, parseProxy, validateAutoPatch, } from "./cli-validators.js";
11
+ import { bold, dim, createSpinner, printBanner } from "./ui.js";
12
+ const AGENTS_DIR = join(homedir(), "Library/Developer/Xcode/CodingAssistant/Agents/Versions");
13
+ const AGENT_BINARY_NAMES = {
14
+ claude: "claude",
15
+ codex: "codex",
16
+ };
17
+ function findAgentBinary(proxy) {
18
+ const binaryName = AGENT_BINARY_NAMES[proxy];
19
+ if (!binaryName)
20
+ return null;
21
+ if (!existsSync(AGENTS_DIR))
22
+ return null;
23
+ let versions;
24
+ try {
25
+ versions = readdirSync(AGENTS_DIR);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ for (const version of versions) {
31
+ const binaryPath = join(AGENTS_DIR, version, binaryName);
32
+ if (existsSync(binaryPath))
33
+ return binaryPath;
34
+ }
35
+ return null;
36
+ }
37
+ export async function startServer(options) {
38
+ const logLevel = parseLogLevel(options.logLevel);
39
+ const logger = new Logger(logLevel);
40
+ const port = parsePort(options.port);
41
+ const proxy = parseProxy(options.proxy);
42
+ const autoPatch = options.autoPatch === true;
43
+ validateAutoPatch(proxy, autoPatch);
44
+ const provider = providers[proxy];
45
+ const configPath = options.config ?? resolveConfigPath(options.cwd, process.cwd(), options.defaultConfigPath);
46
+ const config = await loadConfig(configPath, logger, proxy);
47
+ const cwd = options.cwd;
48
+ const service = new CopilotService({
49
+ logLevel,
50
+ logger,
51
+ cwd,
52
+ });
53
+ const quiet = logLevel === "none";
54
+ if (!quiet) {
55
+ console.log();
56
+ console.log(` ${bold("xcode-copilot-server")} ${dim(`v${options.version}`)}`);
57
+ console.log();
58
+ }
59
+ const bootSpinner = quiet ? null : createSpinner("Initialising Copilot SDK...");
60
+ await service.start();
61
+ bootSpinner?.succeed("Copilot SDK initialised");
62
+ const authSpinner = quiet ? null : createSpinner("Authenticating...");
63
+ const auth = await service.getAuthStatus();
64
+ if (!auth.isAuthenticated) {
65
+ authSpinner?.fail("Not authenticated");
66
+ logger.error("Sign in with the Copilot CLI (copilot login) or GitHub CLI (gh auth login), or set a GITHUB_TOKEN environment variable.");
67
+ await service.stop();
68
+ process.exit(1);
69
+ }
70
+ const login = auth.login ?? "unknown";
71
+ const authType = auth.authType ?? "unknown";
72
+ authSpinner?.succeed(`Authenticated as ${bold(login)} ${dim(`(${authType})`)}`);
73
+ if (autoPatch) {
74
+ const patcher = patcherByProxy[proxy];
75
+ if (patcher) {
76
+ const patchSpinner = quiet ? null : createSpinner("Patching settings...");
77
+ try {
78
+ await patcher.patch({ port, logger });
79
+ patchSpinner?.succeed("Settings patched");
80
+ }
81
+ catch (err) {
82
+ patchSpinner?.fail(`Failed to patch settings: ${String(err)}`);
83
+ }
84
+ }
85
+ }
86
+ const ctx = { service, logger, config, port };
87
+ const app = await createServer(ctx, provider);
88
+ const listenSpinner = quiet ? null : createSpinner(`Starting server on port ${String(port)}...`);
89
+ const prevPinoLevel = app.log.level;
90
+ app.log.level = "silent";
91
+ await app.listen({ port, host: "127.0.0.1" });
92
+ app.log.level = prevPinoLevel;
93
+ listenSpinner?.succeed(`Listening on ${bold(`http://localhost:${String(port)}`)}`);
94
+ if (!quiet) {
95
+ const binaryName = AGENT_BINARY_NAMES[proxy];
96
+ const bannerBase = {
97
+ port,
98
+ proxy,
99
+ providerName: provider.name,
100
+ routes: provider.routes,
101
+ cwd: service.cwd,
102
+ autoPatch,
103
+ };
104
+ if (binaryName) {
105
+ const agentPath = findAgentBinary(proxy);
106
+ const agentBinary = agentPath
107
+ ? { found: true, path: agentPath }
108
+ : { found: false, expected: `${AGENTS_DIR}/<version>/${binaryName}` };
109
+ printBanner({ ...bannerBase, agentBinary });
110
+ }
111
+ else {
112
+ printBanner(bannerBase);
113
+ }
114
+ }
115
+ logger.debug(`Config loaded from ${configPath}`);
116
+ const mcpCount = Object.keys(config.mcpServers).length;
117
+ const cliToolsSummary = config.allowedCliTools.includes("*")
118
+ ? "all CLI tools allowed"
119
+ : `${String(config.allowedCliTools.length)} allowed CLI tool(s)`;
120
+ logger.debug(`${String(mcpCount)} MCP server(s), ${cliToolsSummary}`);
121
+ const shutdown = async (signal) => {
122
+ logger.info(`Got ${signal}, shutting down...`);
123
+ if (autoPatch) {
124
+ const patcher = patcherByProxy[proxy];
125
+ if (patcher) {
126
+ try {
127
+ await patcher.restore({ logger });
128
+ }
129
+ catch (err) {
130
+ logger.error(`Failed to restore settings: ${String(err)}`);
131
+ }
132
+ }
133
+ }
134
+ await app.close();
135
+ const stopPromise = service.stop().then(() => {
136
+ logger.info("Clean shutdown complete");
137
+ });
138
+ const timeoutPromise = new Promise((resolve) => setTimeout(() => {
139
+ logger.warn("Copilot client didn't stop in time, forcing exit");
140
+ resolve();
141
+ }, 3000));
142
+ await Promise.race([stopPromise, timeoutPromise]);
143
+ process.exit(0);
144
+ };
145
+ const onSignal = (signal) => {
146
+ shutdown(signal).catch((err) => {
147
+ console.error("Shutdown error:", err);
148
+ process.exit(1);
149
+ });
150
+ };
151
+ process.on("SIGINT", () => { onSignal("SIGINT"); });
152
+ process.on("SIGTERM", () => { onSignal("SIGTERM"); });
153
+ }
154
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const BRIDGE_SERVER_NAME = "xcode-bridge";
2
+ export declare const BRIDGE_TOOL_PREFIX = "xcode-bridge-";
@@ -0,0 +1,3 @@
1
+ export const BRIDGE_SERVER_NAME = "xcode-bridge";
2
+ export const BRIDGE_TOOL_PREFIX = `${BRIDGE_SERVER_NAME}-`;
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tool-bridge/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,kBAAkB,GAAG,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { FastifyInstance } from "fastify";
2
2
  import type { Logger } from "../logger.js";
3
3
  import { ConversationManager } from "../conversation-manager.js";
4
+ export { BRIDGE_SERVER_NAME, BRIDGE_TOOL_PREFIX } from "./constants.js";
4
5
  export declare function registerToolBridge(app: FastifyInstance, logger: Logger): ConversationManager;
@@ -1,5 +1,6 @@
1
1
  import { ConversationManager } from "../conversation-manager.js";
2
2
  import { registerRoutes } from "./routes.js";
3
+ export { BRIDGE_SERVER_NAME, BRIDGE_TOOL_PREFIX } from "./constants.js";
3
4
  export function registerToolBridge(app, logger) {
4
5
  const manager = new ConversationManager(logger);
5
6
  registerRoutes(app, manager, logger);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool-bridge/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,MAAc;IACrE,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tool-bridge/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,GAAoB,EAAE,MAAc;IACrE,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { BRIDGE_SERVER_NAME } from "./constants.js";
2
3
  const JsonRpcRequestSchema = z.object({
3
4
  jsonrpc: z.literal("2.0"),
4
5
  id: z.union([z.number(), z.string()]).optional(),
@@ -54,7 +55,7 @@ export function registerRoutes(app, manager, logger) {
54
55
  return reply.send(jsonRpcResult(id, {
55
56
  protocolVersion: PROTOCOL_VERSION,
56
57
  capabilities: { tools: {} },
57
- serverInfo: { name: "xcode-bridge", version: "1.0.0" },
58
+ serverInfo: { name: BRIDGE_SERVER_NAME, version: "1.0.0" },
58
59
  }));
59
60
  case "tools/list": {
60
61
  const state = manager.getState(convId);
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/tool-bridge/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/tool-bridge/routes.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export class SessionLifecycle {
23
23
  }
24
24
  markSessionInactive() {
25
25
  this._sessionActive = false;
26
- // stale entries from tool calls that never went through the bridge
26
+ // Stale entries from tool calls that never went through the bridge
27
27
  // (denied or handled internally) would hang the next continuation
28
28
  this.toolRouter.rejectAll("Session ended");
29
29
  this.fireSessionEnd();
@@ -1,5 +1,5 @@
1
1
  import type { FastifyReply } from "fastify";
2
- import type { AnthropicToolDefinition } from "../schemas/anthropic.js";
2
+ import type { AnthropicToolDefinition } from "../providers/claude/schemas.js";
3
3
  import { ToolCache } from "./tool-cache.js";
4
4
  import { ToolRouter } from "./tool-router.js";
5
5
  import { ReplyTracker } from "./reply-tracker.js";
@@ -1,4 +1,4 @@
1
- import type { AnthropicToolDefinition } from "../schemas/anthropic.js";
1
+ import type { AnthropicToolDefinition } from "../providers/claude/schemas.js";
2
2
  export declare class ToolCache {
3
3
  private cachedTools;
4
4
  cacheTools(tools: AnthropicToolDefinition[]): void;