kilo-loop/test/config-extra.test.mjs
Vitali sharp8n 1eb9ec22c2 kilo loop
2026-09-13 19:29:03 +03:00

58 lines
1.8 KiB
JavaScript

import { test } from 'node:test'
import assert from 'node:assert/strict'
import { parseArgs, loadConfig } from '../src/config.mjs'
test('parseArgs handles the new safety/verification flags', () => {
const out = parseArgs([
'--max-cost',
'1.25',
'--max-tokens',
'500000',
'--max-stale-iterations',
'3',
'--verify-timeout-minutes',
'5',
'--auto-fresh-tokens',
'90000',
'--no-checkpoint',
'--no-guard',
'--no-redact',
'--no-sync-goal',
])
assert.equal(out.maxCost, 1.25)
assert.equal(out.maxTokens, 500000)
assert.equal(out.maxStaleIterations, 3)
assert.equal(out.verifyTimeoutMinutes, 5)
assert.equal(out.autoFreshTokens, 90000)
assert.equal(out.checkpoint, false)
assert.equal(out.guard, false)
assert.equal(out.redact, false)
assert.equal(out.syncGoal, false)
})
test('parseArgs rejects negative and non-numeric budgets', () => {
assert.throws(() => parseArgs(['--max-cost', '-1']), /Invalid number/)
assert.throws(() => parseArgs(['--max-tokens', 'abc']), /Invalid number/)
})
test('loadConfig exposes safe defaults for the new options', () => {
const config = loadConfig(['--goal-text', 'x'])
assert.equal(config.verify, '')
assert.equal(config.maxCost, 0)
assert.equal(config.maxTokens, 0)
assert.equal(config.maxStaleIterations, 0)
assert.equal(config.checkpoint, true)
assert.equal(config.guard, true)
assert.equal(config.redact, true)
assert.equal(config.review, false)
assert.equal(config.autoFreshTokens, 0)
assert.equal(config.syncGoal, true)
})
test('loadConfig defaults reviewAgent to the run agent when review is on', () => {
const config = loadConfig(['--goal-text', 'x', '--review', '--agent', 'code'])
assert.equal(config.review, true)
assert.equal(config.reviewAgent, 'code')
})