kengash-ai 0.1.0__tar.gz

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 (272) hide show
  1. kengash_ai-0.1.0/.antigravity-plugin/plugin.json +5 -0
  2. kengash_ai-0.1.0/.claude-plugin/marketplace.json +14 -0
  3. kengash_ai-0.1.0/.claude-plugin/plugin.json +10 -0
  4. kengash_ai-0.1.0/.gitignore +16 -0
  5. kengash_ai-0.1.0/AGENTS.md +41 -0
  6. kengash_ai-0.1.0/CHANGELOG.md +27 -0
  7. kengash_ai-0.1.0/CLAUDE.md +5 -0
  8. kengash_ai-0.1.0/GEMINI.md +1 -0
  9. kengash_ai-0.1.0/LICENSE +21 -0
  10. kengash_ai-0.1.0/Makefile +50 -0
  11. kengash_ai-0.1.0/PKG-INFO +151 -0
  12. kengash_ai-0.1.0/README.md +113 -0
  13. kengash_ai-0.1.0/docs/README.md +14 -0
  14. kengash_ai-0.1.0/docs/architecture.md +85 -0
  15. kengash_ai-0.1.0/docs/conventions/instruction-files.md +62 -0
  16. kengash_ai-0.1.0/docs/conventions/memory-files.md +50 -0
  17. kengash_ai-0.1.0/docs/conventions/skills.md +68 -0
  18. kengash_ai-0.1.0/docs/modules/adapters/README.md +42 -0
  19. kengash_ai-0.1.0/docs/modules/cli/README.md +49 -0
  20. kengash_ai-0.1.0/docs/modules/gitops/README.md +33 -0
  21. kengash_ai-0.1.0/docs/modules/journal/README.md +24 -0
  22. kengash_ai-0.1.0/docs/modules/memory/README.md +28 -0
  23. kengash_ai-0.1.0/docs/modules/model/README.md +53 -0
  24. kengash_ai-0.1.0/docs/modules/ops/README.md +116 -0
  25. kengash_ai-0.1.0/docs/modules/roles/README.md +22 -0
  26. kengash_ai-0.1.0/docs/modules/scheduler/README.md +24 -0
  27. kengash_ai-0.1.0/docs/modules/settings/README.md +29 -0
  28. kengash_ai-0.1.0/docs/modules/store/README.md +49 -0
  29. kengash_ai-0.1.0/docs/modules/ui/README.md +49 -0
  30. kengash_ai-0.1.0/docs/modules/worker/README.md +28 -0
  31. kengash_ai-0.1.0/docs/modules/workflow/README.md +29 -0
  32. kengash_ai-0.1.0/docs/releasing.md +30 -0
  33. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-foundation.md +914 -0
  34. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m1-store-core.md +2278 -0
  35. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m2-settings-memory-journal.md +1378 -0
  36. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp2-m3-plans-tickets.md +1973 -0
  37. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-22-sp3-m1-engine-rules.md +1721 -0
  38. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m2-providers-git.md +1350 -0
  39. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m3-workers-controls.md +1279 -0
  40. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp3-m4-review-compaction-live.md +303 -0
  41. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m1-skill-toolkit.md +99 -0
  42. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m2-eval-runner.md +66 -0
  43. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp4-m3-installed-skills.md +40 -0
  44. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp5-m1-server-monitor.md +55 -0
  45. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-23-sp5-m2-inspect-configure.md +73 -0
  46. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-24-sp5-m3-open-ui-parity.md +40 -0
  47. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-24-sp5-ui-parity.md +68 -0
  48. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-26-sp6-custom-agents.md +145 -0
  49. kengash_ai-0.1.0/docs/superpowers/plans/2026-10-26-sp7-production.md +83 -0
  50. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-sp2-store-cli-design.md +93 -0
  51. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-sp3-engine-design.md +227 -0
  52. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-22-super-harness-design.md +558 -0
  53. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-23-sp4-skills-design.md +72 -0
  54. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-23-sp5-ui-design.md +79 -0
  55. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-26-sp6-custom-agents-design.md +54 -0
  56. kengash_ai-0.1.0/docs/superpowers/specs/2026-10-26-sp7-production-design.md +49 -0
  57. kengash_ai-0.1.0/evals/README.md +32 -0
  58. kengash_ai-0.1.0/evals/harness-memory/preference.yaml +13 -0
  59. kengash_ai-0.1.0/evals/open-ui/opens.yaml +12 -0
  60. kengash_ai-0.1.0/evals/to-loop/one-ticket.yaml +40 -0
  61. kengash_ai-0.1.0/evals/to-plan/direct.yaml +19 -0
  62. kengash_ai-0.1.0/evals/to-plan-with-grill/grill.yaml +20 -0
  63. kengash_ai-0.1.0/evals/to-ticket/slices.yaml +32 -0
  64. kengash_ai-0.1.0/pyproject.toml +181 -0
  65. kengash_ai-0.1.0/scripts/__init__.py +1 -0
  66. kengash_ai-0.1.0/scripts/bench_views.py +37 -0
  67. kengash_ai-0.1.0/scripts/check_dist.py +73 -0
  68. kengash_ai-0.1.0/scripts/check_docs_sync.py +62 -0
  69. kengash_ai-0.1.0/scripts/check_md_caps.py +41 -0
  70. kengash_ai-0.1.0/scripts/demo_store.py +356 -0
  71. kengash_ai-0.1.0/skills/README.md +16 -0
  72. kengash_ai-0.1.0/skills/harness-memory/SKILL.md +26 -0
  73. kengash_ai-0.1.0/skills/open-ui/SKILL.md +26 -0
  74. kengash_ai-0.1.0/skills/to-loop/SKILL.md +27 -0
  75. kengash_ai-0.1.0/skills/to-plan/SKILL.md +49 -0
  76. kengash_ai-0.1.0/skills/to-plan-with-grill/SKILL.md +45 -0
  77. kengash_ai-0.1.0/skills/to-ticket/SKILL.md +38 -0
  78. kengash_ai-0.1.0/skills/to-ticket/references/importance.md +11 -0
  79. kengash_ai-0.1.0/src/kengash_ai/__init__.py +3 -0
  80. kengash_ai-0.1.0/src/kengash_ai/adapters/__init__.py +27 -0
  81. kengash_ai-0.1.0/src/kengash_ai/adapters/antigravity.py +130 -0
  82. kengash_ai-0.1.0/src/kengash_ai/adapters/base.py +161 -0
  83. kengash_ai-0.1.0/src/kengash_ai/adapters/claude.py +146 -0
  84. kengash_ai-0.1.0/src/kengash_ai/adapters/codex.py +148 -0
  85. kengash_ai-0.1.0/src/kengash_ai/adapters/env.py +22 -0
  86. kengash_ai-0.1.0/src/kengash_ai/adapters/process.py +87 -0
  87. kengash_ai-0.1.0/src/kengash_ai/adapters/shell.py +50 -0
  88. kengash_ai-0.1.0/src/kengash_ai/cli.py +1033 -0
  89. kengash_ai-0.1.0/src/kengash_ai/gitops.py +212 -0
  90. kengash_ai-0.1.0/src/kengash_ai/journal.py +75 -0
  91. kengash_ai-0.1.0/src/kengash_ai/memory.py +230 -0
  92. kengash_ai-0.1.0/src/kengash_ai/model/__init__.py +136 -0
  93. kengash_ai-0.1.0/src/kengash_ai/model/core.py +42 -0
  94. kengash_ai-0.1.0/src/kengash_ai/model/documents.py +155 -0
  95. kengash_ai-0.1.0/src/kengash_ai/model/errors.py +29 -0
  96. kengash_ai-0.1.0/src/kengash_ai/model/evals.py +47 -0
  97. kengash_ai-0.1.0/src/kengash_ai/model/events.py +23 -0
  98. kengash_ai-0.1.0/src/kengash_ai/model/registry.py +20 -0
  99. kengash_ai-0.1.0/src/kengash_ai/model/runtime.py +103 -0
  100. kengash_ai-0.1.0/src/kengash_ai/model/settings.py +304 -0
  101. kengash_ai-0.1.0/src/kengash_ai/model/skills.py +18 -0
  102. kengash_ai-0.1.0/src/kengash_ai/model/steps.py +179 -0
  103. kengash_ai-0.1.0/src/kengash_ai/ops/__init__.py +1 -0
  104. kengash_ai-0.1.0/src/kengash_ai/ops/agent_config.py +180 -0
  105. kengash_ai-0.1.0/src/kengash_ai/ops/agents.py +60 -0
  106. kengash_ai-0.1.0/src/kengash_ai/ops/calls.py +117 -0
  107. kengash_ai-0.1.0/src/kengash_ai/ops/changes.py +97 -0
  108. kengash_ai-0.1.0/src/kengash_ai/ops/compaction.py +155 -0
  109. kengash_ai-0.1.0/src/kengash_ai/ops/configure.py +31 -0
  110. kengash_ai-0.1.0/src/kengash_ai/ops/controls.py +348 -0
  111. kengash_ai-0.1.0/src/kengash_ai/ops/evals.py +394 -0
  112. kengash_ai-0.1.0/src/kengash_ai/ops/jobs.py +190 -0
  113. kengash_ai-0.1.0/src/kengash_ai/ops/lifecycle.py +99 -0
  114. kengash_ai-0.1.0/src/kengash_ai/ops/merging.py +152 -0
  115. kengash_ai-0.1.0/src/kengash_ai/ops/plans.py +172 -0
  116. kengash_ai-0.1.0/src/kengash_ai/ops/projects.py +302 -0
  117. kengash_ai-0.1.0/src/kengash_ai/ops/prompts.py +207 -0
  118. kengash_ai-0.1.0/src/kengash_ai/ops/providers.py +146 -0
  119. kengash_ai-0.1.0/src/kengash_ai/ops/queue.py +119 -0
  120. kengash_ai-0.1.0/src/kengash_ai/ops/records.py +165 -0
  121. kengash_ai-0.1.0/src/kengash_ai/ops/reviews.py +381 -0
  122. kengash_ai-0.1.0/src/kengash_ai/ops/skills.py +340 -0
  123. kengash_ai-0.1.0/src/kengash_ai/ops/slots.py +104 -0
  124. kengash_ai-0.1.0/src/kengash_ai/ops/status.py +40 -0
  125. kengash_ai-0.1.0/src/kengash_ai/ops/steps.py +662 -0
  126. kengash_ai-0.1.0/src/kengash_ai/ops/tickets.py +438 -0
  127. kengash_ai-0.1.0/src/kengash_ai/ops/ui_server.py +119 -0
  128. kengash_ai-0.1.0/src/kengash_ai/ops/views.py +1224 -0
  129. kengash_ai-0.1.0/src/kengash_ai/ops/waiting.py +230 -0
  130. kengash_ai-0.1.0/src/kengash_ai/ops/workspace.py +121 -0
  131. kengash_ai-0.1.0/src/kengash_ai/py.typed +0 -0
  132. kengash_ai-0.1.0/src/kengash_ai/roles/implement/SKILL.md +15 -0
  133. kengash_ai-0.1.0/src/kengash_ai/roles/plan/SKILL.md +21 -0
  134. kengash_ai-0.1.0/src/kengash_ai/roles/review-code/SKILL.md +16 -0
  135. kengash_ai-0.1.0/src/kengash_ai/roles/review-plan/SKILL.md +19 -0
  136. kengash_ai-0.1.0/src/kengash_ai/roles/review-security/SKILL.md +14 -0
  137. kengash_ai-0.1.0/src/kengash_ai/roles/run-tests/SKILL.md +13 -0
  138. kengash_ai-0.1.0/src/kengash_ai/roles/sync-docs/SKILL.md +14 -0
  139. kengash_ai-0.1.0/src/kengash_ai/scheduler.py +143 -0
  140. kengash_ai-0.1.0/src/kengash_ai/settings.py +278 -0
  141. kengash_ai-0.1.0/src/kengash_ai/store/__init__.py +5 -0
  142. kengash_ai-0.1.0/src/kengash_ai/store/defaults/DECISIONS.md +3 -0
  143. kengash_ai-0.1.0/src/kengash_ai/store/defaults/MEMORY.md +11 -0
  144. kengash_ai-0.1.0/src/kengash_ai/store/defaults/PROCESS.md +5 -0
  145. kengash_ai-0.1.0/src/kengash_ai/store/defaults/SETTINGS.md +70 -0
  146. kengash_ai-0.1.0/src/kengash_ai/store/documents.py +118 -0
  147. kengash_ai-0.1.0/src/kengash_ai/store/files.py +20 -0
  148. kengash_ai-0.1.0/src/kengash_ai/store/frontmatter.py +113 -0
  149. kengash_ai-0.1.0/src/kengash_ai/store/ids.py +18 -0
  150. kengash_ai-0.1.0/src/kengash_ai/store/links.py +87 -0
  151. kengash_ai-0.1.0/src/kengash_ai/store/locks.py +25 -0
  152. kengash_ai-0.1.0/src/kengash_ai/store/memo.py +38 -0
  153. kengash_ai-0.1.0/src/kengash_ai/store/paths.py +127 -0
  154. kengash_ai-0.1.0/src/kengash_ai/store/redact.py +27 -0
  155. kengash_ai-0.1.0/src/kengash_ai/store/registry.py +39 -0
  156. kengash_ai-0.1.0/src/kengash_ai/store/runtime.py +200 -0
  157. kengash_ai-0.1.0/src/kengash_ai/store/seed.py +75 -0
  158. kengash_ai-0.1.0/src/kengash_ai/store/storegit.py +54 -0
  159. kengash_ai-0.1.0/src/kengash_ai/store/yamledit.py +267 -0
  160. kengash_ai-0.1.0/src/kengash_ai/store/yamlio.py +39 -0
  161. kengash_ai-0.1.0/src/kengash_ai/ui/__init__.py +2 -0
  162. kengash_ai-0.1.0/src/kengash_ai/ui/__main__.py +27 -0
  163. kengash_ai-0.1.0/src/kengash_ai/ui/app.py +314 -0
  164. kengash_ai-0.1.0/src/kengash_ai/ui/static/api.js +45 -0
  165. kengash_ai-0.1.0/src/kengash_ai/ui/static/app.css +780 -0
  166. kengash_ai-0.1.0/src/kengash_ai/ui/static/app.js +189 -0
  167. kengash_ai-0.1.0/src/kengash_ai/ui/static/favicon.svg +1 -0
  168. kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/OFL.txt +89 -0
  169. kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/inter.woff2 +0 -0
  170. kengash_ai-0.1.0/src/kengash_ai/ui/static/fonts/jetbrains-mono.woff2 +0 -0
  171. kengash_ai-0.1.0/src/kengash_ai/ui/static/format.js +54 -0
  172. kengash_ai-0.1.0/src/kengash_ai/ui/static/graph.js +113 -0
  173. kengash_ai-0.1.0/src/kengash_ai/ui/static/html.js +39 -0
  174. kengash_ai-0.1.0/src/kengash_ai/ui/static/icons.js +57 -0
  175. kengash_ai-0.1.0/src/kengash_ai/ui/static/index.html +20 -0
  176. kengash_ai-0.1.0/src/kengash_ai/ui/static/scope.js +169 -0
  177. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/agents.js +290 -0
  178. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/board.js +237 -0
  179. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/memory.js +226 -0
  180. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/overview.js +242 -0
  181. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/settings.js +234 -0
  182. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/ticket.js +313 -0
  183. kengash_ai-0.1.0/src/kengash_ai/ui/static/views/workflow.js +269 -0
  184. kengash_ai-0.1.0/src/kengash_ai/worker/__init__.py +1 -0
  185. kengash_ai-0.1.0/src/kengash_ai/worker/__main__.py +88 -0
  186. kengash_ai-0.1.0/src/kengash_ai/workflow.py +236 -0
  187. kengash_ai-0.1.0/tests/conftest.py +311 -0
  188. kengash_ai-0.1.0/tests/fakes/bin/agy +3 -0
  189. kengash_ai-0.1.0/tests/fakes/bin/claude +3 -0
  190. kengash_ai-0.1.0/tests/fakes/bin/codex +3 -0
  191. kengash_ai-0.1.0/tests/fakes/fake_cli.py +86 -0
  192. kengash_ai-0.1.0/tests/fakes/fixtures/README.md +33 -0
  193. kengash_ai-0.1.0/tests/fakes/fixtures/agy/denied.json +1 -0
  194. kengash_ai-0.1.0/tests/fakes/fixtures/agy/error.json +1 -0
  195. kengash_ai-0.1.0/tests/fakes/fixtures/agy/review_new.json +1 -0
  196. kengash_ai-0.1.0/tests/fakes/fixtures/agy/stale_output.json +1 -0
  197. kengash_ai-0.1.0/tests/fakes/fixtures/agy/work_resume.json +1 -0
  198. kengash_ai-0.1.0/tests/fakes/fixtures/claude/auth_error.json +1 -0
  199. kengash_ai-0.1.0/tests/fakes/fixtures/claude/review_new.json +1 -0
  200. kengash_ai-0.1.0/tests/fakes/fixtures/claude/usage_limit.json +1 -0
  201. kengash_ai-0.1.0/tests/fakes/fixtures/claude/work_resume.json +1 -0
  202. kengash_ai-0.1.0/tests/fakes/fixtures/codex/review_new.jsonl +5 -0
  203. kengash_ai-0.1.0/tests/fakes/fixtures/codex/usage_limit.jsonl +4 -0
  204. kengash_ai-0.1.0/tests/fakes/fixtures/codex/work_resume.jsonl +4 -0
  205. kengash_ai-0.1.0/tests/live/test_live_evals.py +67 -0
  206. kengash_ai-0.1.0/tests/live/test_live_plugin.py +28 -0
  207. kengash_ai-0.1.0/tests/live/test_live_smoke.py +221 -0
  208. kengash_ai-0.1.0/tests/test_adapters_antigravity.py +114 -0
  209. kengash_ai-0.1.0/tests/test_adapters_claude.py +163 -0
  210. kengash_ai-0.1.0/tests/test_adapters_codex.py +103 -0
  211. kengash_ai-0.1.0/tests/test_adapters_core.py +180 -0
  212. kengash_ai-0.1.0/tests/test_check_dist.py +71 -0
  213. kengash_ai-0.1.0/tests/test_check_docs_sync.py +80 -0
  214. kengash_ai-0.1.0/tests/test_check_md_caps.py +42 -0
  215. kengash_ai-0.1.0/tests/test_cli.py +42 -0
  216. kengash_ai-0.1.0/tests/test_cli_agents.py +52 -0
  217. kengash_ai-0.1.0/tests/test_cli_controls.py +74 -0
  218. kengash_ai-0.1.0/tests/test_cli_plans.py +125 -0
  219. kengash_ai-0.1.0/tests/test_cli_projects.py +81 -0
  220. kengash_ai-0.1.0/tests/test_cli_queue.py +53 -0
  221. kengash_ai-0.1.0/tests/test_cli_skills.py +103 -0
  222. kengash_ai-0.1.0/tests/test_cli_tickets.py +81 -0
  223. kengash_ai-0.1.0/tests/test_cli_workspace.py +146 -0
  224. kengash_ai-0.1.0/tests/test_documents.py +65 -0
  225. kengash_ai-0.1.0/tests/test_fakes.py +35 -0
  226. kengash_ai-0.1.0/tests/test_frontmatter.py +71 -0
  227. kengash_ai-0.1.0/tests/test_gitops.py +160 -0
  228. kengash_ai-0.1.0/tests/test_journal.py +54 -0
  229. kengash_ai-0.1.0/tests/test_lifecycle.py +88 -0
  230. kengash_ai-0.1.0/tests/test_links.py +49 -0
  231. kengash_ai-0.1.0/tests/test_memo.py +79 -0
  232. kengash_ai-0.1.0/tests/test_memory.py +237 -0
  233. kengash_ai-0.1.0/tests/test_model.py +111 -0
  234. kengash_ai-0.1.0/tests/test_model_settings.py +182 -0
  235. kengash_ai-0.1.0/tests/test_model_steps.py +94 -0
  236. kengash_ai-0.1.0/tests/test_ops_agent_config.py +204 -0
  237. kengash_ai-0.1.0/tests/test_ops_agents.py +42 -0
  238. kengash_ai-0.1.0/tests/test_ops_calls.py +122 -0
  239. kengash_ai-0.1.0/tests/test_ops_changes.py +39 -0
  240. kengash_ai-0.1.0/tests/test_ops_compaction.py +50 -0
  241. kengash_ai-0.1.0/tests/test_ops_configure.py +35 -0
  242. kengash_ai-0.1.0/tests/test_ops_controls.py +159 -0
  243. kengash_ai-0.1.0/tests/test_ops_evals.py +275 -0
  244. kengash_ai-0.1.0/tests/test_ops_jobs.py +115 -0
  245. kengash_ai-0.1.0/tests/test_ops_merging.py +78 -0
  246. kengash_ai-0.1.0/tests/test_ops_plans.py +172 -0
  247. kengash_ai-0.1.0/tests/test_ops_projects.py +243 -0
  248. kengash_ai-0.1.0/tests/test_ops_prompts.py +95 -0
  249. kengash_ai-0.1.0/tests/test_ops_providers.py +87 -0
  250. kengash_ai-0.1.0/tests/test_ops_queue.py +69 -0
  251. kengash_ai-0.1.0/tests/test_ops_reviews.py +227 -0
  252. kengash_ai-0.1.0/tests/test_ops_skills.py +209 -0
  253. kengash_ai-0.1.0/tests/test_ops_slots.py +38 -0
  254. kengash_ai-0.1.0/tests/test_ops_status.py +32 -0
  255. kengash_ai-0.1.0/tests/test_ops_steps.py +337 -0
  256. kengash_ai-0.1.0/tests/test_ops_tickets.py +235 -0
  257. kengash_ai-0.1.0/tests/test_ops_ui_server.py +90 -0
  258. kengash_ai-0.1.0/tests/test_ops_views.py +494 -0
  259. kengash_ai-0.1.0/tests/test_ops_waiting.py +152 -0
  260. kengash_ai-0.1.0/tests/test_ops_workspace.py +53 -0
  261. kengash_ai-0.1.0/tests/test_plugin.py +17 -0
  262. kengash_ai-0.1.0/tests/test_redact.py +54 -0
  263. kengash_ai-0.1.0/tests/test_runtime.py +78 -0
  264. kengash_ai-0.1.0/tests/test_scheduler.py +94 -0
  265. kengash_ai-0.1.0/tests/test_settings.py +88 -0
  266. kengash_ai-0.1.0/tests/test_settings_write.py +239 -0
  267. kengash_ai-0.1.0/tests/test_store_basics.py +91 -0
  268. kengash_ai-0.1.0/tests/test_ui_app.py +318 -0
  269. kengash_ai-0.1.0/tests/test_ui_static.py +187 -0
  270. kengash_ai-0.1.0/tests/test_worker.py +93 -0
  271. kengash_ai-0.1.0/tests/test_workflow.py +202 -0
  272. kengash_ai-0.1.0/uv.lock +1030 -0
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "kengash-ai",
3
+ "version": "0.1.0",
4
+ "description": "Plan, ticket and run many projects at once with the coding-agent subscriptions you already have, through the harness CLI."
5
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "kengash-ai",
3
+ "description": "kengash_ai: plan, ticket and run many projects with your coding-agent subscriptions.",
4
+ "owner": {
5
+ "name": "normatov13"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "kengash-ai",
10
+ "source": "./",
11
+ "description": "Plan, ticket and run many projects at once with the coding-agent subscriptions you already have, through the harness CLI."
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "kengash-ai",
3
+ "version": "0.1.0",
4
+ "description": "Plan, ticket and run many projects at once with the coding-agent subscriptions you already have, through the harness CLI.",
5
+ "author": { "name": "normatov13" },
6
+ "homepage": "https://github.com/normatov07/kengash-ai",
7
+ "repository": "https://github.com/normatov07/kengash-ai",
8
+ "license": "MIT",
9
+ "keywords": ["planning", "tickets", "multi-agent", "orchestration"]
10
+ }
@@ -0,0 +1,16 @@
1
+ # local agent folders: Claude Code settings and worktrees, plan workspaces
2
+ .claude/
3
+ .superpowers/
4
+
5
+ # Python and tooling
6
+ __pycache__/
7
+ *.py[cod]
8
+ .venv/
9
+ .mypy_cache/
10
+ .pytest_cache/
11
+ .ruff_cache/
12
+ .import_linter_cache/
13
+ .coverage
14
+ build/
15
+ dist/
16
+ *.egg-info/
@@ -0,0 +1,41 @@
1
+ # AGENTS.md
2
+
3
+ Kengash AI lets one developer run many projects at once with the coding-agent subscriptions they already have (Claude Code, Codex, Antigravity `agy`, which also serves Google's plans), driven through the official CLIs, never API keys. Skills installed into the user's agent conduct the work, the deterministic `harness` CLI does every mechanical step, and a local UI monitors it all.
4
+
5
+ Status: all 7 sub-projects done (Foundation; Store + `harness` CLI; Engine; Skills; Web UI; Custom agents; Production readiness): `harness init|doctor|link|adopt|settings|memory|context|plan|ticket|status|next|run|wait|approve|park|stop|pause|resume|merge|skills|agent|ui` work, with detached workers, plan review, memory compaction, role skills, six installed skills (`skills/`, proven by `evals/`), the local web UI (`harness ui open`, seven screens matching the canvas), user-defined agents (`harness agent new` or the UI's New agent), and release tooling (`make dist`, `make audit`, `docs/releasing.md`). `docs/architecture.md` tracks what is built.
6
+
7
+ ## Commands
8
+
9
+ - `make setup`: install the uv environment and git hooks
10
+ - `make check`: everything CI runs (format, lint, types, tests, docs checks)
11
+ - `make fmt`: format and auto-fix
12
+ - `make live`: live smoke on the real provider CLIs (spends subscription quota; never in `make check`)
13
+ - `make evals`: every skill scenario on every installed agent (spends quota; never in `make check`)
14
+ - `make dist`: build the release artifacts and check them; `make audit`: known vulnerabilities in the locked dependencies
15
+ - One test: `uv run pytest tests/test_cli.py::test_version_names_the_package`
16
+ - `make docs DOCS_BASE=origin/main`: docs checks against another base
17
+
18
+ ## Hard rules
19
+
20
+ 1. The spec `docs/superpowers/specs/2026-10-22-super-harness-design.md` is the contract. Where it differs from `full prompt of app.md` (the original request), the spec wins. Change the spec before changing a contract.
21
+ 2. A change to `src/kengash_ai/<module>` updates `docs/modules/<module>/README.md` in the same commit; `make docs` and the pre-commit hook enforce it.
22
+ 3. Each project links to the store through one directory symlink. Never use hard links: they cannot link directories and break on status-folder moves and atomic saves.
23
+ 4. Only `harness` writes store files; agents never hand-edit plan or ticket state.
24
+ 5. Tickets reference their plan by id; never copy the full prompt into tickets.
25
+ 6. Providers run only through their official binaries under the user's login: never read or reuse OAuth tokens, never use `claude --bare` (it skips subscription login), and strip provider API-key variables from worker environments.
26
+ 7. No always-on daemon: workers are short-lived detached processes, one per job.
27
+ 8. Instruction files stay within caps: this file ≤ 100 lines, files under `docs/` ≤ 150 lines (specs and plans exempt).
28
+ 9. Each sub-project goes spec → plan → build → critical review of every change against the requirements before the next one starts.
29
+
30
+ ## Read when
31
+
32
+ - `docs/architecture.md`: adding or moving a module, or changing module dependencies
33
+ - `docs/conventions/instruction-files.md`: writing AGENTS.md, CLAUDE.md, GEMINI.md or any doc
34
+ - `docs/conventions/skills.md`: writing a skill or role skill
35
+ - `docs/conventions/memory-files.md`: touching MEMORY.md, DECISIONS.md, PROCESS.md, SETTINGS.md, plan or ticket formats
36
+ - `docs/modules/<module>/README.md`: changing that module
37
+ - `docs/superpowers/plans/`: implementing a sub-project step by step
38
+
39
+ ## UI design source
40
+
41
+ The UI implements the Claude Design canvas https://claude.ai/artifact/JiMGMkbaw8qhafeaNbqU7d. In Claude Code, read it with the Artifact tool (`list_files`, then `read_file` on `project/canvas.json` and `project/*.dc.html`), not WebFetch.
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are written here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/).
4
+
5
+ ## [0.1.0] - 2026-10-26
6
+
7
+ The first release.
8
+
9
+ ### Added
10
+
11
+ - `harness` CLI: projects and the store (`init`, `doctor`, `link`, `adopt`), plans and tickets, settings and memory, the engine controls (`next`, `run`, `wait`, `approve`, `park`, `stop`, `pause`, `resume`, `merge`), skills (`install`, `lint`, `eval`) and the UI (`ui open`, `ui stop`).
12
+ - An engine that runs each ticket through an importance-based workflow on `claude`, `codex` and `agy` under the user's login, one detached worker per job, one git worktree per ticket, with loop caps, token caps, stall detection, plan review and memory compaction.
13
+ - Installed skills: `to-plan`, `to-plan-with-grill`, `to-ticket`, `to-loop`, `harness-memory`, `open-ui`; seven role skills.
14
+ - A local web UI: overview, task board, ticket sheet with changes and timeline, workflow editor, agents and providers, settings and memory, live over server-sent events.
15
+ - Custom agents: `steps.<name>: {role, kind, does}` in SETTINGS.md, `harness agent new|remove`, and the UI's New agent dialog.
16
+ - Log retention (`logs.keep_days`, default 30).
17
+
18
+ ### Changed
19
+
20
+ - The app is named **Kengash AI** and installs as `kengash-ai` (PyPI refused `super-harness` as too similar to `superharness`). The `harness` and `hrn` commands, `~/.harness` and every file format stay; an `kengash_ai` command is added.
21
+ - Antigravity replaces Gemini CLI: Google moved Gemini CLI's subscription plans to Antigravity CLI, so `gemini` is no longer a provider; a setting naming it says to use `antigravity`.
22
+
23
+ ### Security
24
+
25
+ - The UI checks Host, Origin, a per-run token and an `X-Harness` header on changes, and sends a strict Content Security Policy with framing, sniffing and referrer protections.
26
+
27
+ [0.1.0]: https://github.com/normatov07/kengash-ai/releases/tag/v0.1.0
@@ -0,0 +1,5 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ @AGENTS.md
@@ -0,0 +1 @@
1
+ @AGENTS.md
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 normatov13
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,50 @@
1
+ DOCS_BASE ?= main
2
+ MAKEFLAGS += --silent
3
+
4
+ .PHONY: setup fmt lint type test live evals docs check dist audit
5
+
6
+ setup:
7
+ uv sync
8
+ uv run pre-commit install
9
+
10
+ fmt:
11
+ uv run ruff format .
12
+ uv run ruff check --fix .
13
+
14
+ lint:
15
+ uv run ruff format --check --quiet .
16
+ uv run ruff check --quiet .
17
+ out=$$(uv run lint-imports 2>&1) || { echo "$$out"; exit 1; }
18
+ uv run harness skills lint
19
+
20
+ type:
21
+ uv run mypy --no-error-summary
22
+
23
+ test:
24
+ uv run pytest
25
+
26
+ # real provider CLIs on a scratch repo (SP3 spec §11); spends subscription quota
27
+ live:
28
+ uv run pytest -m live -v
29
+
30
+ # every skill scenario on every installed agent (SP4 spec §2.17); spends subscription quota
31
+ evals:
32
+ uv run harness skills eval --all
33
+
34
+ docs:
35
+ uv run python scripts/check_md_caps.py
36
+ uv run python scripts/check_docs_sync.py --base $(DOCS_BASE)
37
+
38
+ check: lint type test docs
39
+
40
+ # release artifacts, checked: the product and nothing local (SP7 spec decision 8)
41
+ dist:
42
+ rm -rf dist
43
+ uv build --quiet
44
+ uv run python scripts/check_dist.py dist
45
+
46
+ # known vulnerabilities in the locked dependencies
47
+ audit:
48
+ uv lock --check
49
+ uv export --format requirements-txt --all-extras --no-emit-project --quiet > .audit-requirements.txt
50
+ uvx pip-audit@2.10.1 -r .audit-requirements.txt --disable-pip --require-hashes; status=$$?; rm -f .audit-requirements.txt; exit $$status
@@ -0,0 +1,151 @@
1
+ Metadata-Version: 2.5
2
+ Name: kengash-ai
3
+ Version: 0.1.0
4
+ Summary: Run many projects at once with subscription coding-agent CLIs (Claude Code, Codex, Antigravity).
5
+ Project-URL: Homepage, https://github.com/normatov07/kengash-ai
6
+ Project-URL: Repository, https://github.com/normatov07/kengash-ai
7
+ Project-URL: Issues, https://github.com/normatov07/kengash-ai/issues
8
+ Project-URL: Changelog, https://github.com/normatov07/kengash-ai/blob/main/CHANGELOG.md
9
+ Project-URL: Documentation, https://github.com/normatov07/kengash-ai#readme
10
+ Author: normatov13
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: agents,ai,antigravity,claude-code,cli,codex,harness,kanban
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Environment :: Web Environment
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Operating System :: MacOS
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3 :: Only
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Software Development
26
+ Classifier: Topic :: Software Development :: Build Tools
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.12
29
+ Requires-Dist: filelock>=3.16
30
+ Requires-Dist: pydantic>=2.9
31
+ Requires-Dist: ruamel-yaml-clib>=0.2.12; platform_python_implementation == 'CPython'
32
+ Requires-Dist: ruamel-yaml>=0.18
33
+ Requires-Dist: typer>=0.12
34
+ Provides-Extra: ui
35
+ Requires-Dist: fastapi>=0.115; extra == 'ui'
36
+ Requires-Dist: uvicorn>=0.32; extra == 'ui'
37
+ Description-Content-Type: text/markdown
38
+
39
+ # Kengash AI
40
+
41
+ [![ci](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml/badge.svg)](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml)
42
+
43
+ A council of coding agents (*kengash* is Uzbek for council) that works many projects at once with the subscriptions you already pay for (Claude Code, Codex, Antigravity), through their official CLIs, never API keys.
44
+
45
+ You talk to your usual agent. Skills installed into it turn a prompt into a reviewed plan and small tickets, then run each ticket through an agent loop sized to its importance (plan, review, implement, review, security), in parallel across projects, each ticket in its own git worktree. A deterministic `harness` CLI does every mechanical step, a shared memory store keeps decisions across sessions, and a local web UI shows and steers it all.
46
+
47
+ ## Features
48
+
49
+ - **Subscriptions, not API keys.** Drives `claude`, `codex` and `agy` headless under your own login, reuses one CLI session per ticket and role, and strips provider API-key variables from every worker.
50
+ - **Importance-based loops.** Simple, standard and critical workflows with loop caps, token caps, stall detection and send-back edges; you approve extra loops.
51
+ - **Parallel and safe.** Tickets that touch the same paths run one at a time; the rest run side by side, each in its own worktree, merged when you say so.
52
+ - **Your own agents.** Add a role and its step (`read`, `edit` or `review`) from the CLI or the UI, with a starter skill you can edit.
53
+ - **Memory that lasts.** One store at `~/.harness`, linked into every project by a folder link: MEMORY.md and DECISIONS.md for all projects, PROCESS.md and SETTINGS.md per project, compacted when they grow.
54
+ - **A local control room.** Overview, task board, ticket sheets with every change, a workflow editor, agents and providers, settings and memory, live over server-sent events.
55
+
56
+ ## Requirements
57
+
58
+ - Linux or macOS (on Windows, use WSL), Python 3.12 or newer, git.
59
+ - [uv](https://docs.astral.sh/uv/) to install.
60
+ - At least one signed-in agent CLI: Claude Code (`claude`), Codex (`codex`) or Antigravity (`agy`).
61
+
62
+ ## Install
63
+
64
+ uv tool install 'kengash-ai[ui] @ git+https://github.com/normatov07/kengash-ai'
65
+ harness skills install --agent claude,codex,antigravity --global
66
+ harness doctor
67
+
68
+ Once a release is on PyPI: `uv tool install 'kengash-ai[ui]'` or `pipx install 'kengash-ai[ui]'`. Leave out `[ui]` for the CLI alone.
69
+
70
+ The skills can also come from Claude Code's plugin marketplace (`/plugin install kengash-ai --marketplace normatov07/kengash-ai`) or `npx skills add normatov07/kengash-ai`.
71
+
72
+ ## Quick start
73
+
74
+ cd ~/code/my-app
75
+ harness init # registers the project and links .harness to the store
76
+
77
+ Then, in your agent:
78
+
79
+ 1. `/to-plan` (or `/to-plan-with-grill` to be interviewed first): a plan, reviewed by an agent on another provider.
80
+ 2. `/to-ticket`: the plan becomes tickets with importance, dependencies and touched paths.
81
+ 3. `/to-loop`: tickets run in their loops; the agent waits, reports gates and asks before granting loops or merging.
82
+ 4. `/open-ui` (or `harness ui open`): the web UI on 127.0.0.1 behind a private link.
83
+
84
+ ## Commands
85
+
86
+ | Command | Does |
87
+ |---|---|
88
+ | `harness init`, `link`, `adopt`, `doctor [--fix]` | register projects, repair links, check everything |
89
+ | `harness plan …`, `ticket …` | plans and tickets (agents use these; they never edit store files) |
90
+ | `harness next`, `run`, `wait`, `status` | what can start, start it, wait for gates, a summary |
91
+ | `harness approve`, `park`, `stop`, `pause`, `resume`, `merge` | steer running work |
92
+ | `harness settings show\|get\|check`, `memory …`, `context` | settings, memory and the conductor's digest |
93
+ | `harness agent new\|remove` | your own roles and steps |
94
+ | `harness skills install\|lint\|eval`, `ui open\|stop` | skills and the web UI |
95
+
96
+ Every command takes `--help`, and most take `--json`. Exit codes: 0 done, 1 a problem, 3 timed out, 4 setup needed, 5 your decision needed.
97
+
98
+ ## Configuration
99
+
100
+ Settings live in SETTINGS.md files: the package defaults, then `~/.harness/defaults/SETTINGS.md`, then each project's own copy (written by `harness init` and never overwritten). Edit them in the UI's Settings, Workflow and Agents screens, which change only the lines you touch, or by hand and check them with `harness settings check`. Common keys:
101
+
102
+ loop_max.critical: 6
103
+ agents:
104
+ implementer: {on: true, cli: codex, skill: implement, fallback: [claude/sonnet]}
105
+ sessions.per_provider: {claude: 3, codex: 3, antigravity: 2}
106
+ logs.keep_days: 30 # worker logs untouched this long are removed; 0 keeps all
107
+
108
+ Add your own agent to a workflow, for example a performance reviewer that sends failing work back:
109
+
110
+ harness agent new perf-reviewer --kind review --does "Flag N+1 queries and hot loops." \
111
+ --cli claude/sonnet --workflow critical --after review_code
112
+
113
+ ## Security model
114
+
115
+ - Providers run only through their official binaries under your login; harness never reads or reuses OAuth tokens and removes provider API-key variables from worker environments.
116
+ - The UI binds to 127.0.0.1, checks Host and Origin, needs a fresh per-run token (kept in an `HttpOnly`, `SameSite=Strict` cookie), requires an `X-Harness` header on every change, and sends a strict Content Security Policy.
117
+ - The store is a private git repository; text written to memory, tickets and the journal is redacted for common secret shapes.
118
+ - Workers are short-lived processes, one per job; nothing runs in the background between jobs.
119
+
120
+ Report vulnerabilities privately: see [SECURITY.md](SECURITY.md).
121
+
122
+ ## Troubleshooting
123
+
124
+ - `harness doctor` names each problem and its fix; `harness doctor --fix` repairs links, exclude entries and dead workers, and prunes old logs.
125
+ - A provider shows "signed out": run the sign-in command the Agents screen or `doctor` prints, then "Check sign-in again".
126
+ - A ticket is stalled or at a loop cap: open it on the board; the sheet shows the findings and the approve or park actions.
127
+ - Worker logs are in `~/.harness/runtime/logs/`.
128
+
129
+ ## Uninstall
130
+
131
+ harness ui stop
132
+ uv tool uninstall kengash-ai
133
+
134
+ Your store stays in `~/.harness`; remove it and each project's `.harness` link by hand if you want them gone.
135
+
136
+ ## Develop
137
+
138
+ Requires uv and GNU make. See [CONTRIBUTING.md](CONTRIBUTING.md).
139
+
140
+ make setup # environment and git hooks
141
+ make check # format, lint, types, tests, docs and skill checks
142
+ make dist # build and check the release artifacts
143
+ make audit # known vulnerabilities in the locked dependencies
144
+ make live # live smoke on the real CLIs (spends quota)
145
+ make evals # skill evals on the real CLIs (spends quota)
146
+
147
+ Design: [docs/superpowers/specs/](docs/superpowers/specs/). Agent instructions: [AGENTS.md](AGENTS.md). Changes: [CHANGELOG.md](CHANGELOG.md).
148
+
149
+ ## License
150
+
151
+ MIT
@@ -0,0 +1,113 @@
1
+ # Kengash AI
2
+
3
+ [![ci](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml/badge.svg)](https://github.com/normatov07/kengash-ai/actions/workflows/ci.yml)
4
+
5
+ A council of coding agents (*kengash* is Uzbek for council) that works many projects at once with the subscriptions you already pay for (Claude Code, Codex, Antigravity), through their official CLIs, never API keys.
6
+
7
+ You talk to your usual agent. Skills installed into it turn a prompt into a reviewed plan and small tickets, then run each ticket through an agent loop sized to its importance (plan, review, implement, review, security), in parallel across projects, each ticket in its own git worktree. A deterministic `harness` CLI does every mechanical step, a shared memory store keeps decisions across sessions, and a local web UI shows and steers it all.
8
+
9
+ ## Features
10
+
11
+ - **Subscriptions, not API keys.** Drives `claude`, `codex` and `agy` headless under your own login, reuses one CLI session per ticket and role, and strips provider API-key variables from every worker.
12
+ - **Importance-based loops.** Simple, standard and critical workflows with loop caps, token caps, stall detection and send-back edges; you approve extra loops.
13
+ - **Parallel and safe.** Tickets that touch the same paths run one at a time; the rest run side by side, each in its own worktree, merged when you say so.
14
+ - **Your own agents.** Add a role and its step (`read`, `edit` or `review`) from the CLI or the UI, with a starter skill you can edit.
15
+ - **Memory that lasts.** One store at `~/.harness`, linked into every project by a folder link: MEMORY.md and DECISIONS.md for all projects, PROCESS.md and SETTINGS.md per project, compacted when they grow.
16
+ - **A local control room.** Overview, task board, ticket sheets with every change, a workflow editor, agents and providers, settings and memory, live over server-sent events.
17
+
18
+ ## Requirements
19
+
20
+ - Linux or macOS (on Windows, use WSL), Python 3.12 or newer, git.
21
+ - [uv](https://docs.astral.sh/uv/) to install.
22
+ - At least one signed-in agent CLI: Claude Code (`claude`), Codex (`codex`) or Antigravity (`agy`).
23
+
24
+ ## Install
25
+
26
+ uv tool install 'kengash-ai[ui] @ git+https://github.com/normatov07/kengash-ai'
27
+ harness skills install --agent claude,codex,antigravity --global
28
+ harness doctor
29
+
30
+ Once a release is on PyPI: `uv tool install 'kengash-ai[ui]'` or `pipx install 'kengash-ai[ui]'`. Leave out `[ui]` for the CLI alone.
31
+
32
+ The skills can also come from Claude Code's plugin marketplace (`/plugin install kengash-ai --marketplace normatov07/kengash-ai`) or `npx skills add normatov07/kengash-ai`.
33
+
34
+ ## Quick start
35
+
36
+ cd ~/code/my-app
37
+ harness init # registers the project and links .harness to the store
38
+
39
+ Then, in your agent:
40
+
41
+ 1. `/to-plan` (or `/to-plan-with-grill` to be interviewed first): a plan, reviewed by an agent on another provider.
42
+ 2. `/to-ticket`: the plan becomes tickets with importance, dependencies and touched paths.
43
+ 3. `/to-loop`: tickets run in their loops; the agent waits, reports gates and asks before granting loops or merging.
44
+ 4. `/open-ui` (or `harness ui open`): the web UI on 127.0.0.1 behind a private link.
45
+
46
+ ## Commands
47
+
48
+ | Command | Does |
49
+ |---|---|
50
+ | `harness init`, `link`, `adopt`, `doctor [--fix]` | register projects, repair links, check everything |
51
+ | `harness plan …`, `ticket …` | plans and tickets (agents use these; they never edit store files) |
52
+ | `harness next`, `run`, `wait`, `status` | what can start, start it, wait for gates, a summary |
53
+ | `harness approve`, `park`, `stop`, `pause`, `resume`, `merge` | steer running work |
54
+ | `harness settings show\|get\|check`, `memory …`, `context` | settings, memory and the conductor's digest |
55
+ | `harness agent new\|remove` | your own roles and steps |
56
+ | `harness skills install\|lint\|eval`, `ui open\|stop` | skills and the web UI |
57
+
58
+ Every command takes `--help`, and most take `--json`. Exit codes: 0 done, 1 a problem, 3 timed out, 4 setup needed, 5 your decision needed.
59
+
60
+ ## Configuration
61
+
62
+ Settings live in SETTINGS.md files: the package defaults, then `~/.harness/defaults/SETTINGS.md`, then each project's own copy (written by `harness init` and never overwritten). Edit them in the UI's Settings, Workflow and Agents screens, which change only the lines you touch, or by hand and check them with `harness settings check`. Common keys:
63
+
64
+ loop_max.critical: 6
65
+ agents:
66
+ implementer: {on: true, cli: codex, skill: implement, fallback: [claude/sonnet]}
67
+ sessions.per_provider: {claude: 3, codex: 3, antigravity: 2}
68
+ logs.keep_days: 30 # worker logs untouched this long are removed; 0 keeps all
69
+
70
+ Add your own agent to a workflow, for example a performance reviewer that sends failing work back:
71
+
72
+ harness agent new perf-reviewer --kind review --does "Flag N+1 queries and hot loops." \
73
+ --cli claude/sonnet --workflow critical --after review_code
74
+
75
+ ## Security model
76
+
77
+ - Providers run only through their official binaries under your login; harness never reads or reuses OAuth tokens and removes provider API-key variables from worker environments.
78
+ - The UI binds to 127.0.0.1, checks Host and Origin, needs a fresh per-run token (kept in an `HttpOnly`, `SameSite=Strict` cookie), requires an `X-Harness` header on every change, and sends a strict Content Security Policy.
79
+ - The store is a private git repository; text written to memory, tickets and the journal is redacted for common secret shapes.
80
+ - Workers are short-lived processes, one per job; nothing runs in the background between jobs.
81
+
82
+ Report vulnerabilities privately: see [SECURITY.md](SECURITY.md).
83
+
84
+ ## Troubleshooting
85
+
86
+ - `harness doctor` names each problem and its fix; `harness doctor --fix` repairs links, exclude entries and dead workers, and prunes old logs.
87
+ - A provider shows "signed out": run the sign-in command the Agents screen or `doctor` prints, then "Check sign-in again".
88
+ - A ticket is stalled or at a loop cap: open it on the board; the sheet shows the findings and the approve or park actions.
89
+ - Worker logs are in `~/.harness/runtime/logs/`.
90
+
91
+ ## Uninstall
92
+
93
+ harness ui stop
94
+ uv tool uninstall kengash-ai
95
+
96
+ Your store stays in `~/.harness`; remove it and each project's `.harness` link by hand if you want them gone.
97
+
98
+ ## Develop
99
+
100
+ Requires uv and GNU make. See [CONTRIBUTING.md](CONTRIBUTING.md).
101
+
102
+ make setup # environment and git hooks
103
+ make check # format, lint, types, tests, docs and skill checks
104
+ make dist # build and check the release artifacts
105
+ make audit # known vulnerabilities in the locked dependencies
106
+ make live # live smoke on the real CLIs (spends quota)
107
+ make evals # skill evals on the real CLIs (spends quota)
108
+
109
+ Design: [docs/superpowers/specs/](docs/superpowers/specs/). Agent instructions: [AGENTS.md](AGENTS.md). Changes: [CHANGELOG.md](CHANGELOG.md).
110
+
111
+ ## License
112
+
113
+ MIT
@@ -0,0 +1,14 @@
1
+ # Docs index
2
+
3
+ One line per doc: what it holds and when to read it.
4
+
5
+ | Doc | Read when |
6
+ |---|---|
7
+ | `architecture.md` | adding or moving a module, or changing module dependencies |
8
+ | `releasing.md` | publishing a version to PyPI and GitHub, or setting that up |
9
+ | `conventions/instruction-files.md` | writing AGENTS.md, CLAUDE.md, GEMINI.md or anything under `docs/` |
10
+ | `conventions/skills.md` | writing a skill or role skill |
11
+ | `conventions/memory-files.md` | touching MEMORY.md, DECISIONS.md, PROCESS.md, SETTINGS.md, plan or ticket formats |
12
+ | `modules/<module>/README.md` | changing that module (one per module under `src/kengash_ai/`) |
13
+ | `superpowers/specs/` | the design contract of each sub-project |
14
+ | `superpowers/plans/` | step-by-step implementation plans |
@@ -0,0 +1,85 @@
1
+ # Architecture
2
+
3
+ System map of Kengash AI. The contract is the spec, `docs/superpowers/specs/2026-10-22-super-harness-design.md`; this page records what exists now. Update the Status columns whenever a module or sub-project lands.
4
+
5
+ ## Flow
6
+
7
+ ```
8
+ You ──prompt──▶ CONDUCTOR: your claude | codex | agy session, running installed skills
9
+ │ shell calls, compact output
10
+ ▼
11
+ harness CLI (deterministic) ──starts──▶ detached workers, one per job
12
+ │ │ one CLI session per ticket×role, resumed
13
+ ▼ ▼
14
+ store ~/.harness claude -p · codex exec · agy -p
15
+ (Markdown + JSONL, a git repo) (official binaries, the user's login)
16
+ ▲
17
+ UI: harness ui → FastAPI + SSE on 127.0.0.1, through the same `ops` layer as the CLI
18
+ ```
19
+
20
+ ## Modules
21
+
22
+ | Module | Responsibility | May import | Status |
23
+ |---|---|---|---|
24
+ | `cli` | Typer command surface, output formatting | `ops`, `model` | `--version`, `init`, `doctor`, `link`, `adopt`, `settings`, `memory` (incl. `compact`), `context`, `plan` (incl. `review`), `ticket` (incl. `changes`, `attach`), `status`, `next`, `run`, `wait`, `approve`, `park`, `stop`, `pause`, `resume`, `merge`, `skills lint|install|eval` |
25
+ | `model` | Pydantic schemas: Plan, Ticket, Settings, Event, StepRequest, StepResult, Verdict | — | Plan, Ticket, TicketInput, Registry, Settings, Event, errors (SP2 M1–M3); runtime files, provider options (SP3 M1); step contract, provider status, trust file (SP3 M2); worker, ticket-state, cursor files (SP3 M3); job kinds, `WaitTimeout` (SP3 M4); custom steps, `role_of`/`kind_of` (SP6) |
26
+ | `store` | Paths, frontmatter, atomic writes, locks, status moves, registry, links, store commits | `model` | built (SP2 M1); runtime slots, claims, pause flags (SP3 M1); repo trust digests (SP3 M2); UI record, `yamledit` (SP5) |
27
+ | `settings` | Seed, load, validate, resolve; comment-preserving edits | `model`, `store` | built (SP2 M2); comment-preserving writes, overrides (SP5 M2) |
28
+ | `memory` | MEMORY/DECISIONS/PROCESS writes and caps | `model`, `store`, `journal`, `settings` | built (SP2 M2): MEMORY and DECISIONS writes; compaction checks and writes, DECISIONS archive (SP3 M4) |
29
+ | `journal` | Append-only JSONL events, follow, usage aggregates | `model`, `store` | built (SP2 M2): append, read; positions (SP3 M3); day files (SP5 M2) |
30
+ | `ops` | Use cases shared by CLI, UI and workers | all units above; starts workers as processes | `projects`, `workspace`, `records`, `plans`, `tickets`, `status` (SP2 M1–M3); `queue` (SP3 M1); `providers` (SP3 M2); `slots`, `agents`, `prompts`, `lifecycle`, `steps`, `controls`, `merging`, `waiting`, `changes` (SP3 M3); `calls`, `jobs`, `reviews`, `compaction` (SP3 M4); `skills` (SP4 M1); `evals` (SP4 M2); `views`, `ui_server` (SP5 M1); `configure`, the screen views (SP5 M2); `agent_config` (SP6) |
31
+ | `scheduler` | Runnable set: dependencies, `touches` overlap, provider slots, fairness | `model` | built (SP3 M1) |
32
+ | `workflow` | Step graph per importance, routing, loop and budget caps, stalls | `model` | built (SP3 M1) |
33
+ | `adapters` | One driver per provider CLI behind the `Provider` protocol | `model` | built (SP3 M2): claude, codex, antigravity, shell |
34
+ | `gitops` | Worktrees, commits with trailers, diffs, rebase, merge | `model` | built (SP3 M2) |
35
+ | `worker` | Runs one job through `ops`; heartbeats; handles signals | `ops`, `model` | built (SP3 M3–M4): `ticket`, `plan-review` and `compact` jobs |
36
+ | `roles` | Packaged role skill files (data only) | — | built (SP4 M1): seven role skills, seeded into `defaults/roles/` |
37
+ | `ui` | FastAPI app, SSE, static assets | `ops`, `model` | built (SP5 M1–M2, canvas parity): token auth, Host, Origin and `X-Harness` checks, journal SSE, the seven screens matching the canvas, settings saves; New agent (SP6) |
38
+
39
+ `adapters` and `gitops` never touch the store. Import-linter (`make lint`) enforces the layers `cli | worker | ui > ops > memory > journal | settings > store > model` (`journal` and `settings` independent of each other) and keeps `cli`, `worker` and `ui` from importing `store`, `settings`, `memory` or `journal` directly; `workflow`, `scheduler`, `adapters` and `gitops` import only `model`; each new module adds its contract.
40
+
41
+ ## Store (built in SP2 M1)
42
+
43
+ ```
44
+ ~/.harness/ canonical store, a git repo (mode 0700)
45
+ ├── registry.yaml slug → repo path, base branch
46
+ ├── memory/ MEMORY.md, DECISIONS.md (global), archive/
47
+ ├── defaults/ SETTINGS.md, PROCESS.md, roles/ (seeds)
48
+ ├── projects/<slug>/ SETTINGS.md, PROCESS.md, memory -> ../../memory,
49
+ │ plans/, tasks/{in_queue,in_process,done}/
50
+ ├── journal/YYYY-MM-DD.jsonl events
51
+ ├── worktrees/<slug>/hrn-<id8>/ ticket worktrees (git-ignored)
52
+ └── runtime/ locks, pids, heartbeats, logs (git-ignored)
53
+ ```
54
+
55
+ Each registered repo gets one directory symlink, `<repo>/.harness -> ~/.harness/projects/<slug>`, listed in its `.git/info/exclude`.
56
+
57
+ ## Repository layout
58
+
59
+ - `src/kengash_ai/`: the package; each module has `docs/modules/<module>/README.md`
60
+ - `scripts/`: repository checks (`check_md_caps.py`, `check_docs_sync.py`), run by `make docs`, pre-commit and CI
61
+ - `evals/`: skill eval scenarios (`make evals`, never in `make check`)
62
+ - `tests/`: the pytest suite (`make test`); `tests/live/` runs the real CLIs (`make live`, never in `make check`)
63
+ - `docs/`: index in `docs/README.md`
64
+ - `skills/`: installed skills (data; force-included in the wheel); `.claude-plugin/` and `.antigravity-plugin/`: plugin manifests
65
+
66
+ ## Sub-projects
67
+
68
+ | # | Sub-project | Status |
69
+ |---|---|---|
70
+ | 1 | Foundation | done: `docs/superpowers/plans/2026-10-22-foundation.md`; CI runs after the first push |
71
+ | 2 | Store + `harness` CLI | done: M1 store core, M2 settings, memory, journal, M3 plans and tickets; plans in `docs/superpowers/plans/` |
72
+ | 3 | Engine | done: spec `docs/superpowers/specs/2026-10-22-sp3-engine-design.md`; M1 engine rules, M2 providers and git, M3 workers and controls, M4 plan review, compaction and live smoke (green for claude and agy on 2026-10-23; codex once installed) |
73
+ | 4 | Skills | done: spec `docs/superpowers/specs/2026-10-23-sp4-skills-design.md`; M1 skill toolkit and role skills, M2 eval runner, M3 the five installed skills (evals green on claude and agy on 2026-10-23; codex once installed) |
74
+ | 5 | Web UI | done: spec `docs/superpowers/specs/2026-10-23-sp5-ui-design.md`; M1 server and monitor screens, M2 inspect and configure screens, canvas parity, M3 the `open-ui` skill (eval green on claude and agy on 2026-10-24) and the parity checklist |
75
+ | 6 | Custom agents | done: spec `docs/superpowers/specs/2026-10-26-sp6-custom-agents-design.md`; custom steps of kind read, edit or review, `harness agent new\|remove`, the New agent dialog, CI fixed for GitHub runners and macOS, canvas follow-ups; Antigravity serves Google's subscription plans (SP7 replaced the gemini provider) |
76
+ | 7 | Production readiness | done: spec `docs/superpowers/specs/2026-10-26-sp7-production-design.md`; content-keyed parse caches (views 24 s → under 1 s on 1,500 tickets), UI security headers, ruff security rules, log retention, Windows guard, clean artifacts with `scripts/check_dist.py`, CI on 3.12–3.14 with package and audit jobs, a tag-driven PyPI release with attestations, Dependabot, accessibility (axe clean), community docs; Antigravity replaces the gemini provider |
77
+
78
+ ## Agent context files
79
+
80
+ | Agent | Reads | Verified |
81
+ |---|---|---|
82
+ | Claude Code | `CLAUDE.md`, which imports `AGENTS.md` with `@AGENTS.md` | documented import syntax |
83
+ | Codex | `AGENTS.md` natively | documentation only; Codex CLI is not installed on the dev machine |
84
+ | Gemini CLI | `GEMINI.md`, which imports `AGENTS.md` with `@AGENTS.md` | documentation only; Gemini CLI is not installed |
85
+ | Antigravity `agy` | `AGENTS.md` (legacy `GEMINI.md` also supported) | 2026-10-22, agy 1.4.5: a headless run quoted hard rule 3 from `AGENTS.md` with `GEMINI.md` present |
@@ -0,0 +1,62 @@
1
+ # Writing instruction files
2
+
3
+ How to write the files agents read: `AGENTS.md`, `CLAUDE.md`, `GEMINI.md` and everything under `docs/`. Read this before adding or editing any of them.
4
+
5
+ ## Layers
6
+
7
+ 1. **Entry file** `AGENTS.md`: what the project is, the commands, at most 15 hard rules, and "Read when" links. Every agent loads it in every session, so each line costs tokens every time.
8
+ 2. **Topic docs** under `docs/`: one subject each, loaded only when a "Read when" trigger fires.
9
+ 3. **Code layer**: types, docstrings and config comments. Agents see these while reading code; never repeat them in docs.
10
+
11
+ ## Caps
12
+
13
+ `scripts/check_md_caps.py` enforces these through `make docs` and the pre-commit hook:
14
+
15
+ | File | Cap |
16
+ |---|---|
17
+ | `AGENTS.md` | 100 lines |
18
+ | `docs/**/*.md` | 150 lines; aim for 50–150 for topic docs |
19
+ | `docs/superpowers/**` | exempt (specs and plans) |
20
+
21
+ When a doc reaches its cap, split it by subject and link the parts; never raise the cap.
22
+
23
+ ## Pointer files
24
+
25
+ - `CLAUDE.md`: the `/init` prefix plus `@AGENTS.md`, which Claude Code imports.
26
+ - `GEMINI.md`: `@AGENTS.md`, which Gemini CLI imports.
27
+ - Codex and Antigravity `agy` read `AGENTS.md` directly (see `docs/architecture.md`, Agent context files).
28
+
29
+ Pointer files hold no content of their own; put it in `AGENTS.md` or a topic doc.
30
+
31
+ ## Writing rules
32
+
33
+ 1. Every link says what it holds and when to read it, trigger word first: "`docs/conventions/skills.md`: writing a skill".
34
+ 2. Every rule that is not obvious says why and when it applies. Delete it when the why expires.
35
+ 3. Phrase instructions positively: say what to do.
36
+ 4. Give the shape of an output as a template. Keep "never" for discipline rules an agent might skip under pressure, and put the reason next to it.
37
+ 5. Put the most important rules at the top or the bottom; the middle of a long file gets the least attention.
38
+ 6. Keep one source of truth: link to it instead of copying, and never restate what code or config already says.
39
+ 7. Commands you reference are quiet on success and print only failures, so agents see signal, not noise.
40
+ 8. Prune on every edit: delete stale lines and lines that change nothing.
41
+
42
+ ## Module docs
43
+
44
+ Every module under `src/kengash_ai/` has `docs/modules/<module>/README.md` with four sections:
45
+
46
+ - **Purpose**: one or two sentences.
47
+ - **Interface**: what users and other modules call.
48
+ - **Invariants**: what must stay true.
49
+ - **Changes**: newest first, at most 20 lines; older history lives in git.
50
+
51
+ The doc changes in the same commit as the module. `scripts/check_docs_sync.py` enforces this: `make docs` checks the range `DOCS_BASE...HEAD`, the pre-commit hook checks staged files. A top-level `.py` file counts as a module; package dunder files such as `__init__.py` do not.
52
+
53
+ ## Who reads and writes what
54
+
55
+ | File | Read by | Written by |
56
+ |---|---|---|
57
+ | `AGENTS.md` | every agent, every session | humans and agents, reviewed in pull requests |
58
+ | `docs/modules/*` | agents changing that module | whoever changes the module |
59
+ | `docs/conventions/*` | anyone writing that kind of file | humans |
60
+ | `docs/superpowers/specs/`, `plans/` | anyone working on that sub-project | the brainstorming and writing-plans workflows |
61
+
62
+ Sources: walkinglabs learn-harness-engineering, lecture 4; HumanLayer, "Skill issue: harness engineering for coding agents"; Matt Pocock, `writing-for-agents`.