switchroom 0.19.47 → 0.19.48
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/dist/agent-scheduler/index.js +4 -0
- package/dist/auth-broker/index.js +7 -0
- package/dist/cli/notion-write-pretool.mjs +4 -0
- package/dist/cli/switchroom.js +29 -6
- package/dist/host-control/main.js +8 -1
- package/dist/vault/approvals/kernel-server.js +7 -0
- package/dist/vault/broker/server.js +7 -0
- package/package.json +1 -1
- package/telegram-plugin/dist/gateway/gateway.js +11 -4
|
@@ -11095,6 +11095,8 @@ var AgentMemorySchema = exports_external.object({
|
|
|
11095
11095
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off — " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile → extends → DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset ⇒ byte-identical to keying off `extends`."),
|
|
11096
11096
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
11097
11097
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
11098
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset ⇒ shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
11099
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset ⇒ shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload — raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
11098
11100
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
11099
11101
|
mental_models: exports_external.array(exports_external.object({
|
|
11100
11102
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -11586,6 +11588,8 @@ var profileFields = {
|
|
|
11586
11588
|
}).optional(),
|
|
11587
11589
|
bank_mission: exports_external.string().optional(),
|
|
11588
11590
|
reflect_mission: exports_external.string().optional(),
|
|
11591
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
11592
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
11589
11593
|
retain_mission: exports_external.string().optional(),
|
|
11590
11594
|
observations_mission: exports_external.string().optional(),
|
|
11591
11595
|
disposition: exports_external.object({
|
|
@@ -11120,6 +11120,8 @@ var init_schema = __esm(() => {
|
|
|
11120
11120
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off — " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile → extends → DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset ⇒ byte-identical to keying off `extends`."),
|
|
11121
11121
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
11122
11122
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
11123
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset ⇒ shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
11124
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset ⇒ shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload — raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
11123
11125
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
11124
11126
|
mental_models: exports_external.array(exports_external.object({
|
|
11125
11127
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -11611,6 +11613,8 @@ var init_schema = __esm(() => {
|
|
|
11611
11613
|
}).optional(),
|
|
11612
11614
|
bank_mission: exports_external.string().optional(),
|
|
11613
11615
|
reflect_mission: exports_external.string().optional(),
|
|
11616
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
11617
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
11614
11618
|
retain_mission: exports_external.string().optional(),
|
|
11615
11619
|
observations_mission: exports_external.string().optional(),
|
|
11616
11620
|
disposition: exports_external.object({
|
|
@@ -18944,6 +18948,9 @@ for (const name of SHARED_FRAGMENTS) {
|
|
|
18944
18948
|
}
|
|
18945
18949
|
}
|
|
18946
18950
|
|
|
18951
|
+
// src/memory/scaffold-integration.ts
|
|
18952
|
+
init_merge();
|
|
18953
|
+
|
|
18947
18954
|
// src/litellm/timeout-budget.ts
|
|
18948
18955
|
var LITELLM_ROUTER_MARGIN_S = 10;
|
|
18949
18956
|
var LITELLM_TIMEOUT_TIERS = {
|
|
@@ -11856,6 +11856,8 @@ var AgentMemorySchema = exports_external.object({
|
|
|
11856
11856
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off \u2014 " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile \u2192 extends \u2192 DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset \u21d2 byte-identical to keying off `extends`."),
|
|
11857
11857
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
11858
11858
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
11859
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset \u21d2 shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
11860
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset \u21d2 shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload \u2014 raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
11859
11861
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
11860
11862
|
mental_models: exports_external.array(exports_external.object({
|
|
11861
11863
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -12347,6 +12349,8 @@ var profileFields = {
|
|
|
12347
12349
|
}).optional(),
|
|
12348
12350
|
bank_mission: exports_external.string().optional(),
|
|
12349
12351
|
reflect_mission: exports_external.string().optional(),
|
|
12352
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
12353
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
12350
12354
|
retain_mission: exports_external.string().optional(),
|
|
12351
12355
|
observations_mission: exports_external.string().optional(),
|
|
12352
12356
|
disposition: exports_external.object({
|
package/dist/cli/switchroom.js
CHANGED
|
@@ -2120,7 +2120,7 @@ var init_esm = __esm(() => {
|
|
|
2120
2120
|
});
|
|
2121
2121
|
|
|
2122
2122
|
// src/build-info.ts
|
|
2123
|
-
var VERSION = "0.19.
|
|
2123
|
+
var VERSION = "0.19.48", COMMIT_SHA = "22eb634b";
|
|
2124
2124
|
|
|
2125
2125
|
// src/cli/resolve-version.ts
|
|
2126
2126
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -13721,6 +13721,8 @@ var init_schema = __esm(() => {
|
|
|
13721
13721
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off \u2014 " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile \u2192 extends \u2192 DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset \u21d2 byte-identical to keying off `extends`."),
|
|
13722
13722
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
13723
13723
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
13724
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset \u21d2 shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
13725
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset \u21d2 shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload \u2014 raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
13724
13726
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
13725
13727
|
mental_models: exports_external.array(exports_external.object({
|
|
13726
13728
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -14212,6 +14214,8 @@ var init_schema = __esm(() => {
|
|
|
14212
14214
|
}).optional(),
|
|
14213
14215
|
bank_mission: exports_external.string().optional(),
|
|
14214
14216
|
reflect_mission: exports_external.string().optional(),
|
|
14217
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
14218
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
14215
14219
|
retain_mission: exports_external.string().optional(),
|
|
14216
14220
|
observations_mission: exports_external.string().optional(),
|
|
14217
14221
|
disposition: exports_external.object({
|
|
@@ -19130,9 +19134,12 @@ var init_hindsight = __esm(() => {
|
|
|
19130
19134
|
});
|
|
19131
19135
|
|
|
19132
19136
|
// src/memory/hindsight.ts
|
|
19133
|
-
function generateHindsightMcpConfig(collection, memoryConfig) {
|
|
19137
|
+
function generateHindsightMcpConfig(collection, memoryConfig, opts = {}) {
|
|
19134
19138
|
const url = memoryConfig.config?.url ?? HINDSIGHT_DEFAULT_MCP_URL;
|
|
19135
19139
|
if (memoryConfig.config?.mcp_transport === "http") {
|
|
19140
|
+
if (opts.reflectBudget !== undefined || opts.reflectMaxTokens !== undefined) {
|
|
19141
|
+
console.error("memory.reflect_budget/reflect_max_tokens have no effect under " + "mcp_transport: http \u2014 bypasses the shim");
|
|
19142
|
+
}
|
|
19136
19143
|
return {
|
|
19137
19144
|
type: "http",
|
|
19138
19145
|
url,
|
|
@@ -19149,7 +19156,9 @@ function generateHindsightMcpConfig(collection, memoryConfig) {
|
|
|
19149
19156
|
HINDSIGHT_MCP_URL: url,
|
|
19150
19157
|
HINDSIGHT_BANK_ID: collection,
|
|
19151
19158
|
HINDSIGHT_SHIM_CACHE_DIR: `${HINDSIGHT_SHIM_AGENT_HOME}/.hindsight-shim`,
|
|
19152
|
-
HOME: HINDSIGHT_SHIM_AGENT_HOME
|
|
19159
|
+
HOME: HINDSIGHT_SHIM_AGENT_HOME,
|
|
19160
|
+
...opts.reflectBudget ? { HINDSIGHT_SHIM_REFLECT_BUDGET: opts.reflectBudget } : {},
|
|
19161
|
+
...opts.reflectMaxTokens ? { HINDSIGHT_SHIM_REFLECT_MAX_TOKENS: String(opts.reflectMaxTokens) } : {}
|
|
19153
19162
|
}
|
|
19154
19163
|
};
|
|
19155
19164
|
}
|
|
@@ -27359,7 +27368,11 @@ function getHindsightSettingsEntry(agentName, config) {
|
|
|
27359
27368
|
return null;
|
|
27360
27369
|
}
|
|
27361
27370
|
const collection = getCollectionForAgent(agentName, config);
|
|
27362
|
-
const
|
|
27371
|
+
const resolved = resolveAgentConfig(config.defaults, config.profiles, config.agents[agentName] ?? {});
|
|
27372
|
+
const mcpConfig = generateHindsightMcpConfig(collection, memoryConfig, {
|
|
27373
|
+
reflectBudget: resolved.memory?.reflect_budget,
|
|
27374
|
+
reflectMaxTokens: resolved.memory?.reflect_max_tokens
|
|
27375
|
+
});
|
|
27363
27376
|
return { key: "hindsight", value: { ...mcpConfig, alwaysLoad: false } };
|
|
27364
27377
|
}
|
|
27365
27378
|
function getPlaywrightMcpSettingsEntry() {
|
|
@@ -27450,6 +27463,7 @@ function getBuiltinDefaultSkillEntries() {
|
|
|
27450
27463
|
}
|
|
27451
27464
|
var GOOGLE_WORKSPACE_MCP_PINNED_SHA = "9d69115b63e6bc2ef0d4b5d7a3b962396382b44c", MICROSOFT_WORKSPACE_MCP_PINNED_VERSION = "0.113.0", MICROSOFT_WORKSPACE_MCP_PACKAGE = "@softeria/ms-365-mcp-server", NOTION_MCP_PINNED_VERSION = "1.8.1", NOTION_MCP_PACKAGE = "@notionhq/notion-mcp-server", NOTION_TOKEN_ENV = "NOTION_TOKEN";
|
|
27452
27465
|
var init_scaffold_integration = __esm(() => {
|
|
27466
|
+
init_merge();
|
|
27453
27467
|
init_hindsight2();
|
|
27454
27468
|
});
|
|
27455
27469
|
|
|
@@ -101463,12 +101477,20 @@ function redactToolCallParams(params) {
|
|
|
101463
101477
|
}
|
|
101464
101478
|
var DEFAULT_RECALL_MAX_TOKENS = 1024;
|
|
101465
101479
|
var DEFAULT_REFLECT_MAX_TOKENS = 1024;
|
|
101480
|
+
var DEFAULT_RECALL_BUDGET = "low";
|
|
101481
|
+
var DEFAULT_REFLECT_BUDGET = "mid";
|
|
101482
|
+
var VALID_BUDGETS = new Set(["low", "mid", "high"]);
|
|
101466
101483
|
function resolveClampMaxTokens(envVal, fallback) {
|
|
101467
101484
|
if (envVal === undefined || envVal === "")
|
|
101468
101485
|
return fallback;
|
|
101469
101486
|
const n = Number.parseInt(envVal, 10);
|
|
101470
101487
|
return Number.isFinite(n) && n > 0 ? n : fallback;
|
|
101471
101488
|
}
|
|
101489
|
+
function resolveClampBudget(envVal, fallback) {
|
|
101490
|
+
if (envVal === undefined || envVal === "")
|
|
101491
|
+
return fallback;
|
|
101492
|
+
return VALID_BUDGETS.has(envVal) ? envVal : fallback;
|
|
101493
|
+
}
|
|
101472
101494
|
function acceptedArgs(name) {
|
|
101473
101495
|
const spec = FALLBACK_TOOL_TABLE[name];
|
|
101474
101496
|
if (!spec)
|
|
@@ -101503,8 +101525,9 @@ function guardAndClampToolCall(params, env2) {
|
|
|
101503
101525
|
if (injected.max_tokens === undefined) {
|
|
101504
101526
|
injected.max_tokens = name === "recall" ? resolveClampMaxTokens(env2.HINDSIGHT_SHIM_RECALL_MAX_TOKENS, DEFAULT_RECALL_MAX_TOKENS) : resolveClampMaxTokens(env2.HINDSIGHT_SHIM_REFLECT_MAX_TOKENS, DEFAULT_REFLECT_MAX_TOKENS);
|
|
101505
101527
|
}
|
|
101506
|
-
if (injected.budget === undefined)
|
|
101507
|
-
injected.budget = "
|
|
101528
|
+
if (injected.budget === undefined) {
|
|
101529
|
+
injected.budget = name === "recall" ? resolveClampBudget(env2.HINDSIGHT_SHIM_RECALL_BUDGET, DEFAULT_RECALL_BUDGET) : resolveClampBudget(env2.HINDSIGHT_SHIM_REFLECT_BUDGET, DEFAULT_REFLECT_BUDGET);
|
|
101530
|
+
}
|
|
101508
101531
|
return { ok: true, params: { ...called, arguments: injected } };
|
|
101509
101532
|
}
|
|
101510
101533
|
return { ok: true, params };
|
|
@@ -11120,6 +11120,8 @@ var init_schema = __esm(() => {
|
|
|
11120
11120
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off — " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile → extends → DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset ⇒ byte-identical to keying off `extends`."),
|
|
11121
11121
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
11122
11122
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
11123
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset ⇒ shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
11124
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset ⇒ shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload — raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
11123
11125
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
11124
11126
|
mental_models: exports_external.array(exports_external.object({
|
|
11125
11127
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -11611,6 +11613,8 @@ var init_schema = __esm(() => {
|
|
|
11611
11613
|
}).optional(),
|
|
11612
11614
|
bank_mission: exports_external.string().optional(),
|
|
11613
11615
|
reflect_mission: exports_external.string().optional(),
|
|
11616
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
11617
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
11614
11618
|
retain_mission: exports_external.string().optional(),
|
|
11615
11619
|
observations_mission: exports_external.string().optional(),
|
|
11616
11620
|
disposition: exports_external.object({
|
|
@@ -21411,7 +21415,7 @@ function allocateAgentUid(name) {
|
|
|
21411
21415
|
}
|
|
21412
21416
|
|
|
21413
21417
|
// src/build-info.ts
|
|
21414
|
-
var VERSION = "0.19.
|
|
21418
|
+
var VERSION = "0.19.48";
|
|
21415
21419
|
|
|
21416
21420
|
// src/setup/hindsight-recall-tunables.ts
|
|
21417
21421
|
var RECALL_DEADLINE_HEADROOM_SECONDS = 2;
|
|
@@ -21482,6 +21486,9 @@ for (const name of SHARED_FRAGMENTS) {
|
|
|
21482
21486
|
}
|
|
21483
21487
|
}
|
|
21484
21488
|
|
|
21489
|
+
// src/memory/scaffold-integration.ts
|
|
21490
|
+
init_merge();
|
|
21491
|
+
|
|
21485
21492
|
// src/litellm/timeout-budget.ts
|
|
21486
21493
|
var LITELLM_ROUTER_MARGIN_S = 10;
|
|
21487
21494
|
var LITELLM_TIMEOUT_TIERS = {
|
|
@@ -4560,6 +4560,8 @@ var init_schema = __esm(() => {
|
|
|
4560
4560
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off — " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile → extends → DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset ⇒ byte-identical to keying off `extends`."),
|
|
4561
4561
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
4562
4562
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
4563
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset ⇒ shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
4564
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset ⇒ shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload — raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
4563
4565
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
4564
4566
|
mental_models: exports_external.array(exports_external.object({
|
|
4565
4567
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -5051,6 +5053,8 @@ var init_schema = __esm(() => {
|
|
|
5051
5053
|
}).optional(),
|
|
5052
5054
|
bank_mission: exports_external.string().optional(),
|
|
5053
5055
|
reflect_mission: exports_external.string().optional(),
|
|
5056
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
5057
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
5054
5058
|
retain_mission: exports_external.string().optional(),
|
|
5055
5059
|
observations_mission: exports_external.string().optional(),
|
|
5056
5060
|
disposition: exports_external.object({
|
|
@@ -19377,6 +19381,9 @@ for (const name of SHARED_FRAGMENTS) {
|
|
|
19377
19381
|
}
|
|
19378
19382
|
}
|
|
19379
19383
|
|
|
19384
|
+
// src/memory/scaffold-integration.ts
|
|
19385
|
+
init_merge();
|
|
19386
|
+
|
|
19380
19387
|
// src/litellm/timeout-budget.ts
|
|
19381
19388
|
var LITELLM_ROUTER_MARGIN_S = 10;
|
|
19382
19389
|
var LITELLM_TIMEOUT_TIERS = {
|
|
@@ -4156,6 +4156,8 @@ var init_schema = __esm(() => {
|
|
|
4156
4156
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off — " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile → extends → DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset ⇒ byte-identical to keying off `extends`."),
|
|
4157
4157
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
4158
4158
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
4159
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset ⇒ shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
4160
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset ⇒ shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload — raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
4159
4161
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
4160
4162
|
mental_models: exports_external.array(exports_external.object({
|
|
4161
4163
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -4647,6 +4649,8 @@ var init_schema = __esm(() => {
|
|
|
4647
4649
|
}).optional(),
|
|
4648
4650
|
bank_mission: exports_external.string().optional(),
|
|
4649
4651
|
reflect_mission: exports_external.string().optional(),
|
|
4652
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
4653
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
4650
4654
|
retain_mission: exports_external.string().optional(),
|
|
4651
4655
|
observations_mission: exports_external.string().optional(),
|
|
4652
4656
|
disposition: exports_external.object({
|
|
@@ -19790,6 +19794,9 @@ for (const name of SHARED_FRAGMENTS) {
|
|
|
19790
19794
|
}
|
|
19791
19795
|
}
|
|
19792
19796
|
|
|
19797
|
+
// src/memory/scaffold-integration.ts
|
|
19798
|
+
init_merge();
|
|
19799
|
+
|
|
19793
19800
|
// src/litellm/timeout-budget.ts
|
|
19794
19801
|
var LITELLM_ROUTER_MARGIN_S = 10;
|
|
19795
19802
|
var LITELLM_TIMEOUT_TIERS = {
|
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.19.
|
|
4
|
+
"version": "0.19.48",
|
|
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": {
|
|
@@ -21673,6 +21673,8 @@ var init_schema = __esm(() => {
|
|
|
21673
21673
|
profile: exports_external.string().optional().describe("Memory profile bank this agent's curated memory defaults key off \u2014 " + "the built-in disposition + observations_mission in PROFILE_MEMORY_DEFAULTS. " + "Decouples the memory profile from `extends` (the filesystem persona " + "profile), so an agent on `extends: default` can opt into the `coding` " + "memory bundle via `memory.profile: coding` without inheriting the coding " + "persona. Resolution: memory.profile \u2192 extends \u2192 DEFAULT_PROFILE (see " + "resolveMemoryProfile). Unset \u21d2 byte-identical to keying off `extends`."),
|
|
21674
21674
|
bank_mission: exports_external.string().optional().describe("Bank-level mission statement used during recall to contextualize " + "results. NOTE: this is an alias for the Hindsight engine's " + "`reflect_mission` field (verified live: switchroom's bank_mission " + "lands in `config.reflect_mission`). Prefer `reflect_mission` going " + "forward; `bank_mission` is retained for back-compat. If both are " + "set, `reflect_mission` wins. Cascade: override."),
|
|
21675
21675
|
reflect_mission: exports_external.string().optional().describe("Mission/context steering Hindsight Reflect operations (the bank's " + "'who am I / what matters' framing applied during recall). The " + "engine-accurate name for what `bank_mission` sets. Cascade: override."),
|
|
21676
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional().describe("Thinking/retrieval budget injected into reflect MCP calls when the " + "caller omits budget. Unset \u21d2 shim default (mid). Explicit per-call " + "budget always wins. Higher = better recall on fuzzy queries, more " + "backend latency/compute. stdio-shim transport only (ignored under " + "memory.config.mcp_transport: http). Cascade: override (per-agent " + "wins over default)."),
|
|
21677
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional().describe("Token cap injected into reflect MCP calls when caller omits " + "max_tokens. Unset \u21d2 shim default 1024. Values much above ~2048 risk " + "exceeding Claude Code's MCP output cap, silently dropping the " + "payload \u2014 raise deliberately. Explicit per-call values always win. " + "stdio-shim transport only. Cascade: override."),
|
|
21676
21678
|
retain_mission: exports_external.string().optional().describe("Instructions for the fact extraction LLM during retain. Cascade: override."),
|
|
21677
21679
|
mental_models: exports_external.array(exports_external.object({
|
|
21678
21680
|
name: exports_external.string().min(1).describe("Stable model name (identity key for idempotent ensure). Two " + "declarations with the same name in one agent are rejected."),
|
|
@@ -22164,6 +22166,8 @@ var init_schema = __esm(() => {
|
|
|
22164
22166
|
}).optional(),
|
|
22165
22167
|
bank_mission: exports_external.string().optional(),
|
|
22166
22168
|
reflect_mission: exports_external.string().optional(),
|
|
22169
|
+
reflect_budget: exports_external.enum(["low", "mid", "high"]).optional(),
|
|
22170
|
+
reflect_max_tokens: exports_external.number().int().positive().max(8192).optional(),
|
|
22167
22171
|
retain_mission: exports_external.string().optional(),
|
|
22168
22172
|
observations_mission: exports_external.string().optional(),
|
|
22169
22173
|
disposition: exports_external.object({
|
|
@@ -86064,6 +86068,9 @@ for (const name of SHARED_FRAGMENTS) {
|
|
|
86064
86068
|
}
|
|
86065
86069
|
}
|
|
86066
86070
|
|
|
86071
|
+
// ../src/memory/scaffold-integration.ts
|
|
86072
|
+
init_merge();
|
|
86073
|
+
|
|
86067
86074
|
// ../src/litellm/timeout-budget.ts
|
|
86068
86075
|
var LITELLM_ROUTER_MARGIN_S = 10;
|
|
86069
86076
|
var LITELLM_TIMEOUT_TIERS = {
|
|
@@ -101140,10 +101147,10 @@ function startOutboxSweep(deps) {
|
|
|
101140
101147
|
}
|
|
101141
101148
|
|
|
101142
101149
|
// ../src/build-info.ts
|
|
101143
|
-
var VERSION2 = "0.19.
|
|
101144
|
-
var COMMIT_SHA = "
|
|
101145
|
-
var COMMIT_DATE = "2026-08-
|
|
101146
|
-
var LATEST_PR =
|
|
101150
|
+
var VERSION2 = "0.19.48";
|
|
101151
|
+
var COMMIT_SHA = "22eb634b";
|
|
101152
|
+
var COMMIT_DATE = "2026-08-02T05:59:26Z";
|
|
101153
|
+
var LATEST_PR = 4207;
|
|
101147
101154
|
var COMMITS_AHEAD_OF_TAG = 0;
|
|
101148
101155
|
|
|
101149
101156
|
// gateway/boot-version.ts
|