switchroom 0.13.21 → 0.13.23

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.
@@ -47331,8 +47331,8 @@ var {
47331
47331
  } = import__.default;
47332
47332
 
47333
47333
  // src/build-info.ts
47334
- var VERSION = "0.13.21";
47335
- var COMMIT_SHA = "4183c5df";
47334
+ var VERSION = "0.13.23";
47335
+ var COMMIT_SHA = "c4a29251";
47336
47336
 
47337
47337
  // src/cli/agent.ts
47338
47338
  init_source();
@@ -48699,6 +48699,8 @@ function applyHindsightSettingsOverrides(pluginDestPath) {
48699
48699
  return;
48700
48700
  }
48701
48701
  settings.retainEveryNTurns = 1;
48702
+ settings.recallMaxMemories = 8;
48703
+ settings.recallMinOverlap = 0.1;
48702
48704
  writeFileSync5(settingsPath, JSON.stringify(settings, null, 2) + `
48703
48705
  `, "utf-8");
48704
48706
  }
@@ -62230,6 +62232,13 @@ var HINDSIGHT_IMAGE = "ghcr.io/switchroom/switchroom-hindsight:latest";
62230
62232
  var HINDSIGHT_DEFAULT_MODEL = "claude-sonnet-4-6";
62231
62233
  var HINDSIGHT_DEFAULT_MCP_STATELESS = true;
62232
62234
  var HINDSIGHT_BROKER_SOCK_VOLUME = `auth-broker-${HINDSIGHT_CONSUMER_NAME}-sock`;
62235
+ var HINDSIGHT_DEFAULT_RERANKER_BUCKET_BATCHING = "true";
62236
+ var HINDSIGHT_DEFAULT_RERANKER_MAX_CANDIDATES = 150;
62237
+ var HINDSIGHT_DEFAULT_RERANKER_LOCAL_MAX_CONCURRENT = 4;
62238
+ var HINDSIGHT_DEFAULT_RECALL_MAX_CONCURRENT = 8;
62239
+ var HINDSIGHT_DEFAULT_MEM_LIMIT = "4g";
62240
+ var HINDSIGHT_DEFAULT_MEM_RESERVATION = "2g";
62241
+ var HINDSIGHT_DEFAULT_PIDS_LIMIT = 1000;
62233
62242
  function isPortFree(port) {
62234
62243
  return new Promise((resolve25) => {
62235
62244
  const server = createServer3();
@@ -62300,7 +62309,15 @@ function startHindsight(ports) {
62300
62309
  "-e",
62301
62310
  `HINDSIGHT_API_LLM_MODEL=${HINDSIGHT_DEFAULT_MODEL}`,
62302
62311
  "-e",
62303
- `HINDSIGHT_API_MCP_STATELESS=${HINDSIGHT_DEFAULT_MCP_STATELESS}`
62312
+ `HINDSIGHT_API_MCP_STATELESS=${HINDSIGHT_DEFAULT_MCP_STATELESS}`,
62313
+ "-e",
62314
+ `HINDSIGHT_API_RERANKER_LOCAL_BUCKET_BATCHING=${HINDSIGHT_DEFAULT_RERANKER_BUCKET_BATCHING}`,
62315
+ "-e",
62316
+ `HINDSIGHT_API_RERANKER_MAX_CANDIDATES=${HINDSIGHT_DEFAULT_RERANKER_MAX_CANDIDATES}`,
62317
+ "-e",
62318
+ `HINDSIGHT_API_RERANKER_LOCAL_MAX_CONCURRENT=${HINDSIGHT_DEFAULT_RERANKER_LOCAL_MAX_CONCURRENT}`,
62319
+ "-e",
62320
+ `HINDSIGHT_API_RECALL_MAX_CONCURRENT=${HINDSIGHT_DEFAULT_RECALL_MAX_CONCURRENT}`
62304
62321
  ];
62305
62322
  const args = [
62306
62323
  "run",
@@ -62309,6 +62326,9 @@ function startHindsight(ports) {
62309
62326
  "switchroom-hindsight",
62310
62327
  "--restart",
62311
62328
  "unless-stopped",
62329
+ `--memory=${HINDSIGHT_DEFAULT_MEM_LIMIT}`,
62330
+ `--memory-reservation=${HINDSIGHT_DEFAULT_MEM_RESERVATION}`,
62331
+ `--pids-limit=${HINDSIGHT_DEFAULT_PIDS_LIMIT}`,
62312
62332
  "-p",
62313
62333
  `127.0.0.1:${apiPort}:8888`,
62314
62334
  "-p",
@@ -62355,6 +62375,13 @@ function generateHindsightComposeSnippet() {
62355
62375
  " - HINDSIGHT_API_LLM_PROVIDER=claude-code",
62356
62376
  ` - HINDSIGHT_API_LLM_MODEL=${HINDSIGHT_DEFAULT_MODEL}`,
62357
62377
  ` - HINDSIGHT_API_MCP_STATELESS=${HINDSIGHT_DEFAULT_MCP_STATELESS}`,
62378
+ ` - HINDSIGHT_API_RERANKER_LOCAL_BUCKET_BATCHING=${HINDSIGHT_DEFAULT_RERANKER_BUCKET_BATCHING}`,
62379
+ ` - HINDSIGHT_API_RERANKER_MAX_CANDIDATES=${HINDSIGHT_DEFAULT_RERANKER_MAX_CANDIDATES}`,
62380
+ ` - HINDSIGHT_API_RERANKER_LOCAL_MAX_CONCURRENT=${HINDSIGHT_DEFAULT_RERANKER_LOCAL_MAX_CONCURRENT}`,
62381
+ ` - HINDSIGHT_API_RECALL_MAX_CONCURRENT=${HINDSIGHT_DEFAULT_RECALL_MAX_CONCURRENT}`,
62382
+ ` mem_limit: ${HINDSIGHT_DEFAULT_MEM_LIMIT}`,
62383
+ ` mem_reservation: ${HINDSIGHT_DEFAULT_MEM_RESERVATION}`,
62384
+ ` pids_limit: ${HINDSIGHT_DEFAULT_PIDS_LIMIT}`,
62358
62385
  " volumes:",
62359
62386
  " - switchroom-hindsight-data:/home/hindsight/.pg0",
62360
62387
  ` - ${HINDSIGHT_BROKER_SOCK_VOLUME}:/run/switchroom/auth-broker`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchroom",
3
- "version": "0.13.21",
3
+ "version": "0.13.23",
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": {
@@ -207,14 +207,15 @@ export HINDSIGHT_AGENT_NAME="{{name}}"
207
207
  export HINDSIGHT_RECALL_MAX_MEMORIES={{hindsightRecallMaxMemories}}
208
208
  {{/if}}
209
209
  # Per-session recall cache (#424 phase 4.1). Identical (prompt, bank)
210
- # within a session reuses the prior recall result instead of round-
211
- # tripping to Hindsight. Defaults to 600s (10 min); operators can
212
- # override via memory.recall.cache_ttl_secs in switchroom.yaml.
213
- # Setting it to 0 disables caching for that agent.
210
+ # within a session reuses the prior recall result. v0.13.22: the
211
+ # unconditional default-600s export was dropped the 2026-05-24
212
+ # audit measured 0% hit rate across 430+ Telegram turns (cache key
213
+ # is `(session_id, prompt, bank, extra_banks)`; each Telegram inbound
214
+ # is unique). Operators who run Claude Code interactively (where
215
+ # prompt-repeat happens) can still opt in via memory.recall.cache_ttl_secs
216
+ # in switchroom.yaml. Setting it to 0 disables caching for that agent.
214
217
  {{#if (isNumber hindsightRecallCacheTtlSecs)}}
215
218
  export HINDSIGHT_RECALL_CACHE_TTL_SECS={{hindsightRecallCacheTtlSecs}}
216
- {{else}}
217
- export HINDSIGHT_RECALL_CACHE_TTL_SECS=600
218
219
  {{/if}}
219
220
  # Lexical-overlap relevance gate (#475). Drops memories whose Jaccard
220
221
  # overlap with the user's query is below this threshold (range 0.0–1.0).
@@ -48315,10 +48315,10 @@ function sweepStaleTurnActiveMarker(stateDir, opts) {
48315
48315
  }
48316
48316
 
48317
48317
  // ../src/build-info.ts
48318
- var VERSION = "0.13.21";
48319
- var COMMIT_SHA = "4183c5df";
48320
- var COMMIT_DATE = "2026-05-23T21:59:16Z";
48321
- var LATEST_PR = 1692;
48318
+ var VERSION = "0.13.23";
48319
+ var COMMIT_SHA = "c4a29251";
48320
+ var COMMIT_DATE = "2026-05-23T23:54:40Z";
48321
+ var LATEST_PR = 1702;
48322
48322
  var COMMITS_AHEAD_OF_TAG = 0;
48323
48323
 
48324
48324
  // gateway/boot-version.ts
@@ -556,7 +556,15 @@ def main():
556
556
  max_tokens=config.get("recallMaxTokens", 1024),
557
557
  budget=config.get("recallBudget", "mid"),
558
558
  types=config.get("recallTypes"),
559
- timeout=10,
559
+ # 8s in-script timeout leaves 4s headroom inside the 12s
560
+ # UserPromptSubmit hook ceiling (see hooks.json:20) for cache
561
+ # write + block formatting. Tightened from 10s in switchroom
562
+ # v0.13.22: the 2026-05-24 audit showed 17-26% of turns
563
+ # breaching the 12s hook timeout on heavy agents (finn /
564
+ # gymbro / klanker), which dropped the recall entirely; an
565
+ # earlier-hard-timeout failure returns cleanly with no
566
+ # memories instead of blowing past the hook ceiling.
567
+ timeout=8,
560
568
  )
561
569
  results = response.get("results", [])
562
570
  except Exception as e:
@@ -577,7 +585,15 @@ def main():
577
585
  max_tokens=config.get("recallMaxTokens", 1024),
578
586
  budget=config.get("recallBudget", "mid"),
579
587
  types=config.get("recallTypes"),
580
- timeout=10,
588
+ # 8s in-script timeout leaves 4s headroom inside the 12s
589
+ # UserPromptSubmit hook ceiling (see hooks.json:20) for cache
590
+ # write + block formatting. Tightened from 10s in switchroom
591
+ # v0.13.22: the 2026-05-24 audit showed 17-26% of turns
592
+ # breaching the 12s hook timeout on heavy agents (finn /
593
+ # gymbro / klanker), which dropped the recall entirely; an
594
+ # earlier-hard-timeout failure returns cleanly with no
595
+ # memories instead of blowing past the hook ceiling.
596
+ timeout=8,
581
597
  )
582
598
  extra_results = extra_response.get("results", [])
583
599
  if extra_results: