switchroom 0.13.8 → 0.13.9

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.
@@ -47314,8 +47314,8 @@ var {
47314
47314
  } = import__.default;
47315
47315
 
47316
47316
  // src/build-info.ts
47317
- var VERSION = "0.13.8";
47318
- var COMMIT_SHA = "bb713414";
47317
+ var VERSION = "0.13.9";
47318
+ var COMMIT_SHA = "b3a077a6";
47319
47319
 
47320
47320
  // src/cli/agent.ts
47321
47321
  init_source();
@@ -48766,11 +48766,13 @@ function buildWorkspaceContext(args) {
48766
48766
  There is a real person on the other end. Every turn should feel like
48767
48767
  messaging a capable colleague \u2014 not a tool emitting output. Five beats:
48768
48768
 
48769
- 1. **Acknowledge first.** On any turn that needs real work \u2014 a file
48770
- read, a search, a command \u2014 your FIRST action is a short \`reply\`
48771
- in your own voice ("on it \u2014 checking now"), before you start. Skip
48772
- it only when the whole answer is one sentence you can give straight
48773
- away.
48769
+ 1. **Acknowledge first.** Unless your whole reply is a single short
48770
+ sentence you can send right now, your FIRST action this turn is a
48771
+ brief \`reply\` in your own voice \u2014 "on it", "good question, one
48772
+ sec", "let me dig in" \u2014 before any tool call and before you
48773
+ compose the full answer. This holds even for a pure-thinking
48774
+ answer: if it will run to a paragraph, ack first. It is the line
48775
+ between a colleague and a black box.
48774
48776
  2. **Then go quiet and work.** Heads-down is correct \u2014 do NOT narrate
48775
48777
  every tool call. A typing indicator runs automatically while you
48776
48778
  work; you do not maintain it.
@@ -49485,7 +49487,7 @@ function buildSettingsHooksBlock(p) {
49485
49487
  }
49486
49488
  ] : [];
49487
49489
  const useHotReloadStable = agentConfig.channels?.telegram?.hotReloadStable === true;
49488
- const turnPacingDirective = "<turn-pacing>You are messaging a human. First action this turn: if " + "answering needs any tool call (a file read, a search, a command), " + "send a SHORT acknowledgement via the reply tool with " + "disable_notification true BEFORE the first tool call. Then work; " + "surface meaningful progress in human prose at real milestones; hand " + "back any sub-agent findings in your own voice; deliver the answer. " + "Skip the opening ack only for a one-sentence answer you can give " + "immediately.</turn-pacing>";
49490
+ const turnPacingDirective = "<turn-pacing>You are messaging a human in a chat. FIRST action " + "this turn: unless your whole reply is a single short sentence you " + "can send right now, call the reply tool with a brief " + "acknowledgement in your own voice (disable_notification true) \u2014 " + 'examples: "on it", "good question \u2014 one sec", "let me dig in" \u2014 ' + "BEFORE any other tool call and BEFORE composing the full answer. " + "This applies even when no tool call is needed: if the answer will " + "run to a paragraph, ack first. It is a real beat, not filler \u2014 " + "the line between a colleague and a black box. Then do the work; " + "surface meaningful progress in human prose at genuine milestones; " + "hand back any sub-agent findings in your own voice; deliver the " + "answer. Do not acknowledge a trivial one-liner, and never " + "acknowledge twice.</turn-pacing>";
49489
49491
  const switchroomUserPromptSubmit = [
49490
49492
  ...useHotReloadStable ? [
49491
49493
  {
@@ -49710,11 +49712,13 @@ function reconcileAgent(name, agentConfigRaw, agentsDir, telegramConfig, switchr
49710
49712
  There is a real person on the other end. Every turn should feel like
49711
49713
  messaging a capable colleague \u2014 not a tool emitting output. Five beats:
49712
49714
 
49713
- 1. **Acknowledge first.** On any turn that needs real work \u2014 a file
49714
- read, a search, a command \u2014 your FIRST action is a short \`reply\`
49715
- in your own voice ("on it \u2014 checking now"), before you start. Skip
49716
- it only when the whole answer is one sentence you can give straight
49717
- away.
49715
+ 1. **Acknowledge first.** Unless your whole reply is a single short
49716
+ sentence you can send right now, your FIRST action this turn is a
49717
+ brief \`reply\` in your own voice \u2014 "on it", "good question, one
49718
+ sec", "let me dig in" \u2014 before any tool call and before you
49719
+ compose the full answer. This holds even for a pure-thinking
49720
+ answer: if it will run to a paragraph, ack first. It is the line
49721
+ between a colleague and a black box.
49718
49722
  2. **Then go quiet and work.** Heads-down is correct \u2014 do NOT narrate
49719
49723
  every tool call. A typing indicator runs automatically while you
49720
49724
  work; you do not maintain it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchroom",
3
- "version": "0.13.8",
3
+ "version": "0.13.9",
4
4
  "description": "Run Claude Code 24/7 on your Claude Pro/Max subscription over Telegram. Open-source alternative to OpenClaw and NanoClaw — no API keys.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -5,7 +5,7 @@ Telegram is a chat — replies should feel like one, not a terminal dump or a tr
5
5
  **Every turn that responds to a user message MUST end with a `reply` (or `stream_reply` with `done=true`).** The user is on Telegram — they don't see your CLI output, tool-use trace, or inline thinking. The ONLY path for words to reach them is an MCP tool call. If you have a final answer, send it via `reply`. The text in your terminal is not the conversation.
6
6
 
7
7
  **Conversational pacing — a human is on the other side.** Match the rhythm of a capable colleague messaging you back. Five beats:
8
- - **1 · Acknowledge first.** Your first action on any turn that needs real work a file read, a search, a command — is a short one-liner via `reply`, persona voice, sent fast (`disable_notification: true`): *"on it — checking now"*. Skip it only when the whole answer is one sentence you can give immediately (*"what's 2+2"*). This is a beat, not filler — it's the line between a colleague and a black box.
8
+ - **1 · Acknowledge first.** Unless your whole reply is a single short sentence you can send right now, your first action is a short one-liner via `reply`, persona voice, sent fast (`disable_notification: true`): *"on it — checking now"*. This holds whether the work ahead is a tool call or a paragraph of pure reasoning — if the answer will run long, ack *before* you compose it. Skip the ack only for an immediate one-sentence answer (*"what's 2+2"*). This is a beat, not filler — it's the line between a colleague and a black box.
9
9
  - **2 · Then go quiet and work.** Heads-down is right — do **not** narrate every tool call. A typing indicator runs for you automatically; you don't keep it alive.
10
10
  - **3 · Surface meaningful progress** at genuine inflection points — a hard step finished, a blocker, a pivot, dispatching a sub-agent, a notably slow wait, a finding worth knowing now. One short `reply`, `disable_notification: true` (no mid-turn ping).
11
11
  - **4 · Hand back delegations with synthesis.** When a sub-agent reports back, re-enter in your own voice — what it found, what you're doing next (*"reviewer flagged the auth gap; fixing it now"*). Never let its raw report stand as your reply.
@@ -42,7 +42,7 @@ Telegram is a chat — replies should feel like one, not a terminal dump or a tr
42
42
  **Every turn that responds to a user message MUST end with a `reply` (or `stream_reply` with `done=true`).** The user is on Telegram — they don't see your CLI output, tool-use trace, or inline thinking. The ONLY path for words to reach them is an MCP tool call. If you have a final answer, send it via `reply`. The text in your terminal is not the conversation.
43
43
 
44
44
  **Conversational pacing — a human is on the other side.** Match the rhythm of a capable colleague messaging you back. Five beats:
45
- - **1 · Acknowledge first.** Your first action on any turn that needs real work a file read, a search, a command — is a short one-liner via `reply`, persona voice, sent fast (`disable_notification: true`): *"on it — checking now"*. Skip it only when the whole answer is one sentence you can give immediately (*"what's 2+2"*). This is a beat, not filler — it's the line between a colleague and a black box.
45
+ - **1 · Acknowledge first.** Unless your whole reply is a single short sentence you can send right now, your first action is a short one-liner via `reply`, persona voice, sent fast (`disable_notification: true`): *"on it — checking now"*. This holds whether the work ahead is a tool call or a paragraph of pure reasoning — if the answer will run long, ack *before* you compose it. Skip the ack only for an immediate one-sentence answer (*"what's 2+2"*). This is a beat, not filler — it's the line between a colleague and a black box.
46
46
  - **2 · Then go quiet and work.** Heads-down is right — do **not** narrate every tool call. A typing indicator runs for you automatically; you don't keep it alive.
47
47
  - **3 · Surface meaningful progress** at genuine inflection points — a hard step finished, a blocker, a pivot, dispatching a sub-agent, a notably slow wait, a finding worth knowing now. One short `reply`, `disable_notification: true` (no mid-turn ping).
48
48
  - **4 · Hand back delegations with synthesis.** When a sub-agent reports back, re-enter in your own voice — what it found, what you're doing next (*"reviewer flagged the auth gap; fixing it now"*). Never let its raw report stand as your reply.
@@ -47741,11 +47741,11 @@ function sweepStaleTurnActiveMarker(stateDir, opts) {
47741
47741
  }
47742
47742
 
47743
47743
  // ../src/build-info.ts
47744
- var VERSION = "0.13.8";
47745
- var COMMIT_SHA = "bb713414";
47746
- var COMMIT_DATE = "2026-05-22T10:15:33+10:00";
47744
+ var VERSION = "0.13.9";
47745
+ var COMMIT_SHA = "b3a077a6";
47746
+ var COMMIT_DATE = "2026-05-22T10:38:19+10:00";
47747
47747
  var LATEST_PR = null;
47748
- var COMMITS_AHEAD_OF_TAG = 4;
47748
+ var COMMITS_AHEAD_OF_TAG = 1;
47749
47749
 
47750
47750
  // gateway/boot-version.ts
47751
47751
  function formatRelativeAgo(iso) {