xcode-copilot-server 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +83 -26
  2. package/config.json5 +13 -8
  3. package/dist/cli-validators.js +2 -2
  4. package/dist/cli-validators.js.map +1 -1
  5. package/dist/config.d.ts +1 -1
  6. package/dist/config.js +1 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/conversation-manager.d.ts +2 -1
  9. package/dist/conversation-manager.js +20 -1
  10. package/dist/conversation-manager.js.map +1 -1
  11. package/dist/handlers/responses/streaming.d.ts +6 -0
  12. package/dist/handlers/responses/streaming.js +265 -0
  13. package/dist/handlers/responses/streaming.js.map +1 -0
  14. package/dist/handlers/responses/tool-result-handler.d.ts +4 -0
  15. package/dist/handlers/responses/tool-result-handler.js +9 -0
  16. package/dist/handlers/responses/tool-result-handler.js.map +1 -0
  17. package/dist/handlers/responses.d.ts +4 -0
  18. package/dist/handlers/responses.js +164 -0
  19. package/dist/handlers/responses.js.map +1 -0
  20. package/dist/handlers/streaming-utils.d.ts +1 -0
  21. package/dist/handlers/streaming-utils.js +3 -0
  22. package/dist/handlers/streaming-utils.js.map +1 -1
  23. package/dist/index.js +23 -108
  24. package/dist/index.js.map +1 -1
  25. package/dist/providers/claude/count-tokens.d.ts +3 -0
  26. package/dist/providers/claude/count-tokens.js +72 -0
  27. package/dist/providers/claude/count-tokens.js.map +1 -0
  28. package/dist/providers/claude/handler.d.ts +4 -0
  29. package/dist/providers/claude/handler.js +150 -0
  30. package/dist/providers/claude/handler.js.map +1 -0
  31. package/dist/providers/claude/prompt.d.ts +2 -0
  32. package/dist/providers/claude/prompt.js +52 -0
  33. package/dist/providers/claude/prompt.js.map +1 -0
  34. package/dist/providers/claude/provider.d.ts +5 -0
  35. package/dist/providers/claude/provider.js +28 -0
  36. package/dist/providers/claude/provider.js.map +1 -0
  37. package/dist/providers/claude/schemas.d.ts +140 -0
  38. package/dist/providers/claude/schemas.js +58 -0
  39. package/dist/providers/claude/schemas.js.map +1 -0
  40. package/dist/providers/claude/streaming.d.ts +6 -0
  41. package/dist/providers/claude/streaming.js +116 -0
  42. package/dist/providers/claude/streaming.js.map +1 -0
  43. package/dist/providers/claude/tool-results.d.ts +4 -0
  44. package/dist/providers/claude/tool-results.js +19 -0
  45. package/dist/providers/claude/tool-results.js.map +1 -0
  46. package/dist/providers/codex/handler.d.ts +4 -0
  47. package/dist/providers/codex/handler.js +164 -0
  48. package/dist/providers/codex/handler.js.map +1 -0
  49. package/dist/providers/codex/prompt.d.ts +4 -0
  50. package/dist/providers/codex/prompt.js +58 -0
  51. package/dist/providers/codex/prompt.js.map +1 -0
  52. package/dist/providers/codex/provider.d.ts +5 -0
  53. package/dist/providers/codex/provider.js +24 -0
  54. package/dist/providers/codex/provider.js.map +1 -0
  55. package/dist/providers/codex/schemas.d.ts +122 -0
  56. package/dist/providers/codex/schemas.js +55 -0
  57. package/dist/providers/codex/schemas.js.map +1 -0
  58. package/dist/providers/codex/streaming.d.ts +9 -0
  59. package/dist/providers/codex/streaming.js +172 -0
  60. package/dist/providers/codex/streaming.js.map +1 -0
  61. package/dist/providers/codex/tool-results.d.ts +4 -0
  62. package/dist/providers/codex/tool-results.js +9 -0
  63. package/dist/providers/codex/tool-results.js.map +1 -0
  64. package/dist/providers/codex.d.ts +5 -0
  65. package/dist/providers/codex.js +24 -0
  66. package/dist/providers/codex.js.map +1 -0
  67. package/dist/providers/index.d.ts +6 -1
  68. package/dist/providers/index.js +5 -3
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/providers/openai/handler.d.ts +4 -0
  71. package/dist/providers/openai/handler.js +120 -0
  72. package/dist/providers/openai/handler.js.map +1 -0
  73. package/dist/providers/openai/models.d.ts +3 -0
  74. package/dist/providers/openai/models.js +28 -0
  75. package/dist/providers/openai/models.js.map +1 -0
  76. package/dist/providers/openai/prompt.d.ts +3 -0
  77. package/dist/providers/openai/prompt.js +38 -0
  78. package/dist/providers/openai/prompt.js.map +1 -0
  79. package/dist/providers/openai/provider.d.ts +5 -0
  80. package/dist/providers/openai/provider.js +25 -0
  81. package/dist/providers/openai/provider.js.map +1 -0
  82. package/dist/providers/openai/schemas.d.ts +98 -0
  83. package/dist/providers/openai/schemas.js +76 -0
  84. package/dist/providers/openai/schemas.js.map +1 -0
  85. package/dist/providers/openai/streaming.d.ts +4 -0
  86. package/dist/providers/openai/streaming.js +121 -0
  87. package/dist/providers/openai/streaming.js.map +1 -0
  88. package/dist/providers/shared/errors.d.ts +5 -0
  89. package/dist/providers/shared/errors.js +10 -0
  90. package/dist/providers/shared/errors.js.map +1 -0
  91. package/dist/providers/shared/model-resolver.d.ts +3 -0
  92. package/dist/providers/shared/model-resolver.js +45 -0
  93. package/dist/providers/shared/model-resolver.js.map +1 -0
  94. package/dist/providers/shared/prompt-utils.d.ts +1 -0
  95. package/dist/providers/shared/prompt-utils.js +15 -0
  96. package/dist/providers/shared/prompt-utils.js.map +1 -0
  97. package/dist/providers/shared/session-config.d.ts +15 -0
  98. package/dist/providers/shared/session-config.js +98 -0
  99. package/dist/providers/shared/session-config.js.map +1 -0
  100. package/dist/providers/shared/streaming-core.d.ts +19 -0
  101. package/dist/providers/shared/streaming-core.js +176 -0
  102. package/dist/providers/shared/streaming-core.js.map +1 -0
  103. package/dist/providers/shared/streaming-utils.d.ts +10 -0
  104. package/dist/providers/shared/streaming-utils.js +28 -0
  105. package/dist/providers/shared/streaming-utils.js.map +1 -0
  106. package/dist/schemas/config.d.ts +19 -1
  107. package/dist/schemas/config.js +2 -1
  108. package/dist/schemas/config.js.map +1 -1
  109. package/dist/schemas/responses.d.ts +122 -0
  110. package/dist/schemas/responses.js +54 -0
  111. package/dist/schemas/responses.js.map +1 -0
  112. package/dist/server.js +1 -2
  113. package/dist/server.js.map +1 -1
  114. package/dist/settings-patcher/anthropic.d.ts +5 -0
  115. package/dist/{settings-patcher.js → settings-patcher/anthropic.js} +3 -7
  116. package/dist/settings-patcher/anthropic.js.map +1 -0
  117. package/dist/settings-patcher/claude.d.ts +5 -0
  118. package/dist/settings-patcher/claude.js +75 -0
  119. package/dist/settings-patcher/claude.js.map +1 -0
  120. package/dist/settings-patcher/codex.d.ts +23 -0
  121. package/dist/settings-patcher/codex.js +114 -0
  122. package/dist/settings-patcher/codex.js.map +1 -0
  123. package/dist/settings-patcher/index.d.ts +15 -0
  124. package/dist/settings-patcher/index.js +9 -0
  125. package/dist/settings-patcher/index.js.map +1 -0
  126. package/dist/{settings-patcher.d.ts → settings-patcher/types.d.ts} +1 -5
  127. package/dist/settings-patcher/types.js +2 -0
  128. package/dist/settings-patcher/types.js.map +1 -0
  129. package/dist/startup.d.ts +11 -0
  130. package/dist/startup.js +154 -0
  131. package/dist/startup.js.map +1 -0
  132. package/dist/tool-bridge/constants.d.ts +2 -0
  133. package/dist/tool-bridge/constants.js +3 -0
  134. package/dist/tool-bridge/constants.js.map +1 -0
  135. package/dist/tool-bridge/index.d.ts +1 -0
  136. package/dist/tool-bridge/index.js +1 -0
  137. package/dist/tool-bridge/index.js.map +1 -1
  138. package/dist/tool-bridge/routes.js +2 -1
  139. package/dist/tool-bridge/routes.js.map +1 -1
  140. package/dist/tool-bridge/session-lifecycle.js +1 -1
  141. package/dist/tool-bridge/state.d.ts +1 -1
  142. package/dist/tool-bridge/tool-cache.d.ts +1 -1
  143. package/dist/ui.d.ts +7 -0
  144. package/dist/ui.js +8 -0
  145. package/dist/ui.js.map +1 -1
  146. package/dist/utils/responses-prompt.d.ts +4 -0
  147. package/dist/utils/responses-prompt.js +58 -0
  148. package/dist/utils/responses-prompt.js.map +1 -0
  149. package/package.json +1 -1
  150. package/dist/settings-patcher.js.map +0 -1
@@ -30,7 +30,8 @@ const ProviderConfigSchema = z.object({
30
30
  });
31
31
  export const ServerConfigSchema = z.object({
32
32
  openai: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
33
- anthropic: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
33
+ claude: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
34
+ codex: ProviderConfigSchema.default({ toolBridge: false, mcpServers: {} }),
34
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([]),
35
36
  excludedFilePatterns: z.array(z.string()).default([]),
36
37
  bodyLimitMiB: z
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { z } from "zod";
2
+ declare const ResponsesInputMessageSchema: z.ZodObject<{
3
+ type: z.ZodOptional<z.ZodLiteral<"message">>;
4
+ role: z.ZodEnum<{
5
+ system: "system";
6
+ developer: "developer";
7
+ user: "user";
8
+ assistant: "assistant";
9
+ }>;
10
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>;
11
+ }, z.core.$strip>;
12
+ declare const FunctionCallInputSchema: z.ZodObject<{
13
+ type: z.ZodLiteral<"function_call">;
14
+ id: z.ZodOptional<z.ZodString>;
15
+ call_id: z.ZodString;
16
+ name: z.ZodString;
17
+ arguments: z.ZodString;
18
+ }, z.core.$strip>;
19
+ declare const FunctionCallOutputInputSchema: z.ZodObject<{
20
+ type: z.ZodLiteral<"function_call_output">;
21
+ call_id: z.ZodString;
22
+ output: z.ZodString;
23
+ }, z.core.$strip>;
24
+ declare const InputItemSchema: z.ZodUnion<readonly [z.ZodObject<{
25
+ type: z.ZodOptional<z.ZodLiteral<"message">>;
26
+ role: z.ZodEnum<{
27
+ system: "system";
28
+ developer: "developer";
29
+ user: "user";
30
+ assistant: "assistant";
31
+ }>;
32
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>;
33
+ }, z.core.$strip>, z.ZodObject<{
34
+ type: z.ZodLiteral<"function_call">;
35
+ id: z.ZodOptional<z.ZodString>;
36
+ call_id: z.ZodString;
37
+ name: z.ZodString;
38
+ arguments: z.ZodString;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ type: z.ZodLiteral<"function_call_output">;
41
+ call_id: z.ZodString;
42
+ output: z.ZodString;
43
+ }, z.core.$strip>]>;
44
+ export type InputItem = z.infer<typeof InputItemSchema>;
45
+ export type InputMessage = z.infer<typeof ResponsesInputMessageSchema>;
46
+ export type FunctionCallInput = z.infer<typeof FunctionCallInputSchema>;
47
+ export type FunctionCallOutputInput = z.infer<typeof FunctionCallOutputInputSchema>;
48
+ declare const FunctionToolSchema: z.ZodObject<{
49
+ type: z.ZodLiteral<"function">;
50
+ name: z.ZodString;
51
+ description: z.ZodOptional<z.ZodString>;
52
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
+ strict: z.ZodOptional<z.ZodBoolean>;
54
+ }, z.core.$strip>;
55
+ export type ResponsesTool = z.infer<typeof FunctionToolSchema>;
56
+ /** Narrow to function tools only (ignore web_search, code_interpreter, etc.) */
57
+ export declare function filterFunctionTools(tools: Record<string, unknown>[]): ResponsesTool[];
58
+ export declare const ResponsesRequestSchema: z.ZodObject<{
59
+ model: z.ZodString;
60
+ input: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
61
+ type: z.ZodOptional<z.ZodLiteral<"message">>;
62
+ role: z.ZodEnum<{
63
+ system: "system";
64
+ developer: "developer";
65
+ user: "user";
66
+ assistant: "assistant";
67
+ }>;
68
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>;
69
+ }, z.core.$strip>, z.ZodObject<{
70
+ type: z.ZodLiteral<"function_call">;
71
+ id: z.ZodOptional<z.ZodString>;
72
+ call_id: z.ZodString;
73
+ name: z.ZodString;
74
+ arguments: z.ZodString;
75
+ }, z.core.$strip>, z.ZodObject<{
76
+ type: z.ZodLiteral<"function_call_output">;
77
+ call_id: z.ZodString;
78
+ output: z.ZodString;
79
+ }, z.core.$strip>]>>]>;
80
+ instructions: z.ZodOptional<z.ZodString>;
81
+ tools: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
82
+ stream: z.ZodOptional<z.ZodBoolean>;
83
+ temperature: z.ZodOptional<z.ZodNumber>;
84
+ previous_response_id: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>;
86
+ export type ResponsesRequest = z.infer<typeof ResponsesRequestSchema>;
87
+ export interface MessageContent {
88
+ type: "output_text";
89
+ text: string;
90
+ annotations: unknown[];
91
+ }
92
+ export interface MessageOutputItem {
93
+ type: "message";
94
+ id: string;
95
+ status: "in_progress" | "completed";
96
+ role: "assistant";
97
+ content: MessageContent[];
98
+ }
99
+ export interface FunctionCallOutputItem {
100
+ type: "function_call";
101
+ id: string;
102
+ call_id: string;
103
+ name: string;
104
+ arguments: string;
105
+ status: "in_progress" | "completed";
106
+ }
107
+ export type OutputItem = MessageOutputItem | FunctionCallOutputItem;
108
+ export interface ResponseObject {
109
+ id: string;
110
+ object: "response";
111
+ created_at: number;
112
+ model: string;
113
+ status: "in_progress" | "completed" | "incomplete" | "failed";
114
+ output: OutputItem[];
115
+ error?: {
116
+ code: string;
117
+ message: string;
118
+ } | null;
119
+ }
120
+ export declare function currentTimestamp(): number;
121
+ export declare function genId(prefix: string): string;
122
+ export {};
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+ const ResponsesInputMessageSchema = z.object({
3
+ type: z.literal("message").optional(),
4
+ role: z.enum(["user", "assistant", "system", "developer"]),
5
+ content: z.union([z.string(), z.array(z.record(z.string(), z.unknown()))]),
6
+ });
7
+ const FunctionCallInputSchema = z.object({
8
+ type: z.literal("function_call"),
9
+ id: z.string().optional(),
10
+ call_id: z.string(),
11
+ name: z.string(),
12
+ arguments: z.string(),
13
+ });
14
+ const FunctionCallOutputInputSchema = z.object({
15
+ type: z.literal("function_call_output"),
16
+ call_id: z.string(),
17
+ output: z.string(),
18
+ });
19
+ const InputItemSchema = z.union([
20
+ ResponsesInputMessageSchema,
21
+ FunctionCallInputSchema,
22
+ FunctionCallOutputInputSchema,
23
+ ]);
24
+ /** Accept any tool shape in the request; we only process function tools. */
25
+ const RawToolSchema = z.record(z.string(), z.unknown());
26
+ const FunctionToolSchema = z.object({
27
+ type: z.literal("function"),
28
+ name: z.string(),
29
+ description: z.string().optional(),
30
+ parameters: z.record(z.string(), z.unknown()).optional(),
31
+ strict: z.boolean().optional(),
32
+ });
33
+ /** Narrow to function tools only (ignore web_search, code_interpreter, etc.) */
34
+ export function filterFunctionTools(tools) {
35
+ return tools
36
+ .filter((t) => t.type === "function")
37
+ .map((t) => FunctionToolSchema.parse(t));
38
+ }
39
+ export const ResponsesRequestSchema = z.object({
40
+ model: z.string().min(1, "Model is required"),
41
+ input: z.union([z.string(), z.array(InputItemSchema)]),
42
+ instructions: z.string().optional(),
43
+ tools: z.array(RawToolSchema).optional(),
44
+ stream: z.boolean().optional(),
45
+ temperature: z.number().optional(),
46
+ previous_response_id: z.string().optional(),
47
+ });
48
+ export function currentTimestamp() {
49
+ return Math.floor(Date.now() / 1000);
50
+ }
51
+ export function genId(prefix) {
52
+ return `${prefix}_${String(Date.now())}`;
53
+ }
54
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/schemas/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9B,2BAA2B;IAC3B,uBAAuB;IACvB,6BAA6B;CAC9B,CAAC,CAAC;AAOH,4EAA4E;AAC5E,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAExD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAIH,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,KAAgC;IAClE,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;IACxC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAuCH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,MAAc;IAClC,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC"}
package/dist/server.js CHANGED
@@ -11,8 +11,7 @@ const PINO_LEVEL = {
11
11
  export async function createServer(ctx, provider) {
12
12
  const app = Fastify({
13
13
  bodyLimit: ctx.config.bodyLimit,
14
- // Destroy active connections immediately on close() so shutdown doesn't
15
- // hang waiting for SSE streams or pending tool bridge requests to drain.
14
+ // Without this, shutdown hangs waiting for SSE streams to drain
16
15
  forceCloseConnections: true,
17
16
  logger: {
18
17
  level: PINO_LEVEL[ctx.logger.level],
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAwB,MAAM,SAAS,CAAC;AACxD,OAAO,IAAI,MAAM,eAAe,CAAC;AAKjC,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;CACsB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAe,EACf,QAAkB;IAElB,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;QAC/B,wEAAwE;QACxE,yEAAyE;QACzE,qBAAqB,EAAE,IAAI;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;QACnC,cAAc,EAAE;YACd,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;SACZ;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE5B,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAwB,MAAM,SAAS,CAAC;AACxD,OAAO,IAAI,MAAM,eAAe,CAAC;AAKjC,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,OAAO;CACsB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAe,EACf,QAAkB;IAElB,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;QAC/B,gEAAgE;QAChE,qBAAqB,EAAE,IAAI;QAC3B,MAAM,EAAE;YACN,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;SACpC;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;QACnC,cAAc,EAAE;YACd,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,mBAAmB;YACnB,WAAW;SACZ;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE5B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SettingsPaths, PatchResult, PatchOptions, RestoreOptions, DetectOptions } from "./types.js";
2
+ export declare function defaultSettingsPaths(): SettingsPaths;
3
+ export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
4
+ export declare function patchAnthropicSettings(options: PatchOptions): Promise<void>;
5
+ export declare function restoreAnthropicSettings(options: RestoreOptions): Promise<void>;
@@ -41,14 +41,13 @@ export async function detectPatchState(options) {
41
41
  }
42
42
  return { patched: true };
43
43
  }
44
- export async function patchSettings(options) {
44
+ export async function patchAnthropicSettings(options) {
45
45
  const { logger } = options;
46
46
  const p = options.paths ?? defaultSettingsPaths();
47
47
  await mkdir(p.dir, { recursive: true });
48
48
  // Only back up once so crash recovery doesn't overwrite the original.
49
49
  if (existsSync(p.file) && !existsSync(p.backup)) {
50
50
  await copyFile(p.file, p.backup);
51
- logger.info("Backed up settings.json");
52
51
  }
53
52
  let settings = {};
54
53
  try {
@@ -63,17 +62,14 @@ export async function patchSettings(options) {
63
62
  ANTHROPIC_AUTH_TOKEN: options.authToken ?? "12345",
64
63
  };
65
64
  await writeFile(p.file, JSON.stringify(settings, null, 2) + "\n", "utf-8");
66
- logger.info(`Patched settings.json to point to http://localhost:${String(options.port)}`);
67
65
  }
68
- export async function restoreSettings(options) {
69
- const { logger } = options;
66
+ export async function restoreAnthropicSettings(options) {
70
67
  const p = options.paths ?? defaultSettingsPaths();
71
68
  if (existsSync(p.file)) {
72
69
  await unlink(p.file);
73
70
  }
74
71
  if (existsSync(p.backup)) {
75
72
  await rename(p.backup, p.file);
76
- logger.info("Restored settings.json from backup");
77
73
  }
78
74
  }
79
- //# sourceMappingURL=settings-patcher.js.map
75
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/settings-patcher/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SettingsPaths, PatchResult, PatchOptions, RestoreOptions, DetectOptions } from "./types.js";
2
+ export declare function defaultSettingsPaths(): SettingsPaths;
3
+ export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
4
+ export declare function patchClaudeSettings(options: PatchOptions): Promise<void>;
5
+ export declare function restoreClaudeSettings(options: RestoreOptions): Promise<void>;
@@ -0,0 +1,75 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile, writeFile, rename, unlink, mkdir, copyFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { homedir } from "node:os";
5
+ export function defaultSettingsPaths() {
6
+ const dir = join(homedir(), "Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig");
7
+ return {
8
+ dir,
9
+ file: join(dir, "settings.json"),
10
+ backup: join(dir, "settings.json.backup"),
11
+ };
12
+ }
13
+ function isSettings(value) {
14
+ return typeof value === "object" && value !== null && !Array.isArray(value);
15
+ }
16
+ async function readSettingsFile(path) {
17
+ if (!existsSync(path))
18
+ return null;
19
+ const content = await readFile(path, "utf-8");
20
+ const parsed = JSON.parse(content);
21
+ return isSettings(parsed) ? parsed : null;
22
+ }
23
+ export async function detectPatchState(options) {
24
+ const { logger } = options;
25
+ const p = options.paths ?? defaultSettingsPaths();
26
+ if (!existsSync(p.backup)) {
27
+ return { patched: false };
28
+ }
29
+ try {
30
+ const settings = await readSettingsFile(p.file);
31
+ const url = settings?.env?.ANTHROPIC_BASE_URL;
32
+ if (url) {
33
+ const match = /localhost:(\d+)/.exec(url);
34
+ if (match?.[1]) {
35
+ return { patched: true, port: parseInt(match[1], 10) };
36
+ }
37
+ }
38
+ }
39
+ catch (err) {
40
+ logger.warn(`Could not read settings.json to extract port: ${String(err)}`);
41
+ }
42
+ return { patched: true };
43
+ }
44
+ export async function patchClaudeSettings(options) {
45
+ const { logger } = options;
46
+ const p = options.paths ?? defaultSettingsPaths();
47
+ await mkdir(p.dir, { recursive: true });
48
+ // Only back up once so a crash doesn't clobber the real original
49
+ if (existsSync(p.file) && !existsSync(p.backup)) {
50
+ await copyFile(p.file, p.backup);
51
+ }
52
+ let settings = {};
53
+ try {
54
+ settings = await readSettingsFile(p.file) ?? {};
55
+ }
56
+ catch (err) {
57
+ logger.warn(`Could not read settings.json, starting fresh: ${String(err)}`);
58
+ }
59
+ settings.env = {
60
+ ...settings.env,
61
+ ANTHROPIC_BASE_URL: `http://localhost:${String(options.port)}`,
62
+ ANTHROPIC_AUTH_TOKEN: options.authToken ?? "12345",
63
+ };
64
+ await writeFile(p.file, JSON.stringify(settings, null, 2) + "\n", "utf-8");
65
+ }
66
+ export async function restoreClaudeSettings(options) {
67
+ const p = options.paths ?? defaultSettingsPaths();
68
+ if (existsSync(p.file)) {
69
+ await unlink(p.file);
70
+ }
71
+ if (existsSync(p.backup)) {
72
+ await rename(p.backup, p.file);
73
+ }
74
+ }
75
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/settings-patcher/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Logger } from "../logger.js";
2
+ import type { PatchResult } from "./types.js";
3
+ export type ExecFn = (cmd: string, args: string[]) => Promise<string>;
4
+ export declare function defaultCodexBackupPath(): string;
5
+ export interface CodexPatchOptions {
6
+ port: number;
7
+ logger: Logger;
8
+ exec?: ExecFn;
9
+ backupFile?: string;
10
+ }
11
+ export interface CodexRestoreOptions {
12
+ logger: Logger;
13
+ exec?: ExecFn;
14
+ backupFile?: string;
15
+ }
16
+ export interface CodexDetectOptions {
17
+ logger: Logger;
18
+ exec?: ExecFn;
19
+ backupFile?: string;
20
+ }
21
+ export declare function detectCodexPatchState(options: CodexDetectOptions): Promise<PatchResult>;
22
+ export declare function patchCodexSettings(options: CodexPatchOptions): Promise<void>;
23
+ export declare function restoreCodexSettings(options: CodexRestoreOptions): Promise<void>;
@@ -0,0 +1,114 @@
1
+ // Config.toml doesn't work here because the built-in "openai" provider
2
+ // always takes priority over custom [model_providers.openai] entries:
3
+ // https://github.com/openai/codex/blob/abeafbdca17f6102099ac5b792761b6883c52d35/codex-rs/core/src/config/mod.rs#L1544
4
+ //
5
+ // So we set OPENAI_BASE_URL via launchctl instead, that way Xcode (and
6
+ // any Codex process it spawns) can see it without a shell restart.
7
+ import { existsSync } from "node:fs";
8
+ import { readFile, writeFile, unlink, mkdir } from "node:fs/promises";
9
+ import { execFile as execFileCb } from "node:child_process";
10
+ import { promisify } from "node:util";
11
+ import { join } from "node:path";
12
+ import { homedir } from "node:os";
13
+ const execFileAsync = promisify(execFileCb);
14
+ async function defaultExec(cmd, args) {
15
+ const { stdout } = await execFileAsync(cmd, args);
16
+ return stdout;
17
+ }
18
+ export function defaultCodexBackupPath() {
19
+ return join(homedir(), "Library/Developer/Xcode/CodingAssistant/codex", "env.backup.json");
20
+ }
21
+ async function launchctlGetenv(exec, name) {
22
+ try {
23
+ const value = (await exec("launchctl", ["getenv", name])).trim();
24
+ return value || null;
25
+ }
26
+ catch {
27
+ return null;
28
+ }
29
+ }
30
+ export async function detectCodexPatchState(options) {
31
+ const { logger } = options;
32
+ const exec = options.exec ?? defaultExec;
33
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
34
+ if (!existsSync(backupFile)) {
35
+ return { patched: false };
36
+ }
37
+ try {
38
+ const url = await launchctlGetenv(exec, "OPENAI_BASE_URL");
39
+ if (url) {
40
+ const match = /localhost:(\d+)/.exec(url);
41
+ if (match?.[1]) {
42
+ return { patched: true, port: parseInt(match[1], 10) };
43
+ }
44
+ }
45
+ }
46
+ catch (err) {
47
+ logger.warn(`Could not read OPENAI_BASE_URL: ${String(err)}`);
48
+ }
49
+ return { patched: true };
50
+ }
51
+ export async function patchCodexSettings(options) {
52
+ const { port } = options;
53
+ const exec = options.exec ?? defaultExec;
54
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
55
+ const baseUrl = `http://localhost:${String(port)}/v1`;
56
+ // Only back up once so a crash doesn't clobber the real originals
57
+ if (!existsSync(backupFile)) {
58
+ const backup = {
59
+ OPENAI_BASE_URL: await launchctlGetenv(exec, "OPENAI_BASE_URL"),
60
+ OPENAI_API_KEY: await launchctlGetenv(exec, "OPENAI_API_KEY"),
61
+ };
62
+ const dir = join(backupFile, "..");
63
+ await mkdir(dir, { recursive: true });
64
+ await writeFile(backupFile, JSON.stringify(backup, null, 2) + "\n", "utf-8");
65
+ }
66
+ await exec("launchctl", ["setenv", "OPENAI_BASE_URL", baseUrl]);
67
+ await exec("launchctl", ["setenv", "OPENAI_API_KEY", "xcode-copilot"]);
68
+ }
69
+ export async function restoreCodexSettings(options) {
70
+ const { logger } = options;
71
+ const exec = options.exec ?? defaultExec;
72
+ const backupFile = options.backupFile ?? defaultCodexBackupPath();
73
+ if (!existsSync(backupFile)) {
74
+ // No backup found, just unset to be safe
75
+ try {
76
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
77
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
78
+ }
79
+ catch (err) {
80
+ logger.warn(`Failed to unset env vars: ${String(err)}`);
81
+ }
82
+ return;
83
+ }
84
+ try {
85
+ const raw = await readFile(backupFile, "utf-8");
86
+ const backup = JSON.parse(raw);
87
+ if (backup.OPENAI_BASE_URL != null) {
88
+ await exec("launchctl", ["setenv", "OPENAI_BASE_URL", backup.OPENAI_BASE_URL]);
89
+ }
90
+ else {
91
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
92
+ }
93
+ if (backup.OPENAI_API_KEY != null) {
94
+ await exec("launchctl", ["setenv", "OPENAI_API_KEY", backup.OPENAI_API_KEY]);
95
+ }
96
+ else {
97
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
98
+ }
99
+ await unlink(backupFile);
100
+ logger.info("Restored env vars from backup");
101
+ }
102
+ catch (err) {
103
+ logger.warn(`Failed to restore env vars: ${String(err)}`);
104
+ // Restore failed, just try to unset both
105
+ try {
106
+ await exec("launchctl", ["unsetenv", "OPENAI_BASE_URL"]);
107
+ await exec("launchctl", ["unsetenv", "OPENAI_API_KEY"]);
108
+ }
109
+ catch (unsetErr) {
110
+ logger.warn(`Failed to unset env vars during recovery: ${String(unsetErr)}`);
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/settings-patcher/codex.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,sEAAsE;AACtE,sHAAsH;AACtH,EAAE;AACF,uEAAuE;AACvE,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAI5C,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,IAAc;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CACT,OAAO,EAAE,EACT,+CAA+C,EAC/C,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IACvD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAqBD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA2B;IACrE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,mCAAmC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA0B;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC;IAElE,MAAM,OAAO,GAAG,oBAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAEtD,kEAAkE;IAClE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAc;YACxB,eAAe,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC;YAC/D,cAAc,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC;SAC9D,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA4B;IACrE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,yCAAyC;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;QAE5C,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,yCAAyC;QACzC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,6CAA6C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Logger } from "../logger.js";
2
+ import type { ProxyName } from "../providers/index.js";
3
+ export type { SettingsPaths, Settings, PatchResult, PatchOptions, RestoreOptions, DetectOptions, } from "./types.js";
4
+ export { defaultSettingsPaths, detectPatchState, patchClaudeSettings, restoreClaudeSettings, } from "./claude.js";
5
+ export type { ExecFn, CodexPatchOptions, CodexRestoreOptions, CodexDetectOptions, } from "./codex.js";
6
+ export { defaultCodexBackupPath, detectCodexPatchState, patchCodexSettings, restoreCodexSettings, } from "./codex.js";
7
+ export declare const patcherByProxy: Partial<Record<ProxyName, {
8
+ patch: (opts: {
9
+ port: number;
10
+ logger: Logger;
11
+ }) => Promise<void>;
12
+ restore: (opts: {
13
+ logger: Logger;
14
+ }) => Promise<void>;
15
+ }>>;
@@ -0,0 +1,9 @@
1
+ import { patchClaudeSettings, restoreClaudeSettings } from "./claude.js";
2
+ import { patchCodexSettings, restoreCodexSettings } from "./codex.js";
3
+ export { defaultSettingsPaths, detectPatchState, patchClaudeSettings, restoreClaudeSettings, } from "./claude.js";
4
+ export { defaultCodexBackupPath, detectCodexPatchState, patchCodexSettings, restoreCodexSettings, } from "./codex.js";
5
+ export const patcherByProxy = {
6
+ claude: { patch: patchClaudeSettings, restore: restoreClaudeSettings },
7
+ codex: { patch: patchCodexSettings, restore: restoreCodexSettings },
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/settings-patcher/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAWtE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AASrB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,cAAc,GAGrB;IACJ,MAAM,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,qBAAqB,EAAE;IACtE,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,oBAAoB,EAAE;CACpE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Logger } from "./logger.js";
1
+ import type { Logger } from "../logger.js";
2
2
  export interface SettingsPaths {
3
3
  dir: string;
4
4
  file: string;
@@ -22,8 +22,4 @@ export interface PatchOptions extends BaseOptions {
22
22
  }
23
23
  export type RestoreOptions = BaseOptions;
24
24
  export type DetectOptions = BaseOptions;
25
- export declare function defaultSettingsPaths(): SettingsPaths;
26
- export declare function detectPatchState(options: DetectOptions): Promise<PatchResult>;
27
- export declare function patchSettings(options: PatchOptions): Promise<void>;
28
- export declare function restoreSettings(options: RestoreOptions): Promise<void>;
29
25
  export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/settings-patcher/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export interface StartOptions {
2
+ port: string;
3
+ proxy: string;
4
+ logLevel: string;
5
+ version: string;
6
+ defaultConfigPath: string;
7
+ config?: string;
8
+ cwd?: string;
9
+ autoPatch?: true;
10
+ }
11
+ export declare function startServer(options: StartOptions): Promise<void>;