arkaos 4.14.1 → 4.14.3

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 (470) hide show
  1. package/README.md +25 -3
  2. package/VERSION +1 -1
  3. package/config/agent-roster.json +36 -0
  4. package/core/agents/roster_manifest.py +114 -0
  5. package/installer/skill-deploy.js +41 -6
  6. package/knowledge/skills-manifest.json +1 -1
  7. package/package.json +5 -2
  8. package/pyproject.toml +1 -1
  9. package/core/__pycache__/__init__.cpython-312.pyc +0 -0
  10. package/core/__pycache__/__init__.cpython-313.pyc +0 -0
  11. package/core/__pycache__/__init__.cpython-314.pyc +0 -0
  12. package/core/__pycache__/favorites.cpython-313.pyc +0 -0
  13. package/core/__pycache__/keys.cpython-313.pyc +0 -0
  14. package/core/__pycache__/trash.cpython-313.pyc +0 -0
  15. package/core/agents/__pycache__/__init__.cpython-312.pyc +0 -0
  16. package/core/agents/__pycache__/__init__.cpython-313.pyc +0 -0
  17. package/core/agents/__pycache__/behavior_enforcer.cpython-313.pyc +0 -0
  18. package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
  19. package/core/agents/__pycache__/dna_registry.cpython-313.pyc +0 -0
  20. package/core/agents/__pycache__/draft_builder.cpython-313.pyc +0 -0
  21. package/core/agents/__pycache__/field_suggester.cpython-313.pyc +0 -0
  22. package/core/agents/__pycache__/loader.cpython-312.pyc +0 -0
  23. package/core/agents/__pycache__/loader.cpython-313.pyc +0 -0
  24. package/core/agents/__pycache__/obsidian_export.cpython-313.pyc +0 -0
  25. package/core/agents/__pycache__/registry_gen.cpython-313.pyc +0 -0
  26. package/core/agents/__pycache__/schema.cpython-312.pyc +0 -0
  27. package/core/agents/__pycache__/schema.cpython-313.pyc +0 -0
  28. package/core/agents/__pycache__/string_suggester.cpython-313.pyc +0 -0
  29. package/core/agents/__pycache__/validator.cpython-313.pyc +0 -0
  30. package/core/agents/adapters/__pycache__/disc_adapter.cpython-313.pyc +0 -0
  31. package/core/budget/__pycache__/__init__.cpython-313.pyc +0 -0
  32. package/core/budget/__pycache__/__init__.cpython-314.pyc +0 -0
  33. package/core/budget/__pycache__/manager.cpython-313.pyc +0 -0
  34. package/core/budget/__pycache__/manager.cpython-314.pyc +0 -0
  35. package/core/budget/__pycache__/schema.cpython-313.pyc +0 -0
  36. package/core/budget/__pycache__/schema.cpython-314.pyc +0 -0
  37. package/core/cognition/__pycache__/__init__.cpython-312.pyc +0 -0
  38. package/core/cognition/__pycache__/__init__.cpython-313.pyc +0 -0
  39. package/core/cognition/__pycache__/auto_documentor.cpython-313.pyc +0 -0
  40. package/core/cognition/__pycache__/dreaming.cpython-313.pyc +0 -0
  41. package/core/cognition/__pycache__/dreams_reader.cpython-313.pyc +0 -0
  42. package/core/cognition/__pycache__/reorganizer.cpython-313.pyc +0 -0
  43. package/core/cognition/__pycache__/reorganizer_cli.cpython-313.pyc +0 -0
  44. package/core/cognition/__pycache__/reorganizer_scheduler.cpython-313.pyc +0 -0
  45. package/core/cognition/__pycache__/retrieval.cpython-312.pyc +0 -0
  46. package/core/cognition/__pycache__/retrieval.cpython-313.pyc +0 -0
  47. package/core/cognition/capture/__pycache__/__init__.cpython-312.pyc +0 -0
  48. package/core/cognition/capture/__pycache__/__init__.cpython-313.pyc +0 -0
  49. package/core/cognition/capture/__pycache__/collector.cpython-313.pyc +0 -0
  50. package/core/cognition/capture/__pycache__/store.cpython-312.pyc +0 -0
  51. package/core/cognition/capture/__pycache__/store.cpython-313.pyc +0 -0
  52. package/core/cognition/insights/__pycache__/__init__.cpython-312.pyc +0 -0
  53. package/core/cognition/insights/__pycache__/__init__.cpython-313.pyc +0 -0
  54. package/core/cognition/insights/__pycache__/store.cpython-312.pyc +0 -0
  55. package/core/cognition/insights/__pycache__/store.cpython-313.pyc +0 -0
  56. package/core/cognition/memory/__pycache__/__init__.cpython-312.pyc +0 -0
  57. package/core/cognition/memory/__pycache__/__init__.cpython-313.pyc +0 -0
  58. package/core/cognition/memory/__pycache__/obsidian.cpython-312.pyc +0 -0
  59. package/core/cognition/memory/__pycache__/obsidian.cpython-313.pyc +0 -0
  60. package/core/cognition/memory/__pycache__/schemas.cpython-312.pyc +0 -0
  61. package/core/cognition/memory/__pycache__/schemas.cpython-313.pyc +0 -0
  62. package/core/cognition/memory/__pycache__/vector.cpython-312.pyc +0 -0
  63. package/core/cognition/memory/__pycache__/vector.cpython-313.pyc +0 -0
  64. package/core/cognition/memory/__pycache__/writer.cpython-312.pyc +0 -0
  65. package/core/cognition/memory/__pycache__/writer.cpython-313.pyc +0 -0
  66. package/core/cognition/research/__pycache__/__init__.cpython-313.pyc +0 -0
  67. package/core/cognition/research/__pycache__/profiler.cpython-313.pyc +0 -0
  68. package/core/cognition/scheduler/__pycache__/__init__.cpython-313.pyc +0 -0
  69. package/core/cognition/scheduler/__pycache__/cli.cpython-313.pyc +0 -0
  70. package/core/cognition/scheduler/__pycache__/daemon.cpython-313.pyc +0 -0
  71. package/core/cognition/scheduler/__pycache__/platform.cpython-313.pyc +0 -0
  72. package/core/conclave/__pycache__/__init__.cpython-313.pyc +0 -0
  73. package/core/conclave/__pycache__/advisor_db.cpython-313.pyc +0 -0
  74. package/core/conclave/__pycache__/display.cpython-313.pyc +0 -0
  75. package/core/conclave/__pycache__/matcher.cpython-313.pyc +0 -0
  76. package/core/conclave/__pycache__/persistence.cpython-313.pyc +0 -0
  77. package/core/conclave/__pycache__/profiler.cpython-313.pyc +0 -0
  78. package/core/conclave/__pycache__/prompts.cpython-313.pyc +0 -0
  79. package/core/conclave/__pycache__/schema.cpython-313.pyc +0 -0
  80. package/core/evals/__pycache__/__init__.cpython-313.pyc +0 -0
  81. package/core/evals/__pycache__/__init__.cpython-314.pyc +0 -0
  82. package/core/evals/__pycache__/record_cli.cpython-313.pyc +0 -0
  83. package/core/evals/__pycache__/runner_cli.cpython-313.pyc +0 -0
  84. package/core/evals/__pycache__/sanitizer.cpython-313.pyc +0 -0
  85. package/core/evals/__pycache__/sanitizer.cpython-314.pyc +0 -0
  86. package/core/evals/__pycache__/schema.cpython-313.pyc +0 -0
  87. package/core/evals/__pycache__/schema.cpython-314.pyc +0 -0
  88. package/core/evals/__pycache__/verdict_labels.cpython-313.pyc +0 -0
  89. package/core/evals/__pycache__/verdict_labels.cpython-314.pyc +0 -0
  90. package/core/forge/__pycache__/__init__.cpython-313.pyc +0 -0
  91. package/core/forge/__pycache__/__init__.cpython-314.pyc +0 -0
  92. package/core/forge/__pycache__/complexity.cpython-313.pyc +0 -0
  93. package/core/forge/__pycache__/complexity.cpython-314.pyc +0 -0
  94. package/core/forge/__pycache__/handoff.cpython-313.pyc +0 -0
  95. package/core/forge/__pycache__/handoff.cpython-314.pyc +0 -0
  96. package/core/forge/__pycache__/orchestrator.cpython-313.pyc +0 -0
  97. package/core/forge/__pycache__/orchestrator.cpython-314.pyc +0 -0
  98. package/core/forge/__pycache__/persistence.cpython-313.pyc +0 -0
  99. package/core/forge/__pycache__/persistence.cpython-314.pyc +0 -0
  100. package/core/forge/__pycache__/renderer.cpython-313.pyc +0 -0
  101. package/core/forge/__pycache__/renderer.cpython-314.pyc +0 -0
  102. package/core/forge/__pycache__/runtime_dispatcher.cpython-313.pyc +0 -0
  103. package/core/forge/__pycache__/runtime_dispatcher.cpython-314.pyc +0 -0
  104. package/core/forge/__pycache__/schema.cpython-313.pyc +0 -0
  105. package/core/forge/__pycache__/schema.cpython-314.pyc +0 -0
  106. package/core/fusion/__pycache__/__init__.cpython-313.pyc +0 -0
  107. package/core/fusion/__pycache__/cli.cpython-313.pyc +0 -0
  108. package/core/fusion/__pycache__/engine.cpython-313.pyc +0 -0
  109. package/core/fusion/__pycache__/panel_builder.cpython-313.pyc +0 -0
  110. package/core/governance/__pycache__/__init__.cpython-312.pyc +0 -0
  111. package/core/governance/__pycache__/__init__.cpython-313.pyc +0 -0
  112. package/core/governance/__pycache__/__init__.cpython-314.pyc +0 -0
  113. package/core/governance/__pycache__/activation_tracker.cpython-313.pyc +0 -0
  114. package/core/governance/__pycache__/agent_activation_cli.cpython-313.pyc +0 -0
  115. package/core/governance/__pycache__/agent_experiences.cpython-313.pyc +0 -0
  116. package/core/governance/__pycache__/agent_experiences.cpython-314.pyc +0 -0
  117. package/core/governance/__pycache__/agent_experiences_cli.cpython-313.pyc +0 -0
  118. package/core/governance/__pycache__/closing_marker_check.cpython-313.pyc +0 -0
  119. package/core/governance/__pycache__/closing_marker_check.cpython-314.pyc +0 -0
  120. package/core/governance/__pycache__/compliance_telemetry.cpython-313.pyc +0 -0
  121. package/core/governance/__pycache__/compliance_telemetry_cli.cpython-313.pyc +0 -0
  122. package/core/governance/__pycache__/constitution.cpython-312.pyc +0 -0
  123. package/core/governance/__pycache__/constitution.cpython-313.pyc +0 -0
  124. package/core/governance/__pycache__/constitution.cpython-314.pyc +0 -0
  125. package/core/governance/__pycache__/cqo_experience_recorder.cpython-313.pyc +0 -0
  126. package/core/governance/__pycache__/design_system_lint.cpython-313.pyc +0 -0
  127. package/core/governance/__pycache__/design_system_lint_cli.cpython-313.pyc +0 -0
  128. package/core/governance/__pycache__/dna_fidelity.cpython-313.pyc +0 -0
  129. package/core/governance/__pycache__/dna_fidelity_cli.cpython-313.pyc +0 -0
  130. package/core/governance/__pycache__/dod_gate.cpython-313.pyc +0 -0
  131. package/core/governance/__pycache__/enforcement_telemetry.cpython-313.pyc +0 -0
  132. package/core/governance/__pycache__/enforcement_telemetry_cli.cpython-313.pyc +0 -0
  133. package/core/governance/__pycache__/evidence_checks.cpython-313.pyc +0 -0
  134. package/core/governance/__pycache__/judge.cpython-313.pyc +0 -0
  135. package/core/governance/__pycache__/judge.cpython-314.pyc +0 -0
  136. package/core/governance/__pycache__/kb_cite_check.cpython-313.pyc +0 -0
  137. package/core/governance/__pycache__/kb_cite_check.cpython-314.pyc +0 -0
  138. package/core/governance/__pycache__/leak_scanner.cpython-313.pyc +0 -0
  139. package/core/governance/__pycache__/leak_scanner.cpython-314.pyc +0 -0
  140. package/core/governance/__pycache__/learning_detector.cpython-313.pyc +0 -0
  141. package/core/governance/__pycache__/meta_tag_check.cpython-313.pyc +0 -0
  142. package/core/governance/__pycache__/meta_tag_check.cpython-314.pyc +0 -0
  143. package/core/governance/__pycache__/phantom_action_check.cpython-313.pyc +0 -0
  144. package/core/governance/__pycache__/phantom_action_check.cpython-314.pyc +0 -0
  145. package/core/governance/__pycache__/qg_verdict.cpython-313.pyc +0 -0
  146. package/core/governance/__pycache__/qg_verdict.cpython-314.pyc +0 -0
  147. package/core/governance/__pycache__/quality_api.cpython-313.pyc +0 -0
  148. package/core/governance/__pycache__/quality_api.cpython-314.pyc +0 -0
  149. package/core/governance/__pycache__/quality_router.cpython-313.pyc +0 -0
  150. package/core/governance/__pycache__/quality_router.cpython-314.pyc +0 -0
  151. package/core/governance/__pycache__/redo_counter.cpython-313.pyc +0 -0
  152. package/core/governance/__pycache__/review_workflow.cpython-313.pyc +0 -0
  153. package/core/governance/__pycache__/review_workflow.cpython-314.pyc +0 -0
  154. package/core/governance/__pycache__/routing_feedback.cpython-313.pyc +0 -0
  155. package/core/governance/__pycache__/routing_feedback.cpython-314.pyc +0 -0
  156. package/core/governance/__pycache__/routing_feedback_cli.cpython-313.pyc +0 -0
  157. package/core/governance/__pycache__/skill_proposer.cpython-313.pyc +0 -0
  158. package/core/governance/__pycache__/skill_proposer.cpython-314.pyc +0 -0
  159. package/core/governance/__pycache__/specialist_telemetry.cpython-313.pyc +0 -0
  160. package/core/governance/__pycache__/specialist_telemetry_cli.cpython-313.pyc +0 -0
  161. package/core/governance/__pycache__/sycophancy_detector.cpython-313.pyc +0 -0
  162. package/core/governance/__pycache__/sycophancy_detector.cpython-314.pyc +0 -0
  163. package/core/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
  164. package/core/hooks/__pycache__/__init__.cpython-313.pyc +0 -0
  165. package/core/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
  166. package/core/hooks/__pycache__/_shared.cpython-312.pyc +0 -0
  167. package/core/hooks/__pycache__/_shared.cpython-313.pyc +0 -0
  168. package/core/hooks/__pycache__/_shared.cpython-314.pyc +0 -0
  169. package/core/hooks/__pycache__/gate_manifest.cpython-313.pyc +0 -0
  170. package/core/hooks/__pycache__/post_tool_use.cpython-312.pyc +0 -0
  171. package/core/hooks/__pycache__/post_tool_use.cpython-313.pyc +0 -0
  172. package/core/hooks/__pycache__/pre_tool_use.cpython-312.pyc +0 -0
  173. package/core/hooks/__pycache__/pre_tool_use.cpython-313.pyc +0 -0
  174. package/core/hooks/__pycache__/pre_tool_use.cpython-314.pyc +0 -0
  175. package/core/hooks/__pycache__/session_end.cpython-313.pyc +0 -0
  176. package/core/hooks/__pycache__/session_start.cpython-312.pyc +0 -0
  177. package/core/hooks/__pycache__/session_start.cpython-313.pyc +0 -0
  178. package/core/hooks/__pycache__/stop.cpython-312.pyc +0 -0
  179. package/core/hooks/__pycache__/stop.cpython-313.pyc +0 -0
  180. package/core/hooks/__pycache__/stop.cpython-314.pyc +0 -0
  181. package/core/hooks/__pycache__/subagent_stop.cpython-313.pyc +0 -0
  182. package/core/hooks/__pycache__/subagent_stop.cpython-314.pyc +0 -0
  183. package/core/hooks/__pycache__/user_prompt_submit.cpython-312.pyc +0 -0
  184. package/core/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
  185. package/core/hooks/__pycache__/user_prompt_submit.cpython-314.pyc +0 -0
  186. package/core/jobs/__pycache__/__init__.cpython-312.pyc +0 -0
  187. package/core/jobs/__pycache__/__init__.cpython-313.pyc +0 -0
  188. package/core/jobs/__pycache__/__init__.cpython-314.pyc +0 -0
  189. package/core/jobs/__pycache__/auto_doc_worker.cpython-312.pyc +0 -0
  190. package/core/jobs/__pycache__/auto_doc_worker.cpython-313.pyc +0 -0
  191. package/core/jobs/__pycache__/auto_doc_worker.cpython-314.pyc +0 -0
  192. package/core/jobs/__pycache__/manager.cpython-312.pyc +0 -0
  193. package/core/jobs/__pycache__/manager.cpython-313.pyc +0 -0
  194. package/core/jobs/__pycache__/manager.cpython-314.pyc +0 -0
  195. package/core/knowledge/__pycache__/__init__.cpython-312.pyc +0 -0
  196. package/core/knowledge/__pycache__/__init__.cpython-313.pyc +0 -0
  197. package/core/knowledge/__pycache__/__init__.cpython-314.pyc +0 -0
  198. package/core/knowledge/__pycache__/agent_match.cpython-313.pyc +0 -0
  199. package/core/knowledge/__pycache__/chunker.cpython-312.pyc +0 -0
  200. package/core/knowledge/__pycache__/chunker.cpython-313.pyc +0 -0
  201. package/core/knowledge/__pycache__/chunker.cpython-314.pyc +0 -0
  202. package/core/knowledge/__pycache__/embedder.cpython-312.pyc +0 -0
  203. package/core/knowledge/__pycache__/embedder.cpython-313.pyc +0 -0
  204. package/core/knowledge/__pycache__/embedder.cpython-314.pyc +0 -0
  205. package/core/knowledge/__pycache__/embedding_backends.cpython-313.pyc +0 -0
  206. package/core/knowledge/__pycache__/embedding_backends.cpython-314.pyc +0 -0
  207. package/core/knowledge/__pycache__/indexer.cpython-313.pyc +0 -0
  208. package/core/knowledge/__pycache__/ingest.cpython-313.pyc +0 -0
  209. package/core/knowledge/__pycache__/pattern_cards.cpython-313.pyc +0 -0
  210. package/core/knowledge/__pycache__/pattern_cards.cpython-314.pyc +0 -0
  211. package/core/knowledge/__pycache__/pattern_cards_cli.cpython-313.pyc +0 -0
  212. package/core/knowledge/__pycache__/recipes.cpython-313.pyc +0 -0
  213. package/core/knowledge/__pycache__/recipes.cpython-314.pyc +0 -0
  214. package/core/knowledge/__pycache__/recipes_cli.cpython-313.pyc +0 -0
  215. package/core/knowledge/__pycache__/sources.cpython-313.pyc +0 -0
  216. package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
  217. package/core/knowledge/__pycache__/vector_store.cpython-313.pyc +0 -0
  218. package/core/knowledge/__pycache__/vector_store.cpython-314.pyc +0 -0
  219. package/core/memory/__pycache__/compressor.cpython-313.pyc +0 -0
  220. package/core/memory/__pycache__/rehydrator.cpython-312.pyc +0 -0
  221. package/core/memory/__pycache__/rehydrator.cpython-313.pyc +0 -0
  222. package/core/memory/__pycache__/rehydrator.cpython-314.pyc +0 -0
  223. package/core/memory/__pycache__/semantic_store.cpython-312.pyc +0 -0
  224. package/core/memory/__pycache__/semantic_store.cpython-313.pyc +0 -0
  225. package/core/memory/__pycache__/semantic_store.cpython-314.pyc +0 -0
  226. package/core/memory/__pycache__/session_store.cpython-312.pyc +0 -0
  227. package/core/memory/__pycache__/session_store.cpython-313.pyc +0 -0
  228. package/core/memory/__pycache__/session_store.cpython-314.pyc +0 -0
  229. package/core/memory/__pycache__/turn_capture.cpython-313.pyc +0 -0
  230. package/core/memory/__pycache__/turn_capture.cpython-314.pyc +0 -0
  231. package/core/obsidian/__pycache__/__init__.cpython-313.pyc +0 -0
  232. package/core/obsidian/__pycache__/cataloger.cpython-313.pyc +0 -0
  233. package/core/obsidian/__pycache__/relator.cpython-313.pyc +0 -0
  234. package/core/obsidian/__pycache__/taxonomy.cpython-313.pyc +0 -0
  235. package/core/obsidian/__pycache__/templates.cpython-313.pyc +0 -0
  236. package/core/obsidian/__pycache__/writer.cpython-313.pyc +0 -0
  237. package/core/orchestration/__pycache__/__init__.cpython-313.pyc +0 -0
  238. package/core/orchestration/__pycache__/checkpoint.cpython-313.pyc +0 -0
  239. package/core/orchestration/__pycache__/patterns.cpython-313.pyc +0 -0
  240. package/core/orchestration/__pycache__/protocol.cpython-313.pyc +0 -0
  241. package/core/personas/__pycache__/__init__.cpython-313.pyc +0 -0
  242. package/core/personas/__pycache__/archetypes.cpython-313.pyc +0 -0
  243. package/core/personas/__pycache__/builder.cpython-313.pyc +0 -0
  244. package/core/personas/__pycache__/description_drafter.cpython-313.pyc +0 -0
  245. package/core/personas/__pycache__/manager.cpython-313.pyc +0 -0
  246. package/core/personas/__pycache__/obsidian_store.cpython-313.pyc +0 -0
  247. package/core/personas/__pycache__/schema.cpython-313.pyc +0 -0
  248. package/core/profile/__pycache__/__init__.cpython-313.pyc +0 -0
  249. package/core/profile/__pycache__/manager.cpython-313.pyc +0 -0
  250. package/core/registry/__pycache__/__init__.cpython-312.pyc +0 -0
  251. package/core/registry/__pycache__/__init__.cpython-313.pyc +0 -0
  252. package/core/registry/__pycache__/generator.cpython-312.pyc +0 -0
  253. package/core/registry/__pycache__/generator.cpython-313.pyc +0 -0
  254. package/core/release/__pycache__/__init__.cpython-313.pyc +0 -0
  255. package/core/release/__pycache__/preflight.cpython-313.pyc +0 -0
  256. package/core/release/__pycache__/preflight_cli.cpython-313.pyc +0 -0
  257. package/core/runtime/__pycache__/__init__.cpython-312.pyc +0 -0
  258. package/core/runtime/__pycache__/__init__.cpython-313.pyc +0 -0
  259. package/core/runtime/__pycache__/__init__.cpython-314.pyc +0 -0
  260. package/core/runtime/__pycache__/base.cpython-312.pyc +0 -0
  261. package/core/runtime/__pycache__/base.cpython-313.pyc +0 -0
  262. package/core/runtime/__pycache__/base.cpython-314.pyc +0 -0
  263. package/core/runtime/__pycache__/capabilities_cli.cpython-312.pyc +0 -0
  264. package/core/runtime/__pycache__/capabilities_cli.cpython-313.pyc +0 -0
  265. package/core/runtime/__pycache__/claude_code.cpython-312.pyc +0 -0
  266. package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
  267. package/core/runtime/__pycache__/claude_code.cpython-314.pyc +0 -0
  268. package/core/runtime/__pycache__/codex_cli.cpython-312.pyc +0 -0
  269. package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
  270. package/core/runtime/__pycache__/codex_cli.cpython-314.pyc +0 -0
  271. package/core/runtime/__pycache__/context_compactor.cpython-313.pyc +0 -0
  272. package/core/runtime/__pycache__/cost_governor.cpython-312.pyc +0 -0
  273. package/core/runtime/__pycache__/cost_governor.cpython-313.pyc +0 -0
  274. package/core/runtime/__pycache__/cost_governor.cpython-314.pyc +0 -0
  275. package/core/runtime/__pycache__/cursor.cpython-312.pyc +0 -0
  276. package/core/runtime/__pycache__/cursor.cpython-313.pyc +0 -0
  277. package/core/runtime/__pycache__/cursor.cpython-314.pyc +0 -0
  278. package/core/runtime/__pycache__/gemini_cli.cpython-312.pyc +0 -0
  279. package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
  280. package/core/runtime/__pycache__/gemini_cli.cpython-314.pyc +0 -0
  281. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-312.pyc +0 -0
  282. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-313.pyc +0 -0
  283. package/core/runtime/__pycache__/llm_cost_telemetry.cpython-314.pyc +0 -0
  284. package/core/runtime/__pycache__/llm_cost_telemetry_cli.cpython-313.pyc +0 -0
  285. package/core/runtime/__pycache__/llm_provider.cpython-312.pyc +0 -0
  286. package/core/runtime/__pycache__/llm_provider.cpython-313.pyc +0 -0
  287. package/core/runtime/__pycache__/llm_provider.cpython-314.pyc +0 -0
  288. package/core/runtime/__pycache__/llm_retry.cpython-312.pyc +0 -0
  289. package/core/runtime/__pycache__/llm_retry.cpython-313.pyc +0 -0
  290. package/core/runtime/__pycache__/llm_retry.cpython-314.pyc +0 -0
  291. package/core/runtime/__pycache__/mcp_telemetry.cpython-312.pyc +0 -0
  292. package/core/runtime/__pycache__/mcp_telemetry.cpython-313.pyc +0 -0
  293. package/core/runtime/__pycache__/mcp_telemetry_cli.cpython-313.pyc +0 -0
  294. package/core/runtime/__pycache__/model_router.cpython-312.pyc +0 -0
  295. package/core/runtime/__pycache__/model_router.cpython-313.pyc +0 -0
  296. package/core/runtime/__pycache__/model_router.cpython-314.pyc +0 -0
  297. package/core/runtime/__pycache__/model_router_cli.cpython-313.pyc +0 -0
  298. package/core/runtime/__pycache__/model_routing_check.cpython-313.pyc +0 -0
  299. package/core/runtime/__pycache__/model_routing_context.cpython-313.pyc +0 -0
  300. package/core/runtime/__pycache__/native_usage.cpython-312.pyc +0 -0
  301. package/core/runtime/__pycache__/native_usage.cpython-313.pyc +0 -0
  302. package/core/runtime/__pycache__/native_usage.cpython-314.pyc +0 -0
  303. package/core/runtime/__pycache__/ollama_discovery.cpython-313.pyc +0 -0
  304. package/core/runtime/__pycache__/ollama_provider.cpython-312.pyc +0 -0
  305. package/core/runtime/__pycache__/ollama_provider.cpython-313.pyc +0 -0
  306. package/core/runtime/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  307. package/core/runtime/__pycache__/openrouter_provider.cpython-312.pyc +0 -0
  308. package/core/runtime/__pycache__/openrouter_provider.cpython-313.pyc +0 -0
  309. package/core/runtime/__pycache__/openrouter_provider.cpython-314.pyc +0 -0
  310. package/core/runtime/__pycache__/path_resolver.cpython-312.pyc +0 -0
  311. package/core/runtime/__pycache__/path_resolver.cpython-313.pyc +0 -0
  312. package/core/runtime/__pycache__/pricing.cpython-312.pyc +0 -0
  313. package/core/runtime/__pycache__/pricing.cpython-313.pyc +0 -0
  314. package/core/runtime/__pycache__/pricing.cpython-314.pyc +0 -0
  315. package/core/runtime/__pycache__/registry.cpython-312.pyc +0 -0
  316. package/core/runtime/__pycache__/registry.cpython-313.pyc +0 -0
  317. package/core/runtime/__pycache__/registry.cpython-314.pyc +0 -0
  318. package/core/runtime/__pycache__/runtime_models.cpython-313.pyc +0 -0
  319. package/core/runtime/__pycache__/squad_orchestrator.cpython-312.pyc +0 -0
  320. package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
  321. package/core/runtime/__pycache__/user_paths.cpython-312.pyc +0 -0
  322. package/core/runtime/__pycache__/user_paths.cpython-313.pyc +0 -0
  323. package/core/runtime/gateway/__pycache__/__init__.cpython-312.pyc +0 -0
  324. package/core/runtime/gateway/__pycache__/__init__.cpython-313.pyc +0 -0
  325. package/core/runtime/gateway/__pycache__/__init__.cpython-314.pyc +0 -0
  326. package/core/runtime/gateway/__pycache__/__main__.cpython-313.pyc +0 -0
  327. package/core/runtime/gateway/__pycache__/litellm_config.cpython-312.pyc +0 -0
  328. package/core/runtime/gateway/__pycache__/litellm_config.cpython-313.pyc +0 -0
  329. package/core/runtime/gateway/__pycache__/litellm_config.cpython-314.pyc +0 -0
  330. package/core/shared/__pycache__/__init__.cpython-312.pyc +0 -0
  331. package/core/shared/__pycache__/__init__.cpython-313.pyc +0 -0
  332. package/core/shared/__pycache__/__init__.cpython-314.pyc +0 -0
  333. package/core/shared/__pycache__/decay.cpython-313.pyc +0 -0
  334. package/core/shared/__pycache__/decay.cpython-314.pyc +0 -0
  335. package/core/shared/__pycache__/safe_session_id.cpython-312.pyc +0 -0
  336. package/core/shared/__pycache__/safe_session_id.cpython-313.pyc +0 -0
  337. package/core/shared/__pycache__/safe_session_id.cpython-314.pyc +0 -0
  338. package/core/shared/__pycache__/sqlite_recovery.cpython-312.pyc +0 -0
  339. package/core/shared/__pycache__/sqlite_recovery.cpython-313.pyc +0 -0
  340. package/core/shared/__pycache__/sqlite_recovery.cpython-314.pyc +0 -0
  341. package/core/shared/__pycache__/temp_paths.cpython-312.pyc +0 -0
  342. package/core/shared/__pycache__/temp_paths.cpython-313.pyc +0 -0
  343. package/core/shared/__pycache__/temp_paths.cpython-314.pyc +0 -0
  344. package/core/shared/__pycache__/test_evidence.cpython-313-pytest-9.1.1.pyc +0 -0
  345. package/core/shared/__pycache__/test_evidence.cpython-313.pyc +0 -0
  346. package/core/specs/__pycache__/__init__.cpython-313.pyc +0 -0
  347. package/core/specs/__pycache__/manager.cpython-313.pyc +0 -0
  348. package/core/specs/__pycache__/schema.cpython-313.pyc +0 -0
  349. package/core/squads/__pycache__/__init__.cpython-313.pyc +0 -0
  350. package/core/squads/__pycache__/loader.cpython-313.pyc +0 -0
  351. package/core/squads/__pycache__/registry.cpython-313.pyc +0 -0
  352. package/core/squads/__pycache__/schema.cpython-313.pyc +0 -0
  353. package/core/synapse/__pycache__/__init__.cpython-312.pyc +0 -0
  354. package/core/synapse/__pycache__/__init__.cpython-313.pyc +0 -0
  355. package/core/synapse/__pycache__/__init__.cpython-314.pyc +0 -0
  356. package/core/synapse/__pycache__/agent_experiences_layer.cpython-312.pyc +0 -0
  357. package/core/synapse/__pycache__/agent_experiences_layer.cpython-313.pyc +0 -0
  358. package/core/synapse/__pycache__/agent_experiences_layer.cpython-314.pyc +0 -0
  359. package/core/synapse/__pycache__/cache.cpython-312.pyc +0 -0
  360. package/core/synapse/__pycache__/cache.cpython-313.pyc +0 -0
  361. package/core/synapse/__pycache__/cache.cpython-314.pyc +0 -0
  362. package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
  363. package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
  364. package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
  365. package/core/synapse/__pycache__/graph_context_layer.cpython-313.pyc +0 -0
  366. package/core/synapse/__pycache__/graph_context_layer.cpython-314.pyc +0 -0
  367. package/core/synapse/__pycache__/kb_cache.cpython-312.pyc +0 -0
  368. package/core/synapse/__pycache__/kb_cache.cpython-313.pyc +0 -0
  369. package/core/synapse/__pycache__/kb_cache.cpython-314.pyc +0 -0
  370. package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
  371. package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
  372. package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
  373. package/core/synapse/__pycache__/pattern_library_layer.cpython-313.pyc +0 -0
  374. package/core/synapse/__pycache__/pattern_library_layer.cpython-314.pyc +0 -0
  375. package/core/synapse/__pycache__/recipe_layer.cpython-313.pyc +0 -0
  376. package/core/synapse/__pycache__/recipe_layer.cpython-314.pyc +0 -0
  377. package/core/synapse/__pycache__/routing_feedback_layer.cpython-313.pyc +0 -0
  378. package/core/synapse/__pycache__/routing_feedback_layer.cpython-314.pyc +0 -0
  379. package/core/synapse/__pycache__/session_memory_layer.cpython-312.pyc +0 -0
  380. package/core/synapse/__pycache__/session_memory_layer.cpython-313.pyc +0 -0
  381. package/core/synapse/__pycache__/session_memory_layer.cpython-314.pyc +0 -0
  382. package/core/sync/__pycache__/__init__.cpython-312.pyc +0 -0
  383. package/core/sync/__pycache__/__init__.cpython-313.pyc +0 -0
  384. package/core/sync/__pycache__/agent_provisioner.cpython-313.pyc +0 -0
  385. package/core/sync/__pycache__/ai_mcp_decider.cpython-313.pyc +0 -0
  386. package/core/sync/__pycache__/content_merger.cpython-313.pyc +0 -0
  387. package/core/sync/__pycache__/content_syncer.cpython-313.pyc +0 -0
  388. package/core/sync/__pycache__/descriptor_syncer.cpython-313.pyc +0 -0
  389. package/core/sync/__pycache__/discovery.cpython-313.pyc +0 -0
  390. package/core/sync/__pycache__/engine.cpython-312.pyc +0 -0
  391. package/core/sync/__pycache__/engine.cpython-313.pyc +0 -0
  392. package/core/sync/__pycache__/manifest.cpython-312.pyc +0 -0
  393. package/core/sync/__pycache__/manifest.cpython-313.pyc +0 -0
  394. package/core/sync/__pycache__/mcp_optimizer.cpython-313.pyc +0 -0
  395. package/core/sync/__pycache__/mcp_syncer.cpython-313.pyc +0 -0
  396. package/core/sync/__pycache__/policy_loader.cpython-313.pyc +0 -0
  397. package/core/sync/__pycache__/reporter.cpython-313.pyc +0 -0
  398. package/core/sync/__pycache__/schema.cpython-313.pyc +0 -0
  399. package/core/sync/__pycache__/self_healing.cpython-313.pyc +0 -0
  400. package/core/sync/__pycache__/settings_syncer.cpython-313.pyc +0 -0
  401. package/core/sync/__pycache__/update_orchestrator.cpython-313.pyc +0 -0
  402. package/core/tasks/__pycache__/__init__.cpython-313.pyc +0 -0
  403. package/core/tasks/__pycache__/manager.cpython-313.pyc +0 -0
  404. package/core/tasks/__pycache__/schema.cpython-313.pyc +0 -0
  405. package/core/terminal/__pycache__/__init__.cpython-313.pyc +0 -0
  406. package/core/terminal/__pycache__/audit.cpython-313.pyc +0 -0
  407. package/core/terminal/__pycache__/connections.cpython-313.pyc +0 -0
  408. package/core/terminal/__pycache__/session.cpython-313.pyc +0 -0
  409. package/core/terminal/__pycache__/session_windows.cpython-313.pyc +0 -0
  410. package/core/terminal/__pycache__/token.cpython-313.pyc +0 -0
  411. package/core/workflow/__pycache__/__init__.cpython-312.pyc +0 -0
  412. package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
  413. package/core/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
  414. package/core/workflow/__pycache__/announcer.cpython-313.pyc +0 -0
  415. package/core/workflow/__pycache__/dashboard.cpython-313.pyc +0 -0
  416. package/core/workflow/__pycache__/design_authorization.cpython-313.pyc +0 -0
  417. package/core/workflow/__pycache__/design_authorization.cpython-314.pyc +0 -0
  418. package/core/workflow/__pycache__/enforcer.cpython-313.pyc +0 -0
  419. package/core/workflow/__pycache__/engine.cpython-312.pyc +0 -0
  420. package/core/workflow/__pycache__/engine.cpython-313.pyc +0 -0
  421. package/core/workflow/__pycache__/engine.cpython-314.pyc +0 -0
  422. package/core/workflow/__pycache__/flow_authorization.cpython-313.pyc +0 -0
  423. package/core/workflow/__pycache__/flow_authorization.cpython-314.pyc +0 -0
  424. package/core/workflow/__pycache__/flow_enforcer.cpython-312.pyc +0 -0
  425. package/core/workflow/__pycache__/flow_enforcer.cpython-313.pyc +0 -0
  426. package/core/workflow/__pycache__/flow_enforcer.cpython-314.pyc +0 -0
  427. package/core/workflow/__pycache__/frontend_gate.cpython-313.pyc +0 -0
  428. package/core/workflow/__pycache__/frontend_gate.cpython-314.pyc +0 -0
  429. package/core/workflow/__pycache__/frontend_gate_telemetry.cpython-313.pyc +0 -0
  430. package/core/workflow/__pycache__/frontend_gate_telemetry_cli.cpython-313.pyc +0 -0
  431. package/core/workflow/__pycache__/gate_checkpoint.cpython-312.pyc +0 -0
  432. package/core/workflow/__pycache__/gate_checkpoint.cpython-313.pyc +0 -0
  433. package/core/workflow/__pycache__/gate_checkpoint.cpython-314.pyc +0 -0
  434. package/core/workflow/__pycache__/kb_first_decider.cpython-313.pyc +0 -0
  435. package/core/workflow/__pycache__/loader.cpython-312.pyc +0 -0
  436. package/core/workflow/__pycache__/loader.cpython-313.pyc +0 -0
  437. package/core/workflow/__pycache__/loader.cpython-314.pyc +0 -0
  438. package/core/workflow/__pycache__/marker_cache.cpython-313.pyc +0 -0
  439. package/core/workflow/__pycache__/marker_cache.cpython-314.pyc +0 -0
  440. package/core/workflow/__pycache__/plan_approval.cpython-313.pyc +0 -0
  441. package/core/workflow/__pycache__/plan_approval.cpython-314.pyc +0 -0
  442. package/core/workflow/__pycache__/research_gate.cpython-313.pyc +0 -0
  443. package/core/workflow/__pycache__/research_gate.cpython-314.pyc +0 -0
  444. package/core/workflow/__pycache__/rules_registry.cpython-313.pyc +0 -0
  445. package/core/workflow/__pycache__/schema.cpython-312.pyc +0 -0
  446. package/core/workflow/__pycache__/schema.cpython-313.pyc +0 -0
  447. package/core/workflow/__pycache__/schema.cpython-314.pyc +0 -0
  448. package/core/workflow/__pycache__/specialist_enforcer.cpython-312.pyc +0 -0
  449. package/core/workflow/__pycache__/specialist_enforcer.cpython-313.pyc +0 -0
  450. package/core/workflow/__pycache__/specialist_enforcer.cpython-314.pyc +0 -0
  451. package/core/workflow/__pycache__/state.cpython-313.pyc +0 -0
  452. package/core/workflow/__pycache__/state.cpython-314.pyc +0 -0
  453. package/mcps/arka-tools/__pycache__/server.cpython-313.pyc +0 -0
  454. package/scripts/__pycache__/dashboard-api.cpython-313.pyc +0 -0
  455. package/scripts/__pycache__/knowledge-index.cpython-313.pyc +0 -0
  456. package/scripts/__pycache__/marketplace_export.cpython-313.pyc +0 -0
  457. package/scripts/__pycache__/marketplace_gen.cpython-313.pyc +0 -0
  458. package/scripts/__pycache__/migrate_skills_kb_first.cpython-313.pyc +0 -0
  459. package/scripts/__pycache__/seed_initial_patterns.cpython-313.pyc +0 -0
  460. package/scripts/__pycache__/synapse-bridge.cpython-312.pyc +0 -0
  461. package/scripts/__pycache__/synapse-bridge.cpython-313.pyc +0 -0
  462. package/scripts/__pycache__/synapse-bridge.cpython-314.pyc +0 -0
  463. package/scripts/bench/__pycache__/__init__.cpython-313.pyc +0 -0
  464. package/scripts/bench/__pycache__/harness.cpython-313.pyc +0 -0
  465. package/scripts/bench/__pycache__/run.cpython-313.pyc +0 -0
  466. package/scripts/tools/__pycache__/docs_stats.cpython-313.pyc +0 -0
  467. package/scripts/tools/__pycache__/prompt_lint.cpython-313.pyc +0 -0
  468. package/scripts/tools/__pycache__/prompt_surface_benchmark.cpython-313.pyc +0 -0
  469. package/scripts/tools/__pycache__/skill_budget.cpython-313.pyc +0 -0
  470. package/scripts/tools/__pycache__/sync_wiki.cpython-313.pyc +0 -0
package/README.md CHANGED
@@ -21,7 +21,7 @@ Every AI coding tool gives you **one developer agent**. ArkaOS gives you **an en
21
21
 
22
22
  Marketing teams. Brand designers. Financial analysts. Strategy consultants. Security auditors. E-commerce specialists. Content creators. Sales negotiators. Project managers. Quality reviewers. All working together, following enterprise workflows, with mandatory quality gates.
23
23
 
24
- And now, with the **Cognitive Layer** (v2.10), ArkaOS **learns from experience**. It remembers solutions across projects, critiques its own work every night, and researches updates about your tech stack while you sleep.
24
+ And ArkaOS **learns from experience**: it closes two feedback loops end to end. Every session writes semantic memory that the next session retrieves, and every Quality Gate verdict feeds back into routing, so a department that keeps getting work rejected gets flagged before it ships again. Both loops run on your machine, and every claim about them is reproducible: the hook that fires on every tool call runs at 18ms p50 (down from 83ms, measured by `benchmarks/hooks-bench.sh`), and the default install keeps its always-on context surface inside a CI-enforced budget.
25
25
 
26
26
  ```
27
27
  You: "add stripe subscription billing"
@@ -63,8 +63,9 @@ npx arkaos install
63
63
 
64
64
  The installer auto-detects your runtime and configures everything:
65
65
  - Python dependencies (Pydantic, PyYAML, Rich, Click)
66
- - Hook system (5 hooks for session management)
67
- - Skills (250+ department commands)
66
+ - Hook system (9 lifecycle hooks, with Node fast-path shims that decide trivial calls in 18ms instead of 83ms)
67
+ - A curated skill set that stays inside a 60 to 80 skill context budget, enforced in CI; the full catalog installs with `npx arkaos update --skills full` or per department from the plugin marketplace
68
+ - The arka-tools MCP server: 12 programmatic tools for KB search, workflow state, the Quality Gate queue, recipes, session memory, and telemetry
68
69
  - Cognitive Layer scheduler (Dreaming + Research)
69
70
 
70
71
  Prefer a specific runtime?
@@ -92,6 +93,26 @@ npx arkaos@latest update
92
93
  npx arkaos doctor # Health check
93
94
  ```
94
95
 
96
+ ### Skill packs, à la carte
97
+
98
+ The default install ships a curated core so your context window stays lean. Everything else lives in the ArkaOS plugin marketplace: 16 department packs with 205 skills, generated straight from the same sources the core uses. Inside Claude Code:
99
+
100
+ ```
101
+ /plugin marketplace add andreagroferreira/arka-os
102
+ /plugin install arkaos-marketing@arkaos # or arkaos-dev, arkaos-finance, ...
103
+ ```
104
+
105
+ Each pack namespaces its skills, so nothing collides with your setup. Prefer everything preinstalled the old way? `npx arkaos update --skills full` restores the complete catalog and keeps that choice across updates.
106
+
107
+ ### Run the MCP server anywhere
108
+
109
+ Claude Code picks up arka-tools automatically. For other runtimes, debugging, or CI:
110
+
111
+ ```bash
112
+ npx arkaos mcp start # read-only
113
+ npx arkaos mcp start --write # enables workflow/QG writes
114
+ ```
115
+
95
116
  ---
96
117
 
97
118
  ## How It Works
@@ -450,6 +471,7 @@ Full documentation lives in two places in this repository:
450
471
  - [Departments](wiki/04-Departments/) — one page per department
451
472
  - [Commands Reference](wiki/05-Commands-Reference.md)
452
473
  - [Cognitive Layer](wiki/06-Cognitive-Layer.md) — memory, dreaming, research
474
+ - [Skill Packs](wiki/17-Skill-Packs.md) — the curated core and the plugin marketplace
453
475
  - [Benchmarks](wiki/11-Benchmarks.md) — measured, reproducible numbers
454
476
  - [Competitive Analysis](wiki/12-Competitive-Analysis.md) and [Benefits & ROI](wiki/13-Benefits-ROI.md)
455
477
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.14.1
1
+ 4.14.3
@@ -0,0 +1,36 @@
1
+ {
2
+ "_meta": {
3
+ "generator": "core/agents/roster_manifest.py",
4
+ "purpose": "every specialist-gate owner resolves to a dispatchable agent source; installer/skill-deploy.js deploys these"
5
+ },
6
+ "gate_owners": {
7
+ "architect": {
8
+ "compiled": false,
9
+ "source": "departments/dev/agents/architect.md"
10
+ },
11
+ "backend-dev": {
12
+ "compiled": true,
13
+ "source": "config/claude-agents/backend-dev.md"
14
+ },
15
+ "dba": {
16
+ "compiled": true,
17
+ "source": "config/claude-agents/dba.md"
18
+ },
19
+ "devops-eng": {
20
+ "compiled": true,
21
+ "source": "config/claude-agents/devops-eng.md"
22
+ },
23
+ "frontend-dev": {
24
+ "compiled": false,
25
+ "source": "departments/dev/agents/frontend-dev.md"
26
+ },
27
+ "security-eng": {
28
+ "compiled": true,
29
+ "source": "config/claude-agents/security-eng.md"
30
+ },
31
+ "senior-dev": {
32
+ "compiled": false,
33
+ "source": "departments/dev/agents/senior-dev.md"
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,114 @@
1
+ """Agent roster manifest — every gate owner must be dispatchable.
2
+
3
+ Root cause this kills (operator incident, 2026-07-12): the specialist
4
+ gate blocked a lead from writing ``app/Http/Controllers/`` and told it
5
+ to dispatch ``senior-dev`` or ``backend-dev`` — but 4 of the 7 owners
6
+ named in ``config/agent-ownership.yaml`` (backend-dev, dba, devops-eng,
7
+ security-eng) were NOT dispatchable on real machines: they exist only
8
+ as department YAML, and the installer's agent deploy only ships ``.md``
9
+ files. A gate that demands an owner nobody can invoke is a dead end,
10
+ and dead ends teach sessions to rationalize bypasses.
11
+
12
+ This module is the single writer of ``config/agent-roster.json``:
13
+
14
+ python -m core.agents.roster_manifest
15
+
16
+ For every owner the ownership rules name, it resolves a dispatchable
17
+ source — a hand-authored ``departments/*/agents/<slug>.md`` (legacy,
18
+ wins because it may be hand-tuned) or the compiled
19
+ ``config/claude-agents/<slug>.md`` (generated from the agent YAML by
20
+ the behavioral compiler) — and REFUSES to emit when neither exists:
21
+ a missing source is a build-time failure, never a runtime dead end.
22
+ ``installer/skill-deploy.js`` reads the manifest and deploys every
23
+ gate owner; ``tests/python/test_agent_roster.py`` drift-gates it.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ import json
29
+ import re
30
+ from pathlib import Path
31
+
32
+ import yaml
33
+
34
+ REPO_ROOT = Path(__file__).resolve().parents[2]
35
+ OWNERSHIP_YAML = REPO_ROOT / "config" / "agent-ownership.yaml"
36
+ COMPILED_DIR = REPO_ROOT / "config" / "claude-agents"
37
+ DEPARTMENTS_DIR = REPO_ROOT / "departments"
38
+ ROSTER_JSON = REPO_ROOT / "config" / "agent-roster.json"
39
+
40
+ _NAME_RE = re.compile(r"^name:\s*(\S+)\s*$", re.MULTILINE)
41
+
42
+
43
+ def gate_owners() -> list[str]:
44
+ """Every owner slug the ownership rules can demand (never ``*``)."""
45
+ config = yaml.safe_load(OWNERSHIP_YAML.read_text(encoding="utf-8"))
46
+ return sorted({
47
+ owner
48
+ for rule in config["ownership"]
49
+ for owner in (rule.get("owners") or [])
50
+ if owner != "*"
51
+ })
52
+
53
+
54
+ def _frontmatter_name(md_path: Path) -> str | None:
55
+ match = _NAME_RE.search(md_path.read_text(encoding="utf-8")[:2000])
56
+ return match.group(1) if match else None
57
+
58
+
59
+ def _resolve_source(slug: str) -> Path | None:
60
+ """Dispatchable source for a slug: hand-authored dept .md wins,
61
+ compiled claude-agents .md is the generated fallback."""
62
+ for candidate in sorted(DEPARTMENTS_DIR.glob(f"*/agents/{slug}.md")):
63
+ if _frontmatter_name(candidate) == slug:
64
+ return candidate
65
+ compiled = COMPILED_DIR / f"{slug}.md"
66
+ if compiled.is_file() and _frontmatter_name(compiled) == slug:
67
+ return compiled
68
+ return None
69
+
70
+
71
+ def build_roster() -> dict:
72
+ owners = gate_owners()
73
+ entries: dict[str, dict] = {}
74
+ ghosts: list[str] = []
75
+ for slug in owners:
76
+ source = _resolve_source(slug)
77
+ if source is None:
78
+ ghosts.append(slug)
79
+ continue
80
+ entries[slug] = {
81
+ "source": str(source.relative_to(REPO_ROOT)),
82
+ "compiled": source.parent == COMPILED_DIR,
83
+ }
84
+ if ghosts:
85
+ raise ValueError(
86
+ f"ownership rules demand owners with NO dispatchable source: "
87
+ f"{ghosts} — author the agent (YAML + compiler run) or fix "
88
+ f"config/agent-ownership.yaml; a gate must never demand an "
89
+ f"owner nobody can invoke"
90
+ )
91
+ return {
92
+ "_meta": {
93
+ "generator": "core/agents/roster_manifest.py",
94
+ "purpose": (
95
+ "every specialist-gate owner resolves to a dispatchable "
96
+ "agent source; installer/skill-deploy.js deploys these"
97
+ ),
98
+ },
99
+ "gate_owners": entries,
100
+ }
101
+
102
+
103
+ def render() -> str:
104
+ return json.dumps(build_roster(), indent=2, sort_keys=True) + "\n"
105
+
106
+
107
+ def main() -> int:
108
+ ROSTER_JSON.write_text(render(), encoding="utf-8")
109
+ print(f"agent roster written: {ROSTER_JSON}")
110
+ return 0
111
+
112
+
113
+ if __name__ == "__main__":
114
+ raise SystemExit(main())
@@ -135,13 +135,47 @@ export function deploySkills({
135
135
 
136
136
  // ── Agent personas ──────────────────────────────────────────────────
137
137
  if (agentsBase) {
138
- counts.agents = deployAgents(deptRoot, agentsBase);
138
+ const written = new Set();
139
+ counts.agents = deployAgents(deptRoot, agentsBase, written);
140
+ // Gate owners (F2 specialist-gate P0): every owner the ownership
141
+ // rules can demand MUST be dispatchable. 4 of 7 owners existed only
142
+ // as department YAML (never deployed — the agent loop above ships
143
+ // .md only), so the gate told sessions to dispatch agents nobody
144
+ // could invoke. The generated config/agent-roster.json maps each
145
+ // owner to a dispatchable source; hand-authored dept .md files win
146
+ // (already deployed above), compiled ones fill the gaps.
147
+ counts.agents += deployGateOwners(repoRoot, agentsBase, written);
139
148
  }
140
149
 
141
150
  log(counts);
142
151
  return counts;
143
152
  }
144
153
 
154
+ function deployGateOwners(repoRoot, agentsBase, written) {
155
+ let roster;
156
+ try {
157
+ roster = JSON.parse(readFileSync(
158
+ join(repoRoot, "config", "agent-roster.json"), "utf-8"));
159
+ } catch {
160
+ return 0; // older core without the roster — dept loop already ran
161
+ }
162
+ let deployed = 0;
163
+ for (const [slug, entry] of Object.entries(roster.gate_owners || {})) {
164
+ const target = `arka-${slug}.md`;
165
+ if (written.has(target)) continue; // dept .md won this run
166
+ const src = join(repoRoot, entry.source);
167
+ if (!existsSync(src)) continue;
168
+ try {
169
+ copyFileSync(src, join(agentsBase, target));
170
+ written.add(target);
171
+ deployed++;
172
+ } catch {
173
+ // One unreadable agent must not break the deploy.
174
+ }
175
+ }
176
+ return deployed;
177
+ }
178
+
145
179
  function loadCuratedFilter(repoRoot) {
146
180
  try {
147
181
  const manifest = JSON.parse(readFileSync(
@@ -156,14 +190,14 @@ function loadCuratedFilter(repoRoot) {
156
190
  }
157
191
  }
158
192
 
159
- function deployAgents(deptRoot, agentsBase) {
193
+ function deployAgents(deptRoot, agentsBase, written = new Set()) {
160
194
  mkdirSync(agentsBase, { recursive: true });
161
195
  let deployed = 0;
162
196
  for (const dept of listSubdirs(deptRoot)) {
163
197
  const agentsSrc = join(deptRoot, dept, "agents");
164
198
  if (!existsSync(agentsSrc)) continue;
165
199
  try {
166
- deployed += deployDeptAgents(agentsSrc, agentsBase);
200
+ deployed += deployDeptAgents(agentsSrc, agentsBase, written);
167
201
  } catch {
168
202
  // Unreadable agents dir — skip the department, not the deploy.
169
203
  }
@@ -171,7 +205,7 @@ function deployAgents(deptRoot, agentsBase) {
171
205
  return deployed;
172
206
  }
173
207
 
174
- function deployDeptAgents(agentsSrc, agentsBase) {
208
+ function deployDeptAgents(agentsSrc, agentsBase, written) {
175
209
  let deployed = 0;
176
210
  for (const file of readdirSync(agentsSrc)) {
177
211
  if (!file.endsWith(".md")) continue;
@@ -181,8 +215,9 @@ function deployDeptAgents(agentsSrc, agentsBase) {
181
215
  } catch {
182
216
  continue;
183
217
  }
184
- copyFileSync(
185
- srcFile, join(agentsBase, `arka-${file.replace(/\.md$/, "")}.md`));
218
+ const target = `arka-${file.replace(/\.md$/, "")}.md`;
219
+ copyFileSync(srcFile, join(agentsBase, target));
220
+ written.add(target);
186
221
  deployed++;
187
222
  }
188
223
  return deployed;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "generator": "scripts/marketplace_gen.py",
4
- "version": "4.14.1",
4
+ "version": "4.14.3",
5
5
  "marketplace": "arkaos"
6
6
  },
7
7
  "structural": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkaos",
3
- "version": "4.14.1",
3
+ "version": "4.14.3",
4
4
  "description": "The Operating System for AI Agent Teams",
5
5
  "type": "module",
6
6
  "bin": {
@@ -69,7 +69,10 @@
69
69
  "VERSION",
70
70
  "CONSTITUTION.md",
71
71
  "README.md",
72
- "LICENSE"
72
+ "LICENSE",
73
+ "!**/__pycache__/",
74
+ "!**/*.pyc",
75
+ "!**/.DS_Store"
73
76
  ],
74
77
  "devDependencies": {
75
78
  "eslint": "^8.57.1"
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkaos-core"
3
- version = "4.14.1"
3
+ version = "4.14.3"
4
4
  description = "Core engine for ArkaOS — The Operating System for AI Agent Teams"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}