minima-cli 0.4.10__tar.gz → 0.7.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 (593) hide show
  1. minima_cli-0.7.0/.github/workflows/release-cli.yml +140 -0
  2. {minima_cli-0.4.10 → minima_cli-0.7.0}/.gitignore +4 -0
  3. minima_cli-0.7.0/AGENTS.md +58 -0
  4. {minima_cli-0.4.10 → minima_cli-0.7.0}/CHANGELOG.md +60 -0
  5. minima_cli-0.7.0/Makefile +56 -0
  6. {minima_cli-0.4.10 → minima_cli-0.7.0}/PKG-INFO +11 -32
  7. {minima_cli-0.4.10 → minima_cli-0.7.0}/README.md +10 -23
  8. minima_cli-0.7.0/docs/agent-core-architecture.md +748 -0
  9. minima_cli-0.7.0/docs/agent-core-implementation-plan.md +168 -0
  10. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/api-reference.md +2 -1
  11. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/configuration.md +6 -1
  12. minima_cli-0.7.0/docs/harness.md +22 -0
  13. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/publishing.md +17 -20
  14. minima_cli-0.7.0/docs-site/.dockerignore +5 -0
  15. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs-site/Dockerfile +15 -6
  16. minima_cli-0.7.0/docs-site/components/Accordion.tsx +38 -0
  17. minima_cli-0.7.0/docs-site/components/Badge.tsx +49 -0
  18. minima_cli-0.7.0/docs-site/components/Card.tsx +148 -0
  19. minima_cli-0.7.0/docs-site/components/CardGroup.tsx +22 -0
  20. minima_cli-0.7.0/docs-site/components/Frame.tsx +35 -0
  21. minima_cli-0.7.0/docs-site/components/Note.tsx +41 -0
  22. minima_cli-0.7.0/docs-site/components/PageHeader.tsx +28 -0
  23. minima_cli-0.7.0/docs-site/components/Steps.tsx +76 -0
  24. minima_cli-0.7.0/docs-site/components/Tabs.tsx +70 -0
  25. minima_cli-0.7.0/docs-site/components/index.ts +9 -0
  26. minima_cli-0.7.0/docs-site/components/sidebar.ts +95 -0
  27. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs-site/netlify.toml +1 -1
  28. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs-site/nginx.conf +12 -13
  29. minima_cli-0.7.0/docs-site/package-lock.json +10525 -0
  30. minima_cli-0.7.0/docs-site/package.json +22 -0
  31. minima_cli-0.4.10/docs-site/src/content/docs/api-reference.mdx → minima_cli-0.7.0/docs-site/pages/api-reference/endpoints.mdx +64 -20
  32. minima_cli-0.7.0/docs-site/pages/harness/cli.mdx +96 -0
  33. minima_cli-0.7.0/docs-site/pages/harness/configuration.mdx +108 -0
  34. minima_cli-0.7.0/docs-site/pages/harness/installation.mdx +101 -0
  35. minima_cli-0.7.0/docs-site/pages/harness/interactive.mdx +82 -0
  36. minima_cli-0.7.0/docs-site/pages/harness/overview.mdx +49 -0
  37. minima_cli-0.7.0/docs-site/pages/harness/routing.mdx +54 -0
  38. minima_cli-0.7.0/docs-site/pages/harness/sessions.mdx +40 -0
  39. minima_cli-0.7.0/docs-site/pages/harness/tools.mdx +80 -0
  40. minima_cli-0.7.0/docs-site/pages/harness/troubleshooting.mdx +56 -0
  41. {minima_cli-0.4.10/docs-site/src/content/docs → minima_cli-0.7.0/docs-site/pages}/index.mdx +34 -26
  42. {minima_cli-0.4.10/docs-site/src/content/docs → minima_cli-0.7.0/docs-site/pages/sdk}/client-sdk.mdx +11 -9
  43. {minima_cli-0.4.10/docs-site/src/content/docs → minima_cli-0.7.0/docs-site/pages/sdk}/concepts.mdx +9 -7
  44. {minima_cli-0.4.10/docs-site/src/content/docs → minima_cli-0.7.0/docs-site/pages/sdk}/examples.mdx +13 -10
  45. minima_cli-0.7.0/docs-site/pages/sdk/getting-started.mdx +71 -0
  46. minima_cli-0.7.0/docs-site/public/images/favicon.png +0 -0
  47. minima_cli-0.7.0/docs-site/public/images/logo-dark.svg +11 -0
  48. minima_cli-0.7.0/docs-site/public/images/logo-light.svg +11 -0
  49. minima_cli-0.7.0/docs-site/public/styles/global.css +63 -0
  50. minima_cli-0.7.0/docs-site/tsconfig.json +20 -0
  51. minima_cli-0.7.0/docs-site/vocs.config.ts +96 -0
  52. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/README.md +0 -1
  53. minima_cli-0.7.0/maybe.js +64 -0
  54. minima_cli-0.7.0/maybe.ts +84 -0
  55. minima_cli-0.7.0/packages/tui/.gitignore +4 -0
  56. minima_cli-0.7.0/packages/tui/README.md +73 -0
  57. minima_cli-0.7.0/packages/tui/biome.json +25 -0
  58. minima_cli-0.7.0/packages/tui/bun.lock +323 -0
  59. minima_cli-0.7.0/packages/tui/package.json +43 -0
  60. minima_cli-0.7.0/packages/tui/scripts/build-all.ts +31 -0
  61. minima_cli-0.7.0/packages/tui/scripts/build.ts +43 -0
  62. minima_cli-0.7.0/packages/tui/scripts/install.sh +59 -0
  63. minima_cli-0.7.0/packages/tui/scripts/stub-devtools.ts +19 -0
  64. minima_cli-0.7.0/packages/tui/src/agent/agent.ts +256 -0
  65. minima_cli-0.7.0/packages/tui/src/agent/events.ts +119 -0
  66. minima_cli-0.7.0/packages/tui/src/agent/index.ts +10 -0
  67. minima_cli-0.7.0/packages/tui/src/agent/loop.ts +323 -0
  68. minima_cli-0.7.0/packages/tui/src/agent/state.ts +112 -0
  69. minima_cli-0.7.0/packages/tui/src/agent/tools.ts +79 -0
  70. minima_cli-0.7.0/packages/tui/src/ai/compat.ts +21 -0
  71. minima_cli-0.7.0/packages/tui/src/ai/events.ts +136 -0
  72. minima_cli-0.7.0/packages/tui/src/ai/index.ts +28 -0
  73. minima_cli-0.7.0/packages/tui/src/ai/provider_catalog.ts +114 -0
  74. minima_cli-0.7.0/packages/tui/src/ai/provider_quirks.ts +25 -0
  75. minima_cli-0.7.0/packages/tui/src/ai/providers/_common.ts +50 -0
  76. minima_cli-0.7.0/packages/tui/src/ai/providers/anthropic.ts +286 -0
  77. minima_cli-0.7.0/packages/tui/src/ai/providers/base.ts +50 -0
  78. minima_cli-0.7.0/packages/tui/src/ai/providers/faux.ts +161 -0
  79. minima_cli-0.7.0/packages/tui/src/ai/providers/google.ts +294 -0
  80. minima_cli-0.7.0/packages/tui/src/ai/providers/index.ts +71 -0
  81. minima_cli-0.7.0/packages/tui/src/ai/providers/openai_compat.ts +338 -0
  82. minima_cli-0.7.0/packages/tui/src/ai/registry.ts +44 -0
  83. minima_cli-0.7.0/packages/tui/src/ai/stream.ts +81 -0
  84. minima_cli-0.7.0/packages/tui/src/ai/types.ts +224 -0
  85. minima_cli-0.7.0/packages/tui/src/ai/usage.ts +34 -0
  86. minima_cli-0.7.0/packages/tui/src/cli/main.ts +605 -0
  87. minima_cli-0.7.0/packages/tui/src/db/metrics.ts +167 -0
  88. minima_cli-0.7.0/packages/tui/src/db/minima_db.ts +442 -0
  89. minima_cli-0.7.0/packages/tui/src/db/rehydrate.ts +80 -0
  90. minima_cli-0.7.0/packages/tui/src/db/sink.ts +161 -0
  91. minima_cli-0.7.0/packages/tui/src/errtext.ts +11 -0
  92. minima_cli-0.7.0/packages/tui/src/index.ts +14 -0
  93. minima_cli-0.7.0/packages/tui/src/minima/budget.ts +251 -0
  94. minima_cli-0.7.0/packages/tui/src/minima/catalog.ts +150 -0
  95. minima_cli-0.7.0/packages/tui/src/minima/client.ts +196 -0
  96. minima_cli-0.7.0/packages/tui/src/minima/config.ts +77 -0
  97. minima_cli-0.7.0/packages/tui/src/minima/errors.ts +37 -0
  98. minima_cli-0.7.0/packages/tui/src/minima/index.ts +31 -0
  99. minima_cli-0.7.0/packages/tui/src/minima/judge.ts +173 -0
  100. minima_cli-0.7.0/packages/tui/src/minima/mapping.ts +105 -0
  101. minima_cli-0.7.0/packages/tui/src/minima/memory.ts +171 -0
  102. minima_cli-0.7.0/packages/tui/src/minima/meter.ts +139 -0
  103. minima_cli-0.7.0/packages/tui/src/minima/mubit_memory_factory.ts +32 -0
  104. minima_cli-0.7.0/packages/tui/src/minima/router.ts +277 -0
  105. minima_cli-0.7.0/packages/tui/src/minima/runtime.ts +651 -0
  106. minima_cli-0.7.0/packages/tui/src/minima/schemas.ts +277 -0
  107. minima_cli-0.7.0/packages/tui/src/minima/spawn.ts +225 -0
  108. minima_cli-0.7.0/packages/tui/src/run_modes.ts +84 -0
  109. minima_cli-0.7.0/packages/tui/src/session/index.ts +10 -0
  110. minima_cli-0.7.0/packages/tui/src/session/store.ts +275 -0
  111. minima_cli-0.7.0/packages/tui/src/tools/_io.ts +68 -0
  112. minima_cli-0.7.0/packages/tui/src/tools/at_mentions.ts +37 -0
  113. minima_cli-0.7.0/packages/tui/src/tools/bash.ts +133 -0
  114. minima_cli-0.7.0/packages/tui/src/tools/builtin.ts +56 -0
  115. minima_cli-0.7.0/packages/tui/src/tools/edit.ts +56 -0
  116. minima_cli-0.7.0/packages/tui/src/tools/glob.ts +37 -0
  117. minima_cli-0.7.0/packages/tui/src/tools/grep.ts +85 -0
  118. minima_cli-0.7.0/packages/tui/src/tools/index.ts +8 -0
  119. minima_cli-0.7.0/packages/tui/src/tools/ls.ts +45 -0
  120. minima_cli-0.7.0/packages/tui/src/tools/read.ts +40 -0
  121. minima_cli-0.7.0/packages/tui/src/tools/schema.ts +78 -0
  122. minima_cli-0.7.0/packages/tui/src/tools/task.ts +289 -0
  123. minima_cli-0.7.0/packages/tui/src/tools/todowrite.ts +65 -0
  124. minima_cli-0.7.0/packages/tui/src/tools/types.ts +9 -0
  125. minima_cli-0.7.0/packages/tui/src/tools/web_fetch.ts +116 -0
  126. minima_cli-0.7.0/packages/tui/src/tools/write.ts +37 -0
  127. minima_cli-0.7.0/packages/tui/src/tui/app.tsx +1997 -0
  128. minima_cli-0.7.0/packages/tui/src/tui/auth.ts +231 -0
  129. minima_cli-0.7.0/packages/tui/src/tui/child_tree.tsx +62 -0
  130. minima_cli-0.7.0/packages/tui/src/tui/compact.ts +62 -0
  131. minima_cli-0.7.0/packages/tui/src/tui/config_store.ts +284 -0
  132. minima_cli-0.7.0/packages/tui/src/tui/context.ts +85 -0
  133. minima_cli-0.7.0/packages/tui/src/tui/layout.ts +164 -0
  134. minima_cli-0.7.0/packages/tui/src/tui/messages.tsx +232 -0
  135. minima_cli-0.7.0/packages/tui/src/tui/model-picker.tsx +106 -0
  136. minima_cli-0.7.0/packages/tui/src/tui/mouse-scroll.ts +72 -0
  137. minima_cli-0.7.0/packages/tui/src/tui/permissions.ts +171 -0
  138. minima_cli-0.7.0/packages/tui/src/tui/projects.ts +98 -0
  139. minima_cli-0.7.0/packages/tui/src/tui/routing-warnings.ts +31 -0
  140. minima_cli-0.7.0/packages/tui/src/tui/status.tsx +134 -0
  141. minima_cli-0.7.0/packages/tui/src/tui/text-input.tsx +110 -0
  142. minima_cli-0.7.0/packages/tui/src/types.d.ts +10 -0
  143. minima_cli-0.7.0/packages/tui/src/version.ts +9 -0
  144. minima_cli-0.7.0/packages/tui/tests/agent.test.ts +226 -0
  145. minima_cli-0.7.0/packages/tui/tests/ai.test.ts +149 -0
  146. minima_cli-0.7.0/packages/tui/tests/anthropic.test.ts +197 -0
  147. minima_cli-0.7.0/packages/tui/tests/auth.test.ts +188 -0
  148. minima_cli-0.7.0/packages/tui/tests/budget.test.ts +262 -0
  149. minima_cli-0.7.0/packages/tui/tests/candidate-filter.test.ts +129 -0
  150. minima_cli-0.7.0/packages/tui/tests/catalog.test.ts +135 -0
  151. minima_cli-0.7.0/packages/tui/tests/client.test.ts +201 -0
  152. minima_cli-0.7.0/packages/tui/tests/config_store.test.ts +89 -0
  153. minima_cli-0.7.0/packages/tui/tests/db.test.ts +367 -0
  154. minima_cli-0.7.0/packages/tui/tests/effort.test.ts +157 -0
  155. minima_cli-0.7.0/packages/tui/tests/error-ux.test.ts +74 -0
  156. minima_cli-0.7.0/packages/tui/tests/google.test.ts +171 -0
  157. minima_cli-0.7.0/packages/tui/tests/isolation.test.ts +155 -0
  158. minima_cli-0.7.0/packages/tui/tests/judge.test.ts +145 -0
  159. minima_cli-0.7.0/packages/tui/tests/ladder.test.ts +207 -0
  160. minima_cli-0.7.0/packages/tui/tests/layout.test.ts +150 -0
  161. minima_cli-0.7.0/packages/tui/tests/memory.test.ts +158 -0
  162. minima_cli-0.7.0/packages/tui/tests/minima.test.ts +363 -0
  163. minima_cli-0.7.0/packages/tui/tests/minima_memory.test.ts +209 -0
  164. minima_cli-0.7.0/packages/tui/tests/openai_compat.test.ts +174 -0
  165. minima_cli-0.7.0/packages/tui/tests/run_modes.test.ts +154 -0
  166. minima_cli-0.7.0/packages/tui/tests/session.test.ts +119 -0
  167. minima_cli-0.7.0/packages/tui/tests/spawn.test.ts +351 -0
  168. minima_cli-0.7.0/packages/tui/tests/task.test.ts +273 -0
  169. minima_cli-0.7.0/packages/tui/tests/thinking.test.ts +207 -0
  170. minima_cli-0.7.0/packages/tui/tests/tools.test.ts +164 -0
  171. minima_cli-0.7.0/packages/tui/tsconfig.json +26 -0
  172. minima_cli-0.7.0/packaging/homebrew/README.md +48 -0
  173. minima_cli-0.7.0/packaging/homebrew/render_formula.py +105 -0
  174. {minima_cli-0.4.10 → minima_cli-0.7.0}/pyproject.toml +8 -14
  175. minima_cli-0.7.0/runs/20260624_103307/memory_audit.json +48 -0
  176. minima_cli-0.7.0/runs/20260624_103307/recall_debug.jsonl +8 -0
  177. minima_cli-0.7.0/runs/20260624_103307/tasks.jsonl +7 -0
  178. minima_cli-0.7.0/runs/playground_p1/_manifest.json +55 -0
  179. minima_cli-0.7.0/runs/playground_p1/calibration.json +180 -0
  180. minima_cli-0.7.0/runs/playground_p1/feedback.json +9 -0
  181. minima_cli-0.7.0/runs/playground_p1/health.json +22 -0
  182. minima_cli-0.7.0/runs/playground_p1/models.json +379 -0
  183. minima_cli-0.7.0/runs/playground_p1/recommend.json +200 -0
  184. minima_cli-0.7.0/runs/playground_p1/savings.json +42 -0
  185. minima_cli-0.7.0/runs/playground_p1/strategies.json +1207 -0
  186. minima_cli-0.7.0/runs/playground_p1/workflow.json +414 -0
  187. minima_cli-0.7.0/scripts/eval/classify_dataset.json +46 -0
  188. minima_cli-0.7.0/scripts/eval/eval_classify.py +116 -0
  189. minima_cli-0.7.0/scripts/test-routing-web.ts +176 -0
  190. minima_cli-0.7.0/scripts/test-routing.sh +66 -0
  191. minima_cli-0.7.0/scripts/test-routing.ts +159 -0
  192. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/auth.py +9 -3
  193. minima_cli-0.7.0/src/minima/api/routers/capabilities.py +42 -0
  194. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/feedback.py +16 -4
  195. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/strategies.py +11 -3
  196. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/config.py +6 -1
  197. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/llm/base.py +6 -0
  198. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/llm/gemini.py +6 -0
  199. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/main.py +2 -0
  200. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/metrics/calibration.py +5 -0
  201. minima_cli-0.7.0/src/minima/recommender/classify.py +580 -0
  202. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/engine.py +119 -49
  203. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/escalation.py +17 -0
  204. minima_cli-0.7.0/src/minima/schemas/capabilities.py +15 -0
  205. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/feedback.py +9 -0
  206. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/recommend.py +31 -0
  207. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/strategies.py +1 -0
  208. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/version.py +1 -1
  209. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/conftest.py +28 -0
  210. minima_cli-0.7.0/tests/eval/prompt_length_benchmark.py +296 -0
  211. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/factories.py +2 -0
  212. minima_cli-0.7.0/tests/integration/test_escalation_reasoner.py +147 -0
  213. minima_cli-0.7.0/tests/integration/test_feedback_loop.py +166 -0
  214. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_recommend_api.py +29 -0
  215. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_strategies_api.py +21 -0
  216. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_escalation_fixes.py +13 -9
  217. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_full_surface_live.py +2 -0
  218. minima_cli-0.7.0/tests/unit/test_capabilities.py +55 -0
  219. minima_cli-0.7.0/tests/unit/test_classify_benchmark.py +247 -0
  220. minima_cli-0.7.0/tests/unit/test_classify_keys.py +131 -0
  221. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_neighbor_classify.py +14 -1
  222. minima_cli-0.7.0/tests/unit/test_prompt_length_benchmark.py +43 -0
  223. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_reasoner.py +27 -0
  224. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_store_backends.py +28 -0
  225. {minima_cli-0.4.10 → minima_cli-0.7.0}/uv.lock +3 -205
  226. minima_cli-0.4.10/AGENTS.md +0 -90
  227. minima_cli-0.4.10/Makefile +0 -41
  228. minima_cli-0.4.10/agent/task_set.py +0 -8
  229. minima_cli-0.4.10/docs/harness.md +0 -223
  230. minima_cli-0.4.10/docs-site/astro.config.mjs +0 -44
  231. minima_cli-0.4.10/docs-site/package-lock.json +0 -7460
  232. minima_cli-0.4.10/docs-site/package.json +0 -19
  233. minima_cli-0.4.10/docs-site/public/favicon.svg +0 -5
  234. minima_cli-0.4.10/docs-site/src/assets/logo.svg +0 -6
  235. minima_cli-0.4.10/docs-site/src/content/config.ts +0 -7
  236. minima_cli-0.4.10/docs-site/src/content/docs/getting-started.mdx +0 -72
  237. minima_cli-0.4.10/docs-site/src/styles/custom.css +0 -100
  238. minima_cli-0.4.10/docs-site/tsconfig.json +0 -6
  239. minima_cli-0.4.10/examples/harness_warmup.py +0 -333
  240. minima_cli-0.4.10/packaging/homebrew/README.md +0 -82
  241. minima_cli-0.4.10/packaging/homebrew/gen_resources.py +0 -185
  242. minima_cli-0.4.10/packaging/homebrew/minima.rb +0 -339
  243. minima_cli-0.4.10/src/minima/recommender/classify.py +0 -165
  244. minima_cli-0.4.10/src/minima_harness/LICENSE_PI +0 -32
  245. minima_cli-0.4.10/src/minima_harness/__init__.py +0 -16
  246. minima_cli-0.4.10/src/minima_harness/agent/__init__.py +0 -72
  247. minima_cli-0.4.10/src/minima_harness/agent/agent.py +0 -276
  248. minima_cli-0.4.10/src/minima_harness/agent/events.py +0 -124
  249. minima_cli-0.4.10/src/minima_harness/agent/loop.py +0 -311
  250. minima_cli-0.4.10/src/minima_harness/agent/state.py +0 -79
  251. minima_cli-0.4.10/src/minima_harness/agent/tools.py +0 -97
  252. minima_cli-0.4.10/src/minima_harness/ai/__init__.py +0 -66
  253. minima_cli-0.4.10/src/minima_harness/ai/compat.py +0 -71
  254. minima_cli-0.4.10/src/minima_harness/ai/errors.py +0 -96
  255. minima_cli-0.4.10/src/minima_harness/ai/events.py +0 -117
  256. minima_cli-0.4.10/src/minima_harness/ai/openrouter_catalog.py +0 -153
  257. minima_cli-0.4.10/src/minima_harness/ai/provider_catalog.py +0 -299
  258. minima_cli-0.4.10/src/minima_harness/ai/provider_quirks.py +0 -37
  259. minima_cli-0.4.10/src/minima_harness/ai/providers/__init__.py +0 -75
  260. minima_cli-0.4.10/src/minima_harness/ai/providers/_common.py +0 -48
  261. minima_cli-0.4.10/src/minima_harness/ai/providers/anthropic.py +0 -290
  262. minima_cli-0.4.10/src/minima_harness/ai/providers/base.py +0 -65
  263. minima_cli-0.4.10/src/minima_harness/ai/providers/faux.py +0 -173
  264. minima_cli-0.4.10/src/minima_harness/ai/providers/google.py +0 -221
  265. minima_cli-0.4.10/src/minima_harness/ai/providers/openai_compat.py +0 -278
  266. minima_cli-0.4.10/src/minima_harness/ai/registry.py +0 -184
  267. minima_cli-0.4.10/src/minima_harness/ai/stream.py +0 -82
  268. minima_cli-0.4.10/src/minima_harness/ai/tools.py +0 -51
  269. minima_cli-0.4.10/src/minima_harness/ai/types.py +0 -204
  270. minima_cli-0.4.10/src/minima_harness/ai/usage.py +0 -41
  271. minima_cli-0.4.10/src/minima_harness/minima/__init__.py +0 -40
  272. minima_cli-0.4.10/src/minima_harness/minima/cache.py +0 -102
  273. minima_cli-0.4.10/src/minima_harness/minima/config.py +0 -85
  274. minima_cli-0.4.10/src/minima_harness/minima/goals.py +0 -226
  275. minima_cli-0.4.10/src/minima_harness/minima/judge.py +0 -144
  276. minima_cli-0.4.10/src/minima_harness/minima/mapping.py +0 -147
  277. minima_cli-0.4.10/src/minima_harness/minima/meter.py +0 -143
  278. minima_cli-0.4.10/src/minima_harness/minima/router.py +0 -220
  279. minima_cli-0.4.10/src/minima_harness/minima/runtime.py +0 -544
  280. minima_cli-0.4.10/src/minima_harness/minima/signals.py +0 -195
  281. minima_cli-0.4.10/src/minima_harness/session/__init__.py +0 -14
  282. minima_cli-0.4.10/src/minima_harness/session/format.py +0 -35
  283. minima_cli-0.4.10/src/minima_harness/session/store.py +0 -236
  284. minima_cli-0.4.10/src/minima_harness/tasks/__init__.py +0 -17
  285. minima_cli-0.4.10/src/minima_harness/tasks/task_set.py +0 -78
  286. minima_cli-0.4.10/src/minima_harness/tools/__init__.py +0 -7
  287. minima_cli-0.4.10/src/minima_harness/tools/_io.py +0 -34
  288. minima_cli-0.4.10/src/minima_harness/tools/bash.py +0 -70
  289. minima_cli-0.4.10/src/minima_harness/tools/builtin.py +0 -23
  290. minima_cli-0.4.10/src/minima_harness/tools/edit.py +0 -50
  291. minima_cli-0.4.10/src/minima_harness/tools/find.py +0 -38
  292. minima_cli-0.4.10/src/minima_harness/tools/grep.py +0 -73
  293. minima_cli-0.4.10/src/minima_harness/tools/ls.py +0 -35
  294. minima_cli-0.4.10/src/minima_harness/tools/read.py +0 -38
  295. minima_cli-0.4.10/src/minima_harness/tools/tasks.py +0 -75
  296. minima_cli-0.4.10/src/minima_harness/tools/write.py +0 -36
  297. minima_cli-0.4.10/src/minima_harness/tui/__init__.py +0 -3
  298. minima_cli-0.4.10/src/minima_harness/tui/analytics.py +0 -111
  299. minima_cli-0.4.10/src/minima_harness/tui/app.py +0 -1927
  300. minima_cli-0.4.10/src/minima_harness/tui/bridge.py +0 -103
  301. minima_cli-0.4.10/src/minima_harness/tui/cli.py +0 -227
  302. minima_cli-0.4.10/src/minima_harness/tui/clipboard.py +0 -60
  303. minima_cli-0.4.10/src/minima_harness/tui/commands.py +0 -49
  304. minima_cli-0.4.10/src/minima_harness/tui/compaction.py +0 -17
  305. minima_cli-0.4.10/src/minima_harness/tui/config_cli.py +0 -141
  306. minima_cli-0.4.10/src/minima_harness/tui/config_store.py +0 -237
  307. minima_cli-0.4.10/src/minima_harness/tui/context.py +0 -93
  308. minima_cli-0.4.10/src/minima_harness/tui/customize.py +0 -95
  309. minima_cli-0.4.10/src/minima_harness/tui/diff.py +0 -53
  310. minima_cli-0.4.10/src/minima_harness/tui/editor.py +0 -43
  311. minima_cli-0.4.10/src/minima_harness/tui/extensions.py +0 -84
  312. minima_cli-0.4.10/src/minima_harness/tui/extra_models.py +0 -52
  313. minima_cli-0.4.10/src/minima_harness/tui/history.py +0 -71
  314. minima_cli-0.4.10/src/minima_harness/tui/mubit.py +0 -295
  315. minima_cli-0.4.10/src/minima_harness/tui/overlays.py +0 -593
  316. minima_cli-0.4.10/src/minima_harness/tui/packages.py +0 -59
  317. minima_cli-0.4.10/src/minima_harness/tui/run_modes.py +0 -66
  318. minima_cli-0.4.10/src/minima_harness/tui/theme.py +0 -77
  319. minima_cli-0.4.10/src/minima_harness/tui/welcome.py +0 -83
  320. minima_cli-0.4.10/src/minima_harness/tui/widgets/__init__.py +0 -3
  321. minima_cli-0.4.10/src/minima_harness/tui/widgets/banner.py +0 -38
  322. minima_cli-0.4.10/src/minima_harness/tui/widgets/editor.py +0 -83
  323. minima_cli-0.4.10/src/minima_harness/tui/widgets/footer.py +0 -73
  324. minima_cli-0.4.10/src/minima_harness/tui/widgets/messages.py +0 -151
  325. minima_cli-0.4.10/src/minima_harness/tui/widgets/status.py +0 -57
  326. minima_cli-0.4.10/tests/harness/__init__.py +0 -0
  327. minima_cli-0.4.10/tests/harness/session/__init__.py +0 -0
  328. minima_cli-0.4.10/tests/harness/session/test_format.py +0 -23
  329. minima_cli-0.4.10/tests/harness/session/test_manager.py +0 -85
  330. minima_cli-0.4.10/tests/harness/session/test_store.py +0 -109
  331. minima_cli-0.4.10/tests/harness/test_agent_loop.py +0 -300
  332. minima_cli-0.4.10/tests/harness/test_anthropic_mapping.py +0 -310
  333. minima_cli-0.4.10/tests/harness/test_auth_reroute.py +0 -408
  334. minima_cli-0.4.10/tests/harness/test_cache.py +0 -65
  335. minima_cli-0.4.10/tests/harness/test_catalog_overlay.py +0 -104
  336. minima_cli-0.4.10/tests/harness/test_common_and_wire.py +0 -82
  337. minima_cli-0.4.10/tests/harness/test_compat.py +0 -74
  338. minima_cli-0.4.10/tests/harness/test_errors.py +0 -99
  339. minima_cli-0.4.10/tests/harness/test_goals.py +0 -153
  340. minima_cli-0.4.10/tests/harness/test_google_mapping.py +0 -182
  341. minima_cli-0.4.10/tests/harness/test_judge.py +0 -62
  342. minima_cli-0.4.10/tests/harness/test_live.py +0 -58
  343. minima_cli-0.4.10/tests/harness/test_mapping.py +0 -53
  344. minima_cli-0.4.10/tests/harness/test_minima_e2e.py +0 -150
  345. minima_cli-0.4.10/tests/harness/test_openai_compat_sse.py +0 -142
  346. minima_cli-0.4.10/tests/harness/test_openrouter_catalog.py +0 -134
  347. minima_cli-0.4.10/tests/harness/test_phase0_smoke.py +0 -162
  348. minima_cli-0.4.10/tests/harness/test_phase_a.py +0 -272
  349. minima_cli-0.4.10/tests/harness/test_phase_b.py +0 -119
  350. minima_cli-0.4.10/tests/harness/test_phase_c.py +0 -102
  351. minima_cli-0.4.10/tests/harness/test_provider_catalog.py +0 -102
  352. minima_cli-0.4.10/tests/harness/test_provider_quirks.py +0 -14
  353. minima_cli-0.4.10/tests/harness/test_provider_registration.py +0 -33
  354. minima_cli-0.4.10/tests/harness/test_provider_wiring.py +0 -166
  355. minima_cli-0.4.10/tests/harness/test_runtime.py +0 -491
  356. minima_cli-0.4.10/tests/harness/test_signals.py +0 -264
  357. minima_cli-0.4.10/tests/harness/tools/__init__.py +0 -0
  358. minima_cli-0.4.10/tests/harness/tools/test_agent_smoke.py +0 -21
  359. minima_cli-0.4.10/tests/harness/tools/test_bash.py +0 -41
  360. minima_cli-0.4.10/tests/harness/tools/test_builtin.py +0 -17
  361. minima_cli-0.4.10/tests/harness/tools/test_edit.py +0 -42
  362. minima_cli-0.4.10/tests/harness/tools/test_find.py +0 -22
  363. minima_cli-0.4.10/tests/harness/tools/test_grep.py +0 -30
  364. minima_cli-0.4.10/tests/harness/tools/test_io.py +0 -38
  365. minima_cli-0.4.10/tests/harness/tools/test_ls.py +0 -26
  366. minima_cli-0.4.10/tests/harness/tools/test_read.py +0 -34
  367. minima_cli-0.4.10/tests/harness/tools/test_write.py +0 -21
  368. minima_cli-0.4.10/tests/harness/tui/__init__.py +0 -0
  369. minima_cli-0.4.10/tests/harness/tui/test_analytics.py +0 -48
  370. minima_cli-0.4.10/tests/harness/tui/test_app_pilot.py +0 -70
  371. minima_cli-0.4.10/tests/harness/tui/test_bridge.py +0 -64
  372. minima_cli-0.4.10/tests/harness/tui/test_clipboard.py +0 -80
  373. minima_cli-0.4.10/tests/harness/tui/test_command_popup.py +0 -46
  374. minima_cli-0.4.10/tests/harness/tui/test_commands.py +0 -36
  375. minima_cli-0.4.10/tests/harness/tui/test_config.py +0 -279
  376. minima_cli-0.4.10/tests/harness/tui/test_context.py +0 -42
  377. minima_cli-0.4.10/tests/harness/tui/test_customize.py +0 -31
  378. minima_cli-0.4.10/tests/harness/tui/test_decision_card.py +0 -231
  379. minima_cli-0.4.10/tests/harness/tui/test_diff.py +0 -45
  380. minima_cli-0.4.10/tests/harness/tui/test_editor.py +0 -39
  381. minima_cli-0.4.10/tests/harness/tui/test_editor_widget.py +0 -53
  382. minima_cli-0.4.10/tests/harness/tui/test_export.py +0 -37
  383. minima_cli-0.4.10/tests/harness/tui/test_extensions.py +0 -76
  384. minima_cli-0.4.10/tests/harness/tui/test_goals_tui.py +0 -183
  385. minima_cli-0.4.10/tests/harness/tui/test_history_sessions.py +0 -151
  386. minima_cli-0.4.10/tests/harness/tui/test_messages.py +0 -64
  387. minima_cli-0.4.10/tests/harness/tui/test_mouse_copy.py +0 -101
  388. minima_cli-0.4.10/tests/harness/tui/test_mubit.py +0 -67
  389. minima_cli-0.4.10/tests/harness/tui/test_optimize.py +0 -118
  390. minima_cli-0.4.10/tests/harness/tui/test_overlays.py +0 -106
  391. minima_cli-0.4.10/tests/harness/tui/test_p2.py +0 -61
  392. minima_cli-0.4.10/tests/harness/tui/test_p3.py +0 -65
  393. minima_cli-0.4.10/tests/harness/tui/test_p5.py +0 -89
  394. minima_cli-0.4.10/tests/harness/tui/test_permissions.py +0 -142
  395. minima_cli-0.4.10/tests/harness/tui/test_predictability.py +0 -77
  396. minima_cli-0.4.10/tests/harness/tui/test_prompt_layers.py +0 -106
  397. minima_cli-0.4.10/tests/harness/tui/test_queue.py +0 -59
  398. minima_cli-0.4.10/tests/harness/tui/test_run_modes.py +0 -41
  399. minima_cli-0.4.10/tests/harness/tui/test_status.py +0 -24
  400. minima_cli-0.4.10/tests/harness/tui/test_status_bar.py +0 -45
  401. minima_cli-0.4.10/tests/harness/tui/test_theme.py +0 -21
  402. minima_cli-0.4.10/tests/harness/tui/test_thoughts.py +0 -70
  403. minima_cli-0.4.10/tests/harness/tui/test_tool_render.py +0 -65
  404. minima_cli-0.4.10/tests/harness/tui/test_ux.py +0 -228
  405. minima_cli-0.4.10/tests/harness/tui/test_welcome.py +0 -113
  406. minima_cli-0.4.10/tests/harness/tui/test_widgets.py +0 -126
  407. minima_cli-0.4.10/tests/integration/test_escalation_reasoner.py +0 -71
  408. minima_cli-0.4.10/tests/integration/test_feedback_loop.py +0 -81
  409. minima_cli-0.4.10/tests/unit/test_classify_keys.py +0 -53
  410. {minima_cli-0.4.10 → minima_cli-0.7.0}/.dockerignore +0 -0
  411. {minima_cli-0.4.10 → minima_cli-0.7.0}/.env.example +0 -0
  412. {minima_cli-0.4.10 → minima_cli-0.7.0}/.github/workflows/prod.yml +0 -0
  413. {minima_cli-0.4.10 → minima_cli-0.7.0}/.github/workflows/staging.yml +0 -0
  414. {minima_cli-0.4.10 → minima_cli-0.7.0}/Dockerfile +0 -0
  415. {minima_cli-0.4.10 → minima_cli-0.7.0}/LICENSE +0 -0
  416. {minima_cli-0.4.10 → minima_cli-0.7.0}/client_sdk/minima_client/__init__.py +0 -0
  417. {minima_cli-0.4.10 → minima_cli-0.7.0}/client_sdk/minima_client/autocapture.py +0 -0
  418. {minima_cli-0.4.10 → minima_cli-0.7.0}/client_sdk/minima_client/client.py +0 -0
  419. {minima_cli-0.4.10 → minima_cli-0.7.0}/client_sdk/minima_client/errors.py +0 -0
  420. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/README.md +0 -0
  421. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/client-sdk.md +0 -0
  422. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/concepts.md +0 -0
  423. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/examples.md +0 -0
  424. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/getting-started.md +0 -0
  425. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/goals-feature-plan.md +0 -0
  426. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/multi-tenancy.md +0 -0
  427. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/operations.md +0 -0
  428. {minima_cli-0.4.10 → minima_cli-0.7.0}/docs/seeding.md +0 -0
  429. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/01_quickstart.sh +0 -0
  430. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/02_recommend_and_feedback.py +0 -0
  431. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/03_constraints_and_tradeoff.py +0 -0
  432. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/04_workflow.py +0 -0
  433. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/05_autocapture.py +0 -0
  434. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/06_routed_llm_call.py +0 -0
  435. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/07_multitenant_admin.py +0 -0
  436. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_escalation.py +0 -0
  437. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_escalation_learn.py +0 -0
  438. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_gemini.py +0 -0
  439. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_retention.py +0 -0
  440. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_warmup.py +0 -0
  441. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/agent_warmup_vary.py +0 -0
  442. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/metrics_demo.py +0 -0
  443. {minima_cli-0.4.10 → minima_cli-0.7.0}/examples/smoke_test.py +0 -0
  444. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_125009/recall_debug.jsonl +0 -0
  445. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_125009/strategies_run1.json +0 -0
  446. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_125009/strategies_run2.json +0 -0
  447. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_125009/strategies_run3.json +0 -0
  448. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_125009/tasks.jsonl +0 -0
  449. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/REPORT.md +0 -0
  450. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/recall_debug.jsonl +0 -0
  451. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/strategies_run1.json +0 -0
  452. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/strategies_run2.json +0 -0
  453. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/strategies_run3.json +0 -0
  454. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/strategies_run4.json +0 -0
  455. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/strategies_run5.json +0 -0
  456. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/summary.json +0 -0
  457. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_130252/tasks.jsonl +0 -0
  458. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_182838/recall_debug.jsonl +0 -0
  459. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_182838/strategies_run1.json +0 -0
  460. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_182838/strategies_run2.json +0 -0
  461. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_182838/tasks.jsonl +0 -0
  462. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/REPORT.md +0 -0
  463. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/memory_audit.json +0 -0
  464. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/recall_debug.jsonl +0 -0
  465. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/strategies_run1.json +0 -0
  466. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/strategies_run2.json +0 -0
  467. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/strategies_run3.json +0 -0
  468. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/strategies_run4.json +0 -0
  469. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/strategies_run5.json +0 -0
  470. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/summary.json +0 -0
  471. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260612_183343/tasks.jsonl +0 -0
  472. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/REPORT.md +0 -0
  473. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/memory_audit.json +0 -0
  474. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/recall_debug.jsonl +0 -0
  475. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/strategies_run1.json +0 -0
  476. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/strategies_run2.json +0 -0
  477. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/strategies_run3.json +0 -0
  478. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/strategies_run4.json +0 -0
  479. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/strategies_run5.json +0 -0
  480. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/summary.json +0 -0
  481. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/20260615_101732/tasks.jsonl +0 -0
  482. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_133108/cold_probe.json +0 -0
  483. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_133108/summary.json +0 -0
  484. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_133108/tasks.jsonl +0 -0
  485. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_134209/REPORT.md +0 -0
  486. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_134209/cold_probe.json +0 -0
  487. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_134209/summary.json +0 -0
  488. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalate_20260615_134209/tasks.jsonl +0 -0
  489. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalation_20260612_201825/REPORT.md +0 -0
  490. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalation_20260612_201825/results.jsonl +0 -0
  491. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/escalation_20260612_201825/summary.json +0 -0
  492. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/retention_20260612_201828/REPORT.md +0 -0
  493. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/retention_20260612_201828/results.jsonl +0 -0
  494. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/retention_20260612_201828/summary.json +0 -0
  495. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/warmupvary_20260615_123818/REPORT.md +0 -0
  496. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/warmupvary_20260615_123818/summary.json +0 -0
  497. {minima_cli-0.4.10 → minima_cli-0.7.0}/runs/warmupvary_20260615_123818/tasks.jsonl +0 -0
  498. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/__init__.py +0 -0
  499. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/__init__.py +0 -0
  500. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/errors.py +0 -0
  501. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/__init__.py +0 -0
  502. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/calibration.py +0 -0
  503. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/health.py +0 -0
  504. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/models.py +0 -0
  505. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/recommend.py +0 -0
  506. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/api/routers/savings.py +0 -0
  507. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/__init__.py +0 -0
  508. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/data/capability_priors.json +0 -0
  509. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/data/model_aliases.json +0 -0
  510. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/merge.py +0 -0
  511. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/refresh.py +0 -0
  512. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/sources/__init__.py +0 -0
  513. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/sources/litellm.py +0 -0
  514. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/sources/openrouter.py +0 -0
  515. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/catalog/store.py +0 -0
  516. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/deps.py +0 -0
  517. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/llm/__init__.py +0 -0
  518. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/llm/anthropic.py +0 -0
  519. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/llm/registry.py +0 -0
  520. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/logging.py +0 -0
  521. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/memory/__init__.py +0 -0
  522. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/memory/adapter.py +0 -0
  523. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/memory/keys.py +0 -0
  524. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/memory/records.py +0 -0
  525. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/memory/threadpool.py +0 -0
  526. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/metrics/__init__.py +0 -0
  527. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/metrics/report.py +0 -0
  528. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/metrics/savings.py +0 -0
  529. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/__init__.py +0 -0
  530. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/_pg_pool.py +0 -0
  531. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/_redis_client.py +0 -0
  532. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/aggregate.py +0 -0
  533. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/decisionlog.py +0 -0
  534. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/durablerefs.py +0 -0
  535. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/propensity.py +0 -0
  536. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/recstore.py +0 -0
  537. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/score.py +0 -0
  538. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/recommender/types.py +0 -0
  539. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/__init__.py +0 -0
  540. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/common.py +0 -0
  541. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/models_catalog.py +0 -0
  542. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/savings.py +0 -0
  543. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/schemas/workflow.py +0 -0
  544. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/__init__.py +0 -0
  545. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/items.py +0 -0
  546. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/llmrouterbench.py +0 -0
  547. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/routerbench.py +0 -0
  548. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/run_seed.py +0 -0
  549. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/seeding/synthetic.py +0 -0
  550. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/tenancy/__init__.py +0 -0
  551. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/tenancy/context.py +0 -0
  552. {minima_cli-0.4.10 → minima_cli-0.7.0}/src/minima/tenancy/passthrough.py +0 -0
  553. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/__init__.py +0 -0
  554. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/BENCHMARKS.md +0 -0
  555. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/CRITERIA.md +0 -0
  556. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/RESULTS.md +0 -0
  557. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/__init__.py +0 -0
  558. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/harness.py +0 -0
  559. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/llmrouterbench_config.py +0 -0
  560. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/test_llmrouterbench_savings.py +0 -0
  561. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/eval/test_routerbench_savings.py +0 -0
  562. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_lesson_promotion.py +0 -0
  563. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_measurement_api.py +0 -0
  564. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_observed_cost_ranking.py +0 -0
  565. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/integration/test_workflow_models_health.py +0 -0
  566. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_cost_savings_spotcheck_live.py +0 -0
  567. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_mubit_roundtrip.py +0 -0
  568. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_phase3_live.py +0 -0
  569. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_reasoner_live.py +0 -0
  570. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/live/test_recall_params_live.py +0 -0
  571. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_aggregate.py +0 -0
  572. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_aggregate_decay.py +0 -0
  573. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_autocapture.py +0 -0
  574. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_calibration_fit.py +0 -0
  575. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_cluster.py +0 -0
  576. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_collapse_guard.py +0 -0
  577. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_cost_band.py +0 -0
  578. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_decisionlog.py +0 -0
  579. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_escalation.py +0 -0
  580. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_exploration.py +0 -0
  581. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_ipw.py +0 -0
  582. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_iterations.py +0 -0
  583. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_latency_quality.py +0 -0
  584. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_lever_cost.py +0 -0
  585. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_metrics.py +0 -0
  586. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_metrics_demo.py +0 -0
  587. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_records_catalog.py +0 -0
  588. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_recstore_sqlite.py +0 -0
  589. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_score.py +0 -0
  590. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_shadow_bandit.py +0 -0
  591. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_strategies.py +0 -0
  592. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_tenancy.py +0 -0
  593. {minima_cli-0.4.10 → minima_cli-0.7.0}/tests/unit/test_thompson.py +0 -0
@@ -0,0 +1,140 @@
1
+ name: Release — CLI binaries + Homebrew
2
+
3
+ # On a published release, cross-compile the TypeScript/Bun CLI for macOS + Linux,
4
+ # ad-hoc codesign the macOS arches, attach the tarballs to the release, and open
5
+ # a PR to the Homebrew tap (mubit-ai/homebrew-minima) bumping the binary formula.
6
+ # PyPI publishing of the Python `minima-cli` (SDK + server tooling) stays in prod.yml.
7
+ on:
8
+ release:
9
+ types: [published]
10
+ workflow_dispatch:
11
+ inputs:
12
+ tag:
13
+ description: "Git tag to build (e.g. v0.5.0)"
14
+ required: true
15
+ type: string
16
+
17
+ concurrency:
18
+ group: release-cli
19
+ cancel-in-progress: false
20
+
21
+ env:
22
+ RELEASE_TAG: ${{ github.event.release.tag_name || inputs.tag }}
23
+ BUN_VERSION: "1.3.14"
24
+
25
+ permissions:
26
+ contents: write # upload release assets
27
+
28
+ jobs:
29
+ build-macos:
30
+ name: Build + sign macOS binaries
31
+ runs-on: macos-14 # Apple Silicon; cross-compiles darwin-x64 too, codesign is arch-agnostic
32
+ steps:
33
+ - uses: actions/checkout@v5
34
+ with:
35
+ ref: ${{ env.RELEASE_TAG }}
36
+ - uses: oven-sh/setup-bun@v2
37
+ with:
38
+ bun-version: ${{ env.BUN_VERSION }}
39
+ - name: Install deps
40
+ working-directory: packages/tui
41
+ run: bun install --frozen-lockfile
42
+ - name: Cross-compile darwin arm64 + x64
43
+ working-directory: packages/tui
44
+ run: bun run scripts/build-all.ts bun-darwin-arm64 bun-darwin-x64
45
+ - name: Ad-hoc codesign (required for Apple Silicon to run the binary)
46
+ working-directory: packages/tui
47
+ run: |
48
+ for b in dist/minima-darwin-arm64 dist/minima-darwin-x64; do
49
+ codesign -s - --force --timestamp=none "$b"
50
+ codesign --verify --verbose=1 "$b"
51
+ done
52
+ - name: Package tarballs
53
+ working-directory: packages/tui
54
+ run: |
55
+ VER="${RELEASE_TAG#v}"
56
+ for slug in darwin-arm64 darwin-x64; do
57
+ tmp="$(mktemp -d)"; cp "dist/minima-$slug" "$tmp/minima"
58
+ tar -czf "dist/minima-$VER-$slug.tar.gz" -C "$tmp" minima
59
+ done
60
+ - uses: actions/upload-artifact@v4
61
+ with:
62
+ name: darwin
63
+ path: packages/tui/dist/minima-*.tar.gz
64
+
65
+ build-linux:
66
+ name: Build Linux binaries
67
+ runs-on: ubuntu-latest
68
+ steps:
69
+ - uses: actions/checkout@v5
70
+ with:
71
+ ref: ${{ env.RELEASE_TAG }}
72
+ - uses: oven-sh/setup-bun@v2
73
+ with:
74
+ bun-version: ${{ env.BUN_VERSION }}
75
+ - name: Install deps
76
+ working-directory: packages/tui
77
+ run: bun install --frozen-lockfile
78
+ - name: Cross-compile linux x64 + arm64
79
+ working-directory: packages/tui
80
+ run: bun run scripts/build-all.ts bun-linux-x64 bun-linux-arm64
81
+ - name: Package tarballs
82
+ working-directory: packages/tui
83
+ run: |
84
+ VER="${RELEASE_TAG#v}"
85
+ for slug in linux-x64 linux-arm64; do
86
+ tmp="$(mktemp -d)"; cp "dist/minima-$slug" "$tmp/minima"
87
+ tar -czf "dist/minima-$VER-$slug.tar.gz" -C "$tmp" minima
88
+ done
89
+ - uses: actions/upload-artifact@v4
90
+ with:
91
+ name: linux
92
+ path: packages/tui/dist/minima-*.tar.gz
93
+
94
+ publish-and-bump:
95
+ name: Attach assets + open tap PR
96
+ needs: [build-macos, build-linux]
97
+ runs-on: ubuntu-latest
98
+ steps:
99
+ - uses: actions/checkout@v5
100
+ with:
101
+ ref: ${{ env.RELEASE_TAG }}
102
+ - uses: actions/download-artifact@v4
103
+ with:
104
+ path: artifacts
105
+ - name: Collect tarballs
106
+ run: |
107
+ mkdir -p dist
108
+ find artifacts -name 'minima-*.tar.gz' -exec cp {} dist/ \;
109
+ ls -la dist
110
+ - name: Attach binaries to the release
111
+ env:
112
+ GH_TOKEN: ${{ github.token }}
113
+ run: gh release upload "$RELEASE_TAG" dist/minima-*.tar.gz --clobber --repo "${{ github.repository }}"
114
+ - name: Render binary formula
115
+ run: |
116
+ VER="${RELEASE_TAG#v}"
117
+ python3 packaging/homebrew/render_formula.py --version "$VER" --dist dist --out minima.rb
118
+ echo "----- rendered formula -----"; cat minima.rb
119
+ - name: Open Homebrew tap PR
120
+ env:
121
+ GH_TOKEN: ${{ secrets.GH_PAT }}
122
+ run: |
123
+ VER="${RELEASE_TAG#v}"
124
+ git clone "https://x-access-token:${GH_TOKEN}@github.com/mubit-ai/homebrew-minima.git" tap
125
+ cp minima.rb tap/Formula/minima.rb
126
+ cd tap
127
+ git config user.name "mubit-release-bot"
128
+ git config user.email "release-bot@mubit.ai"
129
+ branch="bump-minima-${VER}"
130
+ git checkout -b "$branch"
131
+ if git diff --quiet Formula/minima.rb; then
132
+ echo "formula already up to date for ${VER}; nothing to do"; exit 0
133
+ fi
134
+ git add Formula/minima.rb
135
+ git commit -m "minima ${VER} (prebuilt binary)"
136
+ git push -u origin "$branch" --force-with-lease
137
+ gh pr create --repo mubit-ai/homebrew-minima --base main --head "$branch" \
138
+ --title "minima ${VER}" \
139
+ --body "Automated bump to the prebuilt TypeScript/Bun binary for \`${RELEASE_TAG}\`. Replaces the Python virtualenv formula. \`brew test-bot\` validates install + \`test do\` on macOS + Linux before merge." \
140
+ || echo "PR already exists for ${branch}"
@@ -21,3 +21,7 @@ docs-site/dist/
21
21
 
22
22
  # PLAN
23
23
  docs/PLAN/
24
+
25
+ # Meta files
26
+ .codaph
27
+ .claude
@@ -0,0 +1,58 @@
1
+ # AGENTS.md
2
+
3
+ Guidance for both human and AI agents working in this repo.
4
+
5
+ ## What this repo is
6
+
7
+ - **`src/minima/`** — Minima: a recommend-only LLM cost-optimization service (FastAPI,
8
+ Python 3.11+). It does NOT proxy LLM calls. It tells you which model to run, you run
9
+ it, judge quality, and feed the outcome back via `POST /v1/feedback` so its Mubit
10
+ memory sharpens. See `docs/concepts.md` for the algorithm.
11
+ - **`client_sdk/minima_client/`** — bundled sync + async Python client. Ships inside the
12
+ same wheel.
13
+ - **`packages/tui/`** — the `minima` CLI/TUI (TypeScript/Bun, shipped via Homebrew:
14
+ `brew tap mubit-ai/minima`). It replaced the old Python harness (`src/minima_harness`,
15
+ removed in v0.7.0). See `packages/tui/README.md`.
16
+
17
+ ## The Minima loop (always respect this)
18
+
19
+ ```
20
+ recommend -> run the model yourself -> judge quality -> feedback
21
+ ```
22
+
23
+ Minima never runs the model. Any harness owns model dispatch + quality judging. Feedback
24
+ MUST include realized `input_tokens` / `output_tokens` / `actual_cost_usd` / `latency_ms`
25
+ so the cost basis can climb `estimate -> observed -> rescaled` (the biggest accuracy
26
+ lever). Outcome thresholds: `success >= 0.8`, `partial >= 0.4`, else `failure`.
27
+
28
+ ## Conventions
29
+
30
+ - `from __future__ import annotations` at the top of every module.
31
+ - Pydantic v2 `BaseModel` for serializable schemas; `@dataclass(slots=True)` for internal
32
+ types; `StrEnum` for enums; `Protocol` for seams (`Memory`, `Reasoner`, `Provider`).
33
+ - Async-first. Bridge sync SDKs (Mubit) off the event loop via `anyio`/threadpools.
34
+ - `structlog` via `get_logger("minima.<sub>")`.
35
+ - ruff `line-length=100`, mypy `py311`. Never break the hot path: bookkeeping failures are
36
+ logged-and-swallowed (`except Exception: # noqa: BLE001`).
37
+ - NO comments unless asked. Match existing style.
38
+
39
+ ## Commands
40
+
41
+ ```bash
42
+ uv sync --extra dev # install (uv is the package manager)
43
+ uv run ruff check . && uv run ruff format . # lint + format
44
+ uv run mypy src/minima # typecheck
45
+ uv run pytest # unit + integration (hermetic, offline)
46
+ uv run pytest -m live # needs a running Mubit (make run-mubit)
47
+ make run # local Minima on :8080
48
+ ```
49
+
50
+ Offline tests MUST stay hermetic: the `conftest.py` autouse fixture neutralizes `.env`.
51
+ Use `tests/factories.py:FakeMemory` + `create_app(...)` + `TestClient` for in-process
52
+ tests without Mubit.
53
+
54
+ ## Agent harness
55
+
56
+ The Python harness (`src/minima_harness`) was removed in v0.7.0. Its successor is the
57
+ TypeScript harness + TUI in `packages/tui` (the shipped `minima` CLI) — see
58
+ `packages/tui/README.md` for architecture, commands, and hard rules.
@@ -4,6 +4,66 @@ All notable changes to Minima are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/), and the project aims to follow
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [0.7.0] - 2026-07-05
8
+
9
+ ### Added
10
+ - **`GET /v1/capabilities`** — server feature handshake (api version, honored constraint
11
+ fields, feature flags) so clients can gate enforce-mode features on what the server
12
+ actually supports instead of guessing. (#54)
13
+ - **Sub-agent tree visualization** — a live `▸ step [status] $cost` panel (`/tree`) fed by
14
+ tagged child events during multi-agent runs. (#55)
15
+ - **Git worktree isolation for parallel sub-agents** — `isolation: "workdir"` delegations run
16
+ in a temporary `git worktree` (with a dirty-tree warning and automatic cleanup), so parallel
17
+ children editing the same files can't clobber each other. (#55)
18
+ - **Delegation ops-rules + BLOCKED convention** — sub-agents get explicit operational rules,
19
+ boundary refusals surface as `BLOCKED` → `partial` outcome so the parent can tell, and the
20
+ task tool carries anti-retry guidance (no more re-running an identical failed DAG). (#59)
21
+
22
+ ### Fixed
23
+ - **Every Claude call timed out in the harness** — the Anthropic SDK was handed a timeout in
24
+ seconds where it expects milliseconds (a 30–60 ms budget), so every Claude stream/complete
25
+ call died with "Request timed out" and fed quality-0 failures into routing. (#56)
26
+ - **Quality-score fabrication in the feedback loop (M-J2)** — unjudged successes no longer
27
+ default to quality 0.9 in the server decision log; the harness now sends a `judged` flag and
28
+ unjudged rows reconcile with `quality = NULL`, so calibration and savings metrics stop
29
+ trusting values that were never measured. (#54)
30
+ - **Judge hardening** — empty-output guard (scores 0 without an API call), head+tail
31
+ truncation so tail requirements survive long outputs, `<response>` delimiters + scoped-trust
32
+ system prompt against response-embedded injection, and a `parseScore` fix for
33
+ "X out of 10" phrasing. (#57)
34
+ - **Gemini reasoner starvation** — advisory JSON calls (classify/rank) no longer burn their
35
+ entire token budget on thinking before emitting JSON; RANK_SYSTEM invariants hardened. (#58)
36
+
37
+ ### Notes
38
+ - `minima-cli` on PyPI resumes at 0.7.0: the project version had lagged at 0.5.0, so the
39
+ 0.6.0 release build was silently skipped by `--skip-existing` and 0.6.0 was never published.
40
+
41
+ ## [0.6.0] - 2026-07-02
42
+
43
+ Agent-core release (milestones M-A…M-I): cost-aware sub-agent orchestration — `task` tool
44
+ with sequential and parallel DAG fan-out under a semaphore, per-child routing, budgets and
45
+ timeouts; DB-backed `BudgetLedger` with graduated enforcement; SQLite persistence spine
46
+ (runs/events/decisions + rehydration); recovery ladder walking server-supplied rungs on
47
+ failure; effort routing Phase A + fleet metrics; feedback-loop poisoning fixes; feature-vector
48
+ classifier with strongest-signal scoring. *(Never published to PyPI — see the 0.7.0 note.)*
49
+
50
+ ## [0.5.2] - 2026-07-02
51
+
52
+ Fixed TUI viewport-overflow rendering corruption; docs rebrand (Manrope, "minima by Mubit"
53
+ nav logo, new favicon).
54
+
55
+ ## [0.5.1] - 2026-07-01
56
+
57
+ Mubit memory in the TS harness (recall-before-route + outcome write-back with stable session
58
+ ids); benign routing diagnostics no longer render as errors; live model catalog; docs migrated
59
+ to Vocs with a Homebrew install guide.
60
+
61
+ ## [0.5.0] - 2026-07-01
62
+
63
+ The TypeScript/Bun TUI becomes the shipped CLI: one-click `minima auth` (browser login,
64
+ per-repo project mapping, workspace provisioning), the Homebrew tap ships the compiled binary
65
+ instead of a Python venv formula, and a comprehensive routing/tool test suite lands.
66
+
7
67
  ## [0.4.10] - 2026-06-26
8
68
 
9
69
  ### Changed
@@ -0,0 +1,56 @@
1
+ .PHONY: install run test lint fmt live eval seed refresh-catalog tui-install tui-test tui-check tui-build tui tui-dev
2
+
3
+ install:
4
+ uv sync --extra dev # dev pulls server + reasoner extras for the full test suite
5
+
6
+ run:
7
+ uv run --extra server uvicorn minima.main:app --reload --host $${MINIMA_HOST:-0.0.0.0} --port $${MINIMA_PORT:-8080}
8
+
9
+ test:
10
+ uv run pytest -m "not live and not eval" -q
11
+
12
+ lint:
13
+ uv run ruff check src client_sdk tests
14
+ uv run mypy src/minima
15
+
16
+ fmt:
17
+ uv run ruff check --fix src client_sdk tests
18
+ uv run ruff format src client_sdk tests
19
+
20
+ live:
21
+ uv run pytest -m live -q
22
+
23
+ eval:
24
+ uv run pytest -m eval -q
25
+
26
+ seed:
27
+ uv run minima-seed --limit $${LIMIT:-2000} --lane $${LANE:-minima:default}
28
+
29
+ # --- TS TUI (packages/tui) — run from the repo root so .env.harness auto-loads --------
30
+
31
+ TUI := packages/tui
32
+ TUI_BIN := $(TUI)/dist/minima
33
+
34
+ tui-install:
35
+ cd $(TUI) && bun install
36
+
37
+ tui-test:
38
+ cd $(TUI) && bun test
39
+
40
+ tui-check:
41
+ cd $(TUI) && bun run check && bun run lint
42
+
43
+ tui-build:
44
+ cd $(TUI) && bun run build
45
+
46
+ # Run the compiled binary (build first with `make tui-build`). Passes ARGS through, so:
47
+ # make tui ARGS='-p "hello"' # one-shot
48
+ # make tui ARGS='--offline --model gpt-4o-mini -p "hi"'
49
+ # make tui # interactive TUI
50
+ tui:
51
+ @test -x $(TUI_BIN) || { echo "Run 'make tui-build' first"; exit 1; }
52
+ ./$(TUI_BIN) $(ARGS)
53
+
54
+ # Run from source via Bun (no compile step) — fastest dev loop.
55
+ tui-dev:
56
+ cd $(TUI) && bun run src/cli/main.ts $(ARGS)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minima-cli
3
- Version: 0.4.10
3
+ Version: 0.7.0
4
4
  Summary: Minima CLI: cost-aware LLM model routing — recommend cheaper models, backed by Mubit memory.
5
5
  Project-URL: Homepage, https://docs.minima.sh
6
6
  Project-URL: Documentation, https://docs.minima.sh
@@ -30,7 +30,6 @@ Provides-Extra: dev
30
30
  Requires-Dist: anthropic>=0.40; extra == 'dev'
31
31
  Requires-Dist: fastapi>=0.115; extra == 'dev'
32
32
  Requires-Dist: google-genai>=0.3; extra == 'dev'
33
- Requires-Dist: keyring>=24; extra == 'dev'
34
33
  Requires-Dist: mypy>=1.10; extra == 'dev'
35
34
  Requires-Dist: psycopg2-binary>=2.9; extra == 'dev'
36
35
  Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
@@ -38,11 +37,7 @@ Requires-Dist: pytest>=8.2; extra == 'dev'
38
37
  Requires-Dist: redis>=5.0; extra == 'dev'
39
38
  Requires-Dist: respx>=0.21; extra == 'dev'
40
39
  Requires-Dist: ruff>=0.5; extra == 'dev'
41
- Requires-Dist: textual>=3.0; extra == 'dev'
42
40
  Requires-Dist: uvicorn[standard]>=0.30; extra == 'dev'
43
- Provides-Extra: harness
44
- Requires-Dist: anthropic>=0.40; extra == 'harness'
45
- Requires-Dist: google-genai>=0.3; extra == 'harness'
46
41
  Provides-Extra: reasoner-anthropic
47
42
  Requires-Dist: anthropic>=0.40; extra == 'reasoner-anthropic'
48
43
  Provides-Extra: reasoner-gemini
@@ -55,9 +50,6 @@ Requires-Dist: fastapi>=0.115; extra == 'server'
55
50
  Requires-Dist: psycopg2-binary>=2.9; extra == 'server'
56
51
  Requires-Dist: redis>=5.0; extra == 'server'
57
52
  Requires-Dist: uvicorn[standard]>=0.30; extra == 'server'
58
- Provides-Extra: tui
59
- Requires-Dist: keyring>=24; extra == 'tui'
60
- Requires-Dist: textual>=3.0; extra == 'tui'
61
53
  Description-Content-Type: text/markdown
62
54
 
63
55
  # Minima
@@ -176,7 +168,6 @@ Sync + async clients and zero-code `autocapture`: **[Python Client SDK](docs/cli
176
168
  | [Multi-Tenancy](docs/multi-tenancy.md) | One deployment, many orgs, per-org Mubit instances. |
177
169
  | [Operations](docs/operations.md) | Deployment, health, degradation, monitoring, secrets. |
178
170
  | [Examples](docs/examples.md) | Guided tour of the runnable examples. |
179
- | [Agent Harness](docs/harness.md) | `minima_harness`: a Minima-routing port of PI's agent toolkit. |
180
171
 
181
172
  ## Examples
182
173
 
@@ -191,33 +182,21 @@ Runnable, progressively advanced — in **[`examples/`](examples/)**:
191
182
  | 5 | [`05_autocapture.py`](examples/05_autocapture.py) | Zero-code intake via `mubit.learn`. |
192
183
  | 6 | [`06_routed_llm_call.py`](examples/06_routed_llm_call.py) | Routing a real Claude call + feedback. |
193
184
  | 7 | [`07_multitenant_admin.py`](examples/07_multitenant_admin.py) | Provision an org, call as that tenant. |
194
- | 8 | [`harness_warmup.py`](examples/harness_warmup.py) | The `minima_harness` agent loop (demo mode needs no keys). |
195
185
 
196
- ## Agent harness
186
+ ## The `minima` CLI
197
187
 
198
- [`minima_harness/`](src/minima_harness) is a lean Python port of
199
- [`@earendil-works/pi`](https://github.com/earendil-works/pi)'s agent toolkit, made
200
- Minima-native: an `Agent` runtime with tool calling **plus** a `MinimaAgent` that routes
201
- every prompt through Minima and feeds the realized tokens/cost/quality back. It is the
202
- "run the model yourself" half of the Minima loop, packaged.
203
-
204
- ```python
205
- from minima_harness.minima import MinimaAgent, HarnessConfig
206
-
207
- agent = MinimaAgent(HarnessConfig.from_env()) # MINIMA_URL, candidates, judge policy
208
- await agent.prompt("Summarize this incident.", task_type="summarization", slider=3)
209
- # -> Minima picked the model, the agent ran it, judged quality, fed the outcome back
210
- ```
211
-
212
- Try it with no keys via the in-process demo:
188
+ The `minima` CLI/TUI a coding agent that routes every prompt through Minima and feeds
189
+ realized tokens/cost/quality back — is a TypeScript/Bun binary that lives in
190
+ [`packages/tui/`](packages/tui/) and installs via Homebrew:
213
191
 
214
192
  ```bash
215
- uv run python examples/harness_warmup.py # demo (in-process Minima + fake provider)
216
- uv run python examples/harness_warmup.py --live # real Minima + real providers
193
+ brew tap mubit-ai/minima
194
+ brew install minima
217
195
  ```
218
196
 
219
- Full architecture, the loop mapping, and extension guide:
220
- **[Agent Harness](docs/harness.md)**.
197
+ The PyPI package (`pip install minima-cli`) is **not** the CLI: it ships the Python
198
+ client SDK (`minima_client`) and the server + operator tooling (`minima-seed`,
199
+ `minima-calibration-report`). The old Python harness/TUI was removed in v0.7.0.
221
200
 
222
201
  ## Configuration
223
202
 
@@ -254,7 +233,7 @@ src/minima/
254
233
  tenancy/ runtime · registry · context · keys · secrets
255
234
  seeding/ routerbench · synthetic · run_seed (minima-seed CLI)
256
235
  schemas/ common · recommend · workflow · feedback · models_catalog · strategies · admin
257
- src/minima_harness/ ported pi-ai (ai/) + pi-agent-core (agent/) + Minima integration (minima/) — see docs/harness.md
236
+ packages/tui/ the `minima` CLI/TUI (TypeScript/Bun, ships via Homebrew)
258
237
  client_sdk/minima_client/ client (sync+async) · autocapture · errors
259
238
  docs/ full documentation examples/ runnable examples
260
239
  tests/ unit · integration (FakeMemory) · live (-m live) · eval (-m eval)
@@ -114,7 +114,6 @@ Sync + async clients and zero-code `autocapture`: **[Python Client SDK](docs/cli
114
114
  | [Multi-Tenancy](docs/multi-tenancy.md) | One deployment, many orgs, per-org Mubit instances. |
115
115
  | [Operations](docs/operations.md) | Deployment, health, degradation, monitoring, secrets. |
116
116
  | [Examples](docs/examples.md) | Guided tour of the runnable examples. |
117
- | [Agent Harness](docs/harness.md) | `minima_harness`: a Minima-routing port of PI's agent toolkit. |
118
117
 
119
118
  ## Examples
120
119
 
@@ -129,33 +128,21 @@ Runnable, progressively advanced — in **[`examples/`](examples/)**:
129
128
  | 5 | [`05_autocapture.py`](examples/05_autocapture.py) | Zero-code intake via `mubit.learn`. |
130
129
  | 6 | [`06_routed_llm_call.py`](examples/06_routed_llm_call.py) | Routing a real Claude call + feedback. |
131
130
  | 7 | [`07_multitenant_admin.py`](examples/07_multitenant_admin.py) | Provision an org, call as that tenant. |
132
- | 8 | [`harness_warmup.py`](examples/harness_warmup.py) | The `minima_harness` agent loop (demo mode needs no keys). |
133
131
 
134
- ## Agent harness
132
+ ## The `minima` CLI
135
133
 
136
- [`minima_harness/`](src/minima_harness) is a lean Python port of
137
- [`@earendil-works/pi`](https://github.com/earendil-works/pi)'s agent toolkit, made
138
- Minima-native: an `Agent` runtime with tool calling **plus** a `MinimaAgent` that routes
139
- every prompt through Minima and feeds the realized tokens/cost/quality back. It is the
140
- "run the model yourself" half of the Minima loop, packaged.
141
-
142
- ```python
143
- from minima_harness.minima import MinimaAgent, HarnessConfig
144
-
145
- agent = MinimaAgent(HarnessConfig.from_env()) # MINIMA_URL, candidates, judge policy
146
- await agent.prompt("Summarize this incident.", task_type="summarization", slider=3)
147
- # -> Minima picked the model, the agent ran it, judged quality, fed the outcome back
148
- ```
149
-
150
- Try it with no keys via the in-process demo:
134
+ The `minima` CLI/TUI a coding agent that routes every prompt through Minima and feeds
135
+ realized tokens/cost/quality back — is a TypeScript/Bun binary that lives in
136
+ [`packages/tui/`](packages/tui/) and installs via Homebrew:
151
137
 
152
138
  ```bash
153
- uv run python examples/harness_warmup.py # demo (in-process Minima + fake provider)
154
- uv run python examples/harness_warmup.py --live # real Minima + real providers
139
+ brew tap mubit-ai/minima
140
+ brew install minima
155
141
  ```
156
142
 
157
- Full architecture, the loop mapping, and extension guide:
158
- **[Agent Harness](docs/harness.md)**.
143
+ The PyPI package (`pip install minima-cli`) is **not** the CLI: it ships the Python
144
+ client SDK (`minima_client`) and the server + operator tooling (`minima-seed`,
145
+ `minima-calibration-report`). The old Python harness/TUI was removed in v0.7.0.
159
146
 
160
147
  ## Configuration
161
148
 
@@ -192,7 +179,7 @@ src/minima/
192
179
  tenancy/ runtime · registry · context · keys · secrets
193
180
  seeding/ routerbench · synthetic · run_seed (minima-seed CLI)
194
181
  schemas/ common · recommend · workflow · feedback · models_catalog · strategies · admin
195
- src/minima_harness/ ported pi-ai (ai/) + pi-agent-core (agent/) + Minima integration (minima/) — see docs/harness.md
182
+ packages/tui/ the `minima` CLI/TUI (TypeScript/Bun, ships via Homebrew)
196
183
  client_sdk/minima_client/ client (sync+async) · autocapture · errors
197
184
  docs/ full documentation examples/ runnable examples
198
185
  tests/ unit · integration (FakeMemory) · live (-m live) · eval (-m eval)