SIGN IN SIGN UP

feat(jetbrains): add a session right-click menu with sharing

Session actions were scattered or unreachable: stop lived only on the prompt
button, the worktree actions only on the branch dock, and comparing the branch
against its base only on the changes badge. Agent Manager worktree session tabs
hide the dock, so they had no branch actions at all.

Extend the existing Kilo.Session.ContextMenu group, which until now held only
$Copy. Stop, New Worktree, and Move to Worktree are referenced unchanged; the
rest are new.

The enabling change is context plumbing. StopSessionAction reads
PromptDataKeys.SEND and the worktree actions read ChatDockKeys.DOCK, but those
providers are siblings of the transcript rather than ancestors, so a right-click
in the transcript resolved neither and all three would have rendered invisible.
SessionUi already implements UiDataProvider and is an ancestor of the whole
session, so it now republishes both keys alongside the new SessionActions key.
Nearest-provider-wins keeps the local providers authoritative inside their own
subtrees, and they publish the same instances anyway.

Branch/PR status is also mirrored onto SessionUi and refreshBranch() no longer
bails when the dock is absent, which is what makes the pull request and diff
actions work in worktree session tabs. It skips readonly hosts, and backend
branchStatus is already TTL-cached, so the extra calls are cheap.

Sharing reuses the CLI's existing POST/DELETE /session/{id}/share endpoints, so
no CLI change or pin bump is needed. share.url rides on SessionDto, which means
the existing session.updated stream keeps the menu item's label live. The CLI
collapses every refusal (not signed in, sharing disabled by config) into a bare
HTTP 500, so the failure balloon has to name both causes.

Action text lives in KiloBundle under action.<id>.text so it stays translatable,
matching Kilo.Session.Open and Kilo.Restart.
K
kirillk committed
ba3613d9808adbfbe19dd9ab104fbd123b2a4d7e
Parent: 156fb64