import { test } from 'node:test' import assert from 'node:assert/strict' import { parseArgs, loadConfig } from '../src/config.mjs' test('parseArgs handles long flags, =value and short flags', () => { const out = parseArgs(['--goal', 'g.json', '--iterations=7', '-C', '/tmp', '--no-color', '--dry-run']) assert.equal(out.goal, 'g.json') assert.equal(out.iterations, 7) assert.equal(out.project, '/tmp') assert.equal(out.color, false) assert.equal(out.dryRun, true) }) test('parseArgs coerces numeric flags', () => { const out = parseArgs(['--port', '8123', '--context-warn-tokens', '90000']) assert.equal(out.port, 8123) assert.equal(out.contextWarnTokens, 90000) }) test('parseArgs rejects unknown flags', () => { assert.throws(() => parseArgs(['--nope', '1']), /Unknown option/) }) test('loadConfig requires a goal', () => { assert.throws(() => loadConfig(['--project', '/tmp']), /goal is required/i) }) test('loadConfig validates session-mode and hitl', () => { assert.throws(() => loadConfig(['--goal-text', 'x', '--session-mode', 'wat']), /session-mode/) assert.throws(() => loadConfig(['--goal-text', 'x', '--hitl', 'wat']), /hitl/) })