Skip to content

feat(agent): design agent lifecycle model - #105

Merged
Svagtlys merged 12 commits into
developfrom
feature/agent-lifecycle-model
Sep 27, 2026
Merged

Svagtlys merged 12 commits into
developfrom
feature/agent-lifecycle-model

Conversation

@Svagtlys

@Svagtlys Svagtlys commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Closes #25

Description

Implement the agent definition/instance split: definitions (agents) are persistent config with a definition-level active|paused gate, a model_binding and assignments; instances (agent_instances) are ephemeral rows binding one definition to one session, existing only while they can take turns — hard-deleted on destroy, carrying no context (the session transcript and the vault own all context).

Implementation

  • octave.db.types: AgentStatus, InstanceStatus, TagModelBinding/ExplicitModelBinding/ModelBinding (discriminated union), AgentAssignments
  • agents rework: model_binding JSON replaces model_tag (data migration copies old tags into tag-form bindings), new assignments JSON
  • agent_instances table: unique agent×session binding, RESTRICT on definition delete, CASCADE on session delete, idle default
  • upgrade(sync_url, revision=) supports seeding at older schema revisions (pins the model_tag data migration in tests)
  • AgentInstanceManager (octave.agent.instances) — single write path, VaultStore convention (caller-supplied AsyncSession, never commits):
    • spawn: gates on paused definitions, terminal sessions, duplicates, missing/malformed bindings; ensures Participant + membership (re-invite resets left_at)
    • begin_turn/end_turn: atomic idle→active turn mutex; pause re-check at turn start
    • destroy: plain delete (archival decoupled to the turn boundary); reconcile: resets stale active rows after unclean shutdown
    • resolve_model: fail-loud binding resolution with injected tag_lookup (tag→model lookup lands with Inference feat(ui): create responsive layout components and shared UI library #7)
  • Public surface exported from octave.agent; SDK quarantine (no openai/mcp imports) intact

References

  • Design doc: .agents/specs/2026-09-27-agent-lifecycle-model-design.md
  • Implementation plan: .agents/specs/2026-09-27-agent-lifecycle-model.md

Checklist

  • Tests passing (356 passed)
  • Lint clean (ruff + mypy strict)
  • Frontend builds (not applicable — no frontend changes)

@Svagtlys Svagtlys added this to the 1.0 — Initial Release milestone Sep 26, 2026
@Svagtlys Svagtlys added enhancement New feature or request area:agent Agent Manager labels Sep 26, 2026
@Svagtlys Svagtlys self-assigned this Sep 26, 2026
@Svagtlys
Svagtlys marked this pull request as ready for review September 27, 2026 14:08
@Svagtlys
Svagtlys merged commit cd7d088 into develop Sep 27, 2026
4 checks passed
@Svagtlys
Svagtlys deleted the feature/agent-lifecycle-model branch September 27, 2026 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent Agent Manager enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(agent): design agent lifecycle model

1 participant