59 lines
2.4 KiB
Java
59 lines
2.4 KiB
Java
package dev.ltms.bridged.peer;
|
|
|
|
/**
|
|
* Declared capabilities of a {@link PeerLauncher}. The protocol is the union across all
|
|
* configured launchers; a verb invoked against a peer that lacks the capability returns a clean
|
|
* "unsupported for this peer" rather than a crash. Capabilities keep the protocol honest as peers
|
|
* diversify and prevent the core from assuming "every peer is a Claude in a worktree."
|
|
*/
|
|
public enum Capability {
|
|
|
|
/**
|
|
* The peer supports {@code bridge_ask} rendezvous — pausing its delegated turn to ask
|
|
* the primary a question, then resuming once answered. All Claude Code peers support this.
|
|
*/
|
|
MID_TURN_ASK,
|
|
|
|
/**
|
|
* The peer can open its own PR at the end of an implementation turn (CB-302). Opt-in per
|
|
* profile: granted only when the profile carries a git-forge token ({@code gitTokenEnv}).
|
|
*/
|
|
SELF_PR,
|
|
|
|
/**
|
|
* The peer can run inside a provisioned isolated git worktree. All CLI-based peers support
|
|
* this since their cwd is set at spawn time.
|
|
*/
|
|
WORKTREE,
|
|
|
|
/**
|
|
* The peer can discard its current conversation context without starting a delegated bridge
|
|
* turn. The command or API used to do that is adapter-specific.
|
|
*/
|
|
CONTEXT_RESET,
|
|
|
|
/**
|
|
* The spawner can reconcile orphaned peers on boot — workers that outlived a prior daemon
|
|
* process and whose pane ids died with it (CB-117). Claude Code over herdr supports this
|
|
* via name-based matching against the herdr agent list.
|
|
*/
|
|
ORPHAN_REAP,
|
|
|
|
/**
|
|
* The peer surfaces the bridge's logical name ({@link SpawnRequest#sessionName()}) in its own
|
|
* UI at spawn — e.g. Claude Code's {@code -n} display name, which shows in the prompt box, the
|
|
* {@code /resume} picker, and the terminal title. This is what lets an operator tell the
|
|
* bridge's worker apart from a user's own session in the same terminal after a restart.
|
|
*/
|
|
SESSION_NAME,
|
|
|
|
/**
|
|
* The peer can be relaunched onto a prior conversation via that conversation's own session id
|
|
* ({@link SpawnRequest#resumeSessionId()}) — e.g. Claude Code's {@code -r}, which adopts the id
|
|
* as the agent's own identity rather than starting a new conversation. A launcher that declares
|
|
* this mints/resolves that id at spawn and exposes it on the returned
|
|
* {@link PeerHandle#agentSessionId()}, so a later resume addresses the same conversation.
|
|
*/
|
|
SESSION_RESUME
|
|
}
|