Skip to content

Explore typed resource URI bindings in Agent Spec #41

Description

@schickling-assistant

Decision from the tournament

Use direct named resource bindings in Agent Spec for the first contract. Do not add an Assignment or Focus
wrapper yet.

agent "dev" {
  resource "work" _tag="github-issue" uri="github-issue://example/project/123"
  resource "source" _tag="worktree" uri="worktree://example/project/change"
  resource "worklog" _tag="axe-worklog" uri="axe-worklog://example/project/123"
  resource "delivery" _tag="ding" uri="ding://example/dev"
}

The contract is:

  • uri is the byte-exact stable resource identity; v1 performs no normalization or alias resolution;
  • _tag selects the resource-type contract;
  • the KDL node name is the binding's semantic role;
  • an agent has zero or one direct resource named work;
  • no work binding means idle; and
  • handoff publishes A -> no holder -> B by removing A's binding before adding B's binding with the same URI.

The tagged resource union remains extensible. Resource types may have separate small contracts and custom
resolvers or renderers without making every type an Agent Spec primitive.

Ownership boundary

Agent Spec authors and publishers own canonical KDL publication and the durable typed resource graph. st2 owns
validation, reconciliation, runtime delivery, and the relaunch boundary. External systems remain authoritative
for their targets: GitHub for issues and pull requests, a secret manager for credentials, the PTY runtime for
sessions, and so on.

Changing resource metadata or bindings must not restart an otherwise healthy agent session. Runtime trajectory
changes use the explicit relaunch boundary tracked in
st2 PR #77.

Evidence

PR #45 publishes nine matched Codex cells:

Scenario Direct resources Focus control Assignment control
Cold discovery work selects the issue focus selects intent Assignment groups bindings
Hot retarget rebind/remove work rebind intent/remove focus replace/idle Assignment
Handoff/restart move work through no holder move focus through no holder move active Assignment through idle

All three treatments completed the intended exploratory behavior. Focus and Assignment showed no behavioral
advantage. The direct-resource treatment is smaller and makes idle and handoff observable from the resource
graph itself. The controls remain in the corpus so this conclusion can be challenged by future scenarios.

Deferred questions

  • required versus optional availability;
  • access intent and future access management;
  • shared catalog-level definitions versus direct bindings;
  • native folder-eval projection and runtime resolution;
  • IDE/TUI renderers per resource type; and
  • whether existing compact surfaces such as ding lower to resource bindings.

These are deliberately not encoded in the v1 envelope until a concrete scenario demonstrates the need.

Related work

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions