xcode-copilot-server 3.2.1 → 3.3.1

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 (57) hide show
  1. package/dist/banner.d.ts +11 -0
  2. package/dist/banner.js +20 -0
  3. package/dist/banner.js.map +1 -0
  4. package/dist/cli-validators.d.ts +3 -4
  5. package/dist/cli-validators.js +5 -27
  6. package/dist/cli-validators.js.map +1 -1
  7. package/dist/config.d.ts +22 -4
  8. package/dist/config.js +44 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/context.d.ts +1 -3
  11. package/dist/conversation-manager.d.ts +2 -9
  12. package/dist/conversation-manager.js +22 -0
  13. package/dist/conversation-manager.js.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/launchd/agent.d.ts +1 -1
  17. package/dist/providers/claude/handler.js +10 -28
  18. package/dist/providers/claude/handler.js.map +1 -1
  19. package/dist/providers/claude/provider.js +68 -3
  20. package/dist/providers/claude/provider.js.map +1 -1
  21. package/dist/providers/claude/streaming.d.ts +4 -6
  22. package/dist/providers/claude/streaming.js +15 -81
  23. package/dist/providers/claude/streaming.js.map +1 -1
  24. package/dist/providers/claude/tool-results.d.ts +1 -2
  25. package/dist/providers/claude/tool-results.js.map +1 -1
  26. package/dist/providers/codex/handler.js +9 -28
  27. package/dist/providers/codex/handler.js.map +1 -1
  28. package/dist/providers/codex/provider.js +77 -2
  29. package/dist/providers/codex/provider.js.map +1 -1
  30. package/dist/providers/codex/streaming.d.ts +4 -8
  31. package/dist/providers/codex/streaming.js +40 -142
  32. package/dist/providers/codex/streaming.js.map +1 -1
  33. package/dist/providers/codex/tool-results.d.ts +1 -2
  34. package/dist/providers/codex/tool-results.js.map +1 -1
  35. package/dist/providers/openai/handler.js +3 -6
  36. package/dist/providers/openai/handler.js.map +1 -1
  37. package/dist/providers/openai/provider.js +5 -3
  38. package/dist/providers/openai/provider.js.map +1 -1
  39. package/dist/providers/shared/prompt-utils.d.ts +11 -0
  40. package/dist/providers/shared/prompt-utils.js +26 -10
  41. package/dist/providers/shared/prompt-utils.js.map +1 -1
  42. package/dist/providers/shared/session-config.d.ts +4 -5
  43. package/dist/providers/shared/session-config.js +34 -69
  44. package/dist/providers/shared/session-config.js.map +1 -1
  45. package/dist/providers/shared/streaming-core.d.ts +3 -5
  46. package/dist/providers/shared/streaming-core.js +1 -1
  47. package/dist/providers/shared/streaming-core.js.map +1 -1
  48. package/dist/settings-patcher/codex.d.ts +1 -1
  49. package/dist/settings-patcher/index.d.ts +1 -1
  50. package/dist/settings-patcher/types.d.ts +1 -1
  51. package/dist/startup.js +8 -19
  52. package/dist/startup.js.map +1 -1
  53. package/dist/tool-bridge/index.d.ts +1 -1
  54. package/dist/tool-bridge/routes.d.ts +1 -1
  55. package/dist/tool-bridge/state.d.ts +1 -1
  56. package/dist/tool-bridge/tool-cache.d.ts +1 -1
  57. package/package.json +4 -7
@@ -1,53 +1,11 @@
1
- import { SSE_HEADERS, sendSSEEvent as sendEvent } from "../shared/streaming-utils.js";
1
+ import { sendSSEEvent as sendEvent, startReply, AnthropicProtocol, } from "copilot-sdk-proxy";
2
2
  import { runSessionStreaming } from "../shared/streaming-core.js";
3
- export function startReply(reply, model) {
4
- reply.raw.writeHead(200, SSE_HEADERS);
5
- const messageStart = {
6
- type: "message_start",
7
- message: {
8
- id: `msg_${String(Date.now())}`,
9
- type: "message",
10
- role: "assistant",
11
- content: [],
12
- model,
13
- stop_reason: null,
14
- usage: { input_tokens: 0, output_tokens: 0 },
15
- },
16
- };
17
- sendEvent(reply, "message_start", messageStart);
18
- }
19
- function createAnthropicProtocol() {
20
- let textBlockStarted = false;
21
- function ensureTextBlock(r) {
22
- if (!textBlockStarted) {
23
- const blockStart = {
24
- type: "content_block_start",
25
- index: 0,
26
- content_block: { type: "text", text: "" },
27
- };
28
- sendEvent(r, "content_block_start", blockStart);
29
- textBlockStarted = true;
30
- }
31
- }
32
- function sendBlockStop(r) {
33
- sendEvent(r, "content_block_stop", {
34
- type: "content_block_stop",
35
- index: 0,
36
- });
37
- }
38
- function sendEpilogue(r, stopReason) {
39
- const messageDelta = {
40
- type: "message_delta",
41
- delta: { stop_reason: stopReason, stop_sequence: null },
42
- usage: { output_tokens: 0 },
43
- };
44
- sendEvent(r, "message_delta", messageDelta);
45
- sendEvent(r, "message_stop", { type: "message_stop" });
46
- }
47
- function emitToolUseBlocks(r, toolRequests) {
3
+ export { startReply };
4
+ class BridgeAnthropicProtocol extends AnthropicProtocol {
5
+ emitToolUseBlocks(r, toolRequests) {
48
6
  let startIndex;
49
- if (textBlockStarted) {
50
- sendBlockStop(r);
7
+ if (this.textBlockStarted) {
8
+ this.sendBlockStop(r);
51
9
  startIndex = 1;
52
10
  }
53
11
  else {
@@ -73,44 +31,20 @@ function createAnthropicProtocol() {
73
31
  index++;
74
32
  }
75
33
  }
76
- return {
77
- flushDeltas(r, deltas) {
78
- ensureTextBlock(r);
79
- for (const text of deltas) {
80
- const delta = {
81
- type: "content_block_delta",
82
- index: 0,
83
- delta: { type: "text_delta", text },
84
- };
85
- sendEvent(r, "content_block_delta", delta);
86
- }
87
- },
88
- emitToolsAndFinish(r, tools) {
89
- emitToolUseBlocks(r, tools);
90
- sendEpilogue(r, "tool_use");
91
- },
92
- sendCompleted(r) {
93
- ensureTextBlock(r);
94
- sendBlockStop(r);
95
- sendEpilogue(r, "end_turn");
96
- },
97
- sendFailed(r) {
98
- if (textBlockStarted)
99
- sendBlockStop(r);
100
- sendEpilogue(r, "end_turn");
101
- },
102
- teardown() { },
103
- reset() {
104
- textBlockStarted = false;
105
- },
106
- };
34
+ emitToolsAndFinish(r, tools) {
35
+ this.emitToolUseBlocks(r, tools);
36
+ this.sendEpilogue(r, "tool_use");
37
+ }
38
+ reset() {
39
+ this.textBlockStarted = false;
40
+ }
107
41
  }
108
- export async function handleAnthropicStreaming(state, session, prompt, model, logger, hasBridge = false, stats) {
42
+ export async function handleAnthropicStreaming(state, session, prompt, model, logger, hasBridge, stats) {
109
43
  const reply = state.currentReply;
110
44
  if (!reply)
111
45
  throw new Error("No reply set on bridge state");
112
46
  startReply(reply, model);
113
- const protocol = createAnthropicProtocol();
47
+ const protocol = new BridgeAnthropicProtocol();
114
48
  return runSessionStreaming(state, session, prompt, logger, hasBridge, protocol, reply, stats);
115
49
  }
116
50
  //# sourceMappingURL=streaming.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/providers/claude/streaming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/providers/claude/streaming.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,IAAI,SAAS,EACzB,UAAU,EACV,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,MAAM,uBAAwB,SAAQ,iBAAiB;IAC7C,iBAAiB,CACvB,CAAe,EACf,YAAmC;QAEnC,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtB,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,GAAG,UAAU,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,SAAS,CAAC,CAAC,EAAE,qBAAqB,EAAE;gBAClC,IAAI,EAAE,qBAAqB;gBAC3B,KAAK;gBACL,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;aACjF,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,SAAS,CAAC,CAAC,EAAE,qBAAqB,EAAE;gBAClC,IAAI,EAAE,qBAAqB;gBAC3B,KAAK;gBACL,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,EAAE;aAC5D,CAAC,CAAC;YAEH,SAAS,CAAC,CAAC,EAAE,oBAAoB,EAAE;gBACjC,IAAI,EAAE,oBAAoB;gBAC1B,KAAK;aAC0B,CAAC,CAAC;YAEnC,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,CAAe,EAAE,KAA4B;QAC9D,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAsB,EACtB,OAAuB,EACvB,MAAc,EACd,KAAa,EACb,MAAc,EACd,SAAkB,EAClB,KAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC5D,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEzB,MAAM,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC/C,OAAO,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChG,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { AnthropicMessage } from "./schemas.js";
1
+ import type { AnthropicMessage, Logger } from "copilot-sdk-proxy";
2
2
  import type { ToolBridgeState } from "../../tool-bridge/state.js";
3
- import type { Logger } from "../../logger.js";
4
3
  export declare function resolveToolResults(messages: AnthropicMessage[], state: ToolBridgeState, logger: Logger): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-results.js","sourceRoot":"","sources":["../../../src/providers/claude/tool-results.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,kBAAkB,CAChC,QAA4B,EAC5B,KAAsB,EACtB,MAAc;IAEd,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO;IAEvF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAClD,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,0CAA0C,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-results.js","sourceRoot":"","sources":["../../../src/providers/claude/tool-results.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB,CAChC,QAA4B,EAC5B,KAAsB,EACtB,MAAc;IAEd,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO;IAEvF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAClD,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,0CAA0C,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,11 +1,8 @@
1
- import { ResponsesRequestSchema, filterFunctionTools } from "./schemas.js";
2
- import { genId } from "./schemas.js";
3
- import { formatResponsesPrompt, extractInstructions, extractFunctionCallOutputs, } from "./prompt.js";
4
- import { resolveModel } from "../shared/model-resolver.js";
1
+ import { ResponsesRequestSchema, filterFunctionTools, genId, formatResponsesPrompt, extractInstructions, extractFunctionCallOutputs, resolveModelForSession, sendOpenAIError as sendError, } from "@copilot-proxy/core";
5
2
  import { createSessionConfig } from "../shared/session-config.js";
3
+ import { filterExcludedFiles } from "../shared/prompt-utils.js";
6
4
  import { resolveResponsesToolResults } from "./tool-results.js";
7
5
  import { handleResponsesStreaming, startResponseStream } from "./streaming.js";
8
- import { sendOpenAIError as sendError } from "../shared/errors.js";
9
6
  export function createResponsesHandler({ service, logger, config, port, stats }, manager) {
10
7
  return async function handleResponses(request, reply) {
11
8
  stats.recordRequest();
@@ -67,7 +64,7 @@ export function createResponsesHandler({ service, logger, config, port, stats },
67
64
  : req.input;
68
65
  let prompt;
69
66
  try {
70
- prompt = formatResponsesPrompt(slicedInput, config.excludedFilePatterns);
67
+ prompt = filterExcludedFiles(formatResponsesPrompt(slicedInput), config.excludedFilePatterns);
71
68
  }
72
69
  catch (err) {
73
70
  sendError(reply, 400, "invalid_request_error", err instanceof Error ? err.message : String(err));
@@ -87,29 +84,13 @@ export function createResponsesHandler({ service, logger, config, port, stats },
87
84
  if (tools) {
88
85
  logger.debug(`Tool names: ${tools.map((t) => t.name).join(", ")}`);
89
86
  }
90
- let copilotModel = req.model;
91
- let supportsReasoningEffort = false;
92
- try {
93
- const models = await service.listModels();
94
- const resolved = resolveModel(req.model, models, logger);
95
- if (!resolved) {
96
- sendError(reply, 400, "invalid_request_error", `Model "${req.model}" is not available. Available models: ${models.map((m) => m.id).join(", ")}`);
97
- manager.remove(conversation.id);
98
- return;
99
- }
100
- copilotModel = resolved;
101
- if (config.reasoningEffort) {
102
- const modelInfo = models.find((m) => m.id === copilotModel);
103
- supportsReasoningEffort =
104
- modelInfo?.capabilities.supports.reasoningEffort ?? false;
105
- if (!supportsReasoningEffort) {
106
- logger.debug(`Model "${copilotModel}" does not support reasoning effort, ignoring config`);
107
- }
108
- }
109
- }
110
- catch (err) {
111
- logger.warn("Failed to list models, passing model through as-is:", err);
87
+ const resolved = await resolveModelForSession(service, req.model, config, logger);
88
+ if (!resolved.ok) {
89
+ sendError(reply, 400, "invalid_request_error", resolved.error);
90
+ manager.remove(conversation.id);
91
+ return;
112
92
  }
93
+ const { model: copilotModel, supportsReasoningEffort } = resolved;
113
94
  conversation.model = copilotModel;
114
95
  if (hasBridge) {
115
96
  logger.info("Tool bridge active (in-process MCP)");
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/providers/codex/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/providers/codex/handler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { registerToolBridge } from "../../tool-bridge/index.js";
2
- import { createResponsesHandler } from "./handler.js";
2
+ import { createResponsesHandler, extractFunctionCallOutputs, filterFunctionTools, genId, } from "copilot-sdk-proxy";
3
+ import { resolveResponsesToolResults } from "./tool-results.js";
4
+ import { handleResponsesStreaming, startResponseStream } from "./streaming.js";
5
+ import { createSessionConfig } from "../shared/session-config.js";
6
+ import { filterExcludedFiles } from "../shared/prompt-utils.js";
3
7
  export const codexProvider = {
4
8
  name: "Codex",
5
9
  routes: ["POST /v1/responses"],
@@ -18,7 +22,78 @@ export const codexProvider = {
18
22
  done();
19
23
  });
20
24
  const manager = registerToolBridge(app, ctx.logger);
21
- app.post("/v1/responses", createResponsesHandler(ctx, manager));
25
+ const { logger, config, port, stats } = ctx;
26
+ app.post("/v1/responses", createResponsesHandler(ctx, manager, {
27
+ beforeHandler: async (req, reply) => {
28
+ const callOutputs = extractFunctionCallOutputs(req.input);
29
+ logger.debug(`function_call_output items: ${String(callOutputs.length)}${callOutputs.length > 0 ? ` (call_ids: ${callOutputs.map((o) => o.call_id).join(", ")})` : ""}`);
30
+ if (callOutputs.length === 0)
31
+ return false;
32
+ const existingConv = manager.findByContinuationIds(callOutputs.map((o) => o.call_id));
33
+ if (!existingConv)
34
+ return false;
35
+ const state = existingConv.state;
36
+ logger.info(`Continuation for conversation ${existingConv.id} (hasPending=${String(state.hasPending)}, sessionActive=${String(state.sessionActive)})`);
37
+ state.setReply(reply);
38
+ startResponseStream(reply, genId("resp"), req.model);
39
+ reply.raw.on("close", () => {
40
+ if (state.currentReply === reply) {
41
+ logger.info("Client disconnected during continuation");
42
+ state.cleanup();
43
+ state.notifyStreamingDone();
44
+ }
45
+ });
46
+ resolveResponsesToolResults(callOutputs, state, logger);
47
+ await state.waitForStreamingDone();
48
+ existingConv.sentMessageCount = Array.isArray(req.input) ? req.input.length : 1;
49
+ return true;
50
+ },
51
+ onConversationReady: (conversation, req) => {
52
+ const { state } = conversation;
53
+ const tools = req.tools ? filterFunctionTools(req.tools) : undefined;
54
+ // Responses API tools use `parameters`, bridge uses `input_schema`
55
+ if (tools?.length) {
56
+ const bridgeTools = tools.map((t) => ({
57
+ name: t.name,
58
+ description: t.description,
59
+ input_schema: t.parameters ?? {},
60
+ }));
61
+ state.cacheTools(bridgeTools);
62
+ }
63
+ },
64
+ transformPrompt: (prompt) => filterExcludedFiles(prompt, config.excludedFilePatterns),
65
+ createSessionConfig: (baseOptions, conversation, req) => {
66
+ const tools = req.tools ? filterFunctionTools(req.tools) : undefined;
67
+ const hasBridge = !!tools?.length && config.toolBridge;
68
+ if (tools) {
69
+ logger.debug(`Tools in request: ${String(tools.length)}`);
70
+ logger.debug(`Tool names: ${tools.map((t) => t.name).join(", ")}`);
71
+ }
72
+ if (hasBridge) {
73
+ logger.info("Tool bridge active (in-process MCP)");
74
+ }
75
+ return createSessionConfig({
76
+ ...baseOptions,
77
+ config,
78
+ hasToolBridge: hasBridge,
79
+ port,
80
+ conversationId: conversation.id,
81
+ });
82
+ },
83
+ handleStreaming: async ({ conversation, session, prompt, model, reply, req, responseId }) => {
84
+ const { state } = conversation;
85
+ const tools = req.tools ? filterFunctionTools(req.tools) : undefined;
86
+ const hasBridge = !!tools?.length && config.toolBridge;
87
+ state.setReply(reply);
88
+ const inputLength = Array.isArray(req.input) ? req.input.length : 1;
89
+ logger.info(`Streaming response for conversation ${conversation.id}`);
90
+ await handleResponsesStreaming(state, session, prompt, model, logger, hasBridge, responseId, stats);
91
+ conversation.sentMessageCount = inputLength;
92
+ if (conversation.isPrimary && state.hadError) {
93
+ manager.clearPrimary();
94
+ }
95
+ },
96
+ }));
22
97
  },
23
98
  };
24
99
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/providers/codex/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,CAAC,oBAAoB,CAAC;IAE9B,QAAQ,CAAC,GAAG,EAAE,GAAG;QACf,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAChD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE,EAAE,CAAC,CAAC;gBACtE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;CACiB,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/providers/codex/provider.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- import type { FastifyReply } from "fastify";
2
- import type { CopilotSession } from "@github/copilot-sdk";
3
- import type { Logger } from "../../logger.js";
4
- import type { Stats } from "../../stats.js";
1
+ import type { CopilotSession, Logger, Stats } from "copilot-sdk-proxy";
2
+ import { startResponseStream } from "copilot-sdk-proxy";
3
+ import type { SeqCounter } from "copilot-sdk-proxy";
5
4
  import type { ToolBridgeState } from "../../tool-bridge/state.js";
6
- export interface SeqCounter {
7
- value: number;
8
- }
9
- export declare function startResponseStream(reply: FastifyReply, responseId: string, model: string, seq?: SeqCounter): SeqCounter;
5
+ export { type SeqCounter, startResponseStream };
10
6
  export declare function handleResponsesStreaming(state: ToolBridgeState, session: CopilotSession, prompt: string, model: string, logger: Logger, hasBridge: boolean, responseId: string, stats: Stats): Promise<void>;
@@ -1,87 +1,21 @@
1
- import { currentTimestamp, genId } from "./schemas.js";
2
- import { SSE_HEADERS, sendSSEEvent as sendEvent, sendSSEComment } from "../shared/streaming-utils.js";
1
+ import { sendSSEEvent as sendEvent, sendSSEComment, genId, nextSeq, startResponseStream, ResponsesProtocol, } from "copilot-sdk-proxy";
3
2
  import { runSessionStreaming } from "../shared/streaming-core.js";
4
- function nextSeq(counter) {
5
- return counter.value++;
6
- }
7
- export function startResponseStream(reply, responseId, model, seq) {
8
- const counter = seq ?? { value: 0 };
9
- reply.raw.writeHead(200, SSE_HEADERS);
10
- const response = {
11
- id: responseId,
12
- object: "response",
13
- created_at: currentTimestamp(),
14
- model,
15
- status: "in_progress",
16
- output: [],
17
- };
18
- sendEvent(reply, "response.created", { response }, nextSeq(counter));
19
- sendEvent(reply, "response.in_progress", { response }, nextSeq(counter));
20
- return counter;
21
- }
22
- function createResponsesProtocol(responseId, model, seq, getReply) {
23
- let messageItem = null;
24
- let messageStarted = false;
25
- let outputIndex = 0;
26
- const outputItems = [];
27
- const accumulatedText = [];
28
- // Keepalive every 15s so the client doesn't time out while
29
- // waiting for internal tool execution to finish
30
- const keepaliveInterval = setInterval(() => {
31
- const r = getReply();
32
- if (r)
33
- sendSSEComment(r);
34
- }, 15_000);
35
- function ensureMessageItem(r) {
36
- if (!messageStarted) {
37
- messageItem = {
38
- type: "message",
39
- id: genId("msg"),
40
- status: "in_progress",
41
- role: "assistant",
42
- content: [],
43
- };
44
- sendEvent(r, "response.output_item.added", {
45
- output_index: outputIndex,
46
- item: messageItem,
47
- }, nextSeq(seq));
48
- sendEvent(r, "response.content_part.added", {
49
- item_id: messageItem.id,
50
- output_index: outputIndex,
51
- content_index: 0,
52
- part: { type: "output_text", text: "", annotations: [] },
53
- }, nextSeq(seq));
54
- messageStarted = true;
55
- }
56
- }
57
- function closeMessageItem(r) {
58
- if (!messageStarted || !messageItem)
59
- return;
60
- const fullText = accumulatedText.join("");
61
- sendEvent(r, "response.output_text.done", {
62
- item_id: messageItem.id,
63
- output_index: outputIndex,
64
- content_index: 0,
65
- text: fullText,
66
- }, nextSeq(seq));
67
- sendEvent(r, "response.content_part.done", {
68
- item_id: messageItem.id,
69
- output_index: outputIndex,
70
- content_index: 0,
71
- part: { type: "output_text", text: fullText, annotations: [] },
72
- }, nextSeq(seq));
73
- messageItem.status = "completed";
74
- messageItem.content = [{ type: "output_text", text: fullText, annotations: [] }];
75
- outputItems.push(messageItem);
76
- sendEvent(r, "response.output_item.done", {
77
- output_index: outputIndex,
78
- item: messageItem,
79
- }, nextSeq(seq));
80
- outputIndex++;
81
- messageStarted = false;
82
- messageItem = null;
3
+ export { startResponseStream };
4
+ class BridgeResponsesProtocol extends ResponsesProtocol {
5
+ keepaliveInterval;
6
+ getReply;
7
+ constructor(responseId, model, seq, createdAt, getReply) {
8
+ super(responseId, model, seq, createdAt);
9
+ this.getReply = getReply;
10
+ // Keepalive every 15s so the client doesn't time out while
11
+ // waiting for internal tool execution to finish
12
+ this.keepaliveInterval = setInterval(() => {
13
+ const r = this.getReply();
14
+ if (r)
15
+ sendSSEComment(r);
16
+ }, 15_000);
83
17
  }
84
- function emitFunctionCallItems(r, toolRequests) {
18
+ emitFunctionCallItems(r, toolRequests) {
85
19
  for (const tr of toolRequests) {
86
20
  const callId = tr.toolCallId;
87
21
  const itemId = genId("fc");
@@ -95,78 +29,42 @@ function createResponsesProtocol(responseId, model, seq, getReply) {
95
29
  status: "in_progress",
96
30
  };
97
31
  sendEvent(r, "response.output_item.added", {
98
- output_index: outputIndex,
32
+ output_index: this.outputIndex,
99
33
  item: fcItem,
100
- }, nextSeq(seq));
34
+ }, nextSeq(this.seq));
101
35
  const doneItem = { ...fcItem, status: "completed" };
102
36
  sendEvent(r, "response.output_item.done", {
103
- output_index: outputIndex,
37
+ output_index: this.outputIndex,
104
38
  item: doneItem,
105
- }, nextSeq(seq));
106
- outputItems.push(doneItem);
107
- outputIndex++;
39
+ }, nextSeq(this.seq));
40
+ this.outputItems.push(doneItem);
41
+ this.outputIndex++;
108
42
  }
109
43
  }
110
- function sendResponseEnvelope(r, status) {
111
- const response = {
112
- id: responseId,
113
- object: "response",
114
- created_at: currentTimestamp(),
115
- model,
116
- status,
117
- output: outputItems,
118
- };
119
- sendEvent(r, `response.${status}`, { response }, nextSeq(seq));
44
+ emitToolsAndFinish(r, tools) {
45
+ this.closeMessageItem(r);
46
+ this.emitFunctionCallItems(r, tools);
47
+ this.sendResponseEnvelope(r, "completed");
48
+ }
49
+ teardown() {
50
+ clearInterval(this.keepaliveInterval);
51
+ }
52
+ reset() {
53
+ this.messageStarted = false;
54
+ this.messageItem = null;
55
+ this.outputIndex = 0;
56
+ this.outputItems.length = 0;
57
+ this.accumulatedText.length = 0;
58
+ // Sequence numbers must keep incrementing across tool-call cycles
59
+ // within the same response, so we deliberately leave seq alone.
120
60
  }
121
- return {
122
- flushDeltas(r, deltas) {
123
- ensureMessageItem(r);
124
- if (!messageItem)
125
- return;
126
- for (const text of deltas) {
127
- sendEvent(r, "response.output_text.delta", {
128
- item_id: messageItem.id,
129
- output_index: outputIndex,
130
- content_index: 0,
131
- delta: text,
132
- }, nextSeq(seq));
133
- accumulatedText.push(text);
134
- }
135
- },
136
- emitToolsAndFinish(r, tools) {
137
- closeMessageItem(r);
138
- emitFunctionCallItems(r, tools);
139
- sendResponseEnvelope(r, "completed");
140
- },
141
- sendCompleted(r) {
142
- if (!messageStarted)
143
- ensureMessageItem(r);
144
- closeMessageItem(r);
145
- sendResponseEnvelope(r, "completed");
146
- },
147
- sendFailed(r) {
148
- if (messageStarted)
149
- closeMessageItem(r);
150
- sendResponseEnvelope(r, "failed");
151
- },
152
- teardown() {
153
- clearInterval(keepaliveInterval);
154
- },
155
- reset() {
156
- messageStarted = false;
157
- messageItem = null;
158
- outputIndex = 0;
159
- outputItems.length = 0;
160
- accumulatedText.length = 0;
161
- },
162
- };
163
61
  }
164
62
  export async function handleResponsesStreaming(state, session, prompt, model, logger, hasBridge, responseId, stats) {
165
63
  const reply = state.currentReply;
166
64
  if (!reply)
167
65
  throw new Error("No reply set on bridge state");
168
- const seq = startResponseStream(reply, responseId, model);
169
- const protocol = createResponsesProtocol(responseId, model, seq, () => state.currentReply);
66
+ const { seq, createdAt } = startResponseStream(reply, responseId, model);
67
+ const protocol = new BridgeResponsesProtocol(responseId, model, seq, createdAt, () => state.currentReply);
170
68
  return runSessionStreaming(state, session, prompt, logger, hasBridge, protocol, reply, stats);
171
69
  }
172
70
  //# sourceMappingURL=streaming.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/providers/codex/streaming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/providers/codex/streaming.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,IAAI,SAAS,EACzB,cAAc,EACd,KAAK,EACL,OAAO,EACP,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAmB,mBAAmB,EAAE,CAAC;AAEhD,MAAM,uBAAwB,SAAQ,iBAAiB;IACpC,iBAAiB,CAAiC;IAClD,QAAQ,CAA4B;IAErD,YACE,UAAkB,EAClB,KAAa,EACb,GAAe,EACf,SAAiB,EACjB,QAAmC;QAEnC,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,2DAA2D;QAC3D,gDAAgD;QAChD,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;IAEO,qBAAqB,CAC3B,CAAe,EACf,YAAmC;QAEnC,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE5E,MAAM,MAAM,GAA2B;gBACrC,IAAI,EAAE,eAAe;gBACrB,EAAE,EAAE,MAAM;gBACV,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE,aAAa;aACtB,CAAC;YAEF,SAAS,CAAC,CAAC,EAAE,4BAA4B,EAAE;gBACzC,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,IAAI,EAAE,MAAM;aACb,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAEtB,MAAM,QAAQ,GAA2B,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAC5E,SAAS,CAAC,CAAC,EAAE,2BAA2B,EAAE;gBACxC,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,IAAI,EAAE,QAAQ;aACf,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAEtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,CAAe,EAAE,KAA4B;QAC9D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAEQ,QAAQ;QACf,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,kEAAkE;QAClE,gEAAgE;IAClE,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAsB,EACtB,OAAuB,EACvB,MAAc,EACd,KAAa,EACb,MAAc,EACd,SAAkB,EAClB,UAAkB,EAClB,KAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1G,OAAO,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChG,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { FunctionCallOutputInput } from "./schemas.js";
1
+ import type { FunctionCallOutputInput, Logger } from "copilot-sdk-proxy";
2
2
  import type { ToolBridgeState } from "../../tool-bridge/state.js";
3
- import type { Logger } from "../../logger.js";
4
3
  export declare function resolveResponsesToolResults(outputs: FunctionCallOutputInput[], state: ToolBridgeState, logger: Logger): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-results.js","sourceRoot":"","sources":["../../../src/providers/codex/tool-results.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,2BAA2B,CACzC,OAAkC,EAClC,KAAsB,EACtB,MAAc;IAEd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tool-results.js","sourceRoot":"","sources":["../../../src/providers/codex/tool-results.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,2BAA2B,CACzC,OAAkC,EAClC,KAAsB,EACtB,MAAc;IAEd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,8 +1,5 @@
1
- import { ChatCompletionRequestSchema, extractContentText } from "./schemas.js";
2
- import { formatPrompt } from "./prompt.js";
3
- import { createSessionConfig } from "../shared/session-config.js";
4
- import { handleStreaming } from "./streaming.js";
5
- import { sendOpenAIError as sendError } from "../shared/errors.js";
1
+ import { ChatCompletionRequestSchema, extractContentText, formatPrompt, createSessionConfig, handleOpenAIStreaming as handleStreaming, sendOpenAIError as sendError, } from "@copilot-proxy/core";
2
+ import { filterExcludedFiles } from "../shared/prompt-utils.js";
6
3
  export function createCompletionsHandler({ service, logger, config, stats }, manager) {
7
4
  return async function handleCompletions(request, reply) {
8
5
  stats.recordRequest();
@@ -40,7 +37,7 @@ export function createCompletionsHandler({ service, logger, config, stats }, man
40
37
  }
41
38
  let prompt;
42
39
  try {
43
- prompt = formatPrompt(messages.slice(conversation.sentMessageCount), config.excludedFilePatterns);
40
+ prompt = filterExcludedFiles(formatPrompt(messages.slice(conversation.sentMessageCount)), config.excludedFilePatterns);
44
41
  }
45
42
  catch (err) {
46
43
  sendError(reply, 400, "invalid_request_error", err instanceof Error ? err.message : String(err));