@oar-sh/oar 0.9.1 → 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 (146) hide show
  1. package/.github/extensions/web-relay/extension.mjs +0 -3
  2. package/.github/extensions/web-relay/polling/heartbeat.mjs +2 -55
  3. package/.github/extensions/web-relay/polling/polling-loop.mjs +0 -1
  4. package/.github/extensions/web-relay/runtime/api-client.mjs +2 -34
  5. package/.github/extensions/web-relay/runtime/config-loader.mjs +2 -104
  6. package/.github/extensions/web-relay/runtime/send-and-wait-errors.mjs +2 -170
  7. package/.github/extensions/web-relay/runtime/session-io.mjs +1 -71
  8. package/.github/extensions/web-relay/runtime/worker-websocket-link.mjs +2 -325
  9. package/.github/extensions/web-relay/skills/prompt-context.mjs +2 -160
  10. package/CHANGELOG.md +269 -0
  11. package/README.md +407 -424
  12. package/bin/oar.js +142 -11
  13. package/package.json +8 -4
  14. package/server/README.md +59 -22
  15. package/server/claude-worker/claude-sdk-adapter.mjs +7 -2
  16. package/server/claude-worker/claude-session-process.mjs +1013 -45
  17. package/server/claude-worker/claude-session-worker.mjs +54 -9
  18. package/server/claude-worker/claude-turn-publisher.mjs +110 -19
  19. package/server/claude-worker/claude-worker-link-wiring.mjs +9 -0
  20. package/server/copilot-sdk-runtime.mjs +12 -3
  21. package/server/copilot-worker/copilot-ask-user-tool.mjs +89 -0
  22. package/server/copilot-worker/copilot-attachments.mjs +35 -2
  23. package/server/copilot-worker/copilot-continuation-signals.mjs +55 -0
  24. package/server/copilot-worker/copilot-model-switch.mjs +425 -0
  25. package/server/copilot-worker/copilot-prompt-context.mjs +20 -8
  26. package/server/copilot-worker/copilot-question-bridge.mjs +129 -16
  27. package/server/copilot-worker/copilot-sdk-adapter.mjs +59 -11
  28. package/server/copilot-worker/copilot-sdk-event-normalizer.mjs +136 -12
  29. package/server/copilot-worker/copilot-sdk-session-process.mjs +2753 -527
  30. package/server/copilot-worker/copilot-sdk-session-worker.mjs +94 -25
  31. package/server/cursor-worker/cursor-session-worker.mjs +5 -5
  32. package/server/cursor-worker/cursor-turn-runner.mjs +50 -4
  33. package/server/db-schema.mjs +61 -1
  34. package/server/features.mjs +155 -41
  35. package/server/grok-worker/grok-session-worker.mjs +5 -5
  36. package/server/grok-worker/grok-turn-runner.mjs +45 -4
  37. package/server/migrations/0004-steer-settle-markers.mjs +119 -0
  38. package/server/public/app/annotate-core.mjs +181 -0
  39. package/server/public/app/annotate-editor.js +617 -0
  40. package/server/public/app/api-client.js +86 -5
  41. package/server/public/app/ask-user-view.js +102 -13
  42. package/server/public/app/attachments-view.js +172 -3
  43. package/server/public/app/background-task-timeout-options.mjs +9 -0
  44. package/server/public/app/background-tasks-view.mjs +34 -19
  45. package/server/public/app/bootstrap.js +153 -69
  46. package/server/public/app/composer-control-state.mjs +52 -34
  47. package/server/public/app/context-tier-options.mjs +24 -4
  48. package/server/public/app/conversation-draft-sync.mjs +187 -0
  49. package/server/public/app/conversation-list-filter.mjs +86 -0
  50. package/server/public/app/conversation-preferences.mjs +47 -10
  51. package/server/public/app/conversation-provider-indicator.mjs +8 -0
  52. package/server/public/app/conversation-view.js +1032 -218
  53. package/server/public/app/emoji-view.js +2 -0
  54. package/server/public/app/font-scaling.js +4 -37
  55. package/server/public/app/journal-view.js +190 -24
  56. package/server/public/app/model-selector-options.mjs +185 -1
  57. package/server/public/app/new-conversation-model-choice.mjs +29 -9
  58. package/server/public/app/pwa-install.js +64 -136
  59. package/server/public/app/question-multi-select.mjs +52 -0
  60. package/server/public/app/reasoning-effort-labels.mjs +13 -3
  61. package/server/public/app/relay-prompt-sanitizer.mjs +26 -3
  62. package/server/public/app/router.js +120 -11
  63. package/server/public/app/settings-modal.js +225 -20
  64. package/server/public/app/settings-tabs.js +1 -1
  65. package/server/public/app/socket-handlers.js +47 -4
  66. package/server/public/app/steered-turn-merge.mjs +100 -0
  67. package/server/public/app/store.js +159 -16
  68. package/server/public/app/sync-outbox.mjs +16 -8
  69. package/server/public/app/tool-activity-emoji.mjs +36 -0
  70. package/server/public/app/transcript-viewport-anchor.mjs +210 -0
  71. package/server/public/app/update-ui.js +194 -0
  72. package/server/public/index.html +483 -24
  73. package/server/public/sw.js +7 -0
  74. package/server/relay-tools.md +2 -0
  75. package/server/relay.mjs +23 -21
  76. package/server/repositories/message-repository.mjs +78 -21
  77. package/server/repositories/question-repository.mjs +19 -1
  78. package/server/repositories/session-repository.mjs +7 -31
  79. package/server/routes/ask-user-routes.mjs +10 -0
  80. package/server/routes/messages-routes.mjs +689 -159
  81. package/server/routes/sessions-routes.mjs +574 -80
  82. package/server/server-runtime.mjs +393 -925
  83. package/server/services/claude-auth-service.mjs +7 -1
  84. package/server/services/cli-install-service.mjs +8 -27
  85. package/server/services/cli-process-runner.mjs +30 -0
  86. package/server/services/copilot-model-discovery-service.mjs +202 -0
  87. package/server/services/data-dir-resolution.mjs +47 -0
  88. package/server/services/grok-auth-service.mjs +9 -1
  89. package/server/services/live-turn-picker.mjs +47 -0
  90. package/server/services/model-variant-catalog-service.mjs +1183 -0
  91. package/server/services/oar-cli-helpers.mjs +6 -2
  92. package/server/services/relay-prompt-sanitizer.mjs +30 -3
  93. package/server/services/relay-question-context.mjs +46 -0
  94. package/server/services/sdk-session-import-service.mjs +144 -16
  95. package/server/services/sdk-session-sync-service.mjs +84 -27
  96. package/server/services/session-worker-registry-service.mjs +116 -3
  97. package/server/services/session-worker-supervisor-service.mjs +7 -1
  98. package/server/services/session-worker-websocket-service.mjs +119 -24
  99. package/server/services/status-event-service.mjs +8 -2
  100. package/server/services/steer-resend.mjs +45 -0
  101. package/server/services/update-check-service.mjs +220 -0
  102. package/server/services/update-install-service.mjs +279 -0
  103. package/server/services/windows-autostart-service.mjs +42 -6
  104. package/server/services/windows-boot-autostart-service.mjs +487 -0
  105. package/shared/ask-user-bridge.mjs +37 -5
  106. package/shared/background-task-timeout.mjs +12 -4
  107. package/shared/claude-model-catalog.mjs +49 -0
  108. package/shared/context-window-fallbacks.mjs +1 -0
  109. package/shared/control-poller.mjs +4 -1
  110. package/shared/copilot-model-order.mjs +182 -0
  111. package/shared/media-embed-instructions.mjs +35 -0
  112. package/shared/model-descriptors.mjs +181 -30
  113. package/shared/model-id.mjs +6 -0
  114. package/shared/pwa-app-name.mjs +44 -0
  115. package/shared/question-multi-select.mjs +16 -0
  116. package/shared/relay-stop-failure.mjs +15 -0
  117. package/shared/slash-command-guard.mjs +76 -0
  118. package/shared/steer-note.mjs +66 -0
  119. package/shared/steer-settle-failure.mjs +89 -0
  120. package/shared/steer-settle-markers.mjs +18 -0
  121. package/shared/update-semver.mjs +50 -0
  122. package/shared/worker-crash-guard.mjs +40 -14
  123. package/shared/worker-runtime/api-client.mjs +34 -0
  124. package/shared/worker-runtime/config-loader.mjs +104 -0
  125. package/shared/worker-runtime/heartbeat.mjs +109 -0
  126. package/shared/worker-runtime/prompt-context.mjs +160 -0
  127. package/shared/worker-runtime/runner-link-wiring.mjs +44 -0
  128. package/shared/worker-runtime/send-and-wait-errors.mjs +170 -0
  129. package/shared/worker-runtime/worker-websocket-link.mjs +436 -0
  130. package/server/claude-worker/claude-session-test-harness.mjs +0 -236
  131. package/server/claude-worker/fixtures/workflow-run-record.json +0 -1
  132. package/server/copilot-worker/copilot-sdk-test-harness.mjs +0 -329
  133. package/server/copilot-worker/fixtures/abort-turn.json +0 -588
  134. package/server/copilot-worker/fixtures/ask-user-turn.json +0 -1154
  135. package/server/copilot-worker/fixtures/background-timer-continuation.json +0 -445
  136. package/server/copilot-worker/fixtures/background-timer-turn.json +0 -497
  137. package/server/copilot-worker/fixtures/happy-turn.json +0 -566
  138. package/server/copilot-worker/fixtures/quota-turn.json +0 -647
  139. package/server/copilot-worker/fixtures/reasoning-turn.json +0 -625
  140. package/server/copilot-worker/fixtures/resume-turn.json +0 -700
  141. package/server/copilot-worker/fixtures/subagent-turn.json +0 -1378
  142. package/server/copilot-worker/fixtures/tool-permission-turn.json +0 -1293
  143. package/server/routes/messages-routes-test-harness.mjs +0 -111
  144. package/server/services/fixtures/claude-auth-stub.sh +0 -62
  145. package/server/services/fixtures/cli-install-stub.sh +0 -75
  146. package/server/services/fixtures/grok-stub.sh +0 -86
@@ -1,497 +0,0 @@
1
- [
2
- {
3
- "type": "user.message",
4
- "data": {
5
- "content": "[Relay mode: autopilot] please set a timer to 1 minute and let me know when the timer fired",
6
- "transformedContent": "<transformed prompt elided>",
7
- "supportedNativeDocumentMimeTypes": [],
8
- "agentMode": "autopilot",
9
- "delivery": "idle",
10
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60",
11
- "turnId": "0",
12
- "parentAgentTaskId": "422a9ce4-b9fe-4b74-84b4-ea32e7988817"
13
- },
14
- "id": "f2049d1c-fa04-4c53-96d1-8b5e641157bb",
15
- "timestamp": "2026-08-31T14:23:18.153Z",
16
- "parentId": "23c3c7dc-fc6b-4b61-9285-3078fb43eaa6"
17
- },
18
- {
19
- "type": "assistant.turn_start",
20
- "data": {
21
- "turnId": "0",
22
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60"
23
- },
24
- "id": "d56f77e5-b85d-41c4-9380-3b99fda792ca",
25
- "timestamp": "2026-08-31T14:23:18.158Z",
26
- "parentId": "f2049d1c-fa04-4c53-96d1-8b5e641157bb"
27
- },
28
- {
29
- "type": "assistant.message",
30
- "data": {
31
- "messageId": "d388aaa9-95f1-425d-8bbe-90bc7000d082",
32
- "model": "gpt-5.6-luna",
33
- "content": "",
34
- "toolRequests": [
35
- {
36
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL",
37
- "name": "bash",
38
- "arguments": {
39
- "command": "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'",
40
- "description": "Wait one minute for the requested timer",
41
- "mode": "async",
42
- "detach": true,
43
- "initial_wait": 30
44
- },
45
- "type": "function",
46
- "intentionSummary": "Wait one minute for the requested timer"
47
- }
48
- ],
49
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60",
50
- "turnId": "0",
51
- "rte": true,
52
- "apiCallId": "phvhyxj5k26LCP8FmKTJMNZ4s0Ls2/yQYqA2/mIW+MqnkG1MmPkVSPiCYOeEgCJjnPfWrdU53pzPWhJ9n/qOyv3R6lFRfIJt5XdPVyt/ZQSRTO903QULONke5gqmYHrHlMogHYyVPkvIGyTiHsd1j6y1BKrGj51rUvUpUVKAvpFKOHL3ai/+y8p8IV3u7riwFusXWl50xTBYWogd7f0DmzVjzD0a928nFbjVxc19FuJCh/dBVE4g6AgZrW6hbKHsSxE6cQdy2cEEBlSow/FOiXteeVXPcXjYIzy5UbdK2jMn9fPxaW1X0r04AHPCQ/GDe8QSgG3iJ9lMEtLyGVHwNg6vdZF933gk8Iivd1Y2WS7o7JVdEhPkRFVly1fntP7PzrEKRbBViQOwOQyh5Rd8SaZKBCYCgbBI/7WC2bAv8I2PpHn9UgFmKq09c0Hw9Ye1bZ/LEOLNZ81vT8ENGAQX+FdY71Mqhx1e0BRf3aBQPA=="
53
- },
54
- "id": "62c63988-a56b-445a-be3c-bc5e16fd76c3",
55
- "timestamp": "2026-08-31T14:23:20.246Z",
56
- "parentId": "d56f77e5-b85d-41c4-9380-3b99fda792ca"
57
- },
58
- {
59
- "type": "tool.execution_start",
60
- "data": {
61
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL",
62
- "toolName": "bash",
63
- "arguments": {
64
- "command": "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'",
65
- "description": "Wait one minute for the requested timer",
66
- "mode": "async",
67
- "detach": true,
68
- "initial_wait": 30
69
- },
70
- "turnId": "0",
71
- "model": "gpt-5.6-luna",
72
- "shellToolInfo": {
73
- "possiblePaths": [
74
- "Timer fired after 1 minute."
75
- ],
76
- "hasWriteFileRedirection": false
77
- }
78
- },
79
- "id": "5a636c8c-de4f-4f1b-9ff3-0d60191bf501",
80
- "timestamp": "2026-08-31T14:23:20.249Z",
81
- "parentId": "62c63988-a56b-445a-be3c-bc5e16fd76c3"
82
- },
83
- {
84
- "type": "permission.requested",
85
- "data": {
86
- "requestId": "3ac174e1-fee5-479c-b7f5-a7a9c25ec927",
87
- "permissionRequest": {
88
- "kind": "shell",
89
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL",
90
- "fullCommandText": "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'",
91
- "intention": "Wait one minute for the requested timer",
92
- "commands": [
93
- {
94
- "identifier": "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'",
95
- "readOnly": false
96
- }
97
- ],
98
- "commandSegments": [
99
- {
100
- "identifier": "sleep",
101
- "fullCommandText": "sleep 60"
102
- },
103
- {
104
- "identifier": "printf",
105
- "fullCommandText": "printf '%s\\n' 'Timer fired after 1 minute.'"
106
- }
107
- ],
108
- "possiblePaths": [],
109
- "possibleUrls": [],
110
- "hasWriteFileRedirection": false,
111
- "canOfferSessionApproval": false
112
- },
113
- "promptRequest": {
114
- "kind": "commands",
115
- "fullCommandText": "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'",
116
- "intention": "Wait one minute for the requested timer",
117
- "commandIdentifiers": [
118
- "sleep 60 && printf '%s\\n' 'Timer fired after 1 minute.'"
119
- ],
120
- "canOfferSessionApproval": false,
121
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL"
122
- }
123
- },
124
- "id": "7bfac980-f451-442a-8b43-cad920d603a7",
125
- "timestamp": "2026-08-31T14:23:20.251Z",
126
- "parentId": "5a636c8c-de4f-4f1b-9ff3-0d60191bf501"
127
- },
128
- {
129
- "type": "permission.completed",
130
- "data": {
131
- "requestId": "3ac174e1-fee5-479c-b7f5-a7a9c25ec927",
132
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL",
133
- "result": {
134
- "kind": "approved"
135
- }
136
- },
137
- "id": "9c91f061-f0da-4bd1-9d01-8ade4d63ca1e",
138
- "timestamp": "2026-08-31T14:23:20.253Z",
139
- "parentId": "7bfac980-f451-442a-8b43-cad920d603a7"
140
- },
141
- {
142
- "type": "tool.execution_complete",
143
- "data": {
144
- "toolCallId": "call_56Cu4P65FGEWyyHkjP6p1zPL",
145
- "model": "gpt-5.6-luna",
146
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60",
147
- "turnId": "0",
148
- "rte": true,
149
- "success": true,
150
- "result": {
151
- "content": "<command started in detached background with shellId: 1>",
152
- "detailedContent": "<command started in detached background with shellId: 1>"
153
- },
154
- "toolTelemetry": {
155
- "properties": {
156
- "customTimeout": "true",
157
- "executionMode": "async",
158
- "detached": "true",
159
- "sandboxApplied": "false",
160
- "sandboxOptOutRequested": "false"
161
- },
162
- "metrics": {}
163
- }
164
- },
165
- "id": "8b2b6fc8-8539-47e7-be97-128a309d98f5",
166
- "timestamp": "2026-08-31T14:23:20.274Z",
167
- "parentId": "9c91f061-f0da-4bd1-9d01-8ade4d63ca1e"
168
- },
169
- {
170
- "type": "assistant.turn_end",
171
- "data": {
172
- "turnId": "0"
173
- },
174
- "id": "a3dee46c-c0d2-4c53-9bd1-1b73aa098b94",
175
- "timestamp": "2026-08-31T14:23:20.279Z",
176
- "parentId": "8b2b6fc8-8539-47e7-be97-128a309d98f5"
177
- },
178
- {
179
- "type": "assistant.turn_start",
180
- "data": {
181
- "turnId": "1",
182
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60"
183
- },
184
- "id": "c517f385-ba7a-4558-8d6c-5bdbc3e69c1b",
185
- "timestamp": "2026-08-31T14:23:20.280Z",
186
- "parentId": "a3dee46c-c0d2-4c53-9bd1-1b73aa098b94"
187
- },
188
- {
189
- "type": "assistant.message",
190
- "data": {
191
- "messageId": "aa91cae4-dcc5-4842-9d79-9af86723175a",
192
- "model": "gpt-5.6-luna",
193
- "content": "Timer set for 1 minute. I’ll let you know when it fires.",
194
- "toolRequests": [],
195
- "interactionId": "ef0f9e8d-5f19-45a2-9c79-045785470c60",
196
- "turnId": "1",
197
- "reasoningText": "",
198
- "phase": "final_answer",
199
- "rte": true,
200
- "apiCallId": "+mZnRceX/xfuoLcsEVfcQGaZU88GR/1YzxbBe7HWniTwK4pgfYmjbPDKvpQQNOEg/lotbFQBhtUqh/3dNRHhZOuDOcuZ367HcC05YK32/FUF2291vigdGy3/FmvemjZjjKsUxfSkNtv5NI1V3fyeiammkw9GK8UCoTvDgAwwXUjg/8X3rcalWZpBD5B0OgjN2IPcHp8bQKcjzp3buJOhnGvilzcI3pvFk8mImjnYAiIDffWXjdNH7j3bonsIZsN4yeaorQczkODhPvfgX9/6UBWnAF3LKrm0sweU0yoUzGEnOtuLSjF848EAv6Pin114bcBTpxmb+CyXUEN+aNwFstZ2e7J8NovUz5KVq/jfPZ+549QyOnsECO1ZyJs25Go/AKpX+lBumsrFvyQiF8PdB27LSO53qCLw2Z96gFzQ0HcXiiss6H3nIpnv4VlRMjACKsurXp/nlNGUaebBY5WiCFjRz8qBUZBXr1iLzSPlAA==",
201
- "serverTools": {
202
- "provider": "openai-responses"
203
- }
204
- },
205
- "id": "a650195a-f9ab-45fe-a899-7b8480066199",
206
- "timestamp": "2026-08-31T14:23:21.743Z",
207
- "parentId": "c517f385-ba7a-4558-8d6c-5bdbc3e69c1b"
208
- },
209
- {
210
- "type": "assistant.turn_end",
211
- "data": {
212
- "turnId": "1"
213
- },
214
- "id": "5f840bf3-f625-4d0b-ab34-10d425ebdff4",
215
- "timestamp": "2026-08-31T14:23:21.747Z",
216
- "parentId": "a650195a-f9ab-45fe-a899-7b8480066199"
217
- },
218
- {
219
- "type": "session.usage_checkpoint",
220
- "data": {
221
- "totalNanoAiu": 540173000,
222
- "totalPremiumRequests": 2,
223
- "modelCacheState": [
224
- {
225
- "modelId": "gpt-5.6-luna",
226
- "cacheExpiresAt": "2026-08-31T14:53:20.314Z",
227
- "cacheTtlSeconds": 1800
228
- }
229
- ],
230
- "promptCacheBreakState": [
231
- {
232
- "conversation": "main",
233
- "models": {
234
- "gpt-5.6-luna": {
235
- "model": "gpt-5.6-luna",
236
- "vendor": "openai",
237
- "model_call_id": "+mZnRceX/xfuoLcsEVfcQGaZU88GR/1YzxbBe7HWniTwK4pgfYmjbPDKvpQQNOEg/lotbFQBhtUqh/3dNRHhZOuDOcuZ367HcC05YK32/FUF2291vigdGy3/FmvemjZjjKsUxfSkNtv5NI1V3fyeiammkw9GK8UCoTvDgAwwXUjg/8X3rcalWZpBD5B0OgjN2IPcHp8bQKcjzp3buJOhnGvilzcI3pvFk8mImjnYAiIDffWXjdNH7j3bonsIZsN4yeaorQczkODhPvfgX9/6UBWnAF3LKrm0sweU0yoUzGEnOtuLSjF848EAv6Pin114bcBTpxmb+CyXUEN+aNwFstZ2e7J8NovUz5KVq/jfPZ+549QyOnsECO1ZyJs25Go/AKpX+lBumsrFvyQiF8PdB27LSO53qCLw2Z96gFzQ0HcXiiss6H3nIpnv4VlRMjACKsurXp/nlNGUaebBY5WiCFjRz8qBUZBXr1iLzSPlAA==",
238
- "request_id": "00000-6f3ad63a-79d7-442f-822f-22786dcf5ae6",
239
- "github_request_id": "2a5f5687-d4dd-482d-a12e-64c2884d56db",
240
- "api_endpoint": "ws:/responses",
241
- "transport": "websocket",
242
- "session_mode": "autopilot",
243
- "reasoning_effort": "medium",
244
- "initiator": "agent",
245
- "tool_count": 23,
246
- "tool_tokens": 8088,
247
- "tools": [
248
- {
249
- "name": "bash",
250
- "schema_hash": "8071f13f1f8b",
251
- "safe": true
252
- },
253
- {
254
- "name": "read_bash",
255
- "schema_hash": "78bdc74b3707",
256
- "safe": true
257
- },
258
- {
259
- "name": "stop_bash",
260
- "schema_hash": "dd8c0c97e7c9",
261
- "safe": true
262
- },
263
- {
264
- "name": "list_bash",
265
- "schema_hash": "3209638ac5d6",
266
- "safe": true
267
- },
268
- {
269
- "name": "apply_patch",
270
- "schema_hash": "82b4475374ff",
271
- "safe": true
272
- },
273
- {
274
- "name": "view",
275
- "schema_hash": "bce2bfaab6ba",
276
- "safe": true
277
- },
278
- {
279
- "name": "web_fetch",
280
- "schema_hash": "a0829f05c5fd",
281
- "safe": true
282
- },
283
- {
284
- "name": "skill",
285
- "schema_hash": "970ef5551151",
286
- "safe": true
287
- },
288
- {
289
- "name": "ask_user",
290
- "schema_hash": "c45aacfa3e3d",
291
- "safe": true
292
- },
293
- {
294
- "name": "sql",
295
- "schema_hash": "c2a06c9d4c62",
296
- "safe": true
297
- },
298
- {
299
- "name": "task_complete",
300
- "schema_hash": "497193e478f3",
301
- "safe": true
302
- },
303
- {
304
- "name": "read_agent",
305
- "schema_hash": "0cc5a3205bfc",
306
- "safe": true
307
- },
308
- {
309
- "name": "list_agents",
310
- "schema_hash": "e83edd8ed50f",
311
- "safe": true
312
- },
313
- {
314
- "name": "write_agent",
315
- "schema_hash": "1db3ce5292e0",
316
- "safe": true
317
- },
318
- {
319
- "name": "rg",
320
- "schema_hash": "32552e28c37f",
321
- "safe": true
322
- },
323
- {
324
- "name": "glob",
325
- "schema_hash": "0b44fa8a5cf4",
326
- "safe": true
327
- },
328
- {
329
- "name": "task",
330
- "schema_hash": "b7751998643e",
331
- "safe": false
332
- },
333
- {
334
- "name": "github-mcp-server-get_copilot_space",
335
- "schema_hash": "c8adccdafb84",
336
- "safe": true
337
- },
338
- {
339
- "name": "github-mcp-server-get_file_contents",
340
- "schema_hash": "6cf17f9abfd4",
341
- "safe": true
342
- },
343
- {
344
- "name": "github-mcp-server-list_copilot_spaces",
345
- "schema_hash": "32e5d3fd470f",
346
- "safe": true
347
- },
348
- {
349
- "name": "github-mcp-server-search_code",
350
- "schema_hash": "679d4765fec5",
351
- "safe": true
352
- },
353
- {
354
- "name": "github-mcp-server-search_users",
355
- "schema_hash": "da0cf089bedb",
356
- "safe": true
357
- },
358
- {
359
- "name": "web_search",
360
- "schema_hash": "cb18d98a639a",
361
- "safe": true
362
- }
363
- ],
364
- "tools_truncated": 0,
365
- "system_segments": [
366
- {
367
- "segment": "identity",
368
- "hash": "fe1711f6f31c",
369
- "tokens": 754
370
- },
371
- {
372
- "segment": "version_information",
373
- "hash": "13746b2fa56e",
374
- "tokens": 9
375
- },
376
- {
377
- "segment": "model_information",
378
- "hash": "4dfb83d40484",
379
- "tokens": 83
380
- },
381
- {
382
- "segment": "environment_context",
383
- "hash": "1d572ecf0169",
384
- "tokens": 60
385
- },
386
- {
387
- "segment": "code_change_instructions",
388
- "hash": "8882f6eb1325",
389
- "tokens": 667
390
- },
391
- {
392
- "segment": "dynamic_guidelines",
393
- "hash": "47926a65fcda",
394
- "tokens": 78
395
- },
396
- {
397
- "segment": "environment_limitations",
398
- "hash": "9d9ae1650158",
399
- "tokens": 235
400
- },
401
- {
402
- "segment": "tool_intro",
403
- "hash": "2c07d9f78963",
404
- "tokens": 20
405
- },
406
- {
407
- "segment": "tool_instructions",
408
- "hash": "f34c72761c4e",
409
- "tokens": 4099
410
- },
411
- {
412
- "segment": "custom_instructions",
413
- "hash": "01ba4719c80b",
414
- "tokens": 1
415
- },
416
- {
417
- "segment": "additional_instructions",
418
- "hash": "24516e4217f9",
419
- "tokens": 1991
420
- },
421
- {
422
- "segment": "final_instructions",
423
- "hash": "42885e06aebe",
424
- "tokens": 223
425
- }
426
- ],
427
- "conversation": {
428
- "message_count": 7,
429
- "points": [
430
- {
431
- "index": 0,
432
- "hash": "b7418648e048"
433
- },
434
- {
435
- "index": 1,
436
- "hash": "906e64ad2fb2"
437
- },
438
- {
439
- "index": 2,
440
- "hash": "fa56b0c92c8c"
441
- },
442
- {
443
- "index": 3,
444
- "hash": "5689fc5ca33e"
445
- },
446
- {
447
- "index": 4,
448
- "hash": "7d018ae09713"
449
- },
450
- {
451
- "index": 5,
452
- "hash": "fc75a9a38800"
453
- },
454
- {
455
- "index": 6,
456
- "hash": "7fc43fa73e94"
457
- }
458
- ]
459
- },
460
- "cache_config": {
461
- "arm": "control",
462
- "marks_system_prompt": false,
463
- "marks_conversation": false,
464
- "advisor_tool": false,
465
- "incremental_input": true
466
- },
467
- "prompt_tokens": 16428,
468
- "cache_read": 16292,
469
- "cache_write": 133,
470
- "cache_details_reported": true,
471
- "frontier_tokens": 16425,
472
- "frontier_source": "reported_writes",
473
- "ttl_seconds": 1800,
474
- "cache_expires_at": "2026-08-31T14:53:20.314Z",
475
- "completed_at": "2026-08-31T14:23:21.739Z"
476
- }
477
- },
478
- "lastActiveModel": "gpt-5.6-luna",
479
- "pendingRewriteSources": []
480
- }
481
- ]
482
- },
483
- "id": "3c68df7e-54eb-4cf9-a3a4-0b2db5cebd2d",
484
- "timestamp": "2026-08-31T14:23:21.750Z",
485
- "parentId": "5f840bf3-f625-4d0b-ab34-10d425ebdff4"
486
- },
487
- {
488
- "type": "session.idle",
489
- "data": {
490
- "aborted": false
491
- },
492
- "id": "idle-delivered",
493
- "timestamp": "2026-08-31T14:23:21.900Z",
494
- "parentId": null,
495
- "ephemeral": true
496
- }
497
- ]