forgeoptimizer 1.0.4__tar.gz → 1.0.6__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.
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/.github/workflows/ci.yml +4 -10
- forgeoptimizer-1.0.6/.github/workflows/test.yml +127 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/PKG-INFO +1 -1
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/pyproject.toml +1 -1
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/uv.lock +1 -1
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/.gitignore +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/CHANGELOG.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/CONTRIBUTING.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/CREDITS.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/Forge.toml +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/LICENSE +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/MIGRATION.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/README.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/RELEASE_NOTES.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/SECURITY.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/SUPPORT.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/docs/commands.md +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/budget/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/budget/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/budget/planner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/budget/window.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/apply.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/caveman_optimize.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/diff_extract.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/llm.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/optimize.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/patch_generator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/pipeline.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/retrieval.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/summarize.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/build/test_run.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/builder/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/builder/builder.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/builder/editor.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/builder/formatter.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/bootstrap.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_auth.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_commit.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_diagnostics.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_graph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_inspect.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/commands_wrappers.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/daemon.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/daemon_utils.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/main.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/cli/ui.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/config/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/config/loader.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/config/settings.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/config/writer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/conversation/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/conversation/manager.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/conversation/session.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/container.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/credentials.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/errors.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/events.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/logging.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/models.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/plugins.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/core/service.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/docs/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/docs/generator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/defaults.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/events.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/execution.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/plugins.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/runner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/caveman_optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/context_optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/execution_engine_stage.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/git_engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/intent_analyzer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/model_router.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/planning_engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/repository_analyzer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/validation_engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/git/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/git/repo.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/git/service.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/backend_forgegraph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/edge.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/forgegraph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/graph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/indexer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/node.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/graph/repository.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/cache.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/caching_middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/history.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/memory_compression.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/memory/store.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/base.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/builder.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/caveman_adapter.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/decorators.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/defaults.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/exceptions.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/executor.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/graphify_adapter.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/middleware_manager.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/pipeline.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/ponytail_adapter.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/registration.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/request.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/middleware/response.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/negotiator/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/negotiator/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/negotiator/negotiator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/observability/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/observability/health.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/observability/metrics.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/observability/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/observability/tracing.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/adaptive_budget.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ast_extractor.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/cache.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/cli.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/decorator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/factory.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/ruleset.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/caveman/state.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/chunker.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/comment_stripper.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/compression.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/cost_estimator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/embedding_cache.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/git_context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/intelligent_retrieval.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/orchestrator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/output/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/output/optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/cli.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/decorator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/factory.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/ruleset.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ponytail/state.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/prompt_optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/quality_validation.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/ranker.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/retrieval_cache.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/semantic_ranking.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/summarizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/optimizer/token_estimator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/orchestrator/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/agent.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/plan.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/planner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/render.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/serialize.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/planner/software.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/core.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/deps.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/paths.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/shell.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/platform/update.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/plugins/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/plugins/hook.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/policy/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/policy/engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/policy/exceptions.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/policy/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/policy/rules.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/prompts/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/prompts/loader.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/prompts/registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/prompts/renderer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/anthropic.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/base.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/builtin.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/conversation.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/exceptions.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/google.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/health.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/http_base.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/mock.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/openai.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/openai_compatible.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_capabilities.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_events.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_factory.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_manager.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_metadata.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/provider_router.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/router.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/providers/router_state.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/registry/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/registry/model_registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/resilience/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/resilience/circuit_breaker.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/resilience/exceptions.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/resilience/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/resilience/retry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/architecture.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/complexity.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/dead_code.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/duplicates.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/performance.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/analyzers/security.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/finding.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/report.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/repository.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/review/suggestions.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/agents.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/cache_store.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/mcp_config.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/pipeline_runner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/prepare.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/shared_extraction.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime/wrappers.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/config_manager.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/container.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/errors.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/events.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/factory.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/interfaces.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/lifecycle.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/provider_registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/request.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/response.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/runtime_core/service_registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/scheduler/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/scheduler/scheduler.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/scheduler/task.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/scheduler/worker.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/streaming/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/streaming/events.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/streaming/middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/templates/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/templates/engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/templates/registry.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/transport/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/transport/daemon.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/transport/http_server.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/transport/server.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/fs.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/ids.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/io.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/paths.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/utils/timing.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/packaging/scoop/forgecli.json +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/packaging/winget/forgecli.ForgeCli.yaml +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/__init__.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/conftest.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_auth.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_budget_context.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_build_pipeline.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_caching_observability.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_caveman_cli.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_caveman_ruleset.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_cli.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_commit.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_config.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_container.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_conversation_optimization.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_diagnostics.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_e2e.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_engine.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_forgegraph_client.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_graph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_mcp_config.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_memory.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_middleware.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_negotiator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_optimizer.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_orchestrator.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_output_optimization.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_planner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_planner_render.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_platform.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_policy.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_ponytail_cli.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_ponytail_ruleset.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_prompts.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_provider.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_providers.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_providers_http.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_redesign_optimizers.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_repository_graph.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_resilience.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_review.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_router.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_runtime.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_runtime_core.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_runtime_core_phase2.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_scheduler_plugins.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_software_planner.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_streaming.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_token_optimizations.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_transport.py +0 -0
- {forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/tests/test_utils.py +0 -0
|
@@ -3,11 +3,8 @@ env:
|
|
|
3
3
|
PYTHONUTF8: "1"
|
|
4
4
|
on:
|
|
5
5
|
push:
|
|
6
|
-
branches: [main]
|
|
7
6
|
tags:
|
|
8
7
|
- "v*"
|
|
9
|
-
pull_request:
|
|
10
|
-
branches: [main]
|
|
11
8
|
workflow_dispatch:
|
|
12
9
|
|
|
13
10
|
jobs:
|
|
@@ -128,10 +125,8 @@ jobs:
|
|
|
128
125
|
forge codex --help
|
|
129
126
|
forge cursor --help
|
|
130
127
|
|
|
131
|
-
|
|
132
128
|
publish-testpypi:
|
|
133
129
|
name: publish to TestPyPI (on tag or manual)
|
|
134
|
-
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
|
135
130
|
needs: [test, build, uv-install]
|
|
136
131
|
runs-on: ubuntu-latest
|
|
137
132
|
environment: testpypi
|
|
@@ -140,7 +135,8 @@ jobs:
|
|
|
140
135
|
contents: read
|
|
141
136
|
steps:
|
|
142
137
|
- uses: actions/checkout@v4
|
|
143
|
-
-
|
|
138
|
+
- name: Set up Python
|
|
139
|
+
uses: actions/setup-python@v5
|
|
144
140
|
with:
|
|
145
141
|
python-version: "3.12"
|
|
146
142
|
- name: Rename package to match TestPyPI Trusted Publisher
|
|
@@ -163,7 +159,6 @@ jobs:
|
|
|
163
159
|
|
|
164
160
|
publish-pypi:
|
|
165
161
|
name: publish to PyPI (on tag or manual)
|
|
166
|
-
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
|
167
162
|
needs: [test, build, uv-install]
|
|
168
163
|
runs-on: ubuntu-latest
|
|
169
164
|
environment: pypi
|
|
@@ -172,7 +167,8 @@ jobs:
|
|
|
172
167
|
contents: read
|
|
173
168
|
steps:
|
|
174
169
|
- uses: actions/checkout@v4
|
|
175
|
-
-
|
|
170
|
+
- name: Set up Python
|
|
171
|
+
uses: actions/setup-python@v5
|
|
176
172
|
with:
|
|
177
173
|
python-version: "3.12"
|
|
178
174
|
- name: Rename package to match PyPI Trusted Publisher
|
|
@@ -191,5 +187,3 @@ jobs:
|
|
|
191
187
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
192
188
|
with:
|
|
193
189
|
skip-existing: true
|
|
194
|
-
|
|
195
|
-
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
name: test
|
|
2
|
+
env:
|
|
3
|
+
PYTHONUTF8: "1"
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
name: test (${{ matrix.os }} / py${{ matrix.python-version }})
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
19
|
+
python-version: ["3.12"]
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
26
|
+
uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: ${{ matrix.python-version }}
|
|
29
|
+
cache: pip
|
|
30
|
+
|
|
31
|
+
- name: Install
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install --upgrade pip
|
|
34
|
+
python -m pip install -e ".[dev]"
|
|
35
|
+
|
|
36
|
+
- name: Smoke test CLI
|
|
37
|
+
run: |
|
|
38
|
+
forge --version
|
|
39
|
+
forge --help
|
|
40
|
+
forge graph --help
|
|
41
|
+
|
|
42
|
+
- name: Lint
|
|
43
|
+
run: python -m ruff check forgecli tests
|
|
44
|
+
|
|
45
|
+
- name: Tests
|
|
46
|
+
run: python -m pytest -q
|
|
47
|
+
|
|
48
|
+
- name: Cross-platform shell smoke
|
|
49
|
+
if: runner.os != 'Windows'
|
|
50
|
+
shell: bash
|
|
51
|
+
run: |
|
|
52
|
+
python -c "from forgecli.platform import run; r = run(['echo', 'cross-platform']); print('OK' if r.ok else 'FAIL')"
|
|
53
|
+
|
|
54
|
+
- name: Cross-platform shell smoke (Windows)
|
|
55
|
+
if: runner.os == 'Windows'
|
|
56
|
+
shell: pwsh
|
|
57
|
+
run: |
|
|
58
|
+
python -c "from forgecli.platform import run; r = run(['cmd.exe', '/c', 'echo cross-platform']); print('OK' if r.ok else 'FAIL')"
|
|
59
|
+
|
|
60
|
+
build:
|
|
61
|
+
name: build sdist + wheel
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/checkout@v4
|
|
65
|
+
- uses: actions/setup-python@v5
|
|
66
|
+
with:
|
|
67
|
+
python-version: "3.12"
|
|
68
|
+
- name: Install build
|
|
69
|
+
run: python -m pip install --upgrade build twine
|
|
70
|
+
- name: Build
|
|
71
|
+
run: python -m build
|
|
72
|
+
- name: Verify package metadata
|
|
73
|
+
run: |
|
|
74
|
+
twine check dist/*
|
|
75
|
+
python - <<'PY'
|
|
76
|
+
import zipfile
|
|
77
|
+
from pathlib import Path
|
|
78
|
+
wheel = next(Path("dist").glob("*.whl"))
|
|
79
|
+
with zipfile.ZipFile(wheel) as zf:
|
|
80
|
+
names = zf.namelist()
|
|
81
|
+
assert any(n.startswith("forgecli/") for n in names), "missing forgecli package"
|
|
82
|
+
print(f"OK: {wheel.name}")
|
|
83
|
+
PY
|
|
84
|
+
- name: Upload artifacts
|
|
85
|
+
uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: dist
|
|
88
|
+
path: dist/
|
|
89
|
+
|
|
90
|
+
uv-install:
|
|
91
|
+
name: uv tool install (${{ matrix.os }})
|
|
92
|
+
needs: build
|
|
93
|
+
runs-on: ${{ matrix.os }}
|
|
94
|
+
strategy:
|
|
95
|
+
fail-fast: false
|
|
96
|
+
matrix:
|
|
97
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
98
|
+
steps:
|
|
99
|
+
- name: Check out
|
|
100
|
+
uses: actions/checkout@v4
|
|
101
|
+
|
|
102
|
+
- name: Set up Python
|
|
103
|
+
uses: actions/setup-python@v5
|
|
104
|
+
with:
|
|
105
|
+
python-version: "3.12"
|
|
106
|
+
|
|
107
|
+
- name: Install uv
|
|
108
|
+
uses: astral-sh/setup-uv@v6
|
|
109
|
+
|
|
110
|
+
- uses: actions/download-artifact@v4
|
|
111
|
+
with:
|
|
112
|
+
name: dist
|
|
113
|
+
path: dist/
|
|
114
|
+
|
|
115
|
+
- name: Install forgectx via uv tool
|
|
116
|
+
shell: bash
|
|
117
|
+
run: |
|
|
118
|
+
uv tool install dist/*.whl
|
|
119
|
+
|
|
120
|
+
- name: Verify forge --help
|
|
121
|
+
run: forge --help
|
|
122
|
+
|
|
123
|
+
- name: Verify wrapper commands are registered
|
|
124
|
+
run: |
|
|
125
|
+
forge claude --help
|
|
126
|
+
forge codex --help
|
|
127
|
+
forge cursor --help
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: forgeoptimizer
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.6
|
|
4
4
|
Summary: Forge — AI optimization runtime for Claude Code, Codex, Cursor, Antigravity
|
|
5
5
|
Project-URL: Homepage, https://github.com/mdshzb04/Forge
|
|
6
6
|
Project-URL: Repository, https://github.com/mdshzb04/Forge
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{forgeoptimizer-1.0.4 → forgeoptimizer-1.0.6}/forgecli/engine/stages/execution_engine_stage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|