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
@@ -1,179 +1,201 @@
1
1
  import { formatCompaction, recordUsageEvent } from "copilot-sdk-proxy";
2
- import { BRIDGE_TOOL_PREFIX } from "../../tool-bridge/index.js";
3
- // Xcode doesn't know about the bridge prefix so we strip it
4
- export function stripBridgePrefix(name) {
2
+ import { isRecord } from "../../utils/type-guards.js";
3
+ import { BRIDGE_TOOL_PREFIX } from "../../bridge-constants.js";
4
+ // Xcode sends tool names without the bridge prefix.
5
+ function stripBridgePrefix(name) {
5
6
  return name.startsWith(BRIDGE_TOOL_PREFIX) ? name.slice(BRIDGE_TOOL_PREFIX.length) : name;
6
7
  }
7
- export async function runSessionStreaming(state, session, prompt, logger, hasBridge, protocol, initialReply, stats) {
8
- state.markSessionActive();
9
- let pendingDeltas = [];
10
- let sessionDone = false;
11
- const toolNames = new Map();
12
- function getReply() {
13
- return state.currentReply;
8
+ export function runSessionStreaming(opts) {
9
+ return new StreamingHandler(opts).run();
10
+ }
11
+ class StreamingHandler {
12
+ pendingDeltas = [];
13
+ sessionDone = false;
14
+ toolNames = new Map();
15
+ unsubscribe = () => { };
16
+ state;
17
+ session;
18
+ prompt;
19
+ logger;
20
+ hasBridge;
21
+ protocol;
22
+ initialReply;
23
+ stats;
24
+ constructor(opts) {
25
+ this.state = opts.state;
26
+ this.session = opts.session;
27
+ this.prompt = opts.prompt;
28
+ this.logger = opts.logger;
29
+ this.hasBridge = opts.hasBridge;
30
+ this.protocol = opts.protocol;
31
+ this.initialReply = opts.initialReply;
32
+ this.stats = opts.stats;
33
+ }
34
+ run() {
35
+ this.state.session.markSessionActive();
36
+ this.unsubscribe = this.subscribeToEvents();
37
+ this.setupClientDisconnect();
38
+ const done = this.state.replies.waitForStreamingDone();
39
+ this.sendPrompt();
40
+ return done;
41
+ }
42
+ getReply() {
43
+ return this.state.replies.currentReply;
14
44
  }
15
- function flushToProtocol() {
16
- if (pendingDeltas.length === 0)
45
+ flushToProtocol() {
46
+ if (this.pendingDeltas.length === 0)
17
47
  return;
18
- const r = getReply();
48
+ const r = this.getReply();
19
49
  if (!r)
20
50
  return;
21
- protocol.flushDeltas(r, pendingDeltas);
22
- pendingDeltas = [];
51
+ this.protocol.flushDeltas(r, this.pendingDeltas);
52
+ this.pendingDeltas = [];
53
+ }
54
+ finishStream(reply) {
55
+ if (reply) {
56
+ reply.raw.end();
57
+ this.state.replies.clearReply();
58
+ }
59
+ this.state.replies.notifyStreamingDone();
60
+ }
61
+ subscribeToEvents() {
62
+ return this.session.on((event) => {
63
+ switch (event.type) {
64
+ case "tool.execution_start":
65
+ this.onToolStart(event.data);
66
+ break;
67
+ case "tool.execution_complete":
68
+ this.onToolComplete(event.data);
69
+ break;
70
+ case "assistant.message_delta":
71
+ this.onDelta(event.data);
72
+ break;
73
+ case "assistant.message":
74
+ this.onMessage(event.data);
75
+ break;
76
+ case "session.idle":
77
+ this.onIdle();
78
+ break;
79
+ case "session.compaction_start":
80
+ this.logger.info("Compacting context...");
81
+ break;
82
+ case "session.compaction_complete":
83
+ this.logger.info(`Context compacted: ${formatCompaction(event.data)}`);
84
+ break;
85
+ case "session.error":
86
+ this.onError(event.data.message);
87
+ break;
88
+ case "assistant.usage":
89
+ recordUsageEvent(this.stats, this.logger, event.data);
90
+ break;
91
+ default:
92
+ break;
93
+ }
94
+ });
95
+ }
96
+ onToolStart(d) {
97
+ this.toolNames.set(d.toolCallId, d.toolName);
98
+ }
99
+ onToolComplete(d) {
100
+ const name = this.toolNames.get(d.toolCallId) ?? d.toolCallId;
101
+ this.toolNames.delete(d.toolCallId);
102
+ if (!d.success) {
103
+ this.logger.debug(`${name} failed: ${d.error?.message ?? "unknown"}`);
104
+ }
105
+ }
106
+ onDelta(d) {
107
+ if (d.deltaContent)
108
+ this.pendingDeltas.push(d.deltaContent);
109
+ }
110
+ stripAndNormalize(requests) {
111
+ const filtered = this.hasBridge
112
+ ? requests.filter((tr) => tr.name.startsWith(BRIDGE_TOOL_PREFIX))
113
+ : requests;
114
+ return filtered.map((tr) => {
115
+ const resolved = this.state.toolCache.resolveToolName(stripBridgePrefix(tr.name));
116
+ const args = isRecord(tr.arguments) ? tr.arguments : {};
117
+ return {
118
+ toolCallId: tr.toolCallId,
119
+ name: resolved,
120
+ arguments: this.state.toolCache.normalizeArgs(resolved, args),
121
+ };
122
+ });
23
123
  }
24
- const unsubscribe = session.on((event) => {
25
- logger.debug(`Session event: ${event.type}`);
26
- if (event.type === "tool.execution_start") {
27
- const d = event.data;
28
- toolNames.set(d.toolCallId, d.toolName);
29
- logger.debug(`Running ${d.toolName} (id=${d.toolCallId}, args=${JSON.stringify(d.arguments)})`);
124
+ onMessage(data) {
125
+ if (!data.toolRequests || data.toolRequests.length === 0) {
126
+ const r = this.getReply();
127
+ if (r)
128
+ this.flushToProtocol();
30
129
  return;
31
130
  }
32
- if (event.type === "tool.execution_complete") {
33
- const d = event.data;
34
- const name = toolNames.get(d.toolCallId) ?? d.toolCallId;
35
- toolNames.delete(d.toolCallId);
36
- const detail = d.success
37
- ? JSON.stringify(d.result?.content)
38
- : d.error?.message ?? "failed";
39
- logger.debug(`${name} done (success=${String(d.success)}, ${detail})`);
131
+ const stripped = this.stripAndNormalize(data.toolRequests);
132
+ if (stripped.length === 0)
40
133
  return;
134
+ for (const tr of stripped) {
135
+ this.logger.info(`Tool request: name="${tr.name}", id="${tr.toolCallId}"`);
136
+ this.state.toolRouter.registerExpected(tr.toolCallId, tr.name);
41
137
  }
42
- switch (event.type) {
43
- case "assistant.message_delta":
44
- if (event.data.deltaContent) {
45
- logger.debug(`Delta: ${event.data.deltaContent}`);
46
- pendingDeltas.push(event.data.deltaContent);
47
- }
48
- break;
49
- case "assistant.message": {
50
- logger.debug(`assistant.message: toolRequests=${String(event.data.toolRequests?.length ?? 0)}`);
51
- if (event.data.toolRequests && event.data.toolRequests.length > 0) {
52
- const bridgeRequests = hasBridge
53
- ? event.data.toolRequests.filter((tr) => tr.name.startsWith(BRIDGE_TOOL_PREFIX))
54
- : event.data.toolRequests;
55
- if (hasBridge && bridgeRequests.length < event.data.toolRequests.length) {
56
- const skipped = event.data.toolRequests.length - bridgeRequests.length;
57
- logger.debug(`Skipped ${String(skipped)} non-bridge tool request(s) (handled internally by CLI)`);
58
- }
59
- const stripped = bridgeRequests.map((tr) => {
60
- const resolved = state.resolveToolName(stripBridgePrefix(tr.name));
61
- return {
62
- toolCallId: tr.toolCallId,
63
- name: resolved,
64
- arguments: state.normalizeArgs(resolved, (tr.arguments ?? {})),
65
- };
66
- });
67
- if (stripped.length > 0) {
68
- for (const tr of stripped) {
69
- logger.info(`Tool request: name="${tr.name}", id="${tr.toolCallId}", args=${JSON.stringify(tr.arguments)}`);
70
- state.registerExpected(tr.toolCallId, tr.name);
71
- }
72
- const r = getReply();
73
- if (r) {
74
- flushToProtocol();
75
- protocol.emitToolsAndFinish(r, stripped);
76
- r.raw.end();
77
- state.clearReply();
78
- protocol.reset();
79
- state.notifyStreamingDone();
80
- }
81
- else {
82
- logger.debug("Tool requests but no reply (internal retry), registered expected tools");
83
- }
84
- }
85
- else {
86
- logger.debug("All tool requests were non-bridge, none emitted");
87
- }
88
- }
89
- else {
90
- const r = getReply();
91
- if (r) {
92
- logger.debug(`Flushing ${String(pendingDeltas.length)} pending deltas`);
93
- flushToProtocol();
94
- }
95
- }
96
- break;
97
- }
98
- case "session.idle": {
99
- logger.info(`Done, wrapping up stream (pendingDeltas=${String(pendingDeltas.length)})`);
100
- sessionDone = true;
101
- state.markSessionInactive();
102
- flushToProtocol();
103
- const r = getReply();
104
- if (r) {
105
- protocol.sendCompleted(r);
106
- protocol.teardown();
107
- r.raw.end();
108
- state.clearReply();
109
- state.notifyStreamingDone();
110
- }
111
- unsubscribe();
112
- break;
113
- }
114
- case "session.compaction_start":
115
- logger.info("Compacting context...");
116
- break;
117
- case "session.compaction_complete":
118
- logger.info(`Context compacted: ${formatCompaction(event.data)}`);
119
- break;
120
- case "session.error": {
121
- logger.error(`Session error: ${event.data.message}`);
122
- sessionDone = true;
123
- state.markSessionErrored();
124
- state.markSessionInactive();
125
- const r = getReply();
126
- if (r) {
127
- protocol.sendFailed(r);
128
- protocol.teardown();
129
- r.raw.end();
130
- state.clearReply();
131
- }
132
- else {
133
- protocol.teardown();
134
- }
135
- state.notifyStreamingDone();
136
- unsubscribe();
137
- break;
138
- }
139
- case "assistant.usage":
140
- recordUsageEvent(stats, logger, event.data);
141
- break;
142
- default:
143
- logger.debug(`Unhandled event: ${event.type}, data=${JSON.stringify(event.data)}`);
144
- break;
138
+ const r = this.getReply();
139
+ if (r) {
140
+ this.flushToProtocol();
141
+ this.protocol.emitToolsAndFinish(r, stripped);
142
+ this.protocol.reset();
143
+ this.finishStream(r);
145
144
  }
146
- });
147
- initialReply.raw.on("close", () => {
148
- if (!sessionDone && state.currentReply === initialReply) {
149
- logger.info("Client disconnected, aborting session");
150
- protocol.teardown();
151
- protocol.reset();
152
- state.markSessionErrored();
153
- state.cleanup();
154
- unsubscribe();
155
- session.abort().catch((err) => {
156
- logger.error("Failed to abort session:", err);
157
- });
158
- state.notifyStreamingDone();
145
+ }
146
+ onIdle() {
147
+ this.logger.info("Done, wrapping up stream");
148
+ this.sessionDone = true;
149
+ this.state.session.markSessionInactive();
150
+ this.flushToProtocol();
151
+ const r = this.getReply();
152
+ if (r) {
153
+ this.protocol.sendCompleted(r);
154
+ this.protocol.teardown();
159
155
  }
160
- });
161
- const done = state.waitForStreamingDone();
162
- session.send({ prompt }).catch((err) => {
163
- if (sessionDone)
164
- return;
165
- logger.error("Failed to send prompt:", err);
166
- sessionDone = true;
167
- protocol.teardown();
168
- protocol.reset();
169
- const r = getReply();
156
+ this.finishStream(r);
157
+ this.unsubscribe();
158
+ }
159
+ onError(message) {
160
+ this.logger.error(`Session error: ${message}`);
161
+ this.sessionDone = true;
162
+ this.state.session.markSessionErrored();
163
+ this.state.session.markSessionInactive();
164
+ const r = this.getReply();
170
165
  if (r) {
171
- r.raw.end();
172
- state.clearReply();
166
+ this.protocol.sendFailed(r);
173
167
  }
174
- unsubscribe();
175
- state.notifyStreamingDone();
176
- });
177
- return done;
168
+ this.protocol.teardown();
169
+ this.finishStream(r);
170
+ this.unsubscribe();
171
+ }
172
+ setupClientDisconnect() {
173
+ this.initialReply.raw.on("close", () => {
174
+ if (!this.sessionDone && this.state.replies.currentReply === this.initialReply) {
175
+ this.logger.info("Client disconnected, aborting session");
176
+ this.protocol.teardown();
177
+ this.protocol.reset();
178
+ this.state.session.markSessionErrored();
179
+ this.state.session.cleanup();
180
+ this.unsubscribe();
181
+ this.session.abort().catch((err) => {
182
+ this.logger.error("Failed to abort session:", err);
183
+ });
184
+ this.finishStream(null);
185
+ }
186
+ });
187
+ }
188
+ sendPrompt() {
189
+ this.session.send({ prompt: this.prompt }).catch((err) => {
190
+ if (this.sessionDone)
191
+ return;
192
+ this.logger.error("Failed to send prompt:", err);
193
+ this.sessionDone = true;
194
+ this.protocol.teardown();
195
+ this.protocol.reset();
196
+ this.unsubscribe();
197
+ this.finishStream(this.getReply());
198
+ });
199
+ }
178
200
  }
179
201
  //# sourceMappingURL=streaming-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming-core.js","sourceRoot":"","sources":["../../../src/providers/shared/streaming-core.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5F,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAsB,EACtB,OAAuB,EACvB,MAAc,EACd,MAAc,EACd,SAAkB,EAClB,QAA8B,EAC9B,YAA0B,EAC1B,KAAY;IAEZ,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAE1B,IAAI,aAAa,GAAa,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,SAAS,QAAQ;QACf,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IAED,SAAS,eAAe;QACtB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACvC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACvC,aAAa,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,UAAU,UAAU,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAChG,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YACzD,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO;gBACtB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;gBACnC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,kBAAkB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,yBAAyB;gBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAClD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9C,CAAC;gBACD,MAAM;YAER,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEhG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClE,MAAM,cAAc,GAAG,SAAS;wBAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;wBAChF,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;oBAE5B,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;wBACvE,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;oBACpG,CAAC;oBAED,MAAM,QAAQ,GAA0B,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;wBAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;wBACnE,OAAO;4BACL,UAAU,EAAE,EAAE,CAAC,UAAU;4BACzB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,KAAK,CAAC,aAAa,CAC5B,QAAQ,EACR,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAA4B,CAChD;yBACF,CAAC;oBACJ,CAAC,CAAC,CAAC;oBAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;4BAC1B,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,UAAU,WAAW,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;4BAC5G,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;wBACjD,CAAC;wBAED,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;wBACrB,IAAI,CAAC,EAAE,CAAC;4BACN,eAAe,EAAE,CAAC;4BAClB,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;4BACzC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACZ,KAAK,CAAC,UAAU,EAAE,CAAC;4BACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACjB,KAAK,CAAC,mBAAmB,EAAE,CAAC;wBAC9B,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;wBACzF,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;oBACrB,IAAI,CAAC,EAAE,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBACxE,eAAe,EAAE,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,2CAA2C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxF,WAAW,GAAG,IAAI,CAAC;gBACnB,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,eAAe,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,EAAE,CAAC;oBACN,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACpB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,KAAK,CAAC,UAAU,EAAE,CAAC;oBACnB,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,CAAC;gBACD,WAAW,EAAE,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,0BAA0B;gBAC7B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACrC,MAAM;YAER,KAAK,6BAA6B;gBAChC,MAAM,CAAC,IAAI,CAAC,sBAAsB,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,MAAM;YAER,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrD,WAAW,GAAG,IAAI,CAAC;gBACnB,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,EAAE,CAAC;oBACN,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACpB,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBACD,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,WAAW,EAAE,CAAC;gBACd,MAAM;YACR,CAAC;YAED,KAAK,iBAAiB;gBACpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM;YAER;gBACE,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnF,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACrC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAE1C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9C,IAAI,WAAW;YAAE,OAAO;QACxB,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC5C,WAAW,GAAG,IAAI,CAAC;QACnB,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;QACD,WAAW,EAAE,CAAC;QACd,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"streaming-core.js","sourceRoot":"","sources":["../../../src/providers/shared/streaming-core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Logger } from "copilot-sdk-proxy";
2
+ import type { ConversationManager, Conversation } from "../../conversation-manager.js";
3
+ interface StreamingContext {
4
+ conversation: Conversation;
5
+ logger: Logger;
6
+ manager: ConversationManager;
7
+ messageCount: number;
8
+ runStreaming: () => Promise<void>;
9
+ }
10
+ export declare function orchestrateStreaming(ctx: StreamingContext): Promise<void>;
11
+ export {};
@@ -0,0 +1,11 @@
1
+ export async function orchestrateStreaming(ctx) {
2
+ const { conversation, logger, manager, messageCount } = ctx;
3
+ const { state } = conversation;
4
+ logger.info(`Streaming response for conversation ${conversation.id}`);
5
+ await ctx.runStreaming();
6
+ conversation.sentMessageCount = messageCount;
7
+ if (conversation.isPrimary && state.session.hadError) {
8
+ manager.clearPrimary();
9
+ }
10
+ }
11
+ //# sourceMappingURL=streaming-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-orchestrator.js","sourceRoot":"","sources":["../../../src/providers/shared/streaming-orchestrator.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAqB;IAC9D,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;IAC5D,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,MAAM,CAAC,IAAI,CAAC,uCAAuC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;IACzB,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC;IAE7C,IAAI,YAAY,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrD,OAAO,CAAC,YAAY,EAAE,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { Logger } from "copilot-sdk-proxy";
3
+ export declare function addUserAgentGuard(app: FastifyInstance, uaPrefix: string, logger: Logger): void;
@@ -0,0 +1,17 @@
1
+ // /mcp/ routes are exempt because they're internal SDK traffic on localhost.
2
+ export function addUserAgentGuard(app, uaPrefix, logger) {
3
+ app.addHook("onRequest", (request, reply, done) => {
4
+ if (request.url.startsWith("/mcp/")) {
5
+ done();
6
+ return;
7
+ }
8
+ const ua = request.headers["user-agent"] ?? "";
9
+ if (!ua.startsWith(uaPrefix)) {
10
+ logger.warn(`Rejected request from unexpected user-agent: ${ua}`);
11
+ void reply.code(403).type("application/json").send('{"error":"Forbidden"}\n');
12
+ return;
13
+ }
14
+ done();
15
+ });
16
+ }
17
+ //# sourceMappingURL=user-agent-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-agent-guard.js","sourceRoot":"","sources":["../../../src/providers/shared/user-agent-guard.ts"],"names":[],"mappings":"AAGA,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAC/B,GAAoB,EACpB,QAAgB,EAChB,MAAc;IAEd,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;YAClE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,4 @@
1
- import type { SettingsPaths, PatchResult, PatchOptions, RestoreOptions, DetectOptions } from "./types.js";
2
- export declare function defaultSettingsPaths(): SettingsPaths;
1
+ import type { PatchResult, PatchOptions, RestoreOptions, DetectOptions } from "./types.js";
3
2
  export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
4
3
  export declare function patchClaudeSettings(options: PatchOptions): Promise<void>;
5
4
  export declare function restoreClaudeSettings(options: RestoreOptions): Promise<void>;
@@ -2,7 +2,10 @@ import { existsSync } from "node:fs";
2
2
  import { readFile, writeFile, rename, unlink, mkdir, copyFile } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { homedir } from "node:os";
5
- export function defaultSettingsPaths() {
5
+ import { extractLocalhostPort } from "./url-utils.js";
6
+ // Claude agent requires ANTHROPIC_AUTH_TOKEN to connect, but any value works for the local proxy.
7
+ const DUMMY_AUTH_TOKEN = "xcode-copilot";
8
+ function defaultSettingsPaths() {
6
9
  const dir = join(homedir(), "Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig");
7
10
  return {
8
11
  dir,
@@ -13,11 +16,18 @@ export function defaultSettingsPaths() {
13
16
  function isSettings(value) {
14
17
  return typeof value === "object" && value !== null && !Array.isArray(value);
15
18
  }
16
- async function readSettingsFile(path) {
19
+ async function readSettingsFile(path, logger) {
17
20
  if (!existsSync(path))
18
21
  return null;
19
22
  const content = await readFile(path, "utf-8");
20
- const parsed = JSON.parse(content);
23
+ let parsed;
24
+ try {
25
+ parsed = JSON.parse(content);
26
+ }
27
+ catch (err) {
28
+ logger?.warn(`Failed to parse ${path}: ${String(err)}`);
29
+ return null;
30
+ }
21
31
  return isSettings(parsed) ? parsed : null;
22
32
  }
23
33
  export async function detectPatchState(options) {
@@ -27,18 +37,19 @@ export async function detectPatchState(options) {
27
37
  return { patched: false };
28
38
  }
29
39
  try {
30
- const settings = await readSettingsFile(p.file);
40
+ const settings = await readSettingsFile(p.file, logger);
31
41
  const url = settings?.env?.ANTHROPIC_BASE_URL;
32
42
  if (url) {
33
- const match = /localhost:(\d+)/.exec(url);
34
- if (match?.[1]) {
35
- return { patched: true, port: parseInt(match[1], 10) };
43
+ const port = extractLocalhostPort(url);
44
+ if (port !== undefined) {
45
+ return { patched: true, port };
36
46
  }
37
47
  }
38
48
  }
39
49
  catch (err) {
40
50
  logger.warn(`Could not read settings.json to extract port: ${String(err)}`);
41
51
  }
52
+ // Backup exists, so a restore is needed even if we can't read the current port.
42
53
  return { patched: true };
43
54
  }
44
55
  export async function patchClaudeSettings(options) {
@@ -51,7 +62,7 @@ export async function patchClaudeSettings(options) {
51
62
  }
52
63
  let settings = {};
53
64
  try {
54
- settings = await readSettingsFile(p.file) ?? {};
65
+ settings = await readSettingsFile(p.file, logger) ?? {};
55
66
  }
56
67
  catch (err) {
57
68
  logger.warn(`Could not read settings.json, starting fresh: ${String(err)}`);
@@ -59,17 +70,28 @@ export async function patchClaudeSettings(options) {
59
70
  settings.env = {
60
71
  ...settings.env,
61
72
  ANTHROPIC_BASE_URL: `http://localhost:${String(options.port)}`,
62
- ANTHROPIC_AUTH_TOKEN: options.authToken ?? "12345",
73
+ ANTHROPIC_AUTH_TOKEN: options.authToken ?? DUMMY_AUTH_TOKEN,
63
74
  };
64
75
  await writeFile(p.file, JSON.stringify(settings, null, 2) + "\n", "utf-8");
65
76
  }
66
77
  export async function restoreClaudeSettings(options) {
67
78
  const p = options.paths ?? defaultSettingsPaths();
68
- if (existsSync(p.file)) {
69
- await unlink(p.file);
79
+ // Best-effort: log and continue so restore completes as much as possible.
80
+ try {
81
+ if (existsSync(p.file)) {
82
+ await unlink(p.file);
83
+ }
70
84
  }
71
- if (existsSync(p.backup)) {
72
- await rename(p.backup, p.file);
85
+ catch (err) {
86
+ options.logger.warn(`Failed to remove patched settings: ${String(err)}`);
87
+ }
88
+ try {
89
+ if (existsSync(p.backup)) {
90
+ await rename(p.backup, p.file);
91
+ }
92
+ }
93
+ catch (err) {
94
+ options.logger.warn(`Failed to restore backup settings: ${String(err)}`);
73
95
  }
74
96
  }
75
97
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/settings-patcher/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/settings-patcher/claude.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,4 @@
1
- import type { Logger } from "copilot-sdk-proxy";
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
- }
1
+ import type { PatchResult, CodexPatchOptions, CodexRestoreOptions, CodexDetectOptions } from "./types.js";
21
2
  export declare function detectCodexPatchState(options: CodexDetectOptions): Promise<PatchResult>;
22
3
  export declare function patchCodexSettings(options: CodexPatchOptions): Promise<void>;
23
4
  export declare function restoreCodexSettings(options: CodexRestoreOptions): Promise<void>;