@oar-sh/oar 0.9.2 → 0.9.3

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 (94) hide show
  1. package/CHANGELOG.md +269 -0
  2. package/README.md +407 -424
  3. package/bin/oar.js +25 -10
  4. package/package.json +7 -4
  5. package/server/README.md +1 -1
  6. package/server/claude-worker/claude-session-process.mjs +981 -44
  7. package/server/claude-worker/claude-session-worker.mjs +45 -4
  8. package/server/claude-worker/claude-turn-publisher.mjs +81 -20
  9. package/server/claude-worker/claude-worker-link-wiring.mjs +9 -0
  10. package/server/copilot-worker/copilot-ask-user-tool.mjs +89 -0
  11. package/server/copilot-worker/copilot-continuation-signals.mjs +55 -0
  12. package/server/copilot-worker/copilot-question-bridge.mjs +34 -12
  13. package/server/copilot-worker/copilot-sdk-event-normalizer.mjs +101 -12
  14. package/server/copilot-worker/copilot-sdk-session-process.mjs +2269 -492
  15. package/server/copilot-worker/copilot-sdk-session-worker.mjs +82 -20
  16. package/server/db-schema.mjs +20 -0
  17. package/server/migrations/0004-steer-settle-markers.mjs +119 -0
  18. package/server/public/app/api-client.js +22 -2
  19. package/server/public/app/ask-user-view.js +102 -13
  20. package/server/public/app/attachments-view.js +37 -2
  21. package/server/public/app/background-task-timeout-options.mjs +9 -0
  22. package/server/public/app/background-tasks-view.mjs +33 -18
  23. package/server/public/app/bootstrap.js +34 -8
  24. package/server/public/app/composer-control-state.mjs +52 -34
  25. package/server/public/app/conversation-draft-sync.mjs +187 -0
  26. package/server/public/app/conversation-list-filter.mjs +86 -0
  27. package/server/public/app/conversation-provider-indicator.mjs +8 -0
  28. package/server/public/app/conversation-view.js +919 -194
  29. package/server/public/app/emoji-view.js +2 -0
  30. package/server/public/app/font-scaling.js +4 -37
  31. package/server/public/app/journal-view.js +145 -5
  32. package/server/public/app/model-selector-options.mjs +1 -1
  33. package/server/public/app/question-multi-select.mjs +52 -0
  34. package/server/public/app/relay-prompt-sanitizer.mjs +17 -2
  35. package/server/public/app/settings-modal.js +8 -6
  36. package/server/public/app/socket-handlers.js +19 -0
  37. package/server/public/app/steered-turn-merge.mjs +100 -0
  38. package/server/public/app/store.js +126 -15
  39. package/server/public/app/sync-outbox.mjs +16 -8
  40. package/server/public/app/tool-activity-emoji.mjs +36 -0
  41. package/server/public/app/transcript-viewport-anchor.mjs +210 -0
  42. package/server/public/index.html +206 -9
  43. package/server/public/sw.js +7 -0
  44. package/server/relay-tools.md +2 -0
  45. package/server/repositories/message-repository.mjs +61 -18
  46. package/server/repositories/question-repository.mjs +15 -0
  47. package/server/repositories/session-repository.mjs +7 -31
  48. package/server/routes/messages-routes.mjs +488 -46
  49. package/server/routes/sessions-routes.mjs +298 -55
  50. package/server/server-runtime.mjs +65 -25
  51. package/server/services/live-turn-picker.mjs +47 -0
  52. package/server/services/relay-prompt-sanitizer.mjs +17 -2
  53. package/server/services/relay-question-context.mjs +46 -0
  54. package/server/services/sdk-session-import-service.mjs +49 -7
  55. package/server/services/session-worker-registry-service.mjs +75 -0
  56. package/server/services/session-worker-supervisor-service.mjs +7 -1
  57. package/server/services/session-worker-websocket-service.mjs +23 -1
  58. package/server/services/steer-resend.mjs +45 -0
  59. package/shared/background-task-timeout.mjs +12 -4
  60. package/shared/control-poller.mjs +4 -1
  61. package/shared/question-multi-select.mjs +16 -0
  62. package/shared/relay-stop-failure.mjs +15 -0
  63. package/shared/slash-command-guard.mjs +76 -0
  64. package/shared/steer-note.mjs +66 -0
  65. package/shared/steer-settle-failure.mjs +89 -0
  66. package/shared/steer-settle-markers.mjs +18 -0
  67. package/shared/worker-crash-guard.mjs +40 -25
  68. package/shared/worker-runtime/heartbeat.mjs +55 -1
  69. package/shared/worker-runtime/runner-link-wiring.mjs +44 -0
  70. package/shared/worker-runtime/worker-websocket-link.mjs +119 -8
  71. package/server/claude-worker/claude-session-test-harness.mjs +0 -250
  72. package/server/claude-worker/fixtures/workflow-run-record.json +0 -1
  73. package/server/copilot-worker/copilot-sdk-test-harness.mjs +0 -382
  74. package/server/copilot-worker/fixtures/abort-turn.json +0 -588
  75. package/server/copilot-worker/fixtures/ask-user-turn.json +0 -1154
  76. package/server/copilot-worker/fixtures/background-timer-continuation.json +0 -445
  77. package/server/copilot-worker/fixtures/background-timer-turn.json +0 -497
  78. package/server/copilot-worker/fixtures/happy-turn.json +0 -566
  79. package/server/copilot-worker/fixtures/quota-turn.json +0 -647
  80. package/server/copilot-worker/fixtures/reasoning-turn.json +0 -625
  81. package/server/copilot-worker/fixtures/resume-turn.json +0 -700
  82. package/server/copilot-worker/fixtures/subagent-turn.json +0 -1378
  83. package/server/copilot-worker/fixtures/tool-permission-turn.json +0 -1293
  84. package/server/routes/messages-routes-test-harness.mjs +0 -111
  85. package/server/services/fixtures/claude-auth-stub.cmd +0 -1
  86. package/server/services/fixtures/claude-auth-stub.mjs +0 -76
  87. package/server/services/fixtures/claude-auth-stub.sh +0 -4
  88. package/server/services/fixtures/cli-install-stub.cmd +0 -1
  89. package/server/services/fixtures/cli-install-stub.mjs +0 -98
  90. package/server/services/fixtures/cli-install-stub.sh +0 -4
  91. package/server/services/fixtures/grok-stub.cmd +0 -1
  92. package/server/services/fixtures/grok-stub.mjs +0 -89
  93. package/server/services/fixtures/grok-stub.sh +0 -4
  94. package/shared/fixtures/copilot-catalog-raw-2026-09-07.json +0 -2363
@@ -1,566 +0,0 @@
1
- [
2
- {
3
- "type": "session.start",
4
- "data": {
5
- "sessionId": "0df2b9d0-08a6-429a-9a02-80e4c698eb86",
6
- "version": 1,
7
- "producer": "copilot-agent",
8
- "copilotVersion": "0.0.0",
9
- "startTime": "2026-08-31T09:23:29.277Z",
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": "1a9c4b33-043d-43ec-9a71-216ef98db922",
19
- "timestamp": "2026-08-31T09:23:29.289Z",
20
- "parentId": null
21
- },
22
- {
23
- "type": "pending_messages.modified",
24
- "data": {},
25
- "ephemeral": true,
26
- "id": "683c4081-846c-4b9e-b736-89dbde280e43",
27
- "timestamp": "2026-08-31T09:23:29.330Z",
28
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
29
- },
30
- {
31
- "type": "pending_messages.modified",
32
- "data": {},
33
- "ephemeral": true,
34
- "id": "b7637067-2a50-476d-a3cd-f918f48ab4df",
35
- "timestamp": "2026-08-31T09:23:29.333Z",
36
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
37
- },
38
- {
39
- "type": "session.title_changed",
40
- "data": {
41
- "title": "Say SPIKE_TEXT please"
42
- },
43
- "ephemeral": true,
44
- "id": "8bc42dae-24e9-4848-9312-799d78e708c2",
45
- "timestamp": "2026-08-31T09:23:29.338Z",
46
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
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": "23b9dff4-17a6-46b1-85dc-6201a330e73a",
56
- "timestamp": "2026-08-31T09:23:29.352Z",
57
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
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": "f10b4fe5-400b-4db6-9372-3a0959c92ec1",
67
- "timestamp": "2026-08-31T09:23:29.705Z",
68
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
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": "aac49a6b-7f4c-4ae6-a6dc-3054974d70b8",
83
- "timestamp": "2026-08-31T09:23:29.705Z",
84
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
85
- },
86
- {
87
- "type": "session.tools_updated",
88
- "data": {
89
- "model": "spike-model"
90
- },
91
- "ephemeral": true,
92
- "id": "aa6d257f-7156-421a-b82f-c85b522b11e9",
93
- "timestamp": "2026-08-31T09:23:29.973Z",
94
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
95
- },
96
- {
97
- "type": "user.message",
98
- "data": {
99
- "content": "Say SPIKE_TEXT please",
100
- "transformedContent": "<current_datetime>2026-08-31T09:23:29.973+00:00</current_datetime>\n\nSay SPIKE_TEXT please",
101
- "supportedNativeDocumentMimeTypes": [],
102
- "delivery": "idle",
103
- "interactionId": "8aec9378-09ea-45ba-a625-207341389655",
104
- "turnId": "0",
105
- "parentAgentTaskId": "44fee889-837a-4925-9b84-36ccd9f53040"
106
- },
107
- "id": "284e3ba3-a590-4959-b634-2d24fbea4e50",
108
- "timestamp": "2026-08-31T09:23:29.973Z",
109
- "parentId": "1a9c4b33-043d-43ec-9a71-216ef98db922"
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": 1788168209977
144
- },
145
- "ephemeral": true,
146
- "id": "db5b2371-586a-4a79-ab53-e92203e6da55",
147
- "timestamp": "2026-08-31T09:23:29.977Z",
148
- "parentId": "4427508b-f00a-4489-aa66-7284bab6c698"
149
- },
150
- {
151
- "type": "assistant.turn_start",
152
- "data": {
153
- "turnId": "0",
154
- "interactionId": "8aec9378-09ea-45ba-a625-207341389655"
155
- },
156
- "id": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb",
157
- "timestamp": "2026-08-31T09:23:29.977Z",
158
- "parentId": "4427508b-f00a-4489-aa66-7284bab6c698"
159
- },
160
- {
161
- "type": "session.usage_info",
162
- "ephemeral": true,
163
- "data": {
164
- "tokenLimit": 128000,
165
- "currentTokens": 12519,
166
- "messagesLength": 2,
167
- "systemTokens": 5597,
168
- "conversationTokens": 35,
169
- "toolDefinitionsTokens": 6887,
170
- "isInitial": true
171
- },
172
- "id": "f3f8b4f3-605e-446f-8107-b31754c5076f",
173
- "timestamp": "2026-08-31T09:23:29.997Z",
174
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
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": "f517c3b8-71b6-44b4-afe7-d4590067c595",
185
- "timestamp": "2026-08-31T09:23:29.998Z",
186
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
187
- },
188
- {
189
- "type": "model.call_start",
190
- "data": {
191
- "turnId": "0",
192
- "model": "spike-model"
193
- },
194
- "ephemeral": true,
195
- "id": "847622e0-b57d-4c07-913d-dba08b40003b",
196
- "timestamp": "2026-08-31T09:23:29.998Z",
197
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
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": 1788168209998
232
- },
233
- "ephemeral": true,
234
- "id": "1536bfce-15af-460b-b97f-e5997d0c7c46",
235
- "timestamp": "2026-08-31T09:23:29.999Z",
236
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
237
- },
238
- {
239
- "type": "assistant.streaming_delta",
240
- "data": {
241
- "totalResponseSizeBytes": 3
242
- },
243
- "ephemeral": true,
244
- "id": "1b4fabb5-0d5f-4b79-8757-fcafc1260f99",
245
- "timestamp": "2026-08-31T09:23:30.009Z",
246
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
247
- },
248
- {
249
- "type": "assistant.message_start",
250
- "data": {
251
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b"
252
- },
253
- "ephemeral": true,
254
- "id": "92ccc4ba-da8b-475e-bf8a-f524065876c0",
255
- "timestamp": "2026-08-31T09:23:30.009Z",
256
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
257
- },
258
- {
259
- "type": "assistant.message_delta",
260
- "data": {
261
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b",
262
- "deltaContent": "SPI"
263
- },
264
- "ephemeral": true,
265
- "id": "6995f85b-7e21-4621-ac9c-efb58b934aaf",
266
- "timestamp": "2026-08-31T09:23:30.009Z",
267
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
268
- },
269
- {
270
- "type": "assistant.streaming_delta",
271
- "data": {
272
- "totalResponseSizeBytes": 5
273
- },
274
- "ephemeral": true,
275
- "id": "88fe55c7-0356-4ce8-94b4-4266507613d6",
276
- "timestamp": "2026-08-31T09:23:30.089Z",
277
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
278
- },
279
- {
280
- "type": "assistant.message_delta",
281
- "data": {
282
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b",
283
- "deltaContent": "KE"
284
- },
285
- "ephemeral": true,
286
- "id": "e5b66d93-c858-4429-a17d-26b7faa07618",
287
- "timestamp": "2026-08-31T09:23:30.089Z",
288
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
289
- },
290
- {
291
- "type": "assistant.streaming_delta",
292
- "data": {
293
- "totalResponseSizeBytes": 6
294
- },
295
- "ephemeral": true,
296
- "id": "55f4bf5e-1baf-4832-abd5-eb1ba291f56b",
297
- "timestamp": "2026-08-31T09:23:30.170Z",
298
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
299
- },
300
- {
301
- "type": "assistant.message_delta",
302
- "data": {
303
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b",
304
- "deltaContent": "_"
305
- },
306
- "ephemeral": true,
307
- "id": "4b773a91-2cc0-475d-a8c6-188ad7187311",
308
- "timestamp": "2026-08-31T09:23:30.170Z",
309
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
310
- },
311
- {
312
- "type": "assistant.streaming_delta",
313
- "data": {
314
- "totalResponseSizeBytes": 8
315
- },
316
- "ephemeral": true,
317
- "id": "e0129f49-40e8-4e5a-b497-1ef2b8ca88e0",
318
- "timestamp": "2026-08-31T09:23:30.251Z",
319
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
320
- },
321
- {
322
- "type": "assistant.message_delta",
323
- "data": {
324
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b",
325
- "deltaContent": "OK"
326
- },
327
- "ephemeral": true,
328
- "id": "79fb932b-70ab-4fc4-9bf2-f3019b1b5c1b",
329
- "timestamp": "2026-08-31T09:23:30.251Z",
330
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
331
- },
332
- {
333
- "type": "assistant.usage",
334
- "data": {
335
- "model": "spike-model",
336
- "inputTokens": 0,
337
- "outputTokens": 0,
338
- "cacheReadTokens": 0,
339
- "cacheWriteTokens": 0,
340
- "reasoningTokens": 0,
341
- "cost": 0,
342
- "duration": 336,
343
- "timeToFirstTokenMs": 8.865065,
344
- "outputTtftMs": 8.909588,
345
- "interTokenLatencyMs": 64.783489,
346
- "initiator": "user",
347
- "interactionType": "conversation-agent",
348
- "isByok": true,
349
- "isAuto": false,
350
- "maxPromptTokens": 128000,
351
- "transport": "http",
352
- "apiCallId": "chatcmpl-spike-1",
353
- "rte": false,
354
- "apiEndpoint": "/chat/completions",
355
- "quotaSnapshots": {},
356
- "reasoningEffort": "medium",
357
- "availableToolCount": 22,
358
- "toolTokenCount": 6887,
359
- "frontierSource": "estimated",
360
- "cacheDetailsReported": false,
361
- "numToolCalls": 0,
362
- "toolCounts": {},
363
- "finishReason": "stop",
364
- "contentFilterTriggered": false
365
- },
366
- "ephemeral": true,
367
- "id": "847e60a1-f5bc-4d4b-961c-589c8dc8093c",
368
- "timestamp": "2026-08-31T09:23:30.336Z",
369
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
370
- },
371
- {
372
- "type": "model.model_call_success",
373
- "data": {
374
- "kind": "model_call_success",
375
- "turn": 0,
376
- "modelCallDurationMs": 336,
377
- "ttftMs": 8.865065,
378
- "outputTtftMs": 8.909588,
379
- "interTokenLatencyMs": 64.783489,
380
- "modelCall": {
381
- "model": "spike-model",
382
- "api_id": "chatcmpl-spike-1",
383
- "api_endpoint": "/chat/completions",
384
- "request_id": null,
385
- "client_request_id": null,
386
- "service_request_id": null,
387
- "rte": false,
388
- "initiator": "user",
389
- "transport": "http"
390
- },
391
- "responseChunk": {
392
- "object": "chat.completion.chunk",
393
- "id": "chatcmpl-spike-1",
394
- "choices": [
395
- {
396
- "delta": {
397
- "responses_message_status": "completed",
398
- "role": "assistant",
399
- "content": "SPIKE_OK",
400
- "refusal": null
401
- },
402
- "finish_reason": "stop",
403
- "index": 0
404
- }
405
- ],
406
- "created": 1788168210,
407
- "model": "spike-model"
408
- },
409
- "quotaSnapshots": {},
410
- "rte": false,
411
- "reasoningEffort": "medium",
412
- "maxPromptTokens": 128000,
413
- "toolCount": 22,
414
- "toolTokenCount": 6887
415
- },
416
- "ephemeral": true,
417
- "id": "c7a8e5d9-714e-4edd-8fbb-55b1cb8f7b05",
418
- "timestamp": "2026-08-31T09:23:30.338Z",
419
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
420
- },
421
- {
422
- "type": "model.call_finished",
423
- "data": {
424
- "turnId": "0",
425
- "dispatchDurationMs": 336,
426
- "outcome": "success",
427
- "editClassifierVersion": 1,
428
- "interactionId": "8aec9378-09ea-45ba-a625-207341389655",
429
- "containsBuiltInFileEditRequest": false
430
- },
431
- "ephemeral": true,
432
- "id": "45a76c24-c054-4fff-bcf1-9b19f494241f",
433
- "timestamp": "2026-08-31T09:23:30.338Z",
434
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
435
- },
436
- {
437
- "type": "model.message",
438
- "data": {
439
- "kind": "message",
440
- "turn": 0,
441
- "modelCall": {
442
- "model": "spike-model",
443
- "api_id": "chatcmpl-spike-1",
444
- "api_endpoint": "/chat/completions",
445
- "request_id": null,
446
- "client_request_id": null,
447
- "service_request_id": null,
448
- "rte": false,
449
- "initiator": "user",
450
- "transport": "http"
451
- },
452
- "message": {
453
- "content": "SPIKE_OK",
454
- "role": "assistant",
455
- "refusal": null,
456
- "apiCallId": "chatcmpl-spike-1"
457
- }
458
- },
459
- "ephemeral": true,
460
- "id": "8702f92f-fb91-41a4-8079-cb5f012ee6dc",
461
- "timestamp": "2026-08-31T09:23:30.338Z",
462
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
463
- },
464
- {
465
- "type": "assistant.message",
466
- "data": {
467
- "messageId": "d26095c5-0b79-488b-aad6-d24da8d0ea5b",
468
- "model": "spike-model",
469
- "content": "SPIKE_OK",
470
- "toolRequests": [],
471
- "interactionId": "8aec9378-09ea-45ba-a625-207341389655",
472
- "turnId": "0",
473
- "rte": false,
474
- "apiCallId": "chatcmpl-spike-1"
475
- },
476
- "id": "cb60f314-7a1f-4658-b832-2ee31c31f6fe",
477
- "timestamp": "2026-08-31T09:23:30.339Z",
478
- "parentId": "7b90f9c5-7f4e-4b01-b4d1-af06011859eb"
479
- },
480
- {
481
- "type": "model.response",
482
- "data": {
483
- "kind": "response",
484
- "turn": 0,
485
- "modelCall": {
486
- "model": "spike-model",
487
- "api_id": "chatcmpl-spike-1"
488
- },
489
- "response": {
490
- "content": "SPIKE_OK",
491
- "role": "assistant",
492
- "refusal": null
493
- }
494
- },
495
- "ephemeral": true,
496
- "id": "2f3baf82-0daf-48d5-a62e-50f8ddba8bbb",
497
- "timestamp": "2026-08-31T09:23:30.340Z",
498
- "parentId": "cb60f314-7a1f-4658-b832-2ee31c31f6fe"
499
- },
500
- {
501
- "type": "model.turn_ended",
502
- "data": {
503
- "kind": "turn_ended",
504
- "model": "spike-model",
505
- "modelInfo": {
506
- "id": "spike-model",
507
- "name": "spike-model",
508
- "capabilities": {
509
- "supports": {
510
- "vision": false,
511
- "adaptive_thinking": "unsupported"
512
- },
513
- "limits": {
514
- "max_prompt_tokens": 128000,
515
- "max_context_window_tokens": 200000,
516
- "vision": {
517
- "max_prompt_image_size": 3145728,
518
- "max_prompt_images": 1,
519
- "supported_media_types": [
520
- "image/jpeg",
521
- "image/png",
522
- "image/webp"
523
- ]
524
- }
525
- }
526
- },
527
- "supported_endpoints": [
528
- "/chat/completions"
529
- ]
530
- },
531
- "turn": 0,
532
- "timestampMs": 1788168210340
533
- },
534
- "ephemeral": true,
535
- "id": "839b3948-7ca9-41af-85f8-57aae68a2c56",
536
- "timestamp": "2026-08-31T09:23:30.340Z",
537
- "parentId": "cb60f314-7a1f-4658-b832-2ee31c31f6fe"
538
- },
539
- {
540
- "type": "assistant.turn_end",
541
- "data": {
542
- "turnId": "0"
543
- },
544
- "id": "c9e5606d-6785-4203-93b4-da752f8a0acf",
545
- "timestamp": "2026-08-31T09:23:30.340Z",
546
- "parentId": "cb60f314-7a1f-4658-b832-2ee31c31f6fe"
547
- },
548
- {
549
- "type": "assistant.idle",
550
- "data": {},
551
- "ephemeral": true,
552
- "id": "ad7c510a-55e9-487f-b910-d86d448e372b",
553
- "timestamp": "2026-08-31T09:23:30.344Z",
554
- "parentId": "c9e5606d-6785-4203-93b4-da752f8a0acf"
555
- },
556
- {
557
- "type": "session.idle",
558
- "data": {
559
- "mode": "interactive"
560
- },
561
- "ephemeral": true,
562
- "id": "75032974-0124-47f8-af59-42f615cca4f6",
563
- "timestamp": "2026-08-31T09:23:30.346Z",
564
- "parentId": "c9e5606d-6785-4203-93b4-da752f8a0acf"
565
- }
566
- ]