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.
- {openadapt-1.2.0 → openadapt-1.2.2}/CHANGELOG.md +32 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/PKG-INFO +12 -10
- {openadapt-1.2.0 → openadapt-1.2.2}/README.md +11 -9
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/landing-page-strategy.md +77 -35
- {openadapt-1.2.0 → openadapt-1.2.2}/pyproject.toml +1 -1
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/CODEOWNERS +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/FUNDING.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/bug_form.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/new_feature.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/ISSUE_TEMPLATE/use_case.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/pull_request_template.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/docs.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/main.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/notify-docs.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.github/workflows/release-and-publish.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/.gitignore +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/CLAUDE.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/CONTRIBUTING.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/LICENSE +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/CNAME +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/DOCS_UPDATE_SUMMARY.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/LEGACY_FREEZE.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/_scripts/README.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/_scripts/generate_docs_screenshots.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/architecture-evolution.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/architecture.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/architecture-diagram.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_accessibility.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_input_monitoring.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_permissions_alert.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/assets/macOS_screen_recording.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/cli.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/contributing.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/INDEX.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/openadapt-tray.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/production-execution-design.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/repo-rename-analysis.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/telemetry-design.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/design/tray-logging.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/installation.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/permissions.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/getting-started/quickstart.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/index.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/legacy/freeze.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/capture.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/evals.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/grounding.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/index.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/ml.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/privacy.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/retrieval.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/packages/viewer.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/permissions-macos.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/publication-roadmap.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/docs/roadmap-priorities.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/examples/capture_train_eval.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/examples/demo_retrieval_augmented.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/.flake8 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/.pre-commit-config.yaml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/CHANGELOG.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/CONTRIBUTING.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/README.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/SETUP.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/fixtures.sql +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_accessibility.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_input_monitoring.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_permissions_alert.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/macOS_screen_recording.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/assets/visualize.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/get_version.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/macos.sh +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/test_app_run_macos.sh +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/test_app_run_windows.bat +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/build_scripts/upload_release_artifacts.sh +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/background.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/content.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/icons/logo.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/chrome_extension/manifest.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/.env.example +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/README.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/.dockerignore +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/Dockerfile +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/client.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/deploy/models/omniparser/deploy.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/deploy/pyproject.toml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/describe_actions.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/fastsamsom.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/gpt4o_seg.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/handle_similar_segments.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/experiments/imagesimilarity.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/install/install_openadapt.ps1 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/install/install_openadapt.sh +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/prompt.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/replicate.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/som.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/adapters/ultralytics.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/README +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/context_loader.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/env.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/script.py.mako +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/104d4a614d95_add_performancestat.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/186316d4f3ca_add_scrubbed_columns.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/20f9c2afb42c_rename_input_event_to_action_event.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/2a8a241785f2_add_original_recording_id.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/30a5ba9d6453_add_active_segment_description_and_.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/5139d7df38f6_add_recording_task_description.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/530f0663324e_add_recording_video_start_time.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/57d78d23087a_add_windowevent_state.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/607d1380b5ae_add_memorystat.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/8495f5471e23_add_recording_config.py +0 -0
- {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
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/87a78a84a8bf_remove_recording_timestamp_fks.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/98505a067995_add_browserevent_table.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/98c8851a5321_add_audio_info.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/a29b537fabe6_add_disabled_field_to_action_event.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/b206c80f7640_add_recording_inputevent_screenshot_.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/b2dc41850120_window_window_id.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/bb25e889ad71_generate_unique_user_id.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/c24abb5455d3_create_new_recording_fks.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/d63569e4fb90_actionevent_element_state.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/d714cc86fce8_add_scrubbed_recording_model.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/ec337f277666_datetime_timestamp.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/f9586c10a561_migrate_data_to_new_fks.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic.ini +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo.ico +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/assets/logo_inverted.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.eslintrc.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.gitignore +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.nvmrc +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/.prettierrc.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/README.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/action_events.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/index.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/recordings.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/scrubbing.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api/settings.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/api.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/favicon.ico +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/globals.css +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/layout.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/onboarding/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/providers.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/RawRecordings.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/ScrubbedRecordings.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/detail/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/recordings/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/routes.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/scrubbing/ScrubbingUpdates.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/scrubbing/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/(api_keys)/form.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/(api_keys)/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/SettingsHeader.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/layout.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/navbar.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/record_and_replay/form.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/record_and_replay/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/scrubbing/form.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/scrubbing/page.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/settings/utils.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/app/utils.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/assets/logo.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/ActionEvent.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/ActionEvents.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/RemoveActionEvent.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/Screenshots.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/ActionEvent/index.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Navbar/Navbar.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Navbar/index.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/BookACall.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/RegisterForUpdates.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Onboarding/steps/Tutorial.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/RecordingDetails/RecordingDetails.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/RecordingDetails/index.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Shell/Shell.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/Shell/index.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/SimpleTable/SimpleTable.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/components/SimpleTable/index.tsx +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/entrypoint.ps1 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/entrypoint.sh +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/index.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/next.config.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/package-lock.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/package.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/postcss.config.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/run.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/tailwind.config.js +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/tsconfig.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/action-event.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/recording.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/dashboard/types/scrubbing.ts +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/app/tray.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/browser.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/build.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/build_utils.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/cache.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/__main__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_linux.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_macos.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/capture/_windows.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/common.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/config.defaults.json +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/config.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/som/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/contrib/som/visualizer.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/custom_logger.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/crud.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/db.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/list.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/db/remove.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/deprecated/app/cards.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/anthropic.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/google.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/drivers/openai.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/entrypoint.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/error_reporting.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/events.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/extensions/synchronized_queue.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/models.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/playback.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/plotting.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/base.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/aws_comprehend.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/presidio.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/privacy/providers/private_ai.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/productivity.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/apply_replay_instructions.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/describe_recording--segment.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/describe_recording.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/description.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/generate_action_event--segment.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/generate_action_event.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/is_action_complete.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/prompts/system.j2 +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/record.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/replay.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/reset_db.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scripts/scrub.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/scrub.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/share.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/download_model.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/spacy_model_helpers/spacy_model_init.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/start.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/base.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/demo.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/ascii.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/huggingface.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/ocr.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/openai.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/sam.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/mixins/summary.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/naive.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/segment.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/stateful.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/vanilla.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/visual.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/strategies/visual_browser.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/utils.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/video.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/vision.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/visualize.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_linux.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_macos.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/window/_windows.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/permissions_in_macOS.md +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/poetry.lock +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/scripts/downloads.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/scripts/postinstall.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/setup.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/calculator.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/excel.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/sample_llc_1.pdf +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_emr_image.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_image_redaction_presidio.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/assets/test_image_redaction_privateai.png +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/conftest.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_anthropic.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_google.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/drivers/test_openai.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_comprehend_scrub.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_presidio_scrub.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/providers/test_private_ai_scrub.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/privacy/test_providers.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_browser.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_crop.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_crud.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_events.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_models.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_share.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_summary.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_utils.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_video.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/tests/openadapt/test_vision.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/legacy/workflows/release-and-publish.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/mkdocs.yml +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/__init__.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/cli.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/config.py +0 -0
- {openadapt-1.2.0 → openadapt-1.2.2}/openadapt/version.py +0 -0
- {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.
|
|
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:
|
|
223
|
+
### Core Approach: Trajectory-Conditioned Disambiguation
|
|
224
224
|
|
|
225
|
-
|
|
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
|
-
|
|
|
228
|
-
|
|
229
|
-
|
|
|
230
|
-
|
|
|
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
|
-
|
|
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:
|
|
167
|
+
### Core Approach: Trajectory-Conditioned Disambiguation
|
|
168
168
|
|
|
169
|
-
|
|
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
|
-
|
|
|
172
|
-
|
|
173
|
-
|
|
|
174
|
-
|
|
|
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
|
-
|
|
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** -
|
|
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. **
|
|
222
|
-
- Not: "
|
|
223
|
-
- But: "
|
|
224
|
-
- Proof:
|
|
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. **
|
|
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
|
-
|
|
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** |
|
|
264
|
-
| **
|
|
265
|
-
| **
|
|
266
|
-
| **
|
|
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
|
-
###
|
|
356
|
-
|
|
357
|
-
|
|
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
|
-
|
|
378
|
+
MIT licensed. Run locally, in the cloud, or hybrid.
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### 5.5 For Builders Section
|
|
362
382
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
Your data stays where you want it.
|
|
383
|
+
````
|
|
384
|
+
## Built for Builders
|
|
366
385
|
|
|
367
|
-
###
|
|
368
|
-
|
|
369
|
-
No
|
|
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
|
-
###
|
|
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.
|
|
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.
|
|
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
|
-
- "
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/607d1380b5ae_add_memorystat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openadapt-1.2.0 → openadapt-1.2.2}/legacy/openadapt/alembic/versions/98c8851a5321_add_audio_info.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|