@agentikos/omega-os 0.2.0 → 0.19.6

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 (376) hide show
  1. package/README.md +33 -3
  2. package/bootstrap/lib/__pycache__/claude-code-settings.cpython-313.pyc +0 -0
  3. package/bootstrap/lib/__pycache__/llm-clis.cpython-313.pyc +0 -0
  4. package/bootstrap/lib/__pycache__/manifest-helpers.cpython-313.pyc +0 -0
  5. package/bootstrap/lib/claude-code-settings.py +176 -0
  6. package/bootstrap/lib/common.sh +457 -1
  7. package/bootstrap/lib/llm-clis.py +341 -0
  8. package/bootstrap/lib/manifest-helpers.py +384 -0
  9. package/bootstrap/lib/steps.sh +790 -21
  10. package/bootstrap/manifest.example.yaml +87 -1
  11. package/bootstrap/templates/aisb/CLAUDE.md +305 -0
  12. package/bootstrap/templates/aisb/architect.md +204 -0
  13. package/bootstrap/templates/aisb/checkers/CLAUDE.md +9 -0
  14. package/bootstrap/templates/aisb/checkers/checker-architect.md +151 -0
  15. package/bootstrap/templates/aisb/checkers/checker-common.md +171 -0
  16. package/bootstrap/templates/aisb/checkers/checker-construct.md +129 -0
  17. package/bootstrap/templates/aisb/checkers/checker-keymaker.md +204 -0
  18. package/bootstrap/templates/aisb/checkers/checker-link.md +205 -0
  19. package/bootstrap/templates/aisb/checkers/checker-merovingian.md +219 -0
  20. package/bootstrap/templates/aisb/checkers/checker-morpheus.md +211 -0
  21. package/bootstrap/templates/aisb/checkers/checker-neo.md +177 -0
  22. package/bootstrap/templates/aisb/checkers/checker-niobe.md +156 -0
  23. package/bootstrap/templates/aisb/checkers/checker-oracle.md +164 -0
  24. package/bootstrap/templates/aisb/checkers/checker-seraph.md +187 -0
  25. package/bootstrap/templates/aisb/checkers/checker-smith.md +195 -0
  26. package/bootstrap/templates/aisb/checkers/checker-zion.md +113 -0
  27. package/bootstrap/templates/aisb/construct.md +135 -0
  28. package/bootstrap/templates/aisb/keymaker.md +227 -0
  29. package/bootstrap/templates/aisb/link.md +170 -0
  30. package/bootstrap/templates/aisb/lmc-protocol.md +57 -0
  31. package/bootstrap/templates/aisb/merovingian.md +159 -0
  32. package/bootstrap/templates/aisb/morpheus.md +243 -0
  33. package/bootstrap/templates/aisb/neo.md +147 -0
  34. package/bootstrap/templates/aisb/niobe.md +197 -0
  35. package/bootstrap/templates/aisb/oracle.md +244 -0
  36. package/bootstrap/templates/aisb/protocols/handoff-templates.md +204 -0
  37. package/bootstrap/templates/aisb/protocols/shared-protocol.md +248 -0
  38. package/bootstrap/templates/aisb/pythia.md +153 -0
  39. package/bootstrap/templates/aisb/seraph.md +315 -0
  40. package/bootstrap/templates/aisb/smith.md +202 -0
  41. package/bootstrap/templates/aisb/zion.md +172 -0
  42. package/bootstrap/templates/autonomous/audit-patrol.yaml +41 -0
  43. package/bootstrap/templates/autonomous/smith-reflect.yaml +43 -0
  44. package/bootstrap/templates/autonomous/ssh-key-rotate.yaml +46 -0
  45. package/bootstrap/templates/autonomous/support-agent.yaml +38 -0
  46. package/docs/AUDITS.md +85 -0
  47. package/docs/GAP-ANALYSIS.md +214 -0
  48. package/docs/INSTALL.md +47 -9
  49. package/docs/MCP-AND-PLUGINS.md +31 -4
  50. package/docs/SIMULATION.md +171 -0
  51. package/docs/simulate.sh +211 -0
  52. package/install.sh +164 -17
  53. package/omega/Agentik_Engine/README.md +4 -2
  54. package/omega/Agentik_Engine/omega_engine/__init__.py +147 -1
  55. package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
  56. package/omega/Agentik_Engine/omega_engine/__pycache__/account.cpython-313.pyc +0 -0
  57. package/omega/Agentik_Engine/omega_engine/__pycache__/agent_messages.cpython-313.pyc +0 -0
  58. package/omega/Agentik_Engine/omega_engine/__pycache__/aisb_chat.cpython-313.pyc +0 -0
  59. package/omega/Agentik_Engine/omega_engine/__pycache__/audit.cpython-313.pyc +0 -0
  60. package/omega/Agentik_Engine/omega_engine/__pycache__/audit_arsenal.cpython-313.pyc +0 -0
  61. package/omega/Agentik_Engine/omega_engine/__pycache__/audit_diff.cpython-313.pyc +0 -0
  62. package/omega/Agentik_Engine/omega_engine/__pycache__/audit_gate.cpython-313.pyc +0 -0
  63. package/omega/Agentik_Engine/omega_engine/__pycache__/auto_update.cpython-313.pyc +0 -0
  64. package/omega/Agentik_Engine/omega_engine/__pycache__/autonomous.cpython-313.pyc +0 -0
  65. package/omega/Agentik_Engine/omega_engine/__pycache__/backup.cpython-313.pyc +0 -0
  66. package/omega/Agentik_Engine/omega_engine/__pycache__/barrier.cpython-313.pyc +0 -0
  67. package/omega/Agentik_Engine/omega_engine/__pycache__/bus.cpython-313.pyc +0 -0
  68. package/omega/Agentik_Engine/omega_engine/__pycache__/cadence.cpython-313.pyc +0 -0
  69. package/omega/Agentik_Engine/omega_engine/__pycache__/classifier.cpython-313.pyc +0 -0
  70. package/omega/Agentik_Engine/omega_engine/__pycache__/cleanup.cpython-313.pyc +0 -0
  71. package/omega/Agentik_Engine/omega_engine/__pycache__/cli.cpython-313.pyc +0 -0
  72. package/omega/Agentik_Engine/omega_engine/__pycache__/completions.cpython-313.pyc +0 -0
  73. package/omega/Agentik_Engine/omega_engine/__pycache__/costs.cpython-313.pyc +0 -0
  74. package/omega/Agentik_Engine/omega_engine/__pycache__/done_signal.cpython-313.pyc +0 -0
  75. package/omega/Agentik_Engine/omega_engine/__pycache__/envelope.cpython-313.pyc +0 -0
  76. package/omega/Agentik_Engine/omega_engine/__pycache__/events.cpython-313.pyc +0 -0
  77. package/omega/Agentik_Engine/omega_engine/__pycache__/executor.cpython-313.pyc +0 -0
  78. package/omega/Agentik_Engine/omega_engine/__pycache__/handoff.cpython-313.pyc +0 -0
  79. package/omega/Agentik_Engine/omega_engine/__pycache__/hermes.cpython-313.pyc +0 -0
  80. package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_bootstrap.cpython-313.pyc +0 -0
  81. package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_desktop.cpython-313.pyc +0 -0
  82. package/omega/Agentik_Engine/omega_engine/__pycache__/learning.cpython-313.pyc +0 -0
  83. package/omega/Agentik_Engine/omega_engine/__pycache__/managed_agent.cpython-313.pyc +0 -0
  84. package/omega/Agentik_Engine/omega_engine/__pycache__/memory.cpython-313.pyc +0 -0
  85. package/omega/Agentik_Engine/omega_engine/__pycache__/menu.cpython-313.pyc +0 -0
  86. package/omega/Agentik_Engine/omega_engine/__pycache__/mission.cpython-313.pyc +0 -0
  87. package/omega/Agentik_Engine/omega_engine/__pycache__/plan.cpython-313.pyc +0 -0
  88. package/omega/Agentik_Engine/omega_engine/__pycache__/progress.cpython-313.pyc +0 -0
  89. package/omega/Agentik_Engine/omega_engine/__pycache__/project.cpython-313.pyc +0 -0
  90. package/omega/Agentik_Engine/omega_engine/__pycache__/prompts.cpython-313.pyc +0 -0
  91. package/omega/Agentik_Engine/omega_engine/__pycache__/provider.cpython-313.pyc +0 -0
  92. package/omega/Agentik_Engine/omega_engine/__pycache__/prune.cpython-313.pyc +0 -0
  93. package/omega/Agentik_Engine/omega_engine/__pycache__/pursue.cpython-313.pyc +0 -0
  94. package/omega/Agentik_Engine/omega_engine/__pycache__/reducer.cpython-313.pyc +0 -0
  95. package/omega/Agentik_Engine/omega_engine/__pycache__/report.cpython-313.pyc +0 -0
  96. package/omega/Agentik_Engine/omega_engine/__pycache__/router.cpython-313.pyc +0 -0
  97. package/omega/Agentik_Engine/omega_engine/__pycache__/skill_routing.cpython-313.pyc +0 -0
  98. package/omega/Agentik_Engine/omega_engine/__pycache__/smoke.cpython-313.pyc +0 -0
  99. package/omega/Agentik_Engine/omega_engine/__pycache__/store.cpython-313.pyc +0 -0
  100. package/omega/Agentik_Engine/omega_engine/__pycache__/supervisor.cpython-313.pyc +0 -0
  101. package/omega/Agentik_Engine/omega_engine/__pycache__/sync.cpython-313.pyc +0 -0
  102. package/omega/Agentik_Engine/omega_engine/__pycache__/task.cpython-313.pyc +0 -0
  103. package/omega/Agentik_Engine/omega_engine/__pycache__/telegram.cpython-313.pyc +0 -0
  104. package/omega/Agentik_Engine/omega_engine/__pycache__/telegram_history.cpython-313.pyc +0 -0
  105. package/omega/Agentik_Engine/omega_engine/__pycache__/tmux.cpython-313.pyc +0 -0
  106. package/omega/Agentik_Engine/omega_engine/__pycache__/tools.cpython-313.pyc +0 -0
  107. package/omega/Agentik_Engine/omega_engine/__pycache__/understand_anything.cpython-313.pyc +0 -0
  108. package/omega/Agentik_Engine/omega_engine/__pycache__/updater.cpython-313.pyc +0 -0
  109. package/omega/Agentik_Engine/omega_engine/__pycache__/validate.cpython-313.pyc +0 -0
  110. package/omega/Agentik_Engine/omega_engine/__pycache__/vault.cpython-313.pyc +0 -0
  111. package/omega/Agentik_Engine/omega_engine/__pycache__/webhooks.cpython-313.pyc +0 -0
  112. package/omega/Agentik_Engine/omega_engine/__pycache__/worker.cpython-313.pyc +0 -0
  113. package/omega/Agentik_Engine/omega_engine/account.py +28 -31
  114. package/omega/Agentik_Engine/omega_engine/agent_messages.py +167 -0
  115. package/omega/Agentik_Engine/omega_engine/aisb_chat.py +128 -0
  116. package/omega/Agentik_Engine/omega_engine/audit_diff.py +99 -0
  117. package/omega/Agentik_Engine/omega_engine/audit_gate.py +149 -0
  118. package/omega/Agentik_Engine/omega_engine/audits/__init__.py +60 -0
  119. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/__init__.cpython-313.pyc +0 -0
  120. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/batcher.cpython-313.pyc +0 -0
  121. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/dispatcher.cpython-313.pyc +0 -0
  122. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/generator.cpython-313.pyc +0 -0
  123. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/history.cpython-313.pyc +0 -0
  124. package/omega/Agentik_Engine/omega_engine/audits/__pycache__/pipeline.cpython-313.pyc +0 -0
  125. package/omega/Agentik_Engine/omega_engine/audits/batcher.py +218 -0
  126. package/omega/Agentik_Engine/omega_engine/audits/dispatcher.py +92 -0
  127. package/omega/Agentik_Engine/omega_engine/audits/generator.py +234 -0
  128. package/omega/Agentik_Engine/omega_engine/audits/history.py +168 -0
  129. package/omega/Agentik_Engine/omega_engine/audits/pipeline.py +198 -0
  130. package/omega/Agentik_Engine/omega_engine/auto_update.py +339 -0
  131. package/omega/Agentik_Engine/omega_engine/backup.py +215 -0
  132. package/omega/Agentik_Engine/omega_engine/cadence.py +158 -0
  133. package/omega/Agentik_Engine/omega_engine/classifier.py +215 -0
  134. package/omega/Agentik_Engine/omega_engine/cleanup.py +673 -0
  135. package/omega/Agentik_Engine/omega_engine/cli.py +4156 -86
  136. package/omega/Agentik_Engine/omega_engine/completions.py +260 -0
  137. package/omega/Agentik_Engine/omega_engine/costs.py +100 -0
  138. package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/__init__.cpython-313.pyc +0 -0
  139. package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/autonomous.cpython-313.pyc +0 -0
  140. package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/engine.cpython-313.pyc +0 -0
  141. package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/telegram.cpython-313.pyc +0 -0
  142. package/omega/Agentik_Engine/omega_engine/daemons/engine.py +53 -4
  143. package/omega/Agentik_Engine/omega_engine/daemons/telegram.py +101 -17
  144. package/omega/Agentik_Engine/omega_engine/done_signal.py +154 -0
  145. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/__init__.cpython-313.pyc +0 -0
  146. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/artifact.cpython-313.pyc +0 -0
  147. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/automation.cpython-313.pyc +0 -0
  148. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/base.cpython-313.pyc +0 -0
  149. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/claudecode.cpython-313.pyc +0 -0
  150. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/connection.cpython-313.pyc +0 -0
  151. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/coworker.cpython-313.pyc +0 -0
  152. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/loop.cpython-313.pyc +0 -0
  153. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/prompt.cpython-313.pyc +0 -0
  154. package/omega/Agentik_Engine/omega_engine/educators/__pycache__/skill.cpython-313.pyc +0 -0
  155. package/omega/Agentik_Engine/omega_engine/envelope.py +219 -0
  156. package/omega/Agentik_Engine/omega_engine/executor.py +149 -10
  157. package/omega/Agentik_Engine/omega_engine/genesis/__init__.py +134 -0
  158. package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/__init__.cpython-313.pyc +0 -0
  159. package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/orchestrator.cpython-313.pyc +0 -0
  160. package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/phases.cpython-313.pyc +0 -0
  161. package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/stack.cpython-313.pyc +0 -0
  162. package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/state.cpython-313.pyc +0 -0
  163. package/omega/Agentik_Engine/omega_engine/genesis/orchestrator.py +262 -0
  164. package/omega/Agentik_Engine/omega_engine/genesis/phases.py +950 -0
  165. package/omega/Agentik_Engine/omega_engine/genesis/stack.py +324 -0
  166. package/omega/Agentik_Engine/omega_engine/genesis/state.py +353 -0
  167. package/omega/Agentik_Engine/omega_engine/handoff.py +459 -0
  168. package/omega/Agentik_Engine/omega_engine/hermes.py +426 -0
  169. package/omega/Agentik_Engine/omega_engine/hermes_bootstrap.py +382 -0
  170. package/omega/Agentik_Engine/omega_engine/hermes_desktop.py +469 -0
  171. package/omega/Agentik_Engine/omega_engine/integrations/__init__.py +30 -0
  172. package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/__init__.cpython-313.pyc +0 -0
  173. package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/graphify.cpython-313.pyc +0 -0
  174. package/omega/Agentik_Engine/omega_engine/integrations/graphify.py +234 -0
  175. package/omega/Agentik_Engine/omega_engine/learning.py +268 -0
  176. package/omega/Agentik_Engine/omega_engine/managed_agent.py +467 -0
  177. package/omega/Agentik_Engine/omega_engine/memory.py +271 -0
  178. package/omega/Agentik_Engine/omega_engine/menu.py +1065 -0
  179. package/omega/Agentik_Engine/omega_engine/migrations/__init__.py +144 -0
  180. package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  181. package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/v0_14_0.cpython-313.pyc +0 -0
  182. package/omega/Agentik_Engine/omega_engine/migrations/v0_14_0.py +29 -0
  183. package/omega/Agentik_Engine/omega_engine/mission.py +16 -13
  184. package/omega/Agentik_Engine/omega_engine/plan.py +846 -0
  185. package/omega/Agentik_Engine/omega_engine/prompts.py +158 -0
  186. package/omega/Agentik_Engine/omega_engine/provider.py +161 -12
  187. package/omega/Agentik_Engine/omega_engine/prune.py +151 -0
  188. package/omega/Agentik_Engine/omega_engine/pursue.py +205 -0
  189. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/__init__.cpython-313.pyc +0 -0
  190. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/agentic.cpython-313.pyc +0 -0
  191. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/base.cpython-313.pyc +0 -0
  192. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/corrective.cpython-313.pyc +0 -0
  193. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/graph.cpython-313.pyc +0 -0
  194. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/hybrid.cpython-313.pyc +0 -0
  195. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/multimodal.cpython-313.pyc +0 -0
  196. package/omega/Agentik_Engine/omega_engine/rag/__pycache__/router.cpython-313.pyc +0 -0
  197. package/omega/Agentik_Engine/omega_engine/router.py +28 -0
  198. package/omega/Agentik_Engine/omega_engine/skill_discovery/__init__.py +48 -0
  199. package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/__init__.cpython-313.pyc +0 -0
  200. package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/auditor.cpython-313.pyc +0 -0
  201. package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/finder.cpython-313.pyc +0 -0
  202. package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/installer.cpython-313.pyc +0 -0
  203. package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/marketplaces.cpython-313.pyc +0 -0
  204. package/omega/Agentik_Engine/omega_engine/skill_discovery/auditor.py +232 -0
  205. package/omega/Agentik_Engine/omega_engine/skill_discovery/finder.py +94 -0
  206. package/omega/Agentik_Engine/omega_engine/skill_discovery/installer.py +129 -0
  207. package/omega/Agentik_Engine/omega_engine/skill_discovery/marketplaces.py +80 -0
  208. package/omega/Agentik_Engine/omega_engine/skill_routing.py +388 -0
  209. package/omega/Agentik_Engine/omega_engine/smoke.py +81 -0
  210. package/omega/Agentik_Engine/omega_engine/store.py +88 -41
  211. package/omega/Agentik_Engine/omega_engine/sync.py +142 -1
  212. package/omega/Agentik_Engine/omega_engine/telegram_history.py +260 -0
  213. package/omega/Agentik_Engine/omega_engine/tmux.py +526 -0
  214. package/omega/Agentik_Engine/omega_engine/understand_anything.py +275 -0
  215. package/omega/Agentik_Engine/omega_engine/updater.py +70 -0
  216. package/omega/Agentik_Engine/omega_engine/validate.py +186 -0
  217. package/omega/Agentik_Engine/omega_engine/vault.py +342 -0
  218. package/omega/Agentik_Engine/omega_engine/webhooks.py +262 -0
  219. package/omega/Agentik_Engine/omega_engine/worker.py +526 -0
  220. package/omega/Agentik_Engine/pyproject.toml +1 -1
  221. package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313-pytest-8.4.2.pyc +0 -0
  222. package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313.pyc +0 -0
  223. package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313-pytest-8.4.2.pyc +0 -0
  224. package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313.pyc +0 -0
  225. package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313-pytest-8.4.2.pyc +0 -0
  226. package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313.pyc +0 -0
  227. package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313-pytest-8.4.2.pyc +0 -0
  228. package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313.pyc +0 -0
  229. package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313-pytest-8.4.2.pyc +0 -0
  230. package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313.pyc +0 -0
  231. package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313-pytest-8.4.2.pyc +0 -0
  232. package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313.pyc +0 -0
  233. package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313-pytest-8.4.2.pyc +0 -0
  234. package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313.pyc +0 -0
  235. package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313-pytest-8.4.2.pyc +0 -0
  236. package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313.pyc +0 -0
  237. package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313-pytest-8.4.2.pyc +0 -0
  238. package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313.pyc +0 -0
  239. package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313-pytest-8.4.2.pyc +0 -0
  240. package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313.pyc +0 -0
  241. package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313-pytest-8.4.2.pyc +0 -0
  242. package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313.pyc +0 -0
  243. package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313-pytest-8.4.2.pyc +0 -0
  244. package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313.pyc +0 -0
  245. package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313-pytest-8.4.2.pyc +0 -0
  246. package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313.pyc +0 -0
  247. package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313-pytest-8.4.2.pyc +0 -0
  248. package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313.pyc +0 -0
  249. package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313-pytest-8.4.2.pyc +0 -0
  250. package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313.pyc +0 -0
  251. package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313-pytest-8.4.2.pyc +0 -0
  252. package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313.pyc +0 -0
  253. package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313-pytest-8.4.2.pyc +0 -0
  254. package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313.pyc +0 -0
  255. package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313-pytest-8.4.2.pyc +0 -0
  256. package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313.pyc +0 -0
  257. package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313-pytest-8.4.2.pyc +0 -0
  258. package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313.pyc +0 -0
  259. package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313-pytest-8.4.2.pyc +0 -0
  260. package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313.pyc +0 -0
  261. package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313-pytest-8.4.2.pyc +0 -0
  262. package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313.pyc +0 -0
  263. package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313-pytest-8.4.2.pyc +0 -0
  264. package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313.pyc +0 -0
  265. package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313-pytest-8.4.2.pyc +0 -0
  266. package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313.pyc +0 -0
  267. package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313-pytest-8.4.2.pyc +0 -0
  268. package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313.pyc +0 -0
  269. package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313-pytest-8.4.2.pyc +0 -0
  270. package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313.pyc +0 -0
  271. package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313-pytest-8.4.2.pyc +0 -0
  272. package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313.pyc +0 -0
  273. package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313-pytest-8.4.2.pyc +0 -0
  274. package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313.pyc +0 -0
  275. package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313-pytest-8.4.2.pyc +0 -0
  276. package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313.pyc +0 -0
  277. package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313-pytest-8.4.2.pyc +0 -0
  278. package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313.pyc +0 -0
  279. package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313-pytest-8.4.2.pyc +0 -0
  280. package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313.pyc +0 -0
  281. package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313-pytest-8.4.2.pyc +0 -0
  282. package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313.pyc +0 -0
  283. package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313-pytest-8.4.2.pyc +0 -0
  284. package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313.pyc +0 -0
  285. package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313-pytest-8.4.2.pyc +0 -0
  286. package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313.pyc +0 -0
  287. package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313-pytest-8.4.2.pyc +0 -0
  288. package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313.pyc +0 -0
  289. package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313-pytest-8.4.2.pyc +0 -0
  290. package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313.pyc +0 -0
  291. package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313-pytest-8.4.2.pyc +0 -0
  292. package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313.pyc +0 -0
  293. package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313-pytest-8.4.2.pyc +0 -0
  294. package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313.pyc +0 -0
  295. package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313-pytest-8.4.2.pyc +0 -0
  296. package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313.pyc +0 -0
  297. package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313-pytest-8.4.2.pyc +0 -0
  298. package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313.pyc +0 -0
  299. package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313-pytest-8.4.2.pyc +0 -0
  300. package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313.pyc +0 -0
  301. package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313-pytest-8.4.2.pyc +0 -0
  302. package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313.pyc +0 -0
  303. package/omega/Agentik_Engine/tests/test_account.py +8 -3
  304. package/omega/Agentik_Engine/tests/test_adversarial.py +351 -0
  305. package/omega/Agentik_Engine/tests/test_agents_envelope.py +274 -0
  306. package/omega/Agentik_Engine/tests/test_audits_pipeline.py +348 -0
  307. package/omega/Agentik_Engine/tests/test_auto_update_and_migrations.py +394 -0
  308. package/omega/Agentik_Engine/tests/test_genesis_and_plan.py +573 -0
  309. package/omega/Agentik_Engine/tests/test_graphify.py +190 -0
  310. package/omega/Agentik_Engine/tests/test_handoff.py +311 -0
  311. package/omega/Agentik_Engine/tests/test_hermes_and_ua.py +387 -0
  312. package/omega/Agentik_Engine/tests/test_hermes_bootstrap_and_desktop.py +358 -0
  313. package/omega/Agentik_Engine/tests/test_install_steps.py +359 -0
  314. package/omega/Agentik_Engine/tests/test_install_ux.py +151 -0
  315. package/omega/Agentik_Engine/tests/test_installer_wiring.py +496 -0
  316. package/omega/Agentik_Engine/tests/test_intelligence.py +285 -0
  317. package/omega/Agentik_Engine/tests/test_llm_clis_and_uninstall.py +228 -0
  318. package/omega/Agentik_Engine/tests/test_managed_agent.py +363 -0
  319. package/omega/Agentik_Engine/tests/test_max_provider_and_menu.py +231 -0
  320. package/omega/Agentik_Engine/tests/test_menu_coverage.py +72 -0
  321. package/omega/Agentik_Engine/tests/test_pursue_cadence.py +217 -0
  322. package/omega/Agentik_Engine/tests/test_role_aliases_and_ssot.py +207 -0
  323. package/omega/Agentik_Engine/tests/test_skill_discovery_and_gate.py +337 -0
  324. package/omega/Agentik_Engine/tests/test_skill_power.py +259 -0
  325. package/omega/Agentik_Engine/tests/test_skill_routing.py +189 -0
  326. package/omega/Agentik_Engine/tests/test_telegram_history.py +209 -0
  327. package/omega/Agentik_Engine/tests/test_tmux_and_aisb_chat.py +223 -0
  328. package/omega/Agentik_Engine/tests/test_v06_features.py +370 -0
  329. package/omega/Agentik_Engine/tests/test_vault.py +173 -0
  330. package/omega/Agentik_Engine/tests/test_webhooks_and_readiness.py +277 -0
  331. package/omega/Agentik_Engine/tests/test_worker_and_cleanup.py +541 -0
  332. package/omega/Agentik_Extra/etc/secrets/.vault-key +3 -0
  333. package/omega/Agentik_Extra/etc/secrets/.vault-pub +1 -0
  334. package/omega/Agentik_Runtime/audits.db +0 -0
  335. package/omega/Agentik_SSOT/VERSION +1 -1
  336. package/omega/Agentik_SSOT/claude-plugins/claude-plugins.yaml +100 -0
  337. package/omega/Agentik_SSOT/docs/LAYERS.md +90 -0
  338. package/omega/Agentik_SSOT/docs/USER-JOURNEY.md +283 -0
  339. package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-INTERCONNECTIONS.md +283 -0
  340. package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-ORCHESTRATION-PLAYBOOK.md +364 -0
  341. package/omega/Agentik_SSOT/docs/quality-arsenal/AUDIT-VERIFICATION-CONTRACT.md +272 -0
  342. package/omega/Agentik_SSOT/docs/quality-arsenal/QUALITY-ARSENAL-PREAMBLE.md +462 -0
  343. package/omega/Agentik_SSOT/marketplaces/design-discipline.yaml +86 -0
  344. package/omega/Agentik_SSOT/skills/a11yaudit/SKILL.md +161 -0
  345. package/omega/Agentik_SSOT/skills/apiaudit/SKILL.md +157 -0
  346. package/omega/Agentik_SSOT/skills/audit-orchestrator.md +212 -0
  347. package/omega/Agentik_SSOT/skills/audit-pilot.md +466 -0
  348. package/omega/Agentik_SSOT/skills/audit-tracker.md +147 -0
  349. package/omega/Agentik_SSOT/skills/automationaudit/SKILL.md +161 -0
  350. package/omega/Agentik_SSOT/skills/cadence/SKILL.md +76 -0
  351. package/omega/Agentik_SSOT/skills/codeaudit/SKILL.md +153 -0
  352. package/omega/Agentik_SSOT/skills/copyaudit/SKILL.md +161 -0
  353. package/omega/Agentik_SSOT/skills/dataaudit/SKILL.md +157 -0
  354. package/omega/Agentik_SSOT/skills/debugaudit/SKILL.md +161 -0
  355. package/omega/Agentik_SSOT/skills/dispatch/SKILL.md +79 -0
  356. package/omega/Agentik_SSOT/skills/dxaudit/SKILL.md +161 -0
  357. package/omega/Agentik_SSOT/skills/featureaudit/SKILL.md +161 -0
  358. package/omega/Agentik_SSOT/skills/flowaudit/SKILL.md +165 -0
  359. package/omega/Agentik_SSOT/skills/genesis/SKILL.md +116 -0
  360. package/omega/Agentik_SSOT/skills/handoff/SKILL.md +117 -0
  361. package/omega/Agentik_SSOT/skills/logicaudit/SKILL.md +165 -0
  362. package/omega/Agentik_SSOT/skills/motionaudit/SKILL.md +165 -0
  363. package/omega/Agentik_SSOT/skills/newcmd.md +300 -0
  364. package/omega/Agentik_SSOT/skills/perfaudit/SKILL.md +161 -0
  365. package/omega/Agentik_SSOT/skills/plan/SKILL.md +127 -0
  366. package/omega/Agentik_SSOT/skills/pursue/SKILL.md +68 -0
  367. package/omega/Agentik_SSOT/skills/quality-arsenal.md +180 -0
  368. package/omega/Agentik_SSOT/skills/rag-route.md +9 -0
  369. package/omega/Agentik_SSOT/skills/refontaudit/SKILL.md +165 -0
  370. package/omega/Agentik_SSOT/skills/retentionaudit/SKILL.md +165 -0
  371. package/omega/Agentik_SSOT/skills/secaudit/SKILL.md +157 -0
  372. package/omega/Agentik_SSOT/skills/seoaudit/SKILL.md +161 -0
  373. package/omega/Agentik_SSOT/skills/skill-auditor/SKILL.md +83 -0
  374. package/omega/Agentik_SSOT/skills/skill-finder/SKILL.md +116 -0
  375. package/omega/Agentik_SSOT/skills/uiuxaudit/SKILL.md +165 -0
  376. package/package.json +2 -2
@@ -45,6 +45,17 @@ from omega_engine.educators import (
45
45
  from omega_engine.bus import EventBus
46
46
  from omega_engine.events import Event, EventType
47
47
  from omega_engine.executor import Executor, MissionResult
48
+ from omega_engine.integrations import (
49
+ GraphifyError,
50
+ GraphifyGraphMissing,
51
+ GraphifyNotInstalled,
52
+ GraphifyReport,
53
+ graphify_install_skill,
54
+ graphify_into_rag,
55
+ graphify_load_graph,
56
+ graphify_version,
57
+ is_graphify_installed,
58
+ )
48
59
  from omega_engine.progress import MissionProgress, ProgressTracker
49
60
  from omega_engine.provider import (
50
61
  AgentProvider,
@@ -70,7 +81,65 @@ from omega_engine.rag import (
70
81
  from omega_engine.reducer import IllegalTransition, reduce, reduce_task
71
82
  from omega_engine.router import ModelRouter
72
83
  from omega_engine.store import EventStore, SQLiteStore
84
+ from omega_engine.cadence import (
85
+ CadenceCharter,
86
+ disable_cadence,
87
+ list_cadences,
88
+ remove_cadence,
89
+ schedule_cadence,
90
+ )
91
+ from omega_engine.pursue import PursueResult, pursue
92
+ from omega_engine.webhooks import (
93
+ WebhookRegistry,
94
+ WebhookSpec,
95
+ generate_test_signature,
96
+ handle_webhook,
97
+ load_registry as load_webhook_registry,
98
+ signature_header_for,
99
+ verify_signature,
100
+ )
101
+ from omega_engine.skill_discovery import (
102
+ DiscoveredSkill,
103
+ Marketplace,
104
+ SkillAuditIssue,
105
+ SkillAuditVerdict,
106
+ SkillInstallResult,
107
+ audit_skill_file,
108
+ audit_skill_text,
109
+ discover_skills,
110
+ install_skill_from_github,
111
+ list_curated,
112
+ load_marketplaces,
113
+ )
73
114
  from omega_engine.sync import ClaudeCodeAdapter, SyncEngine
115
+ from omega_engine.done_signal import (
116
+ DoneSignal,
117
+ DoneSignalError,
118
+ attach_audit_to_done,
119
+ done_path,
120
+ read_done,
121
+ session_dir,
122
+ write_done,
123
+ )
124
+ from omega_engine.envelope import (
125
+ DISPATCHER_ROLES,
126
+ EXECUTOR_ROLES,
127
+ EnvelopeContext,
128
+ VERIFIER_ROLES,
129
+ build_envelope,
130
+ )
131
+ from omega_engine.prompts import (
132
+ find_agent_file,
133
+ list_available_agents,
134
+ load_agent_prompt,
135
+ )
136
+ from omega_engine.vault import (
137
+ list_project_vaults,
138
+ vault_init,
139
+ vault_read,
140
+ vault_status,
141
+ vault_write,
142
+ )
74
143
  from omega_engine.task import (
75
144
  TERMINAL,
76
145
  Budget,
@@ -81,8 +150,45 @@ from omega_engine.task import (
81
150
  Trigger,
82
151
  )
83
152
  from omega_engine.tools import Tool, ToolRegistry, install_from_catalog
153
+ from omega_engine.worker import (
154
+ WorkerBrief,
155
+ default_model_for_role,
156
+ list_workers,
157
+ read_brief,
158
+ run_brief,
159
+ spawn_worker,
160
+ wait_for_done,
161
+ worker_status,
162
+ write_brief,
163
+ )
164
+ from omega_engine.cleanup import (
165
+ TierResult,
166
+ cleanup as run_cleanup,
167
+ format_summary as cleanup_summary,
168
+ )
169
+ from omega_engine.skill_routing import (
170
+ POWER_SKILLS,
171
+ catalog_for_home as skill_catalog_for_home,
172
+ format_skill_block,
173
+ recommend as recommend_skills,
174
+ skills_for,
175
+ )
176
+ from omega_engine.genesis import (
177
+ GenesisOrchestrator,
178
+ GenesisState,
179
+ PhaseResult,
180
+ Stack,
181
+ StackConfig,
182
+ StackQuestion,
183
+ init_project as genesis_init_project,
184
+ load_state as genesis_load_state,
185
+ pick_stack,
186
+ project_root as genesis_project_root,
187
+ stack_questions,
188
+ )
189
+ from omega_engine import plan as plan_v7
84
190
 
85
- __version__ = "0.2.0"
191
+ __version__ = "0.19.6"
86
192
 
87
193
  __all__ = [
88
194
  "__version__",
@@ -119,4 +225,44 @@ __all__ = [
119
225
  # tool registry + SSOT → provider sync engine
120
226
  "Tool", "ToolRegistry", "install_from_catalog",
121
227
  "SyncEngine", "ClaudeCodeAdapter",
228
+ # graphify integration — Claude Code skill + graph consumer
229
+ "GraphifyError", "GraphifyGraphMissing", "GraphifyNotInstalled",
230
+ "GraphifyReport",
231
+ "graphify_install_skill", "graphify_into_rag", "graphify_load_graph",
232
+ "graphify_version", "is_graphify_installed",
233
+ # encrypted secrets vault (age if available, chmod 600 fallback)
234
+ "vault_init", "vault_write", "vault_read", "vault_status",
235
+ "list_project_vaults",
236
+ # agent prompt loader (AISB suite + others) + mission envelope
237
+ "load_agent_prompt", "find_agent_file", "list_available_agents",
238
+ "EnvelopeContext", "build_envelope",
239
+ "DISPATCHER_ROLES", "EXECUTOR_ROLES", "VERIFIER_ROLES",
240
+ # worker .done.json — the structured completion signal
241
+ "DoneSignal", "DoneSignalError",
242
+ "write_done", "read_done", "attach_audit_to_done",
243
+ "session_dir", "done_path",
244
+ # Agentik OS native primitives (replace Claude Code /goal and /loop on Max)
245
+ "pursue", "PursueResult",
246
+ "schedule_cadence", "list_cadences", "disable_cadence", "remove_cadence",
247
+ "CadenceCharter",
248
+ # skill discovery + safety audit
249
+ "Marketplace", "load_marketplaces",
250
+ "SkillAuditIssue", "SkillAuditVerdict",
251
+ "audit_skill_file", "audit_skill_text",
252
+ "DiscoveredSkill", "discover_skills", "list_curated",
253
+ "SkillInstallResult", "install_skill_from_github",
254
+ # inbound webhooks — HMAC-signed POSTs that wake autonomous charters
255
+ "WebhookSpec", "WebhookRegistry",
256
+ "load_webhook_registry", "signature_header_for",
257
+ "verify_signature", "handle_webhook", "generate_test_signature",
258
+ # persistent-tmux workers (smart model per role: opus 1M for coding,
259
+ # sonnet for planning, haiku for triage)
260
+ "WorkerBrief", "default_model_for_role",
261
+ "spawn_worker", "run_brief", "worker_status", "wait_for_done",
262
+ "list_workers", "read_brief", "write_brief",
263
+ # OmegaOS-adapted disk cleanup
264
+ "TierResult", "run_cleanup", "cleanup_summary",
265
+ # Role → skills routing (worker brief skill palette)
266
+ "POWER_SKILLS", "skill_catalog_for_home", "format_skill_block",
267
+ "recommend_skills", "skills_for",
122
268
  ]
@@ -282,16 +282,30 @@ def vault_path(omega_home: str | Path, secret_ref: str) -> Path:
282
282
 
283
283
 
284
284
  def read_token(omega_home: str | Path, secret_ref: str) -> str:
285
- """Read the OAuth token from the vault file.
286
-
287
- Format: a tiny dotenv-style file with at least `CLAUDE_OAUTH_TOKEN=<value>`.
288
- The reader is forgiving: it strips quotes, ignores blank lines and `#`
289
- comments, and returns the FIRST value seen for `CLAUDE_OAUTH_TOKEN` (or the
290
- canonical key formed by upper-casing the secret_ref).
285
+ """Read the OAuth token from the vault.
286
+
287
+ Resolution order, first match wins:
288
+ 1. ``vault_read(<secret_ref>_TOKEN)`` the canonical key the new
289
+ ``write_token`` uses. If age is the active backend the read is
290
+ transparently decrypted.
291
+ 2. Legacy dotenv file at ``Agentik_Extra/etc/secrets/<secret_ref>.env``
292
+ with a ``CLAUDE_OAUTH_TOKEN=...`` line. Kept for backward compat
293
+ with installs that pre-date the encrypted vault.
291
294
  """
295
+ # Local import to avoid an import cycle at module load time.
296
+ from omega_engine.vault import vault_read
297
+
298
+ canon = f"{secret_ref}_TOKEN"
299
+ try:
300
+ token = vault_read(omega_home, canon)
301
+ except ValueError:
302
+ token = None
303
+ if token:
304
+ return token.strip()
305
+
292
306
  path = vault_path(omega_home, secret_ref)
293
307
  if not path.exists():
294
- raise FileNotFoundError(f"vault file not found: {path}")
308
+ raise FileNotFoundError(f"vault entry not found for ref {secret_ref!r}")
295
309
  keys = ("CLAUDE_OAUTH_TOKEN", secret_ref.upper())
296
310
  for line in path.read_text().splitlines():
297
311
  s = line.strip()
@@ -309,34 +323,17 @@ def read_token(omega_home: str | Path, secret_ref: str) -> str:
309
323
 
310
324
 
311
325
  def write_token(omega_home: str | Path, secret_ref: str, token: str) -> Path:
312
- """Write the OAuth token to the vault file with mode 600.
326
+ """Write the OAuth token through the vault layer.
313
327
 
314
- Overwrites silently if a file already exists — rotating a token is the
315
- expected use case. Returns the path written.
328
+ Uses ``omega_engine.vault.vault_write``: age-encrypted if the system has
329
+ ``age`` + ``age-keygen``, else mode-600 plaintext. Either way, the file
330
+ is owner-only on disk. Overwrites silently — rotating a token is the
331
+ expected use case. Returns the actual on-disk path written.
316
332
  """
317
333
  if not token or not token.strip():
318
334
  raise ValueError("token must be a non-empty string")
319
- path = vault_path(omega_home, secret_ref)
320
- # Use os.open with O_CREAT|O_WRONLY|O_TRUNC and explicit mode so the file
321
- # is born with 0o600 (no race window during which 0o644 would be visible).
322
- fd = os.open(str(path), os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600)
323
- try:
324
- with os.fdopen(fd, "w") as fh:
325
- fh.write(f"# Omega OS — Claude Max OAuth token for {secret_ref}\n")
326
- fh.write(f"# Written: {time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime())}\n")
327
- fh.write(f"CLAUDE_OAUTH_TOKEN={token.strip()}\n")
328
- finally:
329
- # If fdopen succeeded, fd is closed by the context manager; if it
330
- # raised, the fd is leaked — guard that by attempting a close.
331
- try:
332
- os.close(fd)
333
- except OSError:
334
- pass
335
- # Belt-and-braces: re-assert mode in case some umask oddity sneaked in.
336
- try:
337
- os.chmod(path, stat.S_IRUSR | stat.S_IWUSR) # 0o600
338
- except OSError:
339
- pass
335
+ from omega_engine.vault import vault_write
336
+ return vault_write(omega_home, f"{secret_ref}_TOKEN", token.strip())
340
337
  return path
341
338
 
342
339
 
@@ -0,0 +1,167 @@
1
+ """Worker ↔ Oracle messaging — the missing back-channel.
2
+
3
+ Today a worker writes a single ``.done.json`` and that's it. If it's
4
+ stuck mid-task and needs the oracle's input, it has no way to ask. Then
5
+ either it guesses wrong (and the audit catches it later — wasted work)
6
+ or it gives up early (status=pending — wasted dispatch).
7
+
8
+ This primitive is a small JSON-lines file per task at
9
+ ``Agentik_Runtime/sessions/<task_id>/messages.jsonl``. The worker
10
+ appends a question, the oracle reads, appends an answer, the worker
11
+ polls and continues.
12
+
13
+ The protocol is intentionally minimal — one JSON object per line:
14
+
15
+ ``{from, to, ts, type, text}``
16
+
17
+ ``type`` is one of:
18
+
19
+ * ``question`` — worker asks the oracle
20
+ * ``answer`` — oracle's reply
21
+ * ``proposal`` — worker proposes a course change
22
+ * ``decision`` — oracle says yes/no/pivot
23
+
24
+ Polling is the operator's choice — the worker can ``read_messages``
25
+ between Bash/Edit iterations. For long-running missions the oracle's
26
+ session can sit in ``omega message wait <task_id>`` to surface
27
+ questions as they arrive.
28
+ """
29
+ from __future__ import annotations
30
+
31
+ import json
32
+ import os
33
+ import time
34
+ from dataclasses import dataclass, field
35
+ from pathlib import Path
36
+
37
+
38
+ VALID_TYPES = {"question", "answer", "proposal", "decision"}
39
+
40
+
41
+ @dataclass
42
+ class Message:
43
+ from_: str
44
+ to: str
45
+ type: str
46
+ text: str
47
+ ts: int = field(default_factory=lambda: int(time.time()))
48
+
49
+
50
+ def _msg_path(omega_home: str | Path, task_id: str) -> Path:
51
+ home = Path(omega_home)
52
+ p = home / "Agentik_Runtime" / "sessions" / task_id / "messages.jsonl"
53
+ p.parent.mkdir(parents=True, exist_ok=True)
54
+ return p
55
+
56
+
57
+ def send(
58
+ omega_home: str | Path,
59
+ task_id: str,
60
+ *,
61
+ from_: str,
62
+ to: str,
63
+ type: str,
64
+ text: str,
65
+ ) -> Message:
66
+ """Append one message to the per-task JSONL. Returns the persisted Message."""
67
+ if type not in VALID_TYPES:
68
+ raise ValueError(f"type must be one of {VALID_TYPES}, got {type!r}")
69
+ msg = Message(from_=from_, to=to, type=type, text=text)
70
+ p = _msg_path(omega_home, task_id)
71
+ with p.open("a") as fh:
72
+ fh.write(json.dumps({
73
+ "from": msg.from_, "to": msg.to,
74
+ "type": msg.type, "text": msg.text,
75
+ "ts": msg.ts,
76
+ }) + "\n")
77
+ return msg
78
+
79
+
80
+ def read(
81
+ omega_home: str | Path, task_id: str,
82
+ *,
83
+ since_ts: int = 0,
84
+ for_recipient: str | None = None,
85
+ ) -> list[Message]:
86
+ """Read messages for a task. Returns oldest-first."""
87
+ p = _msg_path(omega_home, task_id)
88
+ if not p.exists():
89
+ return []
90
+ out: list[Message] = []
91
+ for line in p.read_text().splitlines():
92
+ if not line.strip():
93
+ continue
94
+ try:
95
+ data = json.loads(line)
96
+ except json.JSONDecodeError:
97
+ continue
98
+ if int(data.get("ts", 0)) < since_ts:
99
+ continue
100
+ if for_recipient and data.get("to") != for_recipient:
101
+ continue
102
+ out.append(Message(
103
+ from_=str(data.get("from", "?")),
104
+ to=str(data.get("to", "?")),
105
+ type=str(data.get("type", "question")),
106
+ text=str(data.get("text", "")),
107
+ ts=int(data.get("ts", 0)),
108
+ ))
109
+ return out
110
+
111
+
112
+ def wait_for_reply(
113
+ omega_home: str | Path,
114
+ task_id: str,
115
+ *,
116
+ for_recipient: str,
117
+ since_ts: int | None = None,
118
+ timeout_s: int = 600,
119
+ poll_interval_s: int = 5,
120
+ ) -> Message | None:
121
+ """Block until a message addressed to ``for_recipient`` arrives or timeout.
122
+
123
+ Use case: the worker asks a question, then waits for the oracle's
124
+ answer before continuing. Returns the new message, or None on
125
+ timeout.
126
+ """
127
+ since_ts = since_ts if since_ts is not None else int(time.time())
128
+ end = time.time() + timeout_s
129
+ while time.time() < end:
130
+ msgs = read(omega_home, task_id, since_ts=since_ts,
131
+ for_recipient=for_recipient)
132
+ if msgs:
133
+ return msgs[0]
134
+ time.sleep(poll_interval_s)
135
+ return None
136
+
137
+
138
+ def list_open_questions(
139
+ omega_home: str | Path,
140
+ ) -> list[tuple[str, Message]]:
141
+ """Scan every per-task messages.jsonl for unanswered questions.
142
+
143
+ A "question" is unanswered when no later message of type=answer
144
+ addresses the same conversation. Returns (task_id, question_msg)
145
+ pairs sorted oldest first.
146
+ """
147
+ home = Path(omega_home)
148
+ sess = home / "Agentik_Runtime" / "sessions"
149
+ if not sess.is_dir():
150
+ return []
151
+ open_qs: list[tuple[str, Message]] = []
152
+ for child in sess.iterdir():
153
+ if not child.is_dir():
154
+ continue
155
+ p = child / "messages.jsonl"
156
+ if not p.exists():
157
+ continue
158
+ msgs = read(home, child.name)
159
+ # Questions whose ts is later than the latest answer in the same file
160
+ latest_answer = max(
161
+ (m.ts for m in msgs if m.type == "answer"), default=0,
162
+ )
163
+ for m in msgs:
164
+ if m.type == "question" and m.ts > latest_answer:
165
+ open_qs.append((child.name, m))
166
+ open_qs.sort(key=lambda pair: pair[1].ts)
167
+ return open_qs