Files
ruvnet__ruflo/v3/@claude-flow/browser/tests/security-integration.test.ts
rUv 3471ee7c3f docs: Improve README organization with badges and section groups (#976)
* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:15:40Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:15:41Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:15:42Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:18:17Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:18:18Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:19:12Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:19:14Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:20:02Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:20:04Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:20:05Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:21:00Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:21:01Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:21:25Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:27:22Z
- Changes: 3 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:27:23Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:27:44Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:27:45Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:29:03Z
- Changes: 6 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:29:04Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:29:16Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:29:17Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:29:18Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:32:32Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:32:33Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:33:39Z
- Changes: 3 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:33:40Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:33:46Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:33:52Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:33:59Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:34:12Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:34:27Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:34:48Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:34:50Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:36:04Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:36:06Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:36:07Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:36:08Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:36:50Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:40:27Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:40:28Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:41:31Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:49:34Z
- Changes: 6 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:49:35Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:49:37Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:22Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:23Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:29Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:36Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:44Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:50:51Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:13Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:14Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:53Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:54Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:56Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:51:57Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:19Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:26Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:34Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:41Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:49Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:52:57Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:04Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:12Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:20Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:28Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:36Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:44Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:52Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:53:59Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:54:07Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:54:36Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:00Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:02Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:03Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:23Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:24Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:25Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T20:56:46Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:01:19Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:04:35Z
- Changes: 6 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:05:37Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:05:41Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:05:49Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:05:58Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:06:06Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:06:14Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:06:22Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:06:30Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:15:11Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:15:12Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:15:37Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:15:43Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:16:16Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:18:22Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:22:19Z
- Changes: 11 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:27:21Z
- Changes: 2 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:27:39Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:27:45Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:27:51Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:28:03Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:28:17Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:28:57Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:29:02Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:29:29Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:39:40Z
- Changes: 6 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:53:53Z
- Changes: 5 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:58:58Z
- Changes: 10 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T21:59:16Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:23:05Z
- Changes: 5 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:23:19Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:34:46Z
- Changes: 5 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:34:59Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:38:34Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:44:37Z
- Changes: 6 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:47:50Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:47:55Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:00Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:05Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:10Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:15Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:21Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:26Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:31Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:36Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:41Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:46Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:52Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:48:57Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:02Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:07Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:12Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:17Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:23Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:28Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:32Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:37Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:41Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:46Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:51Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:49:55Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:50:00Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T22:50:05Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:27:53Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:27:59Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:05Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:11Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:17Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:23Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:28Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:33Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:39Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:44Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:50Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:28:55Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Checkpoint: File edits

Automatic checkpoint created by Claude Code
- Branch: feature/agent-browser-integration
- Timestamp: 2026-01-20T23:29:07Z
- Changes: 1 file(s)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 18:32:48 -05:00

195 lines
6.9 KiB
TypeScript

/**
* @claude-flow/browser - Security Integration Tests
*/
import { describe, it, expect, beforeEach } from 'vitest';
import {
BrowserSecurityScanner,
getSecurityScanner,
isUrlSafe,
containsPII,
type SecurityConfig,
} from '../src/infrastructure/security-integration.js';
describe('BrowserSecurityScanner', () => {
let scanner: BrowserSecurityScanner;
beforeEach(() => {
scanner = new BrowserSecurityScanner();
});
describe('scanUrl', () => {
it('should pass safe HTTPS URLs', async () => {
const result = await scanner.scanUrl('https://example.com');
expect(result.safe).toBe(true);
expect(result.score).toBeGreaterThan(0.7);
});
it('should warn about HTTP URLs when requireHttps is enabled', async () => {
const strictScanner = new BrowserSecurityScanner({ requireHttps: true });
const result = await strictScanner.scanUrl('http://example.com');
expect(result.threats.some(t => t.type === 'insecure-protocol')).toBe(true);
});
it('should detect blocked domains', async () => {
const result = await scanner.scanUrl('https://bit.ly/abcd123');
expect(result.threats.some(t => t.type === 'blocked-domain')).toBe(true);
});
it('should detect suspicious TLDs', async () => {
const result = await scanner.scanUrl('https://suspicious-site.xyz');
expect(result.threats.some(t => t.type === 'phishing')).toBe(true);
});
it('should detect IP address URLs', async () => {
const result = await scanner.scanUrl('https://192.168.1.1/login');
expect(result.threats.some(t => t.type === 'suspicious-redirect')).toBe(true);
});
it('should detect phishing indicators in URL', async () => {
const result = await scanner.scanUrl('https://secure-login-verify.example.com');
expect(result.threats.some(t => t.type === 'phishing')).toBe(true);
});
it('should allow domains in allowedDomains list', async () => {
const allowedScanner = new BrowserSecurityScanner({
allowedDomains: ['bit.ly'],
});
const result = await allowedScanner.scanUrl('https://bit.ly/safe');
expect(result.threats.some(t => t.type === 'blocked-domain')).toBe(false);
});
});
describe('scanContent', () => {
it('should detect email addresses', () => {
const result = scanner.scanContent('Contact us at test@example.com for help');
expect(result.pii.some(p => p.type === 'email')).toBe(true);
});
it('should detect phone numbers', () => {
const result = scanner.scanContent('Call us at 555-123-4567');
expect(result.pii.some(p => p.type === 'phone')).toBe(true);
});
it('should detect SSNs', () => {
const result = scanner.scanContent('SSN: 123-45-6789');
expect(result.pii.some(p => p.type === 'ssn')).toBe(true);
});
it('should detect credit card numbers', () => {
const result = scanner.scanContent('Card: 4111-1111-1111-1111');
expect(result.pii.some(p => p.type === 'credit-card')).toBe(true);
});
it('should detect API keys', () => {
// API key pattern: sk- or sk_ followed by 20+ alphanumeric chars
const result = scanner.scanContent('API Key: sk_abcdefghij1234567890abc');
expect(result.pii.some(p => p.type === 'api-key')).toBe(true);
});
it('should add threat for sensitive PII', () => {
const result = scanner.scanContent('SSN: 123-45-6789, Card: 4111-1111-1111-1111');
expect(result.threats.some(t => t.type === 'data-exfiltration')).toBe(true);
});
it('should return safe for content without PII', () => {
const result = scanner.scanContent('This is just regular text content');
expect(result.pii.length).toBe(0);
expect(result.safe).toBe(true);
});
});
describe('validateInput', () => {
it('should detect SQL injection patterns', () => {
const result = scanner.validateInput("'; DROP TABLE users; --", 'username');
expect(result.threats.some(t => t.type === 'injection')).toBe(true);
});
it('should detect XSS patterns', () => {
const result = scanner.validateInput('<script>alert("xss")</script>', 'comment');
expect(result.threats.some(t => t.type === 'xss')).toBe(true);
});
it('should detect event handler XSS', () => {
const result = scanner.validateInput('<img src="x" onerror="alert(1)">', 'bio');
expect(result.threats.some(t => t.type === 'xss')).toBe(true);
});
it('should pass safe input', () => {
const result = scanner.validateInput('Hello, World!', 'message');
expect(result.safe).toBe(true);
});
});
describe('sanitizeInput', () => {
it('should escape HTML entities', () => {
const result = scanner.sanitizeInput('<script>alert("xss")</script>');
expect(result).not.toContain('<script>');
expect(result).toContain('&lt;');
expect(result).toContain('&gt;');
});
it('should remove script tags', () => {
const result = scanner.sanitizeInput('Hello <script>evil()</script> World');
expect(result).not.toContain('<script>');
});
it('should escape HTML entities', () => {
const result = scanner.sanitizeInput('<div onclick="evil()">click me</div>');
// The sanitizer escapes HTML entities (which also neutralizes event handlers)
expect(result).toContain('&lt;div');
expect(result).toContain('&gt;');
});
});
describe('maskPII', () => {
it('should mask email addresses', () => {
const result = scanner.maskPII('test@example.com', 'email');
expect(result).toMatch(/t\*+@example\.com/);
});
it('should mask phone numbers', () => {
const result = scanner.maskPII('5551234567', 'phone');
// The phone masking leaves the last 4 digits visible
expect(result.endsWith('4567')).toBe(true);
});
it('should mask SSNs', () => {
const result = scanner.maskPII('123-45-6789', 'ssn');
expect(result).toBe('***-**-6789');
});
it('should mask credit card numbers', () => {
const result = scanner.maskPII('4111111111111111', 'credit-card');
expect(result).toMatch(/\*+ 1111$/);
});
it('should mask API keys', () => {
const result = scanner.maskPII('sk_live_1234567890abcdefghij', 'api-key');
expect(result).toMatch(/^sk_live_\*+/);
});
it('should completely mask passwords', () => {
const result = scanner.maskPII('secretpassword', 'password');
expect(result).toBe('********');
});
});
});
describe('factory functions', () => {
it('getSecurityScanner should return scanner', () => {
const scanner = getSecurityScanner();
expect(scanner).toBeInstanceOf(BrowserSecurityScanner);
});
it('isUrlSafe should return boolean', async () => {
const result = await isUrlSafe('https://example.com');
expect(typeof result).toBe('boolean');
});
it('containsPII should detect PII', () => {
expect(containsPII('My email is test@example.com')).toBe(true);
expect(containsPII('Hello World')).toBe(false);
});
});