minima-cli 0.5.0__tar.gz → 0.7.1__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.
- minima_cli-0.7.1/.github/workflows/catalog-snapshot.yml +100 -0
- minima_cli-0.7.1/.github/workflows/ci.yml +69 -0
- minima_cli-0.7.1/AGENTS.md +58 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/CHANGELOG.md +91 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/Makefile +2 -16
- {minima_cli-0.5.0 → minima_cli-0.7.1}/PKG-INFO +11 -32
- {minima_cli-0.5.0 → minima_cli-0.7.1}/README.md +10 -23
- minima_cli-0.7.1/docs/agent-core-architecture.md +748 -0
- minima_cli-0.7.1/docs/agent-core-implementation-plan.md +168 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/api-reference.md +2 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/configuration.md +6 -1
- minima_cli-0.7.1/docs/harness.md +22 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/publishing.md +17 -20
- minima_cli-0.7.1/docs-site/.dockerignore +5 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs-site/Dockerfile +15 -6
- minima_cli-0.7.1/docs-site/components/Accordion.tsx +38 -0
- minima_cli-0.7.1/docs-site/components/Badge.tsx +49 -0
- minima_cli-0.7.1/docs-site/components/Card.tsx +148 -0
- minima_cli-0.7.1/docs-site/components/CardGroup.tsx +22 -0
- minima_cli-0.7.1/docs-site/components/Frame.tsx +35 -0
- minima_cli-0.7.1/docs-site/components/Note.tsx +41 -0
- minima_cli-0.7.1/docs-site/components/PageHeader.tsx +28 -0
- minima_cli-0.7.1/docs-site/components/Steps.tsx +76 -0
- minima_cli-0.7.1/docs-site/components/Tabs.tsx +70 -0
- minima_cli-0.7.1/docs-site/components/index.ts +9 -0
- minima_cli-0.7.1/docs-site/components/sidebar.ts +95 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs-site/netlify.toml +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs-site/nginx.conf +12 -13
- minima_cli-0.7.1/docs-site/package-lock.json +10525 -0
- minima_cli-0.7.1/docs-site/package.json +22 -0
- minima_cli-0.5.0/docs-site/src/content/docs/api-reference.mdx → minima_cli-0.7.1/docs-site/pages/api-reference/endpoints.mdx +64 -20
- minima_cli-0.7.1/docs-site/pages/harness/cli.mdx +96 -0
- minima_cli-0.7.1/docs-site/pages/harness/configuration.mdx +108 -0
- minima_cli-0.7.1/docs-site/pages/harness/installation.mdx +101 -0
- minima_cli-0.7.1/docs-site/pages/harness/interactive.mdx +82 -0
- minima_cli-0.7.1/docs-site/pages/harness/overview.mdx +49 -0
- minima_cli-0.7.1/docs-site/pages/harness/routing.mdx +54 -0
- minima_cli-0.7.1/docs-site/pages/harness/sessions.mdx +40 -0
- minima_cli-0.7.1/docs-site/pages/harness/tools.mdx +80 -0
- minima_cli-0.7.1/docs-site/pages/harness/troubleshooting.mdx +56 -0
- {minima_cli-0.5.0/docs-site/src/content/docs → minima_cli-0.7.1/docs-site/pages}/index.mdx +34 -26
- {minima_cli-0.5.0/docs-site/src/content/docs → minima_cli-0.7.1/docs-site/pages/sdk}/client-sdk.mdx +11 -9
- {minima_cli-0.5.0/docs-site/src/content/docs → minima_cli-0.7.1/docs-site/pages/sdk}/concepts.mdx +9 -7
- {minima_cli-0.5.0/docs-site/src/content/docs → minima_cli-0.7.1/docs-site/pages/sdk}/examples.mdx +13 -10
- minima_cli-0.7.1/docs-site/pages/sdk/getting-started.mdx +71 -0
- minima_cli-0.7.1/docs-site/public/images/favicon.png +0 -0
- minima_cli-0.7.1/docs-site/public/images/logo-dark.svg +11 -0
- minima_cli-0.7.1/docs-site/public/images/logo-light.svg +11 -0
- minima_cli-0.7.1/docs-site/public/styles/global.css +63 -0
- minima_cli-0.7.1/docs-site/tsconfig.json +20 -0
- minima_cli-0.7.1/docs-site/vocs.config.ts +96 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/README.md +0 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/README.md +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/bun.lock +75 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/package.json +3 -2
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/agent.ts +5 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/index.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/state.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/tools.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/compat.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/events.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/index.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/provider_catalog.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/provider_quirks.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/_common.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/anthropic.ts +12 -3
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/base.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/faux.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/google.ts +3 -2
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/index.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/providers/openai_compat.ts +13 -3
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/registry.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/stream.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/types.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/ai/usage.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/cli/main.ts +174 -10
- minima_cli-0.7.1/packages/tui/src/db/metrics.ts +167 -0
- minima_cli-0.7.1/packages/tui/src/db/minima_db.ts +442 -0
- minima_cli-0.7.1/packages/tui/src/db/rehydrate.ts +80 -0
- minima_cli-0.7.1/packages/tui/src/db/sink.ts +161 -0
- minima_cli-0.7.1/packages/tui/src/errtext.ts +11 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/index.ts +1 -1
- minima_cli-0.7.1/packages/tui/src/minima/budget.ts +251 -0
- minima_cli-0.7.1/packages/tui/src/minima/catalog.ts +150 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/client.ts +14 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/config.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/index.ts +1 -1
- minima_cli-0.7.1/packages/tui/src/minima/judge.ts +173 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/mapping.ts +1 -1
- minima_cli-0.7.1/packages/tui/src/minima/memory.ts +171 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/meter.ts +1 -1
- minima_cli-0.7.1/packages/tui/src/minima/mubit_memory_factory.ts +32 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/router.ts +84 -7
- minima_cli-0.7.1/packages/tui/src/minima/runtime.ts +651 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/schemas.ts +17 -0
- minima_cli-0.7.1/packages/tui/src/minima/spawn.ts +225 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/run_modes.ts +34 -15
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/session/store.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/_io.ts +25 -2
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/bash.ts +16 -5
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/builtin.ts +15 -8
- minima_cli-0.7.1/packages/tui/src/tools/edit.ts +56 -0
- minima_cli-0.7.1/packages/tui/src/tools/glob.ts +37 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/grep.ts +11 -5
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/index.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/ls.ts +12 -6
- minima_cli-0.7.1/packages/tui/src/tools/read.ts +40 -0
- minima_cli-0.7.1/packages/tui/src/tools/task.ts +289 -0
- minima_cli-0.7.1/packages/tui/src/tools/todowrite.ts +65 -0
- minima_cli-0.7.1/packages/tui/src/tools/types.ts +9 -0
- minima_cli-0.7.1/packages/tui/src/tools/write.ts +37 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/app.tsx +409 -113
- minima_cli-0.7.1/packages/tui/src/tui/child_tree.tsx +62 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/config_store.ts +1 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/context.ts +1 -1
- minima_cli-0.7.1/packages/tui/src/tui/layout.ts +164 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/messages.tsx +7 -42
- minima_cli-0.7.1/packages/tui/src/tui/model-picker.tsx +106 -0
- minima_cli-0.7.1/packages/tui/src/tui/routing-warnings.ts +31 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/status.tsx +31 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/text-input.tsx +8 -2
- minima_cli-0.7.1/packages/tui/src/version.ts +9 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/agent.test.ts +11 -12
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/ai.test.ts +4 -10
- minima_cli-0.7.1/packages/tui/tests/anthropic.test.ts +197 -0
- minima_cli-0.7.1/packages/tui/tests/budget.test.ts +262 -0
- minima_cli-0.7.1/packages/tui/tests/candidate-filter.test.ts +129 -0
- minima_cli-0.7.1/packages/tui/tests/catalog.test.ts +135 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/client.test.ts +58 -14
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/config_store.test.ts +6 -6
- minima_cli-0.7.1/packages/tui/tests/db.test.ts +367 -0
- minima_cli-0.7.1/packages/tui/tests/effort.test.ts +157 -0
- minima_cli-0.7.1/packages/tui/tests/error-ux.test.ts +74 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/google.test.ts +77 -39
- minima_cli-0.7.1/packages/tui/tests/isolation.test.ts +155 -0
- minima_cli-0.7.1/packages/tui/tests/judge.test.ts +145 -0
- minima_cli-0.7.1/packages/tui/tests/ladder.test.ts +207 -0
- minima_cli-0.7.1/packages/tui/tests/layout.test.ts +150 -0
- minima_cli-0.7.1/packages/tui/tests/memory.test.ts +158 -0
- minima_cli-0.7.1/packages/tui/tests/minima.test.ts +363 -0
- minima_cli-0.7.1/packages/tui/tests/minima_memory.test.ts +209 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/openai_compat.test.ts +10 -13
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/run_modes.test.ts +14 -5
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/session.test.ts +1 -1
- minima_cli-0.7.1/packages/tui/tests/spawn.test.ts +351 -0
- minima_cli-0.7.1/packages/tui/tests/task.test.ts +273 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/thinking.test.ts +15 -7
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/tools.test.ts +8 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/pyproject.toml +8 -14
- minima_cli-0.7.1/scripts/eval/classify_dataset.json +46 -0
- minima_cli-0.7.1/scripts/eval/eval_classify.py +116 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/scripts/test-routing.sh +3 -3
- {minima_cli-0.5.0 → minima_cli-0.7.1}/scripts/test-routing.ts +1 -1
- minima_cli-0.7.1/src/minima/api/auth.py +69 -0
- minima_cli-0.7.1/src/minima/api/routers/capabilities.py +42 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/feedback.py +16 -4
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/strategies.py +11 -3
- minima_cli-0.7.1/src/minima/catalog/data/capability_priors.json +330 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/config.py +6 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/llm/base.py +6 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/llm/gemini.py +6 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/main.py +2 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/metrics/calibration.py +5 -0
- minima_cli-0.7.1/src/minima/recommender/classify.py +580 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/decisionlog.py +4 -1
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/engine.py +130 -50
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/escalation.py +17 -0
- minima_cli-0.7.1/src/minima/schemas/capabilities.py +15 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/feedback.py +9 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/recommend.py +31 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/strategies.py +1 -0
- minima_cli-0.7.1/src/minima/version.py +9 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/conftest.py +28 -0
- minima_cli-0.7.1/tests/eval/prompt_length_benchmark.py +296 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/factories.py +2 -0
- minima_cli-0.7.1/tests/integration/test_auth.py +58 -0
- minima_cli-0.7.1/tests/integration/test_escalation_reasoner.py +147 -0
- minima_cli-0.7.1/tests/integration/test_feedback_loop.py +166 -0
- minima_cli-0.7.1/tests/integration/test_recommend_api.py +127 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/integration/test_strategies_api.py +21 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_escalation_fixes.py +13 -9
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_full_surface_live.py +2 -0
- minima_cli-0.7.1/tests/unit/test_capabilities.py +55 -0
- minima_cli-0.7.1/tests/unit/test_classify_benchmark.py +247 -0
- minima_cli-0.7.1/tests/unit/test_classify_keys.py +131 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_decisionlog.py +21 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_neighbor_classify.py +14 -1
- minima_cli-0.7.1/tests/unit/test_prompt_length_benchmark.py +43 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_reasoner.py +27 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_records_catalog.py +27 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_store_backends.py +28 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/uv.lock +3 -205
- minima_cli-0.5.0/AGENTS.md +0 -90
- minima_cli-0.5.0/agent/task_set.py +0 -8
- minima_cli-0.5.0/docs/harness.md +0 -223
- minima_cli-0.5.0/docs-site/astro.config.mjs +0 -44
- minima_cli-0.5.0/docs-site/package-lock.json +0 -7460
- minima_cli-0.5.0/docs-site/package.json +0 -19
- minima_cli-0.5.0/docs-site/public/favicon.svg +0 -5
- minima_cli-0.5.0/docs-site/src/assets/logo.svg +0 -6
- minima_cli-0.5.0/docs-site/src/content/config.ts +0 -7
- minima_cli-0.5.0/docs-site/src/content/docs/getting-started.mdx +0 -72
- minima_cli-0.5.0/docs-site/src/styles/custom.css +0 -100
- minima_cli-0.5.0/docs-site/tsconfig.json +0 -6
- minima_cli-0.5.0/examples/harness_warmup.py +0 -333
- minima_cli-0.5.0/packages/tui/src/minima/judge.ts +0 -110
- minima_cli-0.5.0/packages/tui/src/minima/runtime.ts +0 -273
- minima_cli-0.5.0/packages/tui/src/tools/edit.ts +0 -55
- minima_cli-0.5.0/packages/tui/src/tools/glob.ts +0 -37
- minima_cli-0.5.0/packages/tui/src/tools/read.ts +0 -39
- minima_cli-0.5.0/packages/tui/src/tools/todowrite.ts +0 -67
- minima_cli-0.5.0/packages/tui/src/tools/write.ts +0 -34
- minima_cli-0.5.0/packages/tui/src/tui/model-picker.tsx +0 -66
- minima_cli-0.5.0/packages/tui/tests/anthropic.test.ts +0 -121
- minima_cli-0.5.0/packages/tui/tests/minima.test.ts +0 -172
- minima_cli-0.5.0/src/minima/api/auth.py +0 -39
- minima_cli-0.5.0/src/minima/catalog/data/capability_priors.json +0 -210
- minima_cli-0.5.0/src/minima/recommender/classify.py +0 -165
- minima_cli-0.5.0/src/minima/version.py +0 -3
- minima_cli-0.5.0/src/minima_harness/LICENSE_PI +0 -32
- minima_cli-0.5.0/src/minima_harness/__init__.py +0 -16
- minima_cli-0.5.0/src/minima_harness/agent/__init__.py +0 -72
- minima_cli-0.5.0/src/minima_harness/agent/agent.py +0 -276
- minima_cli-0.5.0/src/minima_harness/agent/events.py +0 -124
- minima_cli-0.5.0/src/minima_harness/agent/loop.py +0 -311
- minima_cli-0.5.0/src/minima_harness/agent/state.py +0 -79
- minima_cli-0.5.0/src/minima_harness/agent/tools.py +0 -97
- minima_cli-0.5.0/src/minima_harness/ai/__init__.py +0 -66
- minima_cli-0.5.0/src/minima_harness/ai/compat.py +0 -71
- minima_cli-0.5.0/src/minima_harness/ai/errors.py +0 -96
- minima_cli-0.5.0/src/minima_harness/ai/events.py +0 -117
- minima_cli-0.5.0/src/minima_harness/ai/openrouter_catalog.py +0 -153
- minima_cli-0.5.0/src/minima_harness/ai/provider_catalog.py +0 -299
- minima_cli-0.5.0/src/minima_harness/ai/provider_quirks.py +0 -37
- minima_cli-0.5.0/src/minima_harness/ai/providers/__init__.py +0 -75
- minima_cli-0.5.0/src/minima_harness/ai/providers/_common.py +0 -48
- minima_cli-0.5.0/src/minima_harness/ai/providers/anthropic.py +0 -290
- minima_cli-0.5.0/src/minima_harness/ai/providers/base.py +0 -65
- minima_cli-0.5.0/src/minima_harness/ai/providers/faux.py +0 -173
- minima_cli-0.5.0/src/minima_harness/ai/providers/google.py +0 -221
- minima_cli-0.5.0/src/minima_harness/ai/providers/openai_compat.py +0 -278
- minima_cli-0.5.0/src/minima_harness/ai/registry.py +0 -184
- minima_cli-0.5.0/src/minima_harness/ai/stream.py +0 -82
- minima_cli-0.5.0/src/minima_harness/ai/tools.py +0 -51
- minima_cli-0.5.0/src/minima_harness/ai/types.py +0 -204
- minima_cli-0.5.0/src/minima_harness/ai/usage.py +0 -41
- minima_cli-0.5.0/src/minima_harness/minima/__init__.py +0 -40
- minima_cli-0.5.0/src/minima_harness/minima/cache.py +0 -102
- minima_cli-0.5.0/src/minima_harness/minima/config.py +0 -86
- minima_cli-0.5.0/src/minima_harness/minima/goals.py +0 -226
- minima_cli-0.5.0/src/minima_harness/minima/judge.py +0 -144
- minima_cli-0.5.0/src/minima_harness/minima/mapping.py +0 -147
- minima_cli-0.5.0/src/minima_harness/minima/meter.py +0 -143
- minima_cli-0.5.0/src/minima_harness/minima/router.py +0 -220
- minima_cli-0.5.0/src/minima_harness/minima/runtime.py +0 -544
- minima_cli-0.5.0/src/minima_harness/minima/signals.py +0 -195
- minima_cli-0.5.0/src/minima_harness/session/__init__.py +0 -14
- minima_cli-0.5.0/src/minima_harness/session/format.py +0 -35
- minima_cli-0.5.0/src/minima_harness/session/store.py +0 -236
- minima_cli-0.5.0/src/minima_harness/tasks/__init__.py +0 -17
- minima_cli-0.5.0/src/minima_harness/tasks/task_set.py +0 -78
- minima_cli-0.5.0/src/minima_harness/tools/__init__.py +0 -7
- minima_cli-0.5.0/src/minima_harness/tools/_io.py +0 -34
- minima_cli-0.5.0/src/minima_harness/tools/bash.py +0 -70
- minima_cli-0.5.0/src/minima_harness/tools/builtin.py +0 -23
- minima_cli-0.5.0/src/minima_harness/tools/edit.py +0 -50
- minima_cli-0.5.0/src/minima_harness/tools/find.py +0 -38
- minima_cli-0.5.0/src/minima_harness/tools/grep.py +0 -73
- minima_cli-0.5.0/src/minima_harness/tools/ls.py +0 -35
- minima_cli-0.5.0/src/minima_harness/tools/read.py +0 -38
- minima_cli-0.5.0/src/minima_harness/tools/tasks.py +0 -75
- minima_cli-0.5.0/src/minima_harness/tools/write.py +0 -36
- minima_cli-0.5.0/src/minima_harness/tui/__init__.py +0 -3
- minima_cli-0.5.0/src/minima_harness/tui/analytics.py +0 -111
- minima_cli-0.5.0/src/minima_harness/tui/app.py +0 -1943
- minima_cli-0.5.0/src/minima_harness/tui/bridge.py +0 -103
- minima_cli-0.5.0/src/minima_harness/tui/cli.py +0 -227
- minima_cli-0.5.0/src/minima_harness/tui/clipboard.py +0 -60
- minima_cli-0.5.0/src/minima_harness/tui/commands.py +0 -49
- minima_cli-0.5.0/src/minima_harness/tui/compaction.py +0 -17
- minima_cli-0.5.0/src/minima_harness/tui/config_cli.py +0 -141
- minima_cli-0.5.0/src/minima_harness/tui/config_store.py +0 -237
- minima_cli-0.5.0/src/minima_harness/tui/context.py +0 -93
- minima_cli-0.5.0/src/minima_harness/tui/customize.py +0 -95
- minima_cli-0.5.0/src/minima_harness/tui/diff.py +0 -53
- minima_cli-0.5.0/src/minima_harness/tui/editor.py +0 -43
- minima_cli-0.5.0/src/minima_harness/tui/extensions.py +0 -84
- minima_cli-0.5.0/src/minima_harness/tui/extra_models.py +0 -52
- minima_cli-0.5.0/src/minima_harness/tui/history.py +0 -71
- minima_cli-0.5.0/src/minima_harness/tui/mubit.py +0 -295
- minima_cli-0.5.0/src/minima_harness/tui/overlays.py +0 -593
- minima_cli-0.5.0/src/minima_harness/tui/packages.py +0 -59
- minima_cli-0.5.0/src/minima_harness/tui/run_modes.py +0 -66
- minima_cli-0.5.0/src/minima_harness/tui/theme.py +0 -77
- minima_cli-0.5.0/src/minima_harness/tui/welcome.py +0 -83
- minima_cli-0.5.0/src/minima_harness/tui/widgets/__init__.py +0 -3
- minima_cli-0.5.0/src/minima_harness/tui/widgets/banner.py +0 -38
- minima_cli-0.5.0/src/minima_harness/tui/widgets/editor.py +0 -84
- minima_cli-0.5.0/src/minima_harness/tui/widgets/footer.py +0 -73
- minima_cli-0.5.0/src/minima_harness/tui/widgets/messages.py +0 -151
- minima_cli-0.5.0/src/minima_harness/tui/widgets/status.py +0 -57
- minima_cli-0.5.0/tests/harness/__init__.py +0 -0
- minima_cli-0.5.0/tests/harness/session/__init__.py +0 -0
- minima_cli-0.5.0/tests/harness/session/test_format.py +0 -23
- minima_cli-0.5.0/tests/harness/session/test_manager.py +0 -85
- minima_cli-0.5.0/tests/harness/session/test_store.py +0 -109
- minima_cli-0.5.0/tests/harness/test_agent_loop.py +0 -300
- minima_cli-0.5.0/tests/harness/test_anthropic_mapping.py +0 -310
- minima_cli-0.5.0/tests/harness/test_auth_reroute.py +0 -408
- minima_cli-0.5.0/tests/harness/test_cache.py +0 -65
- minima_cli-0.5.0/tests/harness/test_catalog_overlay.py +0 -104
- minima_cli-0.5.0/tests/harness/test_common_and_wire.py +0 -82
- minima_cli-0.5.0/tests/harness/test_compat.py +0 -74
- minima_cli-0.5.0/tests/harness/test_errors.py +0 -99
- minima_cli-0.5.0/tests/harness/test_goals.py +0 -153
- minima_cli-0.5.0/tests/harness/test_google_mapping.py +0 -182
- minima_cli-0.5.0/tests/harness/test_judge.py +0 -62
- minima_cli-0.5.0/tests/harness/test_live.py +0 -58
- minima_cli-0.5.0/tests/harness/test_mapping.py +0 -53
- minima_cli-0.5.0/tests/harness/test_minima_e2e.py +0 -150
- minima_cli-0.5.0/tests/harness/test_openai_compat_sse.py +0 -142
- minima_cli-0.5.0/tests/harness/test_openrouter_catalog.py +0 -134
- minima_cli-0.5.0/tests/harness/test_phase0_smoke.py +0 -162
- minima_cli-0.5.0/tests/harness/test_phase_a.py +0 -272
- minima_cli-0.5.0/tests/harness/test_phase_b.py +0 -119
- minima_cli-0.5.0/tests/harness/test_phase_c.py +0 -102
- minima_cli-0.5.0/tests/harness/test_provider_catalog.py +0 -102
- minima_cli-0.5.0/tests/harness/test_provider_quirks.py +0 -14
- minima_cli-0.5.0/tests/harness/test_provider_registration.py +0 -33
- minima_cli-0.5.0/tests/harness/test_provider_wiring.py +0 -166
- minima_cli-0.5.0/tests/harness/test_runtime.py +0 -491
- minima_cli-0.5.0/tests/harness/test_signals.py +0 -264
- minima_cli-0.5.0/tests/harness/tools/__init__.py +0 -0
- minima_cli-0.5.0/tests/harness/tools/test_agent_smoke.py +0 -21
- minima_cli-0.5.0/tests/harness/tools/test_bash.py +0 -41
- minima_cli-0.5.0/tests/harness/tools/test_builtin.py +0 -17
- minima_cli-0.5.0/tests/harness/tools/test_edit.py +0 -42
- minima_cli-0.5.0/tests/harness/tools/test_find.py +0 -22
- minima_cli-0.5.0/tests/harness/tools/test_grep.py +0 -30
- minima_cli-0.5.0/tests/harness/tools/test_io.py +0 -38
- minima_cli-0.5.0/tests/harness/tools/test_ls.py +0 -26
- minima_cli-0.5.0/tests/harness/tools/test_read.py +0 -34
- minima_cli-0.5.0/tests/harness/tools/test_write.py +0 -21
- minima_cli-0.5.0/tests/harness/tui/__init__.py +0 -0
- minima_cli-0.5.0/tests/harness/tui/test_analytics.py +0 -48
- minima_cli-0.5.0/tests/harness/tui/test_app_pilot.py +0 -70
- minima_cli-0.5.0/tests/harness/tui/test_bridge.py +0 -64
- minima_cli-0.5.0/tests/harness/tui/test_clipboard.py +0 -80
- minima_cli-0.5.0/tests/harness/tui/test_command_popup.py +0 -46
- minima_cli-0.5.0/tests/harness/tui/test_commands.py +0 -36
- minima_cli-0.5.0/tests/harness/tui/test_config.py +0 -279
- minima_cli-0.5.0/tests/harness/tui/test_context.py +0 -42
- minima_cli-0.5.0/tests/harness/tui/test_customize.py +0 -31
- minima_cli-0.5.0/tests/harness/tui/test_decision_card.py +0 -231
- minima_cli-0.5.0/tests/harness/tui/test_diff.py +0 -45
- minima_cli-0.5.0/tests/harness/tui/test_editor.py +0 -39
- minima_cli-0.5.0/tests/harness/tui/test_editor_widget.py +0 -53
- minima_cli-0.5.0/tests/harness/tui/test_export.py +0 -37
- minima_cli-0.5.0/tests/harness/tui/test_extensions.py +0 -76
- minima_cli-0.5.0/tests/harness/tui/test_goals_tui.py +0 -183
- minima_cli-0.5.0/tests/harness/tui/test_history_sessions.py +0 -151
- minima_cli-0.5.0/tests/harness/tui/test_messages.py +0 -64
- minima_cli-0.5.0/tests/harness/tui/test_mouse_copy.py +0 -101
- minima_cli-0.5.0/tests/harness/tui/test_mubit.py +0 -67
- minima_cli-0.5.0/tests/harness/tui/test_optimize.py +0 -118
- minima_cli-0.5.0/tests/harness/tui/test_overlays.py +0 -106
- minima_cli-0.5.0/tests/harness/tui/test_p2.py +0 -61
- minima_cli-0.5.0/tests/harness/tui/test_p3.py +0 -65
- minima_cli-0.5.0/tests/harness/tui/test_p5.py +0 -89
- minima_cli-0.5.0/tests/harness/tui/test_permissions.py +0 -142
- minima_cli-0.5.0/tests/harness/tui/test_predictability.py +0 -77
- minima_cli-0.5.0/tests/harness/tui/test_prompt_layers.py +0 -106
- minima_cli-0.5.0/tests/harness/tui/test_queue.py +0 -81
- minima_cli-0.5.0/tests/harness/tui/test_run_modes.py +0 -41
- minima_cli-0.5.0/tests/harness/tui/test_status.py +0 -24
- minima_cli-0.5.0/tests/harness/tui/test_status_bar.py +0 -45
- minima_cli-0.5.0/tests/harness/tui/test_theme.py +0 -21
- minima_cli-0.5.0/tests/harness/tui/test_thoughts.py +0 -70
- minima_cli-0.5.0/tests/harness/tui/test_tool_render.py +0 -65
- minima_cli-0.5.0/tests/harness/tui/test_ux.py +0 -228
- minima_cli-0.5.0/tests/harness/tui/test_welcome.py +0 -113
- minima_cli-0.5.0/tests/harness/tui/test_widgets.py +0 -126
- minima_cli-0.5.0/tests/integration/test_escalation_reasoner.py +0 -71
- minima_cli-0.5.0/tests/integration/test_feedback_loop.py +0 -81
- minima_cli-0.5.0/tests/integration/test_recommend_api.py +0 -55
- minima_cli-0.5.0/tests/unit/test_classify_keys.py +0 -53
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.dockerignore +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.env.example +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.github/workflows/prod.yml +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.github/workflows/release-cli.yml +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.github/workflows/staging.yml +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/.gitignore +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/Dockerfile +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/LICENSE +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/client_sdk/minima_client/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/client_sdk/minima_client/autocapture.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/client_sdk/minima_client/client.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/client_sdk/minima_client/errors.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/README.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/client-sdk.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/concepts.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/examples.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/getting-started.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/goals-feature-plan.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/multi-tenancy.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/operations.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/docs/seeding.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/01_quickstart.sh +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/02_recommend_and_feedback.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/03_constraints_and_tradeoff.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/04_workflow.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/05_autocapture.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/06_routed_llm_call.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/07_multitenant_admin.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_escalation.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_escalation_learn.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_gemini.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_retention.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_warmup.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/agent_warmup_vary.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/metrics_demo.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/examples/smoke_test.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/maybe.js +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/maybe.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/.gitignore +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/biome.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/scripts/build-all.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/scripts/build.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/scripts/install.sh +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/scripts/stub-devtools.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/events.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/agent/loop.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/minima/errors.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/session/index.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/at_mentions.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/schema.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tools/web_fetch.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/auth.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/compact.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/mouse-scroll.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/permissions.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/tui/projects.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/src/types.d.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tests/auth.test.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packages/tui/tsconfig.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packaging/homebrew/README.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/packaging/homebrew/render_formula.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_125009/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_125009/strategies_run1.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_125009/strategies_run2.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_125009/strategies_run3.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_125009/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/strategies_run1.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/strategies_run2.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/strategies_run3.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/strategies_run4.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/strategies_run5.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_130252/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_182838/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_182838/strategies_run1.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_182838/strategies_run2.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_182838/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/memory_audit.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/strategies_run1.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/strategies_run2.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/strategies_run3.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/strategies_run4.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/strategies_run5.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260612_183343/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/memory_audit.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/strategies_run1.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/strategies_run2.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/strategies_run3.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/strategies_run4.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/strategies_run5.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260615_101732/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260624_103307/memory_audit.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260624_103307/recall_debug.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/20260624_103307/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_133108/cold_probe.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_133108/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_133108/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_134209/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_134209/cold_probe.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_134209/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalate_20260615_134209/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalation_20260612_201825/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalation_20260612_201825/results.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/escalation_20260612_201825/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/_manifest.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/calibration.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/feedback.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/health.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/models.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/recommend.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/savings.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/strategies.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/playground_p1/workflow.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/retention_20260612_201828/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/retention_20260612_201828/results.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/retention_20260612_201828/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/warmupvary_20260615_123818/REPORT.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/warmupvary_20260615_123818/summary.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/runs/warmupvary_20260615_123818/tasks.jsonl +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/scripts/test-routing-web.ts +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/errors.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/calibration.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/health.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/models.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/recommend.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/api/routers/savings.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/data/model_aliases.json +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/merge.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/refresh.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/sources/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/sources/litellm.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/sources/openrouter.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/catalog/store.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/deps.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/llm/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/llm/anthropic.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/llm/registry.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/logging.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/memory/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/memory/adapter.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/memory/keys.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/memory/records.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/memory/threadpool.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/metrics/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/metrics/report.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/metrics/savings.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/_pg_pool.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/_redis_client.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/aggregate.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/durablerefs.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/propensity.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/recstore.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/score.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/recommender/types.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/common.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/models_catalog.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/savings.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/schemas/workflow.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/items.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/llmrouterbench.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/routerbench.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/run_seed.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/seeding/synthetic.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/tenancy/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/tenancy/context.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/src/minima/tenancy/passthrough.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/BENCHMARKS.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/CRITERIA.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/RESULTS.md +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/__init__.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/harness.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/llmrouterbench_config.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/test_llmrouterbench_savings.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/eval/test_routerbench_savings.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/integration/test_lesson_promotion.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/integration/test_measurement_api.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/integration/test_observed_cost_ranking.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/integration/test_workflow_models_health.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_cost_savings_spotcheck_live.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_mubit_roundtrip.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_phase3_live.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_reasoner_live.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/live/test_recall_params_live.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_aggregate.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_aggregate_decay.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_autocapture.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_calibration_fit.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_cluster.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_collapse_guard.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_cost_band.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_escalation.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_exploration.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_ipw.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_iterations.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_latency_quality.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_lever_cost.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_metrics.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_metrics_demo.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_recstore_sqlite.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_score.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_shadow_bandit.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_strategies.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_tenancy.py +0 -0
- {minima_cli-0.5.0 → minima_cli-0.7.1}/tests/unit/test_thompson.py +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: Catalog — refresh vendored snapshot
|
|
2
|
+
|
|
3
|
+
# Keeps the vendored cold-start model catalog fresh so it stops drifting by hand.
|
|
4
|
+
#
|
|
5
|
+
# WHAT/WHY: src/minima/catalog/data/capability_priors.json is the cold-start
|
|
6
|
+
# fallback the server loads when the live cost feed (LiteLLM/OpenRouter) is
|
|
7
|
+
# unreachable — see src/minima/catalog/store.py (load_snapshot_cards) and the
|
|
8
|
+
# /v1/models router. It used to be hand-maintained and drifted stale (e.g.
|
|
9
|
+
# missing the gpt-5 family). This job pulls the *live* served catalog from
|
|
10
|
+
# api.minima.sh/v1/models — the source-of-truth that already merges curated
|
|
11
|
+
# capability priors with live cost — normalizes it (via jq) into the EXACT
|
|
12
|
+
# shape the loader reads, and opens a PR only when it actually changed.
|
|
13
|
+
#
|
|
14
|
+
# We deliberately DO NOT commit straight to main and DO NOT hand-edit the JSON:
|
|
15
|
+
# a reviewer sees the diff, and the automation (not a human) keeps it current.
|
|
16
|
+
on:
|
|
17
|
+
schedule:
|
|
18
|
+
- cron: "17 6 * * *" # daily (~every 24h); minute offset avoids the top-of-hour rush
|
|
19
|
+
workflow_dispatch: {}
|
|
20
|
+
|
|
21
|
+
concurrency:
|
|
22
|
+
group: catalog-snapshot
|
|
23
|
+
cancel-in-progress: false
|
|
24
|
+
|
|
25
|
+
# Least privilege: only what's needed to push a chore branch and open a PR.
|
|
26
|
+
permissions:
|
|
27
|
+
contents: write
|
|
28
|
+
pull-requests: write
|
|
29
|
+
|
|
30
|
+
env:
|
|
31
|
+
# Source-of-truth: the live served catalog. Override via repo/environment var
|
|
32
|
+
# CATALOG_SOURCE_URL if the prod host ever changes.
|
|
33
|
+
CATALOG_URL: ${{ vars.CATALOG_SOURCE_URL || 'https://api.minima.sh/v1/models' }}
|
|
34
|
+
SNAPSHOT_PATH: src/minima/catalog/data/capability_priors.json
|
|
35
|
+
BRANCH: chore/catalog-snapshot-auto
|
|
36
|
+
|
|
37
|
+
jobs:
|
|
38
|
+
refresh:
|
|
39
|
+
name: Fetch live catalog → PR if changed
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- name: Checkout
|
|
43
|
+
uses: actions/checkout@v5
|
|
44
|
+
|
|
45
|
+
- name: Fetch + normalize live catalog into the vendored snapshot shape
|
|
46
|
+
run: |
|
|
47
|
+
set -euo pipefail
|
|
48
|
+
# /v1/models returns {models:[ModelCard...], catalog_version, stale}.
|
|
49
|
+
# ModelCard is a superset of the snapshot object, so we project it back
|
|
50
|
+
# to the exact fields load_snapshot_cards() reads and drop the runtime
|
|
51
|
+
# metadata (cost_source/cost_fetched_at/cost_stale/capability_source),
|
|
52
|
+
# which the loader always re-stamps as "fallback-snapshot".
|
|
53
|
+
curl -fsSL --retry 3 --retry-delay 5 --max-time 60 "$CATALOG_URL" -o live.json
|
|
54
|
+
|
|
55
|
+
count="$(jq '.models | length' live.json)"
|
|
56
|
+
if [ "$count" -lt 5 ]; then
|
|
57
|
+
echo "::error::live catalog returned only $count models (<5); refusing to overwrite snapshot"
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
version="fallback-snapshot-$(date -u +%Y-%m)"
|
|
62
|
+
note="Cold-start fallback only. Auto-refreshed by .github/workflows/catalog-snapshot.yml from the live /v1/models catalog — do not hand-edit. Live cost is overlaid from LiteLLM/OpenRouter at runtime; capability_by_task_type are normalized [0,1] heuristic priors, corrected by accumulated memory. Prices are approximate USD per million tokens."
|
|
63
|
+
|
|
64
|
+
jq \
|
|
65
|
+
--arg version "$version" \
|
|
66
|
+
--arg note "$note" '{
|
|
67
|
+
version: $version,
|
|
68
|
+
note: $note,
|
|
69
|
+
models: (.models | sort_by(.model_id) | map({
|
|
70
|
+
model_id, provider, display_name,
|
|
71
|
+
input_cost_per_mtok, output_cost_per_mtok, cache_read_cost_per_mtok,
|
|
72
|
+
supports_prompt_caching, context_window, max_output_tokens,
|
|
73
|
+
capability_priors, capability_by_task_type
|
|
74
|
+
}))
|
|
75
|
+
}' live.json > "$SNAPSHOT_PATH.tmp"
|
|
76
|
+
mv "$SNAPSHOT_PATH.tmp" "$SNAPSHOT_PATH"
|
|
77
|
+
rm -f live.json
|
|
78
|
+
echo "Normalized $count models into $SNAPSHOT_PATH"
|
|
79
|
+
|
|
80
|
+
- name: Commit + open PR only if the snapshot changed
|
|
81
|
+
env:
|
|
82
|
+
GH_TOKEN: ${{ github.token }}
|
|
83
|
+
run: |
|
|
84
|
+
set -euo pipefail
|
|
85
|
+
if git diff --quiet -- "$SNAPSHOT_PATH"; then
|
|
86
|
+
echo "Snapshot already up to date; nothing to do."
|
|
87
|
+
exit 0
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
git config user.name "github-actions[bot]"
|
|
91
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
92
|
+
git checkout -B "$BRANCH"
|
|
93
|
+
git add "$SNAPSHOT_PATH"
|
|
94
|
+
git commit -m "chore(catalog): refresh vendored model snapshot from live /v1/models"
|
|
95
|
+
git push -u origin "$BRANCH" --force-with-lease
|
|
96
|
+
|
|
97
|
+
gh pr create --base main --head "$BRANCH" \
|
|
98
|
+
--title "chore(catalog): refresh vendored model snapshot" \
|
|
99
|
+
--body "Automated refresh of \`$SNAPSHOT_PATH\` from the live catalog at \`$CATALOG_URL\` (normalized to the loader's shape). Opened by \`.github/workflows/catalog-snapshot.yml\`. Review the diff — this is the cold-start fallback the server serves when the live cost feed is unreachable." \
|
|
100
|
+
|| echo "PR already open for $BRANCH; pushed update."
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
name: CI — PR checks
|
|
2
|
+
|
|
3
|
+
# Gate on every PR to main (and on push to main) with the exact local test
|
|
4
|
+
# conventions: server (ruff + offline pytest) and TUI (bun test + tsc). Two
|
|
5
|
+
# independent jobs so a red on one surfaces without masking the other. No
|
|
6
|
+
# deploy, no secrets — the suites are offline (`-m "not live and not eval"`).
|
|
7
|
+
# mypy runs after ruff/pytest: src/minima is now type-clean, so it gates too.
|
|
8
|
+
on:
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [main]
|
|
11
|
+
push:
|
|
12
|
+
branches: [main]
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: ci-${{ github.ref }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
env:
|
|
22
|
+
BUN_VERSION: "1.3.14"
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
server:
|
|
26
|
+
name: Server — ruff + pytest + mypy
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v5
|
|
31
|
+
|
|
32
|
+
- name: Install uv
|
|
33
|
+
uses: astral-sh/setup-uv@v6
|
|
34
|
+
|
|
35
|
+
- name: Sync deps (dev extra)
|
|
36
|
+
run: uv sync --extra dev
|
|
37
|
+
|
|
38
|
+
- name: Ruff
|
|
39
|
+
run: uv run ruff check src client_sdk tests
|
|
40
|
+
|
|
41
|
+
- name: Pytest (offline)
|
|
42
|
+
run: uv run pytest -m "not live and not eval" -q
|
|
43
|
+
|
|
44
|
+
- name: Mypy
|
|
45
|
+
run: uv run mypy src/minima
|
|
46
|
+
|
|
47
|
+
tui:
|
|
48
|
+
name: TUI — bun test + tsc
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
defaults:
|
|
51
|
+
run:
|
|
52
|
+
working-directory: packages/tui
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@v5
|
|
56
|
+
|
|
57
|
+
- name: Set up Bun
|
|
58
|
+
uses: oven-sh/setup-bun@v2
|
|
59
|
+
with:
|
|
60
|
+
bun-version: ${{ env.BUN_VERSION }}
|
|
61
|
+
|
|
62
|
+
- name: Install deps
|
|
63
|
+
run: bun install --frozen-lockfile
|
|
64
|
+
|
|
65
|
+
- name: Test
|
|
66
|
+
run: bun test
|
|
67
|
+
|
|
68
|
+
- name: Typecheck
|
|
69
|
+
run: bun run check
|
|
@@ -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,97 @@ 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.1] - 2026-07-05
|
|
8
|
+
|
|
9
|
+
### Changed (API behavior — note for integrators)
|
|
10
|
+
- **`max_cost_per_call` is now a true hard filter.** When no model fits the budget,
|
|
11
|
+
`POST /v1/recommend` returns **422** (`"no model within max_cost_per_call budget"`)
|
|
12
|
+
instead of 200 with the cheapest over-budget model plus a `no_model_within_cost_budget`
|
|
13
|
+
warning. This matches the documented "hard filter" contract and the existing
|
|
14
|
+
no-candidates behavior. Callers who want "cheapest possible regardless of ceiling"
|
|
15
|
+
should use the cost-quality slider, not `max_cost_per_call`.
|
|
16
|
+
- **Auth rejects malformed bearer tokens.** A bearer token that is not in the Mubit key
|
|
17
|
+
format (`mbt_…`) now returns **401** before any work, instead of being accepted and
|
|
18
|
+
served from priors. A missing bearer with a server-configured `MUBIT_API_KEY` fallback
|
|
19
|
+
is unaffected.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **Cold-start catalog prices were stale.** The vendored fallback snapshot
|
|
23
|
+
(`capability_priors.json`) is refreshed from the live catalog (e.g. `claude-opus-4-8`
|
|
24
|
+
`15/75` → `5/25`), and a scheduled workflow now keeps it current so it stops drifting
|
|
25
|
+
by hand. (The auto-refresh updates prices for the curated model list; it does not add
|
|
26
|
+
new models — expanded provider coverage such as the gpt-5 family remains a separate
|
|
27
|
+
curation.)
|
|
28
|
+
- **Server version string can no longer drift.** `minima.__version__` (reported by
|
|
29
|
+
`/v1/health` and `/v1/capabilities`) now derives from installed package metadata instead
|
|
30
|
+
of a hardcoded constant that had silently lagged across releases.
|
|
31
|
+
- **Feedback reconciliation types the quality value honestly** as `float | None` — unjudged
|
|
32
|
+
rows keep `NULL`, no fabricated default (preserves the M-J2 fix).
|
|
33
|
+
|
|
34
|
+
### Internal
|
|
35
|
+
- **PR CI added** — every PR now runs server (`ruff` + `pytest` + `mypy`) and TUI
|
|
36
|
+
(`bun test` + `tsc`) checks; the recommender is mypy-clean.
|
|
37
|
+
|
|
38
|
+
## [0.7.0] - 2026-07-05
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
- **`GET /v1/capabilities`** — server feature handshake (api version, honored constraint
|
|
42
|
+
fields, feature flags) so clients can gate enforce-mode features on what the server
|
|
43
|
+
actually supports instead of guessing. (#54)
|
|
44
|
+
- **Sub-agent tree visualization** — a live `▸ step [status] $cost` panel (`/tree`) fed by
|
|
45
|
+
tagged child events during multi-agent runs. (#55)
|
|
46
|
+
- **Git worktree isolation for parallel sub-agents** — `isolation: "workdir"` delegations run
|
|
47
|
+
in a temporary `git worktree` (with a dirty-tree warning and automatic cleanup), so parallel
|
|
48
|
+
children editing the same files can't clobber each other. (#55)
|
|
49
|
+
- **Delegation ops-rules + BLOCKED convention** — sub-agents get explicit operational rules,
|
|
50
|
+
boundary refusals surface as `BLOCKED` → `partial` outcome so the parent can tell, and the
|
|
51
|
+
task tool carries anti-retry guidance (no more re-running an identical failed DAG). (#59)
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
- **Every Claude call timed out in the harness** — the Anthropic SDK was handed a timeout in
|
|
55
|
+
seconds where it expects milliseconds (a 30–60 ms budget), so every Claude stream/complete
|
|
56
|
+
call died with "Request timed out" and fed quality-0 failures into routing. (#56)
|
|
57
|
+
- **Quality-score fabrication in the feedback loop (M-J2)** — unjudged successes no longer
|
|
58
|
+
default to quality 0.9 in the server decision log; the harness now sends a `judged` flag and
|
|
59
|
+
unjudged rows reconcile with `quality = NULL`, so calibration and savings metrics stop
|
|
60
|
+
trusting values that were never measured. (#54)
|
|
61
|
+
- **Judge hardening** — empty-output guard (scores 0 without an API call), head+tail
|
|
62
|
+
truncation so tail requirements survive long outputs, `<response>` delimiters + scoped-trust
|
|
63
|
+
system prompt against response-embedded injection, and a `parseScore` fix for
|
|
64
|
+
"X out of 10" phrasing. (#57)
|
|
65
|
+
- **Gemini reasoner starvation** — advisory JSON calls (classify/rank) no longer burn their
|
|
66
|
+
entire token budget on thinking before emitting JSON; RANK_SYSTEM invariants hardened. (#58)
|
|
67
|
+
|
|
68
|
+
### Notes
|
|
69
|
+
- `minima-cli` on PyPI resumes at 0.7.0: the project version had lagged at 0.5.0, so the
|
|
70
|
+
0.6.0 release build was silently skipped by `--skip-existing` and 0.6.0 was never published.
|
|
71
|
+
|
|
72
|
+
## [0.6.0] - 2026-07-02
|
|
73
|
+
|
|
74
|
+
Agent-core release (milestones M-A…M-I): cost-aware sub-agent orchestration — `task` tool
|
|
75
|
+
with sequential and parallel DAG fan-out under a semaphore, per-child routing, budgets and
|
|
76
|
+
timeouts; DB-backed `BudgetLedger` with graduated enforcement; SQLite persistence spine
|
|
77
|
+
(runs/events/decisions + rehydration); recovery ladder walking server-supplied rungs on
|
|
78
|
+
failure; effort routing Phase A + fleet metrics; feedback-loop poisoning fixes; feature-vector
|
|
79
|
+
classifier with strongest-signal scoring. *(Never published to PyPI — see the 0.7.0 note.)*
|
|
80
|
+
|
|
81
|
+
## [0.5.2] - 2026-07-02
|
|
82
|
+
|
|
83
|
+
Fixed TUI viewport-overflow rendering corruption; docs rebrand (Manrope, "minima by Mubit"
|
|
84
|
+
nav logo, new favicon).
|
|
85
|
+
|
|
86
|
+
## [0.5.1] - 2026-07-01
|
|
87
|
+
|
|
88
|
+
Mubit memory in the TS harness (recall-before-route + outcome write-back with stable session
|
|
89
|
+
ids); benign routing diagnostics no longer render as errors; live model catalog; docs migrated
|
|
90
|
+
to Vocs with a Homebrew install guide.
|
|
91
|
+
|
|
92
|
+
## [0.5.0] - 2026-07-01
|
|
93
|
+
|
|
94
|
+
The TypeScript/Bun TUI becomes the shipped CLI: one-click `minima auth` (browser login,
|
|
95
|
+
per-repo project mapping, workspace provisioning), the Homebrew tap ships the compiled binary
|
|
96
|
+
instead of a Python venv formula, and a comprehensive routing/tool test suite lands.
|
|
97
|
+
|
|
7
98
|
## [0.4.10] - 2026-06-26
|
|
8
99
|
|
|
9
100
|
### Changed
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
.PHONY: install run test lint fmt live eval seed refresh-catalog
|
|
1
|
+
.PHONY: install run test lint fmt live eval seed refresh-catalog tui-install tui-test tui-check tui-build tui tui-dev
|
|
2
2
|
|
|
3
3
|
install:
|
|
4
|
-
uv sync --extra dev # dev pulls server +
|
|
4
|
+
uv sync --extra dev # dev pulls server + reasoner extras for the full test suite
|
|
5
5
|
|
|
6
6
|
run:
|
|
7
7
|
uv run --extra server uvicorn minima.main:app --reload --host $${MINIMA_HOST:-0.0.0.0} --port $${MINIMA_PORT:-8080}
|
|
@@ -26,20 +26,6 @@ eval:
|
|
|
26
26
|
seed:
|
|
27
27
|
uv run minima-seed --limit $${LIMIT:-2000} --lane $${LANE:-minima:default}
|
|
28
28
|
|
|
29
|
-
# --- minima_harness convenience targets (creds live in gitignored .env.harness) ---
|
|
30
|
-
|
|
31
|
-
harness-demo:
|
|
32
|
-
uv run python examples/harness_warmup.py
|
|
33
|
-
|
|
34
|
-
harness-live:
|
|
35
|
-
uv run --env-file .env.harness python examples/harness_warmup.py --live --rounds $${ROUNDS:-1}
|
|
36
|
-
|
|
37
|
-
harness-test:
|
|
38
|
-
uv run --env-file .env.harness pytest tests/harness -m live -v
|
|
39
|
-
|
|
40
|
-
harness:
|
|
41
|
-
uv run --extra harness --extra tui --env-file .env.harness minima-harness $(ARGS)
|
|
42
|
-
|
|
43
29
|
# --- TS TUI (packages/tui) — run from the repo root so .env.harness auto-loads --------
|
|
44
30
|
|
|
45
31
|
TUI := packages/tui
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: minima-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
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
|
-
##
|
|
186
|
+
## The `minima` CLI
|
|
197
187
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|
-
|
|
216
|
-
|
|
193
|
+
brew tap mubit-ai/minima
|
|
194
|
+
brew install minima
|
|
217
195
|
```
|
|
218
196
|
|
|
219
|
-
|
|
220
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
132
|
+
## The `minima` CLI
|
|
135
133
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
154
|
-
|
|
139
|
+
brew tap mubit-ai/minima
|
|
140
|
+
brew install minima
|
|
155
141
|
```
|
|
156
142
|
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
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)
|