From a6619f5efd47a97c4f95c6e541f159543a7cfd0d Mon Sep 17 00:00:00 2001 From: Eneko Ruiz <196690101+eneekoruiz@users.noreply.github.com> Date: Fri, 16 Oct 2026 15:16:00 +0200 Subject: [PATCH] fix: reject missing session inspection option values --- scripts/session-inspect.js | 5 +++++ tests/scripts/session-inspect.test.js | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/scripts/session-inspect.js b/scripts/session-inspect.js index b230dd494..e6e129065 100644 --- a/scripts/session-inspect.js +++ b/scripts/session-inspect.js @@ -40,6 +40,11 @@ function usage() { function parseArgs(argv) { const args = argv.slice(2); const valueOptions = ['--adapter', '--target-type', '--skill', '--amendment-id', '--observations', '--write']; + for (const [index, argument] of args.entries()) { + if (valueOptions.includes(argument) && (!args[index + 1] || args[index + 1].startsWith('--'))) { + throw new Error(`Missing value for ${argument}`); + } + } const target = args.find((argument, index) => !argument.startsWith('--') && !valueOptions.includes(args[index - 1])); const listAdapters = args.includes('--list-adapters'); diff --git a/tests/scripts/session-inspect.test.js b/tests/scripts/session-inspect.test.js index fe060ab57..0dd96aa74 100644 --- a/tests/scripts/session-inspect.test.js +++ b/tests/scripts/session-inspect.test.js @@ -80,6 +80,14 @@ function runTests() { assert.ok(result.stdout.includes('Usage:')); })) passed++; else failed++; + if (test('rejects missing values for every value-taking option', () => { + for (const flag of ['--adapter', '--target-type', '--skill', '--amendment-id', '--observations', '--write']) { + for (const args of [[flag], [flag, '--write', 'out.json', 'claude:latest'], [flag, 'value', flag]]) { + assert.throws(() => parseArgs(['node', SCRIPT, ...args]), { message: `Missing value for ${flag}` }); + } + } + })) passed++; else failed++; + if (test('lists registered adapters', () => { const result = run(['--list-adapters']); assert.strictEqual(result.code, 0, result.stderr); @@ -167,6 +175,7 @@ function runTests() { ['--adapter', 'claude-history', '--write', outputPath, 'claude:latest'], ['--write', outputPath, 'claude:latest', '--adapter', 'claude-history'], ]) { + fs.rmSync(outputPath, { force: true }); const result = run(args, { env: { HOME: homeDir, ECC_SESSION_RECORDING_DIR: outputDir } }); @@ -175,6 +184,11 @@ function runTests() { const written = JSON.parse(fs.readFileSync(outputPath, 'utf8')); assert.strictEqual(written.adapterId, 'claude-history'); } + fs.rmSync(outputPath, { force: true }); + const invalid = run(['--adapter', '--write', outputPath, 'claude:latest'], { env: { HOME: homeDir } }); + assert.strictEqual(invalid.code, 1); + assert.match(invalid.stderr, /Missing value for --adapter/); + assert.ok(!fs.existsSync(outputPath)); } finally { fs.rmSync(homeDir, { recursive: true, force: true }); fs.rmSync(outputDir, { recursive: true, force: true });