feat(rkd): terse replies, always in the thread #10

Merged
dozken merged 1 commit from feat/terse-threaded-replies into main 2026-09-28 15:38:44 +02:00
Owner

What

The rkd plugin never posts a bare message in a channel any more, and writes short caveman-style text.

  • A channel reply without reply_to falls back to the message that triggered that chat. With no trigger for the chat, the call is refused (reply_to is required in a channel…). A DM is unchanged.
  • The server instructions and the reply tool description ask for terse output: answer first, no filler, no headings, no closing offer; code blocks and security or irreversible-action warnings stay plain.
  • Version 0.6.0, dist/server.js rebuilt (pnpm check:dist passes).

Real thread channels are not possible from a host token yet: create_thread takes a user login only. Tracked in nanoya-biz/rkd#1263. reply_to chains are the interim.

Before / after

Before (main's bridge.ts against the 3 new tests):

× threads a channel reply under the trigger when reply_to is left out
× refuses a channel reply that has no thread to go in      (expected undefined to be true: the bare reply was sent)
× does not borrow another chat's trigger as the thread
Tests  3 failed | 1 passed | 136 skipped (140)

After (this branch): Tests 140 passed (140), tsc --noEmit clean.

Existing tests that replied in a channel with no reply_to (upload, credentials refusal, server refusal) now pass one, since a bare channel reply is refused.

Not run

The integration suite (pnpm test:integration) is skipped here: it needs a running RKD server.

https://claude.ai/code/session_01JdQ22r4YPE2SewGS5QtV8j

## What The `rkd` plugin never posts a bare message in a channel any more, and writes short caveman-style text. - A channel `reply` without `reply_to` falls back to the message that triggered that chat. With no trigger for the chat, the call is refused (`reply_to is required in a channel…`). A DM is unchanged. - The server instructions and the `reply` tool description ask for terse output: answer first, no filler, no headings, no closing offer; code blocks and security or irreversible-action warnings stay plain. - Version 0.6.0, `dist/server.js` rebuilt (`pnpm check:dist` passes). Real thread channels are not possible from a host token yet: `create_thread` takes a user login only. Tracked in nanoya-biz/rkd#1263. `reply_to` chains are the interim. ## Before / after **Before** (`main`'s `bridge.ts` against the 3 new tests): ``` × threads a channel reply under the trigger when reply_to is left out × refuses a channel reply that has no thread to go in (expected undefined to be true: the bare reply was sent) × does not borrow another chat's trigger as the thread Tests 3 failed | 1 passed | 136 skipped (140) ``` **After** (this branch): `Tests 140 passed (140)`, `tsc --noEmit` clean. Existing tests that replied in a channel with no `reply_to` (upload, credentials refusal, server refusal) now pass one, since a bare channel reply is refused. ## Not run The integration suite (`pnpm test:integration`) is skipped here: it needs a running RKD server. https://claude.ai/code/session_01JdQ22r4YPE2SewGS5QtV8j
feat(rkd): terse replies, always in the thread
All checks were successful
CI / rkd-plugin (pull_request) Successful in 43s
58720d136a
A channel reply without reply_to used to land in the main channel. It now
falls back to the message that triggered the chat, and is refused when
there is none, so the App never posts a bare message in a channel. A DM is
unchanged.

The server instructions and the reply tool description now ask for short,
caveman-terse text: answer first, no filler, no headings, no closing offer;
code blocks and security or irreversible-action warnings stay in plain
prose.

Real thread channels stay out of reach: create_thread only takes a user
login, not a host token (nanoya-biz/rkd#1263). reply_to chains are the
interim.

Bumps the plugin to 0.6.0.

Claude-Session: https://claude.ai/code/session_01JdQ22r4YPE2SewGS5QtV8j
dozken merged commit 94a7afaf4f into main 2026-09-28 15:38:44 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rkd/claude-plugins!10
No description provided.