-
[OPIK-5307] [OPIK-5308] [FE] Add Agent Sandbox page (#5947)
发布于
2026-03-30 15:49:40 +00:00 - [OPIK-5307] [OPIK-5308] [FE] Add Agent Sandbox page with pairing flow and job execution
Implements the Agent Sandbox frontend page allowing developers to connect
their local agent to Opik via a local runner, test it with dynamic inputs,
and view execution results.Key features:
- Disconnected state with pair code command, countdown timer, and flow diagram
- Connected state with Input/Configuration tabs and dynamic agent input form
- Job creation and status polling with result display
- Integration with existing local-runners backend API (snake_case wire format)
- Shift+Enter keyboard shortcut for Run
- Feature toggle ready (TOGGLE_RUNNERS_ENABLED)
Implements OPIK-5307: Agent Sandbox - Empty State
Implements OPIK-5308: Agent Sandbox - Running AgentCo-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
- [OPIK-5307] [FE] Move AgentConfigurationEditView to pages-shared and restore config editor
Moves AgentConfigurationEditView, useAgentConfigurationSave, and
BlueprintDiffDialog to v2/pages-shared/agent-configuration/ to allow
reuse from the Agent Sandbox page without violating the no-cross-page-imports
dependency rule.Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
- [OPIK-5308] [FE] Fix input type coercion for agent params
Add coerceValue to properly convert form string values to their correct
types before sending to the backend. Handles Python types (str, int,
float, bool, dict, Optional) by parsing JSON for objects, Number() for
numerics, and null for empty Optional fields.Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
- [OPIK-5308] [FE] Revert config.yml and fix job creation mutation
- Revert config.yml default back to false (local-only change for testing)
- Extract job ID from Location header when response body is empty
- Add non-empty fallback for error toast message
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
- [OPIK-5307] [FE] Address PR review comments
- Rename poll constants to POLL_INTERVAL_WHILE_DISCONNECTED/CONNECTED
- Remove unwired "Save as new version" button from Configuration tab
- Use explicit !== undefined checks instead of truthiness for numbers
- Simplify staleTime to data.expires_in_seconds * 1000
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com
Co-authored-by: Claude Opus 4.6 (1M context) noreply@anthropic.com
下载附件