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.
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/METADATA +1 -1
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/RECORD +19 -18
- realign/__init__.py +1 -1
- realign/claude_hooks/terminal_state.py +86 -3
- realign/context.py +136 -6
- realign/dashboard/screens/create_agent.py +69 -4
- realign/dashboard/styles/dashboard.tcss +4 -4
- realign/dashboard/tmux_manager.py +73 -3
- realign/dashboard/widgets/events_table.py +45 -29
- realign/dashboard/widgets/terminal_panel.py +18 -11
- realign/db/__init__.py +44 -0
- realign/db/base.py +36 -0
- realign/db/migrate_agents.py +297 -0
- realign/db/schema.py +127 -1
- realign/db/sqlite_db.py +617 -0
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/WHEEL +0 -0
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/entry_points.txt +0 -0
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/licenses/LICENSE +0 -0
- {aline_ai-0.5.8.dist-info → aline_ai-0.5.10.dist-info}/top_level.txt +0 -0
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 =
|
|
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
|