xcode-copilot-server 3.4.0 → 3.4.2

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 (112) hide show
  1. package/config.json5 +2 -4
  2. package/dist/banner.d.ts +4 -4
  3. package/dist/banner.js +45 -12
  4. package/dist/banner.js.map +1 -1
  5. package/dist/bridge-constants.d.ts +2 -0
  6. package/dist/bridge-constants.js +3 -0
  7. package/dist/bridge-constants.js.map +1 -0
  8. package/dist/cli-validators.d.ts +0 -1
  9. package/dist/cli-validators.js +2 -2
  10. package/dist/cli-validators.js.map +1 -1
  11. package/dist/config-schema.d.ts +107 -0
  12. package/dist/config-schema.js +53 -0
  13. package/dist/config-schema.js.map +1 -0
  14. package/dist/config.d.ts +3 -28
  15. package/dist/config.js +23 -62
  16. package/dist/config.js.map +1 -1
  17. package/dist/context.d.ts +1 -1
  18. package/dist/conversation-manager.d.ts +9 -4
  19. package/dist/conversation-manager.js +44 -61
  20. package/dist/conversation-manager.js.map +1 -1
  21. package/dist/index.js +9 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/launchd/agent.d.ts +5 -9
  24. package/dist/launchd/agent.js +13 -12
  25. package/dist/launchd/agent.js.map +1 -1
  26. package/dist/launchd/index.d.ts +3 -3
  27. package/dist/launchd/index.js +1 -1
  28. package/dist/launchd/index.js.map +1 -1
  29. package/dist/launchd/socket.d.ts +2 -1
  30. package/dist/providers/claude/provider.js +40 -64
  31. package/dist/providers/claude/provider.js.map +1 -1
  32. package/dist/providers/claude/streaming.d.ts +10 -1
  33. package/dist/providers/claude/streaming.js +7 -3
  34. package/dist/providers/claude/streaming.js.map +1 -1
  35. package/dist/providers/claude/tool-results.js +1 -1
  36. package/dist/providers/claude/tool-results.js.map +1 -1
  37. package/dist/providers/codex/provider.js +28 -60
  38. package/dist/providers/codex/provider.js.map +1 -1
  39. package/dist/providers/codex/streaming.d.ts +12 -3
  40. package/dist/providers/codex/streaming.js +6 -6
  41. package/dist/providers/codex/streaming.js.map +1 -1
  42. package/dist/providers/codex/tool-results.js +1 -1
  43. package/dist/providers/codex/tool-results.js.map +1 -1
  44. package/dist/providers/index.d.ts +4 -23
  45. package/dist/providers/index.js +1 -1
  46. package/dist/providers/index.js.map +1 -1
  47. package/dist/providers/names.d.ts +4 -0
  48. package/dist/providers/names.js +7 -0
  49. package/dist/providers/names.js.map +1 -0
  50. package/dist/providers/openai/provider.js +5 -14
  51. package/dist/providers/openai/provider.js.map +1 -1
  52. package/dist/providers/shared/continuation.d.ts +10 -0
  53. package/dist/providers/shared/continuation.js +18 -0
  54. package/dist/providers/shared/continuation.js.map +1 -0
  55. package/dist/providers/shared/prompt-utils.d.ts +0 -11
  56. package/dist/providers/shared/prompt-utils.js +0 -11
  57. package/dist/providers/shared/prompt-utils.js.map +1 -1
  58. package/dist/providers/shared/session-config.d.ts +12 -3
  59. package/dist/providers/shared/session-config.js +24 -7
  60. package/dist/providers/shared/session-config.js.map +1 -1
  61. package/dist/providers/shared/streaming-core.d.ts +12 -2
  62. package/dist/providers/shared/streaming-core.js +183 -161
  63. package/dist/providers/shared/streaming-core.js.map +1 -1
  64. package/dist/providers/shared/streaming-orchestrator.d.ts +11 -0
  65. package/dist/providers/shared/streaming-orchestrator.js +11 -0
  66. package/dist/providers/shared/streaming-orchestrator.js.map +1 -0
  67. package/dist/providers/shared/user-agent-guard.d.ts +3 -0
  68. package/dist/providers/shared/user-agent-guard.js +17 -0
  69. package/dist/providers/shared/user-agent-guard.js.map +1 -0
  70. package/dist/settings-patcher/claude.d.ts +1 -2
  71. package/dist/settings-patcher/claude.js +35 -13
  72. package/dist/settings-patcher/claude.js.map +1 -1
  73. package/dist/settings-patcher/codex.d.ts +1 -20
  74. package/dist/settings-patcher/codex.js +58 -31
  75. package/dist/settings-patcher/codex.js.map +1 -1
  76. package/dist/settings-patcher/index.d.ts +2 -15
  77. package/dist/settings-patcher/index.js +15 -36
  78. package/dist/settings-patcher/index.js.map +1 -1
  79. package/dist/settings-patcher/types.d.ts +21 -0
  80. package/dist/settings-patcher/url-utils.d.ts +1 -0
  81. package/dist/settings-patcher/url-utils.js +6 -0
  82. package/dist/settings-patcher/url-utils.js.map +1 -0
  83. package/dist/shutdown.d.ts +16 -0
  84. package/dist/shutdown.js +53 -0
  85. package/dist/shutdown.js.map +1 -0
  86. package/dist/startup.js +65 -139
  87. package/dist/startup.js.map +1 -1
  88. package/dist/tool-bridge/constants.d.ts +4 -2
  89. package/dist/tool-bridge/constants.js +4 -2
  90. package/dist/tool-bridge/constants.js.map +1 -1
  91. package/dist/tool-bridge/index.d.ts +2 -2
  92. package/dist/tool-bridge/index.js +6 -5
  93. package/dist/tool-bridge/index.js.map +1 -1
  94. package/dist/tool-bridge/routes.d.ts +2 -2
  95. package/dist/tool-bridge/routes.js +24 -22
  96. package/dist/tool-bridge/routes.js.map +1 -1
  97. package/dist/tool-bridge/session-lifecycle.js +6 -3
  98. package/dist/tool-bridge/session-lifecycle.js.map +1 -1
  99. package/dist/tool-bridge/state.d.ts +4 -25
  100. package/dist/tool-bridge/state.js +6 -65
  101. package/dist/tool-bridge/state.js.map +1 -1
  102. package/dist/tool-bridge/tool-router.d.ts +1 -0
  103. package/dist/tool-bridge/tool-router.js +26 -19
  104. package/dist/tool-bridge/tool-router.js.map +1 -1
  105. package/dist/utils/child-process.d.ts +2 -0
  106. package/dist/utils/child-process.js +8 -0
  107. package/dist/utils/child-process.js.map +1 -0
  108. package/dist/utils/type-guards.d.ts +2 -0
  109. package/dist/utils/type-guards.js +7 -0
  110. package/dist/utils/type-guards.js.map +1 -0
  111. package/package.json +2 -3
  112. package/scripts/mcpbridge-proxy.mjs +0 -73
package/config.json5 CHANGED
@@ -13,12 +13,10 @@
13
13
  toolBridge: false,
14
14
 
15
15
  mcpServers: {
16
- // Proxies Apple's xcrun mcpbridge (Xcode 26.3+). The script exits
17
- // gracefully if mcpbridge isn't installed, so safe to leave enabled.
18
16
  xcode: {
19
17
  type: "local",
20
- command: "node",
21
- args: ["./scripts/mcpbridge-proxy.mjs"],
18
+ command: "xcrun",
19
+ args: ["mcpbridge"],
22
20
  allowedTools: ["*"],
23
21
  },
24
22
  },
package/dist/banner.d.ts CHANGED
@@ -1,11 +1,11 @@
1
+ import type { Logger } from "copilot-sdk-proxy";
2
+ import type { ProxyMode } from "./providers/index.js";
1
3
  export interface ProxyBannerInfo {
2
4
  providerName: string;
3
- proxyFlag: string;
5
+ proxyFlag: ProxyMode;
4
6
  routes: string[];
5
7
  cwd: string;
6
8
  autoPatch?: boolean | undefined;
7
- agentPath?: string | null | undefined;
8
- agentBinaryName?: string | undefined;
9
- agentsDir?: string | undefined;
9
+ logger?: Logger | undefined;
10
10
  }
11
11
  export declare function printProxyBanner(info: ProxyBannerInfo): void;
package/dist/banner.js CHANGED
@@ -1,23 +1,56 @@
1
+ import { existsSync, readdirSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
1
4
  import { dim } from "copilot-sdk-proxy";
5
+ const AGENTS_DIR = join(homedir(), "Library/Developer/Xcode/CodingAssistant/Agents/Versions");
6
+ const AGENT_BINARY_NAMES = {
7
+ claude: "claude",
8
+ codex: "codex",
9
+ };
10
+ function findAgentBinary(proxy, logger) {
11
+ const binaryName = AGENT_BINARY_NAMES[proxy];
12
+ if (!binaryName)
13
+ return null;
14
+ if (!existsSync(AGENTS_DIR))
15
+ return null;
16
+ let versions;
17
+ try {
18
+ versions = readdirSync(AGENTS_DIR);
19
+ }
20
+ catch (err) {
21
+ logger?.debug(`Failed to read agents directory: ${String(err)}`);
22
+ return null;
23
+ }
24
+ for (const version of versions) {
25
+ const binaryPath = join(AGENTS_DIR, version, binaryName);
26
+ if (existsSync(binaryPath))
27
+ return binaryPath;
28
+ }
29
+ return null;
30
+ }
2
31
  export function printProxyBanner(info) {
3
- console.log();
4
32
  const providerHint = info.proxyFlag === "auto"
5
33
  ? ""
6
34
  : ` ${dim(`(--proxy ${info.proxyFlag})`)}`;
7
- console.log(` ${dim("Provider")} ${info.providerName}${providerHint}`);
8
- console.log(` ${dim("Routes")} ${info.routes.join(dim(", "))}`);
9
- console.log(` ${dim("Directory")} ${info.cwd}`);
35
+ const lines = [
36
+ "",
37
+ ` ${dim("Provider")} ${info.providerName}${providerHint}`,
38
+ ` ${dim("Routes")} ${info.routes.join(dim(", "))}`,
39
+ ` ${dim("Directory")} ${info.cwd}`,
40
+ ];
10
41
  if (info.autoPatch) {
11
- console.log(` ${dim("Auto-patch")} enabled`);
42
+ lines.push(` ${dim("Auto-patch")} enabled`);
12
43
  }
13
- if (info.agentBinaryName) {
14
- if (info.agentPath) {
15
- console.log(` ${dim("Agent")} ${info.agentPath}`);
16
- }
17
- else {
18
- console.log(` ${dim("Agent")} ${dim(`not found (expected at ${info.agentsDir ?? ""}/<version>/${info.agentBinaryName})`)}`);
44
+ if (info.proxyFlag !== "auto") {
45
+ const binaryName = AGENT_BINARY_NAMES[info.proxyFlag];
46
+ if (binaryName) {
47
+ const agentPath = findAgentBinary(info.proxyFlag, info.logger);
48
+ lines.push(agentPath
49
+ ? ` ${dim("Agent")} ${agentPath}`
50
+ : ` ${dim("Agent")} ${dim(`not found (expected at ${AGENTS_DIR}/<version>/${binaryName})`)}`);
19
51
  }
20
52
  }
21
- console.log();
53
+ lines.push("");
54
+ console.log(lines.join("\n"));
22
55
  }
23
56
  //# sourceMappingURL=banner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAaxC,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,MAAM;QAC5C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,0BAA0B,IAAI,CAAC,SAAS,IAAI,EAAE,cAAc,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC;QACpI,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,EAAE,EACT,yDAAyD,CAC1D,CAAC;AAEF,MAAM,kBAAkB,GAAuC;IAC7D,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,SAAS,eAAe,CAAC,KAAgB,EAAE,MAAe;IACxD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,CAAC,oCAAoC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,MAAM;QAC5C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;IAE7C,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,GAAG,YAAY,EAAE;QAC5D,KAAK,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;QACvD,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;KACrC,CAAC;IAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,SAAS;gBAClB,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,SAAS,EAAE;gBACvC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,0BAA0B,UAAU,cAAc,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC"}
@@ -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=bridge-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-constants.js","sourceRoot":"","sources":["../src/bridge-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,kBAAkB,GAAG,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { parsePort, parseLogLevel, parseIdleTimeout } from "copilot-sdk-proxy";
2
2
  import { type ProxyName, type ProxyMode } from "./providers/index.js";
3
3
  export { parsePort, parseLogLevel, parseIdleTimeout };
4
- export type { ProxyName, ProxyMode };
5
4
  export declare function isProxyName(value: string): value is ProxyName;
6
5
  export declare function parseProxy(value: string): ProxyName;
7
6
  export declare function parseProxyMode(value: string): ProxyMode;
@@ -1,13 +1,13 @@
1
1
  import { parsePort, parseLogLevel, parseIdleTimeout } from "copilot-sdk-proxy";
2
2
  import { providers } from "./providers/index.js";
3
+ import { PROVIDER_NAMES } from "./providers/names.js";
3
4
  export { parsePort, parseLogLevel, parseIdleTimeout };
4
- const VALID_PROXIES = Object.keys(providers);
5
5
  export function isProxyName(value) {
6
6
  return value in providers;
7
7
  }
8
8
  export function parseProxy(value) {
9
9
  if (!isProxyName(value)) {
10
- throw new Error(`Invalid proxy "${value}". Valid: ${VALID_PROXIES.join(", ")}`);
10
+ throw new Error(`Invalid proxy "${value}". Valid: ${PROVIDER_NAMES.join(", ")}`);
11
11
  }
12
12
  return value;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli-validators.js","sourceRoot":"","sources":["../src/cli-validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAkC,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAGtD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAgB,CAAC;AAE5D,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,aAAa,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,iBAAiB,CAAC,KAAgB,EAAE,SAAkB;IACpE,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,uCAAuC,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli-validators.js","sourceRoot":"","sources":["../src/cli-validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAkC,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AAEtD,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,aAAa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,iBAAiB,CAAC,KAAgB,EAAE,SAAkB;IACpE,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,uCAAuC,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { z } from "zod";
2
+ import type { MCPServer } from "copilot-sdk-proxy";
3
+ export type { MCPLocalServer } from "copilot-sdk-proxy";
4
+ export declare const BYTES_PER_MIB: number;
5
+ declare const ApprovalRuleSchema: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodEnum<{
6
+ url: "url";
7
+ read: "read";
8
+ write: "write";
9
+ shell: "shell";
10
+ mcp: "mcp";
11
+ }>>]>;
12
+ declare const ReasoningEffortSchema: z.ZodEnum<{
13
+ low: "low";
14
+ medium: "medium";
15
+ high: "high";
16
+ xhigh: "xhigh";
17
+ }>;
18
+ export declare const ServerConfigSchema: z.ZodObject<{
19
+ openai: z.ZodDefault<z.ZodObject<{
20
+ toolBridge: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
21
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
22
+ type: z.ZodUnion<readonly [z.ZodLiteral<"local">, z.ZodLiteral<"stdio">]>;
23
+ command: z.ZodString;
24
+ args: z.ZodArray<z.ZodString>;
25
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
26
+ cwd: z.ZodOptional<z.ZodString>;
27
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ timeout: z.ZodOptional<z.ZodNumber>;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ type: z.ZodUnion<readonly [z.ZodLiteral<"http">, z.ZodLiteral<"sse">]>;
31
+ url: z.ZodURL;
32
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
33
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ timeout: z.ZodOptional<z.ZodNumber>;
35
+ }, z.core.$strip>]>>>;
36
+ }, z.core.$strip>>;
37
+ claude: z.ZodDefault<z.ZodObject<{
38
+ toolBridge: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
39
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
40
+ type: z.ZodUnion<readonly [z.ZodLiteral<"local">, z.ZodLiteral<"stdio">]>;
41
+ command: z.ZodString;
42
+ args: z.ZodArray<z.ZodString>;
43
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
44
+ cwd: z.ZodOptional<z.ZodString>;
45
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
+ timeout: z.ZodOptional<z.ZodNumber>;
47
+ }, z.core.$strip>, z.ZodObject<{
48
+ type: z.ZodUnion<readonly [z.ZodLiteral<"http">, z.ZodLiteral<"sse">]>;
49
+ url: z.ZodURL;
50
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
51
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
52
+ timeout: z.ZodOptional<z.ZodNumber>;
53
+ }, z.core.$strip>]>>>;
54
+ }, z.core.$strip>>;
55
+ codex: z.ZodDefault<z.ZodObject<{
56
+ toolBridge: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
57
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
58
+ type: z.ZodUnion<readonly [z.ZodLiteral<"local">, z.ZodLiteral<"stdio">]>;
59
+ command: z.ZodString;
60
+ args: z.ZodArray<z.ZodString>;
61
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
62
+ cwd: z.ZodOptional<z.ZodString>;
63
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
+ timeout: z.ZodOptional<z.ZodNumber>;
65
+ }, z.core.$strip>, z.ZodObject<{
66
+ type: z.ZodUnion<readonly [z.ZodLiteral<"http">, z.ZodLiteral<"sse">]>;
67
+ url: z.ZodURL;
68
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
69
+ allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ timeout: z.ZodOptional<z.ZodNumber>;
71
+ }, z.core.$strip>]>>>;
72
+ }, z.core.$strip>>;
73
+ allowedCliTools: z.ZodDefault<z.ZodArray<z.ZodString>>;
74
+ excludedFilePatterns: z.ZodDefault<z.ZodArray<z.ZodString>>;
75
+ bodyLimitMiB: z.ZodDefault<z.ZodNumber>;
76
+ reasoningEffort: z.ZodOptional<z.ZodEnum<{
77
+ low: "low";
78
+ medium: "medium";
79
+ high: "high";
80
+ xhigh: "xhigh";
81
+ }>>;
82
+ autoApprovePermissions: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodEnum<{
83
+ url: "url";
84
+ read: "read";
85
+ write: "write";
86
+ shell: "shell";
87
+ mcp: "mcp";
88
+ }>>]>>;
89
+ }, z.core.$strip>;
90
+ type ApprovalRule = z.infer<typeof ApprovalRuleSchema>;
91
+ export type ServerConfig = {
92
+ toolBridge: boolean;
93
+ mcpServers: Record<string, MCPServer>;
94
+ allowedCliTools: string[];
95
+ excludedFilePatterns: string[];
96
+ bodyLimit: number;
97
+ autoApprovePermissions: ApprovalRule;
98
+ reasoningEffort?: z.infer<typeof ReasoningEffortSchema> | undefined;
99
+ };
100
+ export declare const DEFAULT_CONFIG: {
101
+ toolBridge: false;
102
+ mcpServers: {};
103
+ allowedCliTools: never[];
104
+ excludedFilePatterns: never[];
105
+ bodyLimit: number;
106
+ autoApprovePermissions: ("read" | "mcp")[];
107
+ };
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ export const BYTES_PER_MIB = 1024 * 1024;
3
+ const MCPLocalServerSchema = z.object({
4
+ type: z.union([z.literal("local"), z.literal("stdio")]),
5
+ command: z.string().min(1, "MCP server command cannot be empty"),
6
+ args: z.array(z.string()),
7
+ env: z.record(z.string(), z.string()).optional(),
8
+ cwd: z.string().optional(),
9
+ allowedTools: z.array(z.string()).optional(),
10
+ timeout: z.number().positive().optional(),
11
+ });
12
+ const MCPRemoteServerSchema = z.object({
13
+ type: z.union([z.literal("http"), z.literal("sse")]),
14
+ url: z.url(),
15
+ headers: z.record(z.string(), z.string()).optional(),
16
+ allowedTools: z.array(z.string()).optional(),
17
+ timeout: z.number().positive().optional(),
18
+ });
19
+ const MCPServerSchema = z.union([MCPLocalServerSchema, MCPRemoteServerSchema]);
20
+ const VALID_PERMISSION_KINDS = ["read", "write", "shell", "mcp", "url"];
21
+ const ApprovalRuleSchema = z.union([
22
+ z.boolean(),
23
+ z.array(z.enum(VALID_PERMISSION_KINDS)),
24
+ ]);
25
+ const VALID_REASONING_EFFORTS = ["low", "medium", "high", "xhigh"];
26
+ const ReasoningEffortSchema = z.enum(VALID_REASONING_EFFORTS);
27
+ const ProviderConfigSchema = z.object({
28
+ toolBridge: z.boolean().optional().default(false),
29
+ mcpServers: z.record(z.string(), MCPServerSchema).default({}),
30
+ });
31
+ export const ServerConfigSchema = z.object({
32
+ openai: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
33
+ claude: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
34
+ codex: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
35
+ allowedCliTools: z.array(z.string()).refine((arr) => !arr.includes("*") || arr.length === 1, 'allowedCliTools: use ["*"] alone to allow all tools, don\'t mix with other entries').default([]),
36
+ excludedFilePatterns: z.array(z.string()).default([]),
37
+ bodyLimitMiB: z
38
+ .number()
39
+ .positive()
40
+ .max(100, "bodyLimitMiB cannot exceed 100")
41
+ .default(10),
42
+ reasoningEffort: ReasoningEffortSchema.optional(),
43
+ autoApprovePermissions: ApprovalRuleSchema.default(["read", "mcp"]),
44
+ });
45
+ export const DEFAULT_CONFIG = {
46
+ toolBridge: false,
47
+ mcpServers: {},
48
+ allowedCliTools: [],
49
+ excludedFilePatterns: [],
50
+ bodyLimit: 10 * BYTES_PER_MIB,
51
+ autoApprovePermissions: ["read", "mcp"],
52
+ };
53
+ //# sourceMappingURL=config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,31 +1,6 @@
1
- import { z } from "zod";
2
- import type { Logger, MCPServer } from "copilot-sdk-proxy";
3
- export type { MCPLocalServer, MCPRemoteServer, MCPServer, ApprovalRule, ReasoningEffort, } from "copilot-sdk-proxy";
4
- import { type ProxyName } from "./providers/index.js";
5
- export type { ProxyName };
6
- declare const ApprovalRuleSchema: z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodEnum<{
7
- url: "url";
8
- read: "read";
9
- write: "write";
10
- shell: "shell";
11
- mcp: "mcp";
12
- }>>]>;
13
- declare const ReasoningEffortSchema: z.ZodEnum<{
14
- low: "low";
15
- medium: "medium";
16
- high: "high";
17
- xhigh: "xhigh";
18
- }>;
19
- type ApprovalRule = z.infer<typeof ApprovalRuleSchema>;
20
- export type ServerConfig = {
21
- toolBridge: boolean;
22
- mcpServers: Record<string, MCPServer>;
23
- allowedCliTools: string[];
24
- excludedFilePatterns: string[];
25
- bodyLimit: number;
26
- autoApprovePermissions: ApprovalRule;
27
- reasoningEffort?: z.infer<typeof ReasoningEffortSchema> | undefined;
28
- };
1
+ import type { Logger } from "copilot-sdk-proxy";
2
+ import type { ProxyName } from "./providers/names.js";
3
+ import type { ServerConfig } from "./config-schema.js";
29
4
  export declare function resolveConfigPath(projectCwd: string | undefined, processCwd: string, defaultPath: string): string;
30
5
  export declare function loadConfig(configPath: string, logger: Logger, proxy: ProxyName): Promise<ServerConfig>;
31
6
  export type AllProviderConfigs = {
package/dist/config.js CHANGED
@@ -1,60 +1,11 @@
1
+ // resolveConfigPath is sync (runs once at startup). The loaders are async because they read disk.
1
2
  import { existsSync } from "node:fs";
2
3
  import { readFile } from "node:fs/promises";
3
4
  import { resolve, dirname, isAbsolute } from "node:path";
4
5
  import JSON5 from "json5";
5
6
  import { z } from "zod";
6
- import { PROVIDER_NAMES } from "./providers/index.js";
7
- // Xcode config schema, extends core with per-provider toolBridge + mcpServers
8
- const MCPLocalServerSchema = z.object({
9
- type: z.union([z.literal("local"), z.literal("stdio")]),
10
- command: z.string().min(1, "MCP server command cannot be empty"),
11
- args: z.array(z.string()),
12
- env: z.record(z.string(), z.string()).optional(),
13
- cwd: z.string().optional(),
14
- allowedTools: z.array(z.string()).optional(),
15
- timeout: z.number().positive().optional(),
16
- });
17
- const MCPRemoteServerSchema = z.object({
18
- type: z.union([z.literal("http"), z.literal("sse")]),
19
- url: z.url(),
20
- headers: z.record(z.string(), z.string()).optional(),
21
- allowedTools: z.array(z.string()).optional(),
22
- timeout: z.number().positive().optional(),
23
- });
24
- const MCPServerSchema = z.union([MCPLocalServerSchema, MCPRemoteServerSchema]);
25
- const VALID_PERMISSION_KINDS = ["read", "write", "shell", "mcp", "url"];
26
- const ApprovalRuleSchema = z.union([
27
- z.boolean(),
28
- z.array(z.enum(VALID_PERMISSION_KINDS)),
29
- ]);
30
- const VALID_REASONING_EFFORTS = ["low", "medium", "high", "xhigh"];
31
- const ReasoningEffortSchema = z.enum(VALID_REASONING_EFFORTS);
32
- const ProviderConfigSchema = z.object({
33
- toolBridge: z.boolean().optional().default(false),
34
- mcpServers: z.record(z.string(), MCPServerSchema).default({}),
35
- });
36
- const ServerConfigSchema = z.object({
37
- openai: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
38
- claude: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
39
- codex: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
40
- allowedCliTools: z.array(z.string()).refine((arr) => !arr.includes("*") || arr.length === 1, 'allowedCliTools: use ["*"] alone to allow all tools, don\'t mix with other entries').default([]),
41
- excludedFilePatterns: z.array(z.string()).default([]),
42
- bodyLimitMiB: z
43
- .number()
44
- .positive()
45
- .max(100, "bodyLimitMiB cannot exceed 100")
46
- .default(10),
47
- reasoningEffort: ReasoningEffortSchema.optional(),
48
- autoApprovePermissions: ApprovalRuleSchema.default(["read", "mcp"]),
49
- });
50
- const DEFAULT_CONFIG = {
51
- toolBridge: false,
52
- mcpServers: {},
53
- allowedCliTools: [],
54
- excludedFilePatterns: [],
55
- bodyLimit: 10 * 1024 * 1024,
56
- autoApprovePermissions: ["read", "mcp"],
57
- };
7
+ import { ServerConfigSchema, DEFAULT_CONFIG, BYTES_PER_MIB } from "./config-schema.js";
8
+ import { isErrnoException } from "./utils/type-guards.js";
58
9
  function resolveServerPaths(servers, configDir) {
59
10
  return Object.fromEntries(Object.entries(servers).map(([name, server]) => [
60
11
  name,
@@ -88,11 +39,11 @@ async function parseConfigFile(configPath, logger) {
88
39
  text = await readFile(absolutePath, "utf-8");
89
40
  }
90
41
  catch (err) {
91
- if (err instanceof Error && "code" in err && err.code === "ENOENT") {
42
+ if (isErrnoException(err) && err.code === "ENOENT") {
92
43
  logger.warn(`No config file at ${absolutePath}, using defaults`);
93
44
  return null;
94
45
  }
95
- throw err;
46
+ throw new Error(`Failed to read config file at ${absolutePath}: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
96
47
  }
97
48
  let raw;
98
49
  try {
@@ -122,7 +73,7 @@ function buildServerConfig(parsed, configDir, proxy) {
122
73
  excludedFilePatterns: parsed.excludedFilePatterns,
123
74
  autoApprovePermissions: parsed.autoApprovePermissions,
124
75
  reasoningEffort: parsed.reasoningEffort,
125
- bodyLimit: parsed.bodyLimitMiB * 1024 * 1024,
76
+ bodyLimit: parsed.bodyLimitMiB * BYTES_PER_MIB,
126
77
  toolBridge: provider.toolBridge,
127
78
  mcpServers: resolveServerPaths(provider.mcpServers, configDir),
128
79
  };
@@ -135,13 +86,23 @@ export async function loadConfig(configPath, logger, proxy) {
135
86
  }
136
87
  export async function loadAllProviderConfigs(configPath, logger) {
137
88
  const result = await parseConfigFile(configPath, logger);
138
- const providers = Object.fromEntries(PROVIDER_NAMES.map((name) => [
139
- name,
140
- result ? buildServerConfig(result.data, result.configDir, name) : DEFAULT_CONFIG,
141
- ]));
142
- return {
143
- providers,
144
- shared: { ...providers.openai, toolBridge: false, mcpServers: {} },
89
+ const providers = {
90
+ openai: result ? buildServerConfig(result.data, result.configDir, "openai") : DEFAULT_CONFIG,
91
+ claude: result ? buildServerConfig(result.data, result.configDir, "claude") : DEFAULT_CONFIG,
92
+ codex: result ? buildServerConfig(result.data, result.configDir, "codex") : DEFAULT_CONFIG,
145
93
  };
94
+ // Common fields only, no per-provider toolBridge / mcpServers.
95
+ const shared = result
96
+ ? {
97
+ allowedCliTools: result.data.allowedCliTools,
98
+ excludedFilePatterns: result.data.excludedFilePatterns,
99
+ autoApprovePermissions: result.data.autoApprovePermissions,
100
+ reasoningEffort: result.data.reasoningEffort,
101
+ bodyLimit: result.data.bodyLimitMiB * BYTES_PER_MIB,
102
+ toolBridge: false,
103
+ mcpServers: {},
104
+ }
105
+ : DEFAULT_CONFIG;
106
+ return { providers, shared };
146
107
  }
147
108
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { CopilotService, Logger, Stats } from "copilot-sdk-proxy";
2
- import type { ServerConfig } from "./config.js";
2
+ import type { ServerConfig } from "./config-schema.js";
3
3
  import type { ConversationManager } from "./conversation-manager.js";
4
4
  export interface AppContext {
5
5
  service: CopilotService;
@@ -1,9 +1,14 @@
1
1
  import { ToolBridgeState } from "./tool-bridge/state.js";
2
- import type { Conversation as CoreConversation, AnthropicMessage, Logger } from "copilot-sdk-proxy";
2
+ import type { Conversation as CoreConversation, Logger } from "copilot-sdk-proxy";
3
3
  export interface Conversation extends CoreConversation {
4
4
  state: ToolBridgeState;
5
5
  }
6
- export declare class ConversationManager {
6
+ export interface ToolStateProvider {
7
+ getState(convId: string): ToolBridgeState | undefined;
8
+ findByExpectedTool(name: string): ToolBridgeState | undefined;
9
+ }
10
+ export declare function asConversation(conv: CoreConversation): Conversation;
11
+ export declare class ConversationManager implements ToolStateProvider {
7
12
  private readonly conversations;
8
13
  private readonly logger;
9
14
  private primaryId;
@@ -11,13 +16,13 @@ export declare class ConversationManager {
11
16
  create(options?: {
12
17
  isPrimary?: boolean;
13
18
  }): Conversation;
14
- getPrimary(): Conversation | null;
19
+ getPrimary(): Conversation | undefined;
15
20
  clearPrimary(): void;
21
+ private evictStale;
16
22
  findForNewRequest(): {
17
23
  conversation: Conversation;
18
24
  isReuse: boolean;
19
25
  };
20
- findByContinuation(messages: AnthropicMessage[]): Conversation | undefined;
21
26
  findByContinuationIds(callIds: string[]): Conversation | undefined;
22
27
  findByExpectedTool(name: string): ToolBridgeState | undefined;
23
28
  getState(convId: string): ToolBridgeState | undefined;