@gleapai/kai-bridge 0.10.0 → 0.10.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.
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@gleapai/kai-bridge",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@gleapai/kai-bridge",
9
- "version": "0.10.0",
9
+ "version": "0.10.1",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@agentclientprotocol/claude-agent-acp": "0.75.1",
14
- "@agentclientprotocol/codex-acp": "1.10.0",
15
- "@agentclientprotocol/sdk": "1.4.0",
16
- "@anthropic-ai/claude-agent-sdk": "0.3.266",
17
- "@openai/codex": "0.153.4",
13
+ "@agentclientprotocol/claude-agent-acp": "0.81.1",
14
+ "@agentclientprotocol/codex-acp": "1.13.1",
15
+ "@agentclientprotocol/sdk": "1.5.0",
16
+ "@anthropic-ai/claude-agent-sdk": "0.3.280",
17
+ "@openai/codex": "0.156.1",
18
18
  "@playwright/mcp": "^0.0.79",
19
19
  "@sockudo/client": "^2.0.0",
20
20
  "chokidar": "^4.0.1",
@@ -35,14 +35,14 @@
35
35
  "license": "Apache-2.0"
36
36
  },
37
37
  "node_modules/@agentclientprotocol/claude-agent-acp": {
38
- "version": "0.75.1",
39
- "resolved": "https://registry.npmjs.org/@agentclientprotocol/claude-agent-acp/-/claude-agent-acp-0.75.1.tgz",
40
- "integrity": "sha512-Un6I4BRkhpCFS3I7kr5C/lkAm8Nc3VuGZU2YQ3xIpJAIxV94iWO0Q2CH2QABxMERpONRu4Le6XC9V+5PImQZ2A==",
38
+ "version": "0.81.1",
39
+ "resolved": "https://registry.npmjs.org/@agentclientprotocol/claude-agent-acp/-/claude-agent-acp-0.81.1.tgz",
40
+ "integrity": "sha512-I+7tUPsrYnI0nBmdUonoRmdCi7ohyzZ0SeCpeIUFuVZ7a8ZxDyUNO6zBJpaeAIwuPXCk8aw+7t+QiwXS6FwskQ==",
41
41
  "license": "Apache-2.0",
42
42
  "dependencies": {
43
- "@agentclientprotocol/sdk": "1.4.0",
44
- "@anthropic-ai/claude-agent-sdk": "0.3.257",
45
- "zod": "^4.0.0"
43
+ "@agentclientprotocol/sdk": "1.5.0",
44
+ "@anthropic-ai/claude-agent-sdk": "0.3.280",
45
+ "zod": "4.6.5"
46
46
  },
47
47
  "bin": {
48
48
  "claude-agent-acp": "dist/index.js"
@@ -52,13 +52,13 @@
52
52
  }
53
53
  },
54
54
  "node_modules/@agentclientprotocol/codex-acp": {
55
- "version": "1.10.0",
56
- "resolved": "https://registry.npmjs.org/@agentclientprotocol/codex-acp/-/codex-acp-1.10.0.tgz",
57
- "integrity": "sha512-b4dDCPkH/GgHRb3JelXz4QdNirdoTjO3yYM1ImUJMxVXxgZLZMguEXNhZOH2G755UKzf6ZypiiC7UHe3fKgp2Q==",
55
+ "version": "1.13.1",
56
+ "resolved": "https://registry.npmjs.org/@agentclientprotocol/codex-acp/-/codex-acp-1.13.1.tgz",
57
+ "integrity": "sha512-NAbXTb6GRReox7B+8RN9VRB+sKUqFJh5Vg7Ex7RskYCO8EsYPJKN1WJvN7mOqjCKKK9lVDrNxtP7Bp/OUKPyAg==",
58
58
  "license": "Apache-2.0",
59
59
  "dependencies": {
60
- "@agentclientprotocol/sdk": "^1.4.0",
61
- "@openai/codex": "^0.153.3",
60
+ "@agentclientprotocol/sdk": "^1.5.0",
61
+ "@openai/codex": "^0.156.1",
62
62
  "diff": "^9.0.0",
63
63
  "open": "^11.0.1",
64
64
  "vscode-jsonrpc": "^9.0.1",
@@ -69,31 +69,31 @@
69
69
  }
70
70
  },
71
71
  "node_modules/@agentclientprotocol/sdk": {
72
- "version": "1.4.0",
73
- "resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-1.4.0.tgz",
74
- "integrity": "sha512-/eufudw+aFY1LKLolT6yFE6UMmYRl7fMJ/DEONSIyR6wI3slHWITBsANRGqXEY8FRzqUxwh7QEaGiZHcJPVThg==",
72
+ "version": "1.5.0",
73
+ "resolved": "https://registry.npmjs.org/@agentclientprotocol/sdk/-/sdk-1.5.0.tgz",
74
+ "integrity": "sha512-524jwbB2iYWA+kWWyv9fhKbhU89dH/lu9u5EXwVNmfYzopV8BujCDxByBDZhxRUkB7RWIJzISCnwivdDk+bdVg==",
75
75
  "license": "Apache-2.0",
76
76
  "peerDependencies": {
77
77
  "zod": "^3.25.0 || ^4.0.0"
78
78
  }
79
79
  },
80
80
  "node_modules/@anthropic-ai/claude-agent-sdk": {
81
- "version": "0.3.266",
82
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.266.tgz",
83
- "integrity": "sha512-GVTLf3QwmtqUcFbrH/gzCWleGQ0RBSCMfVbdciTGdu7eiYeRu0seYNE3T8awmRl3nL63z7CkKbnWnpy4te5y4g==",
81
+ "version": "0.3.280",
82
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.280.tgz",
83
+ "integrity": "sha512-aIQSTKcCJcOgi125GAGQaNZUYgxbEBQwV2Ac+Utp0+gGUjIEWjTqz4B8kXr9XjkcCTYiRUMTDsXPAUfIcBDjnw==",
84
84
  "license": "SEE LICENSE IN README.md",
85
85
  "engines": {
86
86
  "node": ">=18.0.0"
87
87
  },
88
88
  "optionalDependencies": {
89
- "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.266",
90
- "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.266",
91
- "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.266",
92
- "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.266",
93
- "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.266",
94
- "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.266",
95
- "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.266",
96
- "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.266"
89
+ "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.280",
90
+ "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.280",
91
+ "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.280",
92
+ "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.280",
93
+ "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.280",
94
+ "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.280",
95
+ "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.280",
96
+ "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.280"
97
97
  },
98
98
  "peerDependencies": {
99
99
  "@anthropic-ai/sdk": ">=0.93.0",
@@ -102,9 +102,9 @@
102
102
  }
103
103
  },
104
104
  "node_modules/@anthropic-ai/claude-agent-sdk-darwin-arm64": {
105
- "version": "0.3.266",
106
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.266.tgz",
107
- "integrity": "sha512-PfzEE3W2KyxM1yiZjMc9OrhvH9TM1c+wKdiQ2eRiFfnUDKL72FOkpcttB7QFf1pB0lrBhtMUjQIou+tWudkiCQ==",
105
+ "version": "0.3.280",
106
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-arm64/-/claude-agent-sdk-darwin-arm64-0.3.280.tgz",
107
+ "integrity": "sha512-Yws14X5g5hgDtF565Tld/+dILAhH9QZpundjKMyO3dFasq9miXZlhU0NwXqwTO2xP0jDjJ54zduIiJwkcfcvGw==",
108
108
  "cpu": [
109
109
  "arm64"
110
110
  ],
@@ -115,9 +115,9 @@
115
115
  ]
116
116
  },
117
117
  "node_modules/@anthropic-ai/claude-agent-sdk-darwin-x64": {
118
- "version": "0.3.266",
119
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.266.tgz",
120
- "integrity": "sha512-+VRBd/GrrYHPATopS+rUjb8FmmMGbcAaW1zY3BhGlthG6eQjGUUuGvJm04YVIDeJznuRxADdX2JCZkmFP7rl/A==",
118
+ "version": "0.3.280",
119
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-darwin-x64/-/claude-agent-sdk-darwin-x64-0.3.280.tgz",
120
+ "integrity": "sha512-B1eLx/oZ5RL1c3a13nQ4cRUksWyhGcVNS5vbCHnOVu4Pz+dH0moZ+iY8VaE6FvikVAQwFEW6VDU00b6m3tYdsQ==",
121
121
  "cpu": [
122
122
  "x64"
123
123
  ],
@@ -128,9 +128,9 @@
128
128
  ]
129
129
  },
130
130
  "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64": {
131
- "version": "0.3.266",
132
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.266.tgz",
133
- "integrity": "sha512-PetNmwoI4nC/R/ZsQ5ImrpAH38rSuMZxbb0uHRtxPGstQ6rGH9SPYDEC1vpNU2LC44TBqTjHKIwo7qmjB7fK1Q==",
131
+ "version": "0.3.280",
132
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.280.tgz",
133
+ "integrity": "sha512-6s96OIvBHT2817hCFLIZ421JBpQnvrmZucpjlWsyCODKmwGsSxiEhlWqK2h5Q7lwS6F7bzeAhqjGvC7FzDl9Rw==",
134
134
  "cpu": [
135
135
  "arm64"
136
136
  ],
@@ -144,9 +144,9 @@
144
144
  ]
145
145
  },
146
146
  "node_modules/@anthropic-ai/claude-agent-sdk-linux-arm64-musl": {
147
- "version": "0.3.266",
148
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.266.tgz",
149
- "integrity": "sha512-YhIceLAjcN9dGgyOF9hmR6FxaMXRehHtI1FHIB6WfJY+VeJhr/aMDEbAdcbkX8pW3WQJUmXgVEF6/+b8NbllFg==",
147
+ "version": "0.3.280",
148
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-arm64-musl/-/claude-agent-sdk-linux-arm64-musl-0.3.280.tgz",
149
+ "integrity": "sha512-uDh+Ggjb36l+jcVgaYxSziGHmBSSR3clqvGlQ0Bgc1v5dLF4igwqZ6ZPW/hS9dArG27fislIOetH1waEgIr+GA==",
150
150
  "cpu": [
151
151
  "arm64"
152
152
  ],
@@ -160,9 +160,9 @@
160
160
  ]
161
161
  },
162
162
  "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64": {
163
- "version": "0.3.266",
164
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.266.tgz",
165
- "integrity": "sha512-vsZC/4sA5r9CFxchOSQcSL1b01+Z6RWYlUSda6HcdiCg47u4RFilwBxFU5/u82pAYvyKbDKMOF0I8L6z16IYew==",
163
+ "version": "0.3.280",
164
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64/-/claude-agent-sdk-linux-x64-0.3.280.tgz",
165
+ "integrity": "sha512-vpPyxYLy+zNc7LwQDWsZf0GZtTYa0PJLxzuv2vK9iV2dG+hrbRNTl35NSKKRR9rMj6RpKz0i2NLyVQ+D4mREgw==",
166
166
  "cpu": [
167
167
  "x64"
168
168
  ],
@@ -176,9 +176,9 @@
176
176
  ]
177
177
  },
178
178
  "node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl": {
179
- "version": "0.3.266",
180
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.266.tgz",
181
- "integrity": "sha512-jygNEBfVuX09Nqfrcpax6y/O3erTUSoh8/T1Ou1/27DHJSPIWoWebTZx2gpctyjQCUub4yGwXgwUDePEk8YZkQ==",
179
+ "version": "0.3.280",
180
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.280.tgz",
181
+ "integrity": "sha512-IVbIgvi5C0sdLg/p9hpiVvAQ/ikvTKwOOEy5C1aT7w8XLqBgfpJbzzVuk06df1Q0HlILUmf63EKPmq48lbxtqA==",
182
182
  "cpu": [
183
183
  "x64"
184
184
  ],
@@ -192,9 +192,9 @@
192
192
  ]
193
193
  },
194
194
  "node_modules/@anthropic-ai/claude-agent-sdk-win32-arm64": {
195
- "version": "0.3.266",
196
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.266.tgz",
197
- "integrity": "sha512-1osOefn+dBsC22FMnyOgF7ZBY35HXkeN0zSyszSSx4X/BVA7HcluqRJElKppWLxQGGLukkd/sqkLzgvX5sh1eg==",
195
+ "version": "0.3.280",
196
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.280.tgz",
197
+ "integrity": "sha512-heTflHwciJF+Hrf7v0J53QBzD+9mxN9gt2VVmEJAN0+ejbPcOcqnGGZHvyc9aZUuGh5INN0ECaiL4Fn1X2vXQQ==",
198
198
  "cpu": [
199
199
  "arm64"
200
200
  ],
@@ -205,9 +205,9 @@
205
205
  ]
206
206
  },
207
207
  "node_modules/@anthropic-ai/claude-agent-sdk-win32-x64": {
208
- "version": "0.3.266",
209
- "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.266.tgz",
210
- "integrity": "sha512-/l2l1nDYhkz7GdWHCu2ENg0+CAY/Ds6R/Y1cYxJsRfB6mP1dgaU83cSaExMInswdIh3uiwEv96OMLQZGVjSFaA==",
208
+ "version": "0.3.280",
209
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk-win32-x64/-/claude-agent-sdk-win32-x64-0.3.280.tgz",
210
+ "integrity": "sha512-N+Y1zJb19nx0oPTvzkl/E3ng9AtWGW+K4hySmSHCgYSsgIwfs1YzDj/F5eHDMrxgklTuzFp76TvL3S75z5ge+g==",
211
211
  "cpu": [
212
212
  "x64"
213
213
  ],
@@ -218,9 +218,9 @@
218
218
  ]
219
219
  },
220
220
  "node_modules/@anthropic-ai/sdk": {
221
- "version": "0.124.0",
222
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.124.0.tgz",
223
- "integrity": "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==",
221
+ "version": "0.128.0",
222
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.128.0.tgz",
223
+ "integrity": "sha512-tl5cBFZC1jVFrTuQyvQObA4WmuNgcYVeXfriqOumgtLAHUm4gPUj18YnszBW60v0PrjDB8nBDOC6wd9CmHQFlA==",
224
224
  "license": "MIT",
225
225
  "peer": true,
226
226
  "dependencies": {
@@ -313,9 +313,9 @@
313
313
  }
314
314
  },
315
315
  "node_modules/@openai/codex": {
316
- "version": "0.153.4",
317
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4.tgz",
318
- "integrity": "sha512-wbHDmit7S/YvBGVX1DQmk13xtWblZ2cApeJ/pB7xDZ10Cna+DZc5ij7f0F4OxdsXN4FW1oLT48OpogUI1+8Y2w==",
316
+ "version": "0.156.1",
317
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1.tgz",
318
+ "integrity": "sha512-nI1iVl/n2SO2lSvlwEsJx63zdSI4C4Me2gR7AG0OWMJiGSakz2tY2hx43E39Zq5aEoeB5bZjJXzp5Sqhog6vyA==",
319
319
  "license": "Apache-2.0",
320
320
  "bin": {
321
321
  "codex": "bin/codex.js"
@@ -324,19 +324,19 @@
324
324
  "node": ">=16"
325
325
  },
326
326
  "optionalDependencies": {
327
- "@openai/codex-darwin-arm64": "npm:@openai/codex@0.153.4-darwin-arm64",
328
- "@openai/codex-darwin-x64": "npm:@openai/codex@0.153.4-darwin-x64",
329
- "@openai/codex-linux-arm64": "npm:@openai/codex@0.153.4-linux-arm64",
330
- "@openai/codex-linux-x64": "npm:@openai/codex@0.153.4-linux-x64",
331
- "@openai/codex-win32-arm64": "npm:@openai/codex@0.153.4-win32-arm64",
332
- "@openai/codex-win32-x64": "npm:@openai/codex@0.153.4-win32-x64"
327
+ "@openai/codex-darwin-arm64": "npm:@openai/codex@0.156.1-darwin-arm64",
328
+ "@openai/codex-darwin-x64": "npm:@openai/codex@0.156.1-darwin-x64",
329
+ "@openai/codex-linux-arm64": "npm:@openai/codex@0.156.1-linux-arm64",
330
+ "@openai/codex-linux-x64": "npm:@openai/codex@0.156.1-linux-x64",
331
+ "@openai/codex-win32-arm64": "npm:@openai/codex@0.156.1-win32-arm64",
332
+ "@openai/codex-win32-x64": "npm:@openai/codex@0.156.1-win32-x64"
333
333
  }
334
334
  },
335
335
  "node_modules/@openai/codex-darwin-arm64": {
336
336
  "name": "@openai/codex",
337
- "version": "0.153.4-darwin-arm64",
338
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-arm64.tgz",
339
- "integrity": "sha512-B1qhN3fa1ay0R0wGziXqgwSkB5icpYChNKHhtBHff/0UtSTC7z+l8aTtvMlGjH3E8HEvY3+njIJelM9CAAoVWg==",
337
+ "version": "0.156.1-darwin-arm64",
338
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-darwin-arm64.tgz",
339
+ "integrity": "sha512-Jg6wbdV+wmMZczhwE74GSxOYEZlViKXn6KyCw/yfrz3PAKFD14xljuPopmdhWC1+8IKU2WdN5fdmXNPt2q4HPA==",
340
340
  "cpu": [
341
341
  "arm64"
342
342
  ],
@@ -351,9 +351,9 @@
351
351
  },
352
352
  "node_modules/@openai/codex-darwin-x64": {
353
353
  "name": "@openai/codex",
354
- "version": "0.153.4-darwin-x64",
355
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-darwin-x64.tgz",
356
- "integrity": "sha512-vnSbbPzfoDZmmyzsxswsDDXQ06IVFBzkQU7/hroB3ji93Ok2utcsq8Psfk2tjF5r9mEx8RWFJhzuTGHG26/NDA==",
354
+ "version": "0.156.1-darwin-x64",
355
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-darwin-x64.tgz",
356
+ "integrity": "sha512-BVjqNOoltWrnNUrgMRepvDIIBmd4XY+ikAE4pYVHlrwiizNlEWQuCQOTrFMJKp54LFRG8jDTjLZyYQ1QrliuOg==",
357
357
  "cpu": [
358
358
  "x64"
359
359
  ],
@@ -368,9 +368,9 @@
368
368
  },
369
369
  "node_modules/@openai/codex-linux-arm64": {
370
370
  "name": "@openai/codex",
371
- "version": "0.153.4-linux-arm64",
372
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-arm64.tgz",
373
- "integrity": "sha512-QKdjYLYV4hXIuUQDP3P6F4NXuWFoKo9WUoV4nAREIx55kiUyi8UsYdsVobkeXir5n/maEQgYMCKLHVma4rNPiw==",
371
+ "version": "0.156.1-linux-arm64",
372
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-linux-arm64.tgz",
373
+ "integrity": "sha512-sTEHk31C12dqzJdjZ2u9KLFCXKL04KyCM+QheSjdQI8uzmVJS7aEF2/qAqFxXwk/jwMzC9u7IihfoIlAGR6YsA==",
374
374
  "cpu": [
375
375
  "arm64"
376
376
  ],
@@ -385,9 +385,9 @@
385
385
  },
386
386
  "node_modules/@openai/codex-linux-x64": {
387
387
  "name": "@openai/codex",
388
- "version": "0.153.4-linux-x64",
389
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-linux-x64.tgz",
390
- "integrity": "sha512-x1EcwBlY3AObM1VTUHNM2AzAJQsyreGdagpF+qFiYi/Oa30VBktvvG0C6tLtCzqW6hjZNWkGZQWmeVk7MuJKWg==",
388
+ "version": "0.156.1-linux-x64",
389
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-linux-x64.tgz",
390
+ "integrity": "sha512-2ePo0wgOcnONKsuzp8vBjOmNY+IdsKaouaDDIdiKq9HOWNuV/GI22OeXft2A/1GaoL71ictO0/pLAsCEnQ6wew==",
391
391
  "cpu": [
392
392
  "x64"
393
393
  ],
@@ -402,9 +402,9 @@
402
402
  },
403
403
  "node_modules/@openai/codex-win32-arm64": {
404
404
  "name": "@openai/codex",
405
- "version": "0.153.4-win32-arm64",
406
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-arm64.tgz",
407
- "integrity": "sha512-/FBh42976ltF1kxDoPQBg1Q6+hwChRU5/sm5dfeC8kFVQMvOCGoGeY5d8rRZGVJE8XojlXo74VQb0sHowcfgBw==",
405
+ "version": "0.156.1-win32-arm64",
406
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-win32-arm64.tgz",
407
+ "integrity": "sha512-e5DsyOHlKWulTBz/neIczpcYLQDqtaLtBj2lgncOgeQw5mlAQVZHlGvKsoKVcEPUKLb8opIMJBxXi6cz3JJ4hg==",
408
408
  "cpu": [
409
409
  "arm64"
410
410
  ],
@@ -419,9 +419,9 @@
419
419
  },
420
420
  "node_modules/@openai/codex-win32-x64": {
421
421
  "name": "@openai/codex",
422
- "version": "0.153.4-win32-x64",
423
- "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.153.4-win32-x64.tgz",
424
- "integrity": "sha512-lMkB43kJZH0VFr+hoXc11qqR7QtQIbkr07ALgj4urKL1osNyUyuy1iXd3Vzz2iCYvBUCSw7I0l/W1cEPGx9euQ==",
422
+ "version": "0.156.1-win32-x64",
423
+ "resolved": "https://registry.npmjs.org/@openai/codex/-/codex-0.156.1-win32-x64.tgz",
424
+ "integrity": "sha512-MJyLxbBs2zzp5kbaR/99Zwe7SmbrwUkveTcT+ayYlO48V0nYh0eU+h2lalBwvC7VJ/ya/bXnUtISJfJKhGCD/g==",
425
425
  "cpu": [
426
426
  "x64"
427
427
  ],
@@ -1068,9 +1068,9 @@
1068
1068
  "peer": true
1069
1069
  },
1070
1070
  "node_modules/fast-uri": {
1071
- "version": "3.1.7",
1072
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz",
1073
- "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==",
1071
+ "version": "3.1.8",
1072
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
1073
+ "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
1074
1074
  "funding": [
1075
1075
  {
1076
1076
  "type": "github",
@@ -1235,9 +1235,9 @@
1235
1235
  }
1236
1236
  },
1237
1237
  "node_modules/hono": {
1238
- "version": "4.13.7",
1239
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.7.tgz",
1240
- "integrity": "sha512-c8/gF9ac8Y78/agExVocyLevgR+JlpNB444Py0FSX8pJoPdYUfUzRcXtYEYGwt6l19qIlVZPN5Mfsw9jFShmQQ==",
1238
+ "version": "4.13.8",
1239
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.8.tgz",
1240
+ "integrity": "sha512-/Gng7NfoykZl2pjukW5Z6+8Yxm3BPRf86GTbQnt0SbySkvax4fyL4H3HhY1cCpBGmiW9XDRFzRV+CXK2W8QudQ==",
1241
1241
  "license": "MIT",
1242
1242
  "peer": true,
1243
1243
  "engines": {
@@ -1290,9 +1290,9 @@
1290
1290
  "peer": true
1291
1291
  },
1292
1292
  "node_modules/ip-address": {
1293
- "version": "10.7.0",
1294
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz",
1295
- "integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==",
1293
+ "version": "10.7.2",
1294
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.2.tgz",
1295
+ "integrity": "sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==",
1296
1296
  "license": "MIT",
1297
1297
  "peer": true,
1298
1298
  "engines": {
@@ -1702,9 +1702,9 @@
1702
1702
  }
1703
1703
  },
1704
1704
  "node_modules/proxy-addr": {
1705
- "version": "2.0.7",
1706
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1707
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1705
+ "version": "2.0.8",
1706
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz",
1707
+ "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==",
1708
1708
  "license": "MIT",
1709
1709
  "peer": true,
1710
1710
  "dependencies": {
@@ -1713,6 +1713,10 @@
1713
1713
  },
1714
1714
  "engines": {
1715
1715
  "node": ">= 0.10"
1716
+ },
1717
+ "funding": {
1718
+ "type": "opencollective",
1719
+ "url": "https://opencollective.com/express"
1716
1720
  }
1717
1721
  },
1718
1722
  "node_modules/qs": {
@@ -2174,9 +2178,9 @@
2174
2178
  }
2175
2179
  },
2176
2180
  "node_modules/zod": {
2177
- "version": "4.4.3",
2178
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
2179
- "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
2181
+ "version": "4.6.5",
2182
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz",
2183
+ "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==",
2180
2184
  "license": "MIT",
2181
2185
  "funding": {
2182
2186
  "url": "https://github.com/sponsors/colinhacks"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gleapai/kai-bridge",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "description": "Kai Code Bridge runs Kai Code on your computer or server with your own coding subscriptions and local previews.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -28,16 +28,16 @@
28
28
  "postpack": "node scripts/prepare-release.mjs --clean"
29
29
  },
30
30
  "dependencies": {
31
- "@agentclientprotocol/claude-agent-acp": "0.75.1",
32
- "@agentclientprotocol/codex-acp": "1.10.0",
33
- "@agentclientprotocol/sdk": "1.4.0",
31
+ "@agentclientprotocol/claude-agent-acp": "0.81.1",
32
+ "@agentclientprotocol/codex-acp": "1.13.1",
33
+ "@agentclientprotocol/sdk": "1.5.0",
34
34
  "@playwright/mcp": "^0.0.79",
35
35
  "@sockudo/client": "^2.0.0",
36
36
  "chokidar": "^4.0.1",
37
37
  "ws": "^8.21.3",
38
38
  "yaml": "^2.9.0",
39
- "@openai/codex": "0.153.4",
40
- "@anthropic-ai/claude-agent-sdk": "0.3.266"
39
+ "@openai/codex": "0.156.1",
40
+ "@anthropic-ai/claude-agent-sdk": "0.3.280"
41
41
  },
42
42
  "overrides": {
43
43
  "@anthropic-ai/claude-agent-sdk": "$@anthropic-ai/claude-agent-sdk"
@@ -642,6 +642,10 @@ async function main() {
642
642
  !!SESSION_ID &&
643
643
  !!init.agentCapabilities?.sessionCapabilities?.resume &&
644
644
  (HARNESS.hasResumableSession ? HARNESS.hasResumableSession(ctx) : true);
645
+ // What the session's earlier turns already cost (Claude: the total the
646
+ // transcript saved — a resumed query's cost figure continues from it).
647
+ // Read before the resume appends this turn's record.
648
+ const priorTurnsCostUsd = canResume ? Number(HARNESS.priorTurnsCostUsd?.(ctx)) || 0 : 0;
645
649
  let sessionResponse;
646
650
  let resumed = false;
647
651
  if (canResume) {
@@ -777,9 +781,11 @@ async function main() {
777
781
  );
778
782
  }
779
783
  // The adapter's USD is the CLI's own figure — authoritative on the
780
- // native Anthropic wire only; gateway turns are priced from tokens.
784
+ // native Anthropic wire only; gateway turns are priced from tokens. On a
785
+ // resumed session it is the conversation's running total (Agent SDK
786
+ // 0.3.280), so only the part above the saved prior total is this turn's.
781
787
  if (typeof finished.usage?.costUsd === "number" && HARNESS_ID === "claude" && isNativeAnthropic(MODEL)) {
782
- tracker.setProviderCostUsd(finished.usage.costUsd);
788
+ tracker.setProviderCostUsd(Math.max(0, finished.usage.costUsd - (resumed ? priorTurnsCostUsd : 0)));
783
789
  }
784
790
 
785
791
  const suggestionWaitStarted = Date.now();
@@ -11,7 +11,7 @@
11
11
  import { existsSync, mkdirSync, realpathSync, writeFileSync } from "node:fs";
12
12
  import { dirname, join } from "node:path";
13
13
 
14
- import { findClaudeTranscript, findCodexRollout, readClaudeTurnUsage, readCodexTurnUsage } from "./transcripts.mjs";
14
+ import { findClaudeTranscript, findCodexRollout, readClaudePriorCostUsd, readClaudeTurnUsage, readCodexTurnUsage } from "./transcripts.mjs";
15
15
  import { isClaudeAcpPatched } from "../../tools/patch-claude-acp.mjs";
16
16
 
17
17
  export const HARNESS_IDS = ["claude", "codex", "cursor"];
@@ -242,6 +242,14 @@ export const HARNESSES = {
242
242
  // Drops the CLI's per-run dynamic sections (cwd listing, date …)
243
243
  // so the cached prefix stays byte-stable across turns.
244
244
  excludeDynamicSections: true,
245
+ // Render the append fresh on every launch. Agent SDKs after 0.3.258
246
+ // (0.3.266 and 0.3.280 checked) record the first launch's system
247
+ // prompt in the transcript by default and replay it on resume,
248
+ // IGNORING a different `append` until compaction — a plan → build
249
+ // resume would keep the plan turn's guards and lose the git
250
+ // hand-off rule (verified live on 0.3.280: a resumed turn answered
251
+ // from the previous turn's project instructions).
252
+ snapshot: false,
245
253
  },
246
254
  claudeCode: {
247
255
  options: {
@@ -297,6 +305,12 @@ export const HARNESSES = {
297
305
  sessionModePreference: (ctx) => (ctx.isPlanMode ? ["plan"] : ctx.isArtifactWriter ? ["dontAsk", "plan"] : ["bypassPermissions", "acceptEdits", "default"]),
298
306
  /** A prior turn's transcript on disk is what makes `resume` viable. */
299
307
  hasResumableSession: (ctx) => !!findClaudeTranscript(ctx.configDir, ctx.workDir, ctx.resumeSessionId),
308
+ /**
309
+ * USD the session's earlier turns already cost, as the CLI saved it —
310
+ * a resumed query's cost figure continues from it (see
311
+ * readClaudePriorCostUsd). Read BEFORE session/resume.
312
+ */
313
+ priorTurnsCostUsd: (ctx) => readClaudePriorCostUsd({ configDir: ctx.configDir, cwd: ctx.workDir, sessionId: ctx.resumeSessionId }),
300
314
  /** Billing-grade usage for the turn from the CLI's own transcript. */
301
315
  collectTurnUsage: (ctx) =>
302
316
  readClaudeTurnUsage({
@@ -47,6 +47,14 @@ export function toolNameFromUpdate(update) {
47
47
  meta.codex?.tool ??
48
48
  meta.toolName;
49
49
  if (typeof fromMeta === "string" && fromMeta) return fromMeta;
50
+ // ACP's own tool `name` is all that names an ExitPlanMode /
51
+ // AskUserQuestion PERMISSION REQUEST — claude-agent-acp sends that
52
+ // toolCall without `_meta.claudeCode`. Read as a generic "SwitchMode",
53
+ // the policy approved the plan whenever the request beat the hand-off's
54
+ // cancel (`exit-plan-clear-auto`, seen live on 0.81.1).
55
+ // Trusted for these turn-ending names only: codex-acp's generic ones
56
+ // (`exec_command`, `request_permissions`, …) keep the mapping below.
57
+ if (update?.name === EXIT_PLAN_TOOL || update?.name === "AskUserQuestion") return update.name;
50
58
  // codex-acp encodes MCP tool calls as `rawInput: {server, tool,
51
59
  // arguments}` under kind "execute" — without this they'd render as a
52
60
  // Bash row, and the ask_user question bridge would never be detected.
@@ -564,6 +572,10 @@ export function createAcpMapper({ emit, isPlanMode = false, onTurnShouldEnd, onC
564
572
  return pick("reject_once") ?? pick("reject_always") ?? "__reject__";
565
573
  }
566
574
  if (handleTurnEndingTool(name, input)) return null;
575
+ // A question / plan hand-off without a usable payload is still never
576
+ // approved: allowing ExitPlanMode would start the build inside the
577
+ // plan turn. Cancelling denies just this call.
578
+ if (isTurnEndingTool(name)) return null;
567
579
  if (!allowTool(name, input)) {
568
580
  emit({
569
581
  type: "tool_status",
@@ -148,6 +148,47 @@ export function readClaudeTurnUsage({ configDir, cwd, sessionId, sinceTs }) {
148
148
  return { path, rows: parseClaudeTranscript(readFileSync(path, "utf8"), { sinceTs }) };
149
149
  }
150
150
 
151
+ /**
152
+ * The session's cumulative USD as Claude Code saved it: the LAST
153
+ * `{"type":"cost-state","totalCostUSD":…}` line (written after each turn
154
+ * by CLI 2.1.280; absent from older transcripts). 0 when there is none.
155
+ */
156
+ export function lastClaudeCostState(text) {
157
+ let total = 0;
158
+ for (const line of String(text || "").split(/\r?\n/)) {
159
+ if (!line.includes('"cost-state"')) continue;
160
+ let obj;
161
+ try {
162
+ obj = JSON.parse(line);
163
+ } catch {
164
+ continue;
165
+ }
166
+ if (obj?.type === "cost-state" && typeof obj.totalCostUSD === "number" && Number.isFinite(obj.totalCostUSD)) {
167
+ total = Math.max(0, obj.totalCostUSD);
168
+ }
169
+ }
170
+ return total;
171
+ }
172
+
173
+ /**
174
+ * What the session's earlier turns already cost. A resumed query's
175
+ * `total_cost_usd` — the adapter's `usage_update.cost` — "continues from
176
+ * the total its transcript saved" (Agent SDK 0.3.280; 0.3.258 started
177
+ * resumed sessions at 0), so without subtracting this every resumed turn
178
+ * reports the whole conversation's cost. Must be read BEFORE the resume:
179
+ * the turn appends its own record.
180
+ */
181
+ export function readClaudePriorCostUsd({ configDir, cwd, sessionId }) {
182
+ if (!sessionId) return 0;
183
+ const path = findClaudeTranscript(configDir, cwd, sessionId);
184
+ if (!path) return 0;
185
+ try {
186
+ return lastClaudeCostState(readFileSync(path, "utf8"));
187
+ } catch {
188
+ return 0;
189
+ }
190
+ }
191
+
151
192
  // ── Codex ──────────────────────────────────────────────────────────────
152
193
 
153
194
  /**
@@ -3,7 +3,7 @@
3
3
  // `prompt_suggestion` message (the predicted next user prompt Claude
4
4
  // Code shows as ghost text in its own composer) reaches the runner.
5
5
  //
6
- // Upstream (≤ 0.75.1) drops the message on the floor — `case
6
+ // Upstream (≤ 0.81.1) drops the message on the floor — `case
7
7
  // "prompt_suggestion": break;` — because ACP has no update kind for it.
8
8
  // We forward it as a `session_info_update` carrying `_meta.kai
9
9
  // .promptSuggestion` (ACP's sanctioned extension point; the SDK's
package/src/harnesses.mjs CHANGED
@@ -49,7 +49,7 @@ export const HARNESS_INFO = {
49
49
  const CURSOR_ROOT = (kaiHome) => join(kaiHome, "harnesses", "cursor");
50
50
  const CURSOR_CURRENT = (kaiHome) => join(CURSOR_ROOT(kaiHome), "current");
51
51
  /** Version + channel published by Cursor's install script (https://cursor.com/install). */
52
- export const CURSOR_AGENT_VERSION = process.env.KAI_CURSOR_AGENT_VERSION || "2026.08.11-e8db854";
52
+ export const CURSOR_AGENT_VERSION = process.env.KAI_CURSOR_AGENT_VERSION || "2026.09.18-9a7762b";
53
53
 
54
54
  function cursorPlatform() {
55
55
  const os = platform() === "darwin" ? "darwin" : platform() === "win32" ? "windows" : "linux";