@oar-sh/oar 0.9.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 (293) hide show
  1. package/.github/extensions/web-relay/README.md +190 -0
  2. package/.github/extensions/web-relay/extension.mjs +972 -0
  3. package/.github/extensions/web-relay/model-api/model-switching.mjs +338 -0
  4. package/.github/extensions/web-relay/polling/heartbeat.mjs +55 -0
  5. package/.github/extensions/web-relay/polling/polling-loop.mjs +1105 -0
  6. package/.github/extensions/web-relay/runtime/api-client.mjs +34 -0
  7. package/.github/extensions/web-relay/runtime/banner-state.mjs +126 -0
  8. package/.github/extensions/web-relay/runtime/config-loader.mjs +104 -0
  9. package/.github/extensions/web-relay/runtime/debug-log.mjs +27 -0
  10. package/.github/extensions/web-relay/runtime/send-and-wait-errors.mjs +170 -0
  11. package/.github/extensions/web-relay/runtime/session-binding.mjs +78 -0
  12. package/.github/extensions/web-relay/runtime/session-io.mjs +349 -0
  13. package/.github/extensions/web-relay/runtime/session-join-retry.mjs +44 -0
  14. package/.github/extensions/web-relay/runtime/session-registry.mjs +29 -0
  15. package/.github/extensions/web-relay/runtime/session-runtime-manager.mjs +156 -0
  16. package/.github/extensions/web-relay/runtime/session-sync-bridge.mjs +74 -0
  17. package/.github/extensions/web-relay/runtime/worker-websocket-link.mjs +325 -0
  18. package/.github/extensions/web-relay/runtime/workspace-root.mjs +55 -0
  19. package/.github/extensions/web-relay/server-lifecycle/managed-server.mjs +386 -0
  20. package/.github/extensions/web-relay/skills/prompt-context.mjs +160 -0
  21. package/.github/extensions/web-relay/skills/question-bridge.mjs +141 -0
  22. package/.github/extensions/web-relay/skills/question-routing-hooks.mjs +463 -0
  23. package/.github/extensions/web-relay/skills/reasoning-stream.mjs +285 -0
  24. package/.github/extensions/web-relay/skills/subagent-lifecycle.mjs +345 -0
  25. package/.github/extensions/web-relay/skills/tool-activity.mjs +243 -0
  26. package/.github/extensions/web-relay/utils/process-utils.mjs +25 -0
  27. package/.github/extensions/web-relay/utils/token-generation.mjs +58 -0
  28. package/CHANGELOG.md +25 -0
  29. package/LICENSE +21 -0
  30. package/README.md +717 -0
  31. package/bin/bat/oar.bat +46 -0
  32. package/bin/oar.js +665 -0
  33. package/package.json +68 -0
  34. package/server/README.md +1379 -0
  35. package/server/claude-worker/claude-attachments.mjs +134 -0
  36. package/server/claude-worker/claude-preview-tool.mjs +57 -0
  37. package/server/claude-worker/claude-sdk-adapter.mjs +420 -0
  38. package/server/claude-worker/claude-session-process.mjs +2391 -0
  39. package/server/claude-worker/claude-session-test-harness.mjs +236 -0
  40. package/server/claude-worker/claude-session-worker.mjs +186 -0
  41. package/server/claude-worker/claude-transcript-relocator.mjs +189 -0
  42. package/server/claude-worker/claude-turn-publisher.mjs +291 -0
  43. package/server/claude-worker/fixtures/workflow-run-record.json +1 -0
  44. package/server/claude-worker/sdk-message-normalizer.mjs +629 -0
  45. package/server/claude-worker/workflow-progress-digest.mjs +269 -0
  46. package/server/copilot-sdk-runtime.mjs +126 -0
  47. package/server/copilot-worker/copilot-attachments.mjs +97 -0
  48. package/server/copilot-worker/copilot-byok-provider.mjs +121 -0
  49. package/server/copilot-worker/copilot-continuation-signals.mjs +349 -0
  50. package/server/copilot-worker/copilot-plan-board.mjs +110 -0
  51. package/server/copilot-worker/copilot-prompt-context.mjs +86 -0
  52. package/server/copilot-worker/copilot-question-bridge.mjs +216 -0
  53. package/server/copilot-worker/copilot-sdk-adapter.mjs +494 -0
  54. package/server/copilot-worker/copilot-sdk-event-normalizer.mjs +800 -0
  55. package/server/copilot-worker/copilot-sdk-session-process.mjs +1729 -0
  56. package/server/copilot-worker/copilot-sdk-session-worker.mjs +167 -0
  57. package/server/copilot-worker/copilot-sdk-test-harness.mjs +329 -0
  58. package/server/copilot-worker/fixtures/abort-turn.json +588 -0
  59. package/server/copilot-worker/fixtures/ask-user-turn.json +1154 -0
  60. package/server/copilot-worker/fixtures/background-timer-continuation.json +445 -0
  61. package/server/copilot-worker/fixtures/background-timer-turn.json +497 -0
  62. package/server/copilot-worker/fixtures/happy-turn.json +566 -0
  63. package/server/copilot-worker/fixtures/quota-turn.json +647 -0
  64. package/server/copilot-worker/fixtures/reasoning-turn.json +625 -0
  65. package/server/copilot-worker/fixtures/resume-turn.json +700 -0
  66. package/server/copilot-worker/fixtures/subagent-turn.json +1378 -0
  67. package/server/copilot-worker/fixtures/tool-permission-turn.json +1293 -0
  68. package/server/cursor-worker/cursor-ask-user-tool.mjs +83 -0
  69. package/server/cursor-worker/cursor-attachments.mjs +88 -0
  70. package/server/cursor-worker/cursor-context-usage.mjs +85 -0
  71. package/server/cursor-worker/cursor-preview-tool.mjs +44 -0
  72. package/server/cursor-worker/cursor-sdk-adapter.mjs +554 -0
  73. package/server/cursor-worker/cursor-session-worker.mjs +145 -0
  74. package/server/cursor-worker/cursor-subagent-roster.mjs +81 -0
  75. package/server/cursor-worker/cursor-turn-runner.mjs +717 -0
  76. package/server/cursor-worker/sdk-message-normalizer.mjs +485 -0
  77. package/server/db-schema.mjs +932 -0
  78. package/server/features.mjs +106 -0
  79. package/server/grok-worker/acp-client.mjs +434 -0
  80. package/server/grok-worker/acp-host-services.mjs +277 -0
  81. package/server/grok-worker/grok-context-usage.mjs +77 -0
  82. package/server/grok-worker/grok-sdk-adapter.mjs +334 -0
  83. package/server/grok-worker/grok-session-worker.mjs +145 -0
  84. package/server/grok-worker/grok-turn-runner.mjs +523 -0
  85. package/server/grok-worker/sdk-message-normalizer.mjs +311 -0
  86. package/server/migrations/0001-add-structured-answer.mjs +80 -0
  87. package/server/migrations/0002-recent-workspace-roots-path-key.mjs +121 -0
  88. package/server/migrations/0003-push-subscriptions.mjs +87 -0
  89. package/server/public/app/action-confirmations.js +267 -0
  90. package/server/public/app/activity-replay-state.mjs +149 -0
  91. package/server/public/app/api-client.js +1082 -0
  92. package/server/public/app/ask-user-view.js +545 -0
  93. package/server/public/app/attachments-view.js +2112 -0
  94. package/server/public/app/auto-compact-window-options.mjs +59 -0
  95. package/server/public/app/background-tasks-view.mjs +494 -0
  96. package/server/public/app/bootstrap.js +4347 -0
  97. package/server/public/app/claude-auth-ui.js +394 -0
  98. package/server/public/app/claude-thinking-options.mjs +38 -0
  99. package/server/public/app/cli-install-ui.js +455 -0
  100. package/server/public/app/code-copy.mjs +85 -0
  101. package/server/public/app/composer-attachment-cache.mjs +151 -0
  102. package/server/public/app/composer-control-state.mjs +107 -0
  103. package/server/public/app/composer-paste.mjs +132 -0
  104. package/server/public/app/context-tier-options.mjs +68 -0
  105. package/server/public/app/context-usage-view.mjs +338 -0
  106. package/server/public/app/conversation-draft-timestamp-utils.mjs +11 -0
  107. package/server/public/app/conversation-preferences.mjs +91 -0
  108. package/server/public/app/conversation-provider-indicator.mjs +88 -0
  109. package/server/public/app/conversation-view.js +2898 -0
  110. package/server/public/app/cwd-menu-placement.mjs +85 -0
  111. package/server/public/app/cwd-picker.js +605 -0
  112. package/server/public/app/emoji-view.js +101 -0
  113. package/server/public/app/external-link-policy.mjs +80 -0
  114. package/server/public/app/file-preview-navigation.mjs +51 -0
  115. package/server/public/app/font-scaling.js +262 -0
  116. package/server/public/app/git-changes-view.js +339 -0
  117. package/server/public/app/git-diff-model.mjs +109 -0
  118. package/server/public/app/grok-auth-ui.js +387 -0
  119. package/server/public/app/image-downscale.mjs +174 -0
  120. package/server/public/app/in-flight-snapshot.mjs +40 -0
  121. package/server/public/app/infinite-loader.js +164 -0
  122. package/server/public/app/journal-view.js +1141 -0
  123. package/server/public/app/known-cwd-options.mjs +41 -0
  124. package/server/public/app/launch-cwd-path.mjs +23 -0
  125. package/server/public/app/live-message-dedupe.mjs +57 -0
  126. package/server/public/app/message-search-view.js +242 -0
  127. package/server/public/app/model-selector-options.mjs +31 -0
  128. package/server/public/app/model-vision-support.mjs +56 -0
  129. package/server/public/app/new-conversation-model-choice.mjs +67 -0
  130. package/server/public/app/plan-usage-view.mjs +307 -0
  131. package/server/public/app/preview-cards.mjs +273 -0
  132. package/server/public/app/preview-command.mjs +103 -0
  133. package/server/public/app/push-settings.js +370 -0
  134. package/server/public/app/pwa-install.js +456 -0
  135. package/server/public/app/question-schema-view.mjs +71 -0
  136. package/server/public/app/reasoning-effort-labels.mjs +42 -0
  137. package/server/public/app/relay-board-view.js +117 -0
  138. package/server/public/app/relay-dot-state.mjs +69 -0
  139. package/server/public/app/relay-error-ctas.mjs +52 -0
  140. package/server/public/app/relay-prompt-sanitizer.mjs +114 -0
  141. package/server/public/app/relay-thoughts.mjs +98 -0
  142. package/server/public/app/relay-watchdog-policy.mjs +29 -0
  143. package/server/public/app/repo-browser-preferences.mjs +79 -0
  144. package/server/public/app/repo-browser-tree-state.mjs +97 -0
  145. package/server/public/app/router.js +657 -0
  146. package/server/public/app/selection-guard.mjs +93 -0
  147. package/server/public/app/settings-modal.js +1484 -0
  148. package/server/public/app/settings-tabs.js +129 -0
  149. package/server/public/app/slash-autocomplete.mjs +188 -0
  150. package/server/public/app/slash-commands.mjs +183 -0
  151. package/server/public/app/socket-handlers.js +703 -0
  152. package/server/public/app/status-store.mjs +242 -0
  153. package/server/public/app/status-view.mjs +315 -0
  154. package/server/public/app/store.js +1454 -0
  155. package/server/public/app/stream-state.mjs +73 -0
  156. package/server/public/app/streaming-dom-patch.mjs +23 -0
  157. package/server/public/app/sync-outbox.mjs +208 -0
  158. package/server/public/app/tap-actions.js +62 -0
  159. package/server/public/app/thread-order.mjs +54 -0
  160. package/server/public/app/tmux-inspector-view.js +422 -0
  161. package/server/public/app/transcript-separators.mjs +282 -0
  162. package/server/public/app-icon-192.png +0 -0
  163. package/server/public/app-icon-512.png +0 -0
  164. package/server/public/app-icon.svg +4 -0
  165. package/server/public/favicon.ico +0 -0
  166. package/server/public/index.html +5743 -0
  167. package/server/public/manifest.webmanifest +32 -0
  168. package/server/public/sw.js +307 -0
  169. package/server/relay-exit-codes.mjs +4 -0
  170. package/server/relay-self-restart.mjs +170 -0
  171. package/server/relay-tools.md +27 -0
  172. package/server/relay.mjs +1026 -0
  173. package/server/repositories/image-conversation-repository.mjs +317 -0
  174. package/server/repositories/message-repository.mjs +434 -0
  175. package/server/repositories/question-repository.mjs +161 -0
  176. package/server/repositories/session-repository.mjs +320 -0
  177. package/server/repositories/share-visibility-statements.mjs +24 -0
  178. package/server/routes/ask-user-routes.mjs +292 -0
  179. package/server/routes/cache-routes.mjs +44 -0
  180. package/server/routes/git-routes.mjs +92 -0
  181. package/server/routes/messages-routes-test-harness.mjs +111 -0
  182. package/server/routes/messages-routes.mjs +7107 -0
  183. package/server/routes/preview-routes.mjs +108 -0
  184. package/server/routes/push-routes.mjs +59 -0
  185. package/server/routes/relay-board-routes.mjs +268 -0
  186. package/server/routes/sessions-routes.mjs +6150 -0
  187. package/server/server-runtime.mjs +7463 -0
  188. package/server/server.js +24 -0
  189. package/server/services/ask-user-routing-service.mjs +117 -0
  190. package/server/services/cache-rebuild-service.mjs +236 -0
  191. package/server/services/claude-auth-service.mjs +578 -0
  192. package/server/services/claude-context-usage.mjs +240 -0
  193. package/server/services/claude-session-root-service.mjs +228 -0
  194. package/server/services/cli-install-service.mjs +1152 -0
  195. package/server/services/cli-process-runner.mjs +181 -0
  196. package/server/services/cloudflared-tunnel-service.mjs +358 -0
  197. package/server/services/context-snapshot-service.mjs +499 -0
  198. package/server/services/context-usage-view.mjs +160 -0
  199. package/server/services/conversation-preferences-service.mjs +208 -0
  200. package/server/services/cursor-dashboard-usage.mjs +217 -0
  201. package/server/services/cursor-session-root-service.mjs +62 -0
  202. package/server/services/delete-archive-service.mjs +154 -0
  203. package/server/services/drives-path-helpers.mjs +66 -0
  204. package/server/services/fixtures/claude-auth-stub.sh +62 -0
  205. package/server/services/fixtures/cli-install-stub.sh +75 -0
  206. package/server/services/fixtures/grok-stub.sh +86 -0
  207. package/server/services/generated-image-cleanup-service.mjs +114 -0
  208. package/server/services/git-changes-service.mjs +195 -0
  209. package/server/services/github-billing-usage.mjs +133 -0
  210. package/server/services/grok-auth-service.mjs +593 -0
  211. package/server/services/grok-billing-usage.mjs +120 -0
  212. package/server/services/image-context-service.mjs +106 -0
  213. package/server/services/image-operation-service.mjs +135 -0
  214. package/server/services/keyed-mutex-service.mjs +82 -0
  215. package/server/services/mime-sniffer.mjs +118 -0
  216. package/server/services/oar-cli-helpers.mjs +109 -0
  217. package/server/services/oar-state-migration-service.mjs +243 -0
  218. package/server/services/plan-usage-claude.mjs +387 -0
  219. package/server/services/plan-usage-contract.mjs +271 -0
  220. package/server/services/plan-usage-copilot.mjs +421 -0
  221. package/server/services/plan-usage-cursor.mjs +566 -0
  222. package/server/services/plan-usage-grok.mjs +436 -0
  223. package/server/services/plan-usage-service.mjs +487 -0
  224. package/server/services/preview-health-probe.mjs +82 -0
  225. package/server/services/preview-proxy-server.mjs +498 -0
  226. package/server/services/preview-registry-service.mjs +457 -0
  227. package/server/services/preview-static-handler.mjs +237 -0
  228. package/server/services/provider-model-selection.mjs +91 -0
  229. package/server/services/provider-reasoning-effort.mjs +94 -0
  230. package/server/services/push-active-device-service.mjs +57 -0
  231. package/server/services/push-dispatch-service.mjs +459 -0
  232. package/server/services/rate-limit-service.mjs +63 -0
  233. package/server/services/relay-bridge-owner-service.mjs +84 -0
  234. package/server/services/relay-cli-launcher-service.mjs +209 -0
  235. package/server/services/relay-prompt-sanitizer.mjs +137 -0
  236. package/server/services/relay-queue-gate-service.mjs +38 -0
  237. package/server/services/relay-restart-orchestrator-service.mjs +935 -0
  238. package/server/services/relay-singleton-guard.mjs +124 -0
  239. package/server/services/safe-served-content.mjs +57 -0
  240. package/server/services/sdk-session-import-service.mjs +271 -0
  241. package/server/services/sdk-session-sync-service.mjs +207 -0
  242. package/server/services/session-history-refresh-service.mjs +497 -0
  243. package/server/services/session-transcript-service.mjs +419 -0
  244. package/server/services/session-worker-launch-service.mjs +786 -0
  245. package/server/services/session-worker-process-service.mjs +319 -0
  246. package/server/services/session-worker-registry-service.mjs +194 -0
  247. package/server/services/session-worker-stop-service.mjs +141 -0
  248. package/server/services/session-worker-supervisor-service.mjs +898 -0
  249. package/server/services/session-worker-websocket-service.mjs +483 -0
  250. package/server/services/ssh-tunnel-manager-service.mjs +423 -0
  251. package/server/services/status-event-service.mjs +158 -0
  252. package/server/services/tmux-inspector-access-policy.mjs +77 -0
  253. package/server/services/tmux-inspector-socket-service.mjs +191 -0
  254. package/server/services/tmux-inspector-stream-service.mjs +552 -0
  255. package/server/services/tunnel-worker-path-guard.mjs +107 -0
  256. package/server/services/upload-sweep.mjs +60 -0
  257. package/server/services/usage-snapshot-helpers.mjs +209 -0
  258. package/server/services/windows-autostart-service.mjs +115 -0
  259. package/server/services/workspace-root-defaults-service.mjs +34 -0
  260. package/server/services/workspace-root-path-policy.mjs +196 -0
  261. package/server/services/workspace-root-relaunch-service.mjs +132 -0
  262. package/server/services/workspace-symlink-guard.mjs +54 -0
  263. package/server/tools/capture-proxy.mjs +173 -0
  264. package/server/tty-console-bootstrap.mjs +75 -0
  265. package/server/uploads/README.md +36 -0
  266. package/server/uploads/image_input.md +540 -0
  267. package/server/windows-terminal-launcher.mjs +29 -0
  268. package/server/workspace-root.mjs +87 -0
  269. package/shared/ask-user-bridge.mjs +131 -0
  270. package/shared/auto-compact-window.mjs +116 -0
  271. package/shared/background-task-timeout.mjs +52 -0
  272. package/shared/claude-thinking.mjs +101 -0
  273. package/shared/context-window-fallbacks.mjs +148 -0
  274. package/shared/control-poller.mjs +115 -0
  275. package/shared/empty-turn-completion.mjs +20 -0
  276. package/shared/model-catalog-freshness.mjs +11 -0
  277. package/shared/model-descriptors.mjs +118 -0
  278. package/shared/model-id.mjs +147 -0
  279. package/shared/model-refresh.mjs +24 -0
  280. package/shared/openai-reasoning.mjs +13 -0
  281. package/shared/plan-lines.mjs +13 -0
  282. package/shared/preview-instructions.mjs +77 -0
  283. package/shared/preview-tool-core.mjs +191 -0
  284. package/shared/provider-routing.mjs +29 -0
  285. package/shared/question-schema.mjs +315 -0
  286. package/shared/question-timeout.mjs +18 -0
  287. package/shared/stream-emit-gating.mjs +28 -0
  288. package/shared/subagent-run-id.mjs +17 -0
  289. package/shared/thought-cap.mjs +13 -0
  290. package/shared/tool-activity.mjs +98 -0
  291. package/shared/turn-ceiling.mjs +53 -0
  292. package/shared/worker-bootstrap.mjs +44 -0
  293. package/shared/worker-crash-guard.mjs +60 -0
@@ -0,0 +1,1154 @@
1
+ [
2
+ {
3
+ "type": "pending_messages.modified",
4
+ "data": {},
5
+ "ephemeral": true,
6
+ "id": "28d15ad9-70f3-4ed3-a702-d4735701cd3d",
7
+ "timestamp": "2026-08-31T09:24:29.660Z",
8
+ "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
9
+ },
10
+ {
11
+ "type": "pending_messages.modified",
12
+ "data": {},
13
+ "ephemeral": true,
14
+ "id": "0e3eaff7-050a-47a7-9a77-d200e7dfcef1",
15
+ "timestamp": "2026-08-31T09:24:29.660Z",
16
+ "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
17
+ },
18
+ {
19
+ "type": "session.mcp_servers_loaded",
20
+ "data": {
21
+ "servers": [
22
+ {
23
+ "name": "github-mcp-server",
24
+ "status": "connected",
25
+ "source": "builtin"
26
+ }
27
+ ]
28
+ },
29
+ "ephemeral": true,
30
+ "id": "52aeed4c-3651-41a8-8a8f-aa09593d622e",
31
+ "timestamp": "2026-08-31T09:24:29.662Z",
32
+ "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
33
+ },
34
+ {
35
+ "type": "session.tools_updated",
36
+ "data": {
37
+ "model": "spike-model"
38
+ },
39
+ "ephemeral": true,
40
+ "id": "722b0828-f8fb-4301-999e-77d5ae74a98a",
41
+ "timestamp": "2026-08-31T09:24:29.670Z",
42
+ "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
43
+ },
44
+ {
45
+ "type": "user.message",
46
+ "data": {
47
+ "content": "SPIKE_ASK: ask me which environment",
48
+ "transformedContent": "<current_datetime>2026-08-31T09:24:29.670+00:00</current_datetime>\n\nSPIKE_ASK: ask me which environment",
49
+ "supportedNativeDocumentMimeTypes": [],
50
+ "delivery": "idle",
51
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
52
+ "turnId": "0",
53
+ "parentAgentTaskId": "685baaa4-a80e-491e-a494-7275f7433e88"
54
+ },
55
+ "id": "29125620-005c-4b7b-8314-8ecbfab4c8ba",
56
+ "timestamp": "2026-08-31T09:24:29.670Z",
57
+ "parentId": "876bffd8-eda2-4a99-a188-dbd98237443b"
58
+ },
59
+ {
60
+ "type": "model.turn_started",
61
+ "data": {
62
+ "kind": "turn_started",
63
+ "model": "spike-model",
64
+ "modelInfo": {
65
+ "id": "spike-model",
66
+ "name": "spike-model",
67
+ "capabilities": {
68
+ "supports": {
69
+ "vision": false,
70
+ "adaptive_thinking": "unsupported"
71
+ },
72
+ "limits": {
73
+ "max_prompt_tokens": 128000,
74
+ "max_context_window_tokens": 200000,
75
+ "vision": {
76
+ "max_prompt_image_size": 3145728,
77
+ "max_prompt_images": 1,
78
+ "supported_media_types": [
79
+ "image/jpeg",
80
+ "image/png",
81
+ "image/webp"
82
+ ]
83
+ }
84
+ }
85
+ },
86
+ "supported_endpoints": [
87
+ "/chat/completions"
88
+ ]
89
+ },
90
+ "turn": 0,
91
+ "timestampMs": 1788168269673
92
+ },
93
+ "ephemeral": true,
94
+ "id": "0d16aaf1-2663-4464-b2c9-07f4811a2780",
95
+ "timestamp": "2026-08-31T09:24:29.673Z",
96
+ "parentId": "2f831ca3-b8ae-490f-9acf-4b823164c230"
97
+ },
98
+ {
99
+ "type": "assistant.turn_start",
100
+ "data": {
101
+ "turnId": "0",
102
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02"
103
+ },
104
+ "id": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25",
105
+ "timestamp": "2026-08-31T09:24:29.673Z",
106
+ "parentId": "2f831ca3-b8ae-490f-9acf-4b823164c230"
107
+ },
108
+ {
109
+ "type": "session.usage_info",
110
+ "ephemeral": true,
111
+ "data": {
112
+ "tokenLimit": 128000,
113
+ "currentTokens": 13286,
114
+ "messagesLength": 4,
115
+ "systemTokens": 6142,
116
+ "conversationTokens": 93,
117
+ "toolDefinitionsTokens": 7051,
118
+ "isInitial": true
119
+ },
120
+ "id": "0456ff39-e509-4a48-9c98-8c4522b19477",
121
+ "timestamp": "2026-08-31T09:24:29.702Z",
122
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
123
+ },
124
+ {
125
+ "type": "model.log",
126
+ "data": {
127
+ "kind": "log",
128
+ "level": "debug",
129
+ "message": "Model does not support vision, skipping image processing"
130
+ },
131
+ "ephemeral": true,
132
+ "id": "da0a5424-4f5d-48c0-af37-8aac10ffc740",
133
+ "timestamp": "2026-08-31T09:24:29.703Z",
134
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
135
+ },
136
+ {
137
+ "type": "model.call_start",
138
+ "data": {
139
+ "turnId": "0",
140
+ "model": "spike-model"
141
+ },
142
+ "ephemeral": true,
143
+ "id": "dc3cb29e-8a5f-4a60-8769-b2342fe4848e",
144
+ "timestamp": "2026-08-31T09:24:29.703Z",
145
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
146
+ },
147
+ {
148
+ "type": "model.model_call_started",
149
+ "data": {
150
+ "kind": "model_call_started",
151
+ "model": "spike-model",
152
+ "modelInfo": {
153
+ "id": "spike-model",
154
+ "name": "spike-model",
155
+ "capabilities": {
156
+ "supports": {
157
+ "vision": false,
158
+ "adaptive_thinking": "unsupported"
159
+ },
160
+ "limits": {
161
+ "max_prompt_tokens": 128000,
162
+ "max_context_window_tokens": 200000,
163
+ "vision": {
164
+ "max_prompt_image_size": 3145728,
165
+ "max_prompt_images": 1,
166
+ "supported_media_types": [
167
+ "image/jpeg",
168
+ "image/png",
169
+ "image/webp"
170
+ ]
171
+ }
172
+ }
173
+ },
174
+ "supported_endpoints": [
175
+ "/chat/completions"
176
+ ]
177
+ },
178
+ "turn": 0,
179
+ "timestampMs": 1788168269703
180
+ },
181
+ "ephemeral": true,
182
+ "id": "74b6ac1f-01d1-4a01-9975-aa32c5677f47",
183
+ "timestamp": "2026-08-31T09:24:29.704Z",
184
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
185
+ },
186
+ {
187
+ "type": "assistant.streaming_delta",
188
+ "data": {
189
+ "totalResponseSizeBytes": 95
190
+ },
191
+ "ephemeral": true,
192
+ "id": "563e24c4-c415-401b-8968-2f17d1ef604b",
193
+ "timestamp": "2026-08-31T09:24:29.706Z",
194
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
195
+ },
196
+ {
197
+ "type": "assistant.tool_call_delta",
198
+ "data": {
199
+ "toolCallId": "call_ask_2",
200
+ "toolName": "ask_user",
201
+ "toolType": "function",
202
+ "inputDelta": "{\"question\":\"Which environment should I deploy to?\",\"choices\":[\"staging\",\"production\"]}"
203
+ },
204
+ "ephemeral": true,
205
+ "id": "d743467c-0ceb-483e-973f-ae987d6dd39e",
206
+ "timestamp": "2026-08-31T09:24:29.707Z",
207
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
208
+ },
209
+ {
210
+ "type": "assistant.usage",
211
+ "data": {
212
+ "model": "spike-model",
213
+ "inputTokens": 0,
214
+ "outputTokens": 0,
215
+ "cacheReadTokens": 0,
216
+ "cacheWriteTokens": 0,
217
+ "reasoningTokens": 0,
218
+ "cost": 0,
219
+ "duration": 5,
220
+ "timeToFirstTokenMs": 1.760712,
221
+ "outputTtftMs": 1.799395,
222
+ "interTokenLatencyMs": 0.14474749999999997,
223
+ "initiator": "user",
224
+ "interactionType": "conversation-agent",
225
+ "isByok": true,
226
+ "isAuto": false,
227
+ "maxPromptTokens": 128000,
228
+ "transport": "http",
229
+ "apiCallId": "chatcmpl-spike-2",
230
+ "rte": false,
231
+ "apiEndpoint": "/chat/completions",
232
+ "quotaSnapshots": {},
233
+ "reasoningEffort": "medium",
234
+ "availableToolCount": 23,
235
+ "toolTokenCount": 7051,
236
+ "frontierSource": "estimated",
237
+ "cacheDetailsReported": false,
238
+ "numToolCalls": 1,
239
+ "toolCounts": {
240
+ "ask_user": 1
241
+ },
242
+ "finishReason": "tool_calls",
243
+ "contentFilterTriggered": false
244
+ },
245
+ "ephemeral": true,
246
+ "id": "1ca1b8a5-e1ad-48af-bd11-934b5eaed167",
247
+ "timestamp": "2026-08-31T09:24:29.710Z",
248
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
249
+ },
250
+ {
251
+ "type": "model.model_call_success",
252
+ "data": {
253
+ "kind": "model_call_success",
254
+ "turn": 0,
255
+ "modelCallDurationMs": 5,
256
+ "ttftMs": 1.760712,
257
+ "outputTtftMs": 1.799395,
258
+ "interTokenLatencyMs": 0.14474749999999997,
259
+ "modelCall": {
260
+ "model": "spike-model",
261
+ "api_id": "chatcmpl-spike-2",
262
+ "api_endpoint": "/chat/completions",
263
+ "request_id": null,
264
+ "client_request_id": null,
265
+ "service_request_id": null,
266
+ "rte": false,
267
+ "initiator": "user",
268
+ "transport": "http"
269
+ },
270
+ "responseChunk": {
271
+ "object": "chat.completion.chunk",
272
+ "id": "chatcmpl-spike-2",
273
+ "choices": [
274
+ {
275
+ "delta": {
276
+ "role": "assistant",
277
+ "content": null,
278
+ "refusal": null,
279
+ "tool_calls": [
280
+ {
281
+ "id": "call_ask_2",
282
+ "type": "function",
283
+ "function": {
284
+ "name": "ask_user",
285
+ "arguments": "{\"question\":\"Which environment should I deploy to?\",\"choices\":[\"staging\",\"production\"]}"
286
+ },
287
+ "index": 0
288
+ }
289
+ ]
290
+ },
291
+ "finish_reason": "tool_calls",
292
+ "index": 0
293
+ }
294
+ ],
295
+ "created": 1788168269,
296
+ "model": "spike-model"
297
+ },
298
+ "quotaSnapshots": {},
299
+ "rte": false,
300
+ "reasoningEffort": "medium",
301
+ "maxPromptTokens": 128000,
302
+ "toolCount": 23,
303
+ "toolTokenCount": 7051
304
+ },
305
+ "ephemeral": true,
306
+ "id": "d242d01f-75fe-497a-b525-9bf452fe627d",
307
+ "timestamp": "2026-08-31T09:24:29.711Z",
308
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
309
+ },
310
+ {
311
+ "type": "model.call_finished",
312
+ "data": {
313
+ "turnId": "0",
314
+ "dispatchDurationMs": 5,
315
+ "outcome": "success",
316
+ "editClassifierVersion": 1,
317
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
318
+ "containsBuiltInFileEditRequest": false
319
+ },
320
+ "ephemeral": true,
321
+ "id": "50bed940-2121-4bc2-9d54-d6a30812c1dd",
322
+ "timestamp": "2026-08-31T09:24:29.712Z",
323
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
324
+ },
325
+ {
326
+ "type": "model.message",
327
+ "data": {
328
+ "kind": "message",
329
+ "turn": 0,
330
+ "modelCall": {
331
+ "model": "spike-model",
332
+ "api_id": "chatcmpl-spike-2",
333
+ "api_endpoint": "/chat/completions",
334
+ "request_id": null,
335
+ "client_request_id": null,
336
+ "service_request_id": null,
337
+ "rte": false,
338
+ "initiator": "user",
339
+ "transport": "http"
340
+ },
341
+ "message": {
342
+ "role": "assistant",
343
+ "content": null,
344
+ "refusal": null,
345
+ "tool_calls": [
346
+ {
347
+ "id": "call_ask_2",
348
+ "type": "function",
349
+ "function": {
350
+ "name": "ask_user",
351
+ "arguments": "{\"question\":\"Which environment should I deploy to?\",\"choices\":[\"staging\",\"production\"]}"
352
+ }
353
+ }
354
+ ],
355
+ "apiCallId": "chatcmpl-spike-2"
356
+ }
357
+ },
358
+ "ephemeral": true,
359
+ "id": "b5059490-8c04-44f8-b92d-7a129c0de723",
360
+ "timestamp": "2026-08-31T09:24:29.712Z",
361
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
362
+ },
363
+ {
364
+ "type": "assistant.message",
365
+ "data": {
366
+ "messageId": "9043fc52-2ed9-4050-9364-0a922c7d330a",
367
+ "model": "spike-model",
368
+ "content": "",
369
+ "toolRequests": [
370
+ {
371
+ "toolCallId": "call_ask_2",
372
+ "name": "ask_user",
373
+ "arguments": {
374
+ "question": "Which environment should I deploy to?",
375
+ "choices": [
376
+ "staging",
377
+ "production"
378
+ ]
379
+ },
380
+ "type": "function",
381
+ "intentionSummary": "Which environment should I deploy to?",
382
+ "toolTitle": "Asking user"
383
+ }
384
+ ],
385
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
386
+ "turnId": "0",
387
+ "rte": false,
388
+ "apiCallId": "chatcmpl-spike-2"
389
+ },
390
+ "id": "0c4b5859-46d1-41d5-b706-6a543448be40",
391
+ "timestamp": "2026-08-31T09:24:29.713Z",
392
+ "parentId": "2aa4d9a4-3acd-44db-825a-8cdc3bfb1d25"
393
+ },
394
+ {
395
+ "type": "tool.execution_start",
396
+ "data": {
397
+ "toolCallId": "call_ask_2",
398
+ "toolName": "ask_user",
399
+ "arguments": {
400
+ "question": "Which environment should I deploy to?",
401
+ "choices": [
402
+ "staging",
403
+ "production"
404
+ ]
405
+ },
406
+ "turnId": "0",
407
+ "model": "spike-model",
408
+ "toolTitle": "Asking user"
409
+ },
410
+ "id": "e8694c5b-b0aa-4190-8304-1c920f926f37",
411
+ "timestamp": "2026-08-31T09:24:29.714Z",
412
+ "parentId": "0c4b5859-46d1-41d5-b706-6a543448be40"
413
+ },
414
+ {
415
+ "type": "user_input.requested",
416
+ "data": {
417
+ "requestId": "be197f03-c3ef-4c66-86ca-2c15c76c5cc4",
418
+ "question": "Which environment should I deploy to?",
419
+ "choices": [
420
+ "staging",
421
+ "production"
422
+ ],
423
+ "allowFreeform": true,
424
+ "toolCallId": "call_ask_2"
425
+ },
426
+ "ephemeral": true,
427
+ "id": "4b2a276a-25cc-43ca-b8e1-10174512dd29",
428
+ "timestamp": "2026-08-31T09:24:29.715Z",
429
+ "parentId": "e8694c5b-b0aa-4190-8304-1c920f926f37"
430
+ },
431
+ {
432
+ "type": "user_input.completed",
433
+ "data": {
434
+ "answer": "The user was unable to respond due to an error",
435
+ "wasFreeform": true,
436
+ "requestId": "be197f03-c3ef-4c66-86ca-2c15c76c5cc4"
437
+ },
438
+ "ephemeral": true,
439
+ "id": "2e9d8c8b-f376-4454-aff0-4b7f01884129",
440
+ "timestamp": "2026-08-31T09:24:29.717Z",
441
+ "parentId": "e8694c5b-b0aa-4190-8304-1c920f926f37"
442
+ },
443
+ {
444
+ "type": "model.message",
445
+ "data": {
446
+ "kind": "message",
447
+ "turn": 0,
448
+ "modelCall": {
449
+ "model": "spike-model",
450
+ "api_id": "chatcmpl-spike-2",
451
+ "api_endpoint": "/chat/completions",
452
+ "request_id": null,
453
+ "client_request_id": null,
454
+ "service_request_id": null,
455
+ "rte": false,
456
+ "initiator": "user",
457
+ "transport": "http"
458
+ },
459
+ "message": {
460
+ "role": "tool",
461
+ "tool_call_id": "call_ask_2",
462
+ "content": "User responded: The user was unable to respond due to an error"
463
+ }
464
+ },
465
+ "ephemeral": true,
466
+ "id": "7664f222-6704-4e2e-b31d-35487911ace6",
467
+ "timestamp": "2026-08-31T09:24:29.718Z",
468
+ "parentId": "e8694c5b-b0aa-4190-8304-1c920f926f37"
469
+ },
470
+ {
471
+ "type": "tool.execution_complete",
472
+ "data": {
473
+ "toolCallId": "call_ask_2",
474
+ "model": "spike-model",
475
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
476
+ "turnId": "0",
477
+ "rte": false,
478
+ "success": true,
479
+ "result": {
480
+ "content": "User responded: The user was unable to respond due to an error",
481
+ "detailedContent": "User responded: The user was unable to respond due to an error"
482
+ },
483
+ "toolTelemetry": {
484
+ "properties": {
485
+ "outcome": "answered",
486
+ "had_choices": true,
487
+ "was_freeform": true
488
+ },
489
+ "restrictedProperties": {
490
+ "question": "Which environment should I deploy to?",
491
+ "choices": "[\"staging\",\"production\"]",
492
+ "answer": "The user was unable to respond due to an error"
493
+ }
494
+ }
495
+ },
496
+ "id": "7e7a3e1a-3633-4997-b255-50dfaff99766",
497
+ "timestamp": "2026-08-31T09:24:29.718Z",
498
+ "parentId": "e8694c5b-b0aa-4190-8304-1c920f926f37"
499
+ },
500
+ {
501
+ "type": "model.tool_execution",
502
+ "data": {
503
+ "kind": "tool_execution",
504
+ "turn": 0,
505
+ "toolCallId": "call_ask_2",
506
+ "toolResult": {
507
+ "textResultForLlm": "User responded: The user was unable to respond due to an error",
508
+ "resultType": "success",
509
+ "toolTelemetry": {
510
+ "properties": {
511
+ "outcome": "answered",
512
+ "had_choices": true,
513
+ "was_freeform": true
514
+ },
515
+ "restrictedProperties": {
516
+ "question": "Which environment should I deploy to?",
517
+ "choices": "[\"staging\",\"production\"]",
518
+ "answer": "The user was unable to respond due to an error"
519
+ }
520
+ }
521
+ },
522
+ "durationMs": 2.276261,
523
+ "rte": false
524
+ },
525
+ "ephemeral": true,
526
+ "id": "63348d98-df04-447e-8650-186d76cbdbfa",
527
+ "timestamp": "2026-08-31T09:24:29.719Z",
528
+ "parentId": "7e7a3e1a-3633-4997-b255-50dfaff99766"
529
+ },
530
+ {
531
+ "type": "model.turn_ended",
532
+ "data": {
533
+ "kind": "turn_ended",
534
+ "model": "spike-model",
535
+ "modelInfo": {
536
+ "id": "spike-model",
537
+ "name": "spike-model",
538
+ "capabilities": {
539
+ "supports": {
540
+ "vision": false,
541
+ "adaptive_thinking": "unsupported"
542
+ },
543
+ "limits": {
544
+ "max_prompt_tokens": 128000,
545
+ "max_context_window_tokens": 200000,
546
+ "vision": {
547
+ "max_prompt_image_size": 3145728,
548
+ "max_prompt_images": 1,
549
+ "supported_media_types": [
550
+ "image/jpeg",
551
+ "image/png",
552
+ "image/webp"
553
+ ]
554
+ }
555
+ }
556
+ },
557
+ "supported_endpoints": [
558
+ "/chat/completions"
559
+ ]
560
+ },
561
+ "turn": 0,
562
+ "timestampMs": 1788168269721
563
+ },
564
+ "ephemeral": true,
565
+ "id": "06eec9dd-bb05-4cb8-835f-fc6e76e113f0",
566
+ "timestamp": "2026-08-31T09:24:29.721Z",
567
+ "parentId": "7e7a3e1a-3633-4997-b255-50dfaff99766"
568
+ },
569
+ {
570
+ "type": "assistant.turn_end",
571
+ "data": {
572
+ "turnId": "0"
573
+ },
574
+ "id": "d5b6dba0-e21d-42bd-a073-01b4665ce624",
575
+ "timestamp": "2026-08-31T09:24:29.721Z",
576
+ "parentId": "7e7a3e1a-3633-4997-b255-50dfaff99766"
577
+ },
578
+ {
579
+ "type": "model.turn_started",
580
+ "data": {
581
+ "kind": "turn_started",
582
+ "model": "spike-model",
583
+ "modelInfo": {
584
+ "id": "spike-model",
585
+ "name": "spike-model",
586
+ "capabilities": {
587
+ "supports": {
588
+ "vision": false,
589
+ "adaptive_thinking": "unsupported"
590
+ },
591
+ "limits": {
592
+ "max_prompt_tokens": 128000,
593
+ "max_context_window_tokens": 200000,
594
+ "vision": {
595
+ "max_prompt_image_size": 3145728,
596
+ "max_prompt_images": 1,
597
+ "supported_media_types": [
598
+ "image/jpeg",
599
+ "image/png",
600
+ "image/webp"
601
+ ]
602
+ }
603
+ }
604
+ },
605
+ "supported_endpoints": [
606
+ "/chat/completions"
607
+ ]
608
+ },
609
+ "turn": 1,
610
+ "timestampMs": 1788168269721
611
+ },
612
+ "ephemeral": true,
613
+ "id": "b34bd478-6cf9-458b-8cdc-fdfcea46af70",
614
+ "timestamp": "2026-08-31T09:24:29.721Z",
615
+ "parentId": "d5b6dba0-e21d-42bd-a073-01b4665ce624"
616
+ },
617
+ {
618
+ "type": "assistant.turn_start",
619
+ "data": {
620
+ "turnId": "1",
621
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02"
622
+ },
623
+ "id": "94117434-c05c-421a-9c96-1e3f15cecabe",
624
+ "timestamp": "2026-08-31T09:24:29.722Z",
625
+ "parentId": "d5b6dba0-e21d-42bd-a073-01b4665ce624"
626
+ },
627
+ {
628
+ "type": "session.usage_info",
629
+ "ephemeral": true,
630
+ "data": {
631
+ "tokenLimit": 128000,
632
+ "currentTokens": 13345,
633
+ "messagesLength": 6,
634
+ "systemTokens": 6142,
635
+ "conversationTokens": 152,
636
+ "toolDefinitionsTokens": 7051,
637
+ "isInitial": false
638
+ },
639
+ "id": "a1ba749c-7fc3-42f2-84ac-a16cf9417249",
640
+ "timestamp": "2026-08-31T09:24:29.741Z",
641
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
642
+ },
643
+ {
644
+ "type": "model.log",
645
+ "data": {
646
+ "kind": "log",
647
+ "level": "debug",
648
+ "message": "Model does not support vision, skipping image processing"
649
+ },
650
+ "ephemeral": true,
651
+ "id": "108394e4-c713-4fc8-b867-1e6e6d82bdae",
652
+ "timestamp": "2026-08-31T09:24:29.742Z",
653
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
654
+ },
655
+ {
656
+ "type": "model.call_start",
657
+ "data": {
658
+ "turnId": "1",
659
+ "model": "spike-model"
660
+ },
661
+ "ephemeral": true,
662
+ "id": "3dbcab59-e717-46c3-a060-5f9b31b06553",
663
+ "timestamp": "2026-08-31T09:24:29.743Z",
664
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
665
+ },
666
+ {
667
+ "type": "model.model_call_started",
668
+ "data": {
669
+ "kind": "model_call_started",
670
+ "model": "spike-model",
671
+ "modelInfo": {
672
+ "id": "spike-model",
673
+ "name": "spike-model",
674
+ "capabilities": {
675
+ "supports": {
676
+ "vision": false,
677
+ "adaptive_thinking": "unsupported"
678
+ },
679
+ "limits": {
680
+ "max_prompt_tokens": 128000,
681
+ "max_context_window_tokens": 200000,
682
+ "vision": {
683
+ "max_prompt_image_size": 3145728,
684
+ "max_prompt_images": 1,
685
+ "supported_media_types": [
686
+ "image/jpeg",
687
+ "image/png",
688
+ "image/webp"
689
+ ]
690
+ }
691
+ }
692
+ },
693
+ "supported_endpoints": [
694
+ "/chat/completions"
695
+ ]
696
+ },
697
+ "turn": 1,
698
+ "timestampMs": 1788168269743
699
+ },
700
+ "ephemeral": true,
701
+ "id": "85eb40a0-ae40-4283-bcc0-f73ca97557d2",
702
+ "timestamp": "2026-08-31T09:24:29.743Z",
703
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
704
+ },
705
+ {
706
+ "type": "assistant.streaming_delta",
707
+ "data": {
708
+ "totalResponseSizeBytes": 107
709
+ },
710
+ "ephemeral": true,
711
+ "id": "43258708-1433-483f-85e6-d9ef9cba0409",
712
+ "timestamp": "2026-08-31T09:24:29.745Z",
713
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
714
+ },
715
+ {
716
+ "type": "assistant.reasoning_delta",
717
+ "data": {
718
+ "reasoningId": "aefb0003-b149-4bbe-b077-b0e1c4023ae1",
719
+ "deltaContent": "Let me think"
720
+ },
721
+ "ephemeral": true,
722
+ "id": "bed23ac8-fc23-4985-bbc7-163a349375cf",
723
+ "timestamp": "2026-08-31T09:24:29.745Z",
724
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
725
+ },
726
+ {
727
+ "type": "assistant.streaming_delta",
728
+ "data": {
729
+ "totalResponseSizeBytes": 118
730
+ },
731
+ "ephemeral": true,
732
+ "id": "11db0f67-5eef-4fc6-913b-177719aad809",
733
+ "timestamp": "2026-08-31T09:24:29.805Z",
734
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
735
+ },
736
+ {
737
+ "type": "assistant.reasoning_delta",
738
+ "data": {
739
+ "reasoningId": "aefb0003-b149-4bbe-b077-b0e1c4023ae1",
740
+ "deltaContent": " about this"
741
+ },
742
+ "ephemeral": true,
743
+ "id": "6064c779-0adf-4930-a495-79f0a5d05cd0",
744
+ "timestamp": "2026-08-31T09:24:29.806Z",
745
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
746
+ },
747
+ {
748
+ "type": "assistant.streaming_delta",
749
+ "data": {
750
+ "totalResponseSizeBytes": 129
751
+ },
752
+ "ephemeral": true,
753
+ "id": "d4ae1727-a3fd-459a-953c-ce55b3607e80",
754
+ "timestamp": "2026-08-31T09:24:29.865Z",
755
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
756
+ },
757
+ {
758
+ "type": "assistant.reasoning_delta",
759
+ "data": {
760
+ "reasoningId": "aefb0003-b149-4bbe-b077-b0e1c4023ae1",
761
+ "deltaContent": " carefully."
762
+ },
763
+ "ephemeral": true,
764
+ "id": "f063ca84-8b22-4aa6-99fd-415e259def7d",
765
+ "timestamp": "2026-08-31T09:24:29.866Z",
766
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
767
+ },
768
+ {
769
+ "type": "assistant.streaming_delta",
770
+ "data": {
771
+ "totalResponseSizeBytes": 132
772
+ },
773
+ "ephemeral": true,
774
+ "id": "eece3602-70c8-4c3a-b43b-e398b01cfa2c",
775
+ "timestamp": "2026-08-31T09:24:29.925Z",
776
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
777
+ },
778
+ {
779
+ "type": "assistant.message_start",
780
+ "data": {
781
+ "messageId": "2c31d113-4c3b-4a41-9657-20edc0e86035"
782
+ },
783
+ "ephemeral": true,
784
+ "id": "f98248ee-6c70-4603-98f0-2ac5e6796251",
785
+ "timestamp": "2026-08-31T09:24:29.926Z",
786
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
787
+ },
788
+ {
789
+ "type": "assistant.message_delta",
790
+ "data": {
791
+ "messageId": "2c31d113-4c3b-4a41-9657-20edc0e86035",
792
+ "deltaContent": "SPI"
793
+ },
794
+ "ephemeral": true,
795
+ "id": "9f28a8dc-24fa-4156-995c-deca22c3e530",
796
+ "timestamp": "2026-08-31T09:24:29.926Z",
797
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
798
+ },
799
+ {
800
+ "type": "assistant.streaming_delta",
801
+ "data": {
802
+ "totalResponseSizeBytes": 134
803
+ },
804
+ "ephemeral": true,
805
+ "id": "b17f1dd0-0898-48a7-961b-c1e4a8903054",
806
+ "timestamp": "2026-08-31T09:24:29.985Z",
807
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
808
+ },
809
+ {
810
+ "type": "assistant.message_delta",
811
+ "data": {
812
+ "messageId": "2c31d113-4c3b-4a41-9657-20edc0e86035",
813
+ "deltaContent": "KE"
814
+ },
815
+ "ephemeral": true,
816
+ "id": "2b6a1edd-27d3-404f-aad8-5ef29041a1fe",
817
+ "timestamp": "2026-08-31T09:24:29.985Z",
818
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
819
+ },
820
+ {
821
+ "type": "assistant.streaming_delta",
822
+ "data": {
823
+ "totalResponseSizeBytes": 137
824
+ },
825
+ "ephemeral": true,
826
+ "id": "92369587-9489-43a9-92f5-033eee95c0ea",
827
+ "timestamp": "2026-08-31T09:24:30.045Z",
828
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
829
+ },
830
+ {
831
+ "type": "assistant.message_delta",
832
+ "data": {
833
+ "messageId": "2c31d113-4c3b-4a41-9657-20edc0e86035",
834
+ "deltaContent": "_OK"
835
+ },
836
+ "ephemeral": true,
837
+ "id": "c034b569-3e14-4e29-b61b-873f2fbbdfda",
838
+ "timestamp": "2026-08-31T09:24:30.046Z",
839
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
840
+ },
841
+ {
842
+ "type": "assistant.usage",
843
+ "data": {
844
+ "model": "spike-model",
845
+ "inputTokens": 0,
846
+ "outputTokens": 0,
847
+ "cacheReadTokens": 0,
848
+ "cacheWriteTokens": 0,
849
+ "reasoningTokens": 0,
850
+ "cost": 0,
851
+ "duration": 365,
852
+ "timeToFirstTokenMs": 1.803582,
853
+ "outputTtftMs": 1.823629,
854
+ "interTokenLatencyMs": 51.490311428571424,
855
+ "initiator": "agent",
856
+ "interactionType": "conversation-agent",
857
+ "isByok": true,
858
+ "isAuto": false,
859
+ "maxPromptTokens": 128000,
860
+ "transport": "http",
861
+ "apiCallId": "chatcmpl-spike-3",
862
+ "rte": false,
863
+ "apiEndpoint": "/chat/completions",
864
+ "quotaSnapshots": {},
865
+ "reasoningEffort": "medium",
866
+ "availableToolCount": 23,
867
+ "toolTokenCount": 7051,
868
+ "frontierSource": "estimated",
869
+ "cacheDetailsReported": false,
870
+ "numToolCalls": 0,
871
+ "toolCounts": {},
872
+ "finishReason": "stop",
873
+ "contentFilterTriggered": false
874
+ },
875
+ "ephemeral": true,
876
+ "id": "ce0b3f8f-618a-4c2d-9597-dccbd00f7eba",
877
+ "timestamp": "2026-08-31T09:24:30.108Z",
878
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
879
+ },
880
+ {
881
+ "type": "model.model_call_success",
882
+ "data": {
883
+ "kind": "model_call_success",
884
+ "turn": 1,
885
+ "modelCallDurationMs": 365,
886
+ "ttftMs": 1.803582,
887
+ "outputTtftMs": 1.823629,
888
+ "interTokenLatencyMs": 51.490311428571424,
889
+ "modelCall": {
890
+ "model": "spike-model",
891
+ "api_id": "chatcmpl-spike-3",
892
+ "api_endpoint": "/chat/completions",
893
+ "request_id": null,
894
+ "client_request_id": null,
895
+ "service_request_id": null,
896
+ "rte": false,
897
+ "initiator": "agent",
898
+ "transport": "http"
899
+ },
900
+ "responseChunk": {
901
+ "object": "chat.completion.chunk",
902
+ "id": "chatcmpl-spike-3",
903
+ "choices": [
904
+ {
905
+ "delta": {
906
+ "responses_message_status": "completed",
907
+ "role": "assistant",
908
+ "content": "SPIKE_OK",
909
+ "refusal": null,
910
+ "reasoning_text": "Let me think about this carefully."
911
+ },
912
+ "finish_reason": "stop",
913
+ "index": 0
914
+ }
915
+ ],
916
+ "created": 1788168270,
917
+ "model": "spike-model"
918
+ },
919
+ "quotaSnapshots": {},
920
+ "rte": false,
921
+ "reasoningEffort": "medium",
922
+ "maxPromptTokens": 128000,
923
+ "toolCount": 23,
924
+ "toolTokenCount": 7051
925
+ },
926
+ "ephemeral": true,
927
+ "id": "d49a6c7e-2580-444b-aeb9-81f21c37395b",
928
+ "timestamp": "2026-08-31T09:24:30.110Z",
929
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
930
+ },
931
+ {
932
+ "type": "model.call_finished",
933
+ "data": {
934
+ "turnId": "1",
935
+ "dispatchDurationMs": 365,
936
+ "outcome": "success",
937
+ "editClassifierVersion": 1,
938
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
939
+ "containsBuiltInFileEditRequest": false
940
+ },
941
+ "ephemeral": true,
942
+ "id": "c966d116-0da5-40f1-a82c-14026bc5dfe1",
943
+ "timestamp": "2026-08-31T09:24:30.110Z",
944
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
945
+ },
946
+ {
947
+ "type": "model.message",
948
+ "data": {
949
+ "kind": "message",
950
+ "turn": 1,
951
+ "modelCall": {
952
+ "model": "spike-model",
953
+ "api_id": "chatcmpl-spike-3",
954
+ "api_endpoint": "/chat/completions",
955
+ "request_id": null,
956
+ "client_request_id": null,
957
+ "service_request_id": null,
958
+ "rte": false,
959
+ "initiator": "agent",
960
+ "transport": "http"
961
+ },
962
+ "reasoningWireField": "reasoning_content",
963
+ "message": {
964
+ "reasoning_text": "Let me think about this carefully.",
965
+ "content": "SPIKE_OK",
966
+ "role": "assistant",
967
+ "refusal": null,
968
+ "apiCallId": "chatcmpl-spike-3"
969
+ }
970
+ },
971
+ "ephemeral": true,
972
+ "id": "88f18da8-b186-48a3-aea2-1d7f7fef366a",
973
+ "timestamp": "2026-08-31T09:24:30.110Z",
974
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
975
+ },
976
+ {
977
+ "type": "assistant.message",
978
+ "data": {
979
+ "messageId": "2c31d113-4c3b-4a41-9657-20edc0e86035",
980
+ "model": "spike-model",
981
+ "content": "SPIKE_OK",
982
+ "toolRequests": [],
983
+ "interactionId": "5949678f-9069-47e7-8e05-f6857a5aee02",
984
+ "turnId": "1",
985
+ "reasoningText": "Let me think about this carefully.",
986
+ "rte": false,
987
+ "apiCallId": "chatcmpl-spike-3"
988
+ },
989
+ "id": "607f6b9d-cf43-4d7a-a739-5b8266a3808e",
990
+ "timestamp": "2026-08-31T09:24:30.110Z",
991
+ "parentId": "94117434-c05c-421a-9c96-1e3f15cecabe"
992
+ },
993
+ {
994
+ "type": "assistant.reasoning",
995
+ "data": {
996
+ "reasoningId": "aefb0003-b149-4bbe-b077-b0e1c4023ae1",
997
+ "content": "Let me think about this carefully.",
998
+ "rte": false
999
+ },
1000
+ "ephemeral": true,
1001
+ "id": "2cfa8cf7-921e-41f5-b5df-7f22764f83b7",
1002
+ "timestamp": "2026-08-31T09:24:30.111Z",
1003
+ "parentId": "607f6b9d-cf43-4d7a-a739-5b8266a3808e"
1004
+ },
1005
+ {
1006
+ "type": "model.response",
1007
+ "data": {
1008
+ "kind": "response",
1009
+ "turn": 1,
1010
+ "modelCall": {
1011
+ "model": "spike-model",
1012
+ "api_id": "chatcmpl-spike-3"
1013
+ },
1014
+ "response": {
1015
+ "reasoning_text": "Let me think about this carefully.",
1016
+ "content": "SPIKE_OK",
1017
+ "role": "assistant",
1018
+ "refusal": null
1019
+ }
1020
+ },
1021
+ "ephemeral": true,
1022
+ "id": "cdf3ce29-17fa-4f62-b10f-bd678dcd7807",
1023
+ "timestamp": "2026-08-31T09:24:30.113Z",
1024
+ "parentId": "607f6b9d-cf43-4d7a-a739-5b8266a3808e"
1025
+ },
1026
+ {
1027
+ "type": "model.turn_ended",
1028
+ "data": {
1029
+ "kind": "turn_ended",
1030
+ "model": "spike-model",
1031
+ "modelInfo": {
1032
+ "id": "spike-model",
1033
+ "name": "spike-model",
1034
+ "capabilities": {
1035
+ "supports": {
1036
+ "vision": false,
1037
+ "adaptive_thinking": "unsupported"
1038
+ },
1039
+ "limits": {
1040
+ "max_prompt_tokens": 128000,
1041
+ "max_context_window_tokens": 200000,
1042
+ "vision": {
1043
+ "max_prompt_image_size": 3145728,
1044
+ "max_prompt_images": 1,
1045
+ "supported_media_types": [
1046
+ "image/jpeg",
1047
+ "image/png",
1048
+ "image/webp"
1049
+ ]
1050
+ }
1051
+ }
1052
+ },
1053
+ "supported_endpoints": [
1054
+ "/chat/completions"
1055
+ ]
1056
+ },
1057
+ "turn": 1,
1058
+ "timestampMs": 1788168270113
1059
+ },
1060
+ "ephemeral": true,
1061
+ "id": "f6e1a4c8-0a94-4aa4-980b-73f591bcd526",
1062
+ "timestamp": "2026-08-31T09:24:30.113Z",
1063
+ "parentId": "607f6b9d-cf43-4d7a-a739-5b8266a3808e"
1064
+ },
1065
+ {
1066
+ "type": "assistant.turn_end",
1067
+ "data": {
1068
+ "turnId": "1"
1069
+ },
1070
+ "id": "d2729a59-7676-4fe0-bfc0-32c59e131695",
1071
+ "timestamp": "2026-08-31T09:24:30.113Z",
1072
+ "parentId": "607f6b9d-cf43-4d7a-a739-5b8266a3808e"
1073
+ },
1074
+ {
1075
+ "type": "assistant.idle",
1076
+ "data": {},
1077
+ "ephemeral": true,
1078
+ "id": "688a8ff4-2578-429c-8f5d-d1bf8ddb2c88",
1079
+ "timestamp": "2026-08-31T09:24:30.115Z",
1080
+ "parentId": "d2729a59-7676-4fe0-bfc0-32c59e131695"
1081
+ },
1082
+ {
1083
+ "type": "session.idle",
1084
+ "data": {
1085
+ "mode": "interactive"
1086
+ },
1087
+ "ephemeral": true,
1088
+ "id": "0ac0b27b-5510-4afb-88c2-30165d79bf62",
1089
+ "timestamp": "2026-08-31T09:24:30.116Z",
1090
+ "parentId": "d2729a59-7676-4fe0-bfc0-32c59e131695"
1091
+ },
1092
+ {
1093
+ "type": "session.shutdown",
1094
+ "data": {
1095
+ "shutdownType": "routine",
1096
+ "totalPremiumRequests": 0,
1097
+ "totalNanoAiu": 0,
1098
+ "totalApiDurationMs": 742,
1099
+ "sessionStartTime": 1788168268571,
1100
+ "eventsFileSizeBytes": 34481,
1101
+ "codeChanges": {
1102
+ "linesAdded": 0,
1103
+ "linesRemoved": 0,
1104
+ "filesModified": []
1105
+ },
1106
+ "modelMetrics": {
1107
+ "spike-model": {
1108
+ "requests": {
1109
+ "count": 3,
1110
+ "cost": 0
1111
+ },
1112
+ "usage": {
1113
+ "inputTokens": 0,
1114
+ "outputTokens": 0,
1115
+ "cacheReadTokens": 0,
1116
+ "cacheWriteTokens": 0,
1117
+ "reasoningTokens": 0
1118
+ },
1119
+ "totalNanoAiu": 0
1120
+ }
1121
+ },
1122
+ "agentMetrics": {
1123
+ "main": {
1124
+ "totalApiDurationMs": 742,
1125
+ "totalNanoAiu": 0,
1126
+ "modelMetrics": {
1127
+ "spike-model": {
1128
+ "requests": {
1129
+ "count": 3,
1130
+ "cost": 0
1131
+ },
1132
+ "usage": {
1133
+ "inputTokens": 0,
1134
+ "outputTokens": 0,
1135
+ "cacheReadTokens": 0,
1136
+ "cacheWriteTokens": 0,
1137
+ "reasoningTokens": 0
1138
+ },
1139
+ "totalNanoAiu": 0
1140
+ }
1141
+ }
1142
+ }
1143
+ },
1144
+ "currentModel": "spike-model",
1145
+ "currentTokens": 13414,
1146
+ "systemTokens": 6142,
1147
+ "conversationTokens": 173,
1148
+ "toolDefinitionsTokens": 7096
1149
+ },
1150
+ "id": "048f96df-2777-4b26-a6ff-8f86903f01fb",
1151
+ "timestamp": "2026-08-31T09:24:30.129Z",
1152
+ "parentId": "d2729a59-7676-4fe0-bfc0-32c59e131695"
1153
+ }
1154
+ ]