switchroom 0.14.75 → 0.14.76

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.
@@ -11211,6 +11211,7 @@ var profileFields = {
11211
11211
  memory: exports_external.object({
11212
11212
  collection: exports_external.string().optional(),
11213
11213
  auto_recall: exports_external.boolean().optional(),
11214
+ file: exports_external.boolean().optional(),
11214
11215
  isolation: exports_external.enum(["default", "strict"]).optional(),
11215
11216
  recall: exports_external.object({
11216
11217
  max_memories: exports_external.number().int().min(0).optional(),
@@ -11211,6 +11211,7 @@ var profileFields = {
11211
11211
  memory: exports_external.object({
11212
11212
  collection: exports_external.string().optional(),
11213
11213
  auto_recall: exports_external.boolean().optional(),
11214
+ file: exports_external.boolean().optional(),
11214
11215
  isolation: exports_external.enum(["default", "strict"]).optional(),
11215
11216
  recall: exports_external.object({
11216
11217
  max_memories: exports_external.number().int().min(0).optional(),
@@ -13891,8 +13892,29 @@ class AuthBroker {
13891
13892
  return override;
13892
13893
  return auth.active ?? null;
13893
13894
  }
13894
- async opGetCredentials(socket, id, identity2) {
13895
+ servingAccount(identity2) {
13895
13896
  const account = this.callerAccount(identity2);
13897
+ if (identity2.kind !== "consumer")
13898
+ return account;
13899
+ return this.consumerAccountWithFailover(account);
13900
+ }
13901
+ isAccountExhausted(account) {
13902
+ const q = this.quota[account];
13903
+ return q !== undefined && q.exhausted_until > this.now();
13904
+ }
13905
+ consumerAccountWithFailover(pinned) {
13906
+ if (!pinned || !this.isAccountExhausted(pinned))
13907
+ return pinned;
13908
+ for (const cand of this.config.auth?.fallback_order ?? []) {
13909
+ if (cand === pinned || this.isAccountExhausted(cand))
13910
+ continue;
13911
+ if (readAccountCredentials(cand, this.home))
13912
+ return cand;
13913
+ }
13914
+ return pinned;
13915
+ }
13916
+ async opGetCredentials(socket, id, identity2) {
13917
+ const account = this.servingAccount(identity2);
13896
13918
  if (!account) {
13897
13919
  this.audit({ op: "get-credentials", identity: identity2, ok: false, error: "no-active-account" });
13898
13920
  socket.write(encodeError(id, "ACCOUNT_NOT_FOUND", "no active account configured"));
@@ -11959,6 +11959,7 @@ var profileFields = {
11959
11959
  memory: exports_external.object({
11960
11960
  collection: exports_external.string().optional(),
11961
11961
  auto_recall: exports_external.boolean().optional(),
11962
+ file: exports_external.boolean().optional(),
11962
11963
  isolation: exports_external.enum(["default", "strict"]).optional(),
11963
11964
  recall: exports_external.object({
11964
11965
  max_memories: exports_external.number().int().min(0).optional(),
@@ -13775,6 +13775,7 @@ var init_schema = __esm(() => {
13775
13775
  memory: exports_external.object({
13776
13776
  collection: exports_external.string().optional(),
13777
13777
  auto_recall: exports_external.boolean().optional(),
13778
+ file: exports_external.boolean().optional(),
13778
13779
  isolation: exports_external.enum(["default", "strict"]).optional(),
13779
13780
  recall: exports_external.object({
13780
13781
  max_memories: exports_external.number().int().min(0).optional(),
@@ -28973,7 +28974,7 @@ function classifyExtractionLogs(logs) {
28973
28974
  name: "hindsight extraction",
28974
28975
  status: "fail",
28975
28976
  detail: "fact-extraction LLM calls are failing" + (quotaHint ? " (429 / weekly-limit detected)" : "") + " \u2014 retains are accepted but extract 0 facts, so nothing becomes recallable",
28976
- fix: "Usually hindsight's `auth.consumers[hindsight].account` is quota-" + "exhausted or its OAuth broke. Repoint it to an account with quota in " + "switchroom.yaml, then `docker restart switchroom-auth-broker` and " + "`docker restart switchroom-hindsight` (single-file config mount needs " + "the broker restart to re-read). Confirm with a `claude -p` inside the " + "container."
28977
+ fix: "Usually hindsight's `auth.consumers[hindsight].account` is quota-" + "exhausted or its OAuth broke. Repoint it to an account with quota in " + "switchroom.yaml, then `docker restart switchroom-auth-broker` and " + "`docker restart switchroom-hindsight` (single-file config mount needs " + "the broker restart to re-read). Confirm with a headless `claude` run " + "inside the container."
28977
28978
  };
28978
28979
  }
28979
28980
  if (zeroFacts >= 3 && okFacts === 0) {
@@ -49680,8 +49681,8 @@ var {
49680
49681
  } = import__.default;
49681
49682
 
49682
49683
  // src/build-info.ts
49683
- var VERSION = "0.14.75";
49684
- var COMMIT_SHA = "8c331b53";
49684
+ var VERSION = "0.14.76";
49685
+ var COMMIT_SHA = "e7ab9ec6";
49685
49686
 
49686
49687
  // src/cli/agent.ts
49687
49688
  init_source();
@@ -13946,6 +13946,7 @@ var profileFields = {
13946
13946
  memory: exports_external.object({
13947
13947
  collection: exports_external.string().optional(),
13948
13948
  auto_recall: exports_external.boolean().optional(),
13949
+ file: exports_external.boolean().optional(),
13949
13950
  isolation: exports_external.enum(["default", "strict"]).optional(),
13950
13951
  recall: exports_external.object({
13951
13952
  max_memories: exports_external.number().int().min(0).optional(),
@@ -11532,6 +11532,7 @@ var init_schema = __esm(() => {
11532
11532
  memory: exports_external.object({
11533
11533
  collection: exports_external.string().optional(),
11534
11534
  auto_recall: exports_external.boolean().optional(),
11535
+ file: exports_external.boolean().optional(),
11535
11536
  isolation: exports_external.enum(["default", "strict"]).optional(),
11536
11537
  recall: exports_external.object({
11537
11538
  max_memories: exports_external.number().int().min(0).optional(),
@@ -11532,6 +11532,7 @@ var init_schema = __esm(() => {
11532
11532
  memory: exports_external.object({
11533
11533
  collection: exports_external.string().optional(),
11534
11534
  auto_recall: exports_external.boolean().optional(),
11535
+ file: exports_external.boolean().optional(),
11535
11536
  isolation: exports_external.enum(["default", "strict"]).optional(),
11536
11537
  recall: exports_external.object({
11537
11538
  max_memories: exports_external.number().int().min(0).optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchroom",
3
- "version": "0.14.75",
3
+ "version": "0.14.76",
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": {
@@ -24035,6 +24035,7 @@ var init_schema = __esm(() => {
24035
24035
  memory: exports_external.object({
24036
24036
  collection: exports_external.string().optional(),
24037
24037
  auto_recall: exports_external.boolean().optional(),
24038
+ file: exports_external.boolean().optional(),
24038
24039
  isolation: exports_external.enum(["default", "strict"]).optional(),
24039
24040
  recall: exports_external.object({
24040
24041
  max_memories: exports_external.number().int().min(0).optional(),
@@ -52820,10 +52821,10 @@ function sweepStaleTurnActiveMarker(stateDir, opts) {
52820
52821
  }
52821
52822
 
52822
52823
  // ../src/build-info.ts
52823
- var VERSION = "0.14.75";
52824
- var COMMIT_SHA = "8c331b53";
52825
- var COMMIT_DATE = "2026-06-06T06:33:56Z";
52826
- var LATEST_PR = 2192;
52824
+ var VERSION = "0.14.76";
52825
+ var COMMIT_SHA = "e7ab9ec6";
52826
+ var COMMIT_DATE = "2026-06-06T08:50:42Z";
52827
+ var LATEST_PR = 2196;
52827
52828
  var COMMITS_AHEAD_OF_TAG = 0;
52828
52829
 
52829
52830
  // gateway/boot-version.ts