Skip to content

feat(cave): add conversational control surface for the mutation authority - #81

Open
CompleteDotTech wants to merge 1 commit into
OpenCoven:mainfrom
CompleteDotTech:recreate/conversational-control-42
Open

feat(cave): add conversational control surface for the mutation authority#81
CompleteDotTech wants to merge 1 commit into
OpenCoven:mainfrom
CompleteDotTech:recreate/conversational-control-42

Conversation

@CompleteDotTech

Copy link
Copy Markdown
Member

Recreated from CompleteDotTech/sdk#6 against current upstream main (66edd4d). The original fork branch was stacked on the release-preparation branch; this recreation carries only the conversational-control delta. The fork-only runner bootstrap was omitted.

Advances #42 with the SDK-owned typed create/send/retry/stop/operation/event-stream surface, one-shot dispatch, operation-ID error propagation, bounded resumable streams, and explicit reconcile_required reload semantics. Cave remains the executor and canonical owner. The authoritative fixture currently declares no mutation routes, so transport methods remain optional and report unsupported_operation; no speculative paths or raw transport escape hatches are added.

Merge-order context remains #76 security review, #79 release preparation, then this tier; no release authorization or external mutation is implied.

Validation: focused conversation-control, stream, and public-contract tests pass 69/69 locally; the source fork PR's full Node 24.18.1 verification passed.

…rity

Implement the SDK-owned half of the approved conversational-control design
(docs/superpowers/specs/2026-08-28-sdk-conversational-control-design.md):

- typed create/send/retry requests with one caller-visible operation UUID,
  validated against the existing Client v1 36-character UUID contract and
  normalized to the lowercase idempotency key form;
- non-content operation records, create/send result envelopes, and a single
  event translator shared by initial and resumed streams (contiguity,
  duplicate suppression, terminal-sequence refusal, reconcile reasons);
- six CaveClient methods backed by optional CaveTransport methods: create,
  send, retry, read, stream, stop - one-shot dispatch, no automatic replay
  after ambiguous transport completion, operation ID attached to every
  post-acceptance error, abort closes the read without Stop or resend;
- one total stream budget across long polls; duplicate suppression at or
  below the accepted cursor; reconcile_required exposed as a reload
  instruction with its reason.

Upstream-contract gap (stated, not invented): the five Client v1 operations
(conversations.create, messages.send, operations.read, operations.events,
operations.stop) are not declared by the authoritative fixture pinned at Cave
4adc97b1, so no transport binding or route path ships; every call reports
unsupported_operation until the producer contract lands and
pnpm sync:contracts imports it. Private-CLI streaming renderers follow in a
separate PR per the design's PR plan.
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