OpenHands / OpenHands/software-agent-sdk
Declare agent and conversation lifecycle capabilities on base classes
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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