@uvl000/claude-trace 3.0.13-workflowexp.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 (258) hide show
  1. package/README.md +477 -0
  2. package/README.zh-CN.md +477 -0
  3. package/dist/adapt/api-format.d.ts +41 -0
  4. package/dist/adapt/api-format.d.ts.map +1 -0
  5. package/dist/adapt/api-format.js +132 -0
  6. package/dist/adapt/api-format.js.map +1 -0
  7. package/dist/adapt/openai-adapter.d.ts +123 -0
  8. package/dist/adapt/openai-adapter.d.ts.map +1 -0
  9. package/dist/adapt/openai-adapter.js +628 -0
  10. package/dist/adapt/openai-adapter.js.map +1 -0
  11. package/dist/cli/cli-common.d.ts +73 -0
  12. package/dist/cli/cli-common.d.ts.map +1 -0
  13. package/dist/cli/cli-common.js +189 -0
  14. package/dist/cli/cli-common.js.map +1 -0
  15. package/dist/cli/cli.d.ts +23 -0
  16. package/dist/cli/cli.d.ts.map +1 -0
  17. package/dist/cli/cli.js +175 -0
  18. package/dist/cli/cli.js.map +1 -0
  19. package/dist/cli/codex-cli.d.ts +24 -0
  20. package/dist/cli/codex-cli.d.ts.map +1 -0
  21. package/dist/cli/codex-cli.js +146 -0
  22. package/dist/cli/codex-cli.js.map +1 -0
  23. package/dist/cli/opencode-cli.d.ts +23 -0
  24. package/dist/cli/opencode-cli.d.ts.map +1 -0
  25. package/dist/cli/opencode-cli.js +156 -0
  26. package/dist/cli/opencode-cli.js.map +1 -0
  27. package/dist/cli/trace-runner.d.ts +21 -0
  28. package/dist/cli/trace-runner.d.ts.map +1 -0
  29. package/dist/cli/trace-runner.js +282 -0
  30. package/dist/cli/trace-runner.js.map +1 -0
  31. package/dist/cli/validate-trace.d.ts +30 -0
  32. package/dist/cli/validate-trace.d.ts.map +1 -0
  33. package/dist/cli/validate-trace.js +230 -0
  34. package/dist/cli/validate-trace.js.map +1 -0
  35. package/dist/cli/verify-offline-bundle.d.ts +13 -0
  36. package/dist/cli/verify-offline-bundle.d.ts.map +1 -0
  37. package/dist/cli/verify-offline-bundle.js +89 -0
  38. package/dist/cli/verify-offline-bundle.js.map +1 -0
  39. package/dist/cli/vibe-coding-proxy-cli.d.ts +12 -0
  40. package/dist/cli/vibe-coding-proxy-cli.d.ts.map +1 -0
  41. package/dist/cli/vibe-coding-proxy-cli.js +218 -0
  42. package/dist/cli/vibe-coding-proxy-cli.js.map +1 -0
  43. package/dist/config/claude-config-overlay.d.ts +69 -0
  44. package/dist/config/claude-config-overlay.d.ts.map +1 -0
  45. package/dist/config/claude-config-overlay.js +229 -0
  46. package/dist/config/claude-config-overlay.js.map +1 -0
  47. package/dist/config/codex-config-overlay.d.ts +122 -0
  48. package/dist/config/codex-config-overlay.d.ts.map +1 -0
  49. package/dist/config/codex-config-overlay.js +352 -0
  50. package/dist/config/codex-config-overlay.js.map +1 -0
  51. package/dist/index.d.ts +15 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +37 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/intercept/forward-proxy.d.ts +77 -0
  56. package/dist/intercept/forward-proxy.d.ts.map +1 -0
  57. package/dist/intercept/forward-proxy.js +368 -0
  58. package/dist/intercept/forward-proxy.js.map +1 -0
  59. package/dist/intercept/header-redaction.d.ts +7 -0
  60. package/dist/intercept/header-redaction.d.ts.map +1 -0
  61. package/dist/intercept/header-redaction.js +28 -0
  62. package/dist/intercept/header-redaction.js.map +1 -0
  63. package/dist/intercept/interceptor-loader.js +26 -0
  64. package/dist/intercept/interceptor.d.ts +164 -0
  65. package/dist/intercept/interceptor.d.ts.map +1 -0
  66. package/dist/intercept/interceptor.js +496 -0
  67. package/dist/intercept/interceptor.js.map +1 -0
  68. package/dist/intercept/mitm-cert.d.ts +53 -0
  69. package/dist/intercept/mitm-cert.d.ts.map +1 -0
  70. package/dist/intercept/mitm-cert.js +259 -0
  71. package/dist/intercept/mitm-cert.js.map +1 -0
  72. package/dist/intercept/proxy-log-writer.d.ts +77 -0
  73. package/dist/intercept/proxy-log-writer.d.ts.map +1 -0
  74. package/dist/intercept/proxy-log-writer.js +323 -0
  75. package/dist/intercept/proxy-log-writer.js.map +1 -0
  76. package/dist/intercept/proxy-targets.d.ts +69 -0
  77. package/dist/intercept/proxy-targets.d.ts.map +1 -0
  78. package/dist/intercept/proxy-targets.js +129 -0
  79. package/dist/intercept/proxy-targets.js.map +1 -0
  80. package/dist/intercept/reverse-proxy.d.ts +191 -0
  81. package/dist/intercept/reverse-proxy.d.ts.map +1 -0
  82. package/dist/intercept/reverse-proxy.js +807 -0
  83. package/dist/intercept/reverse-proxy.js.map +1 -0
  84. package/dist/intercept/token-extractor.js +28 -0
  85. package/dist/report/html-generator.d.ts +96 -0
  86. package/dist/report/html-generator.d.ts.map +1 -0
  87. package/dist/report/html-generator.js +225 -0
  88. package/dist/report/html-generator.js.map +1 -0
  89. package/dist/report/index-generator.d.ts +89 -0
  90. package/dist/report/index-generator.d.ts.map +1 -0
  91. package/dist/report/index-generator.js +319 -0
  92. package/dist/report/index-generator.js.map +1 -0
  93. package/dist/report/shared-conversation-processor.d.ts +200 -0
  94. package/dist/report/shared-conversation-processor.d.ts.map +1 -0
  95. package/dist/report/shared-conversation-processor.js +720 -0
  96. package/dist/report/shared-conversation-processor.js.map +1 -0
  97. package/dist/routing/codex-routing.d.ts +40 -0
  98. package/dist/routing/codex-routing.d.ts.map +1 -0
  99. package/dist/routing/codex-routing.js +96 -0
  100. package/dist/routing/codex-routing.js.map +1 -0
  101. package/dist/routing/proxy-routing.d.ts +48 -0
  102. package/dist/routing/proxy-routing.d.ts.map +1 -0
  103. package/dist/routing/proxy-routing.js +113 -0
  104. package/dist/routing/proxy-routing.js.map +1 -0
  105. package/dist/tools/binary-utils.d.ts +29 -0
  106. package/dist/tools/binary-utils.d.ts.map +1 -0
  107. package/dist/tools/binary-utils.js +134 -0
  108. package/dist/tools/binary-utils.js.map +1 -0
  109. package/dist/tools/claude.d.ts +61 -0
  110. package/dist/tools/claude.d.ts.map +1 -0
  111. package/dist/tools/claude.js +449 -0
  112. package/dist/tools/claude.js.map +1 -0
  113. package/dist/tools/codex.d.ts +70 -0
  114. package/dist/tools/codex.d.ts.map +1 -0
  115. package/dist/tools/codex.js +492 -0
  116. package/dist/tools/codex.js.map +1 -0
  117. package/dist/tools/opencode.d.ts +85 -0
  118. package/dist/tools/opencode.d.ts.map +1 -0
  119. package/dist/tools/opencode.js +401 -0
  120. package/dist/tools/opencode.js.map +1 -0
  121. package/dist/tools/types.d.ts +91 -0
  122. package/dist/tools/types.d.ts.map +1 -0
  123. package/dist/tools/types.js +11 -0
  124. package/dist/tools/types.js.map +1 -0
  125. package/dist/types.d.ts +158 -0
  126. package/dist/types.d.ts.map +1 -0
  127. package/dist/types.js +12 -0
  128. package/dist/types.js.map +1 -0
  129. package/frontend/dist/index.global.js +1551 -0
  130. package/frontend/dist/styles.css +1027 -0
  131. package/frontend/template.html +19 -0
  132. package/node_modules/agent-base/LICENSE +22 -0
  133. package/node_modules/agent-base/README.md +69 -0
  134. package/node_modules/agent-base/dist/helpers.d.ts +15 -0
  135. package/node_modules/agent-base/dist/helpers.d.ts.map +1 -0
  136. package/node_modules/agent-base/dist/helpers.js +66 -0
  137. package/node_modules/agent-base/dist/helpers.js.map +1 -0
  138. package/node_modules/agent-base/dist/index.d.ts +41 -0
  139. package/node_modules/agent-base/dist/index.d.ts.map +1 -0
  140. package/node_modules/agent-base/dist/index.js +178 -0
  141. package/node_modules/agent-base/dist/index.js.map +1 -0
  142. package/node_modules/agent-base/package.json +46 -0
  143. package/node_modules/debug/LICENSE +20 -0
  144. package/node_modules/debug/README.md +481 -0
  145. package/node_modules/debug/package.json +64 -0
  146. package/node_modules/debug/src/browser.js +272 -0
  147. package/node_modules/debug/src/common.js +292 -0
  148. package/node_modules/debug/src/index.js +10 -0
  149. package/node_modules/debug/src/node.js +263 -0
  150. package/node_modules/http-proxy-agent/LICENSE +22 -0
  151. package/node_modules/http-proxy-agent/README.md +44 -0
  152. package/node_modules/http-proxy-agent/dist/index.d.ts +44 -0
  153. package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -0
  154. package/node_modules/http-proxy-agent/dist/index.js +148 -0
  155. package/node_modules/http-proxy-agent/dist/index.js.map +1 -0
  156. package/node_modules/http-proxy-agent/package.json +47 -0
  157. package/node_modules/https-proxy-agent/LICENSE +22 -0
  158. package/node_modules/https-proxy-agent/README.md +70 -0
  159. package/node_modules/https-proxy-agent/dist/index.d.ts +47 -0
  160. package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -0
  161. package/node_modules/https-proxy-agent/dist/index.js +180 -0
  162. package/node_modules/https-proxy-agent/dist/index.js.map +1 -0
  163. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +15 -0
  164. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -0
  165. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  166. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
  167. package/node_modules/https-proxy-agent/package.json +50 -0
  168. package/node_modules/ms/index.js +162 -0
  169. package/node_modules/ms/license.md +21 -0
  170. package/node_modules/ms/package.json +38 -0
  171. package/node_modules/ms/readme.md +59 -0
  172. package/node_modules/node-forge/LICENSE +331 -0
  173. package/node_modules/node-forge/README.md +2071 -0
  174. package/node_modules/node-forge/dist/forge.all.min.js +2 -0
  175. package/node_modules/node-forge/dist/forge.all.min.js.map +1 -0
  176. package/node_modules/node-forge/dist/forge.min.js +2 -0
  177. package/node_modules/node-forge/dist/forge.min.js.map +1 -0
  178. package/node_modules/node-forge/dist/prime.worker.min.js +2 -0
  179. package/node_modules/node-forge/dist/prime.worker.min.js.map +1 -0
  180. package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
  181. package/node_modules/node-forge/lib/aes.js +1091 -0
  182. package/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
  183. package/node_modules/node-forge/lib/asn1-validator.js +91 -0
  184. package/node_modules/node-forge/lib/asn1.js +1503 -0
  185. package/node_modules/node-forge/lib/baseN.js +186 -0
  186. package/node_modules/node-forge/lib/cipher.js +230 -0
  187. package/node_modules/node-forge/lib/cipherModes.js +999 -0
  188. package/node_modules/node-forge/lib/des.js +496 -0
  189. package/node_modules/node-forge/lib/ed25519.js +1091 -0
  190. package/node_modules/node-forge/lib/forge.js +13 -0
  191. package/node_modules/node-forge/lib/form.js +149 -0
  192. package/node_modules/node-forge/lib/hmac.js +146 -0
  193. package/node_modules/node-forge/lib/http.js +1346 -0
  194. package/node_modules/node-forge/lib/index.all.js +16 -0
  195. package/node_modules/node-forge/lib/index.js +33 -0
  196. package/node_modules/node-forge/lib/jsbn.js +1294 -0
  197. package/node_modules/node-forge/lib/kem.js +168 -0
  198. package/node_modules/node-forge/lib/log.js +319 -0
  199. package/node_modules/node-forge/lib/md.all.js +13 -0
  200. package/node_modules/node-forge/lib/md.js +11 -0
  201. package/node_modules/node-forge/lib/md5.js +289 -0
  202. package/node_modules/node-forge/lib/mgf.js +12 -0
  203. package/node_modules/node-forge/lib/mgf1.js +57 -0
  204. package/node_modules/node-forge/lib/oids.js +180 -0
  205. package/node_modules/node-forge/lib/pbe.js +1023 -0
  206. package/node_modules/node-forge/lib/pbkdf2.js +211 -0
  207. package/node_modules/node-forge/lib/pem.js +237 -0
  208. package/node_modules/node-forge/lib/pkcs1.js +276 -0
  209. package/node_modules/node-forge/lib/pkcs12.js +1078 -0
  210. package/node_modules/node-forge/lib/pkcs7.js +1260 -0
  211. package/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
  212. package/node_modules/node-forge/lib/pki.js +102 -0
  213. package/node_modules/node-forge/lib/prime.js +297 -0
  214. package/node_modules/node-forge/lib/prime.worker.js +168 -0
  215. package/node_modules/node-forge/lib/prng.js +419 -0
  216. package/node_modules/node-forge/lib/pss.js +241 -0
  217. package/node_modules/node-forge/lib/random.js +191 -0
  218. package/node_modules/node-forge/lib/rc2.js +410 -0
  219. package/node_modules/node-forge/lib/rsa.js +1968 -0
  220. package/node_modules/node-forge/lib/sha1.js +319 -0
  221. package/node_modules/node-forge/lib/sha256.js +327 -0
  222. package/node_modules/node-forge/lib/sha512.js +561 -0
  223. package/node_modules/node-forge/lib/socket.js +287 -0
  224. package/node_modules/node-forge/lib/ssh.js +236 -0
  225. package/node_modules/node-forge/lib/tls.js +4282 -0
  226. package/node_modules/node-forge/lib/tlssocket.js +249 -0
  227. package/node_modules/node-forge/lib/util.js +2652 -0
  228. package/node_modules/node-forge/lib/x509.js +3251 -0
  229. package/node_modules/node-forge/lib/xhr.js +738 -0
  230. package/node_modules/node-forge/package.json +123 -0
  231. package/node_modules/smol-toml/LICENSE +24 -0
  232. package/node_modules/smol-toml/README.md +239 -0
  233. package/node_modules/smol-toml/dist/date.d.ts +41 -0
  234. package/node_modules/smol-toml/dist/date.js +127 -0
  235. package/node_modules/smol-toml/dist/error.d.ts +38 -0
  236. package/node_modules/smol-toml/dist/error.js +63 -0
  237. package/node_modules/smol-toml/dist/extract.d.ts +30 -0
  238. package/node_modules/smol-toml/dist/extract.js +100 -0
  239. package/node_modules/smol-toml/dist/index.cjs +897 -0
  240. package/node_modules/smol-toml/dist/index.d.ts +43 -0
  241. package/node_modules/smol-toml/dist/index.js +33 -0
  242. package/node_modules/smol-toml/dist/parse.d.ts +37 -0
  243. package/node_modules/smol-toml/dist/parse.js +148 -0
  244. package/node_modules/smol-toml/dist/primitive.d.ts +31 -0
  245. package/node_modules/smol-toml/dist/primitive.js +179 -0
  246. package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
  247. package/node_modules/smol-toml/dist/stringify.js +167 -0
  248. package/node_modules/smol-toml/dist/struct.d.ts +32 -0
  249. package/node_modules/smol-toml/dist/struct.js +184 -0
  250. package/node_modules/smol-toml/dist/util.d.ts +42 -0
  251. package/node_modules/smol-toml/dist/util.js +111 -0
  252. package/node_modules/smol-toml/package.json +54 -0
  253. package/offline/bin/claude-trace +6 -0
  254. package/offline/bin/claude-wrapper +13 -0
  255. package/offline/bin/install-agent +14 -0
  256. package/offline/bin/validate-trace +6 -0
  257. package/offline/bin/verify-bundle +7 -0
  258. package/package.json +103 -0
@@ -0,0 +1,628 @@
1
+ "use strict";
2
+ /**
3
+ * @file OpenAI ↔ Anthropic format adapter.
4
+ *
5
+ * Normalizes OpenAI Chat Completions and Responses API payloads into Anthropic
6
+ * `MessageCreateParams` / `Message` shapes so the shared conversation processor
7
+ * and HTML viewer can render all intercepted providers uniformly.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.inferApiFormatFromUrl = void 0;
11
+ exports.normalizeOpenAIChatRequest = normalizeOpenAIChatRequest;
12
+ exports.normalizeOpenAIResponsesRequest = normalizeOpenAIResponsesRequest;
13
+ exports.parseOpenAIChatCompletionBody = parseOpenAIChatCompletionBody;
14
+ exports.parseOpenAIResponsesBody = parseOpenAIResponsesBody;
15
+ exports.buildOpenAIChatCompletionFromSSE = buildOpenAIChatCompletionFromSSE;
16
+ exports.buildOpenAIResponsesFromSSE = buildOpenAIResponsesFromSSE;
17
+ exports.parseOpenAIResponse = parseOpenAIResponse;
18
+ exports.normalizeOpenAIRequest = normalizeOpenAIRequest;
19
+ exports.resolvePairApiFormat = resolvePairApiFormat;
20
+ exports.extractModelFromPair = extractModelFromPair;
21
+ const api_format_1 = require("./api-format");
22
+ Object.defineProperty(exports, "inferApiFormatFromUrl", { enumerable: true, get: function () { return api_format_1.inferApiFormatFromUrl; } });
23
+ /** Returns a zeroed Anthropic-style usage object for synthesized messages. */
24
+ function emptyUsage() {
25
+ return {
26
+ input_tokens: 0,
27
+ output_tokens: 0,
28
+ cache_creation_input_tokens: null,
29
+ cache_read_input_tokens: null,
30
+ server_tool_use: null,
31
+ service_tier: null,
32
+ };
33
+ }
34
+ /** OpenAI/Responses content part types that map to Anthropic text blocks. */
35
+ const TEXT_PART_TYPES = new Set(["text", "input_text", "output_text"]);
36
+ /** Normalize provider variants of Responses text parts into an iterable list. */
37
+ function normalizeTextParts(value) {
38
+ if (!value) {
39
+ return [];
40
+ }
41
+ if (typeof value === "string") {
42
+ return [{ type: "text", text: value }];
43
+ }
44
+ if (Array.isArray(value)) {
45
+ return value.filter((part) => {
46
+ return typeof part === "object" && part !== null && "type" in part;
47
+ });
48
+ }
49
+ if (typeof value === "object" && "type" in value) {
50
+ return [value];
51
+ }
52
+ return [];
53
+ }
54
+ /**
55
+ * Converts OpenAI message content (string or part array) to Anthropic text blocks.
56
+ */
57
+ function toTextBlocks(content) {
58
+ if (content == null) {
59
+ return [];
60
+ }
61
+ if (typeof content === "string") {
62
+ return content ? [{ type: "text", text: content }] : [];
63
+ }
64
+ return content
65
+ .filter((part) => TEXT_PART_TYPES.has(part.type) && part.text)
66
+ .map((part) => ({ type: "text", text: part.text }));
67
+ }
68
+ /**
69
+ * Maps OpenAI/Responses tool definitions to Anthropic `tools` array entries.
70
+ */
71
+ function mapOpenAITools(tools) {
72
+ if (!tools?.length) {
73
+ return undefined;
74
+ }
75
+ const mapped = tools
76
+ .map((tool) => {
77
+ const flat = tool;
78
+ if (flat.name) {
79
+ return {
80
+ name: flat.name,
81
+ description: flat.description,
82
+ input_schema: flat.parameters || { type: "object", properties: {} },
83
+ };
84
+ }
85
+ const nested = tool;
86
+ if (nested.function?.name) {
87
+ return {
88
+ name: nested.function.name,
89
+ description: nested.function.description,
90
+ input_schema: nested.function.parameters || { type: "object", properties: {} },
91
+ };
92
+ }
93
+ if (flat.type && flat.type !== "function") {
94
+ return {
95
+ name: flat.type,
96
+ description: flat.description,
97
+ input_schema: flat.parameters || { type: "object", properties: {} },
98
+ };
99
+ }
100
+ return null;
101
+ })
102
+ .filter((tool) => tool !== null);
103
+ return mapped.length > 0 ? mapped : undefined;
104
+ }
105
+ /**
106
+ * Normalizes an OpenAI Chat Completions request body to Anthropic `MessageCreateParams`.
107
+ *
108
+ * @param body - Parsed JSON request body from the proxy log.
109
+ * @returns Anthropic-shaped params for the shared conversation processor.
110
+ */
111
+ function normalizeOpenAIChatRequest(body) {
112
+ const req = body;
113
+ let system;
114
+ const messages = [];
115
+ for (const msg of req.messages || []) {
116
+ if (msg.role === "system") {
117
+ const blocks = toTextBlocks(msg.content);
118
+ if (blocks.length === 1 && blocks[0].type === "text") {
119
+ system = blocks[0].text;
120
+ }
121
+ else if (blocks.length > 0) {
122
+ system = blocks;
123
+ }
124
+ continue;
125
+ }
126
+ // OpenAI `tool` role maps to Anthropic user message with tool_result blocks
127
+ if (msg.role === "tool") {
128
+ const toolContent = typeof msg.content === "string"
129
+ ? msg.content
130
+ : toTextBlocks(msg.content)
131
+ .map((b) => (b.type === "text" ? b.text : ""))
132
+ .join("");
133
+ messages.push({
134
+ role: "user",
135
+ content: [
136
+ {
137
+ type: "tool_result",
138
+ tool_use_id: msg.tool_call_id || msg.name || "unknown",
139
+ content: toolContent,
140
+ },
141
+ ],
142
+ });
143
+ continue;
144
+ }
145
+ const content = [];
146
+ const textBlocks = toTextBlocks(msg.content);
147
+ for (const block of textBlocks) {
148
+ content.push(block);
149
+ }
150
+ if (msg.tool_calls?.length) {
151
+ for (const call of msg.tool_calls) {
152
+ let parsedInput = {};
153
+ try {
154
+ parsedInput = JSON.parse(call.function.arguments || "{}");
155
+ }
156
+ catch {
157
+ parsedInput = { _raw: call.function.arguments };
158
+ }
159
+ content.push({
160
+ type: "tool_use",
161
+ id: call.id,
162
+ name: call.function.name,
163
+ input: parsedInput,
164
+ });
165
+ }
166
+ }
167
+ messages.push({
168
+ role: msg.role === "assistant" ? "assistant" : "user",
169
+ content: content.length > 0 ? content : [{ type: "text", text: "" }],
170
+ });
171
+ }
172
+ return {
173
+ model: req.model || "unknown",
174
+ max_tokens: req.max_tokens || 4096,
175
+ messages,
176
+ system,
177
+ tools: mapOpenAITools(req.tools),
178
+ };
179
+ }
180
+ /**
181
+ * Converts one OpenAI Responses `input` item to Anthropic message content blocks.
182
+ */
183
+ function responsesInputToContent(item) {
184
+ if (item.type === "function_call") {
185
+ let parsedInput = {};
186
+ try {
187
+ parsedInput = JSON.parse(item.arguments || "{}");
188
+ }
189
+ catch {
190
+ parsedInput = { _raw: item.arguments };
191
+ }
192
+ return [
193
+ {
194
+ type: "tool_use",
195
+ id: item.call_id || item.id || "unknown",
196
+ name: item.name || "unknown",
197
+ input: parsedInput,
198
+ },
199
+ ];
200
+ }
201
+ if (item.type === "function_call_output") {
202
+ return [
203
+ {
204
+ type: "tool_result",
205
+ tool_use_id: item.call_id || "unknown",
206
+ content: item.output || "",
207
+ },
208
+ ];
209
+ }
210
+ // Codex reasoning items become Anthropic thinking blocks
211
+ if (item.type === "reasoning") {
212
+ const summaryText = (item.summary || [])
213
+ .map((part) => (part.type === "summary_text" ? part.text || "" : ""))
214
+ .join("");
215
+ if (summaryText) {
216
+ return [{ type: "thinking", thinking: summaryText, signature: "" }];
217
+ }
218
+ return [];
219
+ }
220
+ if (item.type === "message" || item.role) {
221
+ return toTextBlocks(item.content);
222
+ }
223
+ return toTextBlocks(item.content);
224
+ }
225
+ /**
226
+ * Normalizes an OpenAI Responses API request body to Anthropic `MessageCreateParams`.
227
+ */
228
+ function normalizeOpenAIResponsesRequest(body) {
229
+ const req = body;
230
+ const messages = [];
231
+ if (typeof req.input === "string") {
232
+ messages.push({ role: "user", content: [{ type: "text", text: req.input }] });
233
+ }
234
+ else if (Array.isArray(req.input)) {
235
+ for (const item of req.input) {
236
+ const content = responsesInputToContent(item);
237
+ if (!content || (Array.isArray(content) && content.length === 0)) {
238
+ continue;
239
+ }
240
+ const role = item.type === "function_call"
241
+ ? "assistant"
242
+ : item.type === "function_call_output" || item.type === "reasoning"
243
+ ? "user"
244
+ : item.role === "assistant"
245
+ ? "assistant"
246
+ : "user";
247
+ messages.push({ role, content });
248
+ }
249
+ }
250
+ return {
251
+ model: req.model || "unknown",
252
+ max_tokens: 4096,
253
+ messages,
254
+ system: req.instructions,
255
+ tools: mapOpenAITools(req.tools),
256
+ };
257
+ }
258
+ /** Converts a single OpenAI assistant message to an Anthropic `Message`. */
259
+ function openAIMessageToAnthropic(message, model) {
260
+ const content = [];
261
+ const textBlocks = toTextBlocks(message.content);
262
+ for (const block of textBlocks) {
263
+ content.push({ type: "text", text: block.text, citations: null });
264
+ }
265
+ if (message.tool_calls?.length) {
266
+ for (const call of message.tool_calls) {
267
+ let parsedInput = {};
268
+ try {
269
+ parsedInput = JSON.parse(call.function.arguments || "{}");
270
+ }
271
+ catch {
272
+ parsedInput = { _raw: call.function.arguments };
273
+ }
274
+ content.push({
275
+ type: "tool_use",
276
+ id: call.id,
277
+ name: call.function.name,
278
+ input: parsedInput,
279
+ });
280
+ }
281
+ }
282
+ return {
283
+ id: "",
284
+ type: "message",
285
+ role: "assistant",
286
+ model,
287
+ content,
288
+ stop_reason: "end_turn",
289
+ stop_sequence: null,
290
+ usage: emptyUsage(),
291
+ };
292
+ }
293
+ /**
294
+ * Parses a non-streaming OpenAI Chat Completions JSON body into an Anthropic `Message`.
295
+ */
296
+ function parseOpenAIChatCompletionBody(body, model = "unknown") {
297
+ const completion = body;
298
+ const choiceMessage = completion.choices?.[0]?.message;
299
+ if (!choiceMessage) {
300
+ return {
301
+ id: completion.id || "",
302
+ type: "message",
303
+ role: "assistant",
304
+ model: completion.model || model,
305
+ content: [],
306
+ stop_reason: null,
307
+ stop_sequence: null,
308
+ usage: {
309
+ ...emptyUsage(),
310
+ input_tokens: completion.usage?.prompt_tokens || 0,
311
+ output_tokens: completion.usage?.completion_tokens || 0,
312
+ },
313
+ };
314
+ }
315
+ const message = openAIMessageToAnthropic(choiceMessage, completion.model || model);
316
+ message.id = completion.id || "";
317
+ message.usage = {
318
+ ...emptyUsage(),
319
+ input_tokens: completion.usage?.prompt_tokens || 0,
320
+ output_tokens: completion.usage?.completion_tokens || 0,
321
+ };
322
+ const finishReason = completion.choices?.[0]?.finish_reason;
323
+ message.stop_reason = finishReason === "tool_calls" ? "tool_use" : finishReason === "stop" ? "end_turn" : null;
324
+ return message;
325
+ }
326
+ /** Maps one OpenAI Responses output item to Anthropic content blocks. */
327
+ function parseResponsesOutputItem(item) {
328
+ const blocks = [];
329
+ if (item.type === "message" && item.content) {
330
+ for (const part of normalizeTextParts(item.content)) {
331
+ if (part.type === "output_text" || part.type === "text") {
332
+ blocks.push({ type: "text", text: part.text || "", citations: null });
333
+ }
334
+ }
335
+ return blocks;
336
+ }
337
+ if (item.type === "function_call") {
338
+ let parsedInput = {};
339
+ try {
340
+ parsedInput = JSON.parse(item.arguments || "{}");
341
+ }
342
+ catch {
343
+ parsedInput = { _raw: item.arguments };
344
+ }
345
+ blocks.push({
346
+ type: "tool_use",
347
+ id: item.call_id || item.id || "unknown",
348
+ name: item.name || "unknown",
349
+ input: parsedInput,
350
+ });
351
+ return blocks;
352
+ }
353
+ if (item.type === "reasoning") {
354
+ const summaryText = [...normalizeTextParts(item.summary), ...normalizeTextParts(item.content)]
355
+ .map((part) => (part.type === "summary_text" ? part.text || "" : ""))
356
+ .join("");
357
+ if (summaryText) {
358
+ blocks.push({ type: "thinking", thinking: summaryText, signature: "" });
359
+ }
360
+ }
361
+ return blocks;
362
+ }
363
+ /**
364
+ * Parses a non-streaming OpenAI Responses API JSON body into an Anthropic `Message`.
365
+ */
366
+ function parseOpenAIResponsesBody(body, model = "unknown") {
367
+ const response = body;
368
+ const content = [];
369
+ let hasToolUse = false;
370
+ for (const item of response.output || []) {
371
+ const blocks = parseResponsesOutputItem(item);
372
+ if (item.type === "function_call") {
373
+ hasToolUse = true;
374
+ }
375
+ content.push(...blocks);
376
+ }
377
+ return {
378
+ id: response.id || "",
379
+ type: "message",
380
+ role: "assistant",
381
+ model: response.model || model,
382
+ content,
383
+ stop_reason: hasToolUse ? "tool_use" : "end_turn",
384
+ stop_sequence: null,
385
+ usage: {
386
+ ...emptyUsage(),
387
+ input_tokens: response.usage?.input_tokens || 0,
388
+ output_tokens: response.usage?.output_tokens || 0,
389
+ },
390
+ };
391
+ }
392
+ /**
393
+ * Extracts JSON payloads from SSE `data:` lines in a raw response body.
394
+ */
395
+ function parseSSEDataLines(bodyRaw) {
396
+ const chunks = [];
397
+ const lines = bodyRaw.split("\n");
398
+ for (const line of lines) {
399
+ if (!line.startsWith("data: ")) {
400
+ continue;
401
+ }
402
+ const data = line.substring(6).trim();
403
+ if (data === "[DONE]") {
404
+ break;
405
+ }
406
+ try {
407
+ chunks.push(JSON.parse(data));
408
+ }
409
+ catch {
410
+ // skip malformed lines
411
+ }
412
+ }
413
+ return chunks;
414
+ }
415
+ /**
416
+ * Reconstructs a complete OpenAI Chat Completion object from streamed SSE chunks.
417
+ */
418
+ function buildOpenAIChatCompletionFromSSE(bodyRaw, model = "unknown") {
419
+ const chunks = parseSSEDataLines(bodyRaw);
420
+ const result = {
421
+ id: "",
422
+ model,
423
+ choices: [{ index: 0, message: { role: "assistant", content: "" }, finish_reason: null }],
424
+ usage: {},
425
+ };
426
+ // Tool calls may arrive in multiple delta chunks keyed by index
427
+ const toolCalls = new Map();
428
+ let content = "";
429
+ for (const chunk of chunks) {
430
+ if (chunk.id) {
431
+ result.id = chunk.id;
432
+ }
433
+ if (chunk.model) {
434
+ result.model = chunk.model;
435
+ }
436
+ if (chunk.usage) {
437
+ result.usage = { ...result.usage, ...chunk.usage };
438
+ }
439
+ const choice = chunk.choices?.[0];
440
+ if (!choice) {
441
+ continue;
442
+ }
443
+ if (choice.finish_reason) {
444
+ result.choices[0].finish_reason = choice.finish_reason;
445
+ }
446
+ const delta = choice.delta;
447
+ if (!delta) {
448
+ continue;
449
+ }
450
+ if (typeof delta.content === "string") {
451
+ content += delta.content;
452
+ }
453
+ if (delta.tool_calls) {
454
+ for (const tc of delta.tool_calls) {
455
+ const index = tc.index ?? 0;
456
+ if (!toolCalls.has(index)) {
457
+ toolCalls.set(index, {
458
+ id: tc.id || "",
459
+ type: "function",
460
+ function: { name: tc.function?.name || "", arguments: "" },
461
+ });
462
+ }
463
+ const existing = toolCalls.get(index);
464
+ if (tc.id) {
465
+ existing.id = tc.id;
466
+ }
467
+ if (tc.function?.name) {
468
+ existing.function.name = tc.function.name;
469
+ }
470
+ if (tc.function?.arguments) {
471
+ existing.function.arguments += tc.function.arguments;
472
+ }
473
+ }
474
+ }
475
+ }
476
+ const message = { role: "assistant", content };
477
+ if (toolCalls.size > 0) {
478
+ message.tool_calls = [...toolCalls.entries()]
479
+ .sort(([a], [b]) => a - b)
480
+ .map(([, tc]) => tc);
481
+ }
482
+ result.choices[0].message = message;
483
+ return result;
484
+ }
485
+ /**
486
+ * Reconstructs an OpenAI Responses body from streamed SSE events.
487
+ * Returns early when a `response.completed` event carries the full response.
488
+ */
489
+ function buildOpenAIResponsesFromSSE(bodyRaw, model = "unknown") {
490
+ const chunks = parseSSEDataLines(bodyRaw);
491
+ const result = {
492
+ id: "",
493
+ model,
494
+ output: [{ type: "message", role: "assistant", content: [{ type: "output_text", text: "" }] }],
495
+ usage: {},
496
+ };
497
+ let text = "";
498
+ const functionCalls = new Map();
499
+ for (const chunk of chunks) {
500
+ const record = chunk;
501
+ if (typeof record.id === "string") {
502
+ result.id = record.id;
503
+ }
504
+ if (typeof record.model === "string") {
505
+ result.model = record.model;
506
+ }
507
+ if (record.usage && typeof record.usage === "object") {
508
+ result.usage = { ...result.usage, ...record.usage };
509
+ }
510
+ const type = record.type;
511
+ if (type === "response.output_text.delta" && typeof record.delta === "string") {
512
+ text += record.delta;
513
+ }
514
+ else if (type === "response.output_text.done" && typeof record.text === "string") {
515
+ // Codex ChatGPT OAuth may include the full text only on the done event.
516
+ text = record.text;
517
+ }
518
+ else if (type === "response.function_call_arguments.delta") {
519
+ const itemId = typeof record.item_id === "string" ? record.item_id : "default";
520
+ if (!functionCalls.has(itemId)) {
521
+ functionCalls.set(itemId, {
522
+ type: "function_call",
523
+ id: itemId,
524
+ call_id: itemId,
525
+ name: "",
526
+ arguments: "",
527
+ });
528
+ }
529
+ const call = functionCalls.get(itemId);
530
+ if (typeof record.delta === "string") {
531
+ call.arguments = (call.arguments || "") + record.delta;
532
+ }
533
+ }
534
+ else if (type === "response.output_item.added" && record.item) {
535
+ const item = record.item;
536
+ if (item.type === "function_call") {
537
+ const itemId = item.call_id || item.id || "default";
538
+ functionCalls.set(itemId, { ...item, arguments: item.arguments || "" });
539
+ }
540
+ }
541
+ else if (type === "response.completed" && record.response) {
542
+ const completed = record.response;
543
+ // Prefer the terminal snapshot when the provider sends populated output.
544
+ if (Array.isArray(completed.output) && completed.output.length > 0) {
545
+ return completed;
546
+ }
547
+ // Codex ChatGPT OAuth often sends response.completed with output: [] while
548
+ // streaming deltas/done events carry the assistant text — keep accumulating.
549
+ if (typeof completed.id === "string") {
550
+ result.id = completed.id;
551
+ }
552
+ if (typeof completed.model === "string") {
553
+ result.model = completed.model;
554
+ }
555
+ if (completed.usage && typeof completed.usage === "object") {
556
+ result.usage = { ...result.usage, ...completed.usage };
557
+ }
558
+ }
559
+ }
560
+ const firstContent = result.output?.[0]?.content;
561
+ if (Array.isArray(firstContent) && firstContent[0]) {
562
+ firstContent[0].text = text;
563
+ }
564
+ if (functionCalls.size > 0) {
565
+ result.output = [
566
+ ...(text ? [{ type: "message", role: "assistant", content: [{ type: "output_text", text }] }] : []),
567
+ ...functionCalls.values(),
568
+ ];
569
+ }
570
+ return result;
571
+ }
572
+ /**
573
+ * Parses a logged response (JSON body or SSE raw) into an Anthropic `Message`.
574
+ * Dispatches on detected API format and whether the body is already Anthropic-shaped.
575
+ */
576
+ function parseOpenAIResponse(pairResponse, apiFormat, model = "unknown") {
577
+ if (pairResponse.body && typeof pairResponse.body === "object") {
578
+ const body = pairResponse.body;
579
+ // Already normalized to Anthropic shape (e.g. by proxy)
580
+ if ("role" in body && "content" in body && Array.isArray(body.content)) {
581
+ return body;
582
+ }
583
+ if (apiFormat === "openai-responses" || ("output" in body && Array.isArray(body.output))) {
584
+ return parseOpenAIResponsesBody(body, model);
585
+ }
586
+ if ("choices" in body) {
587
+ return parseOpenAIChatCompletionBody(body, model);
588
+ }
589
+ }
590
+ if (pairResponse.body_raw) {
591
+ if (apiFormat === "openai-responses") {
592
+ const built = buildOpenAIResponsesFromSSE(pairResponse.body_raw, model);
593
+ return parseOpenAIResponsesBody(built, model);
594
+ }
595
+ const built = buildOpenAIChatCompletionFromSSE(pairResponse.body_raw, model);
596
+ return parseOpenAIChatCompletionBody(built, model);
597
+ }
598
+ throw new Error("No OpenAI response body available");
599
+ }
600
+ /**
601
+ * Normalizes an OpenAI request body to Anthropic `MessageCreateParams`
602
+ * based on the detected API format.
603
+ */
604
+ function normalizeOpenAIRequest(body, apiFormat) {
605
+ if (apiFormat === "openai-responses") {
606
+ return normalizeOpenAIResponsesRequest(body);
607
+ }
608
+ return normalizeOpenAIChatRequest(body);
609
+ }
610
+ /**
611
+ * Resolves the API format for a raw pair, preferring the value stamped at log time.
612
+ */
613
+ function resolvePairApiFormat(pair) {
614
+ const fromResponse = pair.response?.api_format;
615
+ if (fromResponse && fromResponse !== "unknown") {
616
+ return fromResponse;
617
+ }
618
+ return (0, api_format_1.detectApiFormat)(pair);
619
+ }
620
+ /** Extracts the model id string from a raw pair's request body. */
621
+ function extractModelFromPair(pair) {
622
+ const body = pair.request?.body;
623
+ if (body && typeof body === "object" && "model" in body && typeof body.model === "string") {
624
+ return body.model;
625
+ }
626
+ return "unknown";
627
+ }
628
+ //# sourceMappingURL=openai-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-adapter.js","sourceRoot":"","sources":["../../src/adapt/openai-adapter.ts"],"names":[],"mappings":"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"}