OpenHands / OpenHands/software-agent-sdk

Declare agent and conversation lifecycle capabilities on base classes

Open
#4,974 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement ready-for-dev sdk typing
Dominant language
Python
Stars
1.1k
Forks
539
Avg merge
1d 19h
Merged PRs (30d)
137

Description

Parent tracking issue: #4905

Desired Behavior

Agent and conversation implementations should expose shared lifecycle capabilities through declared base-class fields, properties, or hooks rather than optional string-based attribute probing. This includes agent context/secrets, condenser LLM access, conversation execution status, persisted state autosave internals, cleanup flags, hook processors, and event transcript fields.

Use inheritance or abstract/default properties when a capability belongs to the hierarchy. Keep the touched-path refactor out of scope because #4053 already owns that work.

Scope

  • Agent base/implementation lifecycle contracts
  • Conversation state, local conversation cleanup, secret registry, and resume transcript access
  • Event and hook access that shares those contracts
  • Excludes LocalConversation._touched_rule_path, tracked by #4038/#4053

Acceptance Criteria

  • Shared agent/conversation lifecycle capabilities are declared on the appropriate base model or protocol.
  • Implementations use direct access without weakening frozen-model or persistence guarantees.
  • Existing cleanup, autosave, secret propagation, and transcript behavior has targeted regression coverage.
  • No changes overlap the affected-path implementation in #4053.
  • The forbidden dynamic-attribute baseline shrinks for every call removed by this issue.

This issue was created by an AI agent (OpenHands) on behalf of the user.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the agent and conversation base models or protocols and review tracking issue #4905 for the intended contracts. Trace the optional attribute probes covering secrets, lifecycle state, autosave, cleanup, hooks, and transcripts, while excluding LocalConversation._touched_rule_path covered by #4038/#4053. Done means shared capabilities are declared at the appropriate hierarchy level, behavior retains its persistence guarantees, targeted regressions pass, and the dynamic-attribute baseline shrinks.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design, devtools
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.