@pi-in-go/pigpen-ahp 0.1.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 (304) hide show
  1. package/CREDITS.md +27 -0
  2. package/LICENSE +23 -0
  3. package/README.md +148 -0
  4. package/extensions/ahp/access_options_test.go +116 -0
  5. package/extensions/ahp/extension.go +54 -0
  6. package/extensions/ahp/go.mod +12 -0
  7. package/extensions/ahp/go.sum +2 -0
  8. package/extensions/ahp/go.work +8 -0
  9. package/extensions/ahp/internal/channels/chat.go +110 -0
  10. package/extensions/ahp/internal/channels/root.go +32 -0
  11. package/extensions/ahp/internal/channels/session.go +128 -0
  12. package/extensions/ahp/internal/channels/session_test.go +108 -0
  13. package/extensions/ahp/internal/compose/compose.go +153 -0
  14. package/extensions/ahp/internal/compose/compose_test.go +120 -0
  15. package/extensions/ahp/internal/gaps/gaps_test.go +88 -0
  16. package/extensions/ahp/internal/host/handshake_test.go +206 -0
  17. package/extensions/ahp/internal/host/host.go +1305 -0
  18. package/extensions/ahp/internal/host/reconnect_test.go +197 -0
  19. package/extensions/ahp/internal/host/replaywindow_test.go +31 -0
  20. package/extensions/ahp/internal/host/schema_test.go +79 -0
  21. package/extensions/ahp/internal/host/store.go +291 -0
  22. package/extensions/ahp/internal/host/store_update_test.go +85 -0
  23. package/extensions/ahp/internal/host/subscriptions_test.go +160 -0
  24. package/extensions/ahp/internal/host/surface_test.go +95 -0
  25. package/extensions/ahp/internal/host/workarounds.go +458 -0
  26. package/extensions/ahp/internal/host/workarounds_test.go +96 -0
  27. package/extensions/ahp/internal/live/live.go +328 -0
  28. package/extensions/ahp/internal/live/live_test.go +91 -0
  29. package/extensions/ahp/internal/live/store.go +113 -0
  30. package/extensions/ahp/internal/mapper/activity.go +199 -0
  31. package/extensions/ahp/internal/mapper/activity_test.go +188 -0
  32. package/extensions/ahp/internal/mapper/bench_test.go +38 -0
  33. package/extensions/ahp/internal/mapper/event_mapper_test.go +380 -0
  34. package/extensions/ahp/internal/mapper/fixtures_test.go +387 -0
  35. package/extensions/ahp/internal/mapper/helpers_test.go +251 -0
  36. package/extensions/ahp/internal/mapper/js.go +131 -0
  37. package/extensions/ahp/internal/mapper/mapper.go +600 -0
  38. package/extensions/ahp/internal/mapper/message_input_test.go +196 -0
  39. package/extensions/ahp/internal/mapper/messageinput.go +272 -0
  40. package/extensions/ahp/internal/mapper/schema_helpers_test.go +5 -0
  41. package/extensions/ahp/internal/mapper/testdata/LICENSE-pi-ahp +21 -0
  42. package/extensions/ahp/internal/mapper/testdata/fixtures/abort.json +711 -0
  43. package/extensions/ahp/internal/mapper/testdata/fixtures/bash-long-output.json +1312 -0
  44. package/extensions/ahp/internal/mapper/testdata/fixtures/compaction.json +6285 -0
  45. package/extensions/ahp/internal/mapper/testdata/fixtures/parallel-tools.json +2622 -0
  46. package/extensions/ahp/internal/mapper/testdata/fixtures/plain-text.json +1856 -0
  47. package/extensions/ahp/internal/mapper/testdata/fixtures/single-tool.json +1128 -0
  48. package/extensions/ahp/internal/mapper/testdata/fixtures/steering.json +3926 -0
  49. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-bash.json +2372 -0
  50. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-edit.json +3983 -0
  51. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-error.json +2850 -0
  52. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-find.json +1162 -0
  53. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-grep.json +2783 -0
  54. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-loop.json +1693 -0
  55. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-ls.json +2427 -0
  56. package/extensions/ahp/internal/mapper/testdata/fixtures/tool-write.json +1271 -0
  57. package/extensions/ahp/internal/mapper/title.go +34 -0
  58. package/extensions/ahp/internal/mapper/usermsg.go +87 -0
  59. package/extensions/ahp/internal/pi/activeturn_test.go +296 -0
  60. package/extensions/ahp/internal/pi/backend.go +64 -0
  61. package/extensions/ahp/internal/pi/catalogue.go +370 -0
  62. package/extensions/ahp/internal/pi/catalogue_test.go +271 -0
  63. package/extensions/ahp/internal/pi/chatdriver.go +533 -0
  64. package/extensions/ahp/internal/pi/chatdriver_test.go +416 -0
  65. package/extensions/ahp/internal/pi/clientactions.go +212 -0
  66. package/extensions/ahp/internal/pi/clientactions_test.go +273 -0
  67. package/extensions/ahp/internal/pi/completions.go +230 -0
  68. package/extensions/ahp/internal/pi/completions_test.go +272 -0
  69. package/extensions/ahp/internal/pi/config_test.go +269 -0
  70. package/extensions/ahp/internal/pi/deletesession.go +69 -0
  71. package/extensions/ahp/internal/pi/deletesession_test.go +153 -0
  72. package/extensions/ahp/internal/pi/disposal_test.go +362 -0
  73. package/extensions/ahp/internal/pi/fixture_test.go +308 -0
  74. package/extensions/ahp/internal/pi/foreign_test.go +122 -0
  75. package/extensions/ahp/internal/pi/harness_test.go +83 -0
  76. package/extensions/ahp/internal/pi/history.go +269 -0
  77. package/extensions/ahp/internal/pi/hydrated_test.go +171 -0
  78. package/extensions/ahp/internal/pi/hydratedlifecycle_test.go +196 -0
  79. package/extensions/ahp/internal/pi/hydration_test.go +209 -0
  80. package/extensions/ahp/internal/pi/hydrator.go +212 -0
  81. package/extensions/ahp/internal/pi/imageinput.go +224 -0
  82. package/extensions/ahp/internal/pi/imageinput_test.go +57 -0
  83. package/extensions/ahp/internal/pi/lifecycle_test.go +381 -0
  84. package/extensions/ahp/internal/pi/models.go +212 -0
  85. package/extensions/ahp/internal/pi/models_test.go +128 -0
  86. package/extensions/ahp/internal/pi/paging.go +95 -0
  87. package/extensions/ahp/internal/pi/pagingtruncate_test.go +323 -0
  88. package/extensions/ahp/internal/pi/projecttrust.go +222 -0
  89. package/extensions/ahp/internal/pi/registry.go +924 -0
  90. package/extensions/ahp/internal/pi/restart_test.go +185 -0
  91. package/extensions/ahp/internal/pi/services.go +70 -0
  92. package/extensions/ahp/internal/pi/sessionconfig.go +64 -0
  93. package/extensions/ahp/internal/pi/sessionfiles_test.go +74 -0
  94. package/extensions/ahp/internal/pi/sessionstore.go +83 -0
  95. package/extensions/ahp/internal/pi/summary_test.go +426 -0
  96. package/extensions/ahp/internal/pi/workarounds_wire_test.go +208 -0
  97. package/extensions/ahp/internal/pisession/fromentries_test.go +32 -0
  98. package/extensions/ahp/internal/pisession/json.go +31 -0
  99. package/extensions/ahp/internal/pisession/pisession.go +580 -0
  100. package/extensions/ahp/internal/settings/access.go +63 -0
  101. package/extensions/ahp/internal/settings/access_test.go +52 -0
  102. package/extensions/ahp/internal/settings/settings.go +117 -0
  103. package/extensions/ahp/internal/settings/settings_test.go +104 -0
  104. package/extensions/ahp/internal/svc/etag_other.go +15 -0
  105. package/extensions/ahp/internal/svc/etag_unix.go +34 -0
  106. package/extensions/ahp/internal/svc/glob.go +197 -0
  107. package/extensions/ahp/internal/svc/mime.go +37 -0
  108. package/extensions/ahp/internal/svc/paths.go +108 -0
  109. package/extensions/ahp/internal/svc/pty.go +64 -0
  110. package/extensions/ahp/internal/svc/pty_darwin.go +42 -0
  111. package/extensions/ahp/internal/svc/pty_linux.go +36 -0
  112. package/extensions/ahp/internal/svc/pty_other.go +9 -0
  113. package/extensions/ahp/internal/svc/pty_test.go +114 -0
  114. package/extensions/ahp/internal/svc/pty_unix.go +147 -0
  115. package/extensions/ahp/internal/svc/resource.go +495 -0
  116. package/extensions/ahp/internal/svc/resource_test.go +501 -0
  117. package/extensions/ahp/internal/svc/stat_bsd.go +9 -0
  118. package/extensions/ahp/internal/svc/stat_linux.go +9 -0
  119. package/extensions/ahp/internal/svc/terminal.go +454 -0
  120. package/extensions/ahp/internal/svc/terminal_test.go +512 -0
  121. package/extensions/ahp/internal/svc/watch.go +590 -0
  122. package/extensions/ahp/internal/svc/watch_test.go +627 -0
  123. package/extensions/ahp/internal/svc/watchevents_test.go +452 -0
  124. package/extensions/ahp/internal/svc/watchpolicy.go +81 -0
  125. package/extensions/ahp/internal/svc/watchpolicy_test.go +151 -0
  126. package/extensions/ahp/internal/svc/watchracy_test.go +61 -0
  127. package/extensions/ahp/internal/testkit/schema/LICENSE-agent-host-protocol +21 -0
  128. package/extensions/ahp/internal/testkit/schema/actions.schema.json +9208 -0
  129. package/extensions/ahp/internal/testkit/schema/commands.schema.json +10862 -0
  130. package/extensions/ahp/internal/testkit/schema/errors.schema.json +10928 -0
  131. package/extensions/ahp/internal/testkit/schema/notifications.schema.json +6667 -0
  132. package/extensions/ahp/internal/testkit/schema/state.schema.json +6392 -0
  133. package/extensions/ahp/internal/testkit/schema.go +360 -0
  134. package/extensions/ahp/internal/testkit/testkit.go +367 -0
  135. package/extensions/ahp/internal/twin/twin.go +27 -0
  136. package/extensions/ahp/internal/wire/dispatchable.go +106 -0
  137. package/extensions/ahp/internal/wire/dispatchable_list.go +15 -0
  138. package/extensions/ahp/internal/wire/helpers_test.go +5 -0
  139. package/extensions/ahp/internal/wire/wire.go +218 -0
  140. package/extensions/ahp/internal/wire/wire_test.go +123 -0
  141. package/extensions/ahp/internal/ws/helpers_test.go +7 -0
  142. package/extensions/ahp/internal/ws/vscode_test.go +198 -0
  143. package/extensions/ahp/internal/ws/ws.go +674 -0
  144. package/extensions/ahp/internal/ws/ws_test.go +324 -0
  145. package/extensions/ahp/realpig_test.go +589 -0
  146. package/extensions/ahp/runtime.go +311 -0
  147. package/extensions/ahp/runtime_test.go +110 -0
  148. package/extensions/ahp/testdata/upstream-tests.json +3833 -0
  149. package/extensions/ahp/third_party/agent-host-protocol-go/LICENSE +21 -0
  150. package/extensions/ahp/third_party/agent-host-protocol-go/NOTICE-PIGPEN.md +18 -0
  151. package/extensions/ahp/third_party/agent-host-protocol-go/ahp/client.go +1011 -0
  152. package/extensions/ahp/third_party/agent-host-protocol-go/ahp/error.go +111 -0
  153. package/extensions/ahp/third_party/agent-host-protocol-go/ahp/multi_host_state_mirror.go +239 -0
  154. package/extensions/ahp/third_party/agent-host-protocol-go/ahp/reducers.go +1939 -0
  155. package/extensions/ahp/third_party/agent-host-protocol-go/ahp/transport.go +176 -0
  156. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/actions.generated.go +2447 -0
  157. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/commands.generated.go +1546 -0
  158. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/common.go +205 -0
  159. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/errors.generated.go +65 -0
  160. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/messages.generated.go +138 -0
  161. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/notifications.generated.go +264 -0
  162. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/state.generated.go +6171 -0
  163. package/extensions/ahp/third_party/agent-host-protocol-go/ahptypes/version.generated.go +31 -0
  164. package/extensions/ahp/third_party/agent-host-protocol-go/go.mod +3 -0
  165. package/extensions/ahp/twins_test.go +91 -0
  166. package/package.json +40 -0
  167. package/proof/PORT.md +121 -0
  168. package/proof/mutations.json +152 -0
  169. package/proof/oracle/LICENSE +21 -0
  170. package/proof/oracle/README.md +120 -0
  171. package/proof/oracle/UPSTREAM.md +7 -0
  172. package/proof/oracle/package.json +68 -0
  173. package/proof/oracle/src/bin/cli.ts +66 -0
  174. package/proof/oracle/src/bin/tunnel.ts +128 -0
  175. package/proof/oracle/src/channels/chat.ts +134 -0
  176. package/proof/oracle/src/channels/root.ts +39 -0
  177. package/proof/oracle/src/channels/session.ts +118 -0
  178. package/proof/oracle/src/channels/terminal.ts +11 -0
  179. package/proof/oracle/src/core/channels.ts +108 -0
  180. package/proof/oracle/src/core/client-workarounds.ts +358 -0
  181. package/proof/oracle/src/core/connection.ts +41 -0
  182. package/proof/oracle/src/core/host.ts +882 -0
  183. package/proof/oracle/src/core/sequencer.ts +75 -0
  184. package/proof/oracle/src/core/state-store.ts +162 -0
  185. package/proof/oracle/src/core/uri.ts +25 -0
  186. package/proof/oracle/src/host/direct-settings.ts +110 -0
  187. package/proof/oracle/src/host/pi-host.ts +220 -0
  188. package/proof/oracle/src/host/serve.ts +71 -0
  189. package/proof/oracle/src/host/terminal-service.ts +346 -0
  190. package/proof/oracle/src/pi/activity.ts +171 -0
  191. package/proof/oracle/src/pi/changeset-service.ts +646 -0
  192. package/proof/oracle/src/pi/changeset-uri.ts +64 -0
  193. package/proof/oracle/src/pi/chat-driver.ts +529 -0
  194. package/proof/oracle/src/pi/completions.ts +160 -0
  195. package/proof/oracle/src/pi/delete-session.ts +53 -0
  196. package/proof/oracle/src/pi/event-mapper.ts +648 -0
  197. package/proof/oracle/src/pi/git-changes.ts +605 -0
  198. package/proof/oracle/src/pi/history.ts +305 -0
  199. package/proof/oracle/src/pi/image-input.ts +56 -0
  200. package/proof/oracle/src/pi/image-mime.ts +8 -0
  201. package/proof/oracle/src/pi/in-process-backend.ts +155 -0
  202. package/proof/oracle/src/pi/message-input.ts +212 -0
  203. package/proof/oracle/src/pi/models.ts +124 -0
  204. package/proof/oracle/src/pi/project-trust.ts +66 -0
  205. package/proof/oracle/src/pi/provider.ts +2 -0
  206. package/proof/oracle/src/pi/resource-paths.ts +80 -0
  207. package/proof/oracle/src/pi/resource-service.ts +356 -0
  208. package/proof/oracle/src/pi/resource-watch-policy.ts +35 -0
  209. package/proof/oracle/src/pi/resource-watch.ts +357 -0
  210. package/proof/oracle/src/pi/session-catalogue.ts +318 -0
  211. package/proof/oracle/src/pi/session-config.ts +84 -0
  212. package/proof/oracle/src/pi/session-history.ts +75 -0
  213. package/proof/oracle/src/pi/session-hydrator.ts +219 -0
  214. package/proof/oracle/src/pi/session-registry.ts +815 -0
  215. package/proof/oracle/src/pi/session-storage.ts +29 -0
  216. package/proof/oracle/src/pi/session-title.ts +18 -0
  217. package/proof/oracle/src/pi/turn-paging.ts +94 -0
  218. package/proof/oracle/src/pi/user-message.ts +66 -0
  219. package/proof/oracle/src/protocol/errors.ts +44 -0
  220. package/proof/oracle/src/protocol/jsonrpc.ts +89 -0
  221. package/proof/oracle/src/protocol/version.ts +39 -0
  222. package/proof/oracle/src/transport/websocket.ts +136 -0
  223. package/proof/oracle/src/tunnel/devtunnel.ts +293 -0
  224. package/proof/oracle/src/tunnel/discovery.ts +37 -0
  225. package/proof/oracle/test/active-turn-reconnect.test.ts +274 -0
  226. package/proof/oracle/test/activity.test.ts +171 -0
  227. package/proof/oracle/test/changeset-lifecycle.test.serial.ts +303 -0
  228. package/proof/oracle/test/changeset-uri.test.ts +37 -0
  229. package/proof/oracle/test/changeset.test.serial.ts +487 -0
  230. package/proof/oracle/test/chat-driver.test.ts +691 -0
  231. package/proof/oracle/test/client-actions.test.ts +409 -0
  232. package/proof/oracle/test/client-workarounds.test.ts +320 -0
  233. package/proof/oracle/test/completions.test.ts +323 -0
  234. package/proof/oracle/test/delete-session.test.ts +142 -0
  235. package/proof/oracle/test/direct-settings.test.ts +81 -0
  236. package/proof/oracle/test/event-mapper.test.ts +619 -0
  237. package/proof/oracle/test/fetch-turns.test.ts +207 -0
  238. package/proof/oracle/test/fixtures/abort.json +711 -0
  239. package/proof/oracle/test/fixtures/bash-long-output.json +1312 -0
  240. package/proof/oracle/test/fixtures/compaction.json +6285 -0
  241. package/proof/oracle/test/fixtures/parallel-tools.json +2622 -0
  242. package/proof/oracle/test/fixtures/plain-text.json +1856 -0
  243. package/proof/oracle/test/fixtures/single-tool.json +1128 -0
  244. package/proof/oracle/test/fixtures/steering.json +3926 -0
  245. package/proof/oracle/test/fixtures/tool-bash.json +2372 -0
  246. package/proof/oracle/test/fixtures/tool-edit.json +3983 -0
  247. package/proof/oracle/test/fixtures/tool-error.json +2850 -0
  248. package/proof/oracle/test/fixtures/tool-find.json +1162 -0
  249. package/proof/oracle/test/fixtures/tool-grep.json +2783 -0
  250. package/proof/oracle/test/fixtures/tool-loop.json +1693 -0
  251. package/proof/oracle/test/fixtures/tool-ls.json +2427 -0
  252. package/proof/oracle/test/fixtures/tool-write.json +1271 -0
  253. package/proof/oracle/test/handshake.test.ts +275 -0
  254. package/proof/oracle/test/harness.ts +153 -0
  255. package/proof/oracle/test/hydrated-session-lifecycle.test.ts +211 -0
  256. package/proof/oracle/test/image-input.test.ts +28 -0
  257. package/proof/oracle/test/image-session.test.ts +69 -0
  258. package/proof/oracle/test/live-turn.test.ts +304 -0
  259. package/proof/oracle/test/mapper-fixtures.test.ts +293 -0
  260. package/proof/oracle/test/message-input.test.ts +181 -0
  261. package/proof/oracle/test/model-discovery.test.ts +170 -0
  262. package/proof/oracle/test/models.test.ts +109 -0
  263. package/proof/oracle/test/pi-host.test.ts +91 -0
  264. package/proof/oracle/test/pi-replay.test.ts +141 -0
  265. package/proof/oracle/test/project-trust.test.ts +125 -0
  266. package/proof/oracle/test/protocol-surface.test.ts +121 -0
  267. package/proof/oracle/test/pty.test.ts +100 -0
  268. package/proof/oracle/test/reconnect.test.ts +389 -0
  269. package/proof/oracle/test/resource-watch-policy.test.ts +78 -0
  270. package/proof/oracle/test/resource-watch.test.serial.ts +536 -0
  271. package/proof/oracle/test/resource.test.ts +499 -0
  272. package/proof/oracle/test/schema.test.ts +88 -0
  273. package/proof/oracle/test/session-catalogue.test.ts +314 -0
  274. package/proof/oracle/test/session-config.test.ts +224 -0
  275. package/proof/oracle/test/session-disposal.test.ts +364 -0
  276. package/proof/oracle/test/session-hydration.test.ts +194 -0
  277. package/proof/oracle/test/session-lifecycle.test.ts +416 -0
  278. package/proof/oracle/test/session-storage.test.serial.ts +32 -0
  279. package/proof/oracle/test/session-summary.test.ts +418 -0
  280. package/proof/oracle/test/subscriptions.test.ts +198 -0
  281. package/proof/oracle/test/support/assertions.ts +32 -0
  282. package/proof/oracle/test/support/async.ts +26 -0
  283. package/proof/oracle/test/support/hydrated-session.ts +205 -0
  284. package/proof/oracle/test/support/images.ts +8 -0
  285. package/proof/oracle/test/support/recorded-fixtures.ts +60 -0
  286. package/proof/oracle/test/support/recorded-scenarios.ts +145 -0
  287. package/proof/oracle/test/support/replay.ts +194 -0
  288. package/proof/oracle/test/support/schema.ts +221 -0
  289. package/proof/oracle/test/support/session-files.ts +12 -0
  290. package/proof/oracle/test/support/session-storage.ts +22 -0
  291. package/proof/oracle/test/support/upstream.ts +25 -0
  292. package/proof/oracle/test/support/watch-events.ts +108 -0
  293. package/proof/oracle/test/terminal-service.test.ts +495 -0
  294. package/proof/oracle/test/truncate.test.ts +230 -0
  295. package/proof/oracle/test/tunnel.test.ts +258 -0
  296. package/proof/oracle/test/upstream-workarounds.test.ts +37 -0
  297. package/proof/oracle/test/uri.test.ts +24 -0
  298. package/proof/oracle/test/watch-events.test.ts +118 -0
  299. package/proof/oracle/tsconfig.json +32 -0
  300. package/proof/proof-piglet/piglet.yaml +18 -0
  301. package/proof/tools/fakellm/go.mod +3 -0
  302. package/proof/tools/fakellm/main.go +109 -0
  303. package/proof/tools/gen-dispatchable.py +30 -0
  304. package/provenance.json +28 -0
@@ -0,0 +1,2783 @@
1
+ {
2
+ "name": "tool-grep",
3
+ "description": "A `grep` call — match counts and line truncation live in its details.",
4
+ "prompt": "Use the grep tool to search for BEACON here. Reply with the matching file names only.",
5
+ "partials": [
6
+ {
7
+ "role": "assistant",
8
+ "content": [
9
+ {
10
+ "type": "thinking",
11
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
12
+ "thinkingSignature": ""
13
+ },
14
+ {
15
+ "type": "toolCall",
16
+ "id": "toolcall_0",
17
+ "name": "grep",
18
+ "arguments": {
19
+ "pattern": "BEACON",
20
+ "path": ".",
21
+ "glob": "**/*",
22
+ "ignoreCase": false,
23
+ "literal": true,
24
+ "context": 0,
25
+ "limit": 100
26
+ }
27
+ }
28
+ ],
29
+ "api": "openai-responses",
30
+ "provider": "github-copilot",
31
+ "model": "gpt-5.4",
32
+ "usage": {
33
+ "input": 1569,
34
+ "output": 86,
35
+ "cacheRead": 0,
36
+ "cacheWrite": 0,
37
+ "reasoning": 38,
38
+ "totalTokens": 1655,
39
+ "cost": {
40
+ "input": 0.003922500000000001,
41
+ "output": 0.0012900000000000001,
42
+ "cacheRead": 0,
43
+ "cacheWrite": 0,
44
+ "total": 0.005212500000000001
45
+ }
46
+ },
47
+ "stopReason": "toolUse",
48
+ "timestamp": 0,
49
+ "responseId": ""
50
+ },
51
+ {
52
+ "role": "assistant",
53
+ "content": [
54
+ {
55
+ "type": "text",
56
+ "text": "three.txt\none.txt",
57
+ "textSignature": ""
58
+ }
59
+ ],
60
+ "api": "openai-responses",
61
+ "provider": "github-copilot",
62
+ "model": "gpt-5.4",
63
+ "usage": {
64
+ "input": 1685,
65
+ "output": 9,
66
+ "cacheRead": 0,
67
+ "cacheWrite": 0,
68
+ "reasoning": 0,
69
+ "totalTokens": 1694,
70
+ "cost": {
71
+ "input": 0.0042125,
72
+ "output": 0.000135,
73
+ "cacheRead": 0,
74
+ "cacheWrite": 0,
75
+ "total": 0.0043475
76
+ }
77
+ },
78
+ "stopReason": "stop",
79
+ "timestamp": 0,
80
+ "responseId": ""
81
+ }
82
+ ],
83
+ "turns": [
84
+ [
85
+ {
86
+ "type": "start",
87
+ "partialRef": 0
88
+ },
89
+ {
90
+ "type": "thinking_start",
91
+ "contentIndex": 0,
92
+ "partialRef": 0
93
+ },
94
+ {
95
+ "type": "thinking_delta",
96
+ "contentIndex": 0,
97
+ "delta": "**Adjusting grep tool usage**\n\nI",
98
+ "partialRef": 0
99
+ },
100
+ {
101
+ "type": "thinking_delta",
102
+ "contentIndex": 0,
103
+ "delta": " need",
104
+ "partialRef": 0
105
+ },
106
+ {
107
+ "type": "thinking_delta",
108
+ "contentIndex": 0,
109
+ "delta": " to",
110
+ "partialRef": 0
111
+ },
112
+ {
113
+ "type": "thinking_delta",
114
+ "contentIndex": 0,
115
+ "delta": " use",
116
+ "partialRef": 0
117
+ },
118
+ {
119
+ "type": "thinking_delta",
120
+ "contentIndex": 0,
121
+ "delta": " the",
122
+ "partialRef": 0
123
+ },
124
+ {
125
+ "type": "thinking_delta",
126
+ "contentIndex": 0,
127
+ "delta": " grep",
128
+ "partialRef": 0
129
+ },
130
+ {
131
+ "type": "thinking_delta",
132
+ "contentIndex": 0,
133
+ "delta": " tool",
134
+ "partialRef": 0
135
+ },
136
+ {
137
+ "type": "thinking_delta",
138
+ "contentIndex": 0,
139
+ "delta": " instead",
140
+ "partialRef": 0
141
+ },
142
+ {
143
+ "type": "thinking_delta",
144
+ "contentIndex": 0,
145
+ "delta": " of",
146
+ "partialRef": 0
147
+ },
148
+ {
149
+ "type": "thinking_delta",
150
+ "contentIndex": 0,
151
+ "delta": " bash",
152
+ "partialRef": 0
153
+ },
154
+ {
155
+ "type": "thinking_delta",
156
+ "contentIndex": 0,
157
+ "delta": " for",
158
+ "partialRef": 0
159
+ },
160
+ {
161
+ "type": "thinking_delta",
162
+ "contentIndex": 0,
163
+ "delta": " this",
164
+ "partialRef": 0
165
+ },
166
+ {
167
+ "type": "thinking_delta",
168
+ "contentIndex": 0,
169
+ "delta": " task",
170
+ "partialRef": 0
171
+ },
172
+ {
173
+ "type": "thinking_delta",
174
+ "contentIndex": 0,
175
+ "delta": ".",
176
+ "partialRef": 0
177
+ },
178
+ {
179
+ "type": "thinking_delta",
180
+ "contentIndex": 0,
181
+ "delta": " It",
182
+ "partialRef": 0
183
+ },
184
+ {
185
+ "type": "thinking_delta",
186
+ "contentIndex": 0,
187
+ "delta": " seems",
188
+ "partialRef": 0
189
+ },
190
+ {
191
+ "type": "thinking_delta",
192
+ "contentIndex": 0,
193
+ "delta": " there",
194
+ "partialRef": 0
195
+ },
196
+ {
197
+ "type": "thinking_delta",
198
+ "contentIndex": 0,
199
+ "delta": " might",
200
+ "partialRef": 0
201
+ },
202
+ {
203
+ "type": "thinking_delta",
204
+ "contentIndex": 0,
205
+ "delta": " be",
206
+ "partialRef": 0
207
+ },
208
+ {
209
+ "type": "thinking_delta",
210
+ "contentIndex": 0,
211
+ "delta": " many",
212
+ "partialRef": 0
213
+ },
214
+ {
215
+ "type": "thinking_delta",
216
+ "contentIndex": 0,
217
+ "delta": " matches",
218
+ "partialRef": 0
219
+ },
220
+ {
221
+ "type": "thinking_delta",
222
+ "contentIndex": 0,
223
+ "delta": ",",
224
+ "partialRef": 0
225
+ },
226
+ {
227
+ "type": "thinking_delta",
228
+ "contentIndex": 0,
229
+ "delta": " so",
230
+ "partialRef": 0
231
+ },
232
+ {
233
+ "type": "thinking_delta",
234
+ "contentIndex": 0,
235
+ "delta": " I",
236
+ "partialRef": 0
237
+ },
238
+ {
239
+ "type": "thinking_delta",
240
+ "contentIndex": 0,
241
+ "delta": " should",
242
+ "partialRef": 0
243
+ },
244
+ {
245
+ "type": "thinking_delta",
246
+ "contentIndex": 0,
247
+ "delta": " return",
248
+ "partialRef": 0
249
+ },
250
+ {
251
+ "type": "thinking_delta",
252
+ "contentIndex": 0,
253
+ "delta": " only",
254
+ "partialRef": 0
255
+ },
256
+ {
257
+ "type": "thinking_delta",
258
+ "contentIndex": 0,
259
+ "delta": " the",
260
+ "partialRef": 0
261
+ },
262
+ {
263
+ "type": "thinking_delta",
264
+ "contentIndex": 0,
265
+ "delta": " matching",
266
+ "partialRef": 0
267
+ },
268
+ {
269
+ "type": "thinking_delta",
270
+ "contentIndex": 0,
271
+ "delta": " file",
272
+ "partialRef": 0
273
+ },
274
+ {
275
+ "type": "thinking_delta",
276
+ "contentIndex": 0,
277
+ "delta": " names",
278
+ "partialRef": 0
279
+ },
280
+ {
281
+ "type": "thinking_delta",
282
+ "contentIndex": 0,
283
+ "delta": ".",
284
+ "partialRef": 0
285
+ },
286
+ {
287
+ "type": "thinking_delta",
288
+ "contentIndex": 0,
289
+ "delta": " I",
290
+ "partialRef": 0
291
+ },
292
+ {
293
+ "type": "thinking_delta",
294
+ "contentIndex": 0,
295
+ "delta": " think",
296
+ "partialRef": 0
297
+ },
298
+ {
299
+ "type": "thinking_delta",
300
+ "contentIndex": 0,
301
+ "delta": " I",
302
+ "partialRef": 0
303
+ },
304
+ {
305
+ "type": "thinking_delta",
306
+ "contentIndex": 0,
307
+ "delta": " can",
308
+ "partialRef": 0
309
+ },
310
+ {
311
+ "type": "thinking_delta",
312
+ "contentIndex": 0,
313
+ "delta": " use",
314
+ "partialRef": 0
315
+ },
316
+ {
317
+ "type": "thinking_delta",
318
+ "contentIndex": 0,
319
+ "delta": " grep",
320
+ "partialRef": 0
321
+ },
322
+ {
323
+ "type": "thinking_delta",
324
+ "contentIndex": 0,
325
+ "delta": " in",
326
+ "partialRef": 0
327
+ },
328
+ {
329
+ "type": "thinking_delta",
330
+ "contentIndex": 0,
331
+ "delta": " a",
332
+ "partialRef": 0
333
+ },
334
+ {
335
+ "type": "thinking_delta",
336
+ "contentIndex": 0,
337
+ "delta": " literal",
338
+ "partialRef": 0
339
+ },
340
+ {
341
+ "type": "thinking_delta",
342
+ "contentIndex": 0,
343
+ "delta": " way",
344
+ "partialRef": 0
345
+ },
346
+ {
347
+ "type": "thinking_delta",
348
+ "contentIndex": 0,
349
+ "delta": ",",
350
+ "partialRef": 0
351
+ },
352
+ {
353
+ "type": "thinking_delta",
354
+ "contentIndex": 0,
355
+ "delta": " and",
356
+ "partialRef": 0
357
+ },
358
+ {
359
+ "type": "thinking_delta",
360
+ "contentIndex": 0,
361
+ "delta": " the",
362
+ "partialRef": 0
363
+ },
364
+ {
365
+ "type": "thinking_delta",
366
+ "contentIndex": 0,
367
+ "delta": " default",
368
+ "partialRef": 0
369
+ },
370
+ {
371
+ "type": "thinking_delta",
372
+ "contentIndex": 0,
373
+ "delta": " will",
374
+ "partialRef": 0
375
+ },
376
+ {
377
+ "type": "thinking_delta",
378
+ "contentIndex": 0,
379
+ "delta": " be",
380
+ "partialRef": 0
381
+ },
382
+ {
383
+ "type": "thinking_delta",
384
+ "contentIndex": 0,
385
+ "delta": " case",
386
+ "partialRef": 0
387
+ },
388
+ {
389
+ "type": "thinking_delta",
390
+ "contentIndex": 0,
391
+ "delta": "-sensitive",
392
+ "partialRef": 0
393
+ },
394
+ {
395
+ "type": "thinking_delta",
396
+ "contentIndex": 0,
397
+ "delta": ",",
398
+ "partialRef": 0
399
+ },
400
+ {
401
+ "type": "thinking_delta",
402
+ "contentIndex": 0,
403
+ "delta": " which",
404
+ "partialRef": 0
405
+ },
406
+ {
407
+ "type": "thinking_delta",
408
+ "contentIndex": 0,
409
+ "delta": " is",
410
+ "partialRef": 0
411
+ },
412
+ {
413
+ "type": "thinking_delta",
414
+ "contentIndex": 0,
415
+ "delta": " fine",
416
+ "partialRef": 0
417
+ },
418
+ {
419
+ "type": "thinking_delta",
420
+ "contentIndex": 0,
421
+ "delta": ".",
422
+ "partialRef": 0
423
+ },
424
+ {
425
+ "type": "thinking_delta",
426
+ "contentIndex": 0,
427
+ "delta": " The",
428
+ "partialRef": 0
429
+ },
430
+ {
431
+ "type": "thinking_delta",
432
+ "contentIndex": 0,
433
+ "delta": " search",
434
+ "partialRef": 0
435
+ },
436
+ {
437
+ "type": "thinking_delta",
438
+ "contentIndex": 0,
439
+ "delta": " will",
440
+ "partialRef": 0
441
+ },
442
+ {
443
+ "type": "thinking_delta",
444
+ "contentIndex": 0,
445
+ "delta": " be",
446
+ "partialRef": 0
447
+ },
448
+ {
449
+ "type": "thinking_delta",
450
+ "contentIndex": 0,
451
+ "delta": " conducted",
452
+ "partialRef": 0
453
+ },
454
+ {
455
+ "type": "thinking_delta",
456
+ "contentIndex": 0,
457
+ "delta": " in",
458
+ "partialRef": 0
459
+ },
460
+ {
461
+ "type": "thinking_delta",
462
+ "contentIndex": 0,
463
+ "delta": " the",
464
+ "partialRef": 0
465
+ },
466
+ {
467
+ "type": "thinking_delta",
468
+ "contentIndex": 0,
469
+ "delta": " current",
470
+ "partialRef": 0
471
+ },
472
+ {
473
+ "type": "thinking_delta",
474
+ "contentIndex": 0,
475
+ "delta": " directory",
476
+ "partialRef": 0
477
+ },
478
+ {
479
+ "type": "thinking_delta",
480
+ "contentIndex": 0,
481
+ "delta": ".",
482
+ "partialRef": 0
483
+ },
484
+ {
485
+ "type": "thinking_delta",
486
+ "contentIndex": 0,
487
+ "delta": " Let's",
488
+ "partialRef": 0
489
+ },
490
+ {
491
+ "type": "thinking_delta",
492
+ "contentIndex": 0,
493
+ "delta": " ensure",
494
+ "partialRef": 0
495
+ },
496
+ {
497
+ "type": "thinking_delta",
498
+ "contentIndex": 0,
499
+ "delta": " I'm",
500
+ "partialRef": 0
501
+ },
502
+ {
503
+ "type": "thinking_delta",
504
+ "contentIndex": 0,
505
+ "delta": " getting",
506
+ "partialRef": 0
507
+ },
508
+ {
509
+ "type": "thinking_delta",
510
+ "contentIndex": 0,
511
+ "delta": " that",
512
+ "partialRef": 0
513
+ },
514
+ {
515
+ "type": "thinking_delta",
516
+ "contentIndex": 0,
517
+ "delta": " right",
518
+ "partialRef": 0
519
+ },
520
+ {
521
+ "type": "thinking_delta",
522
+ "contentIndex": 0,
523
+ "delta": " to",
524
+ "partialRef": 0
525
+ },
526
+ {
527
+ "type": "thinking_delta",
528
+ "contentIndex": 0,
529
+ "delta": " avoid",
530
+ "partialRef": 0
531
+ },
532
+ {
533
+ "type": "thinking_delta",
534
+ "contentIndex": 0,
535
+ "delta": " any",
536
+ "partialRef": 0
537
+ },
538
+ {
539
+ "type": "thinking_delta",
540
+ "contentIndex": 0,
541
+ "delta": " issues",
542
+ "partialRef": 0
543
+ },
544
+ {
545
+ "type": "thinking_delta",
546
+ "contentIndex": 0,
547
+ "delta": " later",
548
+ "partialRef": 0
549
+ },
550
+ {
551
+ "type": "thinking_delta",
552
+ "contentIndex": 0,
553
+ "delta": "!",
554
+ "partialRef": 0
555
+ },
556
+ {
557
+ "type": "thinking_delta",
558
+ "contentIndex": 0,
559
+ "delta": "\n\n",
560
+ "partialRef": 0
561
+ },
562
+ {
563
+ "type": "thinking_end",
564
+ "contentIndex": 0,
565
+ "content": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
566
+ "partialRef": 0
567
+ },
568
+ {
569
+ "type": "toolcall_start",
570
+ "contentIndex": 1,
571
+ "partialRef": 0
572
+ },
573
+ {
574
+ "type": "toolcall_delta",
575
+ "contentIndex": 1,
576
+ "delta": "{\"",
577
+ "partialRef": 0
578
+ },
579
+ {
580
+ "type": "toolcall_delta",
581
+ "contentIndex": 1,
582
+ "delta": "pattern",
583
+ "partialRef": 0
584
+ },
585
+ {
586
+ "type": "toolcall_delta",
587
+ "contentIndex": 1,
588
+ "delta": "\":\"",
589
+ "partialRef": 0
590
+ },
591
+ {
592
+ "type": "toolcall_delta",
593
+ "contentIndex": 1,
594
+ "delta": "BE",
595
+ "partialRef": 0
596
+ },
597
+ {
598
+ "type": "toolcall_delta",
599
+ "contentIndex": 1,
600
+ "delta": "AC",
601
+ "partialRef": 0
602
+ },
603
+ {
604
+ "type": "toolcall_delta",
605
+ "contentIndex": 1,
606
+ "delta": "ON",
607
+ "partialRef": 0
608
+ },
609
+ {
610
+ "type": "toolcall_delta",
611
+ "contentIndex": 1,
612
+ "delta": "\",\"",
613
+ "partialRef": 0
614
+ },
615
+ {
616
+ "type": "toolcall_delta",
617
+ "contentIndex": 1,
618
+ "delta": "path",
619
+ "partialRef": 0
620
+ },
621
+ {
622
+ "type": "toolcall_delta",
623
+ "contentIndex": 1,
624
+ "delta": "\":",
625
+ "partialRef": 0
626
+ },
627
+ {
628
+ "type": "toolcall_delta",
629
+ "contentIndex": 1,
630
+ "delta": "\".",
631
+ "partialRef": 0
632
+ },
633
+ {
634
+ "type": "toolcall_delta",
635
+ "contentIndex": 1,
636
+ "delta": "\",\"",
637
+ "partialRef": 0
638
+ },
639
+ {
640
+ "type": "toolcall_delta",
641
+ "contentIndex": 1,
642
+ "delta": "glob",
643
+ "partialRef": 0
644
+ },
645
+ {
646
+ "type": "toolcall_delta",
647
+ "contentIndex": 1,
648
+ "delta": "\":\"",
649
+ "partialRef": 0
650
+ },
651
+ {
652
+ "type": "toolcall_delta",
653
+ "contentIndex": 1,
654
+ "delta": "**",
655
+ "partialRef": 0
656
+ },
657
+ {
658
+ "type": "toolcall_delta",
659
+ "contentIndex": 1,
660
+ "delta": "/*",
661
+ "partialRef": 0
662
+ },
663
+ {
664
+ "type": "toolcall_delta",
665
+ "contentIndex": 1,
666
+ "delta": "\",\"",
667
+ "partialRef": 0
668
+ },
669
+ {
670
+ "type": "toolcall_delta",
671
+ "contentIndex": 1,
672
+ "delta": "ignore",
673
+ "partialRef": 0
674
+ },
675
+ {
676
+ "type": "toolcall_delta",
677
+ "contentIndex": 1,
678
+ "delta": "Case",
679
+ "partialRef": 0
680
+ },
681
+ {
682
+ "type": "toolcall_delta",
683
+ "contentIndex": 1,
684
+ "delta": "\":",
685
+ "partialRef": 0
686
+ },
687
+ {
688
+ "type": "toolcall_delta",
689
+ "contentIndex": 1,
690
+ "delta": "false",
691
+ "partialRef": 0
692
+ },
693
+ {
694
+ "type": "toolcall_delta",
695
+ "contentIndex": 1,
696
+ "delta": ",\"",
697
+ "partialRef": 0
698
+ },
699
+ {
700
+ "type": "toolcall_delta",
701
+ "contentIndex": 1,
702
+ "delta": "literal",
703
+ "partialRef": 0
704
+ },
705
+ {
706
+ "type": "toolcall_delta",
707
+ "contentIndex": 1,
708
+ "delta": "\":",
709
+ "partialRef": 0
710
+ },
711
+ {
712
+ "type": "toolcall_delta",
713
+ "contentIndex": 1,
714
+ "delta": "true",
715
+ "partialRef": 0
716
+ },
717
+ {
718
+ "type": "toolcall_delta",
719
+ "contentIndex": 1,
720
+ "delta": ",\"",
721
+ "partialRef": 0
722
+ },
723
+ {
724
+ "type": "toolcall_delta",
725
+ "contentIndex": 1,
726
+ "delta": "context",
727
+ "partialRef": 0
728
+ },
729
+ {
730
+ "type": "toolcall_delta",
731
+ "contentIndex": 1,
732
+ "delta": "\":",
733
+ "partialRef": 0
734
+ },
735
+ {
736
+ "type": "toolcall_delta",
737
+ "contentIndex": 1,
738
+ "delta": "0",
739
+ "partialRef": 0
740
+ },
741
+ {
742
+ "type": "toolcall_delta",
743
+ "contentIndex": 1,
744
+ "delta": ",\"",
745
+ "partialRef": 0
746
+ },
747
+ {
748
+ "type": "toolcall_delta",
749
+ "contentIndex": 1,
750
+ "delta": "limit",
751
+ "partialRef": 0
752
+ },
753
+ {
754
+ "type": "toolcall_delta",
755
+ "contentIndex": 1,
756
+ "delta": "\":",
757
+ "partialRef": 0
758
+ },
759
+ {
760
+ "type": "toolcall_delta",
761
+ "contentIndex": 1,
762
+ "delta": "100",
763
+ "partialRef": 0
764
+ },
765
+ {
766
+ "type": "toolcall_delta",
767
+ "contentIndex": 1,
768
+ "delta": "}",
769
+ "partialRef": 0
770
+ },
771
+ {
772
+ "type": "toolcall_end",
773
+ "contentIndex": 1,
774
+ "toolCall": {
775
+ "type": "toolCall",
776
+ "id": "toolcall_0",
777
+ "name": "grep",
778
+ "arguments": {
779
+ "pattern": "BEACON",
780
+ "path": ".",
781
+ "glob": "**/*",
782
+ "ignoreCase": false,
783
+ "literal": true,
784
+ "context": 0,
785
+ "limit": 100
786
+ }
787
+ },
788
+ "partialRef": 0
789
+ },
790
+ {
791
+ "type": "done",
792
+ "reason": "toolUse",
793
+ "message": {
794
+ "role": "assistant",
795
+ "content": [
796
+ {
797
+ "type": "thinking",
798
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
799
+ "thinkingSignature": ""
800
+ },
801
+ {
802
+ "type": "toolCall",
803
+ "id": "toolcall_0",
804
+ "name": "grep",
805
+ "arguments": {
806
+ "pattern": "BEACON",
807
+ "path": ".",
808
+ "glob": "**/*",
809
+ "ignoreCase": false,
810
+ "literal": true,
811
+ "context": 0,
812
+ "limit": 100
813
+ }
814
+ }
815
+ ],
816
+ "api": "openai-responses",
817
+ "provider": "github-copilot",
818
+ "model": "gpt-5.4",
819
+ "usage": {
820
+ "input": 1569,
821
+ "output": 86,
822
+ "cacheRead": 0,
823
+ "cacheWrite": 0,
824
+ "reasoning": 38,
825
+ "totalTokens": 1655,
826
+ "cost": {
827
+ "input": 0.003922500000000001,
828
+ "output": 0.0012900000000000001,
829
+ "cacheRead": 0,
830
+ "cacheWrite": 0,
831
+ "total": 0.005212500000000001
832
+ }
833
+ },
834
+ "stopReason": "toolUse",
835
+ "timestamp": 0,
836
+ "responseId": ""
837
+ }
838
+ }
839
+ ],
840
+ [
841
+ {
842
+ "type": "start",
843
+ "partialRef": 1
844
+ },
845
+ {
846
+ "type": "text_start",
847
+ "contentIndex": 0,
848
+ "partialRef": 1
849
+ },
850
+ {
851
+ "type": "text_delta",
852
+ "contentIndex": 0,
853
+ "delta": "three",
854
+ "partialRef": 1
855
+ },
856
+ {
857
+ "type": "text_delta",
858
+ "contentIndex": 0,
859
+ "delta": ".txt",
860
+ "partialRef": 1
861
+ },
862
+ {
863
+ "type": "text_delta",
864
+ "contentIndex": 0,
865
+ "delta": "\n",
866
+ "partialRef": 1
867
+ },
868
+ {
869
+ "type": "text_delta",
870
+ "contentIndex": 0,
871
+ "delta": "one",
872
+ "partialRef": 1
873
+ },
874
+ {
875
+ "type": "text_delta",
876
+ "contentIndex": 0,
877
+ "delta": ".txt",
878
+ "partialRef": 1
879
+ },
880
+ {
881
+ "type": "text_end",
882
+ "contentIndex": 0,
883
+ "content": "three.txt\none.txt",
884
+ "partialRef": 1
885
+ },
886
+ {
887
+ "type": "done",
888
+ "reason": "stop",
889
+ "message": {
890
+ "role": "assistant",
891
+ "content": [
892
+ {
893
+ "type": "text",
894
+ "text": "three.txt\none.txt",
895
+ "textSignature": ""
896
+ }
897
+ ],
898
+ "api": "openai-responses",
899
+ "provider": "github-copilot",
900
+ "model": "gpt-5.4",
901
+ "usage": {
902
+ "input": 1685,
903
+ "output": 9,
904
+ "cacheRead": 0,
905
+ "cacheWrite": 0,
906
+ "reasoning": 0,
907
+ "totalTokens": 1694,
908
+ "cost": {
909
+ "input": 0.0042125,
910
+ "output": 0.000135,
911
+ "cacheRead": 0,
912
+ "cacheWrite": 0,
913
+ "total": 0.0043475
914
+ }
915
+ },
916
+ "stopReason": "stop",
917
+ "timestamp": 0,
918
+ "responseId": ""
919
+ }
920
+ }
921
+ ]
922
+ ],
923
+ "events": [
924
+ {
925
+ "type": "agent_start"
926
+ },
927
+ {
928
+ "type": "turn_start"
929
+ },
930
+ {
931
+ "type": "message_start",
932
+ "message": {
933
+ "role": "user",
934
+ "content": [
935
+ {
936
+ "type": "text",
937
+ "text": "Use the grep tool to search for BEACON here. Reply with the matching file names only."
938
+ }
939
+ ],
940
+ "timestamp": 0
941
+ }
942
+ },
943
+ {
944
+ "type": "message_end",
945
+ "message": {
946
+ "role": "user",
947
+ "content": [
948
+ {
949
+ "type": "text",
950
+ "text": "Use the grep tool to search for BEACON here. Reply with the matching file names only."
951
+ }
952
+ ],
953
+ "timestamp": 0
954
+ }
955
+ },
956
+ {
957
+ "type": "message_start",
958
+ "message": {
959
+ "role": "assistant",
960
+ "content": [
961
+ {
962
+ "type": "thinking",
963
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
964
+ "thinkingSignature": ""
965
+ },
966
+ {
967
+ "type": "toolCall",
968
+ "id": "toolcall_0",
969
+ "name": "grep",
970
+ "arguments": {
971
+ "pattern": "BEACON",
972
+ "path": ".",
973
+ "glob": "**/*",
974
+ "ignoreCase": false,
975
+ "literal": true,
976
+ "context": 0,
977
+ "limit": 100
978
+ }
979
+ }
980
+ ],
981
+ "api": "openai-responses",
982
+ "provider": "github-copilot",
983
+ "model": "gpt-5.4",
984
+ "usage": {
985
+ "input": 0,
986
+ "output": 0,
987
+ "cacheRead": 0,
988
+ "cacheWrite": 0,
989
+ "totalTokens": 0,
990
+ "cost": {
991
+ "input": 0,
992
+ "output": 0,
993
+ "cacheRead": 0,
994
+ "cacheWrite": 0,
995
+ "total": 0
996
+ }
997
+ },
998
+ "stopReason": "stop",
999
+ "timestamp": 0
1000
+ }
1001
+ },
1002
+ {
1003
+ "type": "message_update",
1004
+ "assistantMessageEvent": {
1005
+ "type": "thinking_start",
1006
+ "contentIndex": 0
1007
+ },
1008
+ "message": {
1009
+ "role": "assistant"
1010
+ }
1011
+ },
1012
+ {
1013
+ "type": "message_update",
1014
+ "assistantMessageEvent": {
1015
+ "type": "thinking_delta",
1016
+ "contentIndex": 0,
1017
+ "delta": "**Adjusting grep tool usage**\n\nI"
1018
+ },
1019
+ "message": {
1020
+ "role": "assistant"
1021
+ }
1022
+ },
1023
+ {
1024
+ "type": "message_update",
1025
+ "assistantMessageEvent": {
1026
+ "type": "thinking_delta",
1027
+ "contentIndex": 0,
1028
+ "delta": " need"
1029
+ },
1030
+ "message": {
1031
+ "role": "assistant"
1032
+ }
1033
+ },
1034
+ {
1035
+ "type": "message_update",
1036
+ "assistantMessageEvent": {
1037
+ "type": "thinking_delta",
1038
+ "contentIndex": 0,
1039
+ "delta": " to"
1040
+ },
1041
+ "message": {
1042
+ "role": "assistant"
1043
+ }
1044
+ },
1045
+ {
1046
+ "type": "message_update",
1047
+ "assistantMessageEvent": {
1048
+ "type": "thinking_delta",
1049
+ "contentIndex": 0,
1050
+ "delta": " use"
1051
+ },
1052
+ "message": {
1053
+ "role": "assistant"
1054
+ }
1055
+ },
1056
+ {
1057
+ "type": "message_update",
1058
+ "assistantMessageEvent": {
1059
+ "type": "thinking_delta",
1060
+ "contentIndex": 0,
1061
+ "delta": " the"
1062
+ },
1063
+ "message": {
1064
+ "role": "assistant"
1065
+ }
1066
+ },
1067
+ {
1068
+ "type": "message_update",
1069
+ "assistantMessageEvent": {
1070
+ "type": "thinking_delta",
1071
+ "contentIndex": 0,
1072
+ "delta": " grep"
1073
+ },
1074
+ "message": {
1075
+ "role": "assistant"
1076
+ }
1077
+ },
1078
+ {
1079
+ "type": "message_update",
1080
+ "assistantMessageEvent": {
1081
+ "type": "thinking_delta",
1082
+ "contentIndex": 0,
1083
+ "delta": " tool"
1084
+ },
1085
+ "message": {
1086
+ "role": "assistant"
1087
+ }
1088
+ },
1089
+ {
1090
+ "type": "message_update",
1091
+ "assistantMessageEvent": {
1092
+ "type": "thinking_delta",
1093
+ "contentIndex": 0,
1094
+ "delta": " instead"
1095
+ },
1096
+ "message": {
1097
+ "role": "assistant"
1098
+ }
1099
+ },
1100
+ {
1101
+ "type": "message_update",
1102
+ "assistantMessageEvent": {
1103
+ "type": "thinking_delta",
1104
+ "contentIndex": 0,
1105
+ "delta": " of"
1106
+ },
1107
+ "message": {
1108
+ "role": "assistant"
1109
+ }
1110
+ },
1111
+ {
1112
+ "type": "message_update",
1113
+ "assistantMessageEvent": {
1114
+ "type": "thinking_delta",
1115
+ "contentIndex": 0,
1116
+ "delta": " bash"
1117
+ },
1118
+ "message": {
1119
+ "role": "assistant"
1120
+ }
1121
+ },
1122
+ {
1123
+ "type": "message_update",
1124
+ "assistantMessageEvent": {
1125
+ "type": "thinking_delta",
1126
+ "contentIndex": 0,
1127
+ "delta": " for"
1128
+ },
1129
+ "message": {
1130
+ "role": "assistant"
1131
+ }
1132
+ },
1133
+ {
1134
+ "type": "message_update",
1135
+ "assistantMessageEvent": {
1136
+ "type": "thinking_delta",
1137
+ "contentIndex": 0,
1138
+ "delta": " this"
1139
+ },
1140
+ "message": {
1141
+ "role": "assistant"
1142
+ }
1143
+ },
1144
+ {
1145
+ "type": "message_update",
1146
+ "assistantMessageEvent": {
1147
+ "type": "thinking_delta",
1148
+ "contentIndex": 0,
1149
+ "delta": " task"
1150
+ },
1151
+ "message": {
1152
+ "role": "assistant"
1153
+ }
1154
+ },
1155
+ {
1156
+ "type": "message_update",
1157
+ "assistantMessageEvent": {
1158
+ "type": "thinking_delta",
1159
+ "contentIndex": 0,
1160
+ "delta": "."
1161
+ },
1162
+ "message": {
1163
+ "role": "assistant"
1164
+ }
1165
+ },
1166
+ {
1167
+ "type": "message_update",
1168
+ "assistantMessageEvent": {
1169
+ "type": "thinking_delta",
1170
+ "contentIndex": 0,
1171
+ "delta": " It"
1172
+ },
1173
+ "message": {
1174
+ "role": "assistant"
1175
+ }
1176
+ },
1177
+ {
1178
+ "type": "message_update",
1179
+ "assistantMessageEvent": {
1180
+ "type": "thinking_delta",
1181
+ "contentIndex": 0,
1182
+ "delta": " seems"
1183
+ },
1184
+ "message": {
1185
+ "role": "assistant"
1186
+ }
1187
+ },
1188
+ {
1189
+ "type": "message_update",
1190
+ "assistantMessageEvent": {
1191
+ "type": "thinking_delta",
1192
+ "contentIndex": 0,
1193
+ "delta": " there"
1194
+ },
1195
+ "message": {
1196
+ "role": "assistant"
1197
+ }
1198
+ },
1199
+ {
1200
+ "type": "message_update",
1201
+ "assistantMessageEvent": {
1202
+ "type": "thinking_delta",
1203
+ "contentIndex": 0,
1204
+ "delta": " might"
1205
+ },
1206
+ "message": {
1207
+ "role": "assistant"
1208
+ }
1209
+ },
1210
+ {
1211
+ "type": "message_update",
1212
+ "assistantMessageEvent": {
1213
+ "type": "thinking_delta",
1214
+ "contentIndex": 0,
1215
+ "delta": " be"
1216
+ },
1217
+ "message": {
1218
+ "role": "assistant"
1219
+ }
1220
+ },
1221
+ {
1222
+ "type": "message_update",
1223
+ "assistantMessageEvent": {
1224
+ "type": "thinking_delta",
1225
+ "contentIndex": 0,
1226
+ "delta": " many"
1227
+ },
1228
+ "message": {
1229
+ "role": "assistant"
1230
+ }
1231
+ },
1232
+ {
1233
+ "type": "message_update",
1234
+ "assistantMessageEvent": {
1235
+ "type": "thinking_delta",
1236
+ "contentIndex": 0,
1237
+ "delta": " matches"
1238
+ },
1239
+ "message": {
1240
+ "role": "assistant"
1241
+ }
1242
+ },
1243
+ {
1244
+ "type": "message_update",
1245
+ "assistantMessageEvent": {
1246
+ "type": "thinking_delta",
1247
+ "contentIndex": 0,
1248
+ "delta": ","
1249
+ },
1250
+ "message": {
1251
+ "role": "assistant"
1252
+ }
1253
+ },
1254
+ {
1255
+ "type": "message_update",
1256
+ "assistantMessageEvent": {
1257
+ "type": "thinking_delta",
1258
+ "contentIndex": 0,
1259
+ "delta": " so"
1260
+ },
1261
+ "message": {
1262
+ "role": "assistant"
1263
+ }
1264
+ },
1265
+ {
1266
+ "type": "message_update",
1267
+ "assistantMessageEvent": {
1268
+ "type": "thinking_delta",
1269
+ "contentIndex": 0,
1270
+ "delta": " I"
1271
+ },
1272
+ "message": {
1273
+ "role": "assistant"
1274
+ }
1275
+ },
1276
+ {
1277
+ "type": "message_update",
1278
+ "assistantMessageEvent": {
1279
+ "type": "thinking_delta",
1280
+ "contentIndex": 0,
1281
+ "delta": " should"
1282
+ },
1283
+ "message": {
1284
+ "role": "assistant"
1285
+ }
1286
+ },
1287
+ {
1288
+ "type": "message_update",
1289
+ "assistantMessageEvent": {
1290
+ "type": "thinking_delta",
1291
+ "contentIndex": 0,
1292
+ "delta": " return"
1293
+ },
1294
+ "message": {
1295
+ "role": "assistant"
1296
+ }
1297
+ },
1298
+ {
1299
+ "type": "message_update",
1300
+ "assistantMessageEvent": {
1301
+ "type": "thinking_delta",
1302
+ "contentIndex": 0,
1303
+ "delta": " only"
1304
+ },
1305
+ "message": {
1306
+ "role": "assistant"
1307
+ }
1308
+ },
1309
+ {
1310
+ "type": "message_update",
1311
+ "assistantMessageEvent": {
1312
+ "type": "thinking_delta",
1313
+ "contentIndex": 0,
1314
+ "delta": " the"
1315
+ },
1316
+ "message": {
1317
+ "role": "assistant"
1318
+ }
1319
+ },
1320
+ {
1321
+ "type": "message_update",
1322
+ "assistantMessageEvent": {
1323
+ "type": "thinking_delta",
1324
+ "contentIndex": 0,
1325
+ "delta": " matching"
1326
+ },
1327
+ "message": {
1328
+ "role": "assistant"
1329
+ }
1330
+ },
1331
+ {
1332
+ "type": "message_update",
1333
+ "assistantMessageEvent": {
1334
+ "type": "thinking_delta",
1335
+ "contentIndex": 0,
1336
+ "delta": " file"
1337
+ },
1338
+ "message": {
1339
+ "role": "assistant"
1340
+ }
1341
+ },
1342
+ {
1343
+ "type": "message_update",
1344
+ "assistantMessageEvent": {
1345
+ "type": "thinking_delta",
1346
+ "contentIndex": 0,
1347
+ "delta": " names"
1348
+ },
1349
+ "message": {
1350
+ "role": "assistant"
1351
+ }
1352
+ },
1353
+ {
1354
+ "type": "message_update",
1355
+ "assistantMessageEvent": {
1356
+ "type": "thinking_delta",
1357
+ "contentIndex": 0,
1358
+ "delta": "."
1359
+ },
1360
+ "message": {
1361
+ "role": "assistant"
1362
+ }
1363
+ },
1364
+ {
1365
+ "type": "message_update",
1366
+ "assistantMessageEvent": {
1367
+ "type": "thinking_delta",
1368
+ "contentIndex": 0,
1369
+ "delta": " I"
1370
+ },
1371
+ "message": {
1372
+ "role": "assistant"
1373
+ }
1374
+ },
1375
+ {
1376
+ "type": "message_update",
1377
+ "assistantMessageEvent": {
1378
+ "type": "thinking_delta",
1379
+ "contentIndex": 0,
1380
+ "delta": " think"
1381
+ },
1382
+ "message": {
1383
+ "role": "assistant"
1384
+ }
1385
+ },
1386
+ {
1387
+ "type": "message_update",
1388
+ "assistantMessageEvent": {
1389
+ "type": "thinking_delta",
1390
+ "contentIndex": 0,
1391
+ "delta": " I"
1392
+ },
1393
+ "message": {
1394
+ "role": "assistant"
1395
+ }
1396
+ },
1397
+ {
1398
+ "type": "message_update",
1399
+ "assistantMessageEvent": {
1400
+ "type": "thinking_delta",
1401
+ "contentIndex": 0,
1402
+ "delta": " can"
1403
+ },
1404
+ "message": {
1405
+ "role": "assistant"
1406
+ }
1407
+ },
1408
+ {
1409
+ "type": "message_update",
1410
+ "assistantMessageEvent": {
1411
+ "type": "thinking_delta",
1412
+ "contentIndex": 0,
1413
+ "delta": " use"
1414
+ },
1415
+ "message": {
1416
+ "role": "assistant"
1417
+ }
1418
+ },
1419
+ {
1420
+ "type": "message_update",
1421
+ "assistantMessageEvent": {
1422
+ "type": "thinking_delta",
1423
+ "contentIndex": 0,
1424
+ "delta": " grep"
1425
+ },
1426
+ "message": {
1427
+ "role": "assistant"
1428
+ }
1429
+ },
1430
+ {
1431
+ "type": "message_update",
1432
+ "assistantMessageEvent": {
1433
+ "type": "thinking_delta",
1434
+ "contentIndex": 0,
1435
+ "delta": " in"
1436
+ },
1437
+ "message": {
1438
+ "role": "assistant"
1439
+ }
1440
+ },
1441
+ {
1442
+ "type": "message_update",
1443
+ "assistantMessageEvent": {
1444
+ "type": "thinking_delta",
1445
+ "contentIndex": 0,
1446
+ "delta": " a"
1447
+ },
1448
+ "message": {
1449
+ "role": "assistant"
1450
+ }
1451
+ },
1452
+ {
1453
+ "type": "message_update",
1454
+ "assistantMessageEvent": {
1455
+ "type": "thinking_delta",
1456
+ "contentIndex": 0,
1457
+ "delta": " literal"
1458
+ },
1459
+ "message": {
1460
+ "role": "assistant"
1461
+ }
1462
+ },
1463
+ {
1464
+ "type": "message_update",
1465
+ "assistantMessageEvent": {
1466
+ "type": "thinking_delta",
1467
+ "contentIndex": 0,
1468
+ "delta": " way"
1469
+ },
1470
+ "message": {
1471
+ "role": "assistant"
1472
+ }
1473
+ },
1474
+ {
1475
+ "type": "message_update",
1476
+ "assistantMessageEvent": {
1477
+ "type": "thinking_delta",
1478
+ "contentIndex": 0,
1479
+ "delta": ","
1480
+ },
1481
+ "message": {
1482
+ "role": "assistant"
1483
+ }
1484
+ },
1485
+ {
1486
+ "type": "message_update",
1487
+ "assistantMessageEvent": {
1488
+ "type": "thinking_delta",
1489
+ "contentIndex": 0,
1490
+ "delta": " and"
1491
+ },
1492
+ "message": {
1493
+ "role": "assistant"
1494
+ }
1495
+ },
1496
+ {
1497
+ "type": "message_update",
1498
+ "assistantMessageEvent": {
1499
+ "type": "thinking_delta",
1500
+ "contentIndex": 0,
1501
+ "delta": " the"
1502
+ },
1503
+ "message": {
1504
+ "role": "assistant"
1505
+ }
1506
+ },
1507
+ {
1508
+ "type": "message_update",
1509
+ "assistantMessageEvent": {
1510
+ "type": "thinking_delta",
1511
+ "contentIndex": 0,
1512
+ "delta": " default"
1513
+ },
1514
+ "message": {
1515
+ "role": "assistant"
1516
+ }
1517
+ },
1518
+ {
1519
+ "type": "message_update",
1520
+ "assistantMessageEvent": {
1521
+ "type": "thinking_delta",
1522
+ "contentIndex": 0,
1523
+ "delta": " will"
1524
+ },
1525
+ "message": {
1526
+ "role": "assistant"
1527
+ }
1528
+ },
1529
+ {
1530
+ "type": "message_update",
1531
+ "assistantMessageEvent": {
1532
+ "type": "thinking_delta",
1533
+ "contentIndex": 0,
1534
+ "delta": " be"
1535
+ },
1536
+ "message": {
1537
+ "role": "assistant"
1538
+ }
1539
+ },
1540
+ {
1541
+ "type": "message_update",
1542
+ "assistantMessageEvent": {
1543
+ "type": "thinking_delta",
1544
+ "contentIndex": 0,
1545
+ "delta": " case"
1546
+ },
1547
+ "message": {
1548
+ "role": "assistant"
1549
+ }
1550
+ },
1551
+ {
1552
+ "type": "message_update",
1553
+ "assistantMessageEvent": {
1554
+ "type": "thinking_delta",
1555
+ "contentIndex": 0,
1556
+ "delta": "-sensitive"
1557
+ },
1558
+ "message": {
1559
+ "role": "assistant"
1560
+ }
1561
+ },
1562
+ {
1563
+ "type": "message_update",
1564
+ "assistantMessageEvent": {
1565
+ "type": "thinking_delta",
1566
+ "contentIndex": 0,
1567
+ "delta": ","
1568
+ },
1569
+ "message": {
1570
+ "role": "assistant"
1571
+ }
1572
+ },
1573
+ {
1574
+ "type": "message_update",
1575
+ "assistantMessageEvent": {
1576
+ "type": "thinking_delta",
1577
+ "contentIndex": 0,
1578
+ "delta": " which"
1579
+ },
1580
+ "message": {
1581
+ "role": "assistant"
1582
+ }
1583
+ },
1584
+ {
1585
+ "type": "message_update",
1586
+ "assistantMessageEvent": {
1587
+ "type": "thinking_delta",
1588
+ "contentIndex": 0,
1589
+ "delta": " is"
1590
+ },
1591
+ "message": {
1592
+ "role": "assistant"
1593
+ }
1594
+ },
1595
+ {
1596
+ "type": "message_update",
1597
+ "assistantMessageEvent": {
1598
+ "type": "thinking_delta",
1599
+ "contentIndex": 0,
1600
+ "delta": " fine"
1601
+ },
1602
+ "message": {
1603
+ "role": "assistant"
1604
+ }
1605
+ },
1606
+ {
1607
+ "type": "message_update",
1608
+ "assistantMessageEvent": {
1609
+ "type": "thinking_delta",
1610
+ "contentIndex": 0,
1611
+ "delta": "."
1612
+ },
1613
+ "message": {
1614
+ "role": "assistant"
1615
+ }
1616
+ },
1617
+ {
1618
+ "type": "message_update",
1619
+ "assistantMessageEvent": {
1620
+ "type": "thinking_delta",
1621
+ "contentIndex": 0,
1622
+ "delta": " The"
1623
+ },
1624
+ "message": {
1625
+ "role": "assistant"
1626
+ }
1627
+ },
1628
+ {
1629
+ "type": "message_update",
1630
+ "assistantMessageEvent": {
1631
+ "type": "thinking_delta",
1632
+ "contentIndex": 0,
1633
+ "delta": " search"
1634
+ },
1635
+ "message": {
1636
+ "role": "assistant"
1637
+ }
1638
+ },
1639
+ {
1640
+ "type": "message_update",
1641
+ "assistantMessageEvent": {
1642
+ "type": "thinking_delta",
1643
+ "contentIndex": 0,
1644
+ "delta": " will"
1645
+ },
1646
+ "message": {
1647
+ "role": "assistant"
1648
+ }
1649
+ },
1650
+ {
1651
+ "type": "message_update",
1652
+ "assistantMessageEvent": {
1653
+ "type": "thinking_delta",
1654
+ "contentIndex": 0,
1655
+ "delta": " be"
1656
+ },
1657
+ "message": {
1658
+ "role": "assistant"
1659
+ }
1660
+ },
1661
+ {
1662
+ "type": "message_update",
1663
+ "assistantMessageEvent": {
1664
+ "type": "thinking_delta",
1665
+ "contentIndex": 0,
1666
+ "delta": " conducted"
1667
+ },
1668
+ "message": {
1669
+ "role": "assistant"
1670
+ }
1671
+ },
1672
+ {
1673
+ "type": "message_update",
1674
+ "assistantMessageEvent": {
1675
+ "type": "thinking_delta",
1676
+ "contentIndex": 0,
1677
+ "delta": " in"
1678
+ },
1679
+ "message": {
1680
+ "role": "assistant"
1681
+ }
1682
+ },
1683
+ {
1684
+ "type": "message_update",
1685
+ "assistantMessageEvent": {
1686
+ "type": "thinking_delta",
1687
+ "contentIndex": 0,
1688
+ "delta": " the"
1689
+ },
1690
+ "message": {
1691
+ "role": "assistant"
1692
+ }
1693
+ },
1694
+ {
1695
+ "type": "message_update",
1696
+ "assistantMessageEvent": {
1697
+ "type": "thinking_delta",
1698
+ "contentIndex": 0,
1699
+ "delta": " current"
1700
+ },
1701
+ "message": {
1702
+ "role": "assistant"
1703
+ }
1704
+ },
1705
+ {
1706
+ "type": "message_update",
1707
+ "assistantMessageEvent": {
1708
+ "type": "thinking_delta",
1709
+ "contentIndex": 0,
1710
+ "delta": " directory"
1711
+ },
1712
+ "message": {
1713
+ "role": "assistant"
1714
+ }
1715
+ },
1716
+ {
1717
+ "type": "message_update",
1718
+ "assistantMessageEvent": {
1719
+ "type": "thinking_delta",
1720
+ "contentIndex": 0,
1721
+ "delta": "."
1722
+ },
1723
+ "message": {
1724
+ "role": "assistant"
1725
+ }
1726
+ },
1727
+ {
1728
+ "type": "message_update",
1729
+ "assistantMessageEvent": {
1730
+ "type": "thinking_delta",
1731
+ "contentIndex": 0,
1732
+ "delta": " Let's"
1733
+ },
1734
+ "message": {
1735
+ "role": "assistant"
1736
+ }
1737
+ },
1738
+ {
1739
+ "type": "message_update",
1740
+ "assistantMessageEvent": {
1741
+ "type": "thinking_delta",
1742
+ "contentIndex": 0,
1743
+ "delta": " ensure"
1744
+ },
1745
+ "message": {
1746
+ "role": "assistant"
1747
+ }
1748
+ },
1749
+ {
1750
+ "type": "message_update",
1751
+ "assistantMessageEvent": {
1752
+ "type": "thinking_delta",
1753
+ "contentIndex": 0,
1754
+ "delta": " I'm"
1755
+ },
1756
+ "message": {
1757
+ "role": "assistant"
1758
+ }
1759
+ },
1760
+ {
1761
+ "type": "message_update",
1762
+ "assistantMessageEvent": {
1763
+ "type": "thinking_delta",
1764
+ "contentIndex": 0,
1765
+ "delta": " getting"
1766
+ },
1767
+ "message": {
1768
+ "role": "assistant"
1769
+ }
1770
+ },
1771
+ {
1772
+ "type": "message_update",
1773
+ "assistantMessageEvent": {
1774
+ "type": "thinking_delta",
1775
+ "contentIndex": 0,
1776
+ "delta": " that"
1777
+ },
1778
+ "message": {
1779
+ "role": "assistant"
1780
+ }
1781
+ },
1782
+ {
1783
+ "type": "message_update",
1784
+ "assistantMessageEvent": {
1785
+ "type": "thinking_delta",
1786
+ "contentIndex": 0,
1787
+ "delta": " right"
1788
+ },
1789
+ "message": {
1790
+ "role": "assistant"
1791
+ }
1792
+ },
1793
+ {
1794
+ "type": "message_update",
1795
+ "assistantMessageEvent": {
1796
+ "type": "thinking_delta",
1797
+ "contentIndex": 0,
1798
+ "delta": " to"
1799
+ },
1800
+ "message": {
1801
+ "role": "assistant"
1802
+ }
1803
+ },
1804
+ {
1805
+ "type": "message_update",
1806
+ "assistantMessageEvent": {
1807
+ "type": "thinking_delta",
1808
+ "contentIndex": 0,
1809
+ "delta": " avoid"
1810
+ },
1811
+ "message": {
1812
+ "role": "assistant"
1813
+ }
1814
+ },
1815
+ {
1816
+ "type": "message_update",
1817
+ "assistantMessageEvent": {
1818
+ "type": "thinking_delta",
1819
+ "contentIndex": 0,
1820
+ "delta": " any"
1821
+ },
1822
+ "message": {
1823
+ "role": "assistant"
1824
+ }
1825
+ },
1826
+ {
1827
+ "type": "message_update",
1828
+ "assistantMessageEvent": {
1829
+ "type": "thinking_delta",
1830
+ "contentIndex": 0,
1831
+ "delta": " issues"
1832
+ },
1833
+ "message": {
1834
+ "role": "assistant"
1835
+ }
1836
+ },
1837
+ {
1838
+ "type": "message_update",
1839
+ "assistantMessageEvent": {
1840
+ "type": "thinking_delta",
1841
+ "contentIndex": 0,
1842
+ "delta": " later"
1843
+ },
1844
+ "message": {
1845
+ "role": "assistant"
1846
+ }
1847
+ },
1848
+ {
1849
+ "type": "message_update",
1850
+ "assistantMessageEvent": {
1851
+ "type": "thinking_delta",
1852
+ "contentIndex": 0,
1853
+ "delta": "!"
1854
+ },
1855
+ "message": {
1856
+ "role": "assistant"
1857
+ }
1858
+ },
1859
+ {
1860
+ "type": "message_update",
1861
+ "assistantMessageEvent": {
1862
+ "type": "thinking_delta",
1863
+ "contentIndex": 0,
1864
+ "delta": "\n\n"
1865
+ },
1866
+ "message": {
1867
+ "role": "assistant"
1868
+ }
1869
+ },
1870
+ {
1871
+ "type": "message_update",
1872
+ "assistantMessageEvent": {
1873
+ "type": "thinking_end",
1874
+ "contentIndex": 0,
1875
+ "content": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!"
1876
+ },
1877
+ "message": {
1878
+ "role": "assistant"
1879
+ }
1880
+ },
1881
+ {
1882
+ "type": "message_update",
1883
+ "assistantMessageEvent": {
1884
+ "type": "toolcall_start",
1885
+ "contentIndex": 1,
1886
+ "partial": {
1887
+ "role": "assistant",
1888
+ "content": [
1889
+ {
1890
+ "type": "thinking",
1891
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
1892
+ "thinkingSignature": ""
1893
+ },
1894
+ {
1895
+ "type": "toolCall",
1896
+ "id": "toolcall_0",
1897
+ "name": "grep",
1898
+ "arguments": {
1899
+ "pattern": "BEACON",
1900
+ "path": ".",
1901
+ "glob": "**/*",
1902
+ "ignoreCase": false,
1903
+ "literal": true,
1904
+ "context": 0,
1905
+ "limit": 100
1906
+ }
1907
+ }
1908
+ ],
1909
+ "api": "openai-responses",
1910
+ "provider": "github-copilot",
1911
+ "model": "gpt-5.4",
1912
+ "usage": {
1913
+ "input": 1569,
1914
+ "output": 86,
1915
+ "cacheRead": 0,
1916
+ "cacheWrite": 0,
1917
+ "reasoning": 38,
1918
+ "totalTokens": 1655,
1919
+ "cost": {
1920
+ "input": 0.003922500000000001,
1921
+ "output": 0.0012900000000000001,
1922
+ "cacheRead": 0,
1923
+ "cacheWrite": 0,
1924
+ "total": 0.005212500000000001
1925
+ }
1926
+ },
1927
+ "stopReason": "toolUse",
1928
+ "timestamp": 0,
1929
+ "responseId": ""
1930
+ }
1931
+ },
1932
+ "message": {
1933
+ "role": "assistant"
1934
+ }
1935
+ },
1936
+ {
1937
+ "type": "message_update",
1938
+ "assistantMessageEvent": {
1939
+ "type": "toolcall_delta",
1940
+ "contentIndex": 1,
1941
+ "delta": "{\""
1942
+ },
1943
+ "message": {
1944
+ "role": "assistant"
1945
+ }
1946
+ },
1947
+ {
1948
+ "type": "message_update",
1949
+ "assistantMessageEvent": {
1950
+ "type": "toolcall_delta",
1951
+ "contentIndex": 1,
1952
+ "delta": "pattern"
1953
+ },
1954
+ "message": {
1955
+ "role": "assistant"
1956
+ }
1957
+ },
1958
+ {
1959
+ "type": "message_update",
1960
+ "assistantMessageEvent": {
1961
+ "type": "toolcall_delta",
1962
+ "contentIndex": 1,
1963
+ "delta": "\":\""
1964
+ },
1965
+ "message": {
1966
+ "role": "assistant"
1967
+ }
1968
+ },
1969
+ {
1970
+ "type": "message_update",
1971
+ "assistantMessageEvent": {
1972
+ "type": "toolcall_delta",
1973
+ "contentIndex": 1,
1974
+ "delta": "BE"
1975
+ },
1976
+ "message": {
1977
+ "role": "assistant"
1978
+ }
1979
+ },
1980
+ {
1981
+ "type": "message_update",
1982
+ "assistantMessageEvent": {
1983
+ "type": "toolcall_delta",
1984
+ "contentIndex": 1,
1985
+ "delta": "AC"
1986
+ },
1987
+ "message": {
1988
+ "role": "assistant"
1989
+ }
1990
+ },
1991
+ {
1992
+ "type": "message_update",
1993
+ "assistantMessageEvent": {
1994
+ "type": "toolcall_delta",
1995
+ "contentIndex": 1,
1996
+ "delta": "ON"
1997
+ },
1998
+ "message": {
1999
+ "role": "assistant"
2000
+ }
2001
+ },
2002
+ {
2003
+ "type": "message_update",
2004
+ "assistantMessageEvent": {
2005
+ "type": "toolcall_delta",
2006
+ "contentIndex": 1,
2007
+ "delta": "\",\""
2008
+ },
2009
+ "message": {
2010
+ "role": "assistant"
2011
+ }
2012
+ },
2013
+ {
2014
+ "type": "message_update",
2015
+ "assistantMessageEvent": {
2016
+ "type": "toolcall_delta",
2017
+ "contentIndex": 1,
2018
+ "delta": "path"
2019
+ },
2020
+ "message": {
2021
+ "role": "assistant"
2022
+ }
2023
+ },
2024
+ {
2025
+ "type": "message_update",
2026
+ "assistantMessageEvent": {
2027
+ "type": "toolcall_delta",
2028
+ "contentIndex": 1,
2029
+ "delta": "\":"
2030
+ },
2031
+ "message": {
2032
+ "role": "assistant"
2033
+ }
2034
+ },
2035
+ {
2036
+ "type": "message_update",
2037
+ "assistantMessageEvent": {
2038
+ "type": "toolcall_delta",
2039
+ "contentIndex": 1,
2040
+ "delta": "\"."
2041
+ },
2042
+ "message": {
2043
+ "role": "assistant"
2044
+ }
2045
+ },
2046
+ {
2047
+ "type": "message_update",
2048
+ "assistantMessageEvent": {
2049
+ "type": "toolcall_delta",
2050
+ "contentIndex": 1,
2051
+ "delta": "\",\""
2052
+ },
2053
+ "message": {
2054
+ "role": "assistant"
2055
+ }
2056
+ },
2057
+ {
2058
+ "type": "message_update",
2059
+ "assistantMessageEvent": {
2060
+ "type": "toolcall_delta",
2061
+ "contentIndex": 1,
2062
+ "delta": "glob"
2063
+ },
2064
+ "message": {
2065
+ "role": "assistant"
2066
+ }
2067
+ },
2068
+ {
2069
+ "type": "message_update",
2070
+ "assistantMessageEvent": {
2071
+ "type": "toolcall_delta",
2072
+ "contentIndex": 1,
2073
+ "delta": "\":\""
2074
+ },
2075
+ "message": {
2076
+ "role": "assistant"
2077
+ }
2078
+ },
2079
+ {
2080
+ "type": "message_update",
2081
+ "assistantMessageEvent": {
2082
+ "type": "toolcall_delta",
2083
+ "contentIndex": 1,
2084
+ "delta": "**"
2085
+ },
2086
+ "message": {
2087
+ "role": "assistant"
2088
+ }
2089
+ },
2090
+ {
2091
+ "type": "message_update",
2092
+ "assistantMessageEvent": {
2093
+ "type": "toolcall_delta",
2094
+ "contentIndex": 1,
2095
+ "delta": "/*"
2096
+ },
2097
+ "message": {
2098
+ "role": "assistant"
2099
+ }
2100
+ },
2101
+ {
2102
+ "type": "message_update",
2103
+ "assistantMessageEvent": {
2104
+ "type": "toolcall_delta",
2105
+ "contentIndex": 1,
2106
+ "delta": "\",\""
2107
+ },
2108
+ "message": {
2109
+ "role": "assistant"
2110
+ }
2111
+ },
2112
+ {
2113
+ "type": "message_update",
2114
+ "assistantMessageEvent": {
2115
+ "type": "toolcall_delta",
2116
+ "contentIndex": 1,
2117
+ "delta": "ignore"
2118
+ },
2119
+ "message": {
2120
+ "role": "assistant"
2121
+ }
2122
+ },
2123
+ {
2124
+ "type": "message_update",
2125
+ "assistantMessageEvent": {
2126
+ "type": "toolcall_delta",
2127
+ "contentIndex": 1,
2128
+ "delta": "Case"
2129
+ },
2130
+ "message": {
2131
+ "role": "assistant"
2132
+ }
2133
+ },
2134
+ {
2135
+ "type": "message_update",
2136
+ "assistantMessageEvent": {
2137
+ "type": "toolcall_delta",
2138
+ "contentIndex": 1,
2139
+ "delta": "\":"
2140
+ },
2141
+ "message": {
2142
+ "role": "assistant"
2143
+ }
2144
+ },
2145
+ {
2146
+ "type": "message_update",
2147
+ "assistantMessageEvent": {
2148
+ "type": "toolcall_delta",
2149
+ "contentIndex": 1,
2150
+ "delta": "false"
2151
+ },
2152
+ "message": {
2153
+ "role": "assistant"
2154
+ }
2155
+ },
2156
+ {
2157
+ "type": "message_update",
2158
+ "assistantMessageEvent": {
2159
+ "type": "toolcall_delta",
2160
+ "contentIndex": 1,
2161
+ "delta": ",\""
2162
+ },
2163
+ "message": {
2164
+ "role": "assistant"
2165
+ }
2166
+ },
2167
+ {
2168
+ "type": "message_update",
2169
+ "assistantMessageEvent": {
2170
+ "type": "toolcall_delta",
2171
+ "contentIndex": 1,
2172
+ "delta": "literal"
2173
+ },
2174
+ "message": {
2175
+ "role": "assistant"
2176
+ }
2177
+ },
2178
+ {
2179
+ "type": "message_update",
2180
+ "assistantMessageEvent": {
2181
+ "type": "toolcall_delta",
2182
+ "contentIndex": 1,
2183
+ "delta": "\":"
2184
+ },
2185
+ "message": {
2186
+ "role": "assistant"
2187
+ }
2188
+ },
2189
+ {
2190
+ "type": "message_update",
2191
+ "assistantMessageEvent": {
2192
+ "type": "toolcall_delta",
2193
+ "contentIndex": 1,
2194
+ "delta": "true"
2195
+ },
2196
+ "message": {
2197
+ "role": "assistant"
2198
+ }
2199
+ },
2200
+ {
2201
+ "type": "message_update",
2202
+ "assistantMessageEvent": {
2203
+ "type": "toolcall_delta",
2204
+ "contentIndex": 1,
2205
+ "delta": ",\""
2206
+ },
2207
+ "message": {
2208
+ "role": "assistant"
2209
+ }
2210
+ },
2211
+ {
2212
+ "type": "message_update",
2213
+ "assistantMessageEvent": {
2214
+ "type": "toolcall_delta",
2215
+ "contentIndex": 1,
2216
+ "delta": "context"
2217
+ },
2218
+ "message": {
2219
+ "role": "assistant"
2220
+ }
2221
+ },
2222
+ {
2223
+ "type": "message_update",
2224
+ "assistantMessageEvent": {
2225
+ "type": "toolcall_delta",
2226
+ "contentIndex": 1,
2227
+ "delta": "\":"
2228
+ },
2229
+ "message": {
2230
+ "role": "assistant"
2231
+ }
2232
+ },
2233
+ {
2234
+ "type": "message_update",
2235
+ "assistantMessageEvent": {
2236
+ "type": "toolcall_delta",
2237
+ "contentIndex": 1,
2238
+ "delta": "0"
2239
+ },
2240
+ "message": {
2241
+ "role": "assistant"
2242
+ }
2243
+ },
2244
+ {
2245
+ "type": "message_update",
2246
+ "assistantMessageEvent": {
2247
+ "type": "toolcall_delta",
2248
+ "contentIndex": 1,
2249
+ "delta": ",\""
2250
+ },
2251
+ "message": {
2252
+ "role": "assistant"
2253
+ }
2254
+ },
2255
+ {
2256
+ "type": "message_update",
2257
+ "assistantMessageEvent": {
2258
+ "type": "toolcall_delta",
2259
+ "contentIndex": 1,
2260
+ "delta": "limit"
2261
+ },
2262
+ "message": {
2263
+ "role": "assistant"
2264
+ }
2265
+ },
2266
+ {
2267
+ "type": "message_update",
2268
+ "assistantMessageEvent": {
2269
+ "type": "toolcall_delta",
2270
+ "contentIndex": 1,
2271
+ "delta": "\":"
2272
+ },
2273
+ "message": {
2274
+ "role": "assistant"
2275
+ }
2276
+ },
2277
+ {
2278
+ "type": "message_update",
2279
+ "assistantMessageEvent": {
2280
+ "type": "toolcall_delta",
2281
+ "contentIndex": 1,
2282
+ "delta": "100"
2283
+ },
2284
+ "message": {
2285
+ "role": "assistant"
2286
+ }
2287
+ },
2288
+ {
2289
+ "type": "message_update",
2290
+ "assistantMessageEvent": {
2291
+ "type": "toolcall_delta",
2292
+ "contentIndex": 1,
2293
+ "delta": "}"
2294
+ },
2295
+ "message": {
2296
+ "role": "assistant"
2297
+ }
2298
+ },
2299
+ {
2300
+ "type": "message_update",
2301
+ "assistantMessageEvent": {
2302
+ "type": "toolcall_end",
2303
+ "contentIndex": 1,
2304
+ "toolCall": {
2305
+ "type": "toolCall",
2306
+ "id": "toolcall_0",
2307
+ "name": "grep",
2308
+ "arguments": {
2309
+ "pattern": "BEACON",
2310
+ "path": ".",
2311
+ "glob": "**/*",
2312
+ "ignoreCase": false,
2313
+ "literal": true,
2314
+ "context": 0,
2315
+ "limit": 100
2316
+ }
2317
+ }
2318
+ },
2319
+ "message": {
2320
+ "role": "assistant"
2321
+ }
2322
+ },
2323
+ {
2324
+ "type": "message_end",
2325
+ "message": {
2326
+ "role": "assistant",
2327
+ "content": [
2328
+ {
2329
+ "type": "thinking",
2330
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
2331
+ "thinkingSignature": ""
2332
+ },
2333
+ {
2334
+ "type": "toolCall",
2335
+ "id": "toolcall_0",
2336
+ "name": "grep",
2337
+ "arguments": {
2338
+ "pattern": "BEACON",
2339
+ "path": ".",
2340
+ "glob": "**/*",
2341
+ "ignoreCase": false,
2342
+ "literal": true,
2343
+ "context": 0,
2344
+ "limit": 100
2345
+ }
2346
+ }
2347
+ ],
2348
+ "api": "openai-responses",
2349
+ "provider": "github-copilot",
2350
+ "model": "gpt-5.4",
2351
+ "usage": {
2352
+ "input": 1569,
2353
+ "output": 86,
2354
+ "cacheRead": 0,
2355
+ "cacheWrite": 0,
2356
+ "reasoning": 38,
2357
+ "totalTokens": 1655,
2358
+ "cost": {
2359
+ "input": 0.003922500000000001,
2360
+ "output": 0.0012900000000000001,
2361
+ "cacheRead": 0,
2362
+ "cacheWrite": 0,
2363
+ "total": 0.005212500000000001
2364
+ }
2365
+ },
2366
+ "stopReason": "toolUse",
2367
+ "timestamp": 0,
2368
+ "responseId": ""
2369
+ }
2370
+ },
2371
+ {
2372
+ "type": "tool_execution_start",
2373
+ "toolCallId": "toolcall_0",
2374
+ "toolName": "grep",
2375
+ "args": {
2376
+ "pattern": "BEACON",
2377
+ "path": ".",
2378
+ "glob": "**/*",
2379
+ "ignoreCase": false,
2380
+ "literal": true,
2381
+ "context": 0,
2382
+ "limit": 100
2383
+ }
2384
+ },
2385
+ {
2386
+ "type": "tool_execution_end",
2387
+ "toolCallId": "toolcall_0",
2388
+ "toolName": "grep",
2389
+ "result": {
2390
+ "content": [
2391
+ {
2392
+ "type": "text",
2393
+ "text": "three.txt:1: BEACON again\none.txt:2: BEACON here"
2394
+ }
2395
+ ]
2396
+ },
2397
+ "isError": false
2398
+ },
2399
+ {
2400
+ "type": "message_start",
2401
+ "message": {
2402
+ "role": "toolResult",
2403
+ "toolCallId": "toolcall_0",
2404
+ "toolName": "grep",
2405
+ "content": [
2406
+ {
2407
+ "type": "text",
2408
+ "text": "three.txt:1: BEACON again\none.txt:2: BEACON here"
2409
+ }
2410
+ ],
2411
+ "isError": false,
2412
+ "timestamp": 0
2413
+ }
2414
+ },
2415
+ {
2416
+ "type": "message_end",
2417
+ "message": {
2418
+ "role": "toolResult",
2419
+ "toolCallId": "toolcall_0",
2420
+ "toolName": "grep",
2421
+ "content": [
2422
+ {
2423
+ "type": "text",
2424
+ "text": "three.txt:1: BEACON again\none.txt:2: BEACON here"
2425
+ }
2426
+ ],
2427
+ "isError": false,
2428
+ "timestamp": 0
2429
+ }
2430
+ },
2431
+ {
2432
+ "type": "turn_end",
2433
+ "message": {
2434
+ "role": "assistant",
2435
+ "content": [
2436
+ {
2437
+ "type": "thinking",
2438
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
2439
+ "thinkingSignature": ""
2440
+ },
2441
+ {
2442
+ "type": "toolCall",
2443
+ "id": "toolcall_0",
2444
+ "name": "grep",
2445
+ "arguments": {
2446
+ "pattern": "BEACON",
2447
+ "path": ".",
2448
+ "glob": "**/*",
2449
+ "ignoreCase": false,
2450
+ "literal": true,
2451
+ "context": 0,
2452
+ "limit": 100
2453
+ }
2454
+ }
2455
+ ],
2456
+ "api": "openai-responses",
2457
+ "provider": "github-copilot",
2458
+ "model": "gpt-5.4",
2459
+ "usage": {
2460
+ "input": 1569,
2461
+ "output": 86,
2462
+ "cacheRead": 0,
2463
+ "cacheWrite": 0,
2464
+ "reasoning": 38,
2465
+ "totalTokens": 1655,
2466
+ "cost": {
2467
+ "input": 0.003922500000000001,
2468
+ "output": 0.0012900000000000001,
2469
+ "cacheRead": 0,
2470
+ "cacheWrite": 0,
2471
+ "total": 0.005212500000000001
2472
+ }
2473
+ },
2474
+ "stopReason": "toolUse",
2475
+ "timestamp": 0,
2476
+ "responseId": ""
2477
+ },
2478
+ "toolResults": [
2479
+ {
2480
+ "role": "toolResult",
2481
+ "toolCallId": "toolcall_0",
2482
+ "toolName": "grep",
2483
+ "content": [
2484
+ {
2485
+ "type": "text",
2486
+ "text": "three.txt:1: BEACON again\none.txt:2: BEACON here"
2487
+ }
2488
+ ],
2489
+ "isError": false,
2490
+ "timestamp": 0
2491
+ }
2492
+ ]
2493
+ },
2494
+ {
2495
+ "type": "turn_start"
2496
+ },
2497
+ {
2498
+ "type": "message_start",
2499
+ "message": {
2500
+ "role": "assistant",
2501
+ "content": [
2502
+ {
2503
+ "type": "text",
2504
+ "text": "three.txt\none.txt",
2505
+ "textSignature": ""
2506
+ }
2507
+ ],
2508
+ "api": "openai-responses",
2509
+ "provider": "github-copilot",
2510
+ "model": "gpt-5.4",
2511
+ "usage": {
2512
+ "input": 0,
2513
+ "output": 0,
2514
+ "cacheRead": 0,
2515
+ "cacheWrite": 0,
2516
+ "totalTokens": 0,
2517
+ "cost": {
2518
+ "input": 0,
2519
+ "output": 0,
2520
+ "cacheRead": 0,
2521
+ "cacheWrite": 0,
2522
+ "total": 0
2523
+ }
2524
+ },
2525
+ "stopReason": "stop",
2526
+ "timestamp": 0
2527
+ }
2528
+ },
2529
+ {
2530
+ "type": "message_update",
2531
+ "assistantMessageEvent": {
2532
+ "type": "text_start",
2533
+ "contentIndex": 0
2534
+ },
2535
+ "message": {
2536
+ "role": "assistant"
2537
+ }
2538
+ },
2539
+ {
2540
+ "type": "message_update",
2541
+ "assistantMessageEvent": {
2542
+ "type": "text_delta",
2543
+ "contentIndex": 0,
2544
+ "delta": "three"
2545
+ },
2546
+ "message": {
2547
+ "role": "assistant"
2548
+ }
2549
+ },
2550
+ {
2551
+ "type": "message_update",
2552
+ "assistantMessageEvent": {
2553
+ "type": "text_delta",
2554
+ "contentIndex": 0,
2555
+ "delta": ".txt"
2556
+ },
2557
+ "message": {
2558
+ "role": "assistant"
2559
+ }
2560
+ },
2561
+ {
2562
+ "type": "message_update",
2563
+ "assistantMessageEvent": {
2564
+ "type": "text_delta",
2565
+ "contentIndex": 0,
2566
+ "delta": "\n"
2567
+ },
2568
+ "message": {
2569
+ "role": "assistant"
2570
+ }
2571
+ },
2572
+ {
2573
+ "type": "message_update",
2574
+ "assistantMessageEvent": {
2575
+ "type": "text_delta",
2576
+ "contentIndex": 0,
2577
+ "delta": "one"
2578
+ },
2579
+ "message": {
2580
+ "role": "assistant"
2581
+ }
2582
+ },
2583
+ {
2584
+ "type": "message_update",
2585
+ "assistantMessageEvent": {
2586
+ "type": "text_delta",
2587
+ "contentIndex": 0,
2588
+ "delta": ".txt"
2589
+ },
2590
+ "message": {
2591
+ "role": "assistant"
2592
+ }
2593
+ },
2594
+ {
2595
+ "type": "message_update",
2596
+ "assistantMessageEvent": {
2597
+ "type": "text_end",
2598
+ "contentIndex": 0,
2599
+ "content": "three.txt\none.txt"
2600
+ },
2601
+ "message": {
2602
+ "role": "assistant"
2603
+ }
2604
+ },
2605
+ {
2606
+ "type": "message_end",
2607
+ "message": {
2608
+ "role": "assistant",
2609
+ "content": [
2610
+ {
2611
+ "type": "text",
2612
+ "text": "three.txt\none.txt",
2613
+ "textSignature": ""
2614
+ }
2615
+ ],
2616
+ "api": "openai-responses",
2617
+ "provider": "github-copilot",
2618
+ "model": "gpt-5.4",
2619
+ "usage": {
2620
+ "input": 1685,
2621
+ "output": 9,
2622
+ "cacheRead": 0,
2623
+ "cacheWrite": 0,
2624
+ "reasoning": 0,
2625
+ "totalTokens": 1694,
2626
+ "cost": {
2627
+ "input": 0.0042125,
2628
+ "output": 0.000135,
2629
+ "cacheRead": 0,
2630
+ "cacheWrite": 0,
2631
+ "total": 0.0043475
2632
+ }
2633
+ },
2634
+ "stopReason": "stop",
2635
+ "timestamp": 0,
2636
+ "responseId": ""
2637
+ }
2638
+ },
2639
+ {
2640
+ "type": "turn_end",
2641
+ "message": {
2642
+ "role": "assistant",
2643
+ "content": [
2644
+ {
2645
+ "type": "text",
2646
+ "text": "three.txt\none.txt",
2647
+ "textSignature": ""
2648
+ }
2649
+ ],
2650
+ "api": "openai-responses",
2651
+ "provider": "github-copilot",
2652
+ "model": "gpt-5.4",
2653
+ "usage": {
2654
+ "input": 1685,
2655
+ "output": 9,
2656
+ "cacheRead": 0,
2657
+ "cacheWrite": 0,
2658
+ "reasoning": 0,
2659
+ "totalTokens": 1694,
2660
+ "cost": {
2661
+ "input": 0.0042125,
2662
+ "output": 0.000135,
2663
+ "cacheRead": 0,
2664
+ "cacheWrite": 0,
2665
+ "total": 0.0043475
2666
+ }
2667
+ },
2668
+ "stopReason": "stop",
2669
+ "timestamp": 0,
2670
+ "responseId": ""
2671
+ },
2672
+ "toolResults": []
2673
+ },
2674
+ {
2675
+ "type": "agent_end",
2676
+ "messages": [
2677
+ {
2678
+ "role": "user",
2679
+ "content": [
2680
+ {
2681
+ "type": "text",
2682
+ "text": "Use the grep tool to search for BEACON here. Reply with the matching file names only."
2683
+ }
2684
+ ],
2685
+ "timestamp": 0
2686
+ },
2687
+ {
2688
+ "role": "assistant",
2689
+ "content": [
2690
+ {
2691
+ "type": "thinking",
2692
+ "thinking": "**Adjusting grep tool usage**\n\nI need to use the grep tool instead of bash for this task. It seems there might be many matches, so I should return only the matching file names. I think I can use grep in a literal way, and the default will be case-sensitive, which is fine. The search will be conducted in the current directory. Let's ensure I'm getting that right to avoid any issues later!",
2693
+ "thinkingSignature": ""
2694
+ },
2695
+ {
2696
+ "type": "toolCall",
2697
+ "id": "toolcall_0",
2698
+ "name": "grep",
2699
+ "arguments": {
2700
+ "pattern": "BEACON",
2701
+ "path": ".",
2702
+ "glob": "**/*",
2703
+ "ignoreCase": false,
2704
+ "literal": true,
2705
+ "context": 0,
2706
+ "limit": 100
2707
+ }
2708
+ }
2709
+ ],
2710
+ "api": "openai-responses",
2711
+ "provider": "github-copilot",
2712
+ "model": "gpt-5.4",
2713
+ "usage": {
2714
+ "input": 1569,
2715
+ "output": 86,
2716
+ "cacheRead": 0,
2717
+ "cacheWrite": 0,
2718
+ "reasoning": 38,
2719
+ "totalTokens": 1655,
2720
+ "cost": {
2721
+ "input": 0.003922500000000001,
2722
+ "output": 0.0012900000000000001,
2723
+ "cacheRead": 0,
2724
+ "cacheWrite": 0,
2725
+ "total": 0.005212500000000001
2726
+ }
2727
+ },
2728
+ "stopReason": "toolUse",
2729
+ "timestamp": 0,
2730
+ "responseId": ""
2731
+ },
2732
+ {
2733
+ "role": "toolResult",
2734
+ "toolCallId": "toolcall_0",
2735
+ "toolName": "grep",
2736
+ "content": [
2737
+ {
2738
+ "type": "text",
2739
+ "text": "three.txt:1: BEACON again\none.txt:2: BEACON here"
2740
+ }
2741
+ ],
2742
+ "isError": false,
2743
+ "timestamp": 0
2744
+ },
2745
+ {
2746
+ "role": "assistant",
2747
+ "content": [
2748
+ {
2749
+ "type": "text",
2750
+ "text": "three.txt\none.txt",
2751
+ "textSignature": ""
2752
+ }
2753
+ ],
2754
+ "api": "openai-responses",
2755
+ "provider": "github-copilot",
2756
+ "model": "gpt-5.4",
2757
+ "usage": {
2758
+ "input": 1685,
2759
+ "output": 9,
2760
+ "cacheRead": 0,
2761
+ "cacheWrite": 0,
2762
+ "reasoning": 0,
2763
+ "totalTokens": 1694,
2764
+ "cost": {
2765
+ "input": 0.0042125,
2766
+ "output": 0.000135,
2767
+ "cacheRead": 0,
2768
+ "cacheWrite": 0,
2769
+ "total": 0.0043475
2770
+ }
2771
+ },
2772
+ "stopReason": "stop",
2773
+ "timestamp": 0,
2774
+ "responseId": ""
2775
+ }
2776
+ ],
2777
+ "willRetry": false
2778
+ },
2779
+ {
2780
+ "type": "agent_settled"
2781
+ }
2782
+ ]
2783
+ }