multi-forge 0.9.1__tar.gz → 0.9.2__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.
- {multi_forge-0.9.1 → multi_forge-0.9.2}/PKG-INFO +2 -2
- {multi_forge-0.9.1 → multi_forge-0.9.2}/pyproject.toml +5 -2
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/commands.py +3 -3
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_fork.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_lifecycle.py +3 -3
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/backends/litellm.yaml +12 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/anthropic-passthrough.yaml +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-anthropic-local.yaml +4 -3
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-anthropic.yaml +6 -5
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-gemini.yaml +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-anthropic.yaml +5 -4
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-gemini-flash.yaml +4 -4
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-gemini.yaml +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-kimi.yaml +6 -4
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-qwen.yaml +8 -5
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/data/model_catalog.yaml +182 -21
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/__init__.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/detection.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/models/direct_model.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/policy.py +1 -1
- multi_forge-0.9.2/src/forge/core/reactive/llm_call.py +40 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/proxy.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/session_runner.py +9 -2
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/tagger.py +8 -24
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/queries.py +2 -2
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/plan_check.py +25 -38
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/supervisor.py +10 -18
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/verdict.py +6 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/team/config.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/team/handlers.py +53 -23
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/config.py +3 -3
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/divergence.py +1 -1
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/stages.py +9 -23
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/intercept.py +3 -3
- multi_forge-0.9.2/src/forge/proxy/reasoning.py +168 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/server.py +10 -93
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/models.py +2 -2
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/transfer.py +11 -7
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/4-proxy.md +5 -5
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist.md +7 -5
- {multi_forge-0.9.1 → multi_forge-0.9.2}/.gitignore +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/LICENSE +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/NOTICE +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/README.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/agents/.gitkeep +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/commands/.gitkeep +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/adapters/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/adapters/litellm.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/creation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/remote/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/remote/base.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/remote/openrouter.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/backend/sources.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/activity.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/auth.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/backend.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/claude.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/codex.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/config_cmd.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/consumer_lane_freeze.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/editor.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/extensions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/gc.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/guards.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/_group.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/_helpers.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/codex_patch.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/codex_policy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/codex_transfer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/direct_commands.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/policy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/protocols.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/read_hygiene.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/hooks/verification.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/logs.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/main.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/memory.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/memory_report.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/memory_writer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/model.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/output.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/policy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/proxy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/proxy_audit.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/proxy_costs.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/runtime.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/search.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_codex.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_lane.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_manage.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_memory.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_model_pin.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_resume_modes.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_rewind.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_routing.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/session_supervisor_options.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/status_line.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/context.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/names.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/palette.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/statusline/throttle.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/telemetry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/trace.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/transfer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/cli/workflow.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/dataclass_utils.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/backends/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/codex-responses-local.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-gemini-flash-local.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-gemini-local.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-gemini-test.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-openai-codex-local.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-openai-local.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-openai.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-deepseek.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-glm.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-minimax.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-openai-codex.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-openai.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/loader.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/schema.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/capabilities.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/credentials_file.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/protocols.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/secrets.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/auth/template_secrets.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/backend_dependency.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/credential_registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/data/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/data/system_prompt_addendums/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/data/system_prompt_addendums/gemini.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/data/system_prompt_addendums/openai.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/effort.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/_lifecycle.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/claude.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/codex.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/codex_stream.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/invoker/types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/lanes.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/clients/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/clients/base.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/clients/litellm.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/clients/openai_compat.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/clients/openrouter.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/credentials.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/errors.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/protocols.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/llm/types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/logging.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/models/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/models/catalog.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/models/types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/naming.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/backend_reconcile.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/claude_session.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/codex_bridge.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/codex_enrollment.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/codex_interactive.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/codex_session.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/context.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/gc.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/provider_trace.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/proxy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/resolution.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/session.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/session_context.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/transfer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/ops/usage_summary.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/paths.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/process.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/provider_types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/cost_tracking.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/env.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/headless_json.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/routing.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/structured_output.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/reactive/throttle.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/run_id.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime/codex_preflight.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime/codex_preflight_cache.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime/codex_rollouts.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime/registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/runtime_vocab.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/exceptions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/io.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/lock.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/retention.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/timestamps.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/state/versioned_store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/caps.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/downstream.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/jsonl_io.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/upstream.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/telemetry/vocabulary.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/tiers.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/transcript.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/typing_helpers.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/billing.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/correlation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/emit.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/ledger.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/measurement.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/usage/vocabulary.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/workqueue/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/workqueue/queue.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/core/workqueue/types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/cli.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/codex_hooks.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/doctor.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/exceptions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/hook_dispatcher.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/hook_migration.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/hooks.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/installer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/models.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/preset.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/project_compat.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/project_registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/settings_merge.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/skill_cache.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/skill_compiler.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/skill_planning.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/skill_validation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/tracking.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/unmanaged.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/install/version.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/deterministic/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/deterministic/base.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/deterministic/coding_standards.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/deterministic/registry.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/deterministic/tdd.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/engine.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/protocols.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/shadow.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/semantic/shadow_runner.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/supervisor_lane_degrade.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/team/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/team/prompts.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/types.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/branches.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/policy/workflow/policy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/audit_logger.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/base_client.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/client_adapter.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/client_factory.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/converters.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/cost_logger.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/cost_tracker.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/data_models.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/error_hints.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/metrics.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/model_spec.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/passthrough.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/ports.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/provider_trace_logger.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/proxies.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/proxy_identity.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/proxy_orchestrator.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/proxy_startup.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/responses_ingress.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/responses_passthrough.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/stream_relay.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/proxy/utils.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/adversarial.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/consensus.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/engine.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/code_consensus_evaluation.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/code_debate_evaluation.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/codereview-performance.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/codereview-quick.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/codereview-security.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/codereview.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/consensus_evaluation.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/debate_evaluation.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/docreview-quick.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/docreview.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/resources/thinkdeep.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/routing.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/review/synthesis.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/runtime_config.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/bm25_store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/content_store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/engine.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/exceptions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/extractor.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/index_state.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/search/tokenizer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/active.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/addendum.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/artifacts.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/claude/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/claude/cleanup.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/claude/invoke.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/claude/paths.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/claude/relocate.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/cleanup.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/codex_handoff.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/codex_invoke.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/config.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/consumer_lanes.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/context_limit.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/effective.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/exceptions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/hooks/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/hooks/models.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/hooks/session_start.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/identity.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/index.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/launch.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/launch_confirmation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/manager.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/memory_inheritance.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/memory_writer.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/model_pin.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/models.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/overrides.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/passport.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/plan_resolution.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/prev_sessions.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/project_memory.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/rewind.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/shadow_curation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/store.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/validation.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/worktree/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/worktree/cleanup.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/worktree/config_copy.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/session/worktree/create.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/sidecar/__init__.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/sidecar/container.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/sidecar/docker.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/analyze/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/analyze/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/challenge/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/challenge/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/consensus/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/consensus/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/consensus/resources/synthesis.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/debate/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/debate/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/panel/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/panel/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/panel/resources/synthesis.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/SKILL.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/0-enable.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/1-preflight.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/10-resume.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/11-config.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/12-search.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/13-policy.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/14-workflow.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/15-skills.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/16-memory.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/17-info.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/18-disable.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/19-uninstall.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/2-extension.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/20-cleanup.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/3-authentication.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/5-session.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/6-hook.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/7-costs.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/8-status-line.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/checklist/9-direct-commands.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/resources/report-template.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/scripts/start-container.sh +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/qa/scripts/walkthrough-state.py +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/references/claude-4.6.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/references/claude-4.8.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/references/gemini-3.1.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/references/gpt-5.5.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/references/skills-writing-guide.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/resources/code-anthropic.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/resources/code-gemini.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/resources/code-openai.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review/resources/code.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/resources/docs-anthropic.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/resources/docs-gemini.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/resources/docs-openai.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/review-docs/resources/docs.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/smoke-test/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/smoke-test/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/smoke-test/scripts/smoke-test.sh +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/content.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/forge-skill.yaml +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/code-anthropic.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/code-gemini.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/code-openai.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/code.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/docs-anthropic.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/docs-gemini.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/docs-openai.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/understand/resources/docs.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/walkthrough/SKILL.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/walkthrough/resources/checklist.md +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/walkthrough/scripts/run-in-repo.sh +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/walkthrough/scripts/setup-test-repo.sh +0 -0
- {multi_forge-0.9.1 → multi_forge-0.9.2}/src/skills/walkthrough/scripts/walkthrough-state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: multi-forge
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.2
|
|
4
4
|
Summary: Multi-runtime agent toolkit: proxy routing, cost control, session management, policy enforcement, and workflow orchestration
|
|
5
5
|
Project-URL: Homepage, https://github.com/hapa1i/multi-forge
|
|
6
6
|
Project-URL: Repository, https://github.com/hapa1i/multi-forge
|
|
@@ -26,7 +26,7 @@ Requires-Dist: coolname<6,>=5.0.0
|
|
|
26
26
|
Requires-Dist: dacite>=1.8.0
|
|
27
27
|
Requires-Dist: fastapi>=0.115.14
|
|
28
28
|
Requires-Dist: httpx>=0.25.0
|
|
29
|
-
Requires-Dist: litellm[proxy]>=1.
|
|
29
|
+
Requires-Dist: litellm[proxy]>=1.88.0
|
|
30
30
|
Requires-Dist: openai>=1.0.0
|
|
31
31
|
Requires-Dist: packaging>=21.0
|
|
32
32
|
Requires-Dist: pydantic>=2.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "multi-forge"
|
|
3
|
-
version = "0.9.
|
|
3
|
+
version = "0.9.2"
|
|
4
4
|
description = "Multi-runtime agent toolkit: proxy routing, cost control, session management, policy enforcement, and workflow orchestration"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -44,7 +44,10 @@ dependencies = [
|
|
|
44
44
|
"fastapi>=0.115.14",
|
|
45
45
|
"uvicorn>=0.31.1",
|
|
46
46
|
"watchfiles>=0.20",
|
|
47
|
-
|
|
47
|
+
# Floor = the gate-proven version for gemini-3.6-flash (see
|
|
48
|
+
# tests/integration/proxy/test_proxy_local_litellm_e2e.py); packaged
|
|
49
|
+
# cost-map pricing for that model first ships in the v1.94 line.
|
|
50
|
+
"litellm[proxy]>=1.88.0",
|
|
48
51
|
]
|
|
49
52
|
|
|
50
53
|
[project.scripts]
|
|
@@ -1862,7 +1862,7 @@ def _team_supervisor_hook(log_label: str, handler: Callable[..., tuple[int, str]
|
|
|
1862
1862
|
cache_key,
|
|
1863
1863
|
lambda cache: handler(data, config, cache, backend_id=backend_id, on_dispatch=_freeze),
|
|
1864
1864
|
)
|
|
1865
|
-
if
|
|
1865
|
+
if feedback:
|
|
1866
1866
|
print(feedback, file=sys.stderr)
|
|
1867
1867
|
sys.exit(exit_code)
|
|
1868
1868
|
|
|
@@ -1871,7 +1871,7 @@ def _team_supervisor_hook(log_label: str, handler: Callable[..., tuple[int, str]
|
|
|
1871
1871
|
def teammate_idle() -> None:
|
|
1872
1872
|
"""Handle TeammateIdle hook from Claude Code.
|
|
1873
1873
|
|
|
1874
|
-
Exit 0: allow teammate to go idle.
|
|
1874
|
+
Exit 0: allow teammate to go idle (stderr may contain diagnostic feedback).
|
|
1875
1875
|
Exit 2: teammate continues working (stderr = feedback).
|
|
1876
1876
|
"""
|
|
1877
1877
|
from forge.policy.team.handlers import handle_teammate_idle
|
|
@@ -1883,7 +1883,7 @@ def teammate_idle() -> None:
|
|
|
1883
1883
|
def task_completed() -> None:
|
|
1884
1884
|
"""Handle TaskCompleted hook from Claude Code.
|
|
1885
1885
|
|
|
1886
|
-
Exit 0: task marked as completed.
|
|
1886
|
+
Exit 0: task marked as completed (stderr may contain diagnostic feedback).
|
|
1887
1887
|
Exit 2: task stays open (stderr = feedback to teammate).
|
|
1888
1888
|
"""
|
|
1889
1889
|
from forge.policy.team.handlers import handle_task_completed
|
|
@@ -159,7 +159,7 @@ def _render_claude_fork_result(result: ClaudeForkResult) -> int:
|
|
|
159
159
|
"direct_model",
|
|
160
160
|
type=str,
|
|
161
161
|
default=None,
|
|
162
|
-
help="Pin the Claude model for this fork and future resumes (for example: claude-opus-
|
|
162
|
+
help="Pin the Claude model for this fork and future resumes (for example: claude-opus-5 or claude-opus-4-8)",
|
|
163
163
|
)
|
|
164
164
|
@click.option("--incognito", "-i", is_flag=True, help="Auto-delete fork on exit")
|
|
165
165
|
@click.option("--worktree", "-w", is_flag=True, help="Create git worktree for fork isolation")
|
|
@@ -907,7 +907,7 @@ def launch_new_session(
|
|
|
907
907
|
"direct_model",
|
|
908
908
|
type=str,
|
|
909
909
|
default=None,
|
|
910
|
-
help="Pin the Claude model for direct sessions (for example: claude-opus-
|
|
910
|
+
help="Pin the Claude model for direct sessions (for example: claude-opus-5 or claude-sonnet-4-6)",
|
|
911
911
|
)
|
|
912
912
|
@click.option("--sidecar", is_flag=True, help="Run with bundled proxy in Docker container")
|
|
913
913
|
@click.option("--host-proxy", is_flag=True, help="Use host proxy (overrides config)")
|
|
@@ -1121,7 +1121,7 @@ def start(
|
|
|
1121
1121
|
"direct_model",
|
|
1122
1122
|
type=str,
|
|
1123
1123
|
default=None,
|
|
1124
|
-
help="Pin the Claude model for this and future resumes (for example: claude-opus-
|
|
1124
|
+
help="Pin the Claude model for this and future resumes (for example: claude-opus-5 or claude-opus-4-8)",
|
|
1125
1125
|
)
|
|
1126
1126
|
@click.option(
|
|
1127
1127
|
"--fresh",
|
|
@@ -1926,7 +1926,7 @@ def _resume_fresh(
|
|
|
1926
1926
|
"direct_model",
|
|
1927
1927
|
type=str,
|
|
1928
1928
|
default=None,
|
|
1929
|
-
help="Pin the Claude model for this incognito session (for example: claude-opus-
|
|
1929
|
+
help="Pin the Claude model for this incognito session (for example: claude-opus-5 or claude-opus-4-8)",
|
|
1930
1930
|
)
|
|
1931
1931
|
@click.option("--system-prompt", "-s", help="Append system prompt text")
|
|
1932
1932
|
@click.option(
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# - gemini/gemini-3.1-pro-preview (Gemini 3.1 Pro - latest with thinking)
|
|
7
7
|
# - gemini/gemini-3.1-pro-preview-customtools (optimized for custom tools + bash)
|
|
8
8
|
# - gemini/gemini-3-flash-preview (Gemini 3 Flash - fast, cheap)
|
|
9
|
+
# - gemini/gemini-3.6-flash (Gemini 3.6 Flash - efficiency release)
|
|
9
10
|
# - gemini/gemini-3.5-flash (Gemini 3.5 Flash - fast, cheap)
|
|
10
11
|
# - gemini/gemini-2.5-flash (fast, cheap)
|
|
11
12
|
# - gemini/gemini-2.5-pro (powerful)
|
|
@@ -40,6 +41,12 @@ model_list:
|
|
|
40
41
|
model: gemini/gemini-3-flash-preview
|
|
41
42
|
api_key: os.environ/GEMINI_API_KEY
|
|
42
43
|
|
|
44
|
+
# Gemini 3.6 Flash - efficiency release built on 3.5 Flash
|
|
45
|
+
- model_name: gemini/gemini-3.6-flash
|
|
46
|
+
litellm_params:
|
|
47
|
+
model: gemini/gemini-3.6-flash
|
|
48
|
+
api_key: os.environ/GEMINI_API_KEY
|
|
49
|
+
|
|
43
50
|
# Gemini 3.5 Flash - fast and cheap
|
|
44
51
|
- model_name: gemini/gemini-3.5-flash
|
|
45
52
|
litellm_params:
|
|
@@ -74,6 +81,11 @@ model_list:
|
|
|
74
81
|
model: gemini/gemini-3-flash-preview
|
|
75
82
|
api_key: os.environ/GEMINI_API_KEY
|
|
76
83
|
|
|
84
|
+
- model_name: gemini-3.6-flash
|
|
85
|
+
litellm_params:
|
|
86
|
+
model: gemini/gemini-3.6-flash
|
|
87
|
+
api_key: os.environ/GEMINI_API_KEY
|
|
88
|
+
|
|
77
89
|
- model_name: gemini-3.5-flash
|
|
78
90
|
litellm_params:
|
|
79
91
|
model: gemini/gemini-3.5-flash
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
#
|
|
7
7
|
# Backend (LiteLLM on port 4000) starts automatically.
|
|
8
8
|
#
|
|
9
|
-
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus
|
|
10
|
-
# an alternative (claude-fable-5, claude-opus-4-6, claude-sonnet-4-6).
|
|
9
|
+
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Use --model to select
|
|
10
|
+
# an alternative (claude-fable-5, claude-opus-4-8, claude-opus-4-6, claude-sonnet-4-6).
|
|
11
11
|
#
|
|
12
12
|
# Note: If you added ANTHROPIC_API_KEY after the backend started,
|
|
13
13
|
# restart with: forge model backend stop litellm-4000
|
|
@@ -22,10 +22,11 @@ proxy:
|
|
|
22
22
|
tiers:
|
|
23
23
|
haiku: anthropic/claude-haiku-4-5
|
|
24
24
|
sonnet: anthropic/claude-sonnet-5
|
|
25
|
-
opus: anthropic/claude-opus-
|
|
25
|
+
opus: anthropic/claude-opus-5
|
|
26
26
|
model_alternatives:
|
|
27
27
|
opus:
|
|
28
28
|
claude-fable-5: anthropic/claude-fable-5
|
|
29
|
+
claude-opus-4-8: anthropic/claude-opus-4-8
|
|
29
30
|
claude-opus-4-6: anthropic/claude-opus-4-6
|
|
30
31
|
sonnet:
|
|
31
32
|
claude-sonnet-4-6: anthropic/claude-sonnet-4-6
|
{multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/litellm-anthropic.yaml
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Template: litellm-anthropic
|
|
2
2
|
# Anthropic Claude via remote/shared LiteLLM
|
|
3
3
|
#
|
|
4
|
-
# Access to Claude Sonnet 5, Fable 5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
|
|
4
|
+
# Access to Claude Opus 5, Sonnet 5, Fable 5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
|
|
5
5
|
# Requires LITELLM_API_KEY and LITELLM_BASE_URL in .env (or environment).
|
|
6
|
-
# NOTE: the shared LiteLLM instance must serve anthropic/claude-opus-
|
|
6
|
+
# NOTE: the shared LiteLLM instance must serve anthropic/claude-opus-5 and anthropic/claude-sonnet-5.
|
|
7
7
|
#
|
|
8
|
-
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus
|
|
9
|
-
# an alternative (claude-fable-5, claude-opus-4-6, claude-sonnet-4-6).
|
|
8
|
+
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Use --model to select
|
|
9
|
+
# an alternative (claude-fable-5, claude-opus-4-8, claude-opus-4-6, claude-sonnet-4-6).
|
|
10
10
|
# prompt_caching: passthrough respects Anthropic's 4-breakpoint cache_control limit.
|
|
11
11
|
|
|
12
12
|
proxy:
|
|
@@ -19,10 +19,11 @@ proxy:
|
|
|
19
19
|
tiers:
|
|
20
20
|
haiku: anthropic/claude-haiku-4-5
|
|
21
21
|
sonnet: anthropic/claude-sonnet-5
|
|
22
|
-
opus: anthropic/claude-opus-
|
|
22
|
+
opus: anthropic/claude-opus-5
|
|
23
23
|
model_alternatives:
|
|
24
24
|
opus:
|
|
25
25
|
claude-fable-5: anthropic/claude-fable-5
|
|
26
|
+
claude-opus-4-8: anthropic/claude-opus-4-8
|
|
26
27
|
claude-opus-4-6: anthropic/claude-opus-4-6
|
|
27
28
|
sonnet:
|
|
28
29
|
claude-sonnet-4-6: anthropic/claude-sonnet-4-6
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Template: openrouter-anthropic
|
|
2
2
|
# Anthropic Claude models via OpenRouter (direct, no LiteLLM)
|
|
3
3
|
#
|
|
4
|
-
# Access to Claude Sonnet 5, Fable 5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
|
|
4
|
+
# Access to Claude Opus 5, Sonnet 5, Fable 5, Opus 4.8/4.6, Sonnet 4.6, and Haiku 4.5.
|
|
5
5
|
# Requires OPENROUTER_API_KEY in .env (or environment).
|
|
6
6
|
#
|
|
7
|
-
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus
|
|
8
|
-
# an alternative (claude-fable-5, claude-opus-4-6, claude-sonnet-4-6).
|
|
7
|
+
# Defaults: sonnet tier -> Sonnet 5, opus tier -> Opus 5. Use --model to select
|
|
8
|
+
# an alternative (claude-fable-5, claude-opus-4-8, claude-opus-4-6, claude-sonnet-4-6).
|
|
9
9
|
|
|
10
10
|
proxy:
|
|
11
11
|
family: anthropic
|
|
@@ -17,10 +17,11 @@ proxy:
|
|
|
17
17
|
tiers:
|
|
18
18
|
haiku: anthropic/claude-haiku-4.5
|
|
19
19
|
sonnet: anthropic/claude-sonnet-5
|
|
20
|
-
opus: anthropic/claude-opus-
|
|
20
|
+
opus: anthropic/claude-opus-5
|
|
21
21
|
model_alternatives:
|
|
22
22
|
opus:
|
|
23
23
|
claude-fable-5: anthropic/claude-fable-5
|
|
24
|
+
claude-opus-4-8: anthropic/claude-opus-4.8
|
|
24
25
|
claude-opus-4-6: anthropic/claude-opus-4.6
|
|
25
26
|
sonnet:
|
|
26
27
|
claude-sonnet-4-6: anthropic/claude-sonnet-4.6
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Template: openrouter-gemini-flash
|
|
2
|
-
# Gemini 3.
|
|
2
|
+
# Gemini 3.6 Flash via OpenRouter (cheap, all tiers use Flash)
|
|
3
3
|
#
|
|
4
4
|
# Requires OPENROUTER_API_KEY in .env (or environment).
|
|
5
5
|
#
|
|
@@ -13,9 +13,9 @@ proxy:
|
|
|
13
13
|
|
|
14
14
|
openrouter:
|
|
15
15
|
tiers:
|
|
16
|
-
haiku: google/gemini-3.
|
|
17
|
-
sonnet: google/gemini-3.
|
|
18
|
-
opus: google/gemini-3.
|
|
16
|
+
haiku: google/gemini-3.6-flash
|
|
17
|
+
sonnet: google/gemini-3.6-flash
|
|
18
|
+
opus: google/gemini-3.6-flash
|
|
19
19
|
tier_overrides:
|
|
20
20
|
haiku:
|
|
21
21
|
reasoning_effort: low
|
{multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-kimi.yaml
RENAMED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
# Kimi models via OpenRouter (direct, no LiteLLM)
|
|
3
3
|
#
|
|
4
4
|
# Haiku uses Gemma 4 31B as a shared low-cost multimodal tier. Sonnet/opus use
|
|
5
|
-
# Kimi
|
|
6
|
-
# sonnet/opus
|
|
5
|
+
# Kimi K3 as the higher-capability Kimi tier. K2.6 and K2.5 are available as
|
|
6
|
+
# sonnet/opus model_alternatives for explicit proxy requests.
|
|
7
7
|
# Requires OPENROUTER_API_KEY in .env (or environment).
|
|
8
8
|
|
|
9
9
|
proxy:
|
|
@@ -15,12 +15,14 @@ proxy:
|
|
|
15
15
|
openrouter:
|
|
16
16
|
tiers:
|
|
17
17
|
haiku: google/gemma-4-31b-it
|
|
18
|
-
sonnet: moonshotai/kimi-
|
|
19
|
-
opus: moonshotai/kimi-
|
|
18
|
+
sonnet: moonshotai/kimi-k3
|
|
19
|
+
opus: moonshotai/kimi-k3
|
|
20
20
|
model_alternatives:
|
|
21
21
|
sonnet:
|
|
22
|
+
kimi-k2.6: moonshotai/kimi-k2.6
|
|
22
23
|
kimi-k2.5: moonshotai/kimi-k2.5
|
|
23
24
|
opus:
|
|
25
|
+
kimi-k2.6: moonshotai/kimi-k2.6
|
|
24
26
|
kimi-k2.5: moonshotai/kimi-k2.5
|
|
25
27
|
tier_overrides:
|
|
26
28
|
sonnet:
|
{multi_forge-0.9.1 → multi_forge-0.9.2}/src/forge/config/defaults/templates/openrouter-qwen.yaml
RENAMED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# Template: openrouter-qwen
|
|
2
2
|
# Qwen models via OpenRouter (direct, no LiteLLM)
|
|
3
3
|
#
|
|
4
|
-
# Haiku uses Qwen3.6 Flash for fast multimodal work. Sonnet uses Qwen3.
|
|
5
|
-
# Opus uses Qwen3.
|
|
6
|
-
# qwen3-coder
|
|
4
|
+
# Haiku uses Qwen3.6 Flash for fast multimodal work. Sonnet uses Qwen3.7 Plus.
|
|
5
|
+
# Opus uses Qwen3.7 Max (GA flagship) for the strongest current Qwen tier.
|
|
6
|
+
# The Qwen3.6 predecessors and qwen3-coder are available as
|
|
7
|
+
# model_alternatives for explicit proxy requests.
|
|
7
8
|
# Requires OPENROUTER_API_KEY in .env (or environment).
|
|
8
9
|
|
|
9
10
|
proxy:
|
|
@@ -15,11 +16,13 @@ proxy:
|
|
|
15
16
|
openrouter:
|
|
16
17
|
tiers:
|
|
17
18
|
haiku: qwen/qwen3.6-flash
|
|
18
|
-
sonnet: qwen/qwen3.
|
|
19
|
-
opus: qwen/qwen3.
|
|
19
|
+
sonnet: qwen/qwen3.7-plus
|
|
20
|
+
opus: qwen/qwen3.7-max
|
|
20
21
|
model_alternatives:
|
|
21
22
|
sonnet:
|
|
23
|
+
qwen3.6-plus: qwen/qwen3.6-plus
|
|
22
24
|
qwen3-coder: qwen/qwen3-coder
|
|
23
25
|
opus:
|
|
26
|
+
qwen3.6-max-preview: qwen/qwen3.6-max-preview
|
|
24
27
|
qwen3-coder: qwen/qwen3-coder
|
|
25
28
|
error_hints: true
|