Skip to content

refactor: extract studio into its own repository#75

Merged
miguelgfierro merged 7 commits into
mainfrom
refactor/extract-studio
Apr 28, 2026
Merged

refactor: extract studio into its own repository#75
miguelgfierro merged 7 commits into
mainfrom
refactor/extract-studio

Conversation

@miguelgfierro
Copy link
Copy Markdown
Contributor

Summary

Studio (visual IDE, project runtime, scheduling, tunnel exposure, code generation, AI assistant) moves out of this repo and into its own:

fireflyframework/fireflyframework-agentic-studio

This PR removes everything Studio-related from `fireflyframework-agentic`. The Studio package (initial import) lands in the new repo separately.

What's removed (305 files, ~60k LOC)

  • `src/fireflyframework_agentic/studio/` — Python module.
  • `studio-frontend/` — SvelteKit SPA.
  • `studio-desktop/` — Tauri desktop bundle (frontend-dist + Cargo).
  • `scripts/build_studio.py`.
  • `tests/test_studio/` — ~30 test files.
  • Studio-only docs: `studio.md`, `studio-agents.md`, `api-reference.md`, `scheduling.md`, `tunnel-exposure.md`, `input-output-nodes.md`, `project-api.md`, `tutorial-bpm-pipeline.md`.
  • `examples/studio_launch.py`.
  • `.github/workflows/desktop.yml` (Tauri build pipeline).
  • `[studio]` extra in `pyproject.toml` (FastAPI, Uvicorn, Strawberry-GraphQL, APScheduler).
  • `firefly` CLI entry point (lives in studio).
  • `frontend-build` CI job and the studio artifact wiring in `test`/`typecheck`.
  • Studio-related .gitignore patterns.

What's preserved

`fireflyframework-agentic` is still a fully usable framework — agents, tools, prompts, reasoning, memory, observability, exposure (REST/queues), pipelines, embeddings, vectorstores. The Studio is now an optional installable layer on top.

Stacked on #74

This branch is built on top of `refactor/rename-to-agentic` (#74). It won't merge cleanly until that PR lands first. Once #74 merges, the diff here will narrow to just the studio extraction.

Migration for downstream consumers

```diff

  • pip install "fireflyframework-genai[studio]"
  • pip install fireflyframework-agentic-studio
  • from fireflyframework_genai.studio.cli import main
  • from fireflyframework_agentic_studio.cli import main
    ```

A migration guide will live in the studio repo's README.

Test plan

  • `pre-commit run --all-files` passes.
  • `ruff check src/ tests/ examples/` passes.
  • Smoke import: `import fireflyframework_agentic` works.
  • CI on this PR.
  • Studio repo populated and importable independently.

Comprehensive rebrand from genai to agentic:

- Python module:   fireflyframework_genai      -> fireflyframework_agentic
- PyPI package:    fireflyframework-genai      -> fireflyframework-agentic
- Class names:     FireflyGenAI*               -> FireflyAgentic*
                   (FireflyGenAIConfig, FireflyGenAIError)
- Env var prefix:  FIREFLY_GENAI_*             -> FIREFLY_AGENTIC_*
- REST factory:    create_genai_app()          -> create_agentic_app()
- Repo URLs:       github.com/.../genai        -> .../agentic
- Brand prose:     "Firefly GenAI"             -> "Firefly Agentic"

Mentions of "GenAI" / "genai-prices" that refer to the category or to the
external genai-prices library (e.g. GenAIPricesCostCalculator) are kept
as-is — they describe the field, not the brand.

Module-level __init__.py re-exports updated. Pre-commit, CI, install
scripts, and docs all use the new names.
Studio (visual IDE, code generation, AI assistant, project runtime,
scheduling, tunnel exposure) moves to a dedicated repository:
https://github.com/fireflyframework/fireflyframework-agentic-studio

Removed from this repo:
- src/fireflyframework_agentic/studio/  (entire Python module)
- studio-frontend/                       (SvelteKit SPA)
- studio-desktop/                        (Tauri desktop bundle)
- scripts/build_studio.py
- tests/test_studio/                     (~150 test files)
- docs/studio.md, studio-agents.md, api-reference.md, scheduling.md,
  tunnel-exposure.md, input-output-nodes.md, project-api.md,
  tutorial-bpm-pipeline.md
- examples/studio_launch.py
- .github/workflows/desktop.yml          (Tauri build pipeline)

pyproject changes:
- Removed [studio] extra (fastapi, uvicorn, strawberry-graphql, apscheduler)
- Removed [project.scripts] firefly entry point (lives in studio)
- Removed studio from [all] extra

CI changes:
- Removed frontend-build job
- test job no longer needs frontend-build artifact
- typecheck and test no longer install --extra studio

Build artifacts and Studio-specific patterns also removed from .gitignore.
This file was excluded from the bulk sed because it uses mock_genai
fixtures and patches fireflyframework_genai.embeddings.providers.google.genai
where 'genai' is the Google generativeai library alias. The exclusion
was too coarse — only the lowercase 'genai' identifier (Google's lib)
should have been preserved. The package-prefix 'fireflyframework_genai'
must still be renamed.

Caused CI failure on PR #74:
  ModuleNotFoundError: No module named 'fireflyframework_genai'
javier-alvarez
javier-alvarez previously approved these changes Apr 28, 2026
@miguelgfierro miguelgfierro dismissed javier-alvarez’s stale review April 28, 2026 09:30

The merge-base changed after approval.

@javier-alvarez javier-alvarez self-requested a review April 28, 2026 09:31
@miguelgfierro miguelgfierro merged commit e6d8e7c into main Apr 28, 2026
9 of 10 checks passed
@miguelgfierro miguelgfierro deleted the refactor/extract-studio branch April 28, 2026 09:32
miguelgfierro added a commit that referenced this pull request Apr 28, 2026
The release workflow still tried to build the SvelteKit frontend
(studio-frontend/) and run scripts/build_studio.py, both of which
were extracted to fireflyframework-agentic-studio in PR #75.

Drop the npm/setup-node steps and the build_studio.py call. The
release is now a pure Python build:

  uv build  ->  gh release create

Also change the tag trigger from 'v*' to '[0-9]+.[0-9]+.[0-9]+' so
it matches the unprefixed CalVer tags this repo uses (per the rule
'Never prefix git tags with v. Use 1.2.9, not v1.2.9' in CLAUDE.md).
miguelgfierro added a commit that referenced this pull request Apr 28, 2026
The release workflow tried to build the SvelteKit frontend
(studio-frontend/) and run scripts/build_studio.py, both removed by
PR #75. setup-node failed at cache-dependency-path:

  Some specified paths were not resolved, unable to cache dependencies.

Drop the npm/setup-node steps and the build_studio.py call. The release
is now a pure Python build:

  uv build  ->  gh release create

Tag trigger 'v*' is unchanged.
ancongui pushed a commit that referenced this pull request May 31, 2026
refactor: extract studio into its own repository
ancongui pushed a commit that referenced this pull request May 31, 2026
The release workflow tried to build the SvelteKit frontend
(studio-frontend/) and run scripts/build_studio.py, both removed by
PR #75. setup-node failed at cache-dependency-path:

  Some specified paths were not resolved, unable to cache dependencies.

Drop the npm/setup-node steps and the build_studio.py call. The release
is now a pure Python build:

  uv build  ->  gh release create

Tag trigger 'v*' is unchanged.
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.

2 participants