@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,1693 @@
1
+ {
2
+ "name": "tool-loop",
3
+ "description": "Two or more assistant messages in one turn — the case where contentIndex restarts and partIds must not collide.",
4
+ "prompt": "First list the files under the data directory, then read the file you find there, then reply with its contents only.",
5
+ "partials": [
6
+ {
7
+ "role": "assistant",
8
+ "content": [
9
+ {
10
+ "type": "thinking",
11
+ "thinking": "",
12
+ "thinkingSignature": ""
13
+ },
14
+ {
15
+ "type": "toolCall",
16
+ "id": "toolcall_0",
17
+ "name": "ls",
18
+ "arguments": {
19
+ "path": "data",
20
+ "limit": 100
21
+ }
22
+ }
23
+ ],
24
+ "api": "openai-responses",
25
+ "provider": "github-copilot",
26
+ "model": "gpt-5.4",
27
+ "usage": {
28
+ "input": 1572,
29
+ "output": 142,
30
+ "cacheRead": 0,
31
+ "cacheWrite": 0,
32
+ "reasoning": 118,
33
+ "totalTokens": 1714,
34
+ "cost": {
35
+ "input": 0.00393,
36
+ "output": 0.00213,
37
+ "cacheRead": 0,
38
+ "cacheWrite": 0,
39
+ "total": 0.00606
40
+ }
41
+ },
42
+ "stopReason": "toolUse",
43
+ "timestamp": 0,
44
+ "responseId": ""
45
+ },
46
+ {
47
+ "role": "assistant",
48
+ "content": [
49
+ {
50
+ "type": "thinking",
51
+ "thinking": "",
52
+ "thinkingSignature": ""
53
+ },
54
+ {
55
+ "type": "toolCall",
56
+ "id": "toolcall_1",
57
+ "name": "read",
58
+ "arguments": {
59
+ "path": "data/values.txt",
60
+ "offset": 1,
61
+ "limit": 2000
62
+ }
63
+ }
64
+ ],
65
+ "api": "openai-responses",
66
+ "provider": "github-copilot",
67
+ "model": "gpt-5.4",
68
+ "usage": {
69
+ "input": 1727,
70
+ "output": 39,
71
+ "cacheRead": 0,
72
+ "cacheWrite": 0,
73
+ "reasoning": 8,
74
+ "totalTokens": 1766,
75
+ "cost": {
76
+ "input": 0.0043175,
77
+ "output": 0.000585,
78
+ "cacheRead": 0,
79
+ "cacheWrite": 0,
80
+ "total": 0.004902500000000001
81
+ }
82
+ },
83
+ "stopReason": "toolUse",
84
+ "timestamp": 0,
85
+ "responseId": ""
86
+ },
87
+ {
88
+ "role": "assistant",
89
+ "content": [
90
+ {
91
+ "type": "text",
92
+ "text": "42",
93
+ "textSignature": ""
94
+ }
95
+ ],
96
+ "api": "openai-responses",
97
+ "provider": "github-copilot",
98
+ "model": "gpt-5.4",
99
+ "usage": {
100
+ "input": 242,
101
+ "output": 5,
102
+ "cacheRead": 1536,
103
+ "cacheWrite": 0,
104
+ "reasoning": 0,
105
+ "totalTokens": 1783,
106
+ "cost": {
107
+ "input": 0.0006050000000000001,
108
+ "output": 0.00007500000000000001,
109
+ "cacheRead": 0.000384,
110
+ "cacheWrite": 0,
111
+ "total": 0.001064
112
+ }
113
+ },
114
+ "stopReason": "stop",
115
+ "timestamp": 0,
116
+ "responseId": ""
117
+ }
118
+ ],
119
+ "turns": [
120
+ [
121
+ {
122
+ "type": "start",
123
+ "partialRef": 0
124
+ },
125
+ {
126
+ "type": "thinking_start",
127
+ "contentIndex": 0,
128
+ "partialRef": 0
129
+ },
130
+ {
131
+ "type": "thinking_end",
132
+ "contentIndex": 0,
133
+ "content": "",
134
+ "partialRef": 0
135
+ },
136
+ {
137
+ "type": "toolcall_start",
138
+ "contentIndex": 1,
139
+ "partialRef": 0
140
+ },
141
+ {
142
+ "type": "toolcall_delta",
143
+ "contentIndex": 1,
144
+ "delta": "{\"",
145
+ "partialRef": 0
146
+ },
147
+ {
148
+ "type": "toolcall_delta",
149
+ "contentIndex": 1,
150
+ "delta": "path",
151
+ "partialRef": 0
152
+ },
153
+ {
154
+ "type": "toolcall_delta",
155
+ "contentIndex": 1,
156
+ "delta": "\":\"",
157
+ "partialRef": 0
158
+ },
159
+ {
160
+ "type": "toolcall_delta",
161
+ "contentIndex": 1,
162
+ "delta": "data",
163
+ "partialRef": 0
164
+ },
165
+ {
166
+ "type": "toolcall_delta",
167
+ "contentIndex": 1,
168
+ "delta": "\",\"",
169
+ "partialRef": 0
170
+ },
171
+ {
172
+ "type": "toolcall_delta",
173
+ "contentIndex": 1,
174
+ "delta": "limit",
175
+ "partialRef": 0
176
+ },
177
+ {
178
+ "type": "toolcall_delta",
179
+ "contentIndex": 1,
180
+ "delta": "\":",
181
+ "partialRef": 0
182
+ },
183
+ {
184
+ "type": "toolcall_delta",
185
+ "contentIndex": 1,
186
+ "delta": "100",
187
+ "partialRef": 0
188
+ },
189
+ {
190
+ "type": "toolcall_delta",
191
+ "contentIndex": 1,
192
+ "delta": "}",
193
+ "partialRef": 0
194
+ },
195
+ {
196
+ "type": "toolcall_end",
197
+ "contentIndex": 1,
198
+ "toolCall": {
199
+ "type": "toolCall",
200
+ "id": "toolcall_0",
201
+ "name": "ls",
202
+ "arguments": {
203
+ "path": "data",
204
+ "limit": 100
205
+ }
206
+ },
207
+ "partialRef": 0
208
+ },
209
+ {
210
+ "type": "done",
211
+ "reason": "toolUse",
212
+ "message": {
213
+ "role": "assistant",
214
+ "content": [
215
+ {
216
+ "type": "thinking",
217
+ "thinking": "",
218
+ "thinkingSignature": ""
219
+ },
220
+ {
221
+ "type": "toolCall",
222
+ "id": "toolcall_0",
223
+ "name": "ls",
224
+ "arguments": {
225
+ "path": "data",
226
+ "limit": 100
227
+ }
228
+ }
229
+ ],
230
+ "api": "openai-responses",
231
+ "provider": "github-copilot",
232
+ "model": "gpt-5.4",
233
+ "usage": {
234
+ "input": 1572,
235
+ "output": 142,
236
+ "cacheRead": 0,
237
+ "cacheWrite": 0,
238
+ "reasoning": 118,
239
+ "totalTokens": 1714,
240
+ "cost": {
241
+ "input": 0.00393,
242
+ "output": 0.00213,
243
+ "cacheRead": 0,
244
+ "cacheWrite": 0,
245
+ "total": 0.00606
246
+ }
247
+ },
248
+ "stopReason": "toolUse",
249
+ "timestamp": 0,
250
+ "responseId": ""
251
+ }
252
+ }
253
+ ],
254
+ [
255
+ {
256
+ "type": "start",
257
+ "partialRef": 1
258
+ },
259
+ {
260
+ "type": "thinking_start",
261
+ "contentIndex": 0,
262
+ "partialRef": 1
263
+ },
264
+ {
265
+ "type": "thinking_end",
266
+ "contentIndex": 0,
267
+ "content": "",
268
+ "partialRef": 1
269
+ },
270
+ {
271
+ "type": "toolcall_start",
272
+ "contentIndex": 1,
273
+ "partialRef": 1
274
+ },
275
+ {
276
+ "type": "toolcall_delta",
277
+ "contentIndex": 1,
278
+ "delta": "{\"",
279
+ "partialRef": 1
280
+ },
281
+ {
282
+ "type": "toolcall_delta",
283
+ "contentIndex": 1,
284
+ "delta": "path",
285
+ "partialRef": 1
286
+ },
287
+ {
288
+ "type": "toolcall_delta",
289
+ "contentIndex": 1,
290
+ "delta": "\":\"",
291
+ "partialRef": 1
292
+ },
293
+ {
294
+ "type": "toolcall_delta",
295
+ "contentIndex": 1,
296
+ "delta": "data",
297
+ "partialRef": 1
298
+ },
299
+ {
300
+ "type": "toolcall_delta",
301
+ "contentIndex": 1,
302
+ "delta": "/",
303
+ "partialRef": 1
304
+ },
305
+ {
306
+ "type": "toolcall_delta",
307
+ "contentIndex": 1,
308
+ "delta": "values",
309
+ "partialRef": 1
310
+ },
311
+ {
312
+ "type": "toolcall_delta",
313
+ "contentIndex": 1,
314
+ "delta": ".txt",
315
+ "partialRef": 1
316
+ },
317
+ {
318
+ "type": "toolcall_delta",
319
+ "contentIndex": 1,
320
+ "delta": "\",\"",
321
+ "partialRef": 1
322
+ },
323
+ {
324
+ "type": "toolcall_delta",
325
+ "contentIndex": 1,
326
+ "delta": "offset",
327
+ "partialRef": 1
328
+ },
329
+ {
330
+ "type": "toolcall_delta",
331
+ "contentIndex": 1,
332
+ "delta": "\":",
333
+ "partialRef": 1
334
+ },
335
+ {
336
+ "type": "toolcall_delta",
337
+ "contentIndex": 1,
338
+ "delta": "1",
339
+ "partialRef": 1
340
+ },
341
+ {
342
+ "type": "toolcall_delta",
343
+ "contentIndex": 1,
344
+ "delta": ",\"",
345
+ "partialRef": 1
346
+ },
347
+ {
348
+ "type": "toolcall_delta",
349
+ "contentIndex": 1,
350
+ "delta": "limit",
351
+ "partialRef": 1
352
+ },
353
+ {
354
+ "type": "toolcall_delta",
355
+ "contentIndex": 1,
356
+ "delta": "\":",
357
+ "partialRef": 1
358
+ },
359
+ {
360
+ "type": "toolcall_delta",
361
+ "contentIndex": 1,
362
+ "delta": "200",
363
+ "partialRef": 1
364
+ },
365
+ {
366
+ "type": "toolcall_delta",
367
+ "contentIndex": 1,
368
+ "delta": "0",
369
+ "partialRef": 1
370
+ },
371
+ {
372
+ "type": "toolcall_delta",
373
+ "contentIndex": 1,
374
+ "delta": "}",
375
+ "partialRef": 1
376
+ },
377
+ {
378
+ "type": "toolcall_end",
379
+ "contentIndex": 1,
380
+ "toolCall": {
381
+ "type": "toolCall",
382
+ "id": "toolcall_1",
383
+ "name": "read",
384
+ "arguments": {
385
+ "path": "data/values.txt",
386
+ "offset": 1,
387
+ "limit": 2000
388
+ }
389
+ },
390
+ "partialRef": 1
391
+ },
392
+ {
393
+ "type": "done",
394
+ "reason": "toolUse",
395
+ "message": {
396
+ "role": "assistant",
397
+ "content": [
398
+ {
399
+ "type": "thinking",
400
+ "thinking": "",
401
+ "thinkingSignature": ""
402
+ },
403
+ {
404
+ "type": "toolCall",
405
+ "id": "toolcall_1",
406
+ "name": "read",
407
+ "arguments": {
408
+ "path": "data/values.txt",
409
+ "offset": 1,
410
+ "limit": 2000
411
+ }
412
+ }
413
+ ],
414
+ "api": "openai-responses",
415
+ "provider": "github-copilot",
416
+ "model": "gpt-5.4",
417
+ "usage": {
418
+ "input": 1727,
419
+ "output": 39,
420
+ "cacheRead": 0,
421
+ "cacheWrite": 0,
422
+ "reasoning": 8,
423
+ "totalTokens": 1766,
424
+ "cost": {
425
+ "input": 0.0043175,
426
+ "output": 0.000585,
427
+ "cacheRead": 0,
428
+ "cacheWrite": 0,
429
+ "total": 0.004902500000000001
430
+ }
431
+ },
432
+ "stopReason": "toolUse",
433
+ "timestamp": 0,
434
+ "responseId": ""
435
+ }
436
+ }
437
+ ],
438
+ [
439
+ {
440
+ "type": "start",
441
+ "partialRef": 2
442
+ },
443
+ {
444
+ "type": "text_start",
445
+ "contentIndex": 0,
446
+ "partialRef": 2
447
+ },
448
+ {
449
+ "type": "text_delta",
450
+ "contentIndex": 0,
451
+ "delta": "42",
452
+ "partialRef": 2
453
+ },
454
+ {
455
+ "type": "text_end",
456
+ "contentIndex": 0,
457
+ "content": "42",
458
+ "partialRef": 2
459
+ },
460
+ {
461
+ "type": "done",
462
+ "reason": "stop",
463
+ "message": {
464
+ "role": "assistant",
465
+ "content": [
466
+ {
467
+ "type": "text",
468
+ "text": "42",
469
+ "textSignature": ""
470
+ }
471
+ ],
472
+ "api": "openai-responses",
473
+ "provider": "github-copilot",
474
+ "model": "gpt-5.4",
475
+ "usage": {
476
+ "input": 242,
477
+ "output": 5,
478
+ "cacheRead": 1536,
479
+ "cacheWrite": 0,
480
+ "reasoning": 0,
481
+ "totalTokens": 1783,
482
+ "cost": {
483
+ "input": 0.0006050000000000001,
484
+ "output": 0.00007500000000000001,
485
+ "cacheRead": 0.000384,
486
+ "cacheWrite": 0,
487
+ "total": 0.001064
488
+ }
489
+ },
490
+ "stopReason": "stop",
491
+ "timestamp": 0,
492
+ "responseId": ""
493
+ }
494
+ }
495
+ ]
496
+ ],
497
+ "events": [
498
+ {
499
+ "type": "agent_start"
500
+ },
501
+ {
502
+ "type": "turn_start"
503
+ },
504
+ {
505
+ "type": "message_start",
506
+ "message": {
507
+ "role": "user",
508
+ "content": [
509
+ {
510
+ "type": "text",
511
+ "text": "First list the files under the data directory, then read the file you find there, then reply with its contents only."
512
+ }
513
+ ],
514
+ "timestamp": 0
515
+ }
516
+ },
517
+ {
518
+ "type": "message_end",
519
+ "message": {
520
+ "role": "user",
521
+ "content": [
522
+ {
523
+ "type": "text",
524
+ "text": "First list the files under the data directory, then read the file you find there, then reply with its contents only."
525
+ }
526
+ ],
527
+ "timestamp": 0
528
+ }
529
+ },
530
+ {
531
+ "type": "message_start",
532
+ "message": {
533
+ "role": "assistant",
534
+ "content": [
535
+ {
536
+ "type": "thinking",
537
+ "thinking": "",
538
+ "thinkingSignature": ""
539
+ },
540
+ {
541
+ "type": "toolCall",
542
+ "id": "toolcall_0",
543
+ "name": "ls",
544
+ "arguments": {
545
+ "path": "data",
546
+ "limit": 100
547
+ }
548
+ }
549
+ ],
550
+ "api": "openai-responses",
551
+ "provider": "github-copilot",
552
+ "model": "gpt-5.4",
553
+ "usage": {
554
+ "input": 0,
555
+ "output": 0,
556
+ "cacheRead": 0,
557
+ "cacheWrite": 0,
558
+ "totalTokens": 0,
559
+ "cost": {
560
+ "input": 0,
561
+ "output": 0,
562
+ "cacheRead": 0,
563
+ "cacheWrite": 0,
564
+ "total": 0
565
+ }
566
+ },
567
+ "stopReason": "stop",
568
+ "timestamp": 0
569
+ }
570
+ },
571
+ {
572
+ "type": "message_update",
573
+ "assistantMessageEvent": {
574
+ "type": "thinking_start",
575
+ "contentIndex": 0
576
+ },
577
+ "message": {
578
+ "role": "assistant"
579
+ }
580
+ },
581
+ {
582
+ "type": "message_update",
583
+ "assistantMessageEvent": {
584
+ "type": "thinking_end",
585
+ "contentIndex": 0,
586
+ "content": ""
587
+ },
588
+ "message": {
589
+ "role": "assistant"
590
+ }
591
+ },
592
+ {
593
+ "type": "message_update",
594
+ "assistantMessageEvent": {
595
+ "type": "toolcall_start",
596
+ "contentIndex": 1,
597
+ "partial": {
598
+ "role": "assistant",
599
+ "content": [
600
+ {
601
+ "type": "thinking",
602
+ "thinking": "",
603
+ "thinkingSignature": ""
604
+ },
605
+ {
606
+ "type": "toolCall",
607
+ "id": "toolcall_0",
608
+ "name": "ls",
609
+ "arguments": {
610
+ "path": "data",
611
+ "limit": 100
612
+ }
613
+ }
614
+ ],
615
+ "api": "openai-responses",
616
+ "provider": "github-copilot",
617
+ "model": "gpt-5.4",
618
+ "usage": {
619
+ "input": 1572,
620
+ "output": 142,
621
+ "cacheRead": 0,
622
+ "cacheWrite": 0,
623
+ "reasoning": 118,
624
+ "totalTokens": 1714,
625
+ "cost": {
626
+ "input": 0.00393,
627
+ "output": 0.00213,
628
+ "cacheRead": 0,
629
+ "cacheWrite": 0,
630
+ "total": 0.00606
631
+ }
632
+ },
633
+ "stopReason": "toolUse",
634
+ "timestamp": 0,
635
+ "responseId": ""
636
+ }
637
+ },
638
+ "message": {
639
+ "role": "assistant"
640
+ }
641
+ },
642
+ {
643
+ "type": "message_update",
644
+ "assistantMessageEvent": {
645
+ "type": "toolcall_delta",
646
+ "contentIndex": 1,
647
+ "delta": "{\""
648
+ },
649
+ "message": {
650
+ "role": "assistant"
651
+ }
652
+ },
653
+ {
654
+ "type": "message_update",
655
+ "assistantMessageEvent": {
656
+ "type": "toolcall_delta",
657
+ "contentIndex": 1,
658
+ "delta": "path"
659
+ },
660
+ "message": {
661
+ "role": "assistant"
662
+ }
663
+ },
664
+ {
665
+ "type": "message_update",
666
+ "assistantMessageEvent": {
667
+ "type": "toolcall_delta",
668
+ "contentIndex": 1,
669
+ "delta": "\":\""
670
+ },
671
+ "message": {
672
+ "role": "assistant"
673
+ }
674
+ },
675
+ {
676
+ "type": "message_update",
677
+ "assistantMessageEvent": {
678
+ "type": "toolcall_delta",
679
+ "contentIndex": 1,
680
+ "delta": "data"
681
+ },
682
+ "message": {
683
+ "role": "assistant"
684
+ }
685
+ },
686
+ {
687
+ "type": "message_update",
688
+ "assistantMessageEvent": {
689
+ "type": "toolcall_delta",
690
+ "contentIndex": 1,
691
+ "delta": "\",\""
692
+ },
693
+ "message": {
694
+ "role": "assistant"
695
+ }
696
+ },
697
+ {
698
+ "type": "message_update",
699
+ "assistantMessageEvent": {
700
+ "type": "toolcall_delta",
701
+ "contentIndex": 1,
702
+ "delta": "limit"
703
+ },
704
+ "message": {
705
+ "role": "assistant"
706
+ }
707
+ },
708
+ {
709
+ "type": "message_update",
710
+ "assistantMessageEvent": {
711
+ "type": "toolcall_delta",
712
+ "contentIndex": 1,
713
+ "delta": "\":"
714
+ },
715
+ "message": {
716
+ "role": "assistant"
717
+ }
718
+ },
719
+ {
720
+ "type": "message_update",
721
+ "assistantMessageEvent": {
722
+ "type": "toolcall_delta",
723
+ "contentIndex": 1,
724
+ "delta": "100"
725
+ },
726
+ "message": {
727
+ "role": "assistant"
728
+ }
729
+ },
730
+ {
731
+ "type": "message_update",
732
+ "assistantMessageEvent": {
733
+ "type": "toolcall_delta",
734
+ "contentIndex": 1,
735
+ "delta": "}"
736
+ },
737
+ "message": {
738
+ "role": "assistant"
739
+ }
740
+ },
741
+ {
742
+ "type": "message_update",
743
+ "assistantMessageEvent": {
744
+ "type": "toolcall_end",
745
+ "contentIndex": 1,
746
+ "toolCall": {
747
+ "type": "toolCall",
748
+ "id": "toolcall_0",
749
+ "name": "ls",
750
+ "arguments": {
751
+ "path": "data",
752
+ "limit": 100
753
+ }
754
+ }
755
+ },
756
+ "message": {
757
+ "role": "assistant"
758
+ }
759
+ },
760
+ {
761
+ "type": "message_end",
762
+ "message": {
763
+ "role": "assistant",
764
+ "content": [
765
+ {
766
+ "type": "thinking",
767
+ "thinking": "",
768
+ "thinkingSignature": ""
769
+ },
770
+ {
771
+ "type": "toolCall",
772
+ "id": "toolcall_0",
773
+ "name": "ls",
774
+ "arguments": {
775
+ "path": "data",
776
+ "limit": 100
777
+ }
778
+ }
779
+ ],
780
+ "api": "openai-responses",
781
+ "provider": "github-copilot",
782
+ "model": "gpt-5.4",
783
+ "usage": {
784
+ "input": 1572,
785
+ "output": 142,
786
+ "cacheRead": 0,
787
+ "cacheWrite": 0,
788
+ "reasoning": 118,
789
+ "totalTokens": 1714,
790
+ "cost": {
791
+ "input": 0.00393,
792
+ "output": 0.00213,
793
+ "cacheRead": 0,
794
+ "cacheWrite": 0,
795
+ "total": 0.00606
796
+ }
797
+ },
798
+ "stopReason": "toolUse",
799
+ "timestamp": 0,
800
+ "responseId": ""
801
+ }
802
+ },
803
+ {
804
+ "type": "tool_execution_start",
805
+ "toolCallId": "toolcall_0",
806
+ "toolName": "ls",
807
+ "args": {
808
+ "path": "data",
809
+ "limit": 100
810
+ }
811
+ },
812
+ {
813
+ "type": "tool_execution_end",
814
+ "toolCallId": "toolcall_0",
815
+ "toolName": "ls",
816
+ "result": {
817
+ "content": [
818
+ {
819
+ "type": "text",
820
+ "text": "values.txt"
821
+ }
822
+ ]
823
+ },
824
+ "isError": false
825
+ },
826
+ {
827
+ "type": "message_start",
828
+ "message": {
829
+ "role": "toolResult",
830
+ "toolCallId": "toolcall_0",
831
+ "toolName": "ls",
832
+ "content": [
833
+ {
834
+ "type": "text",
835
+ "text": "values.txt"
836
+ }
837
+ ],
838
+ "isError": false,
839
+ "timestamp": 0
840
+ }
841
+ },
842
+ {
843
+ "type": "message_end",
844
+ "message": {
845
+ "role": "toolResult",
846
+ "toolCallId": "toolcall_0",
847
+ "toolName": "ls",
848
+ "content": [
849
+ {
850
+ "type": "text",
851
+ "text": "values.txt"
852
+ }
853
+ ],
854
+ "isError": false,
855
+ "timestamp": 0
856
+ }
857
+ },
858
+ {
859
+ "type": "turn_end",
860
+ "message": {
861
+ "role": "assistant",
862
+ "content": [
863
+ {
864
+ "type": "thinking",
865
+ "thinking": "",
866
+ "thinkingSignature": ""
867
+ },
868
+ {
869
+ "type": "toolCall",
870
+ "id": "toolcall_0",
871
+ "name": "ls",
872
+ "arguments": {
873
+ "path": "data",
874
+ "limit": 100
875
+ }
876
+ }
877
+ ],
878
+ "api": "openai-responses",
879
+ "provider": "github-copilot",
880
+ "model": "gpt-5.4",
881
+ "usage": {
882
+ "input": 1572,
883
+ "output": 142,
884
+ "cacheRead": 0,
885
+ "cacheWrite": 0,
886
+ "reasoning": 118,
887
+ "totalTokens": 1714,
888
+ "cost": {
889
+ "input": 0.00393,
890
+ "output": 0.00213,
891
+ "cacheRead": 0,
892
+ "cacheWrite": 0,
893
+ "total": 0.00606
894
+ }
895
+ },
896
+ "stopReason": "toolUse",
897
+ "timestamp": 0,
898
+ "responseId": ""
899
+ },
900
+ "toolResults": [
901
+ {
902
+ "role": "toolResult",
903
+ "toolCallId": "toolcall_0",
904
+ "toolName": "ls",
905
+ "content": [
906
+ {
907
+ "type": "text",
908
+ "text": "values.txt"
909
+ }
910
+ ],
911
+ "isError": false,
912
+ "timestamp": 0
913
+ }
914
+ ]
915
+ },
916
+ {
917
+ "type": "turn_start"
918
+ },
919
+ {
920
+ "type": "message_start",
921
+ "message": {
922
+ "role": "assistant",
923
+ "content": [
924
+ {
925
+ "type": "thinking",
926
+ "thinking": "",
927
+ "thinkingSignature": ""
928
+ },
929
+ {
930
+ "type": "toolCall",
931
+ "id": "toolcall_1",
932
+ "name": "read",
933
+ "arguments": {
934
+ "path": "data/values.txt",
935
+ "offset": 1,
936
+ "limit": 2000
937
+ }
938
+ }
939
+ ],
940
+ "api": "openai-responses",
941
+ "provider": "github-copilot",
942
+ "model": "gpt-5.4",
943
+ "usage": {
944
+ "input": 0,
945
+ "output": 0,
946
+ "cacheRead": 0,
947
+ "cacheWrite": 0,
948
+ "totalTokens": 0,
949
+ "cost": {
950
+ "input": 0,
951
+ "output": 0,
952
+ "cacheRead": 0,
953
+ "cacheWrite": 0,
954
+ "total": 0
955
+ }
956
+ },
957
+ "stopReason": "stop",
958
+ "timestamp": 0
959
+ }
960
+ },
961
+ {
962
+ "type": "message_update",
963
+ "assistantMessageEvent": {
964
+ "type": "thinking_start",
965
+ "contentIndex": 0
966
+ },
967
+ "message": {
968
+ "role": "assistant"
969
+ }
970
+ },
971
+ {
972
+ "type": "message_update",
973
+ "assistantMessageEvent": {
974
+ "type": "thinking_end",
975
+ "contentIndex": 0,
976
+ "content": ""
977
+ },
978
+ "message": {
979
+ "role": "assistant"
980
+ }
981
+ },
982
+ {
983
+ "type": "message_update",
984
+ "assistantMessageEvent": {
985
+ "type": "toolcall_start",
986
+ "contentIndex": 1,
987
+ "partial": {
988
+ "role": "assistant",
989
+ "content": [
990
+ {
991
+ "type": "thinking",
992
+ "thinking": "",
993
+ "thinkingSignature": ""
994
+ },
995
+ {
996
+ "type": "toolCall",
997
+ "id": "toolcall_1",
998
+ "name": "read",
999
+ "arguments": {
1000
+ "path": "data/values.txt",
1001
+ "offset": 1,
1002
+ "limit": 2000
1003
+ }
1004
+ }
1005
+ ],
1006
+ "api": "openai-responses",
1007
+ "provider": "github-copilot",
1008
+ "model": "gpt-5.4",
1009
+ "usage": {
1010
+ "input": 1727,
1011
+ "output": 39,
1012
+ "cacheRead": 0,
1013
+ "cacheWrite": 0,
1014
+ "reasoning": 8,
1015
+ "totalTokens": 1766,
1016
+ "cost": {
1017
+ "input": 0.0043175,
1018
+ "output": 0.000585,
1019
+ "cacheRead": 0,
1020
+ "cacheWrite": 0,
1021
+ "total": 0.004902500000000001
1022
+ }
1023
+ },
1024
+ "stopReason": "toolUse",
1025
+ "timestamp": 0,
1026
+ "responseId": ""
1027
+ }
1028
+ },
1029
+ "message": {
1030
+ "role": "assistant"
1031
+ }
1032
+ },
1033
+ {
1034
+ "type": "message_update",
1035
+ "assistantMessageEvent": {
1036
+ "type": "toolcall_delta",
1037
+ "contentIndex": 1,
1038
+ "delta": "{\""
1039
+ },
1040
+ "message": {
1041
+ "role": "assistant"
1042
+ }
1043
+ },
1044
+ {
1045
+ "type": "message_update",
1046
+ "assistantMessageEvent": {
1047
+ "type": "toolcall_delta",
1048
+ "contentIndex": 1,
1049
+ "delta": "path"
1050
+ },
1051
+ "message": {
1052
+ "role": "assistant"
1053
+ }
1054
+ },
1055
+ {
1056
+ "type": "message_update",
1057
+ "assistantMessageEvent": {
1058
+ "type": "toolcall_delta",
1059
+ "contentIndex": 1,
1060
+ "delta": "\":\""
1061
+ },
1062
+ "message": {
1063
+ "role": "assistant"
1064
+ }
1065
+ },
1066
+ {
1067
+ "type": "message_update",
1068
+ "assistantMessageEvent": {
1069
+ "type": "toolcall_delta",
1070
+ "contentIndex": 1,
1071
+ "delta": "data"
1072
+ },
1073
+ "message": {
1074
+ "role": "assistant"
1075
+ }
1076
+ },
1077
+ {
1078
+ "type": "message_update",
1079
+ "assistantMessageEvent": {
1080
+ "type": "toolcall_delta",
1081
+ "contentIndex": 1,
1082
+ "delta": "/"
1083
+ },
1084
+ "message": {
1085
+ "role": "assistant"
1086
+ }
1087
+ },
1088
+ {
1089
+ "type": "message_update",
1090
+ "assistantMessageEvent": {
1091
+ "type": "toolcall_delta",
1092
+ "contentIndex": 1,
1093
+ "delta": "values"
1094
+ },
1095
+ "message": {
1096
+ "role": "assistant"
1097
+ }
1098
+ },
1099
+ {
1100
+ "type": "message_update",
1101
+ "assistantMessageEvent": {
1102
+ "type": "toolcall_delta",
1103
+ "contentIndex": 1,
1104
+ "delta": ".txt"
1105
+ },
1106
+ "message": {
1107
+ "role": "assistant"
1108
+ }
1109
+ },
1110
+ {
1111
+ "type": "message_update",
1112
+ "assistantMessageEvent": {
1113
+ "type": "toolcall_delta",
1114
+ "contentIndex": 1,
1115
+ "delta": "\",\""
1116
+ },
1117
+ "message": {
1118
+ "role": "assistant"
1119
+ }
1120
+ },
1121
+ {
1122
+ "type": "message_update",
1123
+ "assistantMessageEvent": {
1124
+ "type": "toolcall_delta",
1125
+ "contentIndex": 1,
1126
+ "delta": "offset"
1127
+ },
1128
+ "message": {
1129
+ "role": "assistant"
1130
+ }
1131
+ },
1132
+ {
1133
+ "type": "message_update",
1134
+ "assistantMessageEvent": {
1135
+ "type": "toolcall_delta",
1136
+ "contentIndex": 1,
1137
+ "delta": "\":"
1138
+ },
1139
+ "message": {
1140
+ "role": "assistant"
1141
+ }
1142
+ },
1143
+ {
1144
+ "type": "message_update",
1145
+ "assistantMessageEvent": {
1146
+ "type": "toolcall_delta",
1147
+ "contentIndex": 1,
1148
+ "delta": "1"
1149
+ },
1150
+ "message": {
1151
+ "role": "assistant"
1152
+ }
1153
+ },
1154
+ {
1155
+ "type": "message_update",
1156
+ "assistantMessageEvent": {
1157
+ "type": "toolcall_delta",
1158
+ "contentIndex": 1,
1159
+ "delta": ",\""
1160
+ },
1161
+ "message": {
1162
+ "role": "assistant"
1163
+ }
1164
+ },
1165
+ {
1166
+ "type": "message_update",
1167
+ "assistantMessageEvent": {
1168
+ "type": "toolcall_delta",
1169
+ "contentIndex": 1,
1170
+ "delta": "limit"
1171
+ },
1172
+ "message": {
1173
+ "role": "assistant"
1174
+ }
1175
+ },
1176
+ {
1177
+ "type": "message_update",
1178
+ "assistantMessageEvent": {
1179
+ "type": "toolcall_delta",
1180
+ "contentIndex": 1,
1181
+ "delta": "\":"
1182
+ },
1183
+ "message": {
1184
+ "role": "assistant"
1185
+ }
1186
+ },
1187
+ {
1188
+ "type": "message_update",
1189
+ "assistantMessageEvent": {
1190
+ "type": "toolcall_delta",
1191
+ "contentIndex": 1,
1192
+ "delta": "200"
1193
+ },
1194
+ "message": {
1195
+ "role": "assistant"
1196
+ }
1197
+ },
1198
+ {
1199
+ "type": "message_update",
1200
+ "assistantMessageEvent": {
1201
+ "type": "toolcall_delta",
1202
+ "contentIndex": 1,
1203
+ "delta": "0"
1204
+ },
1205
+ "message": {
1206
+ "role": "assistant"
1207
+ }
1208
+ },
1209
+ {
1210
+ "type": "message_update",
1211
+ "assistantMessageEvent": {
1212
+ "type": "toolcall_delta",
1213
+ "contentIndex": 1,
1214
+ "delta": "}"
1215
+ },
1216
+ "message": {
1217
+ "role": "assistant"
1218
+ }
1219
+ },
1220
+ {
1221
+ "type": "message_update",
1222
+ "assistantMessageEvent": {
1223
+ "type": "toolcall_end",
1224
+ "contentIndex": 1,
1225
+ "toolCall": {
1226
+ "type": "toolCall",
1227
+ "id": "toolcall_1",
1228
+ "name": "read",
1229
+ "arguments": {
1230
+ "path": "data/values.txt",
1231
+ "offset": 1,
1232
+ "limit": 2000
1233
+ }
1234
+ }
1235
+ },
1236
+ "message": {
1237
+ "role": "assistant"
1238
+ }
1239
+ },
1240
+ {
1241
+ "type": "message_end",
1242
+ "message": {
1243
+ "role": "assistant",
1244
+ "content": [
1245
+ {
1246
+ "type": "thinking",
1247
+ "thinking": "",
1248
+ "thinkingSignature": ""
1249
+ },
1250
+ {
1251
+ "type": "toolCall",
1252
+ "id": "toolcall_1",
1253
+ "name": "read",
1254
+ "arguments": {
1255
+ "path": "data/values.txt",
1256
+ "offset": 1,
1257
+ "limit": 2000
1258
+ }
1259
+ }
1260
+ ],
1261
+ "api": "openai-responses",
1262
+ "provider": "github-copilot",
1263
+ "model": "gpt-5.4",
1264
+ "usage": {
1265
+ "input": 1727,
1266
+ "output": 39,
1267
+ "cacheRead": 0,
1268
+ "cacheWrite": 0,
1269
+ "reasoning": 8,
1270
+ "totalTokens": 1766,
1271
+ "cost": {
1272
+ "input": 0.0043175,
1273
+ "output": 0.000585,
1274
+ "cacheRead": 0,
1275
+ "cacheWrite": 0,
1276
+ "total": 0.004902500000000001
1277
+ }
1278
+ },
1279
+ "stopReason": "toolUse",
1280
+ "timestamp": 0,
1281
+ "responseId": ""
1282
+ }
1283
+ },
1284
+ {
1285
+ "type": "tool_execution_start",
1286
+ "toolCallId": "toolcall_1",
1287
+ "toolName": "read",
1288
+ "args": {
1289
+ "path": "data/values.txt",
1290
+ "offset": 1,
1291
+ "limit": 2000
1292
+ }
1293
+ },
1294
+ {
1295
+ "type": "tool_execution_end",
1296
+ "toolCallId": "toolcall_1",
1297
+ "toolName": "read",
1298
+ "result": {
1299
+ "content": [
1300
+ {
1301
+ "type": "text",
1302
+ "text": "42\n"
1303
+ }
1304
+ ]
1305
+ },
1306
+ "isError": false
1307
+ },
1308
+ {
1309
+ "type": "message_start",
1310
+ "message": {
1311
+ "role": "toolResult",
1312
+ "toolCallId": "toolcall_1",
1313
+ "toolName": "read",
1314
+ "content": [
1315
+ {
1316
+ "type": "text",
1317
+ "text": "42\n"
1318
+ }
1319
+ ],
1320
+ "isError": false,
1321
+ "timestamp": 0
1322
+ }
1323
+ },
1324
+ {
1325
+ "type": "message_end",
1326
+ "message": {
1327
+ "role": "toolResult",
1328
+ "toolCallId": "toolcall_1",
1329
+ "toolName": "read",
1330
+ "content": [
1331
+ {
1332
+ "type": "text",
1333
+ "text": "42\n"
1334
+ }
1335
+ ],
1336
+ "isError": false,
1337
+ "timestamp": 0
1338
+ }
1339
+ },
1340
+ {
1341
+ "type": "turn_end",
1342
+ "message": {
1343
+ "role": "assistant",
1344
+ "content": [
1345
+ {
1346
+ "type": "thinking",
1347
+ "thinking": "",
1348
+ "thinkingSignature": ""
1349
+ },
1350
+ {
1351
+ "type": "toolCall",
1352
+ "id": "toolcall_1",
1353
+ "name": "read",
1354
+ "arguments": {
1355
+ "path": "data/values.txt",
1356
+ "offset": 1,
1357
+ "limit": 2000
1358
+ }
1359
+ }
1360
+ ],
1361
+ "api": "openai-responses",
1362
+ "provider": "github-copilot",
1363
+ "model": "gpt-5.4",
1364
+ "usage": {
1365
+ "input": 1727,
1366
+ "output": 39,
1367
+ "cacheRead": 0,
1368
+ "cacheWrite": 0,
1369
+ "reasoning": 8,
1370
+ "totalTokens": 1766,
1371
+ "cost": {
1372
+ "input": 0.0043175,
1373
+ "output": 0.000585,
1374
+ "cacheRead": 0,
1375
+ "cacheWrite": 0,
1376
+ "total": 0.004902500000000001
1377
+ }
1378
+ },
1379
+ "stopReason": "toolUse",
1380
+ "timestamp": 0,
1381
+ "responseId": ""
1382
+ },
1383
+ "toolResults": [
1384
+ {
1385
+ "role": "toolResult",
1386
+ "toolCallId": "toolcall_1",
1387
+ "toolName": "read",
1388
+ "content": [
1389
+ {
1390
+ "type": "text",
1391
+ "text": "42\n"
1392
+ }
1393
+ ],
1394
+ "isError": false,
1395
+ "timestamp": 0
1396
+ }
1397
+ ]
1398
+ },
1399
+ {
1400
+ "type": "turn_start"
1401
+ },
1402
+ {
1403
+ "type": "message_start",
1404
+ "message": {
1405
+ "role": "assistant",
1406
+ "content": [
1407
+ {
1408
+ "type": "text",
1409
+ "text": "42",
1410
+ "textSignature": ""
1411
+ }
1412
+ ],
1413
+ "api": "openai-responses",
1414
+ "provider": "github-copilot",
1415
+ "model": "gpt-5.4",
1416
+ "usage": {
1417
+ "input": 0,
1418
+ "output": 0,
1419
+ "cacheRead": 0,
1420
+ "cacheWrite": 0,
1421
+ "totalTokens": 0,
1422
+ "cost": {
1423
+ "input": 0,
1424
+ "output": 0,
1425
+ "cacheRead": 0,
1426
+ "cacheWrite": 0,
1427
+ "total": 0
1428
+ }
1429
+ },
1430
+ "stopReason": "stop",
1431
+ "timestamp": 0
1432
+ }
1433
+ },
1434
+ {
1435
+ "type": "message_update",
1436
+ "assistantMessageEvent": {
1437
+ "type": "text_start",
1438
+ "contentIndex": 0
1439
+ },
1440
+ "message": {
1441
+ "role": "assistant"
1442
+ }
1443
+ },
1444
+ {
1445
+ "type": "message_update",
1446
+ "assistantMessageEvent": {
1447
+ "type": "text_delta",
1448
+ "contentIndex": 0,
1449
+ "delta": "42"
1450
+ },
1451
+ "message": {
1452
+ "role": "assistant"
1453
+ }
1454
+ },
1455
+ {
1456
+ "type": "message_update",
1457
+ "assistantMessageEvent": {
1458
+ "type": "text_end",
1459
+ "contentIndex": 0,
1460
+ "content": "42"
1461
+ },
1462
+ "message": {
1463
+ "role": "assistant"
1464
+ }
1465
+ },
1466
+ {
1467
+ "type": "message_end",
1468
+ "message": {
1469
+ "role": "assistant",
1470
+ "content": [
1471
+ {
1472
+ "type": "text",
1473
+ "text": "42",
1474
+ "textSignature": ""
1475
+ }
1476
+ ],
1477
+ "api": "openai-responses",
1478
+ "provider": "github-copilot",
1479
+ "model": "gpt-5.4",
1480
+ "usage": {
1481
+ "input": 242,
1482
+ "output": 5,
1483
+ "cacheRead": 1536,
1484
+ "cacheWrite": 0,
1485
+ "reasoning": 0,
1486
+ "totalTokens": 1783,
1487
+ "cost": {
1488
+ "input": 0.0006050000000000001,
1489
+ "output": 0.00007500000000000001,
1490
+ "cacheRead": 0.000384,
1491
+ "cacheWrite": 0,
1492
+ "total": 0.001064
1493
+ }
1494
+ },
1495
+ "stopReason": "stop",
1496
+ "timestamp": 0,
1497
+ "responseId": ""
1498
+ }
1499
+ },
1500
+ {
1501
+ "type": "turn_end",
1502
+ "message": {
1503
+ "role": "assistant",
1504
+ "content": [
1505
+ {
1506
+ "type": "text",
1507
+ "text": "42",
1508
+ "textSignature": ""
1509
+ }
1510
+ ],
1511
+ "api": "openai-responses",
1512
+ "provider": "github-copilot",
1513
+ "model": "gpt-5.4",
1514
+ "usage": {
1515
+ "input": 242,
1516
+ "output": 5,
1517
+ "cacheRead": 1536,
1518
+ "cacheWrite": 0,
1519
+ "reasoning": 0,
1520
+ "totalTokens": 1783,
1521
+ "cost": {
1522
+ "input": 0.0006050000000000001,
1523
+ "output": 0.00007500000000000001,
1524
+ "cacheRead": 0.000384,
1525
+ "cacheWrite": 0,
1526
+ "total": 0.001064
1527
+ }
1528
+ },
1529
+ "stopReason": "stop",
1530
+ "timestamp": 0,
1531
+ "responseId": ""
1532
+ },
1533
+ "toolResults": []
1534
+ },
1535
+ {
1536
+ "type": "agent_end",
1537
+ "messages": [
1538
+ {
1539
+ "role": "user",
1540
+ "content": [
1541
+ {
1542
+ "type": "text",
1543
+ "text": "First list the files under the data directory, then read the file you find there, then reply with its contents only."
1544
+ }
1545
+ ],
1546
+ "timestamp": 0
1547
+ },
1548
+ {
1549
+ "role": "assistant",
1550
+ "content": [
1551
+ {
1552
+ "type": "thinking",
1553
+ "thinking": "",
1554
+ "thinkingSignature": ""
1555
+ },
1556
+ {
1557
+ "type": "toolCall",
1558
+ "id": "toolcall_0",
1559
+ "name": "ls",
1560
+ "arguments": {
1561
+ "path": "data",
1562
+ "limit": 100
1563
+ }
1564
+ }
1565
+ ],
1566
+ "api": "openai-responses",
1567
+ "provider": "github-copilot",
1568
+ "model": "gpt-5.4",
1569
+ "usage": {
1570
+ "input": 1572,
1571
+ "output": 142,
1572
+ "cacheRead": 0,
1573
+ "cacheWrite": 0,
1574
+ "reasoning": 118,
1575
+ "totalTokens": 1714,
1576
+ "cost": {
1577
+ "input": 0.00393,
1578
+ "output": 0.00213,
1579
+ "cacheRead": 0,
1580
+ "cacheWrite": 0,
1581
+ "total": 0.00606
1582
+ }
1583
+ },
1584
+ "stopReason": "toolUse",
1585
+ "timestamp": 0,
1586
+ "responseId": ""
1587
+ },
1588
+ {
1589
+ "role": "toolResult",
1590
+ "toolCallId": "toolcall_0",
1591
+ "toolName": "ls",
1592
+ "content": [
1593
+ {
1594
+ "type": "text",
1595
+ "text": "values.txt"
1596
+ }
1597
+ ],
1598
+ "isError": false,
1599
+ "timestamp": 0
1600
+ },
1601
+ {
1602
+ "role": "assistant",
1603
+ "content": [
1604
+ {
1605
+ "type": "thinking",
1606
+ "thinking": "",
1607
+ "thinkingSignature": ""
1608
+ },
1609
+ {
1610
+ "type": "toolCall",
1611
+ "id": "toolcall_1",
1612
+ "name": "read",
1613
+ "arguments": {
1614
+ "path": "data/values.txt",
1615
+ "offset": 1,
1616
+ "limit": 2000
1617
+ }
1618
+ }
1619
+ ],
1620
+ "api": "openai-responses",
1621
+ "provider": "github-copilot",
1622
+ "model": "gpt-5.4",
1623
+ "usage": {
1624
+ "input": 1727,
1625
+ "output": 39,
1626
+ "cacheRead": 0,
1627
+ "cacheWrite": 0,
1628
+ "reasoning": 8,
1629
+ "totalTokens": 1766,
1630
+ "cost": {
1631
+ "input": 0.0043175,
1632
+ "output": 0.000585,
1633
+ "cacheRead": 0,
1634
+ "cacheWrite": 0,
1635
+ "total": 0.004902500000000001
1636
+ }
1637
+ },
1638
+ "stopReason": "toolUse",
1639
+ "timestamp": 0,
1640
+ "responseId": ""
1641
+ },
1642
+ {
1643
+ "role": "toolResult",
1644
+ "toolCallId": "toolcall_1",
1645
+ "toolName": "read",
1646
+ "content": [
1647
+ {
1648
+ "type": "text",
1649
+ "text": "42\n"
1650
+ }
1651
+ ],
1652
+ "isError": false,
1653
+ "timestamp": 0
1654
+ },
1655
+ {
1656
+ "role": "assistant",
1657
+ "content": [
1658
+ {
1659
+ "type": "text",
1660
+ "text": "42",
1661
+ "textSignature": ""
1662
+ }
1663
+ ],
1664
+ "api": "openai-responses",
1665
+ "provider": "github-copilot",
1666
+ "model": "gpt-5.4",
1667
+ "usage": {
1668
+ "input": 242,
1669
+ "output": 5,
1670
+ "cacheRead": 1536,
1671
+ "cacheWrite": 0,
1672
+ "reasoning": 0,
1673
+ "totalTokens": 1783,
1674
+ "cost": {
1675
+ "input": 0.0006050000000000001,
1676
+ "output": 0.00007500000000000001,
1677
+ "cacheRead": 0.000384,
1678
+ "cacheWrite": 0,
1679
+ "total": 0.001064
1680
+ }
1681
+ },
1682
+ "stopReason": "stop",
1683
+ "timestamp": 0,
1684
+ "responseId": ""
1685
+ }
1686
+ ],
1687
+ "willRetry": false
1688
+ },
1689
+ {
1690
+ "type": "agent_settled"
1691
+ }
1692
+ ]
1693
+ }