Skip to content

Sawra/runagent cloud support wip#71

Merged
sawradip merged 5 commits into
mainfrom
sawra/runagent_cloud_support_wip
Sep 25, 2025
Merged

Sawra/runagent cloud support wip#71
sawradip merged 5 commits into
mainfrom
sawra/runagent_cloud_support_wip

Conversation

@sawradip
Copy link
Copy Markdown
Contributor

@sawradip sawradip commented Sep 25, 2025

Summary by CodeRabbit

  • New Features
    • Faster, more reliable agent uploads with fingerprinting to detect duplicates, richer progress (including time remaining), and clearer results. Deployed agents are now saved locally.
    • CLI: unified framework selection with an interactive picker and improved guidance after init.
  • Bug Fixes
    • More reliable template initialization and release command behavior.
  • Documentation
    • Changelog updated for the latest release.
  • Chores
    • Version bumped to 0.1.23 across SDKs (Python, Go, Rust, TypeScript).
    • Release process refined for safer commit/tag/push sequencing.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Sep 25, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This PR introduces a versioned release across languages, refactors framework handling (introducing a Framework enum and CLI utilities), restructures agent upload with metadata-first and fingerprinting, adjusts server/framework integration, updates validation paths, and modifies release tooling and changelog. It also adds agent identity utilities and updates schema serialization.

Changes

Cohort / File(s) Summary
Release metadata and versions
CHANGELOG.md, pyproject.toml, runagent/__init__.py, runagent/__version__.py, runagent-ts/package.json, runagent-go/runagent/version.go, runagent-rust/runagent/Cargo.toml
Bumps versions to 0.1.23 (Python, TS, Go, Rust). Changelog updated for new release. Rust adds dependency dirs = "5.0". Note: runagent/__version__.py contains merge conflict markers while setting 0.1.23.
Release workflow
release.sh
Reorders release: generate changelog before tagging, commit changes with multiline message, push branch then tag, determine current branch dynamically, refine prompts and messaging.
CLI framework selection refactor
runagent/cli/commands.py, runagent/cli/utils.py
Replaces many boolean flags with decorator-generated framework options and centralized selection via Framework enum. Updates init signature and interactive selection logic; adds helpers add_framework_options, get_selected_framework.
Framework enum migration
runagent/utils/enums/framework.py, runagent/utils/enums.py
Adds new Framework enum with helpers (categorization, parsing, validation). Removes legacy enums (ResponseStatus, PythonicType, WebhookType) and FrameworkType alias.
Agent detection and validation
runagent/utils/agent.py, runagent/utils/schema.py
detect_framework now returns Framework. Adds validate_webhook_agent. RunAgentConfig.framework type becomes Framework; new to_dict serializes enum and datetime.
Server/framework integration
runagent/sdk/server/framework/__init__.py, runagent/sdk/server/local_server.py
get_executor now accepts Framework. Local server stores enum internally and serializes .value in responses/sync.
Upload flow overhaul
runagent/sdk/rest_client.py, runagent/sdk/deployment/remote.py, runagent/utils/agent_id.py, runagent/sdk/sdk.py
Upload flow now: upload metadata first, fingerprinting and local DB checks, then zip (named with truncated agent_id), enhanced progress, updated response handling via data. Removes metadata param from upload_agent; removes SDK detect_framework method; remote deployment stops sending framework metadata. Adds agent ID/fingerprint/metadata utilities.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant CLI as CLI (runagent)
  participant Utils as CLI Utils
  participant Enum as Framework Enum
  participant SDK as RunAgentSDK

  User->>CLI: runagent init [--framework flags | --interactive]
  CLI->>Utils: get_selected_framework(kwargs)
  alt flags specified
    Utils-->>CLI: Selected Framework (or UsageError on conflicts)
  else interactive and default
    CLI->>Enum: get_selectable_frameworks()
    CLI->>User: Prompt to choose framework
    User-->>CLI: Choice index
    CLI->>Enum: from_string / map to Framework
  end
  CLI->>SDK: initialize project (framework.value, template, path)
  SDK-->>CLI: Result
  CLI-->>User: Next steps and framework-specific hints
Loading
sequenceDiagram
  autonumber
  actor Dev as Developer
  participant SDK as RunAgentSDK
  participant RC as RestClient
  participant AID as Agent ID Utils
  participant DB as Local DB
  participant S as Server

  Dev->>SDK: upload_agent(folder_path)
  SDK->>RC: upload_agent(folder_path)
  RC->>AID: generate_agent_id(), get_agent_metadata()
  RC->>DB: Check fingerprint match
  alt identical agent found
    RC->>Dev: Prompt overwrite/create new
    Dev-->>RC: Choice
  end
  RC->>S: Upload metadata (agent_id)
  S-->>RC: {data: agent info}
  RC->>RC: _create_zip_from_folder(agent_id, folder)
  RC->>S: Upload zip (agent_id)
  S-->>RC: {data: file info/status}
  RC->>DB: Save deployment info
  RC-->>SDK: Upload result (includes fingerprint, endpoints)
  SDK-->>Dev: Success details
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

A bunny bumps the tags, hop-hop—0.1.23!
New enums in the meadow, frameworks dancing free.
Zips named by agents, fingerprints in tow,
Metadata first, then upload—off we go!
With carrots as progress bars, we squeak, “LGTM!” 🥕✨

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch sawra/runagent_cloud_support_wip

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7142276 and edc6446.

⛔ Files ignored due to path filters (1)
  • runagent-ts/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (20)
  • CHANGELOG.md (1 hunks)
  • pyproject.toml (3 hunks)
  • release.sh (1 hunks)
  • runagent-go/runagent/version.go (1 hunks)
  • runagent-rust/runagent/Cargo.toml (1 hunks)
  • runagent-ts/package.json (1 hunks)
  • runagent/__init__.py (1 hunks)
  • runagent/__version__.py (1 hunks)
  • runagent/cli/commands.py (5 hunks)
  • runagent/cli/utils.py (1 hunks)
  • runagent/sdk/deployment/remote.py (1 hunks)
  • runagent/sdk/rest_client.py (9 hunks)
  • runagent/sdk/sdk.py (0 hunks)
  • runagent/sdk/server/framework/__init__.py (2 hunks)
  • runagent/sdk/server/local_server.py (5 hunks)
  • runagent/utils/agent.py (5 hunks)
  • runagent/utils/agent_id.py (1 hunks)
  • runagent/utils/enums.py (0 hunks)
  • runagent/utils/enums/framework.py (1 hunks)
  • runagent/utils/schema.py (3 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sawradip sawradip merged commit b057239 into main Sep 25, 2025
1 of 2 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Dec 19, 2025
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.

1 participant