forgex-cli 0.1.0__tar.gz → 0.1.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.
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/PKG-INFO +1 -1
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/__init__.py +1 -1
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/repl.py +22 -1
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/.github/workflows/ci.yml +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/.github/workflows/release.yml +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/.gitignore +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/CHANGELOG.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/LICENSE +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/README.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/SECURITY.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/agents.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/architecture.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/configuration.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/decisions.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/providers.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/quickstart.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/sandbox.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/docs/security.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/examples/demo-project/README.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/examples/demo-project/pyproject.toml +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/examples/demo-project/src/demo/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/examples/demo-project/src/demo/calc.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/examples/demo-project/tests/test_calc.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/pyproject.toml +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/__main__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/architect.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/base.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/builder.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/ensemble.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/expert_coder.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/agents/supervisor.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/app.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/build_views.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/build.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/checkpoint.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/config.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/context.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/diff.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/do_cmd.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/doctor.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/fix.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/init.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/logs.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/models.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/plan.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/review.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/rollback.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/run.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/status.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/supervise.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/task.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/tools.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/commands/verify.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/context_memory.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/intent.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/progress.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/runtime.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/session.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/cli/ui.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/config/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/config/loader.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/config/schema.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/chunker.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/dependency_graph.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/indexer.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/manager.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/context/retriever.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/base.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/capabilities.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/factory.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/groq.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/local.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/openai_compatible.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/registry.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/models/router.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/checkpoints.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/engine.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/events.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/lockfile.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/retry.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/state.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/stores.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/orchestration/workflow.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/project.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/architect.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/builder.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/expert_coder.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/reviewer.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/prompts/supervisor.md +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/research/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/research/citations.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/research/engine.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/research/sources.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/sandbox/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/sandbox/executor.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/sandbox/permissions.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/sandbox/policies.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/agent.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/checkpoint.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/error.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/event.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/plan.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/project.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/research.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/result.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/schemas/task.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/storage/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/storage/database.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/storage/migrations.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/storage/repositories.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/base.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/dependencies.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/filesystem.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/git.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/project.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/search.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/terminal.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/testing.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/tools/verification.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/utils/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/utils/logging.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/utils/paths.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/src/forgex/utils/redact.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/conftest.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/__init__.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_agents_architect.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_builder_agent.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_checkpoints.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_build.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_checkpoint.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_do.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_models.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_plan.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_review.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_surface.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_task.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_tools.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_cli_verify.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_config.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_config_env.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_config_setup.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_context_agents.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_context_manager.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_context_memory.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_engine.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_ensemble.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_events.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_executor.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_expert_coder.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_fix.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_indexer.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_init.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_intent.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_large_repo.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_offline.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_packaging.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_paths.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_permissions.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_plan_schemas.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_policies.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_project.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_providers.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_recovery.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_redact.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_registry.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_repl.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_research.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_retriever.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_retry.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_router.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_run_cli.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_runtime.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_security.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_session.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_state.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_storage.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_stores.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_supervisor.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tasks.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tools_dependencies.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tools_filesystem.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tools_git.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tools_search.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_tools_terminal.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_verification.py +0 -0
- {forgex_cli-0.1.0 → forgex_cli-0.1.1}/tests/unit/test_workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: forgex-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: FORGEX — multi-agent AI software engineering. Plan. Build. Refine. Verify.
|
|
5
5
|
Project-URL: Homepage, https://github.com/B-max12/Forgex
|
|
6
6
|
Project-URL: Repository, https://github.com/B-max12/Forgex
|
|
@@ -9,6 +9,7 @@ import sys
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
|
+
import typer
|
|
12
13
|
from prompt_toolkit import PromptSession
|
|
13
14
|
from prompt_toolkit.completion import WordCompleter
|
|
14
15
|
from prompt_toolkit.formatted_text import HTML
|
|
@@ -163,7 +164,22 @@ class ForgexREPL:
|
|
|
163
164
|
if sys.stdin.isatty():
|
|
164
165
|
from rich.prompt import Confirm
|
|
165
166
|
if Confirm.ask("Launch the guided setup wizard now?", default=True):
|
|
166
|
-
self.
|
|
167
|
+
self._run_setup_wizard()
|
|
168
|
+
|
|
169
|
+
def _run_setup_wizard(self) -> None:
|
|
170
|
+
"""Run the setup wizard directly (not through CliRunner) so it can read real stdin."""
|
|
171
|
+
from forgex.cli.commands.config import setup_command
|
|
172
|
+
|
|
173
|
+
# Build a minimal typer.Context so ui_from() can work
|
|
174
|
+
try:
|
|
175
|
+
ctx = typer.Context(typer.main.get_command(typer.Typer()))
|
|
176
|
+
ctx.obj = {"verbose": False, "quiet": False, "json": False, "plain": False}
|
|
177
|
+
setup_command(ctx)
|
|
178
|
+
self.session.refresh()
|
|
179
|
+
except (KeyboardInterrupt, EOFError):
|
|
180
|
+
self.console.print("\n[yellow]Setup cancelled.[/yellow]")
|
|
181
|
+
except Exception as exc:
|
|
182
|
+
self.console.print(f"[red]Setup error:[/red] {exc}")
|
|
167
183
|
|
|
168
184
|
def print_help(self) -> None:
|
|
169
185
|
"""Display help table for natural language usage and power user commands."""
|
|
@@ -326,6 +342,11 @@ class ForgexREPL:
|
|
|
326
342
|
|
|
327
343
|
def _run_cli_command(self, args: list[str]) -> bool:
|
|
328
344
|
"""Invoke a Typer CLI command within the REPL session."""
|
|
345
|
+
# Interactive commands that need real stdin must bypass CliRunner
|
|
346
|
+
if args == ["config", "setup"]:
|
|
347
|
+
self._run_setup_wizard()
|
|
348
|
+
return True
|
|
349
|
+
|
|
329
350
|
from typer.testing import CliRunner
|
|
330
351
|
|
|
331
352
|
from forgex.cli.app import app
|
|
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
|
|
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
|
|
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
|