@askexenow/exe-os 0.9.70 → 0.9.72

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 (69) hide show
  1. package/dist/bin/agentic-ontology-backfill.js +27 -0
  2. package/dist/bin/agentic-reflection-backfill.js +27 -0
  3. package/dist/bin/agentic-semantic-label.js +27 -0
  4. package/dist/bin/backfill-conversations.js +27 -0
  5. package/dist/bin/backfill-responses.js +27 -0
  6. package/dist/bin/backfill-vectors.js +27 -0
  7. package/dist/bin/bulk-sync-postgres.js +27 -0
  8. package/dist/bin/cleanup-stale-review-tasks.js +27 -0
  9. package/dist/bin/cli.js +27 -0
  10. package/dist/bin/exe-assign.js +27 -0
  11. package/dist/bin/exe-boot.js +27 -0
  12. package/dist/bin/exe-cloud.js +27 -0
  13. package/dist/bin/exe-dispatch.js +27 -0
  14. package/dist/bin/exe-doctor.js +27 -0
  15. package/dist/bin/exe-export-behaviors.js +27 -0
  16. package/dist/bin/exe-forget.js +27 -0
  17. package/dist/bin/exe-gateway.js +27 -0
  18. package/dist/bin/exe-heartbeat.js +27 -0
  19. package/dist/bin/exe-kill.js +27 -0
  20. package/dist/bin/exe-launch-agent.js +27 -0
  21. package/dist/bin/exe-pending-messages.js +27 -0
  22. package/dist/bin/exe-pending-notifications.js +27 -0
  23. package/dist/bin/exe-pending-reviews.js +27 -0
  24. package/dist/bin/exe-rename.js +27 -0
  25. package/dist/bin/exe-review.js +27 -0
  26. package/dist/bin/exe-search.js +27 -0
  27. package/dist/bin/exe-session-cleanup.js +27 -0
  28. package/dist/bin/exe-start-codex.js +27 -0
  29. package/dist/bin/exe-start-opencode.js +27 -0
  30. package/dist/bin/exe-status.js +27 -0
  31. package/dist/bin/exe-team.js +27 -0
  32. package/dist/bin/git-sweep.js +27 -0
  33. package/dist/bin/graph-backfill.js +27 -0
  34. package/dist/bin/graph-export.js +27 -0
  35. package/dist/bin/intercom-check.js +27 -0
  36. package/dist/bin/scan-tasks.js +27 -0
  37. package/dist/bin/setup.js +27 -0
  38. package/dist/bin/shard-migrate.js +27 -0
  39. package/dist/gateway/index.js +27 -0
  40. package/dist/hooks/bug-report-worker.js +27 -0
  41. package/dist/hooks/codex-stop-task-finalizer.js +27 -0
  42. package/dist/hooks/commit-complete.js +27 -0
  43. package/dist/hooks/error-recall.js +27 -0
  44. package/dist/hooks/ingest.js +27 -0
  45. package/dist/hooks/instructions-loaded.js +27 -0
  46. package/dist/hooks/notification.js +27 -0
  47. package/dist/hooks/post-compact.js +27 -0
  48. package/dist/hooks/post-tool-combined.js +692 -17
  49. package/dist/hooks/pre-compact.js +27 -0
  50. package/dist/hooks/pre-tool-use.js +27 -0
  51. package/dist/hooks/prompt-submit.js +308 -0
  52. package/dist/hooks/session-end.js +27 -0
  53. package/dist/hooks/session-start.js +27 -0
  54. package/dist/hooks/stop.js +273 -12
  55. package/dist/hooks/subagent-stop.js +27 -0
  56. package/dist/hooks/summary-worker.js +27 -0
  57. package/dist/index.js +27 -0
  58. package/dist/lib/cloud-sync.js +27 -0
  59. package/dist/lib/database.js +27 -0
  60. package/dist/lib/db.js +27 -0
  61. package/dist/lib/device-registry.js +27 -0
  62. package/dist/lib/exe-daemon.js +260 -28
  63. package/dist/lib/hybrid-search.js +27 -0
  64. package/dist/lib/schedules.js +27 -0
  65. package/dist/lib/store.js +27 -0
  66. package/dist/mcp/server.js +246 -25
  67. package/dist/runtime/index.js +27 -0
  68. package/dist/tui/App.js +27 -0
  69. package/package.json +5 -5
@@ -2222,6 +2222,33 @@ async function ensureSchema() {
2222
2222
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2223
2223
  ON chat_history(session_id, id);
2224
2224
  `);
2225
+ await client.executeMultiple(`
2226
+ CREATE TABLE IF NOT EXISTS session_events (
2227
+ id TEXT PRIMARY KEY,
2228
+ agent_id TEXT NOT NULL,
2229
+ agent_role TEXT NOT NULL,
2230
+ session_id TEXT NOT NULL,
2231
+ session_scope TEXT,
2232
+ project_name TEXT NOT NULL,
2233
+ event_index INTEGER NOT NULL,
2234
+ event_type TEXT NOT NULL,
2235
+ tool_name TEXT,
2236
+ tool_use_id TEXT,
2237
+ content TEXT NOT NULL,
2238
+ payload_json TEXT,
2239
+ has_error INTEGER NOT NULL DEFAULT 0,
2240
+ created_at TEXT NOT NULL
2241
+ );
2242
+
2243
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2244
+ ON session_events(agent_id, created_at DESC);
2245
+
2246
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2247
+ ON session_events(session_id, event_index);
2248
+
2249
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2250
+ ON session_events(session_scope, agent_id, created_at DESC);
2251
+ `);
2225
2252
  await client.executeMultiple(`
2226
2253
  CREATE TABLE IF NOT EXISTS workspaces (
2227
2254
  id TEXT PRIMARY KEY,
@@ -2222,6 +2222,33 @@ async function ensureSchema() {
2222
2222
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2223
2223
  ON chat_history(session_id, id);
2224
2224
  `);
2225
+ await client.executeMultiple(`
2226
+ CREATE TABLE IF NOT EXISTS session_events (
2227
+ id TEXT PRIMARY KEY,
2228
+ agent_id TEXT NOT NULL,
2229
+ agent_role TEXT NOT NULL,
2230
+ session_id TEXT NOT NULL,
2231
+ session_scope TEXT,
2232
+ project_name TEXT NOT NULL,
2233
+ event_index INTEGER NOT NULL,
2234
+ event_type TEXT NOT NULL,
2235
+ tool_name TEXT,
2236
+ tool_use_id TEXT,
2237
+ content TEXT NOT NULL,
2238
+ payload_json TEXT,
2239
+ has_error INTEGER NOT NULL DEFAULT 0,
2240
+ created_at TEXT NOT NULL
2241
+ );
2242
+
2243
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2244
+ ON session_events(agent_id, created_at DESC);
2245
+
2246
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2247
+ ON session_events(session_id, event_index);
2248
+
2249
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2250
+ ON session_events(session_scope, agent_id, created_at DESC);
2251
+ `);
2225
2252
  await client.executeMultiple(`
2226
2253
  CREATE TABLE IF NOT EXISTS workspaces (
2227
2254
  id TEXT PRIMARY KEY,
@@ -2222,6 +2222,33 @@ async function ensureSchema() {
2222
2222
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2223
2223
  ON chat_history(session_id, id);
2224
2224
  `);
2225
+ await client.executeMultiple(`
2226
+ CREATE TABLE IF NOT EXISTS session_events (
2227
+ id TEXT PRIMARY KEY,
2228
+ agent_id TEXT NOT NULL,
2229
+ agent_role TEXT NOT NULL,
2230
+ session_id TEXT NOT NULL,
2231
+ session_scope TEXT,
2232
+ project_name TEXT NOT NULL,
2233
+ event_index INTEGER NOT NULL,
2234
+ event_type TEXT NOT NULL,
2235
+ tool_name TEXT,
2236
+ tool_use_id TEXT,
2237
+ content TEXT NOT NULL,
2238
+ payload_json TEXT,
2239
+ has_error INTEGER NOT NULL DEFAULT 0,
2240
+ created_at TEXT NOT NULL
2241
+ );
2242
+
2243
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2244
+ ON session_events(agent_id, created_at DESC);
2245
+
2246
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2247
+ ON session_events(session_id, event_index);
2248
+
2249
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2250
+ ON session_events(session_scope, agent_id, created_at DESC);
2251
+ `);
2225
2252
  await client.executeMultiple(`
2226
2253
  CREATE TABLE IF NOT EXISTS workspaces (
2227
2254
  id TEXT PRIMARY KEY,
@@ -2362,6 +2362,33 @@ async function ensureSchema() {
2362
2362
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2363
2363
  ON chat_history(session_id, id);
2364
2364
  `);
2365
+ await client.executeMultiple(`
2366
+ CREATE TABLE IF NOT EXISTS session_events (
2367
+ id TEXT PRIMARY KEY,
2368
+ agent_id TEXT NOT NULL,
2369
+ agent_role TEXT NOT NULL,
2370
+ session_id TEXT NOT NULL,
2371
+ session_scope TEXT,
2372
+ project_name TEXT NOT NULL,
2373
+ event_index INTEGER NOT NULL,
2374
+ event_type TEXT NOT NULL,
2375
+ tool_name TEXT,
2376
+ tool_use_id TEXT,
2377
+ content TEXT NOT NULL,
2378
+ payload_json TEXT,
2379
+ has_error INTEGER NOT NULL DEFAULT 0,
2380
+ created_at TEXT NOT NULL
2381
+ );
2382
+
2383
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2384
+ ON session_events(agent_id, created_at DESC);
2385
+
2386
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2387
+ ON session_events(session_id, event_index);
2388
+
2389
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2390
+ ON session_events(session_scope, agent_id, created_at DESC);
2391
+ `);
2365
2392
  await client.executeMultiple(`
2366
2393
  CREATE TABLE IF NOT EXISTS workspaces (
2367
2394
  id TEXT PRIMARY KEY,
@@ -2362,6 +2362,33 @@ async function ensureSchema() {
2362
2362
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2363
2363
  ON chat_history(session_id, id);
2364
2364
  `);
2365
+ await client.executeMultiple(`
2366
+ CREATE TABLE IF NOT EXISTS session_events (
2367
+ id TEXT PRIMARY KEY,
2368
+ agent_id TEXT NOT NULL,
2369
+ agent_role TEXT NOT NULL,
2370
+ session_id TEXT NOT NULL,
2371
+ session_scope TEXT,
2372
+ project_name TEXT NOT NULL,
2373
+ event_index INTEGER NOT NULL,
2374
+ event_type TEXT NOT NULL,
2375
+ tool_name TEXT,
2376
+ tool_use_id TEXT,
2377
+ content TEXT NOT NULL,
2378
+ payload_json TEXT,
2379
+ has_error INTEGER NOT NULL DEFAULT 0,
2380
+ created_at TEXT NOT NULL
2381
+ );
2382
+
2383
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2384
+ ON session_events(agent_id, created_at DESC);
2385
+
2386
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2387
+ ON session_events(session_id, event_index);
2388
+
2389
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2390
+ ON session_events(session_scope, agent_id, created_at DESC);
2391
+ `);
2365
2392
  await client.executeMultiple(`
2366
2393
  CREATE TABLE IF NOT EXISTS workspaces (
2367
2394
  id TEXT PRIMARY KEY,
@@ -2358,6 +2358,33 @@ async function ensureSchema() {
2358
2358
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2359
2359
  ON chat_history(session_id, id);
2360
2360
  `);
2361
+ await client.executeMultiple(`
2362
+ CREATE TABLE IF NOT EXISTS session_events (
2363
+ id TEXT PRIMARY KEY,
2364
+ agent_id TEXT NOT NULL,
2365
+ agent_role TEXT NOT NULL,
2366
+ session_id TEXT NOT NULL,
2367
+ session_scope TEXT,
2368
+ project_name TEXT NOT NULL,
2369
+ event_index INTEGER NOT NULL,
2370
+ event_type TEXT NOT NULL,
2371
+ tool_name TEXT,
2372
+ tool_use_id TEXT,
2373
+ content TEXT NOT NULL,
2374
+ payload_json TEXT,
2375
+ has_error INTEGER NOT NULL DEFAULT 0,
2376
+ created_at TEXT NOT NULL
2377
+ );
2378
+
2379
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2380
+ ON session_events(agent_id, created_at DESC);
2381
+
2382
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2383
+ ON session_events(session_id, event_index);
2384
+
2385
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2386
+ ON session_events(session_scope, agent_id, created_at DESC);
2387
+ `);
2361
2388
  await client.executeMultiple(`
2362
2389
  CREATE TABLE IF NOT EXISTS workspaces (
2363
2390
  id TEXT PRIMARY KEY,
@@ -2222,6 +2222,33 @@ async function ensureSchema() {
2222
2222
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2223
2223
  ON chat_history(session_id, id);
2224
2224
  `);
2225
+ await client.executeMultiple(`
2226
+ CREATE TABLE IF NOT EXISTS session_events (
2227
+ id TEXT PRIMARY KEY,
2228
+ agent_id TEXT NOT NULL,
2229
+ agent_role TEXT NOT NULL,
2230
+ session_id TEXT NOT NULL,
2231
+ session_scope TEXT,
2232
+ project_name TEXT NOT NULL,
2233
+ event_index INTEGER NOT NULL,
2234
+ event_type TEXT NOT NULL,
2235
+ tool_name TEXT,
2236
+ tool_use_id TEXT,
2237
+ content TEXT NOT NULL,
2238
+ payload_json TEXT,
2239
+ has_error INTEGER NOT NULL DEFAULT 0,
2240
+ created_at TEXT NOT NULL
2241
+ );
2242
+
2243
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2244
+ ON session_events(agent_id, created_at DESC);
2245
+
2246
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2247
+ ON session_events(session_id, event_index);
2248
+
2249
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2250
+ ON session_events(session_scope, agent_id, created_at DESC);
2251
+ `);
2225
2252
  await client.executeMultiple(`
2226
2253
  CREATE TABLE IF NOT EXISTS workspaces (
2227
2254
  id TEXT PRIMARY KEY,
@@ -2448,6 +2448,33 @@ async function ensureSchema() {
2448
2448
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2449
2449
  ON chat_history(session_id, id);
2450
2450
  `);
2451
+ await client.executeMultiple(`
2452
+ CREATE TABLE IF NOT EXISTS session_events (
2453
+ id TEXT PRIMARY KEY,
2454
+ agent_id TEXT NOT NULL,
2455
+ agent_role TEXT NOT NULL,
2456
+ session_id TEXT NOT NULL,
2457
+ session_scope TEXT,
2458
+ project_name TEXT NOT NULL,
2459
+ event_index INTEGER NOT NULL,
2460
+ event_type TEXT NOT NULL,
2461
+ tool_name TEXT,
2462
+ tool_use_id TEXT,
2463
+ content TEXT NOT NULL,
2464
+ payload_json TEXT,
2465
+ has_error INTEGER NOT NULL DEFAULT 0,
2466
+ created_at TEXT NOT NULL
2467
+ );
2468
+
2469
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2470
+ ON session_events(agent_id, created_at DESC);
2471
+
2472
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2473
+ ON session_events(session_id, event_index);
2474
+
2475
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2476
+ ON session_events(session_scope, agent_id, created_at DESC);
2477
+ `);
2451
2478
  await client.executeMultiple(`
2452
2479
  CREATE TABLE IF NOT EXISTS workspaces (
2453
2480
  id TEXT PRIMARY KEY,
package/dist/bin/cli.js CHANGED
@@ -5043,6 +5043,33 @@ async function ensureSchema() {
5043
5043
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
5044
5044
  ON chat_history(session_id, id);
5045
5045
  `);
5046
+ await client.executeMultiple(`
5047
+ CREATE TABLE IF NOT EXISTS session_events (
5048
+ id TEXT PRIMARY KEY,
5049
+ agent_id TEXT NOT NULL,
5050
+ agent_role TEXT NOT NULL,
5051
+ session_id TEXT NOT NULL,
5052
+ session_scope TEXT,
5053
+ project_name TEXT NOT NULL,
5054
+ event_index INTEGER NOT NULL,
5055
+ event_type TEXT NOT NULL,
5056
+ tool_name TEXT,
5057
+ tool_use_id TEXT,
5058
+ content TEXT NOT NULL,
5059
+ payload_json TEXT,
5060
+ has_error INTEGER NOT NULL DEFAULT 0,
5061
+ created_at TEXT NOT NULL
5062
+ );
5063
+
5064
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
5065
+ ON session_events(agent_id, created_at DESC);
5066
+
5067
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
5068
+ ON session_events(session_id, event_index);
5069
+
5070
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
5071
+ ON session_events(session_scope, agent_id, created_at DESC);
5072
+ `);
5046
5073
  await client.executeMultiple(`
5047
5074
  CREATE TABLE IF NOT EXISTS workspaces (
5048
5075
  id TEXT PRIMARY KEY,
@@ -2372,6 +2372,33 @@ async function ensureSchema() {
2372
2372
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2373
2373
  ON chat_history(session_id, id);
2374
2374
  `);
2375
+ await client.executeMultiple(`
2376
+ CREATE TABLE IF NOT EXISTS session_events (
2377
+ id TEXT PRIMARY KEY,
2378
+ agent_id TEXT NOT NULL,
2379
+ agent_role TEXT NOT NULL,
2380
+ session_id TEXT NOT NULL,
2381
+ session_scope TEXT,
2382
+ project_name TEXT NOT NULL,
2383
+ event_index INTEGER NOT NULL,
2384
+ event_type TEXT NOT NULL,
2385
+ tool_name TEXT,
2386
+ tool_use_id TEXT,
2387
+ content TEXT NOT NULL,
2388
+ payload_json TEXT,
2389
+ has_error INTEGER NOT NULL DEFAULT 0,
2390
+ created_at TEXT NOT NULL
2391
+ );
2392
+
2393
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2394
+ ON session_events(agent_id, created_at DESC);
2395
+
2396
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2397
+ ON session_events(session_id, event_index);
2398
+
2399
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2400
+ ON session_events(session_scope, agent_id, created_at DESC);
2401
+ `);
2375
2402
  await client.executeMultiple(`
2376
2403
  CREATE TABLE IF NOT EXISTS workspaces (
2377
2404
  id TEXT PRIMARY KEY,
@@ -2524,6 +2524,33 @@ async function ensureSchema() {
2524
2524
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2525
2525
  ON chat_history(session_id, id);
2526
2526
  `);
2527
+ await client.executeMultiple(`
2528
+ CREATE TABLE IF NOT EXISTS session_events (
2529
+ id TEXT PRIMARY KEY,
2530
+ agent_id TEXT NOT NULL,
2531
+ agent_role TEXT NOT NULL,
2532
+ session_id TEXT NOT NULL,
2533
+ session_scope TEXT,
2534
+ project_name TEXT NOT NULL,
2535
+ event_index INTEGER NOT NULL,
2536
+ event_type TEXT NOT NULL,
2537
+ tool_name TEXT,
2538
+ tool_use_id TEXT,
2539
+ content TEXT NOT NULL,
2540
+ payload_json TEXT,
2541
+ has_error INTEGER NOT NULL DEFAULT 0,
2542
+ created_at TEXT NOT NULL
2543
+ );
2544
+
2545
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2546
+ ON session_events(agent_id, created_at DESC);
2547
+
2548
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2549
+ ON session_events(session_id, event_index);
2550
+
2551
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2552
+ ON session_events(session_scope, agent_id, created_at DESC);
2553
+ `);
2527
2554
  await client.executeMultiple(`
2528
2555
  CREATE TABLE IF NOT EXISTS workspaces (
2529
2556
  id TEXT PRIMARY KEY,
@@ -2941,6 +2941,33 @@ async function ensureSchema() {
2941
2941
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2942
2942
  ON chat_history(session_id, id);
2943
2943
  `);
2944
+ await client.executeMultiple(`
2945
+ CREATE TABLE IF NOT EXISTS session_events (
2946
+ id TEXT PRIMARY KEY,
2947
+ agent_id TEXT NOT NULL,
2948
+ agent_role TEXT NOT NULL,
2949
+ session_id TEXT NOT NULL,
2950
+ session_scope TEXT,
2951
+ project_name TEXT NOT NULL,
2952
+ event_index INTEGER NOT NULL,
2953
+ event_type TEXT NOT NULL,
2954
+ tool_name TEXT,
2955
+ tool_use_id TEXT,
2956
+ content TEXT NOT NULL,
2957
+ payload_json TEXT,
2958
+ has_error INTEGER NOT NULL DEFAULT 0,
2959
+ created_at TEXT NOT NULL
2960
+ );
2961
+
2962
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2963
+ ON session_events(agent_id, created_at DESC);
2964
+
2965
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2966
+ ON session_events(session_id, event_index);
2967
+
2968
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2969
+ ON session_events(session_scope, agent_id, created_at DESC);
2970
+ `);
2944
2971
  await client.executeMultiple(`
2945
2972
  CREATE TABLE IF NOT EXISTS workspaces (
2946
2973
  id TEXT PRIMARY KEY,
@@ -3026,6 +3026,33 @@ async function ensureSchema() {
3026
3026
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
3027
3027
  ON chat_history(session_id, id);
3028
3028
  `);
3029
+ await client.executeMultiple(`
3030
+ CREATE TABLE IF NOT EXISTS session_events (
3031
+ id TEXT PRIMARY KEY,
3032
+ agent_id TEXT NOT NULL,
3033
+ agent_role TEXT NOT NULL,
3034
+ session_id TEXT NOT NULL,
3035
+ session_scope TEXT,
3036
+ project_name TEXT NOT NULL,
3037
+ event_index INTEGER NOT NULL,
3038
+ event_type TEXT NOT NULL,
3039
+ tool_name TEXT,
3040
+ tool_use_id TEXT,
3041
+ content TEXT NOT NULL,
3042
+ payload_json TEXT,
3043
+ has_error INTEGER NOT NULL DEFAULT 0,
3044
+ created_at TEXT NOT NULL
3045
+ );
3046
+
3047
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
3048
+ ON session_events(agent_id, created_at DESC);
3049
+
3050
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
3051
+ ON session_events(session_id, event_index);
3052
+
3053
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
3054
+ ON session_events(session_scope, agent_id, created_at DESC);
3055
+ `);
3029
3056
  await client.executeMultiple(`
3030
3057
  CREATE TABLE IF NOT EXISTS workspaces (
3031
3058
  id TEXT PRIMARY KEY,
@@ -3480,6 +3480,33 @@ async function ensureSchema() {
3480
3480
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
3481
3481
  ON chat_history(session_id, id);
3482
3482
  `);
3483
+ await client.executeMultiple(`
3484
+ CREATE TABLE IF NOT EXISTS session_events (
3485
+ id TEXT PRIMARY KEY,
3486
+ agent_id TEXT NOT NULL,
3487
+ agent_role TEXT NOT NULL,
3488
+ session_id TEXT NOT NULL,
3489
+ session_scope TEXT,
3490
+ project_name TEXT NOT NULL,
3491
+ event_index INTEGER NOT NULL,
3492
+ event_type TEXT NOT NULL,
3493
+ tool_name TEXT,
3494
+ tool_use_id TEXT,
3495
+ content TEXT NOT NULL,
3496
+ payload_json TEXT,
3497
+ has_error INTEGER NOT NULL DEFAULT 0,
3498
+ created_at TEXT NOT NULL
3499
+ );
3500
+
3501
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
3502
+ ON session_events(agent_id, created_at DESC);
3503
+
3504
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
3505
+ ON session_events(session_id, event_index);
3506
+
3507
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
3508
+ ON session_events(session_scope, agent_id, created_at DESC);
3509
+ `);
3483
3510
  await client.executeMultiple(`
3484
3511
  CREATE TABLE IF NOT EXISTS workspaces (
3485
3512
  id TEXT PRIMARY KEY,
@@ -2513,6 +2513,33 @@ async function ensureSchema() {
2513
2513
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2514
2514
  ON chat_history(session_id, id);
2515
2515
  `);
2516
+ await client.executeMultiple(`
2517
+ CREATE TABLE IF NOT EXISTS session_events (
2518
+ id TEXT PRIMARY KEY,
2519
+ agent_id TEXT NOT NULL,
2520
+ agent_role TEXT NOT NULL,
2521
+ session_id TEXT NOT NULL,
2522
+ session_scope TEXT,
2523
+ project_name TEXT NOT NULL,
2524
+ event_index INTEGER NOT NULL,
2525
+ event_type TEXT NOT NULL,
2526
+ tool_name TEXT,
2527
+ tool_use_id TEXT,
2528
+ content TEXT NOT NULL,
2529
+ payload_json TEXT,
2530
+ has_error INTEGER NOT NULL DEFAULT 0,
2531
+ created_at TEXT NOT NULL
2532
+ );
2533
+
2534
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2535
+ ON session_events(agent_id, created_at DESC);
2536
+
2537
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2538
+ ON session_events(session_id, event_index);
2539
+
2540
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2541
+ ON session_events(session_scope, agent_id, created_at DESC);
2542
+ `);
2516
2543
  await client.executeMultiple(`
2517
2544
  CREATE TABLE IF NOT EXISTS workspaces (
2518
2545
  id TEXT PRIMARY KEY,
@@ -2437,6 +2437,33 @@ async function ensureSchema() {
2437
2437
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2438
2438
  ON chat_history(session_id, id);
2439
2439
  `);
2440
+ await client.executeMultiple(`
2441
+ CREATE TABLE IF NOT EXISTS session_events (
2442
+ id TEXT PRIMARY KEY,
2443
+ agent_id TEXT NOT NULL,
2444
+ agent_role TEXT NOT NULL,
2445
+ session_id TEXT NOT NULL,
2446
+ session_scope TEXT,
2447
+ project_name TEXT NOT NULL,
2448
+ event_index INTEGER NOT NULL,
2449
+ event_type TEXT NOT NULL,
2450
+ tool_name TEXT,
2451
+ tool_use_id TEXT,
2452
+ content TEXT NOT NULL,
2453
+ payload_json TEXT,
2454
+ has_error INTEGER NOT NULL DEFAULT 0,
2455
+ created_at TEXT NOT NULL
2456
+ );
2457
+
2458
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2459
+ ON session_events(agent_id, created_at DESC);
2460
+
2461
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2462
+ ON session_events(session_id, event_index);
2463
+
2464
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2465
+ ON session_events(session_scope, agent_id, created_at DESC);
2466
+ `);
2440
2467
  await client.executeMultiple(`
2441
2468
  CREATE TABLE IF NOT EXISTS workspaces (
2442
2469
  id TEXT PRIMARY KEY,
@@ -3093,6 +3093,33 @@ async function ensureSchema() {
3093
3093
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
3094
3094
  ON chat_history(session_id, id);
3095
3095
  `);
3096
+ await client.executeMultiple(`
3097
+ CREATE TABLE IF NOT EXISTS session_events (
3098
+ id TEXT PRIMARY KEY,
3099
+ agent_id TEXT NOT NULL,
3100
+ agent_role TEXT NOT NULL,
3101
+ session_id TEXT NOT NULL,
3102
+ session_scope TEXT,
3103
+ project_name TEXT NOT NULL,
3104
+ event_index INTEGER NOT NULL,
3105
+ event_type TEXT NOT NULL,
3106
+ tool_name TEXT,
3107
+ tool_use_id TEXT,
3108
+ content TEXT NOT NULL,
3109
+ payload_json TEXT,
3110
+ has_error INTEGER NOT NULL DEFAULT 0,
3111
+ created_at TEXT NOT NULL
3112
+ );
3113
+
3114
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
3115
+ ON session_events(agent_id, created_at DESC);
3116
+
3117
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
3118
+ ON session_events(session_id, event_index);
3119
+
3120
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
3121
+ ON session_events(session_scope, agent_id, created_at DESC);
3122
+ `);
3096
3123
  await client.executeMultiple(`
3097
3124
  CREATE TABLE IF NOT EXISTS workspaces (
3098
3125
  id TEXT PRIMARY KEY,
@@ -2476,6 +2476,33 @@ async function ensureSchema() {
2476
2476
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2477
2477
  ON chat_history(session_id, id);
2478
2478
  `);
2479
+ await client.executeMultiple(`
2480
+ CREATE TABLE IF NOT EXISTS session_events (
2481
+ id TEXT PRIMARY KEY,
2482
+ agent_id TEXT NOT NULL,
2483
+ agent_role TEXT NOT NULL,
2484
+ session_id TEXT NOT NULL,
2485
+ session_scope TEXT,
2486
+ project_name TEXT NOT NULL,
2487
+ event_index INTEGER NOT NULL,
2488
+ event_type TEXT NOT NULL,
2489
+ tool_name TEXT,
2490
+ tool_use_id TEXT,
2491
+ content TEXT NOT NULL,
2492
+ payload_json TEXT,
2493
+ has_error INTEGER NOT NULL DEFAULT 0,
2494
+ created_at TEXT NOT NULL
2495
+ );
2496
+
2497
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2498
+ ON session_events(agent_id, created_at DESC);
2499
+
2500
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2501
+ ON session_events(session_id, event_index);
2502
+
2503
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2504
+ ON session_events(session_scope, agent_id, created_at DESC);
2505
+ `);
2479
2506
  await client.executeMultiple(`
2480
2507
  CREATE TABLE IF NOT EXISTS workspaces (
2481
2508
  id TEXT PRIMARY KEY,
@@ -2437,6 +2437,33 @@ async function ensureSchema() {
2437
2437
  CREATE INDEX IF NOT EXISTS idx_chat_history_session
2438
2438
  ON chat_history(session_id, id);
2439
2439
  `);
2440
+ await client.executeMultiple(`
2441
+ CREATE TABLE IF NOT EXISTS session_events (
2442
+ id TEXT PRIMARY KEY,
2443
+ agent_id TEXT NOT NULL,
2444
+ agent_role TEXT NOT NULL,
2445
+ session_id TEXT NOT NULL,
2446
+ session_scope TEXT,
2447
+ project_name TEXT NOT NULL,
2448
+ event_index INTEGER NOT NULL,
2449
+ event_type TEXT NOT NULL,
2450
+ tool_name TEXT,
2451
+ tool_use_id TEXT,
2452
+ content TEXT NOT NULL,
2453
+ payload_json TEXT,
2454
+ has_error INTEGER NOT NULL DEFAULT 0,
2455
+ created_at TEXT NOT NULL
2456
+ );
2457
+
2458
+ CREATE INDEX IF NOT EXISTS idx_session_events_agent_time
2459
+ ON session_events(agent_id, created_at DESC);
2460
+
2461
+ CREATE INDEX IF NOT EXISTS idx_session_events_session_index
2462
+ ON session_events(session_id, event_index);
2463
+
2464
+ CREATE INDEX IF NOT EXISTS idx_session_events_scope_agent_time
2465
+ ON session_events(session_scope, agent_id, created_at DESC);
2466
+ `);
2440
2467
  await client.executeMultiple(`
2441
2468
  CREATE TABLE IF NOT EXISTS workspaces (
2442
2469
  id TEXT PRIMARY KEY,