You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clients driving the main transcript from the transcript protocol (kimi-code-app #279 onward) need the daemon's prompt entities (live prompt.upsert ops + the prompts field of the transcript read) to reconcile their optimistic user bubbles. That capability only exists since #3102 — older daemons never broadcast prompt entities, so a new client connected to an old daemon renders every sent message twice for the whole turn.
The app's migration plan explicitly decided not to build old-daemon fallbacks — but to surface the skew loudly instead of silently misbehaving. That requires the daemon to advertise the capability so clients can detect its absence.
Change
Add transcript_prompts: true to the capabilities object of GET /api/v1/meta (route + wire schema). The flag is additive: older clients ignore unknown capability keys.
A client that requires prompt entities can then warn clearly ("server too old") when the key is absent, instead of showing duplicated messages.
Tests
New case in packages/kap-server/test/meta.test.ts asserting the capability is advertised.
pnpm --filter @moonshot-ai/kap-server typecheck, repo check-no-comments, and oxlint on the touched packages all pass.
No changeset: internal protocol surface, not user-perceivable per the gen-changesets rules.
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Superseded by the general version-skew approach: instead of per-feature capability flags, prevent the skew from occurring (dev loop now rebuilds+restarts the embedded server on daemon source changes) and, for external servers, detect it generically via build identity rather than one flag per contract.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Clients driving the main transcript from the transcript protocol (kimi-code-app #279 onward) need the daemon's prompt entities (live
prompt.upsertops + thepromptsfield of the transcript read) to reconcile their optimistic user bubbles. That capability only exists since #3102 — older daemons never broadcast prompt entities, so a new client connected to an old daemon renders every sent message twice for the whole turn.The app's migration plan explicitly decided not to build old-daemon fallbacks — but to surface the skew loudly instead of silently misbehaving. That requires the daemon to advertise the capability so clients can detect its absence.
Change
Add
transcript_prompts: trueto thecapabilitiesobject ofGET /api/v1/meta(route + wire schema). The flag is additive: older clients ignore unknown capability keys.A client that requires prompt entities can then warn clearly ("server too old") when the key is absent, instead of showing duplicated messages.
Tests
packages/kap-server/test/meta.test.tsasserting the capability is advertised.pnpm --filter @moonshot-ai/kap-server typecheck, repocheck-no-comments, and oxlint on the touched packages all pass.No changeset: internal protocol surface, not user-perceivable per the gen-changesets rules.