rf-mcp 0.34.0.dev2__tar.gz → 0.34.0.dev3__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 (263) hide show
  1. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/PKG-INFO +1 -1
  2. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/pyproject.toml +1 -1
  3. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/test_builder.py +51 -0
  4. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.gitignore +0 -0
  5. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/README.md +0 -0
  6. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/@standard-schema/spec/LICENSE +0 -0
  7. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/@standard-schema/spec/README.md +0 -0
  8. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/cross-spawn/LICENSE +0 -0
  9. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/cross-spawn/README.md +0 -0
  10. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/detect-libc/LICENSE +0 -0
  11. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/detect-libc/README.md +0 -0
  12. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/effect/LICENSE +0 -0
  13. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/effect/README.md +0 -0
  14. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/fast-check/LICENSE +0 -0
  15. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/fast-check/README.md +0 -0
  16. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/find-my-way-ts/LICENSE +0 -0
  17. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/find-my-way-ts/README.md +0 -0
  18. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/ini/LICENSE +0 -0
  19. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/ini/README.md +0 -0
  20. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/isexe/LICENSE +0 -0
  21. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/isexe/README.md +0 -0
  22. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/kubernetes-types/README.md +0 -0
  23. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/msgpackr/LICENSE +0 -0
  24. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/msgpackr/README.md +0 -0
  25. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/msgpackr-extract/LICENSE +0 -0
  26. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/msgpackr-extract/README.md +0 -0
  27. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/multipasta/LICENSE +0 -0
  28. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/multipasta/README.md +0 -0
  29. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/node-gyp-build-optional-packages/LICENSE +0 -0
  30. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/node-gyp-build-optional-packages/README.md +0 -0
  31. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/pure-rand/LICENSE +0 -0
  32. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/pure-rand/README.md +0 -0
  33. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/toml/LICENSE +0 -0
  34. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/toml/README.md +0 -0
  35. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/uuid/README.md +0 -0
  36. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/which/LICENSE +0 -0
  37. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/which/README.md +0 -0
  38. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/yaml/LICENSE +0 -0
  39. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/yaml/README.md +0 -0
  40. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/zod/LICENSE +0 -0
  41. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/.kilo/node_modules/zod/README.md +0 -0
  42. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/LICENSE +0 -0
  43. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/README.md +0 -0
  44. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/__init__.py +0 -0
  45. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/__init__.py +0 -0
  46. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/adapter_factory.py +0 -0
  47. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/browser_adapter.py +0 -0
  48. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/page_state_adapter.py +0 -0
  49. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/playwright_adapter.py +0 -0
  50. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/recovery_adapter.py +0 -0
  51. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/adapters/selenium_adapter.py +0 -0
  52. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/attach/__init__.py +0 -0
  53. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/attach/mcp_attach.py +0 -0
  54. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/compat/__init__.py +0 -0
  55. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/compat/fastmcp_compat.py +0 -0
  56. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/__init__.py +0 -0
  57. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/browser/__init__.py +0 -0
  58. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/browser/browser_library_manager.py +0 -0
  59. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/__init__.py +0 -0
  60. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/desktop_display_safety.py +0 -0
  61. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/desktop_execution_signals.py +0 -0
  62. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/desktop_guidance.py +0 -0
  63. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/desktop_launch_env.py +0 -0
  64. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/execution_coordinator.py +0 -0
  65. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/external_rf_client.py +0 -0
  66. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/keyword_executor.py +0 -0
  67. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/locator_arg_introspection.py +0 -0
  68. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/locator_converter.py +0 -0
  69. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/mobile_capability_service.py +0 -0
  70. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/page_source_service.py +0 -0
  71. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/platynui_focus.py +0 -0
  72. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/rf_native_context_manager.py +0 -0
  73. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/session_manager.py +0 -0
  74. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/suite_execution_service.py +0 -0
  75. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/execution/ui_tree_service.py +0 -0
  76. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/keyword_matcher.py +0 -0
  77. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/library_recommender.py +0 -0
  78. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/nlp_processor.py +0 -0
  79. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/state_manager.py +0 -0
  80. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/variables/__init__.py +0 -0
  81. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/components/variables/variable_resolver.py +0 -0
  82. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/config/__init__.py +0 -0
  83. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/config/library_registry.py +0 -0
  84. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/container.py +0 -0
  85. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/__init__.py +0 -0
  86. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/dynamic_keyword_orchestrator.py +0 -0
  87. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/event_bus.py +0 -0
  88. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/keyword_discovery.py +0 -0
  89. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/library_manager.py +0 -0
  90. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/core/session_manager.py +0 -0
  91. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/__init__.py +0 -0
  92. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/__init__.py +0 -0
  93. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/aggregates.py +0 -0
  94. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/entities.py +0 -0
  95. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/events.py +0 -0
  96. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/services.py +0 -0
  97. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/artifact_output/value_objects.py +0 -0
  98. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/__init__.py +0 -0
  99. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/aggregates.py +0 -0
  100. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/entities.py +0 -0
  101. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/events.py +0 -0
  102. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/services.py +0 -0
  103. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/batch_execution/value_objects.py +0 -0
  104. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/__init__.py +0 -0
  105. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/adapters/__init__.py +0 -0
  106. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/adapters/fastmcp_adapter.py +0 -0
  107. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/aggregates.py +0 -0
  108. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/entities.py +0 -0
  109. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/events.py +0 -0
  110. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/repository.py +0 -0
  111. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/security.py +0 -0
  112. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/services.py +0 -0
  113. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/instruction/value_objects.py +0 -0
  114. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/__init__.py +0 -0
  115. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/adapters/__init__.py +0 -0
  116. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/adapters/locator_normalizer_adapter.py +0 -0
  117. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/adapters/mcp_tool.py +0 -0
  118. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/adapters/session_lookup_adapter.py +0 -0
  119. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/aggregates.py +0 -0
  120. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/entities.py +0 -0
  121. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/events.py +0 -0
  122. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/services.py +0 -0
  123. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/intent/value_objects.py +0 -0
  124. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/keyword_resolution/__init__.py +0 -0
  125. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/keyword_resolution/aggregates.py +0 -0
  126. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/keyword_resolution/events.py +0 -0
  127. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/keyword_resolution/services.py +0 -0
  128. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/keyword_resolution/value_objects.py +0 -0
  129. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/__init__.py +0 -0
  130. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/adapters/__init__.py +0 -0
  131. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/adapters/fastmcp_adapter.py +0 -0
  132. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/adapters/sqlite_vec_adapter.py +0 -0
  133. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/aggregates.py +0 -0
  134. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/entities.py +0 -0
  135. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/events.py +0 -0
  136. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/repository.py +0 -0
  137. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/services.py +0 -0
  138. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/memory/value_objects.py +0 -0
  139. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/__init__.py +0 -0
  140. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/aggregates.py +0 -0
  141. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/entities.py +0 -0
  142. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/events.py +0 -0
  143. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/services.py +0 -0
  144. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/recovery/value_objects.py +0 -0
  145. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/__init__.py +0 -0
  146. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/aggregates.py +0 -0
  147. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/events.py +0 -0
  148. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/repository.py +0 -0
  149. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/services.py +0 -0
  150. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/response_optimization/value_objects.py +0 -0
  151. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/shared/__init__.py +0 -0
  152. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/shared/kernel.py +0 -0
  153. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/__init__.py +0 -0
  154. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/aggregates.py +0 -0
  155. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/delta_aggregates.py +0 -0
  156. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/delta_entities.py +0 -0
  157. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/delta_events.py +0 -0
  158. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/delta_service.py +0 -0
  159. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/delta_value_objects.py +0 -0
  160. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/diff_service.py +0 -0
  161. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/entities.py +0 -0
  162. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/events.py +0 -0
  163. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/list_folding.py +0 -0
  164. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/models.py +0 -0
  165. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/repository.py +0 -0
  166. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/services.py +0 -0
  167. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/snapshot/value_objects.py +0 -0
  168. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/__init__.py +0 -0
  169. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/aggregates.py +0 -0
  170. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/entities.py +0 -0
  171. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/events.py +0 -0
  172. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/keyword_classifier.py +0 -0
  173. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/services.py +0 -0
  174. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/timeout/value_objects.py +0 -0
  175. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/__init__.py +0 -0
  176. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/aggregates.py +0 -0
  177. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/entities.py +0 -0
  178. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/events.py +0 -0
  179. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/repository.py +0 -0
  180. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/services.py +0 -0
  181. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/token_accounting/value_objects.py +0 -0
  182. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/__init__.py +0 -0
  183. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/adapters/__init__.py +0 -0
  184. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/adapters/fastmcp_adapter.py +0 -0
  185. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/aggregates.py +0 -0
  186. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/entities.py +0 -0
  187. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/events.py +0 -0
  188. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/repository.py +0 -0
  189. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/services.py +0 -0
  190. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/domains/tool_profile/value_objects.py +0 -0
  191. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/entry.py +0 -0
  192. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/__init__.py +0 -0
  193. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/api.py +0 -0
  194. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/apps.py +0 -0
  195. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/asgi.py +0 -0
  196. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/bridge.py +0 -0
  197. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/config.py +0 -0
  198. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/controller.py +0 -0
  199. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/devserver.py +0 -0
  200. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/django_app.py +0 -0
  201. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/static/frontend/app.js +0 -0
  202. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/static/frontend/base.css +0 -0
  203. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/templates/frontend/index.html +0 -0
  204. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/templates/frontend/layout.html +0 -0
  205. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/urls.py +0 -0
  206. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/frontend/views.py +0 -0
  207. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/__init__.py +0 -0
  208. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/browser_models.py +0 -0
  209. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/config_models.py +0 -0
  210. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/execution_models.py +0 -0
  211. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/library_models.py +0 -0
  212. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/models/session_models.py +0 -0
  213. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/__init__.py +0 -0
  214. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/adapters.py +0 -0
  215. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/cli.py +0 -0
  216. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/codecs.py +0 -0
  217. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/diagnostics.py +0 -0
  218. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/installer.py +0 -0
  219. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/onboarding/manifest.py +0 -0
  220. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/__init__.py +0 -0
  221. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/collector.py +0 -0
  222. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/compression_learner.py +0 -0
  223. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/folding_learner.py +0 -0
  224. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/instruction_hooks.py +0 -0
  225. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/instruction_learner.py +0 -0
  226. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/page_analyzer.py +0 -0
  227. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/pattern_store.py +0 -0
  228. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/ref_learner.py +0 -0
  229. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/optimization/timeout_learner.py +0 -0
  230. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/__init__.py +0 -0
  231. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/base.py +0 -0
  232. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/__init__.py +0 -0
  233. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/browser_plugin.py +0 -0
  234. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/definitions.py +0 -0
  235. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/platynui_plugin.py +0 -0
  236. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/requests_plugin.py +0 -0
  237. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/builtin/selenium_plugin.py +0 -0
  238. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/contracts.py +0 -0
  239. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/discovery.py +0 -0
  240. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/plugins/manager.py +0 -0
  241. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/server.py +0 -0
  242. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/__init__.py +0 -0
  243. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/argument_processor.py +0 -0
  244. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/enhanced_response_serializer.py +0 -0
  245. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/enhanced_serialization_integration.py +0 -0
  246. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/hints.py +0 -0
  247. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/libdoc_argument_parser.py +0 -0
  248. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/library_checker.py +0 -0
  249. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/library_detection.py +0 -0
  250. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/library_detector.py +0 -0
  251. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/library_loading_validator.py +0 -0
  252. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/logging_setup.py +0 -0
  253. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/requests_guidance.py +0 -0
  254. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/response_serializer.py +0 -0
  255. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/rf_libdoc_integration.py +0 -0
  256. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/rf_native_type_converter.py +0 -0
  257. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/rf_variables_compatibility.py +0 -0
  258. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/sampling.py +0 -0
  259. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/server_integration.py +0 -0
  260. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/session_resolution.py +0 -0
  261. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/token_efficient_output.py +0 -0
  262. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/validation.py +0 -0
  263. {rf_mcp-0.34.0.dev2 → rf_mcp-0.34.0.dev3}/src/robotmcp/utils/visual_guidance.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rf-mcp
3
- Version: 0.34.0.dev2
3
+ Version: 0.34.0.dev3
4
4
  Summary: Robot Framework MCP Server - Natural Language Test Automation Bridge
5
5
  Project-URL: Homepage, https://github.com/manykarim/rf-mcp
6
6
  Project-URL: Repository, https://github.com/manykarim/rf-mcp
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "rf-mcp"
7
- version = "0.34.0.dev2"
7
+ version = "0.34.0.dev3"
8
8
  description = "Robot Framework MCP Server - Natural Language Test Automation Bridge"
9
9
  authors = [{ name = "Many Kasiriha" }]
10
10
  license = { text = "Apache-2.0" }
@@ -110,6 +110,39 @@ class GeneratedTestSuite:
110
110
  column_headers: Optional[List[str]] = None
111
111
 
112
112
 
113
+ # change: fix-suite-arg-escape-roundtrip. RF recognizes only \n \r \t (+ \xHH \uHHHH
114
+ # \UHHHHHHHH) as escapes and drops the backslash for anything else. Preserve those and the
115
+ # syntax escapes rf-mcp/agents rely on; double every other literal backslash so RF's parser
116
+ # recovers the value. Idempotent: an already-doubled \\ is kept as a pair.
117
+ _RF_ESCAPE_PRESERVE_NEXT = frozenset("nrtxuU=#$@&%{} ")
118
+
119
+
120
+ def _escape_aware_backslashes(s: str) -> str:
121
+ """Double literal backslashes that RF would drop, preserving real/intended escapes."""
122
+ if "\\" not in s:
123
+ return s
124
+ out: List[str] = []
125
+ i, n = 0, len(s)
126
+ while i < n:
127
+ c = s[i]
128
+ if c == "\\":
129
+ nxt = s[i + 1] if i + 1 < n else ""
130
+ if nxt == "\\":
131
+ out.append("\\\\") # keep an existing \\ pair verbatim (idempotent)
132
+ i += 2
133
+ continue
134
+ if nxt in _RF_ESCAPE_PRESERVE_NEXT:
135
+ out.append("\\") # recognized/intended escape — do not double
136
+ i += 1
137
+ continue
138
+ out.append("\\\\") # unrecognized escape / trailing lone \ — double it
139
+ i += 1
140
+ continue
141
+ out.append(c)
142
+ i += 1
143
+ return "".join(out)
144
+
145
+
113
146
  class TestBuilder:
114
147
  """Builds Robot Framework test suites from successful execution steps."""
115
148
 
@@ -4098,6 +4131,24 @@ class TestBuilder:
4098
4131
  # Fix malformed evaluation namespace expressions first
4099
4132
  arg = self._fix_malformed_evaluation_namespace(arg)
4100
4133
 
4134
+ # Platform-independent path form (change: fix-suite-path-escaping): a Windows
4135
+ # DRIVE-LETTER path is rewritten to forward slashes — valid for Start Process/
4136
+ # subprocess and the OperatingSystem keywords on BOTH Windows and POSIX, and
4137
+ # RF-escape-safe. Without this, RF's escape processing corrupts a literal
4138
+ # backslash path (C:\WINDOWS -> C:WINDOWS; C:\name -> embedded newline).
4139
+ # Only the unambiguous drive-letter shape is touched; flags (/w), URLs
4140
+ # (https://…) and variable references do NOT match and are left unchanged.
4141
+ if re.match(r"^[A-Za-z]:[\\/]", arg):
4142
+ arg = arg.replace("\\", "/")
4143
+
4144
+ # Escape-aware backslash round-trip (change: fix-suite-arg-escape-roundtrip). RF
4145
+ # drops the backslash for every escape it does not recognize (\d -> d, \W -> W), so
4146
+ # a literal backslash (regex, relative Windows path) is corrupted on parse. Double
4147
+ # a backslash ONLY where RF would drop it; PRESERVE RF's real escapes (\n \r \t,
4148
+ # \x \u \U), an already-doubled \\, and the intended syntax escapes (\= \# \$ \{ \}
4149
+ # \@ \& \% \<space>). Idempotent, and leaves ${..} references (no backslash) intact.
4150
+ arg = _escape_aware_backslashes(arg)
4151
+
4101
4152
  # Escape literal newlines/tabs so they don't break the .robot line structure.
4102
4153
  # RF uses \n / \t as escape sequences, so we emit \\n / \\t in the text
4103
4154
  # which RF interprets back as the literal characters at runtime.
File without changes
File without changes
File without changes