switchroom 0.7.13 → 0.7.15

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchroom",
3
- "version": "0.7.13",
3
+ "version": "0.7.15",
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": {
@@ -22,7 +22,7 @@
22
22
  "build:cli": "node scripts/build.mjs && bun build --compile --target=bun-linux-x64 --minify bin/switchroom.ts --outfile switchroom-linux-amd64",
23
23
  "test": "vitest run && bun test telegram-plugin/tests/history.test.ts telegram-plugin/tests/ipc-server-client.test.ts telegram-plugin/tests/ipc-server-race.test.ts telegram-plugin/tests/gateway-bridge.test.ts telegram-plugin/tests/gateway-startup-mutex.test.ts telegram-plugin/tests/gateway-clean-shutdown-marker.test.ts telegram-plugin/tests/foreman-state.test.ts telegram-plugin/tests/boot-card-dedupe.test.ts telegram-plugin/tests/boot-card-reason.test.ts telegram-plugin/tests/progress-update.test.ts telegram-plugin/tests/quota-cache.test.ts telegram-plugin/tests/silent-reply-guard.test.ts telegram-plugin/tests/unhandled-rejection-policy.test.ts telegram-plugin/tests/registry-turns.test.ts telegram-plugin/registry/subagents.test.ts telegram-plugin/tests/turns-writer.test.ts telegram-plugin/registry/api-registry.test.ts telegram-plugin/registry/turns-schema.test.ts telegram-plugin/tests/idle-footer-wiring.test.ts telegram-plugin/tests/subagent-tracker-hooks.test.ts telegram-plugin/tests/resolve-calling-subagent.test.ts telegram-plugin/tests/gateway-update-placeholder-dispatch.test.ts",
24
24
  "test:vitest": "vitest run",
25
- "test:bun": "bun test src/watchdog/state.test.ts src/watchdog/policy.test.ts src/vault/grants.test.ts src/vault/broker/server-grants.test.ts src/vault/broker/client-token.test.ts src/vault/broker/server-unlock.test.ts src/vault/broker/auto-unlock.test.ts src/vault/broker/drift-detection.test.ts tests/vault-broker-passphrase.test.ts src/cli/vault-get-broker.test.ts src/vault/resolver-via-broker.test.ts src/vault/broker/scope.test.ts src/vault/broker/server.test.ts src/drive/disconnect.test.ts src/drive/grants.test.ts src/drive/oauth.test.ts src/drive/onboarding.test.ts src/drive/reconciler.test.ts src/drive/vault-slots.test.ts src/drive/wrapper.test.ts src/vault/approvals/kernel.test.ts src/vault/broker/server-approvals.test.ts telegram-plugin/tests/boot-probes.test.ts telegram-plugin/tests/setup-state.test.ts telegram-plugin/tests/history.test.ts telegram-plugin/tests/ipc-server-client.test.ts telegram-plugin/tests/ipc-server-race.test.ts telegram-plugin/tests/gateway-bridge.test.ts telegram-plugin/tests/gateway-startup-mutex.test.ts telegram-plugin/tests/gateway-clean-shutdown-marker.test.ts telegram-plugin/tests/foreman-state.test.ts telegram-plugin/tests/boot-card-dedupe.test.ts telegram-plugin/tests/boot-card-reason.test.ts telegram-plugin/tests/progress-update.test.ts telegram-plugin/tests/quota-cache.test.ts telegram-plugin/tests/silent-reply-guard.test.ts telegram-plugin/tests/unhandled-rejection-policy.test.ts telegram-plugin/tests/registry-turns.test.ts telegram-plugin/registry/subagents.test.ts telegram-plugin/tests/turns-writer.test.ts telegram-plugin/tests/resolve-calling-subagent.test.ts telegram-plugin/tests/gateway-update-placeholder-dispatch.test.ts",
25
+ "test:bun": "bun test src/watchdog/state.test.ts src/watchdog/policy.test.ts src/vault/grants.test.ts src/vault/write-grants.test.ts src/vault/broker/server-grants.test.ts src/vault/broker/server-write-grants.test.ts src/vault/broker/server-passphrase-attest.test.ts src/vault/broker/client-token.test.ts src/vault/broker/server-unlock.test.ts src/vault/broker/auto-unlock.test.ts src/vault/broker/drift-detection.test.ts tests/vault-broker-passphrase.test.ts src/cli/vault-get-broker.test.ts src/vault/resolver-via-broker.test.ts src/vault/broker/scope.test.ts src/vault/broker/server.test.ts src/drive/disconnect.test.ts src/drive/grants.test.ts src/drive/oauth.test.ts src/drive/onboarding.test.ts src/drive/reconciler.test.ts src/drive/vault-slots.test.ts src/drive/wrapper.test.ts src/vault/approvals/kernel.test.ts src/vault/broker/server-approvals.test.ts telegram-plugin/tests/boot-probes.test.ts telegram-plugin/tests/setup-state.test.ts telegram-plugin/tests/history.test.ts telegram-plugin/tests/ipc-server-client.test.ts telegram-plugin/tests/ipc-server-race.test.ts telegram-plugin/tests/gateway-bridge.test.ts telegram-plugin/tests/gateway-startup-mutex.test.ts telegram-plugin/tests/gateway-clean-shutdown-marker.test.ts telegram-plugin/tests/foreman-state.test.ts telegram-plugin/tests/boot-card-dedupe.test.ts telegram-plugin/tests/boot-card-reason.test.ts telegram-plugin/tests/progress-update.test.ts telegram-plugin/tests/quota-cache.test.ts telegram-plugin/tests/silent-reply-guard.test.ts telegram-plugin/tests/unhandled-rejection-policy.test.ts telegram-plugin/tests/registry-turns.test.ts telegram-plugin/registry/subagents.test.ts telegram-plugin/tests/turns-writer.test.ts telegram-plugin/tests/resolve-calling-subagent.test.ts telegram-plugin/tests/gateway-update-placeholder-dispatch.test.ts",
26
26
  "test:watch": "vitest",
27
27
  "lint": "tsc --noEmit && node scripts/check-plugin-references.mjs",
28
28
  "lint:tsc": "tsc --noEmit",
@@ -35,7 +35,6 @@
35
35
  "@secretlint/core": "^12.2.0",
36
36
  "@secretlint/secretlint-rule-preset-recommend": "^12.2.0",
37
37
  "@secretlint/types": "^12.2.0",
38
- "@types/proper-lockfile": "^4.1.4",
39
38
  "@xterm/headless": "^6.0.0",
40
39
  "bcryptjs": "^3.0.3",
41
40
  "chalk": "^5.4.0",
@@ -43,7 +42,6 @@
43
42
  "grammy": "^1.21.0",
44
43
  "handlebars": "^4.7.8",
45
44
  "posthog-node": "^5.29.2",
46
- "proper-lockfile": "^4.1.2",
47
45
  "yaml": "^2.7.0",
48
46
  "zod": "^3.24.0"
49
47
  },
@@ -401,6 +401,23 @@ const TOOL_SCHEMAS = [
401
401
  required: ['chat_id', 'message_id'],
402
402
  },
403
403
  },
404
+ {
405
+ name: 'vault_request_save',
406
+ description:
407
+ 'Ask the user to confirm saving a secret value to the vault. Use this when the user gave you a credential/token in chat and asked you to save it (or when you discovered one mid-task that the user should curate). Renders a Telegram approval card with [Save once] [Discard] [Rename] buttons; the value is written to the host vault only when the user taps Save. The value never leaves the host — it is staged inside the gateway and never echoed back to the agent. Do NOT use this tool to read secrets — use the standard vault: reference syntax in your scaffolded prompt. Do NOT call this for values the user did not explicitly hand you (no proactive secret discovery from filesystem scans, command output, etc).',
408
+ inputSchema: {
409
+ type: 'object',
410
+ properties: {
411
+ chat_id: { type: 'string', description: 'Chat to render the approval card in (use the chat_id of the user message that delivered the secret).' },
412
+ key: { type: 'string', description: 'Suggested vault key (slug) to store the secret under. The user can override via the [Rename] button. Use lowercase snake_case, e.g. `klanker_telegram_bot_token`.' },
413
+ value: { type: 'string', description: 'The secret value to save. Will be staged in the gateway and never echoed back to the agent.' },
414
+ why: { type: 'string', description: 'Short human-readable reason rendered on the card (e.g. "for the klanker UAT bot you asked me to set up"). Helps the user verify intent.' },
415
+ kind: { type: 'string', enum: ['string', 'binary'], description: 'Storage shape. Default "string". Use "binary" for base64-encoded blobs.' },
416
+ message_thread_id: { type: 'string', description: 'Forum topic thread ID. Auto-applied from the last inbound message if not specified.' },
417
+ },
418
+ required: ['chat_id', 'key', 'value'],
419
+ },
420
+ },
404
421
  ]
405
422
 
406
423
  mcp.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOL_SCHEMAS }))