rlm-code 0.1.2__tar.gz → 0.1.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.
Files changed (300) hide show
  1. {rlm_code-0.1.2 → rlm_code-0.1.6}/CHANGELOG.md +3 -3
  2. {rlm_code-0.1.2 → rlm_code-0.1.6}/PKG-INFO +2 -2
  3. {rlm_code-0.1.2 → rlm_code-0.1.6}/README.md +1 -1
  4. {rlm_code-0.1.2 → rlm_code-0.1.6}/pyproject.toml +1 -1
  5. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/__init__.py +1 -1
  6. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/slash_commands.py +1 -3
  7. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/harness/registry.py +8 -7
  8. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/harness/runner.py +3 -1
  9. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/__init__.py +1 -1
  10. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/benchmark_manager.py +11 -13
  11. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_harness_runner.py +3 -1
  12. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_provider_registry.py +6 -1
  13. {rlm_code-0.1.2 → rlm_code-0.1.6}/.gitignore +0 -0
  14. {rlm_code-0.1.2 → rlm_code-0.1.6}/LICENSE +0 -0
  15. {rlm_code-0.1.2 → rlm_code-0.1.6}/NOTICE +0 -0
  16. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/__init__.py +0 -0
  17. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/agent.py +0 -0
  18. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/agents/__init__.py +0 -0
  19. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/agents/rlm_agent.py +0 -0
  20. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/callbacks/__init__.py +0 -0
  21. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/callbacks/code_execution.py +0 -0
  22. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/cli.py +0 -0
  23. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/code_executor.py +0 -0
  24. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/events.py +0 -0
  25. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/__init__.py +0 -0
  26. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/base.py +0 -0
  27. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/lazy.py +0 -0
  28. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/loader.py +0 -0
  29. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/parsers/__init__.py +0 -0
  30. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/parsers/base.py +0 -0
  31. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/parsers/pdf.py +0 -0
  32. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/parsers/text.py +0 -0
  33. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/sources/__init__.py +0 -0
  34. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/sources/base.py +0 -0
  35. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/sources/gcs.py +0 -0
  36. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/files/sources/local.py +0 -0
  37. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/llm.py +0 -0
  38. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/logging/__init__.py +0 -0
  39. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/logging/rlm_logger.py +0 -0
  40. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/logging/verbose.py +0 -0
  41. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/main.py +0 -0
  42. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/prompts.py +0 -0
  43. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/repl/__init__.py +0 -0
  44. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/repl/local_repl.py +0 -0
  45. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/repl/safe_builtins.py +0 -0
  46. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/templates/index.html +0 -0
  47. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/tools/__init__.py +0 -0
  48. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/types.py +0 -0
  49. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/usage.py +0 -0
  50. {rlm_code-0.1.2 → rlm_code-0.1.6}/adk_rlm/web.py +0 -0
  51. {rlm_code-0.1.2 → rlm_code-0.1.6}/eval/packs/README.md +0 -0
  52. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/__main__.py +0 -0
  53. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/__init__.py +0 -0
  54. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/config_command.py +0 -0
  55. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/create_command.py +0 -0
  56. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/demo_command.py +0 -0
  57. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/export_command.py +0 -0
  58. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/init_command.py +0 -0
  59. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/interactive_command.py +0 -0
  60. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/mcp_command.py +0 -0
  61. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/models_command.py +0 -0
  62. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/nl_command_router.py +0 -0
  63. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/optimize_command.py +0 -0
  64. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/commands/run_command.py +0 -0
  65. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/__init__.py +0 -0
  66. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/config.py +0 -0
  67. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/debug_logger.py +0 -0
  68. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/directory_utils.py +0 -0
  69. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/exceptions.py +0 -0
  70. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/logging.py +0 -0
  71. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/venv_utils.py +0 -0
  72. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/core/version_checker.py +0 -0
  73. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/examples/__init__.py +0 -0
  74. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/examples/phase2_demo.py +0 -0
  75. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/examples/phase3_demo.py +0 -0
  76. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/examples/phase4_demo.py +0 -0
  77. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/examples/pure_rlm_demo.py +0 -0
  78. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/execution/__init__.py +0 -0
  79. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/execution/engine.py +0 -0
  80. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/execution/sandbox.py +0 -0
  81. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/export/__init__.py +0 -0
  82. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/export/handler.py +0 -0
  83. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/export/package_builder.py +0 -0
  84. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/generators/evaluation_generator.py +0 -0
  85. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/generators/gepa_generator.py +0 -0
  86. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/harness/__init__.py +0 -0
  87. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/main.py +0 -0
  88. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/client_manager.py +0 -0
  89. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/config.py +0 -0
  90. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/exceptions.py +0 -0
  91. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/retry.py +0 -0
  92. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/server/__init__.py +0 -0
  93. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/server/rlm_server.py +0 -0
  94. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/server/tools.py +0 -0
  95. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/session_wrapper.py +0 -0
  96. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/transports/__init__.py +0 -0
  97. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/transports/factory.py +0 -0
  98. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/transports/sse_transport.py +0 -0
  99. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/transports/stdio_transport.py +0 -0
  100. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/transports/websocket_transport.py +0 -0
  101. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/mcp/utils.py +0 -0
  102. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/__init__.py +0 -0
  103. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/cache.py +0 -0
  104. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/code_generator.py +0 -0
  105. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/dspy_reference_loader.py +0 -0
  106. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/llm_connector.py +0 -0
  107. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/model_manager.py +0 -0
  108. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/providers/__init__.py +0 -0
  109. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/providers/acp_discovery.py +0 -0
  110. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/providers/local_discovery.py +0 -0
  111. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/providers/model_catalog.py +0 -0
  112. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/providers/registry.py +0 -0
  113. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/streaming.py +0 -0
  114. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/models/task_collector.py +0 -0
  115. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/optimization/__init__.py +0 -0
  116. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/optimization/data_collector.py +0 -0
  117. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/optimization/executor.py +0 -0
  118. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/optimization/workflow_manager.py +0 -0
  119. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/project/__init__.py +0 -0
  120. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/project/context_manager.py +0 -0
  121. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/project/dspy_md_generator.py +0 -0
  122. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/project/initializer.py +0 -0
  123. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/project/scanner.py +0 -0
  124. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/py.typed +0 -0
  125. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/__init__.py +0 -0
  126. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/action_planner.py +0 -0
  127. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/approval/__init__.py +0 -0
  128. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/approval/audit.py +0 -0
  129. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/approval/gate.py +0 -0
  130. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/approval/handlers.py +0 -0
  131. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/approval/policy.py +0 -0
  132. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/benchmarks.py +0 -0
  133. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/chat_session.py +0 -0
  134. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/code_interpreter.py +0 -0
  135. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/comparison.py +0 -0
  136. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/config_schema.py +0 -0
  137. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/context_store.py +0 -0
  138. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/delegation.py +0 -0
  139. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/docker_interpreter.py +0 -0
  140. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/environments.py +0 -0
  141. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/events.py +0 -0
  142. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/__init__.py +0 -0
  143. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/adk_rlm_adapter.py +0 -0
  144. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/base.py +0 -0
  145. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/deepagents_adapter.py +0 -0
  146. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/dspy_rlm_adapter.py +0 -0
  147. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/google_adk_adapter.py +0 -0
  148. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/pydantic_ai_adapter.py +0 -0
  149. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/frameworks/registry.py +0 -0
  150. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/leaderboard.py +0 -0
  151. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/memory_compaction.py +0 -0
  152. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/mock_interpreter.py +0 -0
  153. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/monty_interpreter.py +0 -0
  154. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/observability.py +0 -0
  155. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/observability_sinks.py +0 -0
  156. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/__init__.py +0 -0
  157. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/action_policies.py +0 -0
  158. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/base.py +0 -0
  159. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/compaction_policies.py +0 -0
  160. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/registry.py +0 -0
  161. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/reward_policies.py +0 -0
  162. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/policies/termination_policies.py +0 -0
  163. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/pure_rlm_environment.py +0 -0
  164. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/repl_types.py +0 -0
  165. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/research_tui/__init__.py +0 -0
  166. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/research_tui/theme.py +0 -0
  167. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/research_tui/widgets/__init__.py +0 -0
  168. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/research_tui/widgets/animated.py +0 -0
  169. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/research_tui/widgets/panels.py +0 -0
  170. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/runner.py +0 -0
  171. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/session_replay.py +0 -0
  172. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/task_signature.py +0 -0
  173. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/termination.py +0 -0
  174. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/trajectory.py +0 -0
  175. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/rlm/visualizer.py +0 -0
  176. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/__init__.py +0 -0
  177. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/__init__.py +0 -0
  178. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/apple_container_runtime.py +0 -0
  179. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/base.py +0 -0
  180. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/cloud/__init__.py +0 -0
  181. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/cloud/daytona_runtime.py +0 -0
  182. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/cloud/e2b_runtime.py +0 -0
  183. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/cloud/modal_runtime.py +0 -0
  184. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/command_runtime.py +0 -0
  185. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/docker_runtime.py +0 -0
  186. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/local_runtime.py +0 -0
  187. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/monty_runtime.py +0 -0
  188. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/runtimes/registry.py +0 -0
  189. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/sandbox/superbox.py +0 -0
  190. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/session/__init__.py +0 -0
  191. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/session/state_manager.py +0 -0
  192. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/.env.example +0 -0
  193. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/adapters.py +0 -0
  194. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/async_streaming.py +0 -0
  195. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/complete_programs.py +0 -0
  196. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/dspy_config_example.yaml +0 -0
  197. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/evaluation.py +0 -0
  198. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/industry_templates.py +0 -0
  199. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/optimizers.py +0 -0
  200. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/retrievers.py +0 -0
  201. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/templates/rlm_benchmarks_example.yaml +0 -0
  202. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/tests/__init__.py +0 -0
  203. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/tests/rlm/__init__.py +0 -0
  204. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/tests/rlm/test_phase2.py +0 -0
  205. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/tests/rlm/test_pure_rlm.py +0 -0
  206. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/__init__.py +0 -0
  207. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/agent_collab_view.py +0 -0
  208. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/animations.py +0 -0
  209. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/conversation.py +0 -0
  210. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/design_system.py +0 -0
  211. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/diff_viewer.py +0 -0
  212. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/notifications.py +0 -0
  213. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/persistent_shell.py +0 -0
  214. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/prompt_widget.py +0 -0
  215. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/prompts.py +0 -0
  216. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/pty_terminal.py +0 -0
  217. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/resizable_divider.py +0 -0
  218. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/thinking_display.py +0 -0
  219. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/tui_app.py +0 -0
  220. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/tui_utils.py +0 -0
  221. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/ui/welcome.py +0 -0
  222. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/__init__.py +0 -0
  223. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/anti_patterns.py +0 -0
  224. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/auto_fixer.py +0 -0
  225. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/best_practices.py +0 -0
  226. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/code_validator.py +0 -0
  227. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/config_validator.py +0 -0
  228. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/exceptions.py +0 -0
  229. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/input_validator.py +0 -0
  230. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/learning_integration.py +0 -0
  231. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/models.py +0 -0
  232. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/module_validator.py +0 -0
  233. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/predictor_validator.py +0 -0
  234. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/quality_scorer.py +0 -0
  235. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/report_generator.py +0 -0
  236. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/security.py +0 -0
  237. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/security_validator.py +0 -0
  238. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/signature_validator.py +0 -0
  239. {rlm_code-0.1.2 → rlm_code-0.1.6}/rlm_code/validation/validator.py +0 -0
  240. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/__init__.py +0 -0
  241. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/conftest.py +0 -0
  242. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/fixtures/rlm_ci_baseline_generic_smoke.json +0 -0
  243. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_adk_rlm_adapter.py +0 -0
  244. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_code_interpreter.py +0 -0
  245. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_deepagents_adapter.py +0 -0
  246. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_dspy_rlm_adapter.py +0 -0
  247. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_extract_fallback.py +0 -0
  248. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_framework_registry_coverage.py +0 -0
  249. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_google_adk_adapter.py +0 -0
  250. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_leaderboard.py +0 -0
  251. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_mock_interpreter.py +0 -0
  252. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_monty_interpreter.py +0 -0
  253. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_observability_sinks.py +0 -0
  254. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_p0_features.py +0 -0
  255. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_phase3.py +0 -0
  256. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_phase4.py +0 -0
  257. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_pure_rlm_runtime_modes.py +0 -0
  258. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_pydantic_ai_adapter.py +0 -0
  259. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_repl_history.py +0 -0
  260. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_security_hardening.py +0 -0
  261. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_session_replay.py +0 -0
  262. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_submit.py +0 -0
  263. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_task_signature.py +0 -0
  264. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/rlm/test_user_tools.py +0 -0
  265. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_anti_patterns.py +0 -0
  266. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_auto_fixer.py +0 -0
  267. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_cache.py +0 -0
  268. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_execution_engine.py +0 -0
  269. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_export_import.py +0 -0
  270. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_harness_registry.py +0 -0
  271. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_init_command.py +0 -0
  272. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_integration.py +0 -0
  273. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_learning_integration.py +0 -0
  274. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_mcp_utils.py +0 -0
  275. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_module_validator.py +0 -0
  276. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_optimization_workflow.py +0 -0
  277. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_persistent_shell.py +0 -0
  278. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_predictor_validator.py +0 -0
  279. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_project_scanner.py +0 -0
  280. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_prompt_widget.py +0 -0
  281. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_property_validators.py +0 -0
  282. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_provider_discovery.py +0 -0
  283. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_quality_scorer.py +0 -0
  284. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_report_generator.py +0 -0
  285. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_retry.py +0 -0
  286. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_rlm_config.py +0 -0
  287. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_rlm_dspy_environment.py +0 -0
  288. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_rlm_observability.py +0 -0
  289. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_rlm_runner.py +0 -0
  290. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_sandbox_runtimes.py +0 -0
  291. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_security_validator.py +0 -0
  292. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_session_management.py +0 -0
  293. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_signature_validator.py +0 -0
  294. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_slash_harness_command.py +0 -0
  295. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_slash_rlm_command.py +0 -0
  296. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_slash_sandbox_command.py +0 -0
  297. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_streaming.py +0 -0
  298. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_superbox.py +0 -0
  299. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_tui_utils.py +0 -0
  300. {rlm_code-0.1.2 → rlm_code-0.1.6}/tests/test_validation.py +0 -0
@@ -5,7 +5,7 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [0.1.2] - 2026-02-20
8
+ ## [0.1.6] - 2026-02-20
9
9
 
10
10
  ### Added
11
11
  - Harness strategy selector with `tool_call` (default) and opt-in `codemode`.
@@ -29,7 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
29
29
  - Added explicit CodeMode guardrail policy documentation with blocked API classes and runtime limit defaults.
30
30
  - Codemode path remains opt-in; default harness behavior remains strict baseline `strategy=tool_call`.
31
31
 
32
- ## [0.1.1] - 2026-02-15
32
+ ## [0.1.5] - 2026-02-15
33
33
 
34
34
  Initial public release of **RLM Code**.
35
35
 
@@ -55,4 +55,4 @@ Initial public release of **RLM Code**.
55
55
  - Unsafe local `exec` usage preserved only as an explicit, opt-in path for advanced development scenarios.
56
56
 
57
57
  [0.1.5]: https://github.com/SuperagenticAI/rlm-code/releases/tag/v0.1.5
58
- [0.1.2]: https://github.com/SuperagenticAI/rlm-code/releases/tag/v0.1.2
58
+ [0.1.6]: https://github.com/SuperagenticAI/rlm-code/releases/tag/v0.1.6
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rlm-code
3
- Version: 0.1.2
3
+ Version: 0.1.6
4
4
  Summary: RLM Code: Research Playground & Evaluation OS for Recursive Language Model Agentic Systems
5
5
  Project-URL: Homepage, https://github.com/SuperagenticAI/rlm-code
6
6
  Project-URL: Documentation, https://superagenticai.github.io/rlm-code/
@@ -118,7 +118,7 @@ RLM Code implements the [Recursive Language Models](https://arxiv.org/abs/2502.0
118
118
 
119
119
  RLM Code wraps this algorithm in an interactive terminal UI with built-in benchmarks, trajectory replay, and observability.
120
120
 
121
- ## Release v0.1.2
121
+ ## Release v0.1.6
122
122
 
123
123
  This release adds the new CodeMode path as an opt-in harness strategy.
124
124
 
@@ -25,7 +25,7 @@ RLM Code implements the [Recursive Language Models](https://arxiv.org/abs/2502.0
25
25
 
26
26
  RLM Code wraps this algorithm in an interactive terminal UI with built-in benchmarks, trajectory replay, and observability.
27
27
 
28
- ## Release v0.1.2
28
+ ## Release v0.1.6
29
29
 
30
30
  This release adds the new CodeMode path as an opt-in harness strategy.
31
31
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "rlm-code"
7
- version = "0.1.2"
7
+ version = "0.1.6"
8
8
  description = "RLM Code: Research Playground & Evaluation OS for Recursive Language Model Agentic Systems"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -5,5 +5,5 @@ This package provides tools for creating, managing, and optimizing DSPy componen
5
5
  through natural language interactions.
6
6
  """
7
7
 
8
- __version__ = "0.1.2"
8
+ __version__ = "0.1.6"
9
9
  __author__ = "Super Agentic AI"
@@ -1600,9 +1600,7 @@ class SlashCommandHandler:
1600
1600
  show_warning_message("strategy=codemode requires mcp=on. Enabling MCP.")
1601
1601
  include_mcp = True
1602
1602
  if strategy == "codemode" and allowlist:
1603
- show_warning_message(
1604
- "tools=... allowlist is ignored for strategy=codemode."
1605
- )
1603
+ show_warning_message("tools=... allowlist is ignored for strategy=codemode.")
1606
1604
  allowlist = None
1607
1605
 
1608
1606
  console.print()
@@ -333,7 +333,10 @@ class HarnessToolRegistry:
333
333
  normalized_server = server_name.strip().lower()
334
334
  normalized_tool = tool_name.strip().lower()
335
335
 
336
- if self._mcp_allowed_servers is not None and normalized_server not in self._mcp_allowed_servers:
336
+ if (
337
+ self._mcp_allowed_servers is not None
338
+ and normalized_server not in self._mcp_allowed_servers
339
+ ):
337
340
  return (
338
341
  False,
339
342
  f"MCP tool '{full_name}' blocked by MCP policy (server '{server_name}' not allowed).",
@@ -351,11 +354,7 @@ class HarnessToolRegistry:
351
354
  if include_mcp and self.mcp_manager is not None:
352
355
  mcp_specs = self._list_mcp_specs()
353
356
  if self._mcp_allowed_tools is not None or self._mcp_allowed_servers is not None:
354
- mcp_specs = [
355
- row
356
- for row in mcp_specs
357
- if self._is_mcp_tool_allowed(row.name)[0]
358
- ]
357
+ mcp_specs = [row for row in mcp_specs if self._is_mcp_tool_allowed(row.name)[0]]
359
358
  specs = list(specs_map.values())
360
359
  specs.extend(mcp_specs)
361
360
  alias_candidates: dict[str, list[HarnessToolSpec]] = {}
@@ -985,7 +984,9 @@ def _domain_allowed(*, domain: str, allowed_domains: set[str], blocked_domains:
985
984
  return False
986
985
  if blocked_domains and any(domain == d or domain.endswith(f".{d}") for d in blocked_domains):
987
986
  return False
988
- if allowed_domains and not any(domain == d or domain.endswith(f".{d}") for d in allowed_domains):
987
+ if allowed_domains and not any(
988
+ domain == d or domain.endswith(f".{d}") for d in allowed_domains
989
+ ):
989
990
  return False
990
991
  return True
991
992
 
@@ -250,7 +250,9 @@ class HarnessRunner:
250
250
  mcp_tool_allowlist=mcp_tool_allowlist,
251
251
  mcp_server=mcp_server,
252
252
  )
253
- server_name = self._resolve_codemode_server(tool_rows=tool_rows, requested_server=mcp_server)
253
+ server_name = self._resolve_codemode_server(
254
+ tool_rows=tool_rows, requested_server=mcp_server
255
+ )
254
256
  if not server_name:
255
257
  return HarnessRunResult(
256
258
  completed=False,
@@ -17,7 +17,7 @@ from .exceptions import (
17
17
  )
18
18
  from .session_wrapper import MCPSessionWrapper
19
19
 
20
- __version__ = "0.1.2"
20
+ __version__ = "0.1.6"
21
21
 
22
22
  __all__ = [
23
23
  "MCPClientManager",
@@ -174,7 +174,11 @@ class BenchmarkManagerMixin:
174
174
  """Execute a benchmark preset and persist aggregate summary."""
175
175
  resolved_mode = self._normalize_benchmark_mode(mode)
176
176
  resolved_harness_strategy = self._normalize_harness_strategy(harness_strategy)
177
- if resolved_mode == "harness" and resolved_harness_strategy == "codemode" and not include_mcp:
177
+ if (
178
+ resolved_mode == "harness"
179
+ and resolved_harness_strategy == "codemode"
180
+ and not include_mcp
181
+ ):
178
182
  logger.warning("Harness codemode strategy requires MCP; enabling include_mcp.")
179
183
  include_mcp = True
180
184
  benchmark_id = datetime.now(timezone.utc).strftime("bench_%Y%m%d_%H%M%S_%f")
@@ -291,11 +295,7 @@ class BenchmarkManagerMixin:
291
295
  "mode": resolved_mode,
292
296
  "mcp_enabled": bool(include_mcp) if resolved_mode == "harness" else False,
293
297
  "mcp_server": str(mcp_server) if (resolved_mode == "harness" and mcp_server) else None,
294
- "harness_strategy": (
295
- resolved_harness_strategy
296
- if resolved_mode == "harness"
297
- else None
298
- ),
298
+ "harness_strategy": (resolved_harness_strategy if resolved_mode == "harness" else None),
299
299
  "source": extra_sources.get(str(preset).strip().lower(), "builtin"),
300
300
  "description": extra_descriptions.get(str(preset).strip().lower(), ""),
301
301
  "pack_paths": [str(item) for item in (pack_paths or self._benchmark_pack_paths)],
@@ -961,12 +961,11 @@ class BenchmarkManagerMixin:
961
961
  for step in tool_steps:
962
962
  if step.tool_result is None:
963
963
  continue
964
- metadata = step.tool_result.metadata if isinstance(step.tool_result.metadata, dict) else {}
964
+ metadata = (
965
+ step.tool_result.metadata if isinstance(step.tool_result.metadata, dict) else {}
966
+ )
965
967
  resolved_name = str(
966
- metadata.get("tool_full_name")
967
- or metadata.get("resolved_tool")
968
- or step.tool
969
- or ""
968
+ metadata.get("tool_full_name") or metadata.get("resolved_tool") or step.tool or ""
970
969
  ).strip()
971
970
  if resolved_name.startswith("mcp:"):
972
971
  mcp_tool_calls += 1
@@ -982,8 +981,7 @@ class BenchmarkManagerMixin:
982
981
  ):
983
982
  codemode_discovery_calls += 1
984
983
  codemode_guardrail_blocked = any(
985
- str(step.action) == "codemode_plan"
986
- and "guardrail" in str(step.reasoning or "").lower()
984
+ str(step.action) == "codemode_plan" and "guardrail" in str(step.reasoning or "").lower()
987
985
  for step in result.steps
988
986
  )
989
987
  return {
@@ -156,7 +156,9 @@ def test_harness_run_supports_codemode_strategy(tmp_path: Path) -> None:
156
156
  manager = _CodeModeMCPManager()
157
157
  runner = HarnessRunner(llm_connector=connector, mcp_manager=manager, workdir=tmp_path)
158
158
 
159
- result = runner.run(task="Get weather in SF", strategy="codemode", include_mcp=True, max_steps=4)
159
+ result = runner.run(
160
+ task="Get weather in SF", strategy="codemode", include_mcp=True, max_steps=4
161
+ )
160
162
 
161
163
  assert result.completed is True
162
164
  assert "San Francisco" in result.final_response
@@ -186,9 +186,14 @@ def test_connector_supported_provider_metadata_includes_connection_type(tmp_path
186
186
  assert isinstance(openai["example_models"], list)
187
187
 
188
188
 
189
- def test_connector_uses_superqode_model_catalog(tmp_path: Path):
189
+ def test_connector_uses_superqode_model_catalog(tmp_path: Path, monkeypatch):
190
190
  """Provider model list should align with SuperQode catalog where available."""
191
191
  connector = make_connector(tmp_path)
192
+ monkeypatch.setattr(
193
+ connector,
194
+ "_list_opencode_models_cached",
195
+ lambda timeout=0.6: [],
196
+ )
192
197
 
193
198
  openai_models = connector.list_provider_example_models("openai", limit=3)
194
199
  gemini_models = connector.list_provider_example_models("gemini", limit=2)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes