switchroom 0.18.26 → 0.18.28

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.
Files changed (35) hide show
  1. package/README.md +6 -2
  2. package/dist/cli/ms-365-write-pretool.mjs +4953 -14
  3. package/dist/cli/switchroom.js +1 -1
  4. package/dist/host-control/main.js +1 -1
  5. package/package.json +1 -1
  6. package/profiles/_base/start.sh.hbs +16 -0
  7. package/telegram-plugin/dist/gateway/gateway.js +571 -43
  8. package/telegram-plugin/flushed-turn-supersede.ts +58 -0
  9. package/telegram-plugin/gateway/derive-turn-id.ts +32 -0
  10. package/telegram-plugin/gateway/gateway.ts +358 -53
  11. package/telegram-plugin/gateway/handback-preturn-signal.ts +442 -0
  12. package/telegram-plugin/gateway/model-command.ts +68 -0
  13. package/telegram-plugin/gateway/ms365-write-approval.test.ts +101 -0
  14. package/telegram-plugin/gateway/ms365-write-approval.ts +65 -3
  15. package/telegram-plugin/gateway/subagent-handback-inbound-builder.ts +12 -0
  16. package/telegram-plugin/gateway/turn-active-marker.ts +35 -0
  17. package/telegram-plugin/gateway/worker-pin-reaper.ts +54 -0
  18. package/telegram-plugin/send-gate.test.ts +138 -0
  19. package/telegram-plugin/send-gate.ts +104 -1
  20. package/telegram-plugin/tests/activity-ever-opened-sticky.test.ts +14 -4
  21. package/telegram-plugin/tests/effort-command.test.ts +47 -0
  22. package/telegram-plugin/tests/flushed-turn-supersede.test.ts +60 -0
  23. package/telegram-plugin/tests/handback-preturn-adoption-roundtrip.test.ts +211 -0
  24. package/telegram-plugin/tests/handback-preturn-signal.test.ts +346 -0
  25. package/telegram-plugin/tests/model-command.test.ts +112 -0
  26. package/telegram-plugin/tests/multitopic-routing-wiring.test.ts +14 -2
  27. package/telegram-plugin/tests/outbound-send-chunks.test.ts +57 -0
  28. package/telegram-plugin/tests/permission-no-repeat-wiring.test.ts +18 -11
  29. package/telegram-plugin/tests/reply-owner-resolve.test.ts +90 -0
  30. package/telegram-plugin/tests/subagent-handback-inbound-builder.test.ts +5 -0
  31. package/telegram-plugin/tests/turn-active-marker.test.ts +29 -0
  32. package/telegram-plugin/tests/worker-activity-feed.test.ts +121 -0
  33. package/telegram-plugin/tests/worker-feed-migration-eviction.test.ts +140 -0
  34. package/telegram-plugin/tests/worker-pin-reaper.test.ts +78 -0
  35. package/telegram-plugin/worker-activity-feed.ts +169 -6
@@ -2120,7 +2120,7 @@ var init_esm = __esm(() => {
2120
2120
  });
2121
2121
 
2122
2122
  // src/build-info.ts
2123
- var VERSION = "0.18.26", COMMIT_SHA = "ceb7d1a9";
2123
+ var VERSION = "0.18.28", COMMIT_SHA = "ef0be9a2";
2124
2124
 
2125
2125
  // src/cli/resolve-version.ts
2126
2126
  import { existsSync, readFileSync } from "node:fs";
@@ -26605,7 +26605,7 @@ import { existsSync as existsSync9, readFileSync as readFileSync7 } from "node:f
26605
26605
  import { dirname as dirname4, join as join7 } from "node:path";
26606
26606
 
26607
26607
  // src/build-info.ts
26608
- var VERSION = "0.18.26";
26608
+ var VERSION = "0.18.28";
26609
26609
 
26610
26610
  // src/cli/resolve-version.ts
26611
26611
  function readPackageVersion() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "switchroom",
3
3
  "//version": "NOT the release version — source of truth is the git tag, resolved by scripts/build.mjs:resolveVersion() (see CLAUDE.md > Standard release process). This field is stale by design and only the Layer-4 dev/non-tag fallback for build.mjs + src/cli/resolve-version.ts; do NOT bump it expecting a release to pick it up. npm-pack tarball naming needs a real version — do that as an UNCOMMITTED pack-time bump (see release step 6), never a committed one.",
4
- "version": "0.18.26",
4
+ "version": "0.18.28",
5
5
  "description": "Run Claude Code 24/7 on your Claude Pro/Max subscription over Telegram. Open-source alternative to OpenClaw and NanoClaw — no API keys.",
6
6
  "type": "module",
7
7
  "bin": {
@@ -144,6 +144,14 @@ if [ "$SWITCHROOM_RUNTIME" = "docker" ] && [ -z "$SWITCHROOM_DOCKER_TMUX_INNER"
144
144
  x-litellm-customer-id: $SWITCHROOM_AGENT_NAME
145
145
  x-litellm-tags: agent:$SWITCHROOM_AGENT_NAME,profile:${SWITCHROOM_AGENT_PROFILE:-default}"
146
146
  export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
147
+ # Offer Fable 5 in /model. The CLI's Fable gate only offers Fable when the
148
+ # firstParty ANTHROPIC_BASE_URL host is api.anthropic.com OR this env is
149
+ # set; agents route through litellm (non-Anthropic host), so without this
150
+ # /model fable silently no-ops. Value claude-fable-5 is ONLY valid via the
151
+ # litellm proxy (maps fable->anthropic/claude-fable-5); it is a RETIRED
152
+ # codename against direct Anthropic, so it must NEVER be set on the
153
+ # fail-open (direct OAuth) path below.
154
+ export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5
147
155
  else
148
156
  # Missing-key fail-open: gateway talks direct OAuth, unproxied.
149
157
  unset ANTHROPIC_BASE_URL ANTHROPIC_SMALL_FAST_MODEL SWITCHROOM_LITELLM SWITCHROOM_LITELLM_BASE
@@ -1116,6 +1124,14 @@ x-litellm-tags: agent:$SWITCHROOM_AGENT_NAME,profile:${SWITCHROOM_AGENT_PROFILE:
1116
1124
  # models configured in the proxy appear in the /model picker and can be
1117
1125
  # selected via --model. Without this, the CLI only knows its bundled list.
1118
1126
  export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
1127
+ # Offer Fable 5 in /model. The CLI's Fable gate only offers Fable when the
1128
+ # firstParty ANTHROPIC_BASE_URL host is api.anthropic.com OR this env is set;
1129
+ # agents route through litellm (non-Anthropic host), so without this
1130
+ # /model fable silently no-ops. Value claude-fable-5 is ONLY valid via the
1131
+ # litellm proxy (maps fable->anthropic/claude-fable-5); it is a RETIRED
1132
+ # codename against direct Anthropic, so it must NEVER be set on the fail-open
1133
+ # (direct OAuth) path below.
1134
+ export ANTHROPIC_DEFAULT_FABLE_MODEL=claude-fable-5
1119
1135
  if [ -n "$sr_ll_ok" ]; then
1120
1136
  # Probe succeeded: proxy is live, so honor any sr-* session model override
1121
1137
  # below. On unreachable, _LITELLM_OK stays empty so the override is dropped