forgex-cli 0.1.6__tar.gz → 0.1.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/PKG-INFO +1 -1
  2. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/__init__.py +1 -1
  3. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/base.py +7 -1
  4. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/repl.py +3 -3
  5. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_builder_agent.py +5 -2
  6. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/.github/workflows/ci.yml +0 -0
  7. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/.github/workflows/release.yml +0 -0
  8. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/.gitignore +0 -0
  9. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/CHANGELOG.md +0 -0
  10. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/LICENSE +0 -0
  11. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/README.md +0 -0
  12. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/SECURITY.md +0 -0
  13. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/agents.md +0 -0
  14. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/architecture.md +0 -0
  15. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/configuration.md +0 -0
  16. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/decisions.md +0 -0
  17. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/providers.md +0 -0
  18. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/quickstart.md +0 -0
  19. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/sandbox.md +0 -0
  20. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/docs/security.md +0 -0
  21. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/examples/demo-project/README.md +0 -0
  22. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/examples/demo-project/pyproject.toml +0 -0
  23. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/examples/demo-project/src/demo/__init__.py +0 -0
  24. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/examples/demo-project/src/demo/calc.py +0 -0
  25. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/examples/demo-project/tests/test_calc.py +0 -0
  26. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/pyproject.toml +0 -0
  27. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/__main__.py +0 -0
  28. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/__init__.py +0 -0
  29. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/architect.py +0 -0
  30. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/builder.py +0 -0
  31. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/ensemble.py +0 -0
  32. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/expert_coder.py +0 -0
  33. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/agents/supervisor.py +0 -0
  34. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/__init__.py +0 -0
  35. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/app.py +0 -0
  36. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/build_views.py +0 -0
  37. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/__init__.py +0 -0
  38. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/build.py +0 -0
  39. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/checkpoint.py +0 -0
  40. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/config.py +0 -0
  41. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/context.py +0 -0
  42. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/diff.py +0 -0
  43. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/do_cmd.py +0 -0
  44. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/doctor.py +0 -0
  45. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/fix.py +0 -0
  46. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/init.py +0 -0
  47. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/logs.py +0 -0
  48. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/models.py +0 -0
  49. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/plan.py +0 -0
  50. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/review.py +0 -0
  51. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/rollback.py +0 -0
  52. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/run.py +0 -0
  53. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/status.py +0 -0
  54. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/supervise.py +0 -0
  55. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/task.py +0 -0
  56. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/tools.py +0 -0
  57. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/commands/verify.py +0 -0
  58. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/context_memory.py +0 -0
  59. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/intent.py +0 -0
  60. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/progress.py +0 -0
  61. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/runtime.py +0 -0
  62. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/session.py +0 -0
  63. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/cli/ui.py +0 -0
  64. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/config/__init__.py +0 -0
  65. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/config/loader.py +0 -0
  66. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/config/schema.py +0 -0
  67. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/__init__.py +0 -0
  68. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/chunker.py +0 -0
  69. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/dependency_graph.py +0 -0
  70. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/indexer.py +0 -0
  71. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/manager.py +0 -0
  72. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/context/retriever.py +0 -0
  73. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/__init__.py +0 -0
  74. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/base.py +0 -0
  75. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/capabilities.py +0 -0
  76. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/factory.py +0 -0
  77. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/groq.py +0 -0
  78. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/local.py +0 -0
  79. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/openai_compatible.py +0 -0
  80. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/registry.py +0 -0
  81. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/models/router.py +0 -0
  82. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/__init__.py +0 -0
  83. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/checkpoints.py +0 -0
  84. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/engine.py +0 -0
  85. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/events.py +0 -0
  86. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/lockfile.py +0 -0
  87. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/retry.py +0 -0
  88. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/state.py +0 -0
  89. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/stores.py +0 -0
  90. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/orchestration/workflow.py +0 -0
  91. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/project.py +0 -0
  92. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/__init__.py +0 -0
  93. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/architect.md +0 -0
  94. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/builder.md +0 -0
  95. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/expert_coder.md +0 -0
  96. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/reviewer.md +0 -0
  97. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/prompts/supervisor.md +0 -0
  98. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/research/__init__.py +0 -0
  99. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/research/citations.py +0 -0
  100. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/research/engine.py +0 -0
  101. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/research/sources.py +0 -0
  102. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/sandbox/__init__.py +0 -0
  103. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/sandbox/executor.py +0 -0
  104. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/sandbox/permissions.py +0 -0
  105. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/sandbox/policies.py +0 -0
  106. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/__init__.py +0 -0
  107. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/agent.py +0 -0
  108. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/checkpoint.py +0 -0
  109. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/error.py +0 -0
  110. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/event.py +0 -0
  111. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/plan.py +0 -0
  112. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/project.py +0 -0
  113. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/research.py +0 -0
  114. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/result.py +0 -0
  115. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/schemas/task.py +0 -0
  116. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/storage/__init__.py +0 -0
  117. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/storage/database.py +0 -0
  118. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/storage/migrations.py +0 -0
  119. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/storage/repositories.py +0 -0
  120. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/__init__.py +0 -0
  121. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/base.py +0 -0
  122. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/dependencies.py +0 -0
  123. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/filesystem.py +0 -0
  124. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/git.py +0 -0
  125. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/project.py +0 -0
  126. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/search.py +0 -0
  127. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/terminal.py +0 -0
  128. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/testing.py +0 -0
  129. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/tools/verification.py +0 -0
  130. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/utils/__init__.py +0 -0
  131. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/utils/logging.py +0 -0
  132. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/utils/paths.py +0 -0
  133. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/src/forgex/utils/redact.py +0 -0
  134. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/__init__.py +0 -0
  135. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/conftest.py +0 -0
  136. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/__init__.py +0 -0
  137. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_agents_architect.py +0 -0
  138. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_checkpoints.py +0 -0
  139. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli.py +0 -0
  140. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_build.py +0 -0
  141. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_checkpoint.py +0 -0
  142. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_do.py +0 -0
  143. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_models.py +0 -0
  144. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_plan.py +0 -0
  145. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_review.py +0 -0
  146. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_surface.py +0 -0
  147. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_task.py +0 -0
  148. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_tools.py +0 -0
  149. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_cli_verify.py +0 -0
  150. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_config.py +0 -0
  151. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_config_env.py +0 -0
  152. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_config_setup.py +0 -0
  153. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_context_agents.py +0 -0
  154. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_context_manager.py +0 -0
  155. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_context_memory.py +0 -0
  156. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_engine.py +0 -0
  157. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_ensemble.py +0 -0
  158. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_events.py +0 -0
  159. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_executor.py +0 -0
  160. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_expert_coder.py +0 -0
  161. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_fix.py +0 -0
  162. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_indexer.py +0 -0
  163. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_init.py +0 -0
  164. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_intent.py +0 -0
  165. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_large_repo.py +0 -0
  166. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_offline.py +0 -0
  167. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_packaging.py +0 -0
  168. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_paths.py +0 -0
  169. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_permissions.py +0 -0
  170. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_plan_schemas.py +0 -0
  171. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_policies.py +0 -0
  172. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_project.py +0 -0
  173. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_providers.py +0 -0
  174. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_recovery.py +0 -0
  175. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_redact.py +0 -0
  176. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_registry.py +0 -0
  177. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_repl.py +0 -0
  178. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_research.py +0 -0
  179. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_retriever.py +0 -0
  180. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_retry.py +0 -0
  181. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_router.py +0 -0
  182. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_run_cli.py +0 -0
  183. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_runtime.py +0 -0
  184. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_security.py +0 -0
  185. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_session.py +0 -0
  186. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_state.py +0 -0
  187. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_storage.py +0 -0
  188. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_stores.py +0 -0
  189. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_supervisor.py +0 -0
  190. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tasks.py +0 -0
  191. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tools_dependencies.py +0 -0
  192. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tools_filesystem.py +0 -0
  193. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tools_git.py +0 -0
  194. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tools_search.py +0 -0
  195. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_tools_terminal.py +0 -0
  196. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/tests/unit/test_verification.py +0 -0
  197. {forgex_cli-0.1.6 → forgex_cli-0.1.7}/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.6
3
+ Version: 0.1.7
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
@@ -1,3 +1,3 @@
1
1
  """FORGEX — Plan. Build. Refine. Verify."""
2
2
 
3
- __version__ = "0.1.6"
3
+ __version__ = "0.1.7"
@@ -373,7 +373,13 @@ class BaseAgent(ABC):
373
373
 
374
374
  action = str(normalized.get("action") or "").strip().lower()
375
375
  if action == "tool":
376
- tool_name = normalized.get("tool") or normalized.get("name")
376
+ raw_tool = normalized.get("tool") or normalized.get("name")
377
+ if not raw_tool or not isinstance(raw_tool, str):
378
+ protocol_errors += 1
379
+ messages.append(Message(role="assistant", content=raw))
380
+ messages.append(Message(role="user", content="Tool name missing or invalid. Use {\"action\": \"tool\", \"tool\": \"<name>\", \"arguments\": {...}}."))
381
+ continue
382
+ tool_name: str = raw_tool.strip()
377
383
  args = normalized.get("arguments") or normalized.get("args") or {}
378
384
  if not isinstance(args, dict):
379
385
  args = {}
@@ -9,7 +9,6 @@ import sys
9
9
  from pathlib import Path
10
10
  from typing import Any
11
11
 
12
- import typer
13
12
  from prompt_toolkit import PromptSession
14
13
  from prompt_toolkit.completion import WordCompleter
15
14
  from prompt_toolkit.formatted_text import HTML
@@ -169,11 +168,12 @@ class ForgexREPL:
169
168
  def _run_setup_wizard(self) -> None:
170
169
  """Run the setup wizard directly (not through CliRunner) so it can read real stdin."""
171
170
  import click
171
+ import typer
172
172
  from forgex.cli.commands.config import setup_command
173
173
 
174
174
  try:
175
- # Create a plain click Context — setup_command only needs ctx.obj for ui_from()
176
- ctx = click.Context(click.Command("setup"))
175
+ # Create a typer Context — setup_command only needs ctx.obj for ui_from()
176
+ ctx = typer.Context(click.Command("setup"))
177
177
  ctx.obj = {"verbose": False, "quiet": False, "json": False, "plain": False}
178
178
  setup_command(ctx)
179
179
  self.session.refresh()
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ from typing import Any, cast
4
5
 
5
6
  from forgex.agents.builder import BuilderAgent, execute_task
6
7
  from forgex.config import load_config
@@ -50,6 +51,7 @@ async def test_builder_executes_task_and_records_events(tmp_path):
50
51
  initialize_project(ws)
51
52
  with open_stores(ws) as stores:
52
53
  state = stores.state.load()
54
+ assert state is not None
53
55
  task = Task(id="TASK-001", description="create demo file", acceptance_criteria=["exists"])
54
56
  stores.save_tasks([task], project_id=state.project_id)
55
57
 
@@ -59,7 +61,7 @@ async def test_builder_executes_task_and_records_events(tmp_path):
59
61
  ])
60
62
  ctx = create_context(ws, load_config(ws), agent=AgentRole.BUILDER, events=stores.recorder)
61
63
  tools = ToolExecutor(build_tool_registry(), permission_set_for(AgentRole.BUILDER), ctx)
62
- builder = BuilderAgent(router=router, tools=tools, events=stores.recorder)
64
+ builder = BuilderAgent(router=cast(Any, router), tools=tools, events=stores.recorder)
63
65
 
64
66
  res = await execute_task(stores=stores, task=task, config=load_config(ws), builder=builder)
65
67
  assert res.status == "completed"
@@ -72,6 +74,7 @@ async def test_builder_json_protocol_mode(tmp_path):
72
74
  initialize_project(ws)
73
75
  with open_stores(ws) as stores:
74
76
  state = stores.state.load()
77
+ assert state is not None
75
78
  task = Task(id="TASK-001", description="create demo file", acceptance_criteria=["exists"])
76
79
  stores.save_tasks([task], project_id=state.project_id)
77
80
 
@@ -88,7 +91,7 @@ async def test_builder_json_protocol_mode(tmp_path):
88
91
  ], supports_tools=False)
89
92
  ctx = create_context(ws, load_config(ws), agent=AgentRole.BUILDER, events=stores.recorder)
90
93
  tools = ToolExecutor(build_tool_registry(), permission_set_for(AgentRole.BUILDER), ctx)
91
- builder = BuilderAgent(router=router, tools=tools, events=stores.recorder)
94
+ builder = BuilderAgent(router=cast(Any, router), tools=tools, events=stores.recorder)
92
95
 
93
96
  res = await execute_task(stores=stores, task=task, config=load_config(ws), builder=builder)
94
97
  assert res.status == "completed"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes