@oar-sh/oar 0.9.2 → 0.9.4

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 (138) hide show
  1. package/.github/extensions/web-relay/extension.mjs +6 -1
  2. package/.github/extensions/web-relay/skills/tool-activity.mjs +7 -0
  3. package/CHANGELOG.md +336 -0
  4. package/README.md +455 -423
  5. package/bin/oar.js +25 -10
  6. package/package.json +11 -5
  7. package/server/README.md +44 -4
  8. package/server/claude-worker/claude-remote-relay-tool.mjs +99 -0
  9. package/server/claude-worker/claude-sdk-adapter.mjs +26 -4
  10. package/server/claude-worker/claude-session-process.mjs +1073 -69
  11. package/server/claude-worker/claude-session-worker.mjs +45 -4
  12. package/server/claude-worker/claude-turn-publisher.mjs +81 -20
  13. package/server/claude-worker/claude-worker-link-wiring.mjs +9 -0
  14. package/server/claude-worker/sdk-message-normalizer.mjs +7 -0
  15. package/server/copilot-worker/copilot-ask-user-tool.mjs +89 -0
  16. package/server/copilot-worker/copilot-continuation-signals.mjs +55 -0
  17. package/server/copilot-worker/copilot-question-bridge.mjs +34 -12
  18. package/server/copilot-worker/copilot-remote-relay-tool.mjs +59 -0
  19. package/server/copilot-worker/copilot-sdk-event-normalizer.mjs +113 -14
  20. package/server/copilot-worker/copilot-sdk-session-process.mjs +2349 -498
  21. package/server/copilot-worker/copilot-sdk-session-worker.mjs +82 -20
  22. package/server/cursor-worker/cursor-remote-relay-tool.mjs +65 -0
  23. package/server/cursor-worker/cursor-turn-runner.mjs +45 -2
  24. package/server/cursor-worker/sdk-message-normalizer.mjs +25 -0
  25. package/server/db-schema.mjs +28 -0
  26. package/server/grok-worker/acp-client.mjs +92 -6
  27. package/server/grok-worker/grok-turn-runner.mjs +59 -8
  28. package/server/grok-worker/sdk-message-normalizer.mjs +13 -0
  29. package/server/mcp/oar-mcp-server.mjs +473 -0
  30. package/server/migrations/0004-steer-settle-markers.mjs +119 -0
  31. package/server/migrations/0005-remote-relays.mjs +90 -0
  32. package/server/public/app/action-confirmations.js +141 -13
  33. package/server/public/app/api-client.js +125 -2
  34. package/server/public/app/ask-user-view.js +102 -13
  35. package/server/public/app/attachments-view.js +37 -2
  36. package/server/public/app/background-task-timeout-options.mjs +9 -0
  37. package/server/public/app/background-tasks-view.mjs +33 -18
  38. package/server/public/app/bootstrap.js +55 -14
  39. package/server/public/app/composer-control-state.mjs +52 -34
  40. package/server/public/app/conversation-deep-link.mjs +42 -0
  41. package/server/public/app/conversation-draft-sync.mjs +187 -0
  42. package/server/public/app/conversation-list-filter.mjs +86 -0
  43. package/server/public/app/conversation-provider-indicator.mjs +8 -0
  44. package/server/public/app/conversation-view.js +1016 -200
  45. package/server/public/app/emoji-view.js +2 -0
  46. package/server/public/app/font-scaling.js +4 -37
  47. package/server/public/app/host-suspend-ui.js +272 -0
  48. package/server/public/app/journal-view.js +149 -6
  49. package/server/public/app/mention-autocomplete.mjs +298 -0
  50. package/server/public/app/model-selector-options.mjs +1 -1
  51. package/server/public/app/push-settings.js +1 -0
  52. package/server/public/app/pwa-install.js +8 -3
  53. package/server/public/app/question-multi-select.mjs +52 -0
  54. package/server/public/app/relay-prompt-sanitizer.mjs +61 -3
  55. package/server/public/app/remote-relay-origin-view.mjs +76 -0
  56. package/server/public/app/remote-relay-shared.mjs +85 -0
  57. package/server/public/app/remote-relays-settings.js +618 -0
  58. package/server/public/app/remote-relays-store.mjs +126 -0
  59. package/server/public/app/settings-modal.js +12 -8
  60. package/server/public/app/settings-tabs.js +1 -1
  61. package/server/public/app/socket-handlers.js +37 -1
  62. package/server/public/app/steered-turn-merge.mjs +100 -0
  63. package/server/public/app/store.js +126 -15
  64. package/server/public/app/sync-outbox.mjs +16 -8
  65. package/server/public/app/thinking-follow.js +260 -0
  66. package/server/public/app/tool-activity-emoji.mjs +40 -0
  67. package/server/public/app/transcript-viewport-anchor.mjs +210 -0
  68. package/server/public/index.html +463 -17
  69. package/server/public/sw.js +7 -0
  70. package/server/relay-tools.md +7 -1
  71. package/server/repositories/message-repository.mjs +68 -18
  72. package/server/repositories/question-repository.mjs +18 -0
  73. package/server/repositories/remote-relay-repository.mjs +75 -0
  74. package/server/repositories/session-repository.mjs +13 -32
  75. package/server/routes/ask-user-routes.mjs +42 -2
  76. package/server/routes/messages-routes.mjs +572 -56
  77. package/server/routes/remote-relay-routes.mjs +133 -0
  78. package/server/routes/sessions-routes.mjs +378 -84
  79. package/server/server-runtime.mjs +303 -25
  80. package/server/services/github-ci-activity-service.mjs +199 -0
  81. package/server/services/host-suspend-command.mjs +38 -0
  82. package/server/services/host-suspend-service.mjs +254 -0
  83. package/server/services/live-turn-picker.mjs +47 -0
  84. package/server/services/push-dispatch-service.mjs +37 -4
  85. package/server/services/relay-prompt-sanitizer.mjs +17 -2
  86. package/server/services/relay-question-context.mjs +46 -0
  87. package/server/services/remote-relay-caller-context.mjs +341 -0
  88. package/server/services/remote-relay-client.mjs +332 -0
  89. package/server/services/remote-relay-dispatcher.mjs +1500 -0
  90. package/server/services/remote-relay-inbound.mjs +187 -0
  91. package/server/services/remote-relay-pairing.mjs +189 -0
  92. package/server/services/remote-relay-registry-service.mjs +581 -0
  93. package/server/services/sdk-session-import-service.mjs +49 -7
  94. package/server/services/session-worker-launch-service.mjs +131 -12
  95. package/server/services/session-worker-registry-service.mjs +75 -0
  96. package/server/services/session-worker-supervisor-service.mjs +7 -1
  97. package/server/services/session-worker-websocket-service.mjs +23 -1
  98. package/server/services/steer-resend.mjs +45 -0
  99. package/shared/background-task-timeout.mjs +12 -4
  100. package/shared/control-poller.mjs +4 -1
  101. package/shared/question-multi-select.mjs +16 -0
  102. package/shared/relay-stop-failure.mjs +15 -0
  103. package/shared/remote-relay-contract.mjs +539 -0
  104. package/shared/remote-relay-mentions.mjs +129 -0
  105. package/shared/remote-relay-tool-core.mjs +314 -0
  106. package/shared/slash-command-guard.mjs +76 -0
  107. package/shared/steer-note.mjs +66 -0
  108. package/shared/steer-settle-failure.mjs +89 -0
  109. package/shared/steer-settle-markers.mjs +18 -0
  110. package/shared/worker-crash-guard.mjs +40 -25
  111. package/shared/worker-runtime/api-client.mjs +112 -22
  112. package/shared/worker-runtime/heartbeat.mjs +55 -1
  113. package/shared/worker-runtime/runner-link-wiring.mjs +44 -0
  114. package/shared/worker-runtime/worker-websocket-link.mjs +119 -8
  115. package/server/claude-worker/claude-session-test-harness.mjs +0 -250
  116. package/server/claude-worker/fixtures/workflow-run-record.json +0 -1
  117. package/server/copilot-worker/copilot-sdk-test-harness.mjs +0 -382
  118. package/server/copilot-worker/fixtures/abort-turn.json +0 -588
  119. package/server/copilot-worker/fixtures/ask-user-turn.json +0 -1154
  120. package/server/copilot-worker/fixtures/background-timer-continuation.json +0 -445
  121. package/server/copilot-worker/fixtures/background-timer-turn.json +0 -497
  122. package/server/copilot-worker/fixtures/happy-turn.json +0 -566
  123. package/server/copilot-worker/fixtures/quota-turn.json +0 -647
  124. package/server/copilot-worker/fixtures/reasoning-turn.json +0 -625
  125. package/server/copilot-worker/fixtures/resume-turn.json +0 -700
  126. package/server/copilot-worker/fixtures/subagent-turn.json +0 -1378
  127. package/server/copilot-worker/fixtures/tool-permission-turn.json +0 -1293
  128. package/server/routes/messages-routes-test-harness.mjs +0 -111
  129. package/server/services/fixtures/claude-auth-stub.cmd +0 -1
  130. package/server/services/fixtures/claude-auth-stub.mjs +0 -76
  131. package/server/services/fixtures/claude-auth-stub.sh +0 -4
  132. package/server/services/fixtures/cli-install-stub.cmd +0 -1
  133. package/server/services/fixtures/cli-install-stub.mjs +0 -98
  134. package/server/services/fixtures/cli-install-stub.sh +0 -4
  135. package/server/services/fixtures/grok-stub.cmd +0 -1
  136. package/server/services/fixtures/grok-stub.mjs +0 -89
  137. package/server/services/fixtures/grok-stub.sh +0 -4
  138. package/shared/fixtures/copilot-catalog-raw-2026-09-07.json +0 -2363
@@ -1,625 +0,0 @@
1
- [
2
- {
3
- "type": "session.start",
4
- "data": {
5
- "sessionId": "da6fa1f7-7da7-4488-878a-cb26ec271730",
6
- "version": 1,
7
- "producer": "copilot-agent",
8
- "copilotVersion": "0.0.0",
9
- "startTime": "2026-08-31T09:24:28.571Z",
10
- "selectedModel": "gpt-5-mini",
11
- "contextTier": null,
12
- "context": {
13
- "cwd": "/tmp/relay-fixture-workspace"
14
- },
15
- "remoteSteerable": false,
16
- "alreadyInUse": false
17
- },
18
- "id": "e59d8907-154e-455a-b935-40f18a42e09f",
19
- "timestamp": "2026-08-31T09:24:28.581Z",
20
- "parentId": null
21
- },
22
- {
23
- "type": "pending_messages.modified",
24
- "data": {},
25
- "ephemeral": true,
26
- "id": "ffd90d92-ff5b-472e-97eb-a12e2b8c8fdc",
27
- "timestamp": "2026-08-31T09:24:28.615Z",
28
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
29
- },
30
- {
31
- "type": "pending_messages.modified",
32
- "data": {},
33
- "ephemeral": true,
34
- "id": "82830da1-74af-4be9-859d-72a4a157882d",
35
- "timestamp": "2026-08-31T09:24:28.618Z",
36
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
37
- },
38
- {
39
- "type": "session.title_changed",
40
- "data": {
41
- "title": "Think then answer"
42
- },
43
- "ephemeral": true,
44
- "id": "c507da45-480f-4477-9359-8bce29a38145",
45
- "timestamp": "2026-08-31T09:24:28.620Z",
46
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
47
- },
48
- {
49
- "type": "session.mcp_server_status_changed",
50
- "data": {
51
- "serverName": "github-mcp-server",
52
- "status": "pending"
53
- },
54
- "ephemeral": true,
55
- "id": "488bc711-447d-45ab-8a1a-a374346ff26a",
56
- "timestamp": "2026-08-31T09:24:28.631Z",
57
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
58
- },
59
- {
60
- "type": "session.mcp_server_status_changed",
61
- "data": {
62
- "serverName": "github-mcp-server",
63
- "status": "connected"
64
- },
65
- "ephemeral": true,
66
- "id": "fa8ba7fc-050c-4e1c-812b-cfd11bbf3f76",
67
- "timestamp": "2026-08-31T09:24:28.977Z",
68
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
69
- },
70
- {
71
- "type": "session.mcp_servers_loaded",
72
- "data": {
73
- "servers": [
74
- {
75
- "name": "github-mcp-server",
76
- "status": "connected",
77
- "source": "builtin"
78
- }
79
- ]
80
- },
81
- "ephemeral": true,
82
- "id": "4b019d79-ed2a-4b61-b039-92370910ad54",
83
- "timestamp": "2026-08-31T09:24:28.977Z",
84
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
85
- },
86
- {
87
- "type": "session.tools_updated",
88
- "data": {
89
- "model": "spike-model"
90
- },
91
- "ephemeral": true,
92
- "id": "313dcd44-7779-4c39-a2ed-50d9cf6f15a3",
93
- "timestamp": "2026-08-31T09:24:29.249Z",
94
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
95
- },
96
- {
97
- "type": "user.message",
98
- "data": {
99
- "content": "Think then answer",
100
- "transformedContent": "<current_datetime>2026-08-31T09:24:29.249+00:00</current_datetime>\n\nThink then answer",
101
- "supportedNativeDocumentMimeTypes": [],
102
- "delivery": "idle",
103
- "interactionId": "d822b1ed-317c-48fb-9238-bb06bc96b6b9",
104
- "turnId": "0",
105
- "parentAgentTaskId": "4c14985f-5665-41eb-a513-8abf05569efb"
106
- },
107
- "id": "aba0e0f1-144c-407d-8dd1-ceed2df50b87",
108
- "timestamp": "2026-08-31T09:24:29.249Z",
109
- "parentId": "e59d8907-154e-455a-b935-40f18a42e09f"
110
- },
111
- {
112
- "type": "model.turn_started",
113
- "data": {
114
- "kind": "turn_started",
115
- "model": "spike-model",
116
- "modelInfo": {
117
- "id": "spike-model",
118
- "name": "spike-model",
119
- "capabilities": {
120
- "supports": {
121
- "vision": false,
122
- "adaptive_thinking": "unsupported"
123
- },
124
- "limits": {
125
- "max_prompt_tokens": 128000,
126
- "max_context_window_tokens": 200000,
127
- "vision": {
128
- "max_prompt_image_size": 3145728,
129
- "max_prompt_images": 1,
130
- "supported_media_types": [
131
- "image/jpeg",
132
- "image/png",
133
- "image/webp"
134
- ]
135
- }
136
- }
137
- },
138
- "supported_endpoints": [
139
- "/chat/completions"
140
- ]
141
- },
142
- "turn": 0,
143
- "timestampMs": 1788168269254
144
- },
145
- "ephemeral": true,
146
- "id": "999a0a08-6ae7-4208-af15-388b0a4f5965",
147
- "timestamp": "2026-08-31T09:24:29.254Z",
148
- "parentId": "1481878b-b9e6-4935-9893-27d0f51c97a8"
149
- },
150
- {
151
- "type": "assistant.turn_start",
152
- "data": {
153
- "turnId": "0",
154
- "interactionId": "d822b1ed-317c-48fb-9238-bb06bc96b6b9"
155
- },
156
- "id": "99ddf37a-85ac-4789-a2eb-1f827ade32ca",
157
- "timestamp": "2026-08-31T09:24:29.255Z",
158
- "parentId": "1481878b-b9e6-4935-9893-27d0f51c97a8"
159
- },
160
- {
161
- "type": "session.usage_info",
162
- "ephemeral": true,
163
- "data": {
164
- "tokenLimit": 128000,
165
- "currentTokens": 13226,
166
- "messagesLength": 2,
167
- "systemTokens": 6142,
168
- "conversationTokens": 33,
169
- "toolDefinitionsTokens": 7051,
170
- "isInitial": true
171
- },
172
- "id": "33e65cf0-e8a9-494c-9e58-49aafbcd7ae6",
173
- "timestamp": "2026-08-31T09:24:29.274Z",
174
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
175
- },
176
- {
177
- "type": "model.log",
178
- "data": {
179
- "kind": "log",
180
- "level": "debug",
181
- "message": "Model does not support vision, skipping image processing"
182
- },
183
- "ephemeral": true,
184
- "id": "c7f8e734-40c8-4c9d-af95-7a22dc29a8f8",
185
- "timestamp": "2026-08-31T09:24:29.275Z",
186
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
187
- },
188
- {
189
- "type": "model.call_start",
190
- "data": {
191
- "turnId": "0",
192
- "model": "spike-model"
193
- },
194
- "ephemeral": true,
195
- "id": "65b6159a-ac95-4ced-8106-e5e9e0dad0ee",
196
- "timestamp": "2026-08-31T09:24:29.276Z",
197
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
198
- },
199
- {
200
- "type": "model.model_call_started",
201
- "data": {
202
- "kind": "model_call_started",
203
- "model": "spike-model",
204
- "modelInfo": {
205
- "id": "spike-model",
206
- "name": "spike-model",
207
- "capabilities": {
208
- "supports": {
209
- "vision": false,
210
- "adaptive_thinking": "unsupported"
211
- },
212
- "limits": {
213
- "max_prompt_tokens": 128000,
214
- "max_context_window_tokens": 200000,
215
- "vision": {
216
- "max_prompt_image_size": 3145728,
217
- "max_prompt_images": 1,
218
- "supported_media_types": [
219
- "image/jpeg",
220
- "image/png",
221
- "image/webp"
222
- ]
223
- }
224
- }
225
- },
226
- "supported_endpoints": [
227
- "/chat/completions"
228
- ]
229
- },
230
- "turn": 0,
231
- "timestampMs": 1788168269276
232
- },
233
- "ephemeral": true,
234
- "id": "a4c037ee-0bea-40a0-9c5b-a8e5ea08fefc",
235
- "timestamp": "2026-08-31T09:24:29.276Z",
236
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
237
- },
238
- {
239
- "type": "assistant.streaming_delta",
240
- "data": {
241
- "totalResponseSizeBytes": 12
242
- },
243
- "ephemeral": true,
244
- "id": "91294966-a652-4485-aca1-2d017846ad23",
245
- "timestamp": "2026-08-31T09:24:29.283Z",
246
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
247
- },
248
- {
249
- "type": "assistant.reasoning_delta",
250
- "data": {
251
- "reasoningId": "6af51cff-da01-474c-aca0-04f9cffd8bd1",
252
- "deltaContent": "Let me think"
253
- },
254
- "ephemeral": true,
255
- "id": "639c5433-eb9d-4c87-aa44-5bdc0d5a9f59",
256
- "timestamp": "2026-08-31T09:24:29.283Z",
257
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
258
- },
259
- {
260
- "type": "assistant.streaming_delta",
261
- "data": {
262
- "totalResponseSizeBytes": 23
263
- },
264
- "ephemeral": true,
265
- "id": "da9c525a-d5e6-439d-a3ac-e680f547eabf",
266
- "timestamp": "2026-08-31T09:24:29.343Z",
267
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
268
- },
269
- {
270
- "type": "assistant.reasoning_delta",
271
- "data": {
272
- "reasoningId": "6af51cff-da01-474c-aca0-04f9cffd8bd1",
273
- "deltaContent": " about this"
274
- },
275
- "ephemeral": true,
276
- "id": "2f079082-cc4c-4cd3-a888-82a98804dd99",
277
- "timestamp": "2026-08-31T09:24:29.343Z",
278
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
279
- },
280
- {
281
- "type": "assistant.streaming_delta",
282
- "data": {
283
- "totalResponseSizeBytes": 34
284
- },
285
- "ephemeral": true,
286
- "id": "846265b4-0073-4de9-a95a-e3e01b8ad33d",
287
- "timestamp": "2026-08-31T09:24:29.403Z",
288
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
289
- },
290
- {
291
- "type": "assistant.reasoning_delta",
292
- "data": {
293
- "reasoningId": "6af51cff-da01-474c-aca0-04f9cffd8bd1",
294
- "deltaContent": " carefully."
295
- },
296
- "ephemeral": true,
297
- "id": "d38b8326-0a02-48b1-94fb-c8c78bf3c3ed",
298
- "timestamp": "2026-08-31T09:24:29.403Z",
299
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
300
- },
301
- {
302
- "type": "assistant.streaming_delta",
303
- "data": {
304
- "totalResponseSizeBytes": 37
305
- },
306
- "ephemeral": true,
307
- "id": "1e672dae-3c07-4224-a283-c85eb6dff2ad",
308
- "timestamp": "2026-08-31T09:24:29.463Z",
309
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
310
- },
311
- {
312
- "type": "assistant.message_start",
313
- "data": {
314
- "messageId": "b0fbaa4e-b81b-44c9-ba27-0f22ad7369ea"
315
- },
316
- "ephemeral": true,
317
- "id": "f8625a26-29ee-497a-b710-914575c1cfac",
318
- "timestamp": "2026-08-31T09:24:29.463Z",
319
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
320
- },
321
- {
322
- "type": "assistant.message_delta",
323
- "data": {
324
- "messageId": "b0fbaa4e-b81b-44c9-ba27-0f22ad7369ea",
325
- "deltaContent": "SPI"
326
- },
327
- "ephemeral": true,
328
- "id": "d7472fa0-18d0-45bf-8c3d-8dddafef024d",
329
- "timestamp": "2026-08-31T09:24:29.463Z",
330
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
331
- },
332
- {
333
- "type": "assistant.streaming_delta",
334
- "data": {
335
- "totalResponseSizeBytes": 39
336
- },
337
- "ephemeral": true,
338
- "id": "12785015-4acc-4ac9-b9b0-f6d2d98c155e",
339
- "timestamp": "2026-08-31T09:24:29.524Z",
340
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
341
- },
342
- {
343
- "type": "assistant.message_delta",
344
- "data": {
345
- "messageId": "b0fbaa4e-b81b-44c9-ba27-0f22ad7369ea",
346
- "deltaContent": "KE"
347
- },
348
- "ephemeral": true,
349
- "id": "50b57168-d160-4f43-8df8-da6709c44c5b",
350
- "timestamp": "2026-08-31T09:24:29.524Z",
351
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
352
- },
353
- {
354
- "type": "assistant.streaming_delta",
355
- "data": {
356
- "totalResponseSizeBytes": 42
357
- },
358
- "ephemeral": true,
359
- "id": "a57f068a-68ed-4e07-a001-d59c0375fe46",
360
- "timestamp": "2026-08-31T09:24:29.585Z",
361
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
362
- },
363
- {
364
- "type": "assistant.message_delta",
365
- "data": {
366
- "messageId": "b0fbaa4e-b81b-44c9-ba27-0f22ad7369ea",
367
- "deltaContent": "_OK"
368
- },
369
- "ephemeral": true,
370
- "id": "6655a8b5-7cac-495d-9afe-56b264d10636",
371
- "timestamp": "2026-08-31T09:24:29.585Z",
372
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
373
- },
374
- {
375
- "type": "assistant.usage",
376
- "data": {
377
- "model": "spike-model",
378
- "inputTokens": 0,
379
- "outputTokens": 0,
380
- "cacheReadTokens": 0,
381
- "cacheWriteTokens": 0,
382
- "reasoningTokens": 0,
383
- "cost": 0,
384
- "duration": 372,
385
- "timeToFirstTokenMs": 6.664305,
386
- "outputTtftMs": 6.707647,
387
- "interTokenLatencyMs": 51.882867142857144,
388
- "initiator": "user",
389
- "interactionType": "conversation-agent",
390
- "isByok": true,
391
- "isAuto": false,
392
- "maxPromptTokens": 128000,
393
- "transport": "http",
394
- "apiCallId": "chatcmpl-spike-1",
395
- "rte": false,
396
- "apiEndpoint": "/chat/completions",
397
- "quotaSnapshots": {},
398
- "reasoningEffort": "medium",
399
- "availableToolCount": 23,
400
- "toolTokenCount": 7051,
401
- "frontierSource": "estimated",
402
- "cacheDetailsReported": false,
403
- "numToolCalls": 0,
404
- "toolCounts": {},
405
- "finishReason": "stop",
406
- "contentFilterTriggered": false
407
- },
408
- "ephemeral": true,
409
- "id": "fb9929f6-eedb-45ab-b3b3-4610886f4fa0",
410
- "timestamp": "2026-08-31T09:24:29.649Z",
411
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
412
- },
413
- {
414
- "type": "model.model_call_success",
415
- "data": {
416
- "kind": "model_call_success",
417
- "turn": 0,
418
- "modelCallDurationMs": 372,
419
- "ttftMs": 6.664305,
420
- "outputTtftMs": 6.707647,
421
- "interTokenLatencyMs": 51.882867142857144,
422
- "modelCall": {
423
- "model": "spike-model",
424
- "api_id": "chatcmpl-spike-1",
425
- "api_endpoint": "/chat/completions",
426
- "request_id": null,
427
- "client_request_id": null,
428
- "service_request_id": null,
429
- "rte": false,
430
- "initiator": "user",
431
- "transport": "http"
432
- },
433
- "responseChunk": {
434
- "object": "chat.completion.chunk",
435
- "id": "chatcmpl-spike-1",
436
- "choices": [
437
- {
438
- "delta": {
439
- "responses_message_status": "completed",
440
- "role": "assistant",
441
- "content": "SPIKE_OK",
442
- "refusal": null,
443
- "reasoning_text": "Let me think about this carefully."
444
- },
445
- "finish_reason": "stop",
446
- "index": 0
447
- }
448
- ],
449
- "created": 1788168269,
450
- "model": "spike-model"
451
- },
452
- "quotaSnapshots": {},
453
- "rte": false,
454
- "reasoningEffort": "medium",
455
- "maxPromptTokens": 128000,
456
- "toolCount": 23,
457
- "toolTokenCount": 7051
458
- },
459
- "ephemeral": true,
460
- "id": "5bd94e39-4a1f-45e1-9d85-4b602246f23e",
461
- "timestamp": "2026-08-31T09:24:29.650Z",
462
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
463
- },
464
- {
465
- "type": "model.call_finished",
466
- "data": {
467
- "turnId": "0",
468
- "dispatchDurationMs": 372,
469
- "outcome": "success",
470
- "editClassifierVersion": 1,
471
- "interactionId": "d822b1ed-317c-48fb-9238-bb06bc96b6b9",
472
- "containsBuiltInFileEditRequest": false
473
- },
474
- "ephemeral": true,
475
- "id": "8c66b35f-5c1c-4cf9-adc3-f7812ca641a6",
476
- "timestamp": "2026-08-31T09:24:29.650Z",
477
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
478
- },
479
- {
480
- "type": "model.message",
481
- "data": {
482
- "kind": "message",
483
- "turn": 0,
484
- "modelCall": {
485
- "model": "spike-model",
486
- "api_id": "chatcmpl-spike-1",
487
- "api_endpoint": "/chat/completions",
488
- "request_id": null,
489
- "client_request_id": null,
490
- "service_request_id": null,
491
- "rte": false,
492
- "initiator": "user",
493
- "transport": "http"
494
- },
495
- "reasoningWireField": "reasoning_content",
496
- "message": {
497
- "reasoning_text": "Let me think about this carefully.",
498
- "content": "SPIKE_OK",
499
- "role": "assistant",
500
- "refusal": null,
501
- "apiCallId": "chatcmpl-spike-1"
502
- }
503
- },
504
- "ephemeral": true,
505
- "id": "78f3e0c4-55c1-4a43-a88f-21db2310677d",
506
- "timestamp": "2026-08-31T09:24:29.650Z",
507
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
508
- },
509
- {
510
- "type": "assistant.message",
511
- "data": {
512
- "messageId": "b0fbaa4e-b81b-44c9-ba27-0f22ad7369ea",
513
- "model": "spike-model",
514
- "content": "SPIKE_OK",
515
- "toolRequests": [],
516
- "interactionId": "d822b1ed-317c-48fb-9238-bb06bc96b6b9",
517
- "turnId": "0",
518
- "reasoningText": "Let me think about this carefully.",
519
- "rte": false,
520
- "apiCallId": "chatcmpl-spike-1"
521
- },
522
- "id": "648f77e3-f7fc-453d-b479-9b3fa2379db9",
523
- "timestamp": "2026-08-31T09:24:29.651Z",
524
- "parentId": "99ddf37a-85ac-4789-a2eb-1f827ade32ca"
525
- },
526
- {
527
- "type": "assistant.reasoning",
528
- "data": {
529
- "reasoningId": "6af51cff-da01-474c-aca0-04f9cffd8bd1",
530
- "content": "Let me think about this carefully.",
531
- "rte": false
532
- },
533
- "ephemeral": true,
534
- "id": "e3610900-c1fc-4188-b840-4dc7bd5690e9",
535
- "timestamp": "2026-08-31T09:24:29.652Z",
536
- "parentId": "648f77e3-f7fc-453d-b479-9b3fa2379db9"
537
- },
538
- {
539
- "type": "model.response",
540
- "data": {
541
- "kind": "response",
542
- "turn": 0,
543
- "modelCall": {
544
- "model": "spike-model",
545
- "api_id": "chatcmpl-spike-1"
546
- },
547
- "response": {
548
- "reasoning_text": "Let me think about this carefully.",
549
- "content": "SPIKE_OK",
550
- "role": "assistant",
551
- "refusal": null
552
- }
553
- },
554
- "ephemeral": true,
555
- "id": "81ea01da-5641-4ed4-9fd4-c13b2ebf7c3d",
556
- "timestamp": "2026-08-31T09:24:29.653Z",
557
- "parentId": "648f77e3-f7fc-453d-b479-9b3fa2379db9"
558
- },
559
- {
560
- "type": "model.turn_ended",
561
- "data": {
562
- "kind": "turn_ended",
563
- "model": "spike-model",
564
- "modelInfo": {
565
- "id": "spike-model",
566
- "name": "spike-model",
567
- "capabilities": {
568
- "supports": {
569
- "vision": false,
570
- "adaptive_thinking": "unsupported"
571
- },
572
- "limits": {
573
- "max_prompt_tokens": 128000,
574
- "max_context_window_tokens": 200000,
575
- "vision": {
576
- "max_prompt_image_size": 3145728,
577
- "max_prompt_images": 1,
578
- "supported_media_types": [
579
- "image/jpeg",
580
- "image/png",
581
- "image/webp"
582
- ]
583
- }
584
- }
585
- },
586
- "supported_endpoints": [
587
- "/chat/completions"
588
- ]
589
- },
590
- "turn": 0,
591
- "timestampMs": 1788168269653
592
- },
593
- "ephemeral": true,
594
- "id": "4ef485d8-11e4-4449-bff3-56de2211de0d",
595
- "timestamp": "2026-08-31T09:24:29.653Z",
596
- "parentId": "648f77e3-f7fc-453d-b479-9b3fa2379db9"
597
- },
598
- {
599
- "type": "assistant.turn_end",
600
- "data": {
601
- "turnId": "0"
602
- },
603
- "id": "876bffd8-eda2-4a99-a188-dbd98237443b",
604
- "timestamp": "2026-08-31T09:24:29.654Z",
605
- "parentId": "648f77e3-f7fc-453d-b479-9b3fa2379db9"
606
- },
607
- {
608
- "type": "assistant.idle",
609
- "data": {},
610
- "ephemeral": true,
611
- "id": "ee953adc-b721-44b3-9aaf-70b263c86451",
612
- "timestamp": "2026-08-31T09:24:29.658Z",
613
- "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
614
- },
615
- {
616
- "type": "session.idle",
617
- "data": {
618
- "mode": "interactive"
619
- },
620
- "ephemeral": true,
621
- "id": "440c9d94-ea53-4938-b987-27da9d482262",
622
- "timestamp": "2026-08-31T09:24:29.658Z",
623
- "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
624
- }
625
- ]