Skip to content

feat(compass-agent): org-management comms tools + spawn role/persona (RIG-2673) - #632

Draft
rigel-mintaka wants to merge 2 commits into
compass-server/rig-2724-org-mgmt-protofrom
compass-agent/rig-2673-org-mgmt-tools
Draft

feat(compass-agent): org-management comms tools + spawn role/persona (RIG-2673)#632
rigel-mintaka wants to merge 2 commits into
compass-server/rig-2724-org-mgmt-protofrom
compass-agent/rig-2673-org-mgmt-tools

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

Add the T6 TS tool-surface consuming compass-server's org-management gateway
arms (RIG-2673 T1, #628). Three new native comms tools plus required
role/persona args on the existing spawn tool.

  • comms_create_channel — create a channel (born open, ownerless); optional
    group_id, kind (channel/dm/group_dm → ChannelKind), member_account_ids seed.
  • comms_update_members — add/remove members and flip subscribe opt-in on a
    channel.
  • comms_create_channel_group — create a channel group; optional
    parent_group_id, visibility (owner/shared → ChannelGroupVisibility).
  • agents_spawn_peer — role and persona now REQUIRED (non-blank) tool args,
    threaded into SpawnPeerRequest. Set-at-creation-only: a spawn onto an existing
    handle keeps the stored role/persona. persona is the peer's stable working
    context, not per-issue detail.

All three comms tools are approval: "write", mirror the comms_post_message
execute/guard shape (protocol-violation guard on result-case mismatch,
in-band CommsCallError → thrown tool failure), map string params onto their
proto enums at construction, and render server values through the render-guard
attr/flat split. The reused CreateChannelRequest/UpdateChannelMembersRequest/
CreateChannelGroupRequest carry no client_request_id, so none is sent (the
envelope callId still flows); SpawnPeerRequest keeps its idempotency key.

Barrel (compassv1.ts) re-exports the new payload schemas + enums. Tests cover
each tool's wire shape, enum mapping, injection-guard render, and required-field
rejection; the native-tool count asserts move 5→8 comms / 17→20 total.

Co-authored-by: Matt Wilkinson matt@rigel.build

…(RIG-2673)

Add the T6 TS tool-surface consuming compass-server's org-management gateway
arms (RIG-2673 T1, #628). Three new native comms tools plus required
role/persona args on the existing spawn tool.

- `comms_create_channel` — create a channel (born open, ownerless); optional
  group_id, kind (channel/dm/group_dm → ChannelKind), member_account_ids seed.
- `comms_update_members` — add/remove members and flip subscribe opt-in on a
  channel.
- `comms_create_channel_group` — create a channel group; optional
  parent_group_id, visibility (owner/shared → ChannelGroupVisibility).
- `agents_spawn_peer` — role and persona now REQUIRED (non-blank) tool args,
  threaded into SpawnPeerRequest. Set-at-creation-only: a spawn onto an existing
  handle keeps the stored role/persona. persona is the peer's stable working
  context, not per-issue detail.

All three comms tools are `approval: "write"`, mirror the `comms_post_message`
execute/guard shape (protocol-violation guard on result-case mismatch,
in-band CommsCallError → thrown tool failure), map string params onto their
proto enums at construction, and render server values through the render-guard
`attr`/`flat` split. The reused CreateChannelRequest/UpdateChannelMembersRequest/
CreateChannelGroupRequest carry no client_request_id, so none is sent (the
envelope callId still flows); SpawnPeerRequest keeps its idempotency key.

Barrel (compassv1.ts) re-exports the new payload schemas + enums. Tests cover
each tool's wire shape, enum mapping, injection-guard render, and required-field
rejection; the native-tool count asserts move 5→8 comms / 17→20 total.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@linear-code

linear-code Bot commented Aug 25, 2026

Copy link
Copy Markdown

RIG-2673

@rigel-mintaka rigel-mintaka changed the title feat(proto): org-management comms + spawn arms for agent gateway (RIG-2673) feat(compass-agent): org-management comms tools + spawn role/persona (RIG-2673) Aug 25, 2026
@rigel-mintaka
rigel-mintaka changed the base branch from main to compass-server/rig-2724-org-mgmt-proto August 25, 2026 23:17
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://compass-agent-rig-2673-org-m.compass-eng-docs.pages.dev

Deployed from compass-agent/rig-2673-org-mgmt-tools at 35250c0.

Changed pages:

…st (RIG-2673)

Review-fix child for PR #632 (T6 org-management tools). Two low findings,
both mechanical, zero production-behavior change.

- L1: three comments described role/persona as "proto3-optional strings".
  They are plain proto3 `string` fields with no field presence (unset is
  indistinguishable from ""), which is exactly why presence is enforced at
  the tool. Corrected the wording at all three sites (lifecycle.ts schema
  comment, lifecycle.ts execute comment, lifecycle.test.ts test comment).
- L2: create_channel_group renders flat(group.name), the same free-text
  injection surface as create_channel, but had no newline-injection
  reddening test. Added one mirroring the create_channel case.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant