diff --git a/src/lock-ops.mjs b/src/lock-ops.mjs index d0ac6b1..3010f5a 100644 --- a/src/lock-ops.mjs +++ b/src/lock-ops.mjs @@ -61,6 +61,7 @@ function filterActiveLocks(locks) { return locks.filter((lock) => !lock.expiresAt || lock.expiresAt > now); } + /** * Queries relays for active lock events matching the criteria. * Uses a tiered approach: tries primary relays first, then falls back to others if needed. diff --git a/src/lock-utils.mjs b/src/lock-utils.mjs index 64319d3..d830503 100644 --- a/src/lock-utils.mjs +++ b/src/lock-utils.mjs @@ -61,10 +61,6 @@ export function withTimeout(promise, timeoutMs, timeoutMessage) { }); } -export function mergeRelayList(primaryRelays, fallbackRelays) { - return [...new Set([...primaryRelays, ...fallbackRelays])]; -} - const MAX_RANDOM = 281474976710655; // 2**48 - 1 export function secureRandom() { diff --git a/test/verify-example-config-security.test.mjs b/test/verify-example-config-security.test.mjs new file mode 100644 index 0000000..fffd5b2 --- /dev/null +++ b/test/verify-example-config-security.test.mjs @@ -0,0 +1,14 @@ +import test from 'node:test'; +import assert from 'node:assert'; +import fs from 'node:fs'; +import path from 'node:path'; + +test('torch-config.example.json Security', () => { + const configPath = path.resolve('torch-config.example.json'); + const content = fs.readFileSync(configPath, 'utf8'); + const config = JSON.parse(content); + + if (config.dashboard) { + assert.strictEqual(config.dashboard.auth, undefined, 'Example config should not contain auth field'); + } +}); diff --git a/torch-config.example.json b/torch-config.example.json index aafd0bf..df7ea44 100644 --- a/torch-config.example.json +++ b/torch-config.example.json @@ -18,8 +18,7 @@ }, "dashboard": { "defaultCadenceView": "daily", - "defaultStatusView": "active", - "auth": "admin:password" + "defaultStatusView": "active" }, "scheduler": { "firstPromptByCadence": {