aline-ai 0.5.4__py3-none-any.whl → 0.5.6__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.
Files changed (82) hide show
  1. {aline_ai-0.5.4.dist-info → aline_ai-0.5.6.dist-info}/METADATA +1 -1
  2. aline_ai-0.5.6.dist-info/RECORD +95 -0
  3. realign/__init__.py +1 -1
  4. realign/adapters/antigravity.py +28 -20
  5. realign/adapters/base.py +46 -50
  6. realign/adapters/claude.py +14 -14
  7. realign/adapters/codex.py +7 -7
  8. realign/adapters/gemini.py +11 -11
  9. realign/adapters/registry.py +14 -10
  10. realign/claude_detector.py +2 -2
  11. realign/claude_hooks/__init__.py +3 -3
  12. realign/claude_hooks/permission_request_hook_installer.py +31 -32
  13. realign/claude_hooks/stop_hook.py +4 -1
  14. realign/claude_hooks/stop_hook_installer.py +30 -31
  15. realign/cli.py +23 -4
  16. realign/codex_detector.py +11 -11
  17. realign/commands/add.py +88 -65
  18. realign/commands/config.py +3 -12
  19. realign/commands/context.py +3 -1
  20. realign/commands/export_shares.py +86 -127
  21. realign/commands/import_shares.py +145 -155
  22. realign/commands/init.py +166 -30
  23. realign/commands/restore.py +18 -6
  24. realign/commands/search.py +14 -42
  25. realign/commands/upgrade.py +155 -11
  26. realign/commands/watcher.py +98 -219
  27. realign/commands/worker.py +29 -6
  28. realign/config.py +25 -20
  29. realign/context.py +1 -3
  30. realign/dashboard/app.py +34 -24
  31. realign/dashboard/screens/__init__.py +10 -1
  32. realign/dashboard/screens/create_agent.py +244 -0
  33. realign/dashboard/screens/create_event.py +3 -1
  34. realign/dashboard/screens/event_detail.py +14 -6
  35. realign/dashboard/screens/help_screen.py +114 -0
  36. realign/dashboard/screens/session_detail.py +3 -1
  37. realign/dashboard/screens/share_import.py +7 -3
  38. realign/dashboard/tmux_manager.py +54 -9
  39. realign/dashboard/widgets/config_panel.py +85 -1
  40. realign/dashboard/widgets/events_table.py +314 -70
  41. realign/dashboard/widgets/header.py +2 -1
  42. realign/dashboard/widgets/search_panel.py +37 -27
  43. realign/dashboard/widgets/sessions_table.py +404 -85
  44. realign/dashboard/widgets/terminal_panel.py +155 -175
  45. realign/dashboard/widgets/watcher_panel.py +6 -2
  46. realign/dashboard/widgets/worker_panel.py +10 -1
  47. realign/db/__init__.py +1 -1
  48. realign/db/base.py +5 -15
  49. realign/db/locks.py +0 -1
  50. realign/db/migration.py +82 -76
  51. realign/db/schema.py +2 -6
  52. realign/db/sqlite_db.py +23 -41
  53. realign/events/__init__.py +0 -1
  54. realign/events/event_summarizer.py +27 -15
  55. realign/events/session_summarizer.py +29 -15
  56. realign/file_lock.py +1 -0
  57. realign/hooks.py +150 -60
  58. realign/logging_config.py +12 -15
  59. realign/mcp_server.py +30 -51
  60. realign/mcp_watcher.py +0 -1
  61. realign/models/event.py +29 -20
  62. realign/prompts/__init__.py +7 -7
  63. realign/prompts/presets.py +15 -11
  64. realign/redactor.py +99 -59
  65. realign/triggers/__init__.py +9 -9
  66. realign/triggers/antigravity_trigger.py +30 -28
  67. realign/triggers/base.py +4 -3
  68. realign/triggers/claude_trigger.py +104 -85
  69. realign/triggers/codex_trigger.py +15 -5
  70. realign/triggers/gemini_trigger.py +57 -47
  71. realign/triggers/next_turn_trigger.py +3 -1
  72. realign/triggers/registry.py +6 -2
  73. realign/triggers/turn_status.py +3 -1
  74. realign/watcher_core.py +306 -131
  75. realign/watcher_daemon.py +8 -8
  76. realign/worker_core.py +3 -1
  77. realign/worker_daemon.py +3 -1
  78. aline_ai-0.5.4.dist-info/RECORD +0 -93
  79. {aline_ai-0.5.4.dist-info → aline_ai-0.5.6.dist-info}/WHEEL +0 -0
  80. {aline_ai-0.5.4.dist-info → aline_ai-0.5.6.dist-info}/entry_points.txt +0 -0
  81. {aline_ai-0.5.4.dist-info → aline_ai-0.5.6.dist-info}/licenses/LICENSE +0 -0
  82. {aline_ai-0.5.4.dist-info → aline_ai-0.5.6.dist-info}/top_level.txt +0 -0
realign/watcher_daemon.py CHANGED
@@ -21,12 +21,12 @@ except ImportError:
21
21
  from realign.logging_config import setup_logger
22
22
 
23
23
  # Initialize logger
24
- logger = setup_logger('realign.daemon', 'watcher_daemon.log')
24
+ logger = setup_logger("realign.daemon", "watcher_daemon.log")
25
25
 
26
26
 
27
27
  def get_pid_file() -> Path:
28
28
  """Get the path to the PID file."""
29
- return Path.home() / '.aline/.logs/watcher.pid'
29
+ return Path.home() / ".aline/.logs/watcher.pid"
30
30
 
31
31
 
32
32
  def write_pid():
@@ -89,15 +89,15 @@ def main():
89
89
  """Main entry point for the daemon."""
90
90
  try:
91
91
  # Redirect stdout/stderr to log files
92
- log_dir = Path.home() / '.aline/.logs'
92
+ log_dir = Path.home() / ".aline/.logs"
93
93
  log_dir.mkdir(parents=True, exist_ok=True)
94
94
 
95
- stdout_log = log_dir / 'watcher_stdout.log'
96
- stderr_log = log_dir / 'watcher_stderr.log'
95
+ stdout_log = log_dir / "watcher_stdout.log"
96
+ stderr_log = log_dir / "watcher_stderr.log"
97
97
 
98
98
  # Open log files in append mode
99
- sys.stdout = open(stdout_log, 'a', buffering=1)
100
- sys.stderr = open(stderr_log, 'a', buffering=1)
99
+ sys.stdout = open(stdout_log, "a", buffering=1)
100
+ sys.stderr = open(stderr_log, "a", buffering=1)
101
101
 
102
102
  # Run the async daemon
103
103
  asyncio.run(run_daemon())
@@ -111,5 +111,5 @@ def main():
111
111
  sys.exit(1)
112
112
 
113
113
 
114
- if __name__ == '__main__':
114
+ if __name__ == "__main__":
115
115
  main()
realign/worker_core.py CHANGED
@@ -222,7 +222,9 @@ class AlineWorker:
222
222
  # If no new turn was created, decide if this job is actually complete.
223
223
  existing = self.db.get_turn_by_number(session_id, turn_number)
224
224
  if existing is None:
225
- raise RuntimeError(f"Turn not created and not present in DB: {session_id} #{turn_number}")
225
+ raise RuntimeError(
226
+ f"Turn not created and not present in DB: {session_id} #{turn_number}"
227
+ )
226
228
 
227
229
  status = getattr(existing, "turn_status", None)
228
230
  if status in (None, "completed"):
realign/worker_daemon.py CHANGED
@@ -61,7 +61,9 @@ async def run_daemon() -> None:
61
61
  if db is not None:
62
62
  n = db.requeue_processing_jobs_locked_by(worker_id=worker.worker_id)
63
63
  if n:
64
- logger.info(f"Requeued {n} in-flight job(s) for worker_id={worker.worker_id}")
64
+ logger.info(
65
+ f"Requeued {n} in-flight job(s) for worker_id={worker.worker_id}"
66
+ )
65
67
  except Exception as e:
66
68
  logger.warning(f"Failed to requeue in-flight jobs on shutdown: {e}")
67
69
  except Exception:
@@ -1,93 +0,0 @@
1
- aline_ai-0.5.4.dist-info/licenses/LICENSE,sha256=H8wTqV5IF1oHw_HbBtS1PSDU8G_q81yblEIL_JfV8Vo,1077
2
- realign/__init__.py,sha256=IahJlCDpOv2BJxOCpmx8UfhzQxweVN7I9N7YQyT7zMo,1623
3
- realign/claude_detector.py,sha256=hU5OcFO7JH9BCVbmajAmz4TIP-EQuvz9VlpsRYuSoVM,2792
4
- realign/cli.py,sha256=81zMPACOurb9YzDKdhHyNmnye5lHOv3dbNSuXmKqJ7Y,29783
5
- realign/codex_detector.py,sha256=vDjRWHycjzX9Pavv8IwrznMf5oyFKBn4FvqYYy3I0s4,4141
6
- realign/config.py,sha256=fDwXstNF80yNSUOtNJYAqkDEWZOQkzNC7cN0-_2W0KU,12223
7
- realign/context.py,sha256=ttQL4_Q9FNv6JA85aRslBuu97LeJPoKAgRbShaj_UiU,10006
8
- realign/file_lock.py,sha256=ff02cxCPOqauF5BVqRvdtfbm30czUhla6MTuwsURHTM,3443
9
- realign/hooks.py,sha256=VBLxAX_gcybWeAr4MnrN4aFh8UGNHnEtoSE1D0Og7M8,73443
10
- realign/llm_client.py,sha256=KPfJScQvqse-Tm-VpqnZ6C5jvajPl2n4Ddz9sUp7WIY,24564
11
- realign/logging_config.py,sha256=pw0RgG_pneUUAFCsLFm03x7n8syBMSJfwZMAFTiXgXg,4925
12
- realign/mcp_server.py,sha256=3rhuHtUeo4XXPan9QoXltrIrqB2-yMy1JNkYzgGPSJ8,10401
13
- realign/mcp_watcher.py,sha256=_z6dz4TPYkNVfiM3VIOvFI2aG1svep7RMk8PF30HXDE,1261
14
- realign/redactor.py,sha256=iOdajShODYXYsnkTajV3aNGeudg0hXg859ltn5KDNXA,16783
15
- realign/watcher_core.py,sha256=p5fgyMl_h4rAUUNOS2vCv2ZxTJ0Oa7i1t4bCsjgD9rM,103488
16
- realign/watcher_daemon.py,sha256=H_nEPx5DDnd3PPUJ_dv8jN7u5kkPgk8DbkcQKgciFhU,3090
17
- realign/worker_core.py,sha256=W-RsnFFWoi-g4WHzrw1yJLpBDac1d6ZV8ZC3fTpUGmA,10075
18
- realign/worker_daemon.py,sha256=FoV65cROCI37baELWdAelncSyNKNkxbz2jbOjfNGsY4,3512
19
- realign/adapters/__init__.py,sha256=bpDm5aBxMdq4OA_beYahoUb4zfNaq3KOG6KghQJruRc,827
20
- realign/adapters/antigravity.py,sha256=sEHviZx1jK14sXrVLT3qkeZY_t8ow0MHn6mFFXu939Y,5510
21
- realign/adapters/base.py,sha256=tnBQ0F48LI_j5mKbNSbHKWobqxxNCowJUKb-hhBPHsQ,7801
22
- realign/adapters/claude.py,sha256=UTCBfzcBaqsR1YUMDULxWsIBcshVL8mko5grD0QPjI4,5161
23
- realign/adapters/codex.py,sha256=o9XyZEPDVqskHgXSkCDovu3yJM8x6HTIIobU90MGE3s,2075
24
- realign/adapters/gemini.py,sha256=Oaucgz6l_6Cb0GDdt0ant_Pun6B1CfrDMN9B4irIHXc,2636
25
- realign/adapters/registry.py,sha256=gJf9MSfd0clt653eBfcM17snrSDXeQDwVXal0N2NrHo,3303
26
- realign/claude_hooks/__init__.py,sha256=-2CiH5UIjPQzok2pBQ8yIVXB5oFxkzLhFXQ8NDDVy0c,594
27
- realign/claude_hooks/permission_request_hook.py,sha256=jMN7UtL6bMqHObUCP5A5ysvFrooDEcd9KxtmF2-3nCw,6448
28
- realign/claude_hooks/permission_request_hook_installer.py,sha256=B05ey_7OT3tlJBGzBlmy6DFJdW3OGMZCCrk1HSXl0Cs,7800
29
- realign/claude_hooks/stop_hook.py,sha256=bcWr9jCDZErijSzVSP-kdfmoZ6DHYc6hkRaJ_A2PmQ8,11989
30
- realign/claude_hooks/stop_hook_installer.py,sha256=BjzabUrAPLCA0m_8ZQWqDW4eCujdPTzlwUNdVGxtRk4,7238
31
- realign/claude_hooks/terminal_state.py,sha256=ZvdQ-ZmqEltdMoNk3lXVsbpvbAQEmf2hxTCY_8WFu9g,2586
32
- realign/claude_hooks/user_prompt_submit_hook.py,sha256=WD-UavhBTueN2TPfnZrnPC7DFYGEeptjUEF21EJn7Qo,10312
33
- realign/claude_hooks/user_prompt_submit_hook_installer.py,sha256=2xLF8yZcE7Iwib9gU-xCkA1NWxNH9Nc5CFKPYK7rtXw,5371
34
- realign/commands/__init__.py,sha256=sx_ck55oxaoiF4N3LugG0ZXwonUDxeEZ5uHbBKCC7K8,89
35
- realign/commands/add.py,sha256=nkkHETnNprCMKoJuqirddVzJjAiLew7oatLSt3kJOV4,23620
36
- realign/commands/config.py,sha256=rVwWUgLQDoRh25bjNzsN2eC77aiaPB5D77UtxgS3RlY,6798
37
- realign/commands/context.py,sha256=tD5jQG4kXPfV57PrS1Du3JUzvY6RCbNbxsOQWdomrPg,7057
38
- realign/commands/export_shares.py,sha256=6omUtPK8OJsWfrzeQAx5LbM8-lOiONZtWa9btpVumVQ,136179
39
- realign/commands/import_shares.py,sha256=bDf-_1hnlFbqBvVnLTg8Qm4JheQcjTFhhmiBlg75M7k,25314
40
- realign/commands/init.py,sha256=ZJpmB0QhKHzEi8d8g8i5QKgnEFl8V6Kt7vFEPOWHzxM,27454
41
- realign/commands/restore.py,sha256=59WXsS09EN6wbYgmc1xYdArF-qhCMbmEwyj8vGLmxTc,11057
42
- realign/commands/search.py,sha256=_ovwHzDNSZEVP4EdOcg9ELQ5y_84BvXRHhKKALHD738,25173
43
- realign/commands/upgrade.py,sha256=7FuuLTQ3KyH33GD8RWMh1JMwFnVV3naolS-SQ5vxCjE,8547
44
- realign/commands/watcher.py,sha256=6EBzIc439ClqS4UG8iGd_tfb5MQMPeieAgjCc-M-NEI,137995
45
- realign/commands/worker.py,sha256=LErEjB9T9_XatuLTS9Wn0BbSFc3ah0O9lFTzQOin4qU,22673
46
- realign/dashboard/__init__.py,sha256=QZkHTsGityH8UkF8rmvA3xW7dMXNe0swEWr443qfgCM,128
47
- realign/dashboard/app.py,sha256=SOlQ6QHt01-Jj5Daa5xyigrNhR-gXC3jupH24lcbeLY,11935
48
- realign/dashboard/tmux_manager.py,sha256=zptH81f62tita2h0Yj3HUMcbBQoDNxHDlID4s6KQXAk,22022
49
- realign/dashboard/screens/__init__.py,sha256=x42K31sqL5KVMtufOnZjG8LnFN7hQyN5-z8CySqbwlM,304
50
- realign/dashboard/screens/create_event.py,sha256=nPMZMOekduxLXBTjMmLJEQMhb33RXWRIY0uHbD5fmmM,5484
51
- realign/dashboard/screens/event_detail.py,sha256=WJFO7pryO0DZIMtyA-IOriFYtSLZ5Ri5AVSzjYiW1BQ,20842
52
- realign/dashboard/screens/session_detail.py,sha256=eQZUbKq3VyeuH6uXXfayBYqeBmNQA5qwXEaAIveESQk,9579
53
- realign/dashboard/screens/share_import.py,sha256=f57Q5yz-pPoAkPn-eo1UQms_FIMwvD_judQ3a4-BEJA,6238
54
- realign/dashboard/styles/dashboard.tcss,sha256=9sSIs3r4V8eeTwCK56s7fnYxjMEuASP8EcmK1fhpUmA,3454
55
- realign/dashboard/widgets/__init__.py,sha256=3Pf2_K9obrertgv_psfxradgkI9RXlmjoXYQH7oBKm0,583
56
- realign/dashboard/widgets/config_panel.py,sha256=skOK0bo0yIom04hfc8v-5bRfdU76ooq4vMWwFpeTRwg,7915
57
- realign/dashboard/widgets/events_table.py,sha256=vQ_m-LW8Et2awljqNXrdP3kCGGW4cEUCHfbtj-DhjZU,21866
58
- realign/dashboard/widgets/header.py,sha256=ESejMT53T3sbtRrlCGJk8smUv0ts8binkshzCM-hgLI,1582
59
- realign/dashboard/widgets/openable_table.py,sha256=GeJPDEYp0kRHShqvmPMzAePpYXRZHUNqcWNnxqsqxjA,1963
60
- realign/dashboard/widgets/search_panel.py,sha256=D0NXVIdNXpcnnVETfA44Muue4CyZq5XkMj4vfpNb3LQ,8635
61
- realign/dashboard/widgets/sessions_table.py,sha256=CfSy93AbAqGGDFxEQW4u59twZDoVnHyuMmPcSOZTiW4,21852
62
- realign/dashboard/widgets/terminal_panel.py,sha256=obVB9ONnR2Voun_druPiyVG-hd6gf4idXN9iOU84Jq4,29704
63
- realign/dashboard/widgets/watcher_panel.py,sha256=ThQfVi_GOP-KR1GDNh5WsSmPJ11TEiP_fuuyxd2sdEk,19662
64
- realign/dashboard/widgets/worker_panel.py,sha256=ufJYpW0nIPcek7GHa1nuMkrpNU9AY0WvtnWzhNZneW0,18547
65
- realign/db/__init__.py,sha256=dqFKTskcVA7qCn7JAXeUz_c5T0_g--e9BAVokmk2Ys0,1874
66
- realign/db/base.py,sha256=mNk57KEIJP4L5oxG5jlUe_QSkF7wReLoD5qdB9NGn18,12103
67
- realign/db/locks.py,sha256=g9UyJRQUvJN-YAp9hf4EaprovzdG5bMtHyng_73CMcY,1699
68
- realign/db/migration.py,sha256=IGszYBkZ8YW5IVcs7P1qvwyyGK25KNxdakXRXKvzkyg,13342
69
- realign/db/schema.py,sha256=3uLER0Azo_BJk8XG7F740xuor1oXMkdj1NQknBDuWlA,18110
70
- realign/db/sqlite_db.py,sha256=wfdlOr7-JTqAbqYcotXglGJ3B5oqrsZwkxVMSc6BJE0,81972
71
- realign/events/__init__.py,sha256=oeD-qyUqbrjh3E3_2RLKnnZphoxlX0q-3aoZrRqtGFk,36
72
- realign/events/debouncer.py,sha256=U3Q7dYpnMsAgWsW_E_IbSC4lrdEoi6H_SFLGLOAazs4,3062
73
- realign/events/event_summarizer.py,sha256=mNxB62ZuwiWVHDaNUpJxltT1-ClP-gmt95y3Wq1H72k,8125
74
- realign/events/session_summarizer.py,sha256=D7BqeMt4htHKteUi3SE4AEP7_l_SGWcHjk2oA7PN19c,10201
75
- realign/models/event.py,sha256=xerdRPU6KOTgG18T4ed4FzHHr25z3DpRT0v6A95gyHs,5533
76
- realign/prompts/__init__.py,sha256=Qzp4j2sf_OF_n34p-uI1BtfCIfJlka3NfEUCS9Fdqvs,443
77
- realign/prompts/presets.py,sha256=NH3u2z3oxUHy0YctvWKEt91mG8388DhEOX5QfBSWncY,7188
78
- realign/tracker/__init__.py,sha256=Apd-xxomkiOjSIthseqZpVQ8l0yT4nkaErsUyA1ptIE,161
79
- realign/triggers/__init__.py,sha256=URGUFpr3nG6B34Yx2BH8dg2iIFhG28G7nBSfFN5VfOo,674
80
- realign/triggers/antigravity_trigger.py,sha256=Z5S4Nh2-FqHnGkZ_0KY8J5qmDD35y5V1P12uyINCCpE,5223
81
- realign/triggers/base.py,sha256=hy1OXiWg63KTj_Z1wBhRFyMrji3HJL2uzGW5Vvnw8KI,4147
82
- realign/triggers/claude_trigger.py,sha256=KyyTAm3B0OTc7lyDnoGgrYciKpt3WJt7bQDltw5j4K8,19570
83
- realign/triggers/codex_trigger.py,sha256=IENTa6F-PJYuT9Cw8ar5vaJmxojUSc9-xz1dkUJ-iRQ,13687
84
- realign/triggers/gemini_trigger.py,sha256=qXOBqNU-b5WfzPhNfsIEASc8QhWrb3BP4f-aAwUWNXk,7719
85
- realign/triggers/next_turn_trigger.py,sha256=CU6jsIxA_uoV-ROIke0iwEh4-on8vuataLGf4obwtYM,4287
86
- realign/triggers/registry.py,sha256=AVlMm5xjzWLCnJMuzvfw4hMdNGlLqSTsgd3VCOZ-cHs,3799
87
- realign/triggers/turn_status.py,sha256=tPHUB3NnnBfMVCIYdrFt5W1840IUGEZ-3v2GEtC981g,5987
88
- realign/triggers/turn_summary.py,sha256=f3hEUshgv9skJ9AbfWpoYs417lsv_HK2A_vpPjgryO4,4467
89
- aline_ai-0.5.4.dist-info/METADATA,sha256=hpo9KnzjijOm4LWcK9gS851AwfbHhETS3DFarY-FONk,1597
90
- aline_ai-0.5.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
91
- aline_ai-0.5.4.dist-info/entry_points.txt,sha256=TvYELpMoWsUTcQdMV8tBHxCbEf_LbK4sESqK3r8PM6Y,78
92
- aline_ai-0.5.4.dist-info/top_level.txt,sha256=yIL3s2xv9nf1GwD5n71Aq_JEIV4AfzCIDNKBzewuRm4,8
93
- aline_ai-0.5.4.dist-info/RECORD,,