Files
actionbook__actionbook/packages/dify-plugin/PRIVACY.md
sen 2db938d519 feat(dify-plugin): v0.1.1 HTTP API migration and serverless hardening (#162)
* chore: align dify plugin manifest and privacy policy

* [packages/dify-plugin]refactor: replace hyperbrowser SDK with direct HTTP API

Remove hyperbrowser Python SDK dependency and use requests to call
Hyperbrowser REST API directly. This eliminates an extra dependency
that may not install cleanly in Dify Cloud's serverless runtime.

- providers/hyperbrowser.py: HTTP POST/PUT instead of SDK client
- pyproject.toml: drop hyperbrowser>=0.1.0 dependency
- requirements.txt: add explicit requirements file
- tests/test_providers.py: mock requests instead of SDK classes

* [packages/dify-plugin]feat: add HTML misroute guard and simplify tool error handling

Add utils/http_guard.py to detect when API responses return HTML
instead of expected text/JSON — a common symptom of ACTIONBOOK_API_URL
pointing to a non-Actionbook endpoint (e.g. Dify app API).

- Integrate HTML guard into search_actions, get_action_by_area_id, provider
- Simplify verbose error branches into concise messages
- Remove debug-level logging from hot paths
- Update all related tests with Content-Type headers and new assertions

* [packages/dify-plugin]refactor: lazy-load browser deps for serverless compatibility

Defer importing playwright and connection_pool until first browser
tool invocation. This allows search_actions and get_action_by_area_id
to work even when playwright binaries are unavailable (e.g. Dify
Cloud serverless runtime).

- tools/__init__.py: lazy __getattr__ for browser tool classes
- browser_create_session.py: thread-safe lazy pool import
- browser_operator.py: lazy import with stub exception fallbacks

* [packages/dify-plugin]fix: review fixes — dead code, lazy import, session recovery

- Remove unreachable except BaseException blocks in search_actions
  and get_action_by_area_id (dead code: only re-raised what it caught)
- Apply lazy connection_pool import in browser_stop_session, matching
  browser_create_session and browser_operator pattern for serverless
- Preserve provider_name/api_key on session recovery reconnect to
  prevent remote session leaks when browser_stop_session runs later
- Update tests accordingly

* [root]chore: use changeset for dify-plugin version bump

Revert manual 0.1.1 bump back to 0.1.0 and add a changeset file
so CI handles versioning through the standard two-phase flow.
Also extend sync-versions.js to run `uv lock` after updating
pyproject.toml to keep uv.lock in sync automatically.
2026-02-25 22:04:23 +08:00

2.0 KiB

Privacy Policy - Actionbook Dify Plugin

Overview

This policy describes what data the Actionbook Dify Plugin processes when tools are executed in Dify.

Information Processed

Depending on which tools are used, the plugin may process:

  • Search query text (for search_actions)
  • Area IDs (for get_action_by_area_id)
  • Cloud browser credentials and session data (for browser tools), including:
    • provider API key (e.g., Hyperbrowser API key)
    • session ID / WebSocket endpoint
    • optional profile_id used for browser state persistence
  • Website interaction data needed to perform browser actions (URL, selectors, typed text, snapshots/HTML/text outputs)

Third-Party Services

This plugin may communicate with:

  • Actionbook API (https://api.actionbook.dev) for action search and action detail lookup
  • Hyperbrowser API (when browser session tools are used) for cloud browser session lifecycle
  • Target websites that the workflow/agent navigates to via browser automation

Data Storage and Retention

  • The plugin code does not implement a standalone user database.
  • Runtime/session data may exist in Dify runtime context and/or cloud browser provider session state while a workflow is running.
  • If a stable profile_id is used, browser state (for example cookies/localStorage) can be persisted by the browser provider for reuse across sessions.
  • Actionbook service-side logging/retention is controlled by Actionbook service policy.

Logging

  • The plugin includes technical logging for debugging and error handling.
  • Logs may include limited operational context (for example query length, area ID, status code, or error category).
  • Secrets should not be intentionally printed in plaintext by plugin responses.

Security

  • Network communication uses HTTPS endpoints where supported by upstream services.
  • Credentials are handled through Dify plugin credential/tool parameter mechanisms.

Changes

Updates to this privacy policy will be reflected in plugin releases.

Last Updated: 2026-02-24