@kynver-app/runtime 0.2.154 → 0.2.156

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -89,7 +89,7 @@ doctor runner-install | node-runtime | local-store | context-envelope | runtime-
89
89
  report-bug [--json] [--message TEXT] [--skip-doctor]
90
90
  browser status | install [--deps] [--force]
91
91
  agents status [--json] | setup hermes|openclaw|claude-code|grok-bot [--dry-run]
92
- tab post --conversation <id> [--file <path>]... [--key <k>] <text|-|@file>
92
+ tab post --conversation <id> [--file <path>]... [--key <k>] [--needs-you] <text|-|@file>
93
93
  tab adopt-hermes-session --engine hermes --conversation <id> --session <id> [--source telegram] [--chat <id>] [--force] [--no-note] | --release | --status
94
94
  hermes cron-forward [--once] [--dry-run] [--backfill <hours>] [--status] [--json]
95
95
  ```
@@ -108,7 +108,24 @@ Kynver chat can open a tab for each agent you run on this computer: your Hermes
108
108
 
109
109
  **One Hermes brain for Telegram and the tab.** `kynver tab adopt-hermes-session --conversation <Main id> --session <Telegram session id>` makes that tab conversation continue the Hermes session you talk to on Telegram (find the id with `hermes sessions list`). The daemon then follows the chat's session when Hermes rotates it, and holds a tab message for up to 10 minutes while a Telegram reply is still running in the same session (`KYNVER_HERMES_ADOPT_HOLD=off` turns the wait off). `--status` lists what is shared; `--release` stops following. It changes only `~/.kynver/agent-tab-sessions.json` and `~/.kynver/hermes-session-adoptions.json`, never Hermes' own config.
110
110
 
111
- **Updates about work go to the chat that started it.** Each tab message tells the agent which Kynver conversation it is in: Hermes and OpenClaw get a line in the turn's system note (and an `X-Kynver-Conversation` header); Claude Code gets `KYNVER_CONVERSATION` (and `KYNVER_AGENT_TAB_ENGINE`) in its environment. When work started there finishes, fails, needs you or opens a PR, the agent posts back with `kynver tab post --conversation <id> "PR is green"` (`--file <path>` attaches files, big ones are uploaded first; `-` reads the text from stdin, `@notes.md` from a file; the same `--key` never posts twice). It defaults to `$KYNVER_CONVERSATION` and refuses with neither — it never falls back to whatever conversation is open. Kynver tasks created with `originConversationId` post their own finished / failed / needs-you / PR updates into that conversation automatically.
111
+ **Updates about work go to the chat that started it.** Each tab message tells the agent which Kynver conversation it is in: Hermes and OpenClaw get a line in the turn's system note (and an `X-Kynver-Conversation` header); Claude Code gets `KYNVER_CONVERSATION` (and `KYNVER_AGENT_TAB_ENGINE`) in its environment. When work started there finishes, fails, needs you or opens a PR, the agent posts back with `kynver tab post --conversation <id> "PR is green"` (`--file <path>` attaches files, big ones are uploaded first; `-` reads the text from stdin, `@notes.md` from a file; the same `--key` never posts twice). It defaults to `$KYNVER_CONVERSATION` and refuses with neither — it never falls back to whatever conversation is open. For Hermes the post goes **silently to the updates tab** with the originating chat kept as a link; it stays in the chat only with `--needs-you` (MCP `needsUser: true`) or text starting `ACTION NEEDED`. Kynver tasks created with `originConversationId` post their own finished / failed / needs-you / PR updates into that conversation automatically.
112
+
113
+ ## Claude when Kynver runs in the background
114
+
115
+ On a Mac Kynver can start at sign-in (a LaunchAgent), with no Terminal and a bare `PATH`. Kynver then:
116
+
117
+ - finds `claude` by itself (Homebrew, `~/.local/bin`, `~/.claude/local`, nvm, volta) and remembers the path in `~/.kynver/claude-bin.json`;
118
+ - gives `claude` the `PATH` and `HOME` it needs, and adds both to the LaunchAgent plist it was started from if they are missing (a `.bak` copy is kept; it takes effect at the next restart);
119
+ - renews an expired Claude sign-in by running `claude` headless, so nobody has to open Claude on the Mac;
120
+ - says so in Kynver chat, in plain words, when Claude is missing or signed out.
121
+
122
+ Only if the Mac's keychain will not let the background service read Claude's sign-in (Kynver chat says so), do this once on that Mac:
123
+
124
+ 1. Open Terminal and run `claude setup-token`. Sign in in the browser when it asks, then copy the token it prints.
125
+ 2. In Terminal run `kynver secrets set CLAUDE_CODE_OAUTH_TOKEN` and paste the token at the hidden prompt.
126
+ 3. Restart Kynver (`kynver update` restarts it, or restart the Mac).
127
+
128
+ The token lives in Kynver's encrypted secrets vault, lasts about a year, and needs no keychain.
112
129
 
113
130
  ## Worker providers
114
131