@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,1271 @@
1
+ {
2
+ "name": "tool-write",
3
+ "description": "A `write` call — a whole new file rather than an edit to one.",
4
+ "prompt": "Create a file called haiku.txt containing exactly three short lines. Then reply DONE.",
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": "write",
18
+ "arguments": {
19
+ "path": "haiku.txt",
20
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
21
+ }
22
+ }
23
+ ],
24
+ "api": "openai-responses",
25
+ "provider": "github-copilot",
26
+ "model": "gpt-5.4",
27
+ "usage": {
28
+ "input": 1565,
29
+ "output": 139,
30
+ "cacheRead": 0,
31
+ "cacheWrite": 0,
32
+ "reasoning": 96,
33
+ "totalTokens": 1704,
34
+ "cost": {
35
+ "input": 0.0039125,
36
+ "output": 0.002085,
37
+ "cacheRead": 0,
38
+ "cacheWrite": 0,
39
+ "total": 0.0059975
40
+ }
41
+ },
42
+ "stopReason": "toolUse",
43
+ "timestamp": 0,
44
+ "responseId": ""
45
+ },
46
+ {
47
+ "role": "assistant",
48
+ "content": [
49
+ {
50
+ "type": "text",
51
+ "text": "DONE",
52
+ "textSignature": ""
53
+ }
54
+ ],
55
+ "api": "openai-responses",
56
+ "provider": "github-copilot",
57
+ "model": "gpt-5.4",
58
+ "usage": {
59
+ "input": 1723,
60
+ "output": 5,
61
+ "cacheRead": 0,
62
+ "cacheWrite": 0,
63
+ "reasoning": 0,
64
+ "totalTokens": 1728,
65
+ "cost": {
66
+ "input": 0.0043075000000000006,
67
+ "output": 0.00007500000000000001,
68
+ "cacheRead": 0,
69
+ "cacheWrite": 0,
70
+ "total": 0.004382500000000001
71
+ }
72
+ },
73
+ "stopReason": "stop",
74
+ "timestamp": 0,
75
+ "responseId": ""
76
+ }
77
+ ],
78
+ "turns": [
79
+ [
80
+ {
81
+ "type": "start",
82
+ "partialRef": 0
83
+ },
84
+ {
85
+ "type": "thinking_start",
86
+ "contentIndex": 0,
87
+ "partialRef": 0
88
+ },
89
+ {
90
+ "type": "thinking_end",
91
+ "contentIndex": 0,
92
+ "content": "",
93
+ "partialRef": 0
94
+ },
95
+ {
96
+ "type": "toolcall_start",
97
+ "contentIndex": 1,
98
+ "partialRef": 0
99
+ },
100
+ {
101
+ "type": "toolcall_delta",
102
+ "contentIndex": 1,
103
+ "delta": "{\"",
104
+ "partialRef": 0
105
+ },
106
+ {
107
+ "type": "toolcall_delta",
108
+ "contentIndex": 1,
109
+ "delta": "path",
110
+ "partialRef": 0
111
+ },
112
+ {
113
+ "type": "toolcall_delta",
114
+ "contentIndex": 1,
115
+ "delta": "\":\"",
116
+ "partialRef": 0
117
+ },
118
+ {
119
+ "type": "toolcall_delta",
120
+ "contentIndex": 1,
121
+ "delta": "ha",
122
+ "partialRef": 0
123
+ },
124
+ {
125
+ "type": "toolcall_delta",
126
+ "contentIndex": 1,
127
+ "delta": "iku",
128
+ "partialRef": 0
129
+ },
130
+ {
131
+ "type": "toolcall_delta",
132
+ "contentIndex": 1,
133
+ "delta": ".txt",
134
+ "partialRef": 0
135
+ },
136
+ {
137
+ "type": "toolcall_delta",
138
+ "contentIndex": 1,
139
+ "delta": "\",\"",
140
+ "partialRef": 0
141
+ },
142
+ {
143
+ "type": "toolcall_delta",
144
+ "contentIndex": 1,
145
+ "delta": "content",
146
+ "partialRef": 0
147
+ },
148
+ {
149
+ "type": "toolcall_delta",
150
+ "contentIndex": 1,
151
+ "delta": "\":\"",
152
+ "partialRef": 0
153
+ },
154
+ {
155
+ "type": "toolcall_delta",
156
+ "contentIndex": 1,
157
+ "delta": "Soft",
158
+ "partialRef": 0
159
+ },
160
+ {
161
+ "type": "toolcall_delta",
162
+ "contentIndex": 1,
163
+ "delta": " dawn",
164
+ "partialRef": 0
165
+ },
166
+ {
167
+ "type": "toolcall_delta",
168
+ "contentIndex": 1,
169
+ "delta": " warms",
170
+ "partialRef": 0
171
+ },
172
+ {
173
+ "type": "toolcall_delta",
174
+ "contentIndex": 1,
175
+ "delta": " the",
176
+ "partialRef": 0
177
+ },
178
+ {
179
+ "type": "toolcall_delta",
180
+ "contentIndex": 1,
181
+ "delta": " grass",
182
+ "partialRef": 0
183
+ },
184
+ {
185
+ "type": "toolcall_delta",
186
+ "contentIndex": 1,
187
+ "delta": "\\n",
188
+ "partialRef": 0
189
+ },
190
+ {
191
+ "type": "toolcall_delta",
192
+ "contentIndex": 1,
193
+ "delta": "A",
194
+ "partialRef": 0
195
+ },
196
+ {
197
+ "type": "toolcall_delta",
198
+ "contentIndex": 1,
199
+ "delta": " spar",
200
+ "partialRef": 0
201
+ },
202
+ {
203
+ "type": "toolcall_delta",
204
+ "contentIndex": 1,
205
+ "delta": "row",
206
+ "partialRef": 0
207
+ },
208
+ {
209
+ "type": "toolcall_delta",
210
+ "contentIndex": 1,
211
+ "delta": " cuts",
212
+ "partialRef": 0
213
+ },
214
+ {
215
+ "type": "toolcall_delta",
216
+ "contentIndex": 1,
217
+ "delta": " through",
218
+ "partialRef": 0
219
+ },
220
+ {
221
+ "type": "toolcall_delta",
222
+ "contentIndex": 1,
223
+ "delta": " still",
224
+ "partialRef": 0
225
+ },
226
+ {
227
+ "type": "toolcall_delta",
228
+ "contentIndex": 1,
229
+ "delta": " air",
230
+ "partialRef": 0
231
+ },
232
+ {
233
+ "type": "toolcall_delta",
234
+ "contentIndex": 1,
235
+ "delta": "\\n",
236
+ "partialRef": 0
237
+ },
238
+ {
239
+ "type": "toolcall_delta",
240
+ "contentIndex": 1,
241
+ "delta": "Day",
242
+ "partialRef": 0
243
+ },
244
+ {
245
+ "type": "toolcall_delta",
246
+ "contentIndex": 1,
247
+ "delta": " opens",
248
+ "partialRef": 0
249
+ },
250
+ {
251
+ "type": "toolcall_delta",
252
+ "contentIndex": 1,
253
+ "delta": " in",
254
+ "partialRef": 0
255
+ },
256
+ {
257
+ "type": "toolcall_delta",
258
+ "contentIndex": 1,
259
+ "delta": " light",
260
+ "partialRef": 0
261
+ },
262
+ {
263
+ "type": "toolcall_delta",
264
+ "contentIndex": 1,
265
+ "delta": "\\n",
266
+ "partialRef": 0
267
+ },
268
+ {
269
+ "type": "toolcall_delta",
270
+ "contentIndex": 1,
271
+ "delta": "\"}",
272
+ "partialRef": 0
273
+ },
274
+ {
275
+ "type": "toolcall_end",
276
+ "contentIndex": 1,
277
+ "toolCall": {
278
+ "type": "toolCall",
279
+ "id": "toolcall_0",
280
+ "name": "write",
281
+ "arguments": {
282
+ "path": "haiku.txt",
283
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
284
+ }
285
+ },
286
+ "partialRef": 0
287
+ },
288
+ {
289
+ "type": "done",
290
+ "reason": "toolUse",
291
+ "message": {
292
+ "role": "assistant",
293
+ "content": [
294
+ {
295
+ "type": "thinking",
296
+ "thinking": "",
297
+ "thinkingSignature": ""
298
+ },
299
+ {
300
+ "type": "toolCall",
301
+ "id": "toolcall_0",
302
+ "name": "write",
303
+ "arguments": {
304
+ "path": "haiku.txt",
305
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
306
+ }
307
+ }
308
+ ],
309
+ "api": "openai-responses",
310
+ "provider": "github-copilot",
311
+ "model": "gpt-5.4",
312
+ "usage": {
313
+ "input": 1565,
314
+ "output": 139,
315
+ "cacheRead": 0,
316
+ "cacheWrite": 0,
317
+ "reasoning": 96,
318
+ "totalTokens": 1704,
319
+ "cost": {
320
+ "input": 0.0039125,
321
+ "output": 0.002085,
322
+ "cacheRead": 0,
323
+ "cacheWrite": 0,
324
+ "total": 0.0059975
325
+ }
326
+ },
327
+ "stopReason": "toolUse",
328
+ "timestamp": 0,
329
+ "responseId": ""
330
+ }
331
+ }
332
+ ],
333
+ [
334
+ {
335
+ "type": "start",
336
+ "partialRef": 1
337
+ },
338
+ {
339
+ "type": "text_start",
340
+ "contentIndex": 0,
341
+ "partialRef": 1
342
+ },
343
+ {
344
+ "type": "text_delta",
345
+ "contentIndex": 0,
346
+ "delta": "DONE",
347
+ "partialRef": 1
348
+ },
349
+ {
350
+ "type": "text_end",
351
+ "contentIndex": 0,
352
+ "content": "DONE",
353
+ "partialRef": 1
354
+ },
355
+ {
356
+ "type": "done",
357
+ "reason": "stop",
358
+ "message": {
359
+ "role": "assistant",
360
+ "content": [
361
+ {
362
+ "type": "text",
363
+ "text": "DONE",
364
+ "textSignature": ""
365
+ }
366
+ ],
367
+ "api": "openai-responses",
368
+ "provider": "github-copilot",
369
+ "model": "gpt-5.4",
370
+ "usage": {
371
+ "input": 1723,
372
+ "output": 5,
373
+ "cacheRead": 0,
374
+ "cacheWrite": 0,
375
+ "reasoning": 0,
376
+ "totalTokens": 1728,
377
+ "cost": {
378
+ "input": 0.0043075000000000006,
379
+ "output": 0.00007500000000000001,
380
+ "cacheRead": 0,
381
+ "cacheWrite": 0,
382
+ "total": 0.004382500000000001
383
+ }
384
+ },
385
+ "stopReason": "stop",
386
+ "timestamp": 0,
387
+ "responseId": ""
388
+ }
389
+ }
390
+ ]
391
+ ],
392
+ "events": [
393
+ {
394
+ "type": "agent_start"
395
+ },
396
+ {
397
+ "type": "turn_start"
398
+ },
399
+ {
400
+ "type": "message_start",
401
+ "message": {
402
+ "role": "user",
403
+ "content": [
404
+ {
405
+ "type": "text",
406
+ "text": "Create a file called haiku.txt containing exactly three short lines. Then reply DONE."
407
+ }
408
+ ],
409
+ "timestamp": 0
410
+ }
411
+ },
412
+ {
413
+ "type": "message_end",
414
+ "message": {
415
+ "role": "user",
416
+ "content": [
417
+ {
418
+ "type": "text",
419
+ "text": "Create a file called haiku.txt containing exactly three short lines. Then reply DONE."
420
+ }
421
+ ],
422
+ "timestamp": 0
423
+ }
424
+ },
425
+ {
426
+ "type": "message_start",
427
+ "message": {
428
+ "role": "assistant",
429
+ "content": [
430
+ {
431
+ "type": "thinking",
432
+ "thinking": "",
433
+ "thinkingSignature": ""
434
+ },
435
+ {
436
+ "type": "toolCall",
437
+ "id": "toolcall_0",
438
+ "name": "write",
439
+ "arguments": {
440
+ "path": "haiku.txt",
441
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
442
+ }
443
+ }
444
+ ],
445
+ "api": "openai-responses",
446
+ "provider": "github-copilot",
447
+ "model": "gpt-5.4",
448
+ "usage": {
449
+ "input": 0,
450
+ "output": 0,
451
+ "cacheRead": 0,
452
+ "cacheWrite": 0,
453
+ "totalTokens": 0,
454
+ "cost": {
455
+ "input": 0,
456
+ "output": 0,
457
+ "cacheRead": 0,
458
+ "cacheWrite": 0,
459
+ "total": 0
460
+ }
461
+ },
462
+ "stopReason": "stop",
463
+ "timestamp": 0
464
+ }
465
+ },
466
+ {
467
+ "type": "message_update",
468
+ "assistantMessageEvent": {
469
+ "type": "thinking_start",
470
+ "contentIndex": 0
471
+ },
472
+ "message": {
473
+ "role": "assistant"
474
+ }
475
+ },
476
+ {
477
+ "type": "message_update",
478
+ "assistantMessageEvent": {
479
+ "type": "thinking_end",
480
+ "contentIndex": 0,
481
+ "content": ""
482
+ },
483
+ "message": {
484
+ "role": "assistant"
485
+ }
486
+ },
487
+ {
488
+ "type": "message_update",
489
+ "assistantMessageEvent": {
490
+ "type": "toolcall_start",
491
+ "contentIndex": 1,
492
+ "partial": {
493
+ "role": "assistant",
494
+ "content": [
495
+ {
496
+ "type": "thinking",
497
+ "thinking": "",
498
+ "thinkingSignature": ""
499
+ },
500
+ {
501
+ "type": "toolCall",
502
+ "id": "toolcall_0",
503
+ "name": "write",
504
+ "arguments": {
505
+ "path": "haiku.txt",
506
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
507
+ }
508
+ }
509
+ ],
510
+ "api": "openai-responses",
511
+ "provider": "github-copilot",
512
+ "model": "gpt-5.4",
513
+ "usage": {
514
+ "input": 1565,
515
+ "output": 139,
516
+ "cacheRead": 0,
517
+ "cacheWrite": 0,
518
+ "reasoning": 96,
519
+ "totalTokens": 1704,
520
+ "cost": {
521
+ "input": 0.0039125,
522
+ "output": 0.002085,
523
+ "cacheRead": 0,
524
+ "cacheWrite": 0,
525
+ "total": 0.0059975
526
+ }
527
+ },
528
+ "stopReason": "toolUse",
529
+ "timestamp": 0,
530
+ "responseId": ""
531
+ }
532
+ },
533
+ "message": {
534
+ "role": "assistant"
535
+ }
536
+ },
537
+ {
538
+ "type": "message_update",
539
+ "assistantMessageEvent": {
540
+ "type": "toolcall_delta",
541
+ "contentIndex": 1,
542
+ "delta": "{\""
543
+ },
544
+ "message": {
545
+ "role": "assistant"
546
+ }
547
+ },
548
+ {
549
+ "type": "message_update",
550
+ "assistantMessageEvent": {
551
+ "type": "toolcall_delta",
552
+ "contentIndex": 1,
553
+ "delta": "path"
554
+ },
555
+ "message": {
556
+ "role": "assistant"
557
+ }
558
+ },
559
+ {
560
+ "type": "message_update",
561
+ "assistantMessageEvent": {
562
+ "type": "toolcall_delta",
563
+ "contentIndex": 1,
564
+ "delta": "\":\""
565
+ },
566
+ "message": {
567
+ "role": "assistant"
568
+ }
569
+ },
570
+ {
571
+ "type": "message_update",
572
+ "assistantMessageEvent": {
573
+ "type": "toolcall_delta",
574
+ "contentIndex": 1,
575
+ "delta": "ha"
576
+ },
577
+ "message": {
578
+ "role": "assistant"
579
+ }
580
+ },
581
+ {
582
+ "type": "message_update",
583
+ "assistantMessageEvent": {
584
+ "type": "toolcall_delta",
585
+ "contentIndex": 1,
586
+ "delta": "iku"
587
+ },
588
+ "message": {
589
+ "role": "assistant"
590
+ }
591
+ },
592
+ {
593
+ "type": "message_update",
594
+ "assistantMessageEvent": {
595
+ "type": "toolcall_delta",
596
+ "contentIndex": 1,
597
+ "delta": ".txt"
598
+ },
599
+ "message": {
600
+ "role": "assistant"
601
+ }
602
+ },
603
+ {
604
+ "type": "message_update",
605
+ "assistantMessageEvent": {
606
+ "type": "toolcall_delta",
607
+ "contentIndex": 1,
608
+ "delta": "\",\""
609
+ },
610
+ "message": {
611
+ "role": "assistant"
612
+ }
613
+ },
614
+ {
615
+ "type": "message_update",
616
+ "assistantMessageEvent": {
617
+ "type": "toolcall_delta",
618
+ "contentIndex": 1,
619
+ "delta": "content"
620
+ },
621
+ "message": {
622
+ "role": "assistant"
623
+ }
624
+ },
625
+ {
626
+ "type": "message_update",
627
+ "assistantMessageEvent": {
628
+ "type": "toolcall_delta",
629
+ "contentIndex": 1,
630
+ "delta": "\":\""
631
+ },
632
+ "message": {
633
+ "role": "assistant"
634
+ }
635
+ },
636
+ {
637
+ "type": "message_update",
638
+ "assistantMessageEvent": {
639
+ "type": "toolcall_delta",
640
+ "contentIndex": 1,
641
+ "delta": "Soft"
642
+ },
643
+ "message": {
644
+ "role": "assistant"
645
+ }
646
+ },
647
+ {
648
+ "type": "message_update",
649
+ "assistantMessageEvent": {
650
+ "type": "toolcall_delta",
651
+ "contentIndex": 1,
652
+ "delta": " dawn"
653
+ },
654
+ "message": {
655
+ "role": "assistant"
656
+ }
657
+ },
658
+ {
659
+ "type": "message_update",
660
+ "assistantMessageEvent": {
661
+ "type": "toolcall_delta",
662
+ "contentIndex": 1,
663
+ "delta": " warms"
664
+ },
665
+ "message": {
666
+ "role": "assistant"
667
+ }
668
+ },
669
+ {
670
+ "type": "message_update",
671
+ "assistantMessageEvent": {
672
+ "type": "toolcall_delta",
673
+ "contentIndex": 1,
674
+ "delta": " the"
675
+ },
676
+ "message": {
677
+ "role": "assistant"
678
+ }
679
+ },
680
+ {
681
+ "type": "message_update",
682
+ "assistantMessageEvent": {
683
+ "type": "toolcall_delta",
684
+ "contentIndex": 1,
685
+ "delta": " grass"
686
+ },
687
+ "message": {
688
+ "role": "assistant"
689
+ }
690
+ },
691
+ {
692
+ "type": "message_update",
693
+ "assistantMessageEvent": {
694
+ "type": "toolcall_delta",
695
+ "contentIndex": 1,
696
+ "delta": "\\n"
697
+ },
698
+ "message": {
699
+ "role": "assistant"
700
+ }
701
+ },
702
+ {
703
+ "type": "message_update",
704
+ "assistantMessageEvent": {
705
+ "type": "toolcall_delta",
706
+ "contentIndex": 1,
707
+ "delta": "A"
708
+ },
709
+ "message": {
710
+ "role": "assistant"
711
+ }
712
+ },
713
+ {
714
+ "type": "message_update",
715
+ "assistantMessageEvent": {
716
+ "type": "toolcall_delta",
717
+ "contentIndex": 1,
718
+ "delta": " spar"
719
+ },
720
+ "message": {
721
+ "role": "assistant"
722
+ }
723
+ },
724
+ {
725
+ "type": "message_update",
726
+ "assistantMessageEvent": {
727
+ "type": "toolcall_delta",
728
+ "contentIndex": 1,
729
+ "delta": "row"
730
+ },
731
+ "message": {
732
+ "role": "assistant"
733
+ }
734
+ },
735
+ {
736
+ "type": "message_update",
737
+ "assistantMessageEvent": {
738
+ "type": "toolcall_delta",
739
+ "contentIndex": 1,
740
+ "delta": " cuts"
741
+ },
742
+ "message": {
743
+ "role": "assistant"
744
+ }
745
+ },
746
+ {
747
+ "type": "message_update",
748
+ "assistantMessageEvent": {
749
+ "type": "toolcall_delta",
750
+ "contentIndex": 1,
751
+ "delta": " through"
752
+ },
753
+ "message": {
754
+ "role": "assistant"
755
+ }
756
+ },
757
+ {
758
+ "type": "message_update",
759
+ "assistantMessageEvent": {
760
+ "type": "toolcall_delta",
761
+ "contentIndex": 1,
762
+ "delta": " still"
763
+ },
764
+ "message": {
765
+ "role": "assistant"
766
+ }
767
+ },
768
+ {
769
+ "type": "message_update",
770
+ "assistantMessageEvent": {
771
+ "type": "toolcall_delta",
772
+ "contentIndex": 1,
773
+ "delta": " air"
774
+ },
775
+ "message": {
776
+ "role": "assistant"
777
+ }
778
+ },
779
+ {
780
+ "type": "message_update",
781
+ "assistantMessageEvent": {
782
+ "type": "toolcall_delta",
783
+ "contentIndex": 1,
784
+ "delta": "\\n"
785
+ },
786
+ "message": {
787
+ "role": "assistant"
788
+ }
789
+ },
790
+ {
791
+ "type": "message_update",
792
+ "assistantMessageEvent": {
793
+ "type": "toolcall_delta",
794
+ "contentIndex": 1,
795
+ "delta": "Day"
796
+ },
797
+ "message": {
798
+ "role": "assistant"
799
+ }
800
+ },
801
+ {
802
+ "type": "message_update",
803
+ "assistantMessageEvent": {
804
+ "type": "toolcall_delta",
805
+ "contentIndex": 1,
806
+ "delta": " opens"
807
+ },
808
+ "message": {
809
+ "role": "assistant"
810
+ }
811
+ },
812
+ {
813
+ "type": "message_update",
814
+ "assistantMessageEvent": {
815
+ "type": "toolcall_delta",
816
+ "contentIndex": 1,
817
+ "delta": " in"
818
+ },
819
+ "message": {
820
+ "role": "assistant"
821
+ }
822
+ },
823
+ {
824
+ "type": "message_update",
825
+ "assistantMessageEvent": {
826
+ "type": "toolcall_delta",
827
+ "contentIndex": 1,
828
+ "delta": " light"
829
+ },
830
+ "message": {
831
+ "role": "assistant"
832
+ }
833
+ },
834
+ {
835
+ "type": "message_update",
836
+ "assistantMessageEvent": {
837
+ "type": "toolcall_delta",
838
+ "contentIndex": 1,
839
+ "delta": "\\n"
840
+ },
841
+ "message": {
842
+ "role": "assistant"
843
+ }
844
+ },
845
+ {
846
+ "type": "message_update",
847
+ "assistantMessageEvent": {
848
+ "type": "toolcall_delta",
849
+ "contentIndex": 1,
850
+ "delta": "\"}"
851
+ },
852
+ "message": {
853
+ "role": "assistant"
854
+ }
855
+ },
856
+ {
857
+ "type": "message_update",
858
+ "assistantMessageEvent": {
859
+ "type": "toolcall_end",
860
+ "contentIndex": 1,
861
+ "toolCall": {
862
+ "type": "toolCall",
863
+ "id": "toolcall_0",
864
+ "name": "write",
865
+ "arguments": {
866
+ "path": "haiku.txt",
867
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
868
+ }
869
+ }
870
+ },
871
+ "message": {
872
+ "role": "assistant"
873
+ }
874
+ },
875
+ {
876
+ "type": "message_end",
877
+ "message": {
878
+ "role": "assistant",
879
+ "content": [
880
+ {
881
+ "type": "thinking",
882
+ "thinking": "",
883
+ "thinkingSignature": ""
884
+ },
885
+ {
886
+ "type": "toolCall",
887
+ "id": "toolcall_0",
888
+ "name": "write",
889
+ "arguments": {
890
+ "path": "haiku.txt",
891
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
892
+ }
893
+ }
894
+ ],
895
+ "api": "openai-responses",
896
+ "provider": "github-copilot",
897
+ "model": "gpt-5.4",
898
+ "usage": {
899
+ "input": 1565,
900
+ "output": 139,
901
+ "cacheRead": 0,
902
+ "cacheWrite": 0,
903
+ "reasoning": 96,
904
+ "totalTokens": 1704,
905
+ "cost": {
906
+ "input": 0.0039125,
907
+ "output": 0.002085,
908
+ "cacheRead": 0,
909
+ "cacheWrite": 0,
910
+ "total": 0.0059975
911
+ }
912
+ },
913
+ "stopReason": "toolUse",
914
+ "timestamp": 0,
915
+ "responseId": ""
916
+ }
917
+ },
918
+ {
919
+ "type": "tool_execution_start",
920
+ "toolCallId": "toolcall_0",
921
+ "toolName": "write",
922
+ "args": {
923
+ "path": "haiku.txt",
924
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
925
+ }
926
+ },
927
+ {
928
+ "type": "tool_execution_end",
929
+ "toolCallId": "toolcall_0",
930
+ "toolName": "write",
931
+ "result": {
932
+ "content": [
933
+ {
934
+ "type": "text",
935
+ "text": "Successfully wrote 78 bytes to haiku.txt"
936
+ }
937
+ ]
938
+ },
939
+ "isError": false
940
+ },
941
+ {
942
+ "type": "message_start",
943
+ "message": {
944
+ "role": "toolResult",
945
+ "toolCallId": "toolcall_0",
946
+ "toolName": "write",
947
+ "content": [
948
+ {
949
+ "type": "text",
950
+ "text": "Successfully wrote 78 bytes to haiku.txt"
951
+ }
952
+ ],
953
+ "isError": false,
954
+ "timestamp": 0
955
+ }
956
+ },
957
+ {
958
+ "type": "message_end",
959
+ "message": {
960
+ "role": "toolResult",
961
+ "toolCallId": "toolcall_0",
962
+ "toolName": "write",
963
+ "content": [
964
+ {
965
+ "type": "text",
966
+ "text": "Successfully wrote 78 bytes to haiku.txt"
967
+ }
968
+ ],
969
+ "isError": false,
970
+ "timestamp": 0
971
+ }
972
+ },
973
+ {
974
+ "type": "turn_end",
975
+ "message": {
976
+ "role": "assistant",
977
+ "content": [
978
+ {
979
+ "type": "thinking",
980
+ "thinking": "",
981
+ "thinkingSignature": ""
982
+ },
983
+ {
984
+ "type": "toolCall",
985
+ "id": "toolcall_0",
986
+ "name": "write",
987
+ "arguments": {
988
+ "path": "haiku.txt",
989
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
990
+ }
991
+ }
992
+ ],
993
+ "api": "openai-responses",
994
+ "provider": "github-copilot",
995
+ "model": "gpt-5.4",
996
+ "usage": {
997
+ "input": 1565,
998
+ "output": 139,
999
+ "cacheRead": 0,
1000
+ "cacheWrite": 0,
1001
+ "reasoning": 96,
1002
+ "totalTokens": 1704,
1003
+ "cost": {
1004
+ "input": 0.0039125,
1005
+ "output": 0.002085,
1006
+ "cacheRead": 0,
1007
+ "cacheWrite": 0,
1008
+ "total": 0.0059975
1009
+ }
1010
+ },
1011
+ "stopReason": "toolUse",
1012
+ "timestamp": 0,
1013
+ "responseId": ""
1014
+ },
1015
+ "toolResults": [
1016
+ {
1017
+ "role": "toolResult",
1018
+ "toolCallId": "toolcall_0",
1019
+ "toolName": "write",
1020
+ "content": [
1021
+ {
1022
+ "type": "text",
1023
+ "text": "Successfully wrote 78 bytes to haiku.txt"
1024
+ }
1025
+ ],
1026
+ "isError": false,
1027
+ "timestamp": 0
1028
+ }
1029
+ ]
1030
+ },
1031
+ {
1032
+ "type": "turn_start"
1033
+ },
1034
+ {
1035
+ "type": "message_start",
1036
+ "message": {
1037
+ "role": "assistant",
1038
+ "content": [
1039
+ {
1040
+ "type": "text",
1041
+ "text": "DONE",
1042
+ "textSignature": ""
1043
+ }
1044
+ ],
1045
+ "api": "openai-responses",
1046
+ "provider": "github-copilot",
1047
+ "model": "gpt-5.4",
1048
+ "usage": {
1049
+ "input": 0,
1050
+ "output": 0,
1051
+ "cacheRead": 0,
1052
+ "cacheWrite": 0,
1053
+ "totalTokens": 0,
1054
+ "cost": {
1055
+ "input": 0,
1056
+ "output": 0,
1057
+ "cacheRead": 0,
1058
+ "cacheWrite": 0,
1059
+ "total": 0
1060
+ }
1061
+ },
1062
+ "stopReason": "stop",
1063
+ "timestamp": 0
1064
+ }
1065
+ },
1066
+ {
1067
+ "type": "message_update",
1068
+ "assistantMessageEvent": {
1069
+ "type": "text_start",
1070
+ "contentIndex": 0
1071
+ },
1072
+ "message": {
1073
+ "role": "assistant"
1074
+ }
1075
+ },
1076
+ {
1077
+ "type": "message_update",
1078
+ "assistantMessageEvent": {
1079
+ "type": "text_delta",
1080
+ "contentIndex": 0,
1081
+ "delta": "DONE"
1082
+ },
1083
+ "message": {
1084
+ "role": "assistant"
1085
+ }
1086
+ },
1087
+ {
1088
+ "type": "message_update",
1089
+ "assistantMessageEvent": {
1090
+ "type": "text_end",
1091
+ "contentIndex": 0,
1092
+ "content": "DONE"
1093
+ },
1094
+ "message": {
1095
+ "role": "assistant"
1096
+ }
1097
+ },
1098
+ {
1099
+ "type": "message_end",
1100
+ "message": {
1101
+ "role": "assistant",
1102
+ "content": [
1103
+ {
1104
+ "type": "text",
1105
+ "text": "DONE",
1106
+ "textSignature": ""
1107
+ }
1108
+ ],
1109
+ "api": "openai-responses",
1110
+ "provider": "github-copilot",
1111
+ "model": "gpt-5.4",
1112
+ "usage": {
1113
+ "input": 1723,
1114
+ "output": 5,
1115
+ "cacheRead": 0,
1116
+ "cacheWrite": 0,
1117
+ "reasoning": 0,
1118
+ "totalTokens": 1728,
1119
+ "cost": {
1120
+ "input": 0.0043075000000000006,
1121
+ "output": 0.00007500000000000001,
1122
+ "cacheRead": 0,
1123
+ "cacheWrite": 0,
1124
+ "total": 0.004382500000000001
1125
+ }
1126
+ },
1127
+ "stopReason": "stop",
1128
+ "timestamp": 0,
1129
+ "responseId": ""
1130
+ }
1131
+ },
1132
+ {
1133
+ "type": "turn_end",
1134
+ "message": {
1135
+ "role": "assistant",
1136
+ "content": [
1137
+ {
1138
+ "type": "text",
1139
+ "text": "DONE",
1140
+ "textSignature": ""
1141
+ }
1142
+ ],
1143
+ "api": "openai-responses",
1144
+ "provider": "github-copilot",
1145
+ "model": "gpt-5.4",
1146
+ "usage": {
1147
+ "input": 1723,
1148
+ "output": 5,
1149
+ "cacheRead": 0,
1150
+ "cacheWrite": 0,
1151
+ "reasoning": 0,
1152
+ "totalTokens": 1728,
1153
+ "cost": {
1154
+ "input": 0.0043075000000000006,
1155
+ "output": 0.00007500000000000001,
1156
+ "cacheRead": 0,
1157
+ "cacheWrite": 0,
1158
+ "total": 0.004382500000000001
1159
+ }
1160
+ },
1161
+ "stopReason": "stop",
1162
+ "timestamp": 0,
1163
+ "responseId": ""
1164
+ },
1165
+ "toolResults": []
1166
+ },
1167
+ {
1168
+ "type": "agent_end",
1169
+ "messages": [
1170
+ {
1171
+ "role": "user",
1172
+ "content": [
1173
+ {
1174
+ "type": "text",
1175
+ "text": "Create a file called haiku.txt containing exactly three short lines. Then reply DONE."
1176
+ }
1177
+ ],
1178
+ "timestamp": 0
1179
+ },
1180
+ {
1181
+ "role": "assistant",
1182
+ "content": [
1183
+ {
1184
+ "type": "thinking",
1185
+ "thinking": "",
1186
+ "thinkingSignature": ""
1187
+ },
1188
+ {
1189
+ "type": "toolCall",
1190
+ "id": "toolcall_0",
1191
+ "name": "write",
1192
+ "arguments": {
1193
+ "path": "haiku.txt",
1194
+ "content": "Soft dawn warms the grass\nA sparrow cuts through still air\nDay opens in light\n"
1195
+ }
1196
+ }
1197
+ ],
1198
+ "api": "openai-responses",
1199
+ "provider": "github-copilot",
1200
+ "model": "gpt-5.4",
1201
+ "usage": {
1202
+ "input": 1565,
1203
+ "output": 139,
1204
+ "cacheRead": 0,
1205
+ "cacheWrite": 0,
1206
+ "reasoning": 96,
1207
+ "totalTokens": 1704,
1208
+ "cost": {
1209
+ "input": 0.0039125,
1210
+ "output": 0.002085,
1211
+ "cacheRead": 0,
1212
+ "cacheWrite": 0,
1213
+ "total": 0.0059975
1214
+ }
1215
+ },
1216
+ "stopReason": "toolUse",
1217
+ "timestamp": 0,
1218
+ "responseId": ""
1219
+ },
1220
+ {
1221
+ "role": "toolResult",
1222
+ "toolCallId": "toolcall_0",
1223
+ "toolName": "write",
1224
+ "content": [
1225
+ {
1226
+ "type": "text",
1227
+ "text": "Successfully wrote 78 bytes to haiku.txt"
1228
+ }
1229
+ ],
1230
+ "isError": false,
1231
+ "timestamp": 0
1232
+ },
1233
+ {
1234
+ "role": "assistant",
1235
+ "content": [
1236
+ {
1237
+ "type": "text",
1238
+ "text": "DONE",
1239
+ "textSignature": ""
1240
+ }
1241
+ ],
1242
+ "api": "openai-responses",
1243
+ "provider": "github-copilot",
1244
+ "model": "gpt-5.4",
1245
+ "usage": {
1246
+ "input": 1723,
1247
+ "output": 5,
1248
+ "cacheRead": 0,
1249
+ "cacheWrite": 0,
1250
+ "reasoning": 0,
1251
+ "totalTokens": 1728,
1252
+ "cost": {
1253
+ "input": 0.0043075000000000006,
1254
+ "output": 0.00007500000000000001,
1255
+ "cacheRead": 0,
1256
+ "cacheWrite": 0,
1257
+ "total": 0.004382500000000001
1258
+ }
1259
+ },
1260
+ "stopReason": "stop",
1261
+ "timestamp": 0,
1262
+ "responseId": ""
1263
+ }
1264
+ ],
1265
+ "willRetry": false
1266
+ },
1267
+ {
1268
+ "type": "agent_settled"
1269
+ }
1270
+ ]
1271
+ }