aline-ai 0.5.8__py3-none-any.whl → 0.5.10__py3-none-any.whl

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.
realign/db/schema.py CHANGED
@@ -52,9 +52,15 @@ Schema V14: Share reuse per event.
52
52
  - events.share_id: Share ID on server
53
53
  - events.share_admin_token: Admin token for extending expiry
54
54
  - events.share_expiry_at: Last known expiry timestamp
55
+
56
+ Schema V15: Agents and contexts tables (replaces terminal.json and load.json).
57
+ - agents table: terminal_id -> session mapping (replaces terminal.json)
58
+ - agent_contexts table: context definitions (replaces load.json)
59
+ - agent_context_sessions table: M2M context-session links
60
+ - agent_context_events table: M2M context-event links
55
61
  """
56
62
 
57
- SCHEMA_VERSION = 14
63
+ SCHEMA_VERSION = 15
58
64
 
59
65
  FTS_EVENTS_SCRIPTS = [
60
66
  # Full Text Search for Events
@@ -246,6 +252,63 @@ INIT_SCRIPTS = [
246
252
  """,
247
253
  "CREATE INDEX IF NOT EXISTS idx_event_sessions_event ON event_sessions(event_id);",
248
254
  "CREATE INDEX IF NOT EXISTS idx_event_sessions_session ON event_sessions(session_id);",
255
+ # Agents table (V15: replaces terminal.json)
256
+ """
257
+ CREATE TABLE IF NOT EXISTS agents (
258
+ id TEXT PRIMARY KEY, -- terminal_id (UUID)
259
+ provider TEXT NOT NULL, -- 'claude', 'codex', 'opencode', 'zsh'
260
+ session_type TEXT NOT NULL,
261
+ session_id TEXT, -- FK to sessions.id (nullable, may not exist yet)
262
+ context_id TEXT,
263
+ transcript_path TEXT,
264
+ cwd TEXT,
265
+ project_dir TEXT,
266
+ status TEXT DEFAULT 'active', -- 'active', 'stopped'
267
+ attention TEXT, -- 'permission_request', 'stop', NULL
268
+ source TEXT,
269
+ created_at TEXT DEFAULT (datetime('now')),
270
+ updated_at TEXT DEFAULT (datetime('now')),
271
+ creator_name TEXT,
272
+ creator_id TEXT
273
+ );
274
+ """,
275
+ "CREATE INDEX IF NOT EXISTS idx_agents_session ON agents(session_id);",
276
+ "CREATE INDEX IF NOT EXISTS idx_agents_context ON agents(context_id);",
277
+ "CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);",
278
+ # Agent contexts table (V15: replaces load.json)
279
+ """
280
+ CREATE TABLE IF NOT EXISTS agent_contexts (
281
+ id TEXT PRIMARY KEY, -- context_id
282
+ workspace TEXT,
283
+ loaded_at TEXT,
284
+ created_at TEXT DEFAULT (datetime('now')),
285
+ updated_at TEXT DEFAULT (datetime('now')),
286
+ metadata TEXT
287
+ );
288
+ """,
289
+ "CREATE INDEX IF NOT EXISTS idx_agent_contexts_workspace ON agent_contexts(workspace);",
290
+ # Agent context sessions (M2M)
291
+ """
292
+ CREATE TABLE IF NOT EXISTS agent_context_sessions (
293
+ context_id TEXT NOT NULL REFERENCES agent_contexts(id) ON DELETE CASCADE,
294
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
295
+ added_at TEXT DEFAULT (datetime('now')),
296
+ PRIMARY KEY (context_id, session_id)
297
+ );
298
+ """,
299
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_sessions_context ON agent_context_sessions(context_id);",
300
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_sessions_session ON agent_context_sessions(session_id);",
301
+ # Agent context events (M2M)
302
+ """
303
+ CREATE TABLE IF NOT EXISTS agent_context_events (
304
+ context_id TEXT NOT NULL REFERENCES agent_contexts(id) ON DELETE CASCADE,
305
+ event_id TEXT NOT NULL REFERENCES events(id) ON DELETE CASCADE,
306
+ added_at TEXT DEFAULT (datetime('now')),
307
+ PRIMARY KEY (context_id, event_id)
308
+ );
309
+ """,
310
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_events_context ON agent_context_events(context_id);",
311
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_events_event ON agent_context_events(event_id);",
249
312
  *FTS_EVENTS_SCRIPTS,
250
313
  ]
251
314
 
@@ -403,6 +466,66 @@ MIGRATION_V13_TO_V14 = [
403
466
  "ALTER TABLE events ADD COLUMN share_expiry_at TEXT;",
404
467
  ]
405
468
 
469
+ MIGRATION_V14_TO_V15 = [
470
+ # Agents table (replaces terminal.json)
471
+ """
472
+ CREATE TABLE IF NOT EXISTS agents (
473
+ id TEXT PRIMARY KEY,
474
+ provider TEXT NOT NULL,
475
+ session_type TEXT NOT NULL,
476
+ session_id TEXT,
477
+ context_id TEXT,
478
+ transcript_path TEXT,
479
+ cwd TEXT,
480
+ project_dir TEXT,
481
+ status TEXT DEFAULT 'active',
482
+ attention TEXT,
483
+ source TEXT,
484
+ created_at TEXT DEFAULT (datetime('now')),
485
+ updated_at TEXT DEFAULT (datetime('now')),
486
+ creator_name TEXT,
487
+ creator_id TEXT
488
+ );
489
+ """,
490
+ "CREATE INDEX IF NOT EXISTS idx_agents_session ON agents(session_id);",
491
+ "CREATE INDEX IF NOT EXISTS idx_agents_context ON agents(context_id);",
492
+ "CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);",
493
+ # Agent contexts table (replaces load.json)
494
+ """
495
+ CREATE TABLE IF NOT EXISTS agent_contexts (
496
+ id TEXT PRIMARY KEY,
497
+ workspace TEXT,
498
+ loaded_at TEXT,
499
+ created_at TEXT DEFAULT (datetime('now')),
500
+ updated_at TEXT DEFAULT (datetime('now')),
501
+ metadata TEXT
502
+ );
503
+ """,
504
+ "CREATE INDEX IF NOT EXISTS idx_agent_contexts_workspace ON agent_contexts(workspace);",
505
+ # Agent context sessions (M2M)
506
+ """
507
+ CREATE TABLE IF NOT EXISTS agent_context_sessions (
508
+ context_id TEXT NOT NULL REFERENCES agent_contexts(id) ON DELETE CASCADE,
509
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
510
+ added_at TEXT DEFAULT (datetime('now')),
511
+ PRIMARY KEY (context_id, session_id)
512
+ );
513
+ """,
514
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_sessions_context ON agent_context_sessions(context_id);",
515
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_sessions_session ON agent_context_sessions(session_id);",
516
+ # Agent context events (M2M)
517
+ """
518
+ CREATE TABLE IF NOT EXISTS agent_context_events (
519
+ context_id TEXT NOT NULL REFERENCES agent_contexts(id) ON DELETE CASCADE,
520
+ event_id TEXT NOT NULL REFERENCES events(id) ON DELETE CASCADE,
521
+ added_at TEXT DEFAULT (datetime('now')),
522
+ PRIMARY KEY (context_id, event_id)
523
+ );
524
+ """,
525
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_events_context ON agent_context_events(context_id);",
526
+ "CREATE INDEX IF NOT EXISTS idx_agent_context_events_event ON agent_context_events(event_id);",
527
+ ]
528
+
406
529
 
407
530
  def get_migration_scripts(from_version: int, to_version: int) -> list:
408
531
  """Get migration scripts for upgrading between versions."""
@@ -453,4 +576,7 @@ def get_migration_scripts(from_version: int, to_version: int) -> list:
453
576
  if from_version < 14 and to_version >= 14:
454
577
  scripts.extend(MIGRATION_V13_TO_V14)
455
578
 
579
+ if from_version < 15 and to_version >= 15:
580
+ scripts.extend(MIGRATION_V14_TO_V15)
581
+
456
582
  return scripts