blob: f1901cee701ba171388f125f6bfbb36afcb85ff8 [file]
import assert from 'node:assert/strict';
import { describe, test } from 'node:test';
import { parseMakaRunArgs } from '../run-command-core.js';
describe('maka run argument parsing', () => {
test('recognizes stdin prompt mode and rejects malformed limits', () => {
assert.deepEqual(parseMakaRunArgs(['-']), {
kind: 'run',
options: { stdinPrompt: true },
});
assert.equal(parseMakaRunArgs(['x', '--timeout', '0']).kind, 'error');
assert.equal(parseMakaRunArgs(['x', '--max-steps', '1.5']).kind, 'error');
});
test('accepts only the explicit non-interactive sandbox bypass flag', () => {
assert.deepEqual(parseMakaRunArgs(['run tools', '--yolo']), {
kind: 'run',
options: {
prompt: 'run tools',
stdinPrompt: false,
yolo: true,
},
});
});
test('rejects removed permission modes and rule flags', () => {
assert.equal(parseMakaRunArgs(['x', '--permission-mode', 'ask']).kind, 'error');
assert.equal(parseMakaRunArgs(['x', '--allow', 'tool:Read']).kind, 'error');
assert.equal(parseMakaRunArgs(['x', '--deny', 'Bash(npm test)']).kind, 'error');
});
test('parses resume and continue session selectors and rejects combining them', () => {
assert.deepEqual(parseMakaRunArgs(['next', '--resume', 'session-1']), {
kind: 'run',
options: { prompt: 'next', stdinPrompt: false, resumeId: 'session-1' },
});
assert.deepEqual(parseMakaRunArgs(['next', '--continue']), {
kind: 'run',
options: { prompt: 'next', stdinPrompt: false, continueLatest: true },
});
assert.equal(parseMakaRunArgs(['next', '--resume', 'session-1', '--continue']).kind, 'error');
});
});