Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
5933cd9
Separate explicit new-thread tags from parent-derived fork membership
trissim Oct 29, 2026
984d8f4
Collect required creation inputs through native command bindings
trissim Oct 29, 2026
f9d18ba
Keep native context edits distinct from complete command authorization
trissim Oct 29, 2026
ee7b547
Complete creation bindings through native field and presence owners
trissim Oct 29, 2026
89a4397
Leave child names unsupplied until creation form completion
trissim Oct 29, 2026
8c08089
Remove invalid trailing comma from pending context edits
trissim Oct 29, 2026
acf0a67
Keep native union members and derive their editor transactions
trissim Oct 29, 2026
7d3d6ac
Make unchosen a nominal member of editor selection
trissim Oct 29, 2026
502402a
Ask the value decoder directly for editor projections
trissim Oct 29, 2026
85a31ac
Remove absent editor defaults and reuse scalar admission
trissim Oct 30, 2026
f4f0750
Separate explicit new-thread tags from parent-derived fork membership
trissim Oct 29, 2026
51928ec
Collect required creation inputs through native command bindings
trissim Oct 29, 2026
5c66f0a
Keep native context edits distinct from complete command authorization
trissim Oct 29, 2026
b2f766f
Complete creation bindings through native field and presence owners
trissim Oct 29, 2026
d44eff3
Leave child names unsupplied until creation form completion
trissim Oct 29, 2026
a44c624
Remove invalid trailing comma from pending context edits
trissim Oct 29, 2026
6e53464
Keep native union members and derive their editor transactions
trissim Oct 29, 2026
d50cc18
Make unchosen a nominal member of editor selection
trissim Oct 29, 2026
7b139e1
Ask the value decoder directly for editor projections
trissim Oct 29, 2026
3b94c9b
Remove absent editor defaults and reuse scalar admission
trissim Oct 30, 2026
c96de47
Merge remote-tracking branch 'origin/work/commander-layout--P927' int…
trissim Oct 30, 2026
dde9bd0
Integrate current main while preserving pending fork input and declar…
trissim Oct 30, 2026
745e7e9
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
3d5cbac
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
5adaa97
Let native member selection own omitted editor arguments
trissim Oct 30, 2026
1e6e09c
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
f7ef4ac
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
1f74fa0
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
ce33201
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 30, 2026
2072c0d
Derive a pending binding's command from its context's declared command
trissim Oct 30, 2026
36eeb53
Merge remote-tracking branch 'origin/main' into HEAD
trissim Oct 30, 2026
c194d56
Assert the unsupplied tags field by its type, not a missing default
trissim Oct 30, 2026
efb40c5
Let CliCommand's declared default answer type stand in channel_targets
trissim Oct 30, 2026
8346986
Dispatch command bindings on the resolved target's type
trissim Oct 30, 2026
77eec13
Fold the fork commander-role check into the fork membership test
trissim Oct 30, 2026
bf9cee0
Merge remote-tracking branch 'origin/main' into cb-fix
trissim Oct 30, 2026
4c5cae2
Merge remote-tracking branch 'origin/main' into work/commander-layout…
trissim Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 3 additions & 24 deletions src/agent_comms/channel_targets.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@
if TYPE_CHECKING:
from .audience_manifest import AudiencedMessage
from .frozen_recipient import FrozenRecipient
from .catalog_document import CatalogAccess, CatalogDocument
from .catalog_document import CatalogDocument
from .channels import Channel
from .cli_command import CliCommand
from .cli_result import CliResult
from .comms import Comms
from .goal_management import Goals
from .historical_views import ChannelHistory, DMHistory, HistoryView
Expand Down Expand Up @@ -163,11 +162,6 @@ def available(self, snapshot: RegistrySnapshot) -> bool:
@abstractmethod
def resolve(self, snapshot: RegistrySnapshot, require_channel: Callable[[str], Channel]): ...

@abstractmethod
def bindings[C: CliCommand](
self, declaration: type[C], comms: Comms, channel: SurroundingChannel, resolved,
*, project: Checkout, snapshot: RegistrySnapshot, catalog: CatalogAccess,
) -> tuple[C, ...]: ...

def history_view(self, viewer: DisplayViewer, require_channel: Callable[[str], Channel],
channel: type[ChannelHistory], direct: type[DMHistory]) -> HistoryView:
Expand All @@ -178,7 +172,7 @@ def history_result(self, require_channel: Callable[[str], Channel], messages: tu
raise ValueError("History requires a #channel or DM peer.")

def contexts(
self, declaration: type[CliCommand[CliResult]], channel: ChannelSelection,
self, declaration: type[CliCommand], channel: ChannelSelection,
) -> tuple[SurroundingChannel, ...]:
return (NoChannel(),)

Expand Down Expand Up @@ -394,7 +388,7 @@ def history_result(self, require_channel: Callable[[str], Channel], messages: tu
return self.history_result_type.for_target(self.name, messages, has_older)

def contexts(
self, declaration: type[CliCommand[CliResult]], channel: ChannelSelection,
self, declaration: type[CliCommand], channel: ChannelSelection,
) -> tuple[SurroundingChannel, ...]:
return declaration.selection_channels(channel, self.name)

Expand All @@ -411,11 +405,6 @@ def resolve(self, snapshot: RegistrySnapshot, require_channel: Callable[[str], C
thread = snapshot.require(self.selected_name(snapshot))
return ResolvedThread(thread, snapshot.status(thread.name))

def bindings[C: CliCommand](
self, declaration: type[C], comms: Comms, channel: SurroundingChannel, resolved: ResolvedThread,
*, project: Checkout, snapshot: RegistrySnapshot, catalog: CatalogAccess,
) -> tuple[C, ...]:
return declaration.thread_bindings(comms, resolved.thread, resolved.status, channel, catalog=catalog)

def validate(self, message: Message) -> None:
if message.sender == self.name and message.type.conversation_message:
Expand Down Expand Up @@ -560,11 +549,6 @@ def resolve(self, snapshot: RegistrySnapshot, require_channel: Callable[[str], C
if channel.matches(thread.tags))
return ResolvedChannel(channel, members)

def bindings[C: CliCommand](
self, declaration: type[C], comms: Comms, channel: SurroundingChannel, resolved: ResolvedChannel,
*, project: Checkout, snapshot: RegistrySnapshot, catalog: CatalogAccess,
) -> tuple[C, ...]:
return declaration.channel_bindings(comms, resolved, project=project, snapshot=snapshot, catalog=catalog)

def validate(self, sender: Message | None = None):
from .channels import BuiltinChannelView
Expand Down Expand Up @@ -652,11 +636,6 @@ def destination_names(self) -> tuple[str, ...]:
def resolve(self, snapshot: RegistrySnapshot, require_channel: Callable[[str], Channel]):
return self.project

def bindings[C: CliCommand](
self, declaration: type[C], comms: Comms, channel: SurroundingChannel, resolved,
*, project: Checkout, snapshot: RegistrySnapshot, catalog: CatalogAccess,
) -> tuple[C, ...]:
return declaration.project_bindings(comms, resolved)


_TAG_CHARS = set("abcdefghijklmnopqrstuvwxyz0123456789-_")
Expand Down
Loading
Loading