openadapt 1.2.0__tar.gz → 1.2.2__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 (314) hide show
  1. {openadapt-1.2.0 → openadapt-1.2.2}/CHANGELOG.md +32 -0
  2. {openadapt-1.2.0 → openadapt-1.2.2}/PKG-INFO +12 -10
  3. {openadapt-1.2.0 → openadapt-1.2.2}/README.md +11 -9
  4. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/landing-page-strategy.md +77 -35
  5. {openadapt-1.2.0 → openadapt-1.2.2}/pyproject.toml +1 -1
  6. {openadapt-1.2.0 → openadapt-1.2.2}/.github/CODEOWNERS +0 -0
  7. {openadapt-1.2.0 → openadapt-1.2.2}/.github/FUNDING.yml +0 -0
  8. {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/bug_form.yml +0 -0
  9. {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  10. {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/new_feature.yml +0 -0
  11. {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/use_case.yml +0 -0
  12. {openadapt-1.2.0 → openadapt-1.2.2}/.github/pull_request_template.md +0 -0
  13. {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/docs.yml +0 -0
  14. {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/main.yml +0 -0
  15. {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/notify-docs.yml +0 -0
  16. {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/release-and-publish.yml +0 -0
  17. {openadapt-1.2.0 → openadapt-1.2.2}/.gitignore +0 -0
  18. {openadapt-1.2.0 → openadapt-1.2.2}/CLAUDE.md +0 -0
  19. {openadapt-1.2.0 → openadapt-1.2.2}/CONTRIBUTING.md +0 -0
  20. {openadapt-1.2.0 → openadapt-1.2.2}/LICENSE +0 -0
  21. {openadapt-1.2.0 → openadapt-1.2.2}/docs/CNAME +0 -0
  22. {openadapt-1.2.0 → openadapt-1.2.2}/docs/DOCS_UPDATE_SUMMARY.md +0 -0
  23. {openadapt-1.2.0 → openadapt-1.2.2}/docs/LEGACY_FREEZE.md +0 -0
  24. {openadapt-1.2.0 → openadapt-1.2.2}/docs/_scripts/README.md +0 -0
  25. {openadapt-1.2.0 → openadapt-1.2.2}/docs/_scripts/generate_docs_screenshots.py +0 -0
  26. {openadapt-1.2.0 → openadapt-1.2.2}/docs/architecture-evolution.md +0 -0
  27. {openadapt-1.2.0 → openadapt-1.2.2}/docs/architecture.md +0 -0
  28. {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/architecture-diagram.png +0 -0
  29. {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_accessibility.png +0 -0
  30. {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_input_monitoring.png +0 -0
  31. {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_permissions_alert.png +0 -0
  32. {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_screen_recording.png +0 -0
  33. {openadapt-1.2.0 → openadapt-1.2.2}/docs/cli.md +0 -0
  34. {openadapt-1.2.0 → openadapt-1.2.2}/docs/contributing.md +0 -0
  35. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/INDEX.md +0 -0
  36. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/openadapt-tray.md +0 -0
  37. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/production-execution-design.md +0 -0
  38. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/repo-rename-analysis.md +0 -0
  39. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/telemetry-design.md +0 -0
  40. {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/tray-logging.md +0 -0
  41. {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/installation.md +0 -0
  42. {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/permissions.md +0 -0
  43. {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/quickstart.md +0 -0
  44. {openadapt-1.2.0 → openadapt-1.2.2}/docs/index.md +0 -0
  45. {openadapt-1.2.0 → openadapt-1.2.2}/docs/legacy/freeze.md +0 -0
  46. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/capture.md +0 -0
  47. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/evals.md +0 -0
  48. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/grounding.md +0 -0
  49. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/index.md +0 -0
  50. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/ml.md +0 -0
  51. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/privacy.md +0 -0
  52. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/retrieval.md +0 -0
  53. {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/viewer.md +0 -0
  54. {openadapt-1.2.0 → openadapt-1.2.2}/docs/permissions-macos.md +0 -0
  55. {openadapt-1.2.0 → openadapt-1.2.2}/docs/publication-roadmap.md +0 -0
  56. {openadapt-1.2.0 → openadapt-1.2.2}/docs/roadmap-priorities.md +0 -0
  57. {openadapt-1.2.0 → openadapt-1.2.2}/examples/capture_train_eval.py +0 -0
  58. {openadapt-1.2.0 → openadapt-1.2.2}/examples/demo_retrieval_augmented.py +0 -0
  59. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/.flake8 +0 -0
  60. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/.pre-commit-config.yaml +0 -0
  61. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/CHANGELOG.md +0 -0
  62. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/CONTRIBUTING.md +0 -0
  63. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/README.md +0 -0
  64. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/SETUP.md +0 -0
  65. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/fixtures.sql +0 -0
  66. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_accessibility.png +0 -0
  67. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_input_monitoring.png +0 -0
  68. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_permissions_alert.png +0 -0
  69. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_screen_recording.png +0 -0
  70. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/visualize.png +0 -0
  71. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/get_version.py +0 -0
  72. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/macos.sh +0 -0
  73. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/test_app_run_macos.sh +0 -0
  74. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/test_app_run_windows.bat +0 -0
  75. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/upload_release_artifacts.sh +0 -0
  76. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/background.js +0 -0
  77. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/content.js +0 -0
  78. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/icons/logo.png +0 -0
  79. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/manifest.json +0 -0
  80. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/.env.example +0 -0
  81. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/README.md +0 -0
  82. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/.dockerignore +0 -0
  83. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/Dockerfile +0 -0
  84. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/client.py +0 -0
  85. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/deploy.py +0 -0
  86. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/pyproject.toml +0 -0
  87. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/describe_actions.py +0 -0
  88. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/fastsamsom.py +0 -0
  89. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/gpt4o_seg.py +0 -0
  90. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/handle_similar_segments.py +0 -0
  91. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/imagesimilarity.py +0 -0
  92. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/install/install_openadapt.ps1 +0 -0
  93. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/install/install_openadapt.sh +0 -0
  94. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/__init__.py +0 -0
  95. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/__init__.py +0 -0
  96. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/prompt.py +0 -0
  97. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/replicate.py +0 -0
  98. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/som.py +0 -0
  99. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/ultralytics.py +0 -0
  100. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/README +0 -0
  101. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/context_loader.py +0 -0
  102. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/env.py +0 -0
  103. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/script.py.mako +0 -0
  104. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/104d4a614d95_add_performancestat.py +0 -0
  105. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/186316d4f3ca_add_scrubbed_columns.py +0 -0
  106. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/20f9c2afb42c_rename_input_event_to_action_event.py +0 -0
  107. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/2a8a241785f2_add_original_recording_id.py +0 -0
  108. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/30a5ba9d6453_add_active_segment_description_and_.py +0 -0
  109. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/5139d7df38f6_add_recording_task_description.py +0 -0
  110. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/530f0663324e_add_recording_video_start_time.py +0 -0
  111. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/57d78d23087a_add_windowevent_state.py +0 -0
  112. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/607d1380b5ae_add_memorystat.py +0 -0
  113. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/8495f5471e23_add_recording_config.py +0 -0
  114. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/8713b142f5de_add_png_diff_data_and_png_diff_mask_data.py +0 -0
  115. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/87a78a84a8bf_remove_recording_timestamp_fks.py +0 -0
  116. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/98505a067995_add_browserevent_table.py +0 -0
  117. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/98c8851a5321_add_audio_info.py +0 -0
  118. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/a29b537fabe6_add_disabled_field_to_action_event.py +0 -0
  119. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/b206c80f7640_add_recording_inputevent_screenshot_.py +0 -0
  120. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/b2dc41850120_window_window_id.py +0 -0
  121. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/bb25e889ad71_generate_unique_user_id.py +0 -0
  122. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/c24abb5455d3_create_new_recording_fks.py +0 -0
  123. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/d63569e4fb90_actionevent_element_state.py +0 -0
  124. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/d714cc86fce8_add_scrubbed_recording_model.py +0 -0
  125. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/ec337f277666_datetime_timestamp.py +0 -0
  126. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/f9586c10a561_migrate_data_to_new_fks.py +0 -0
  127. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic.ini +0 -0
  128. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/__init__.py +0 -0
  129. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo.ico +0 -0
  130. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo.png +0 -0
  131. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo_inverted.png +0 -0
  132. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.eslintrc.json +0 -0
  133. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.gitignore +0 -0
  134. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.nvmrc +0 -0
  135. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.prettierrc.json +0 -0
  136. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/README.md +0 -0
  137. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/__init__.py +0 -0
  138. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/action_events.py +0 -0
  139. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/index.py +0 -0
  140. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/recordings.py +0 -0
  141. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/scrubbing.py +0 -0
  142. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/settings.py +0 -0
  143. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api.ts +0 -0
  144. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/favicon.ico +0 -0
  145. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/globals.css +0 -0
  146. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/layout.tsx +0 -0
  147. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/onboarding/page.tsx +0 -0
  148. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/providers.tsx +0 -0
  149. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/RawRecordings.tsx +0 -0
  150. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/ScrubbedRecordings.tsx +0 -0
  151. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/detail/page.tsx +0 -0
  152. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/page.tsx +0 -0
  153. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/routes.ts +0 -0
  154. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/scrubbing/ScrubbingUpdates.tsx +0 -0
  155. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/scrubbing/page.tsx +0 -0
  156. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/(api_keys)/form.tsx +0 -0
  157. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/(api_keys)/page.tsx +0 -0
  158. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/SettingsHeader.tsx +0 -0
  159. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/layout.tsx +0 -0
  160. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/navbar.tsx +0 -0
  161. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/record_and_replay/form.tsx +0 -0
  162. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/record_and_replay/page.tsx +0 -0
  163. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/scrubbing/form.tsx +0 -0
  164. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/scrubbing/page.tsx +0 -0
  165. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/utils.ts +0 -0
  166. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/utils.ts +0 -0
  167. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/assets/logo.png +0 -0
  168. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/ActionEvent.tsx +0 -0
  169. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/ActionEvents.tsx +0 -0
  170. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/RemoveActionEvent.tsx +0 -0
  171. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/Screenshots.tsx +0 -0
  172. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/index.tsx +0 -0
  173. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Navbar/Navbar.tsx +0 -0
  174. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Navbar/index.tsx +0 -0
  175. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/BookACall.tsx +0 -0
  176. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/RegisterForUpdates.tsx +0 -0
  177. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/Tutorial.tsx +0 -0
  178. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/RecordingDetails/RecordingDetails.tsx +0 -0
  179. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/RecordingDetails/index.tsx +0 -0
  180. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Shell/Shell.tsx +0 -0
  181. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Shell/index.tsx +0 -0
  182. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/SimpleTable/SimpleTable.tsx +0 -0
  183. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/SimpleTable/index.tsx +0 -0
  184. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/entrypoint.ps1 +0 -0
  185. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/entrypoint.sh +0 -0
  186. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/index.js +0 -0
  187. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/next.config.js +0 -0
  188. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/package-lock.json +0 -0
  189. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/package.json +0 -0
  190. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/postcss.config.js +0 -0
  191. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/run.py +0 -0
  192. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/tailwind.config.js +0 -0
  193. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/tsconfig.json +0 -0
  194. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/action-event.ts +0 -0
  195. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/recording.ts +0 -0
  196. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/scrubbing.ts +0 -0
  197. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/tray.py +0 -0
  198. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/browser.py +0 -0
  199. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/build.py +0 -0
  200. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/build_utils.py +0 -0
  201. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/cache.py +0 -0
  202. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/__init__.py +0 -0
  203. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/__main__.py +0 -0
  204. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_linux.py +0 -0
  205. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_macos.py +0 -0
  206. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_windows.py +0 -0
  207. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/common.py +0 -0
  208. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/config.defaults.json +0 -0
  209. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/config.py +0 -0
  210. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/__init__.py +0 -0
  211. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/som/__init__.py +0 -0
  212. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/som/visualizer.py +0 -0
  213. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/custom_logger.py +0 -0
  214. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/__init__.py +0 -0
  215. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/crud.py +0 -0
  216. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/db.py +0 -0
  217. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/list.py +0 -0
  218. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/remove.py +0 -0
  219. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/deprecated/app/cards.py +0 -0
  220. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/anthropic.py +0 -0
  221. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/google.py +0 -0
  222. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/openai.py +0 -0
  223. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/entrypoint.py +0 -0
  224. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/error_reporting.py +0 -0
  225. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/events.py +0 -0
  226. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/extensions/synchronized_queue.py +0 -0
  227. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/models.py +0 -0
  228. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/playback.py +0 -0
  229. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/plotting.py +0 -0
  230. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/__init__.py +0 -0
  231. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/base.py +0 -0
  232. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/__init__.py +0 -0
  233. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/aws_comprehend.py +0 -0
  234. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/presidio.py +0 -0
  235. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/private_ai.py +0 -0
  236. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/productivity.py +0 -0
  237. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/apply_replay_instructions.j2 +0 -0
  238. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/describe_recording--segment.j2 +0 -0
  239. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/describe_recording.j2 +0 -0
  240. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/description.j2 +0 -0
  241. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/generate_action_event--segment.j2 +0 -0
  242. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/generate_action_event.j2 +0 -0
  243. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/is_action_complete.j2 +0 -0
  244. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/system.j2 +0 -0
  245. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/record.py +0 -0
  246. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/replay.py +0 -0
  247. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/__init__.py +0 -0
  248. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/reset_db.py +0 -0
  249. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/scrub.py +0 -0
  250. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scrub.py +0 -0
  251. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/share.py +0 -0
  252. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/__init__.py +0 -0
  253. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/download_model.py +0 -0
  254. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/spacy_model_init.py +0 -0
  255. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/start.py +0 -0
  256. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/__init__.py +0 -0
  257. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/base.py +0 -0
  258. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/demo.py +0 -0
  259. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/ascii.py +0 -0
  260. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/huggingface.py +0 -0
  261. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/ocr.py +0 -0
  262. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/openai.py +0 -0
  263. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/sam.py +0 -0
  264. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/summary.py +0 -0
  265. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/naive.py +0 -0
  266. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/segment.py +0 -0
  267. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/stateful.py +0 -0
  268. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/vanilla.py +0 -0
  269. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/visual.py +0 -0
  270. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/visual_browser.py +0 -0
  271. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/utils.py +0 -0
  272. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/video.py +0 -0
  273. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/vision.py +0 -0
  274. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/visualize.py +0 -0
  275. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/__init__.py +0 -0
  276. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_linux.py +0 -0
  277. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_macos.py +0 -0
  278. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_windows.py +0 -0
  279. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/permissions_in_macOS.md +0 -0
  280. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/poetry.lock +0 -0
  281. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/scripts/downloads.py +0 -0
  282. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/scripts/postinstall.py +0 -0
  283. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/setup.py +0 -0
  284. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/calculator.png +0 -0
  285. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/excel.png +0 -0
  286. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/sample_llc_1.pdf +0 -0
  287. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_emr_image.png +0 -0
  288. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_image_redaction_presidio.png +0 -0
  289. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_image_redaction_privateai.png +0 -0
  290. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/conftest.py +0 -0
  291. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_anthropic.py +0 -0
  292. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_google.py +0 -0
  293. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_openai.py +0 -0
  294. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_comprehend_scrub.py +0 -0
  295. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_presidio_scrub.py +0 -0
  296. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_private_ai_scrub.py +0 -0
  297. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/test_providers.py +0 -0
  298. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_browser.py +0 -0
  299. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_crop.py +0 -0
  300. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_crud.py +0 -0
  301. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_events.py +0 -0
  302. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_models.py +0 -0
  303. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_share.py +0 -0
  304. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_summary.py +0 -0
  305. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_utils.py +0 -0
  306. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_video.py +0 -0
  307. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_vision.py +0 -0
  308. {openadapt-1.2.0 → openadapt-1.2.2}/legacy/workflows/release-and-publish.yml +0 -0
  309. {openadapt-1.2.0 → openadapt-1.2.2}/mkdocs.yml +0 -0
  310. {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/__init__.py +0 -0
  311. {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/cli.py +0 -0
  312. {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/config.py +0 -0
  313. {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/version.py +0 -0
  314. {openadapt-1.2.0 → openadapt-1.2.2}/uv.lock +0 -0
@@ -2,6 +2,38 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v1.2.2 (2026-03-04)
6
+
7
+ ### Bug Fixes
8
+
9
+ - Add inline caveat to 100% accuracy claim in README table
10
+ ([#997](https://github.com/OpenAdaptAI/OpenAdapt/pull/997),
11
+ [`96907a3`](https://github.com/OpenAdaptAI/OpenAdapt/commit/96907a365de430e6918739d5117daff143053644))
12
+
13
+
14
+ ## v1.2.1 (2026-03-04)
15
+
16
+ ### Bug Fixes
17
+
18
+ - Correct OpenCUA attribution to macOS a11y code reuse
19
+ ([#991](https://github.com/OpenAdaptAI/OpenAdapt/pull/991),
20
+ [`8ed98a7`](https://github.com/OpenAdaptAI/OpenAdapt/commit/8ed98a73651f3f5d0e493e2d2172e04ba8c55f67))
21
+
22
+ - Review fixes — accuracy, claims, and add builders section
23
+ ([#991](https://github.com/OpenAdaptAI/OpenAdapt/pull/991),
24
+ [`8ed98a7`](https://github.com/OpenAdaptAI/OpenAdapt/commit/8ed98a73651f3f5d0e493e2d2172e04ba8c55f67))
25
+
26
+ ### Documentation
27
+
28
+ - Reframe positioning with multi-pillar strategy
29
+ ([#991](https://github.com/OpenAdaptAI/OpenAdapt/pull/991),
30
+ [`8ed98a7`](https://github.com/OpenAdaptAI/OpenAdapt/commit/8ed98a73651f3f5d0e493e2d2172e04ba8c55f67))
31
+
32
+ - Reframe positioning with multi-pillar strategy and honest scoping
33
+ ([#991](https://github.com/OpenAdaptAI/OpenAdapt/pull/991),
34
+ [`8ed98a7`](https://github.com/OpenAdaptAI/OpenAdapt/commit/8ed98a73651f3f5d0e493e2d2172e04ba8c55f67))
35
+
36
+
5
37
  ## v1.2.0 (2026-03-04)
6
38
 
7
39
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openadapt
3
- Version: 1.2.0
3
+ Version: 1.2.2
4
4
  Summary: GUI automation with ML - record, train, deploy, evaluate
5
5
  Project-URL: Homepage, https://openadapt.ai
6
6
  Project-URL: Documentation, https://docs.openadapt.ai
@@ -220,18 +220,20 @@ OpenAdapt follows a streamlined **Demonstrate → Learn → Execute** pipeline:
220
220
  - **Act**: Execute validated actions with safety gates
221
221
  - **Evaluate**: Measure success with `openadapt-evals` and feed results back for improvement
222
222
 
223
- ### Core Approach: Demo-Conditioned Prompting
223
+ ### Core Approach: Trajectory-Conditioned Disambiguation
224
224
 
225
- OpenAdapt explores **demonstration-conditioned automation** - "show, don't tell":
225
+ Zero-shot VLMs fail on GUI tasks not due to lack of capability, but due to **ambiguity in UI affordances**. OpenAdapt resolves this by conditioning agents on human demonstrations — "show, don't tell."
226
226
 
227
- | Traditional Agent | OpenAdapt Agent |
228
- |-------------------|-----------------|
229
- | User writes prompts | User records demonstration |
230
- | Ambiguous instructions | Grounded in actual UI |
231
- | Requires prompt engineering | Reduced prompt engineering |
232
- | Context-free | Context from similar demos |
227
+ | | No Retrieval | With Retrieval |
228
+ |---|---|---|
229
+ | **No Fine-tuning** | 46.7% (zero-shot baseline) | **100%** first-action (n=45, shared entry point) |
230
+ | **Fine-tuning** | Standard SFT (baseline) | **Demo-conditioned FT** (planned) |
233
231
 
234
- **Retrieval powers BOTH training AND evaluation**: Similar demonstrations are retrieved as context for the VLM. In early experiments on a controlled macOS benchmark, this improved first-action accuracy from 46.7% to 100% - though all 45 tasks in that benchmark share the same navigation entry point. See the [publication roadmap](docs/publication-roadmap.md) for methodology and limitations.
232
+ The bottom-right cell is OpenAdapt's unique value: training models to **use** demonstrations they haven't seen before, combining retrieval with fine-tuning for maximum accuracy. Phase 2 (retrieval-only prompting) is validated; Phase 3 (demo-conditioned fine-tuning) is in progress.
233
+
234
+ **Validated result**: On a controlled macOS benchmark (45 System Settings tasks sharing a common navigation entry point), demo-conditioned prompting improved first-action accuracy from 46.7% to 100%. A length-matched control (+11.1 pp only) confirms the benefit is semantic, not token-length. See the [research thesis](https://github.com/OpenAdaptAI/openadapt-ml/blob/main/docs/research_thesis.md) for methodology and the [publication roadmap](docs/publication-roadmap.md) for limitations.
235
+
236
+ **Industry validation**: [OpenCUA](https://github.com/xlang-ai/OpenCUA) (NeurIPS 2025 Spotlight, XLANG Lab) [reused OpenAdapt's macOS accessibility capture code](https://arxiv.org/html/2508.09123v3) in their AgentNetTool, but uses demos only for model training — not runtime conditioning. No open-source CUA framework currently does demo-conditioned inference, which remains OpenAdapt's architectural differentiator.
235
237
 
236
238
  ### Key Concepts
237
239
 
@@ -164,18 +164,20 @@ OpenAdapt follows a streamlined **Demonstrate → Learn → Execute** pipeline:
164
164
  - **Act**: Execute validated actions with safety gates
165
165
  - **Evaluate**: Measure success with `openadapt-evals` and feed results back for improvement
166
166
 
167
- ### Core Approach: Demo-Conditioned Prompting
167
+ ### Core Approach: Trajectory-Conditioned Disambiguation
168
168
 
169
- OpenAdapt explores **demonstration-conditioned automation** - "show, don't tell":
169
+ Zero-shot VLMs fail on GUI tasks not due to lack of capability, but due to **ambiguity in UI affordances**. OpenAdapt resolves this by conditioning agents on human demonstrations — "show, don't tell."
170
170
 
171
- | Traditional Agent | OpenAdapt Agent |
172
- |-------------------|-----------------|
173
- | User writes prompts | User records demonstration |
174
- | Ambiguous instructions | Grounded in actual UI |
175
- | Requires prompt engineering | Reduced prompt engineering |
176
- | Context-free | Context from similar demos |
171
+ | | No Retrieval | With Retrieval |
172
+ |---|---|---|
173
+ | **No Fine-tuning** | 46.7% (zero-shot baseline) | **100%** first-action (n=45, shared entry point) |
174
+ | **Fine-tuning** | Standard SFT (baseline) | **Demo-conditioned FT** (planned) |
177
175
 
178
- **Retrieval powers BOTH training AND evaluation**: Similar demonstrations are retrieved as context for the VLM. In early experiments on a controlled macOS benchmark, this improved first-action accuracy from 46.7% to 100% - though all 45 tasks in that benchmark share the same navigation entry point. See the [publication roadmap](docs/publication-roadmap.md) for methodology and limitations.
176
+ The bottom-right cell is OpenAdapt's unique value: training models to **use** demonstrations they haven't seen before, combining retrieval with fine-tuning for maximum accuracy. Phase 2 (retrieval-only prompting) is validated; Phase 3 (demo-conditioned fine-tuning) is in progress.
177
+
178
+ **Validated result**: On a controlled macOS benchmark (45 System Settings tasks sharing a common navigation entry point), demo-conditioned prompting improved first-action accuracy from 46.7% to 100%. A length-matched control (+11.1 pp only) confirms the benefit is semantic, not token-length. See the [research thesis](https://github.com/OpenAdaptAI/openadapt-ml/blob/main/docs/research_thesis.md) for methodology and the [publication roadmap](docs/publication-roadmap.md) for limitations.
179
+
180
+ **Industry validation**: [OpenCUA](https://github.com/xlang-ai/OpenCUA) (NeurIPS 2025 Spotlight, XLANG Lab) [reused OpenAdapt's macOS accessibility capture code](https://arxiv.org/html/2508.09123v3) in their AgentNetTool, but uses demos only for model training — not runtime conditioning. No open-source CUA framework currently does demo-conditioned inference, which remains OpenAdapt's architectural differentiator.
179
181
 
180
182
  ### Key Concepts
181
183
 
@@ -40,7 +40,9 @@ OpenAdapt has evolved from a monolithic application (v0.46.0) to a **modular met
40
40
  4. **Open Source (MIT License)**: Full transparency, no vendor lock-in
41
41
 
42
42
  **Key Innovation**:
43
- - **Trajectory-conditioned disambiguation of UI affordances** - validated experiment showing 33% -> 100% first-action accuracy with demo conditioning
43
+ - **Trajectory-conditioned disambiguation of UI affordances** — the only open-source CUA framework that conditions agents on recorded demonstrations at runtime (validated: 46.7% 100% first-action accuracy)
44
+ - **Specialization over scale** — fine-tuned Qwen3-VL-2B outperforms Claude Sonnet 4.5 and GPT-5.1 on action accuracy (42.9% vs 11.2% vs 23.2%) on an internal benchmark
45
+ - **Capture-to-deployment pipeline** — record → retrieve → train → deploy. [OpenCUA](https://github.com/xlang-ai/OpenCUA) (NeurIPS 2025 Spotlight) [reused OpenAdapt's macOS accessibility capture code](https://arxiv.org/html/2508.09123v3) in their AgentNetTool
44
46
  - **Set-of-Marks (SoM) mode**: 100% accuracy on synthetic benchmarks using element IDs instead of coordinates
45
47
 
46
48
  ### 1.2 Current Landing Page Assessment
@@ -218,25 +220,31 @@ Why: Clear 3-step process, action-oriented
218
220
 
219
221
  ### 3.3 Key Differentiators to Emphasize
220
222
 
221
- 1. **Demonstration-Based Learning**
222
- - Not: "Use natural language to describe tasks"
223
- - But: "Just do the task and OpenAdapt learns from watching"
224
- - Proof: 33% -> 100% first-action accuracy with demo conditioning
223
+ 1. **Capture-to-Deployment Pipeline**
224
+ - Not: "Prompt the AI to do your task"
225
+ - But: "Record the task once. OpenAdapt handles the rest — retrieval, training, deployment."
226
+ - Proof: 7 modular packages (capture, ML, evals, grounding, retrieval, privacy, viewer); OpenCUA (NeurIPS 2025) [reused OpenAdapt's macOS a11y capture code](https://arxiv.org/html/2508.09123v3)
225
227
 
226
- 2. **Model Agnostic**
228
+ 2. **Demonstration-Conditioned Agents**
229
+ - Not: "Zero-shot reasoning about what to click"
230
+ - But: "Agents conditioned on relevant demos — at inference AND during training"
231
+ - Proof: 46.7% → 100% first-action accuracy with demo conditioning (validated, n=45). No other open-source CUA framework does runtime demo conditioning.
232
+ - Note: This is first-action accuracy on tasks sharing a navigation entry point. Multi-step and cross-domain evaluation is ongoing on Windows Agent Arena.
233
+
234
+ 3. **Specialization Over Scale**
235
+ - Not: "Use the biggest model available"
236
+ - But: "A 2B model fine-tuned on your workflows outperforms frontier models"
237
+ - Proof: Qwen3-VL-2B (42.9%) vs Claude Sonnet 4.5 (11.2%) on action accuracy (internal benchmark, synthetic login task)
238
+
239
+ 4. **Model Agnostic**
227
240
  - Not: "Works with [specific AI]"
228
241
  - But: "Your choice: Claude, GPT-4V, Gemini, Qwen, or custom models"
229
242
  - Proof: Adapters for multiple VLM backends
230
243
 
231
- 3. **Runs Anywhere**
232
- - Not: "Cloud-powered automation"
233
- - But: "Run locally, in the cloud, or hybrid"
234
- - Proof: CLI-based, works offline
235
-
236
- 4. **Open Source**
237
- - Not: "Try our free tier"
238
- - But: "MIT licensed, fully transparent, community-driven"
239
- - Proof: GitHub, PyPI, active Discord
244
+ 5. **Runs Anywhere & Open Source**
245
+ - Not: "Cloud-powered automation" / "Try our free tier"
246
+ - But: "Run locally, in the cloud, or hybrid. MIT licensed, fully transparent."
247
+ - Proof: CLI-based, works offline; GitHub, PyPI, active Discord
240
248
 
241
249
  ### 3.4 Messaging Framework
242
250
 
@@ -256,14 +264,17 @@ Why: Clear 3-step process, action-oriented
256
264
 
257
265
  ## 4. Competitive Positioning
258
266
 
259
- ### 4.1 Primary Competitors
267
+ ### 4.1 Primary Competitors (Updated March 2026)
260
268
 
261
269
  | Competitor | Strengths | Weaknesses | Our Advantage |
262
270
  |------------|-----------|------------|---------------|
263
- | **Anthropic Computer Use** | First-mover, Claude integration, simple API | Proprietary, cloud-only, no customization | Open source, model-agnostic, trainable |
264
- | **UI-TARS (ByteDance)** | Strong benchmark scores, research backing | Closed source, not productized | Open source, deployable, extensible |
265
- | **Traditional RPA (UiPath, etc.)** | Enterprise-proven, large ecosystems | Brittle selectors, no AI reasoning, expensive | AI-first, learns from demos, affordable |
266
- | **GPT-4V + Custom Code** | Powerful model, flexibility | Requires building everything, no structure | Ready-made SDK, training pipeline, benchmarks |
271
+ | **Anthropic Computer Use** | 72.5% OSWorld (near-human), simple API | Proprietary, cloud-only, no customization, per-action cost | Open source, model-agnostic, trainable, runs locally |
272
+ | **Agent S3 (Simular)** | 72.6% OSWorld, open source | Zero-shot only, no demo conditioning, no fine-tuning pipeline | Demo-conditioned agents, capture-to-train pipeline |
273
+ | **OpenCUA (XLANG Lab)** | NeurIPS Spotlight, 45% OSWorld, open models (7B-72B) | Zero-shot at inference demos used only for training, not runtime | Runtime demo conditioning (unique); OpenCUA reused OpenAdapt's macOS a11y code |
274
+ | **Browser Use** | 50k+ GitHub stars, 89% WebVoyager | Browser-only, no desktop, no training pipeline | Full desktop support, fine-tuning, demo library |
275
+ | **UI-TARS (ByteDance)** | Local models (2B-72B), Apache 2.0 | No demo conditioning, no capture pipeline | End-to-end record→train→deploy, demo retrieval |
276
+ | **CUA / Bytebot** | Container infra, YC-backed | Infrastructure-only, no ML training pipeline | Full pipeline: capture + train + eval + deploy |
277
+ | **Traditional RPA (UiPath, etc.)** | Enterprise-proven, UiPath Screen Agent #1 on OSWorld | Brittle selectors, expensive ($10K+/yr), requires scripting | AI-first, learns from demos, open source |
267
278
 
268
279
  ### 4.2 Positioning Statement
269
280
 
@@ -352,24 +363,46 @@ Show it once. Let it handle the rest.
352
363
  ```
353
364
  ## Why OpenAdapt?
354
365
 
355
- ### Demonstration-Based Learning
356
- No prompt engineering required. OpenAdapt learns from how you actually do tasks.
357
- [Stat: 33% -> 100% first-action accuracy with demo conditioning]
366
+ ### Record Once, Automate Forever
367
+ Capture any workflow. OpenAdapt retrieves relevant demos to guide agents
368
+ AND trains specialized models on your recordings.
369
+ [Stat: 46.7% → 100% first-action accuracy with demo conditioning]
370
+
371
+ ### Small Models, Big Results
372
+ A 2B model fine-tuned on your workflows outperforms frontier models.
373
+ Specialization beats scale for GUI tasks.
374
+ [Stat: 42.9% action accuracy (Qwen 2B FT) vs 11.2% (Claude Sonnet 4.5)]
358
375
 
359
- ### Model Agnostic
376
+ ### Model Agnostic & Open Source
360
377
  Your choice of AI: Claude, GPT-4V, Gemini, Qwen-VL, or fine-tune your own.
361
- Not locked to any single provider.
378
+ MIT licensed. Run locally, in the cloud, or hybrid.
379
+ ```
380
+
381
+ ### 5.5 For Builders Section
362
382
 
363
- ### Run Anywhere
364
- CLI-based, works offline. Deploy locally, in the cloud, or hybrid.
365
- Your data stays where you want it.
383
+ ````
384
+ ## Built for Builders
366
385
 
367
- ### Fully Open Source
368
- MIT licensed. Transparent, auditable, community-driven.
369
- No vendor lock-in, ever.
386
+ ### Show it once. Done.
387
+ Record yourself doing a task. OpenAdapt handles the rest.
388
+ No code, no prompts, no configuration.
389
+
390
+ ### Three commands
391
+ ```bash
392
+ pip install openadapt
393
+ openadapt capture start --name my-task # Record
394
+ openadapt run --capture my-task # Replay with AI
370
395
  ```
371
396
 
372
- ### 5.5 For Developers Section
397
+ ### Works with the AI you already use
398
+ Claude, GPT-4V, Gemini, Qwen — pick your model.
399
+ Or let OpenAdapt train a small one that runs on your laptop.
400
+
401
+ ### Your data stays yours
402
+ Everything runs locally. Nothing leaves your machine unless you want it to.
403
+ ````
404
+
405
+ ### 5.6 For Developers Section
373
406
 
374
407
  ````
375
408
  ## Built for Developers
@@ -406,7 +439,7 @@ Compare your models against published baselines.
406
439
  [View Documentation] [GitHub Repository]
407
440
  ````
408
441
 
409
- ### 5.6 For Enterprise Section
442
+ ### 5.7 For Enterprise Section
410
443
 
411
444
  ```
412
445
  ## Enterprise-Ready Automation
@@ -429,7 +462,7 @@ Custom development, training, and support packages available.
429
462
  [Contact Sales: sales@openadapt.ai]
430
463
  ```
431
464
 
432
- ### 5.7 Use Cases Section (Refined)
465
+ ### 5.8 Use Cases Section (Refined)
433
466
 
434
467
  **Current**: Generic industry grid
435
468
 
@@ -486,13 +519,22 @@ Example: Onboarding guides for complex internal tools.
486
519
 
487
520
  ### 6.3 Proof Points to Include
488
521
 
489
- - "33% -> 100% first-action accuracy with demonstration conditioning"
522
+ - "46.7% 100% first-action accuracy with demo conditioning (n=45, same model, no training)"
523
+ - "Fine-tuned 2B model outperforms Claude Sonnet 4.5 on action accuracy (42.9% vs 11.2%, internal benchmark)"
524
+ - "OpenCUA (NeurIPS 2025 Spotlight) reused OpenAdapt's macOS accessibility capture code in AgentNetTool"
525
+ - "Only open-source CUA framework with runtime demo-conditioned inference"
490
526
  - "[X,XXX] PyPI downloads this month" (dynamic)
491
527
  - "[XXX] GitHub stars" (dynamic)
492
528
  - "7 modular packages, 1 unified CLI"
493
529
  - "Integrated with Windows Agent Arena, WebArena, OSWorld benchmarks"
494
530
  - "MIT licensed, fully open source"
495
531
 
532
+ **Honesty notes for proof points**:
533
+ - The 46.7%→100% result is first-action only on 45 macOS tasks sharing the same navigation entry point
534
+ - The 42.9% vs 11.2% result is on a controlled internal synthetic login benchmark (~3 UI elements)
535
+ - Multi-step episode success on real-world benchmarks (WAA) is under active evaluation
536
+ - Frame these as "validated signal" not "production-proven"
537
+
496
538
  ---
497
539
 
498
540
  ## 7. Wireframe Concepts
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openadapt"
3
- version = "1.2.0"
3
+ version = "1.2.2"
4
4
  description = "GUI automation with ML - record, train, deploy, evaluate"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes