Skip to content

Subagents: JS, UI#120

Merged
alex-w-99 merged 57 commits intomainfrom
new-agents-JS-UI
Feb 4, 2026
Merged

Subagents: JS, UI#120
alex-w-99 merged 57 commits intomainfrom
new-agents-JS-UI

Conversation

@alex-w-99
Copy link
Contributor

@alex-w-99 alex-w-99 commented Jan 30, 2026

Issues addressed:

Other updates:

  • New AbstractSpecialist base class with @specialist_tool decorator for declarative tool registration. Supports conversational and autonomous modes with finalize gating.
  • Added JSSpecialist for analyzing JavaScript sources, identifying dynamic values, and building JS-based operations.
  • Added InteractionSpecialist for browser DOM interactions (clicks, form fills, navigation). Uses interactions_data_store for managing captured user interactions.
  • Added runner scripts for standalone specialist execution (run_js_specialist.py, run_interaction_specialist.py).
  • Refactored js_utils.py with cleanup and improvements to JavaScript code generation.

Note: Existing specialist agents like NetworkSpyAgent do not yet inherit from AbstractSpecialist but should be migrated in the future.

Next steps:

  • Consider having an AbstractDataStore / AbstractDataLoader. Data stores share a lot of code. Additionally, methods like search_by_regex should be available in all data stores, but is currently only available in JSDataStore.

@alex-w-99 alex-w-99 linked an issue Feb 1, 2026 that may be closed by this pull request
@alex-w-99 alex-w-99 marked this pull request as ready for review February 2, 2026 22:41
@claude

This comment was marked as resolved.

@alex-w-99 alex-w-99 marked this pull request as draft February 3, 2026 21:21
@alex-w-99 alex-w-99 marked this pull request as ready for review February 3, 2026 22:39
@alex-w-99
Copy link
Contributor Author

@claude Review my PR please.

@claude

This comment was marked as resolved.

@claude

This comment was marked as resolved.

@dimavrem22
Copy link
Contributor

Screenshot 2026-02-03 at 10 37 59 PM Screenshot 2026-02-03 at 10 36 37 PM

looks like the interaction agent replies with a summary but not the structures result via finalize tool

@alex-w-99
Copy link
Contributor Author

looks like the interaction agent replies with a summary but not the structures result via finalize tool

Good catch, looks like this was just because the agent was getting confused due to the complexity of the output data model we expect/require of it. I've updated some prompts in commit 8969e4a and seems to work now.

@claude
Copy link

claude bot commented Feb 4, 2026

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

@claude
Copy link

claude bot commented Feb 4, 2026

Code Review

Found 1 CLAUDE.md import grouping violation in bluebox/llms/infra/js_data_store.py at line 14.

Issue: Import Grouping Violation

The third-party import import regex is placed between stdlib imports, violating CLAUDE.md's import grouping rule.

Location: bluebox/llms/infra/js_data_store.py:10-22

All stdlib imports should be grouped together, followed by a blank line, then third-party imports.

Current structure:

import fnmatch
import json
import threading

import regex  # third-party
from collections import Counter  # stdlib
from dataclasses import dataclass, field  # stdlib
from pathlib import Path  # stdlib
from typing import Any  # stdlib
from urllib.parse import urlparse  # stdlib

Correct structure:

import fnmatch
import json
import threading
from collections import Counter
from dataclasses import dataclass, field
from pathlib import Path
from typing import Any
from urllib.parse import urlparse

import regex

Copy link
Contributor

@dimavrem22 dimavrem22 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LG

@alex-w-99 alex-w-99 merged commit 038675e into main Feb 4, 2026
9 checks passed
@alex-w-99 alex-w-99 deleted the new-agents-JS-UI branch February 4, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LLMModel type alias is not callable at runtime

2 participants