@pasko70/pibo 1.4.1 → 1.4.2

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 (129) hide show
  1. package/README.md +183 -183
  2. package/context/codex-base-prompt.md +148 -148
  3. package/context/compute-worker.md +23 -23
  4. package/context/pibo-compaction-prompt.md +100 -100
  5. package/context/pibo-native-tooling.md +18 -18
  6. package/context/pibo-system-prompt.md +77 -77
  7. package/dist/apps/chat/agent-store.js +82 -82
  8. package/dist/apps/chat/data/project-service.js +166 -166
  9. package/dist/apps/chat/data/read-state-service.js +18 -18
  10. package/dist/apps/chat/data/timeline-query-service.js +8 -8
  11. package/dist/apps/chat/model-catalog.js +5 -1
  12. package/dist/apps/chat/static-assets.js +853 -853
  13. package/dist/apps/chat/workflow-persistence.js +255 -255
  14. package/dist/apps/chat-ui/assets/{dist-7YaJd19a.js → dist-B2BEpL7n.js} +1 -1
  15. package/dist/apps/chat-ui/assets/{dist-CiYeO8nN.js → dist-BAGS_xkV.js} +1 -1
  16. package/dist/apps/chat-ui/assets/{dist-BIvPnn_C.js → dist-BAXNalar.js} +1 -1
  17. package/dist/apps/chat-ui/assets/{dist-CjSI6y5z.js → dist-BwUvs6Ph.js} +1 -1
  18. package/dist/apps/chat-ui/assets/{dist-Ubstha8t.js → dist-C0zsJ8II.js} +1 -1
  19. package/dist/apps/chat-ui/assets/{dist-KXCMNKIL.js → dist-C3PnEkhb.js} +1 -1
  20. package/dist/apps/chat-ui/assets/{dist-CVQU42Fn.js → dist-CYPL-B2Z.js} +1 -1
  21. package/dist/apps/chat-ui/assets/{dist-BbNE72h8.js → dist-CiDSXgtg.js} +1 -1
  22. package/dist/apps/chat-ui/assets/{dist-D7TCkoFT.js → dist-DnACFKyO.js} +1 -1
  23. package/dist/apps/chat-ui/assets/{dist-ChSZNqKE.js → dist-ZB1-ui2y.js} +1 -1
  24. package/dist/apps/chat-ui/assets/{dist-8Noo5eCN.js → dist-vKlxFkTa.js} +1 -1
  25. package/dist/apps/chat-ui/assets/{index-CmxtUVG1.js → index-0x7tuTNX.js} +3 -3
  26. package/dist/apps/chat-ui/assets/{index-C25VYnyb.css → index-B-qaya1G.css} +1 -1
  27. package/dist/apps/chat-ui/index.html +18 -18
  28. package/dist/apps/chat-ui/manifest.webmanifest +25 -25
  29. package/dist/apps/chat-ui/sw.js +41 -41
  30. package/dist/apps/chat-vscode-web/index.html +12 -12
  31. package/dist/apps/cli-ui/cliSessionsCommand.js +23 -23
  32. package/dist/apps/context-files-ui/index.html +11 -11
  33. package/dist/apps/vscode-artifacts/latest.vsix +0 -0
  34. package/dist/apps/vscode-artifacts/{pibo-vscode-ext-1.4.1.vsix → pibo-vscode-ext-1.4.2.vsix} +0 -0
  35. package/dist/bin/pibo.js +0 -0
  36. package/dist/bin/rg.js +0 -0
  37. package/dist/cli.js +35 -35
  38. package/dist/compute/cli.js +54 -54
  39. package/dist/core/runtime.js +2 -0
  40. package/dist/core/session-router.js +1 -0
  41. package/dist/cron/cli.js +15 -15
  42. package/dist/cron/store.js +49 -49
  43. package/dist/data/cli.js +23 -23
  44. package/dist/data/event-log.js +23 -23
  45. package/dist/data/message-store.js +20 -20
  46. package/dist/data/navigation-store.js +9 -9
  47. package/dist/data/observation-store.js +4 -4
  48. package/dist/data/payload-store.js +17 -17
  49. package/dist/data/schema.js +429 -429
  50. package/dist/data/session-store.js +4 -4
  51. package/dist/data/telemetry-queries.js +54 -54
  52. package/dist/data/telemetry.js +156 -156
  53. package/dist/debug/events.js +12 -12
  54. package/dist/debug/failures.js +6 -6
  55. package/dist/debug/index.js +207 -207
  56. package/dist/debug/messages.js +6 -6
  57. package/dist/debug/pty.js +124 -124
  58. package/dist/debug/session.js +29 -29
  59. package/dist/debug/tools.js +5 -5
  60. package/dist/debug/web-snapshot-browser-scripts.js +294 -294
  61. package/dist/debug/web-streaming-browser-library.js +925 -925
  62. package/dist/debug/web-streaming-browser-scripts.js +232 -232
  63. package/dist/debug/web-streaming-provider-telemetry.js +4 -4
  64. package/dist/debug/web.js +93 -93
  65. package/dist/gateway/cli.js +19 -19
  66. package/dist/mcp/config-command.js +53 -53
  67. package/dist/mcp/index.js +21 -21
  68. package/dist/mcp/registry.js +11 -11
  69. package/dist/pi-packages/cli.js +11 -11
  70. package/dist/plugins/context-files-store.js +110 -110
  71. package/dist/plugins/context-files.js +4 -4
  72. package/dist/providers/glm.js +59 -0
  73. package/dist/ralph/cli.js +18 -18
  74. package/dist/ralph/templates.js +140 -140
  75. package/dist/reliability/store.js +226 -226
  76. package/dist/sessions/pibo-data-store.js +16 -16
  77. package/dist/sessions/sqlite-store.js +53 -53
  78. package/dist/setup/cli.js +58 -58
  79. package/dist/tools/agent-browser-wrapper.js +80 -80
  80. package/dist/tools/browser-use-cdp.js +12 -12
  81. package/dist/tools/browser-use-wrapper.js +762 -762
  82. package/dist/tools/guides.js +455 -455
  83. package/dist/tools/index.js +99 -99
  84. package/dist/tools/runtime/node-worker-source.js +205 -205
  85. package/dist/tools/runtime/python-worker-source.js +177 -177
  86. package/dist/vscode/cli.js +9 -9
  87. package/dist/web-annotations/cdp.js +900 -900
  88. package/dist/web-annotations/store.js +96 -96
  89. package/docs/README.md +23 -23
  90. package/docs/ops/install-developer-host.md +112 -112
  91. package/docs/ops/install-user-host.md +96 -96
  92. package/docs/ops/upgrade-user-to-developer-host.md +69 -69
  93. package/docs/ops/vscode-extension-release.md +160 -160
  94. package/package.json +1 -1
  95. package/skills/builtin/pi-agent-harness/SKILL.md +319 -319
  96. package/skills/builtin/pi-agent-harness/agents/openai.yaml +4 -4
  97. package/skills/builtin/pibo-docker-system/SKILL.md +170 -170
  98. package/skills/builtin/pibo-spec-writing/SKILL.md +330 -330
  99. package/skills/builtin/prd/SKILL.md +143 -143
  100. package/skills/builtin/ralph-loop/SKILL.md +359 -359
  101. package/skills/builtin/ralph-prd-json/SKILL.md +123 -123
  102. package/skills/builtin/skill-creator/LICENSE.txt +201 -201
  103. package/skills/builtin/skill-creator/SKILL.md +513 -513
  104. package/skills/builtin/skill-creator/agents/analyzer.md +274 -274
  105. package/skills/builtin/skill-creator/agents/comparator.md +202 -202
  106. package/skills/builtin/skill-creator/agents/grader.md +223 -223
  107. package/skills/builtin/skill-creator/assets/eval_review.html +146 -146
  108. package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -471
  109. package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -1325
  110. package/skills/builtin/skill-creator/references/schemas.md +430 -430
  111. package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -401
  112. package/skills/builtin/skill-creator/scripts/generate_report.py +326 -326
  113. package/skills/builtin/skill-creator/scripts/improve_description.py +247 -247
  114. package/skills/builtin/skill-creator/scripts/package_skill.py +136 -136
  115. package/skills/builtin/skill-creator/scripts/quick_validate.py +102 -102
  116. package/skills/builtin/skill-creator/scripts/run_eval.py +310 -310
  117. package/skills/builtin/skill-creator/scripts/run_loop.py +328 -328
  118. package/skills/builtin/skill-creator/scripts/utils.py +47 -47
  119. package/skills/builtin/web-annotations/SKILL.md +93 -93
  120. package/src/mcp/LICENSE.mcp-cli +21 -21
  121. package/dist/apps/vscode-artifacts/pibo-vscode-1.3.0.vsix +0 -0
  122. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.3.vsix +0 -0
  123. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.4.vsix +0 -0
  124. package/dist/apps/vscode-artifacts/pibo-vscode-ext-1.3.5.vsix +0 -0
  125. package/dist/core/shared-app.js +0 -17
  126. package/dist/data/final-app-space-cutover-migration.js +0 -728
  127. package/dist/data/shared-app-migration.js +0 -757
  128. package/dist/session-ui/ownerViewModel.js +0 -27
  129. package/dist/shared-app.js +0 -4
@@ -1,434 +1,434 @@
1
1
  export const PIBO_DATA_SCHEMA_VERSION = 3;
2
2
  export function applyPiboDataSchema(db) {
3
- db.exec(`
4
- CREATE TABLE IF NOT EXISTS sessions (
5
- id TEXT PRIMARY KEY,
6
- pi_session_id TEXT UNIQUE,
7
- room_id TEXT,
8
- root_session_id TEXT,
9
- parent_id TEXT,
10
- origin_id TEXT,
11
- channel TEXT NOT NULL,
12
- kind TEXT NOT NULL,
13
- profile TEXT NOT NULL,
14
- active_model_json TEXT,
15
- workspace TEXT,
16
- title TEXT NOT NULL DEFAULT 'Untitled Session',
17
- first_message_preview TEXT,
18
- status TEXT NOT NULL DEFAULT 'idle',
19
- archived_at TEXT,
20
- deleted_at TEXT,
21
- metadata_json TEXT NOT NULL DEFAULT '{}',
22
- created_at TEXT NOT NULL,
23
- updated_at TEXT NOT NULL,
24
- last_activity_at TEXT NOT NULL
25
- );
26
-
27
- CREATE TABLE IF NOT EXISTS rooms (
28
- id TEXT PRIMARY KEY,
29
- name TEXT NOT NULL,
30
- topic TEXT,
31
- type TEXT NOT NULL,
32
- parent_room_id TEXT,
33
- workspace TEXT,
34
- archived_at TEXT,
35
- retention_policy_id TEXT,
36
- metadata_json TEXT NOT NULL DEFAULT '{}',
37
- created_at TEXT NOT NULL,
38
- updated_at TEXT NOT NULL
39
- );
40
-
41
-
42
- CREATE TABLE IF NOT EXISTS payloads (
43
- id TEXT PRIMARY KEY,
44
- sha256 TEXT NOT NULL UNIQUE,
45
- storage_kind TEXT NOT NULL,
46
- storage_path TEXT,
47
- content_type TEXT NOT NULL,
48
- encoding TEXT NOT NULL DEFAULT 'gzip',
49
- byte_size INTEGER NOT NULL,
50
- compressed_byte_size INTEGER,
51
- preview_text TEXT,
52
- retention_class TEXT NOT NULL,
53
- ref_count INTEGER NOT NULL DEFAULT 0,
54
- status TEXT NOT NULL DEFAULT 'committed',
55
- created_at TEXT NOT NULL,
56
- last_verified_at TEXT
57
- );
58
-
59
- CREATE TABLE IF NOT EXISTS event_log (
60
- stream_id INTEGER PRIMARY KEY,
61
- session_id TEXT,
62
- session_sequence INTEGER,
63
- room_id TEXT,
64
- topic TEXT NOT NULL,
65
- type TEXT NOT NULL,
66
- source TEXT NOT NULL,
67
- actor_type TEXT,
68
- actor_id TEXT,
69
- turn_id TEXT,
70
- event_id TEXT,
71
- tool_call_id TEXT,
72
- run_id TEXT,
73
- workflow_run_id TEXT,
74
- idempotency_key TEXT,
75
- retention_class TEXT NOT NULL,
76
- payload_ref TEXT,
77
- preview_text TEXT,
78
- attributes_json TEXT NOT NULL DEFAULT '{}',
79
- created_at TEXT NOT NULL,
80
- indexed_at TEXT
81
- );
82
-
83
- CREATE TABLE IF NOT EXISTS chat_messages (
84
- id TEXT PRIMARY KEY,
85
- session_id TEXT NOT NULL,
86
- room_id TEXT,
87
- sequence INTEGER NOT NULL,
88
- turn_id TEXT,
89
- role TEXT NOT NULL,
90
- actor_id TEXT,
91
- status TEXT NOT NULL,
92
- created_at TEXT NOT NULL,
93
- completed_at TEXT,
94
- content_preview TEXT,
95
- content_payload_ref TEXT,
96
- source_stream_id INTEGER,
97
- input_tokens INTEGER,
98
- output_tokens INTEGER,
99
- cost_usd REAL,
100
- attributes_json TEXT NOT NULL DEFAULT '{}',
101
- UNIQUE(session_id, sequence)
102
- );
103
-
104
- CREATE TABLE IF NOT EXISTS observations (
105
- id TEXT PRIMARY KEY,
106
- session_id TEXT NOT NULL,
107
- sequence INTEGER NOT NULL,
108
- trace_id TEXT,
109
- span_id TEXT,
110
- parent_span_id TEXT,
111
- parent_observation_id TEXT,
112
- turn_id TEXT,
113
- event_stream_id INTEGER,
114
- kind TEXT NOT NULL,
115
- role TEXT,
116
- name TEXT,
117
- status TEXT NOT NULL,
118
- started_at TEXT NOT NULL,
119
- ended_at TEXT,
120
- latency_ms INTEGER,
121
- model_provider TEXT,
122
- model_id TEXT,
123
- input_tokens INTEGER,
124
- output_tokens INTEGER,
125
- cost_usd REAL,
126
- preview_text TEXT,
127
- payload_ref TEXT,
128
- attributes_json TEXT NOT NULL DEFAULT '{}',
129
- UNIQUE(session_id, sequence)
130
- );
131
-
132
- CREATE TABLE IF NOT EXISTS session_stats (
133
- session_id TEXT PRIMARY KEY,
134
- message_count INTEGER NOT NULL DEFAULT 0,
135
- tool_call_count INTEGER NOT NULL DEFAULT 0,
136
- error_count INTEGER NOT NULL DEFAULT 0,
137
- last_event_stream_id INTEGER,
138
- last_message_sequence INTEGER,
139
- last_observation_sequence INTEGER,
140
- last_message_preview TEXT,
141
- last_activity_at TEXT NOT NULL,
142
- status TEXT NOT NULL DEFAULT 'idle',
143
- total_latency_ms INTEGER NOT NULL DEFAULT 0,
144
- total_input_tokens INTEGER NOT NULL DEFAULT 0,
145
- total_output_tokens INTEGER NOT NULL DEFAULT 0,
146
- total_cost_usd REAL NOT NULL DEFAULT 0,
147
- updated_at TEXT NOT NULL
148
- );
149
-
150
- CREATE TABLE IF NOT EXISTS app_session_read_state (
151
- session_id TEXT PRIMARY KEY,
152
- unread_count INTEGER NOT NULL DEFAULT 0,
153
- last_read_stream_id INTEGER NOT NULL DEFAULT 0,
154
- last_read_message_sequence INTEGER NOT NULL DEFAULT 0,
155
- last_read_at TEXT,
156
- updated_at TEXT NOT NULL
157
- );
158
-
159
- CREATE TABLE IF NOT EXISTS app_room_read_state (
160
- room_id TEXT PRIMARY KEY,
161
- unread_count INTEGER NOT NULL DEFAULT 0,
162
- last_read_stream_id INTEGER NOT NULL DEFAULT 0,
163
- last_read_at TEXT,
164
- updated_at TEXT NOT NULL
165
- );
166
-
167
- CREATE TABLE IF NOT EXISTS session_navigation (
168
- room_id TEXT,
169
- session_id TEXT PRIMARY KEY,
170
- root_session_id TEXT,
171
- parent_id TEXT,
172
- origin_id TEXT,
173
- title TEXT NOT NULL,
174
- profile TEXT NOT NULL,
175
- status TEXT NOT NULL,
176
- archived_at TEXT,
177
- last_activity_at TEXT NOT NULL,
178
- last_message_preview TEXT,
179
- child_count INTEGER NOT NULL DEFAULT 0,
180
- sort_key TEXT NOT NULL,
181
- updated_at TEXT NOT NULL
182
- );
183
-
184
- CREATE TABLE IF NOT EXISTS indexer_offsets (
185
- indexer_name TEXT PRIMARY KEY,
186
- source_name TEXT NOT NULL,
187
- last_stream_id INTEGER NOT NULL,
188
- updated_at TEXT NOT NULL
189
- );
190
-
191
- CREATE TABLE IF NOT EXISTS migration_import_map (
192
- source_store TEXT NOT NULL,
193
- source_table TEXT NOT NULL,
194
- source_key TEXT NOT NULL,
195
- target_kind TEXT NOT NULL,
196
- target_id TEXT NOT NULL,
197
- imported_at TEXT NOT NULL,
198
- PRIMARY KEY(source_store, source_table, source_key)
199
- );
200
-
201
- CREATE TABLE IF NOT EXISTS telemetry_turns (
202
- turn_id TEXT PRIMARY KEY,
203
- pibo_session_id TEXT NOT NULL,
204
- root_session_id TEXT,
205
- room_id TEXT,
206
- input_event_id TEXT,
207
- event_id TEXT,
208
- event_stream_id INTEGER,
209
- payload_ref TEXT,
210
- run_id TEXT,
211
- source TEXT NOT NULL,
212
- status TEXT NOT NULL,
213
- current_phase TEXT,
214
- queued_at TEXT NOT NULL,
215
- started_at TEXT,
216
- completed_at TEXT,
217
- last_progress_at TEXT,
218
- queued_behind INTEGER,
219
- queue_depth INTEGER,
220
- summary TEXT,
221
- retention_class TEXT NOT NULL,
222
- created_at TEXT NOT NULL,
223
- updated_at TEXT NOT NULL,
224
- metadata_json TEXT NOT NULL DEFAULT '{}'
225
- );
226
-
227
- CREATE TABLE IF NOT EXISTS telemetry_phases (
228
- phase_id TEXT PRIMARY KEY,
229
- turn_id TEXT NOT NULL,
230
- pibo_session_id TEXT NOT NULL,
231
- root_session_id TEXT,
232
- room_id TEXT,
233
- name TEXT NOT NULL,
234
- status TEXT NOT NULL,
235
- started_at TEXT NOT NULL,
236
- ended_at TEXT,
237
- last_progress_at TEXT,
238
- duration_ms INTEGER,
239
- provider_request_id TEXT,
240
- tool_call_id TEXT,
241
- event_stream_id INTEGER,
242
- event_id TEXT,
243
- payload_ref TEXT,
244
- run_id TEXT,
245
- counters_json TEXT NOT NULL DEFAULT '{}',
246
- summary TEXT,
247
- retention_class TEXT NOT NULL,
248
- created_at TEXT NOT NULL,
249
- updated_at TEXT NOT NULL
250
- );
251
-
252
- CREATE TABLE IF NOT EXISTS telemetry_provider_requests (
253
- provider_request_id TEXT PRIMARY KEY,
254
- pibo_session_id TEXT NOT NULL,
255
- root_session_id TEXT,
256
- room_id TEXT,
257
- turn_id TEXT NOT NULL,
258
- phase_id TEXT,
259
- provider TEXT NOT NULL,
260
- api TEXT NOT NULL,
261
- model TEXT NOT NULL,
262
- transport TEXT NOT NULL,
263
- service_tier TEXT,
264
- status TEXT NOT NULL,
265
- started_at TEXT NOT NULL,
266
- response_headers_at TEXT,
267
- first_byte_at TEXT,
268
- last_raw_event_at TEXT,
269
- last_normalized_event_at TEXT,
270
- completed_at TEXT,
271
- http_status INTEGER,
272
- upstream_response_id TEXT,
273
- raw_event_count INTEGER NOT NULL DEFAULT 0,
274
- normalized_event_count INTEGER NOT NULL DEFAULT 0,
275
- parse_error_count INTEGER NOT NULL DEFAULT 0,
276
- unknown_event_count INTEGER NOT NULL DEFAULT 0,
277
- bytes_received INTEGER,
278
- event_type_counts_json TEXT NOT NULL DEFAULT '{}',
279
- event_stream_id INTEGER,
280
- event_id TEXT,
281
- payload_ref TEXT,
282
- error_category TEXT,
283
- error_message TEXT,
284
- capture_mode TEXT NOT NULL,
285
- retention_class TEXT NOT NULL,
286
- created_at TEXT NOT NULL,
287
- updated_at TEXT NOT NULL
288
- );
289
-
290
- CREATE TABLE IF NOT EXISTS telemetry_provider_events (
291
- raw_event_id TEXT PRIMARY KEY,
292
- provider_request_id TEXT NOT NULL,
293
- pibo_session_id TEXT,
294
- turn_id TEXT,
295
- phase_id TEXT,
296
- sequence INTEGER NOT NULL,
297
- received_at TEXT NOT NULL,
298
- event_type TEXT NOT NULL,
299
- byte_size INTEGER NOT NULL DEFAULT 0,
300
- parse_status TEXT NOT NULL,
301
- normalized_type TEXT,
302
- event_stream_id INTEGER,
303
- event_id TEXT,
304
- item_id TEXT,
305
- tool_call_id TEXT,
306
- payload_ref TEXT,
307
- payload_preview_ref TEXT,
308
- safe_fields_json TEXT NOT NULL DEFAULT '{}',
309
- retention_class TEXT NOT NULL,
310
- created_at TEXT NOT NULL,
311
- updated_at TEXT NOT NULL,
312
- UNIQUE(provider_request_id, sequence)
313
- );
314
-
315
- CREATE TABLE IF NOT EXISTS telemetry_tool_calls (
316
- tool_call_id TEXT PRIMARY KEY,
317
- pibo_session_id TEXT NOT NULL,
318
- root_session_id TEXT,
319
- room_id TEXT,
320
- turn_id TEXT NOT NULL,
321
- provider_request_id TEXT,
322
- provider_item_id TEXT,
323
- output_index INTEGER,
324
- tool_name TEXT NOT NULL,
325
- status TEXT NOT NULL,
326
- args_started_at TEXT,
327
- first_delta_at TEXT,
328
- last_delta_at TEXT,
329
- args_completed_at TEXT,
330
- execution_started_at TEXT,
331
- execution_ended_at TEXT,
332
- duration_ms INTEGER,
333
- args_bytes INTEGER NOT NULL DEFAULT 0,
334
- parse_status TEXT NOT NULL,
335
- safe_arg_keys_json TEXT NOT NULL DEFAULT '[]',
336
- event_stream_id INTEGER,
337
- event_id TEXT,
338
- payload_ref TEXT,
339
- run_id TEXT,
340
- error_category TEXT,
341
- error_message TEXT,
342
- retention_class TEXT NOT NULL,
343
- created_at TEXT NOT NULL,
344
- updated_at TEXT NOT NULL
345
- );
346
-
347
- CREATE INDEX IF NOT EXISTS idx_sessions_room_activity
348
- ON sessions(room_id, archived_at, last_activity_at DESC);
349
- CREATE INDEX IF NOT EXISTS idx_sessions_parent_activity
350
- ON sessions(parent_id, updated_at DESC);
351
- CREATE INDEX IF NOT EXISTS idx_sessions_origin_activity
352
- ON sessions(origin_id, updated_at DESC);
353
- CREATE INDEX IF NOT EXISTS idx_sessions_channel_kind_activity
354
- ON sessions(channel, kind, updated_at DESC);
355
- CREATE INDEX IF NOT EXISTS idx_event_log_session_stream
356
- ON event_log(session_id, stream_id);
357
- CREATE INDEX IF NOT EXISTS idx_event_log_room_stream
358
- ON event_log(room_id, stream_id);
359
- CREATE INDEX IF NOT EXISTS idx_event_log_topic_stream
360
- ON event_log(topic, stream_id);
361
- CREATE UNIQUE INDEX IF NOT EXISTS idx_event_log_idempotency
362
- ON event_log(idempotency_key)
363
- WHERE idempotency_key IS NOT NULL;
364
- CREATE INDEX IF NOT EXISTS idx_chat_messages_session_sequence
365
- ON chat_messages(session_id, sequence);
366
- CREATE INDEX IF NOT EXISTS idx_observations_session_sequence
367
- ON observations(session_id, sequence);
368
- CREATE INDEX IF NOT EXISTS idx_session_navigation_room_sort
369
- ON session_navigation(room_id, archived_at, sort_key DESC);
370
- CREATE INDEX IF NOT EXISTS idx_session_navigation_root
371
- ON session_navigation(root_session_id, parent_id);
372
- CREATE INDEX IF NOT EXISTS idx_telemetry_turns_session_updated
373
- ON telemetry_turns(pibo_session_id, updated_at DESC);
374
- CREATE INDEX IF NOT EXISTS idx_telemetry_turns_room_updated
375
- ON telemetry_turns(room_id, updated_at DESC);
376
- CREATE INDEX IF NOT EXISTS idx_telemetry_turns_event
377
- ON telemetry_turns(event_id, event_stream_id);
378
- CREATE INDEX IF NOT EXISTS idx_telemetry_turns_payload
379
- ON telemetry_turns(payload_ref);
380
- CREATE INDEX IF NOT EXISTS idx_telemetry_turns_retention_updated
381
- ON telemetry_turns(retention_class, updated_at);
382
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_turn_started
383
- ON telemetry_phases(turn_id, started_at ASC);
384
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_session_status
385
- ON telemetry_phases(pibo_session_id, status, last_progress_at);
386
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_provider_request
387
- ON telemetry_phases(provider_request_id);
388
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_tool_call
389
- ON telemetry_phases(tool_call_id);
390
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_event
391
- ON telemetry_phases(event_id, event_stream_id);
392
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_payload
393
- ON telemetry_phases(payload_ref);
394
- CREATE INDEX IF NOT EXISTS idx_telemetry_phases_retention_updated
395
- ON telemetry_phases(retention_class, updated_at);
396
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_session_updated
397
- ON telemetry_provider_requests(pibo_session_id, updated_at DESC);
398
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_turn
399
- ON telemetry_provider_requests(turn_id, started_at ASC);
400
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_upstream
401
- ON telemetry_provider_requests(upstream_response_id);
402
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_event
403
- ON telemetry_provider_requests(event_id, event_stream_id);
404
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_payload
405
- ON telemetry_provider_requests(payload_ref);
406
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_retention_updated
407
- ON telemetry_provider_requests(retention_class, updated_at);
408
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_request_sequence
409
- ON telemetry_provider_events(provider_request_id, sequence ASC);
410
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_session_received
411
- ON telemetry_provider_events(pibo_session_id, received_at DESC);
412
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_event
413
- ON telemetry_provider_events(event_id, event_stream_id);
414
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_payload
415
- ON telemetry_provider_events(payload_ref, payload_preview_ref);
416
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_tool_call
417
- ON telemetry_provider_events(tool_call_id);
418
- CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_retention_received
419
- ON telemetry_provider_events(retention_class, received_at);
420
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_session_updated
421
- ON telemetry_tool_calls(pibo_session_id, updated_at DESC);
422
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_turn
423
- ON telemetry_tool_calls(turn_id);
424
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_provider_request
425
- ON telemetry_tool_calls(provider_request_id);
426
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_event
427
- ON telemetry_tool_calls(event_id, event_stream_id);
428
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_payload
429
- ON telemetry_tool_calls(payload_ref);
430
- CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_retention_updated
431
- ON telemetry_tool_calls(retention_class, updated_at);
3
+ db.exec(`
4
+ CREATE TABLE IF NOT EXISTS sessions (
5
+ id TEXT PRIMARY KEY,
6
+ pi_session_id TEXT UNIQUE,
7
+ room_id TEXT,
8
+ root_session_id TEXT,
9
+ parent_id TEXT,
10
+ origin_id TEXT,
11
+ channel TEXT NOT NULL,
12
+ kind TEXT NOT NULL,
13
+ profile TEXT NOT NULL,
14
+ active_model_json TEXT,
15
+ workspace TEXT,
16
+ title TEXT NOT NULL DEFAULT 'Untitled Session',
17
+ first_message_preview TEXT,
18
+ status TEXT NOT NULL DEFAULT 'idle',
19
+ archived_at TEXT,
20
+ deleted_at TEXT,
21
+ metadata_json TEXT NOT NULL DEFAULT '{}',
22
+ created_at TEXT NOT NULL,
23
+ updated_at TEXT NOT NULL,
24
+ last_activity_at TEXT NOT NULL
25
+ );
26
+
27
+ CREATE TABLE IF NOT EXISTS rooms (
28
+ id TEXT PRIMARY KEY,
29
+ name TEXT NOT NULL,
30
+ topic TEXT,
31
+ type TEXT NOT NULL,
32
+ parent_room_id TEXT,
33
+ workspace TEXT,
34
+ archived_at TEXT,
35
+ retention_policy_id TEXT,
36
+ metadata_json TEXT NOT NULL DEFAULT '{}',
37
+ created_at TEXT NOT NULL,
38
+ updated_at TEXT NOT NULL
39
+ );
40
+
41
+
42
+ CREATE TABLE IF NOT EXISTS payloads (
43
+ id TEXT PRIMARY KEY,
44
+ sha256 TEXT NOT NULL UNIQUE,
45
+ storage_kind TEXT NOT NULL,
46
+ storage_path TEXT,
47
+ content_type TEXT NOT NULL,
48
+ encoding TEXT NOT NULL DEFAULT 'gzip',
49
+ byte_size INTEGER NOT NULL,
50
+ compressed_byte_size INTEGER,
51
+ preview_text TEXT,
52
+ retention_class TEXT NOT NULL,
53
+ ref_count INTEGER NOT NULL DEFAULT 0,
54
+ status TEXT NOT NULL DEFAULT 'committed',
55
+ created_at TEXT NOT NULL,
56
+ last_verified_at TEXT
57
+ );
58
+
59
+ CREATE TABLE IF NOT EXISTS event_log (
60
+ stream_id INTEGER PRIMARY KEY,
61
+ session_id TEXT,
62
+ session_sequence INTEGER,
63
+ room_id TEXT,
64
+ topic TEXT NOT NULL,
65
+ type TEXT NOT NULL,
66
+ source TEXT NOT NULL,
67
+ actor_type TEXT,
68
+ actor_id TEXT,
69
+ turn_id TEXT,
70
+ event_id TEXT,
71
+ tool_call_id TEXT,
72
+ run_id TEXT,
73
+ workflow_run_id TEXT,
74
+ idempotency_key TEXT,
75
+ retention_class TEXT NOT NULL,
76
+ payload_ref TEXT,
77
+ preview_text TEXT,
78
+ attributes_json TEXT NOT NULL DEFAULT '{}',
79
+ created_at TEXT NOT NULL,
80
+ indexed_at TEXT
81
+ );
82
+
83
+ CREATE TABLE IF NOT EXISTS chat_messages (
84
+ id TEXT PRIMARY KEY,
85
+ session_id TEXT NOT NULL,
86
+ room_id TEXT,
87
+ sequence INTEGER NOT NULL,
88
+ turn_id TEXT,
89
+ role TEXT NOT NULL,
90
+ actor_id TEXT,
91
+ status TEXT NOT NULL,
92
+ created_at TEXT NOT NULL,
93
+ completed_at TEXT,
94
+ content_preview TEXT,
95
+ content_payload_ref TEXT,
96
+ source_stream_id INTEGER,
97
+ input_tokens INTEGER,
98
+ output_tokens INTEGER,
99
+ cost_usd REAL,
100
+ attributes_json TEXT NOT NULL DEFAULT '{}',
101
+ UNIQUE(session_id, sequence)
102
+ );
103
+
104
+ CREATE TABLE IF NOT EXISTS observations (
105
+ id TEXT PRIMARY KEY,
106
+ session_id TEXT NOT NULL,
107
+ sequence INTEGER NOT NULL,
108
+ trace_id TEXT,
109
+ span_id TEXT,
110
+ parent_span_id TEXT,
111
+ parent_observation_id TEXT,
112
+ turn_id TEXT,
113
+ event_stream_id INTEGER,
114
+ kind TEXT NOT NULL,
115
+ role TEXT,
116
+ name TEXT,
117
+ status TEXT NOT NULL,
118
+ started_at TEXT NOT NULL,
119
+ ended_at TEXT,
120
+ latency_ms INTEGER,
121
+ model_provider TEXT,
122
+ model_id TEXT,
123
+ input_tokens INTEGER,
124
+ output_tokens INTEGER,
125
+ cost_usd REAL,
126
+ preview_text TEXT,
127
+ payload_ref TEXT,
128
+ attributes_json TEXT NOT NULL DEFAULT '{}',
129
+ UNIQUE(session_id, sequence)
130
+ );
131
+
132
+ CREATE TABLE IF NOT EXISTS session_stats (
133
+ session_id TEXT PRIMARY KEY,
134
+ message_count INTEGER NOT NULL DEFAULT 0,
135
+ tool_call_count INTEGER NOT NULL DEFAULT 0,
136
+ error_count INTEGER NOT NULL DEFAULT 0,
137
+ last_event_stream_id INTEGER,
138
+ last_message_sequence INTEGER,
139
+ last_observation_sequence INTEGER,
140
+ last_message_preview TEXT,
141
+ last_activity_at TEXT NOT NULL,
142
+ status TEXT NOT NULL DEFAULT 'idle',
143
+ total_latency_ms INTEGER NOT NULL DEFAULT 0,
144
+ total_input_tokens INTEGER NOT NULL DEFAULT 0,
145
+ total_output_tokens INTEGER NOT NULL DEFAULT 0,
146
+ total_cost_usd REAL NOT NULL DEFAULT 0,
147
+ updated_at TEXT NOT NULL
148
+ );
149
+
150
+ CREATE TABLE IF NOT EXISTS app_session_read_state (
151
+ session_id TEXT PRIMARY KEY,
152
+ unread_count INTEGER NOT NULL DEFAULT 0,
153
+ last_read_stream_id INTEGER NOT NULL DEFAULT 0,
154
+ last_read_message_sequence INTEGER NOT NULL DEFAULT 0,
155
+ last_read_at TEXT,
156
+ updated_at TEXT NOT NULL
157
+ );
158
+
159
+ CREATE TABLE IF NOT EXISTS app_room_read_state (
160
+ room_id TEXT PRIMARY KEY,
161
+ unread_count INTEGER NOT NULL DEFAULT 0,
162
+ last_read_stream_id INTEGER NOT NULL DEFAULT 0,
163
+ last_read_at TEXT,
164
+ updated_at TEXT NOT NULL
165
+ );
166
+
167
+ CREATE TABLE IF NOT EXISTS session_navigation (
168
+ room_id TEXT,
169
+ session_id TEXT PRIMARY KEY,
170
+ root_session_id TEXT,
171
+ parent_id TEXT,
172
+ origin_id TEXT,
173
+ title TEXT NOT NULL,
174
+ profile TEXT NOT NULL,
175
+ status TEXT NOT NULL,
176
+ archived_at TEXT,
177
+ last_activity_at TEXT NOT NULL,
178
+ last_message_preview TEXT,
179
+ child_count INTEGER NOT NULL DEFAULT 0,
180
+ sort_key TEXT NOT NULL,
181
+ updated_at TEXT NOT NULL
182
+ );
183
+
184
+ CREATE TABLE IF NOT EXISTS indexer_offsets (
185
+ indexer_name TEXT PRIMARY KEY,
186
+ source_name TEXT NOT NULL,
187
+ last_stream_id INTEGER NOT NULL,
188
+ updated_at TEXT NOT NULL
189
+ );
190
+
191
+ CREATE TABLE IF NOT EXISTS migration_import_map (
192
+ source_store TEXT NOT NULL,
193
+ source_table TEXT NOT NULL,
194
+ source_key TEXT NOT NULL,
195
+ target_kind TEXT NOT NULL,
196
+ target_id TEXT NOT NULL,
197
+ imported_at TEXT NOT NULL,
198
+ PRIMARY KEY(source_store, source_table, source_key)
199
+ );
200
+
201
+ CREATE TABLE IF NOT EXISTS telemetry_turns (
202
+ turn_id TEXT PRIMARY KEY,
203
+ pibo_session_id TEXT NOT NULL,
204
+ root_session_id TEXT,
205
+ room_id TEXT,
206
+ input_event_id TEXT,
207
+ event_id TEXT,
208
+ event_stream_id INTEGER,
209
+ payload_ref TEXT,
210
+ run_id TEXT,
211
+ source TEXT NOT NULL,
212
+ status TEXT NOT NULL,
213
+ current_phase TEXT,
214
+ queued_at TEXT NOT NULL,
215
+ started_at TEXT,
216
+ completed_at TEXT,
217
+ last_progress_at TEXT,
218
+ queued_behind INTEGER,
219
+ queue_depth INTEGER,
220
+ summary TEXT,
221
+ retention_class TEXT NOT NULL,
222
+ created_at TEXT NOT NULL,
223
+ updated_at TEXT NOT NULL,
224
+ metadata_json TEXT NOT NULL DEFAULT '{}'
225
+ );
226
+
227
+ CREATE TABLE IF NOT EXISTS telemetry_phases (
228
+ phase_id TEXT PRIMARY KEY,
229
+ turn_id TEXT NOT NULL,
230
+ pibo_session_id TEXT NOT NULL,
231
+ root_session_id TEXT,
232
+ room_id TEXT,
233
+ name TEXT NOT NULL,
234
+ status TEXT NOT NULL,
235
+ started_at TEXT NOT NULL,
236
+ ended_at TEXT,
237
+ last_progress_at TEXT,
238
+ duration_ms INTEGER,
239
+ provider_request_id TEXT,
240
+ tool_call_id TEXT,
241
+ event_stream_id INTEGER,
242
+ event_id TEXT,
243
+ payload_ref TEXT,
244
+ run_id TEXT,
245
+ counters_json TEXT NOT NULL DEFAULT '{}',
246
+ summary TEXT,
247
+ retention_class TEXT NOT NULL,
248
+ created_at TEXT NOT NULL,
249
+ updated_at TEXT NOT NULL
250
+ );
251
+
252
+ CREATE TABLE IF NOT EXISTS telemetry_provider_requests (
253
+ provider_request_id TEXT PRIMARY KEY,
254
+ pibo_session_id TEXT NOT NULL,
255
+ root_session_id TEXT,
256
+ room_id TEXT,
257
+ turn_id TEXT NOT NULL,
258
+ phase_id TEXT,
259
+ provider TEXT NOT NULL,
260
+ api TEXT NOT NULL,
261
+ model TEXT NOT NULL,
262
+ transport TEXT NOT NULL,
263
+ service_tier TEXT,
264
+ status TEXT NOT NULL,
265
+ started_at TEXT NOT NULL,
266
+ response_headers_at TEXT,
267
+ first_byte_at TEXT,
268
+ last_raw_event_at TEXT,
269
+ last_normalized_event_at TEXT,
270
+ completed_at TEXT,
271
+ http_status INTEGER,
272
+ upstream_response_id TEXT,
273
+ raw_event_count INTEGER NOT NULL DEFAULT 0,
274
+ normalized_event_count INTEGER NOT NULL DEFAULT 0,
275
+ parse_error_count INTEGER NOT NULL DEFAULT 0,
276
+ unknown_event_count INTEGER NOT NULL DEFAULT 0,
277
+ bytes_received INTEGER,
278
+ event_type_counts_json TEXT NOT NULL DEFAULT '{}',
279
+ event_stream_id INTEGER,
280
+ event_id TEXT,
281
+ payload_ref TEXT,
282
+ error_category TEXT,
283
+ error_message TEXT,
284
+ capture_mode TEXT NOT NULL,
285
+ retention_class TEXT NOT NULL,
286
+ created_at TEXT NOT NULL,
287
+ updated_at TEXT NOT NULL
288
+ );
289
+
290
+ CREATE TABLE IF NOT EXISTS telemetry_provider_events (
291
+ raw_event_id TEXT PRIMARY KEY,
292
+ provider_request_id TEXT NOT NULL,
293
+ pibo_session_id TEXT,
294
+ turn_id TEXT,
295
+ phase_id TEXT,
296
+ sequence INTEGER NOT NULL,
297
+ received_at TEXT NOT NULL,
298
+ event_type TEXT NOT NULL,
299
+ byte_size INTEGER NOT NULL DEFAULT 0,
300
+ parse_status TEXT NOT NULL,
301
+ normalized_type TEXT,
302
+ event_stream_id INTEGER,
303
+ event_id TEXT,
304
+ item_id TEXT,
305
+ tool_call_id TEXT,
306
+ payload_ref TEXT,
307
+ payload_preview_ref TEXT,
308
+ safe_fields_json TEXT NOT NULL DEFAULT '{}',
309
+ retention_class TEXT NOT NULL,
310
+ created_at TEXT NOT NULL,
311
+ updated_at TEXT NOT NULL,
312
+ UNIQUE(provider_request_id, sequence)
313
+ );
314
+
315
+ CREATE TABLE IF NOT EXISTS telemetry_tool_calls (
316
+ tool_call_id TEXT PRIMARY KEY,
317
+ pibo_session_id TEXT NOT NULL,
318
+ root_session_id TEXT,
319
+ room_id TEXT,
320
+ turn_id TEXT NOT NULL,
321
+ provider_request_id TEXT,
322
+ provider_item_id TEXT,
323
+ output_index INTEGER,
324
+ tool_name TEXT NOT NULL,
325
+ status TEXT NOT NULL,
326
+ args_started_at TEXT,
327
+ first_delta_at TEXT,
328
+ last_delta_at TEXT,
329
+ args_completed_at TEXT,
330
+ execution_started_at TEXT,
331
+ execution_ended_at TEXT,
332
+ duration_ms INTEGER,
333
+ args_bytes INTEGER NOT NULL DEFAULT 0,
334
+ parse_status TEXT NOT NULL,
335
+ safe_arg_keys_json TEXT NOT NULL DEFAULT '[]',
336
+ event_stream_id INTEGER,
337
+ event_id TEXT,
338
+ payload_ref TEXT,
339
+ run_id TEXT,
340
+ error_category TEXT,
341
+ error_message TEXT,
342
+ retention_class TEXT NOT NULL,
343
+ created_at TEXT NOT NULL,
344
+ updated_at TEXT NOT NULL
345
+ );
346
+
347
+ CREATE INDEX IF NOT EXISTS idx_sessions_room_activity
348
+ ON sessions(room_id, archived_at, last_activity_at DESC);
349
+ CREATE INDEX IF NOT EXISTS idx_sessions_parent_activity
350
+ ON sessions(parent_id, updated_at DESC);
351
+ CREATE INDEX IF NOT EXISTS idx_sessions_origin_activity
352
+ ON sessions(origin_id, updated_at DESC);
353
+ CREATE INDEX IF NOT EXISTS idx_sessions_channel_kind_activity
354
+ ON sessions(channel, kind, updated_at DESC);
355
+ CREATE INDEX IF NOT EXISTS idx_event_log_session_stream
356
+ ON event_log(session_id, stream_id);
357
+ CREATE INDEX IF NOT EXISTS idx_event_log_room_stream
358
+ ON event_log(room_id, stream_id);
359
+ CREATE INDEX IF NOT EXISTS idx_event_log_topic_stream
360
+ ON event_log(topic, stream_id);
361
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_event_log_idempotency
362
+ ON event_log(idempotency_key)
363
+ WHERE idempotency_key IS NOT NULL;
364
+ CREATE INDEX IF NOT EXISTS idx_chat_messages_session_sequence
365
+ ON chat_messages(session_id, sequence);
366
+ CREATE INDEX IF NOT EXISTS idx_observations_session_sequence
367
+ ON observations(session_id, sequence);
368
+ CREATE INDEX IF NOT EXISTS idx_session_navigation_room_sort
369
+ ON session_navigation(room_id, archived_at, sort_key DESC);
370
+ CREATE INDEX IF NOT EXISTS idx_session_navigation_root
371
+ ON session_navigation(root_session_id, parent_id);
372
+ CREATE INDEX IF NOT EXISTS idx_telemetry_turns_session_updated
373
+ ON telemetry_turns(pibo_session_id, updated_at DESC);
374
+ CREATE INDEX IF NOT EXISTS idx_telemetry_turns_room_updated
375
+ ON telemetry_turns(room_id, updated_at DESC);
376
+ CREATE INDEX IF NOT EXISTS idx_telemetry_turns_event
377
+ ON telemetry_turns(event_id, event_stream_id);
378
+ CREATE INDEX IF NOT EXISTS idx_telemetry_turns_payload
379
+ ON telemetry_turns(payload_ref);
380
+ CREATE INDEX IF NOT EXISTS idx_telemetry_turns_retention_updated
381
+ ON telemetry_turns(retention_class, updated_at);
382
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_turn_started
383
+ ON telemetry_phases(turn_id, started_at ASC);
384
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_session_status
385
+ ON telemetry_phases(pibo_session_id, status, last_progress_at);
386
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_provider_request
387
+ ON telemetry_phases(provider_request_id);
388
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_tool_call
389
+ ON telemetry_phases(tool_call_id);
390
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_event
391
+ ON telemetry_phases(event_id, event_stream_id);
392
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_payload
393
+ ON telemetry_phases(payload_ref);
394
+ CREATE INDEX IF NOT EXISTS idx_telemetry_phases_retention_updated
395
+ ON telemetry_phases(retention_class, updated_at);
396
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_session_updated
397
+ ON telemetry_provider_requests(pibo_session_id, updated_at DESC);
398
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_turn
399
+ ON telemetry_provider_requests(turn_id, started_at ASC);
400
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_upstream
401
+ ON telemetry_provider_requests(upstream_response_id);
402
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_event
403
+ ON telemetry_provider_requests(event_id, event_stream_id);
404
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_payload
405
+ ON telemetry_provider_requests(payload_ref);
406
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_requests_retention_updated
407
+ ON telemetry_provider_requests(retention_class, updated_at);
408
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_request_sequence
409
+ ON telemetry_provider_events(provider_request_id, sequence ASC);
410
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_session_received
411
+ ON telemetry_provider_events(pibo_session_id, received_at DESC);
412
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_event
413
+ ON telemetry_provider_events(event_id, event_stream_id);
414
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_payload
415
+ ON telemetry_provider_events(payload_ref, payload_preview_ref);
416
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_tool_call
417
+ ON telemetry_provider_events(tool_call_id);
418
+ CREATE INDEX IF NOT EXISTS idx_telemetry_provider_events_retention_received
419
+ ON telemetry_provider_events(retention_class, received_at);
420
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_session_updated
421
+ ON telemetry_tool_calls(pibo_session_id, updated_at DESC);
422
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_turn
423
+ ON telemetry_tool_calls(turn_id);
424
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_provider_request
425
+ ON telemetry_tool_calls(provider_request_id);
426
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_event
427
+ ON telemetry_tool_calls(event_id, event_stream_id);
428
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_payload
429
+ ON telemetry_tool_calls(payload_ref);
430
+ CREATE INDEX IF NOT EXISTS idx_telemetry_tool_calls_retention_updated
431
+ ON telemetry_tool_calls(retention_class, updated_at);
432
432
  `);
433
433
  db.exec(`PRAGMA user_version = ${PIBO_DATA_SCHEMA_VERSION}`);
434
434
  }