diff --git a/plugins/ultraplan-local/lib/parsers/arg-parser.mjs b/plugins/ultraplan-local/lib/parsers/arg-parser.mjs index aa6cda2..550a43a 100644 --- a/plugins/ultraplan-local/lib/parsers/arg-parser.mjs +++ b/plugins/ultraplan-local/lib/parsers/arg-parser.mjs @@ -31,6 +31,11 @@ const FLAG_SCHEMA = { valued: ['--project', '--since'], aliases: {}, }, + ultracontinue: { + boolean: ['--help', '--cleanup', '--confirm', '--dry-run'], + valued: [], + aliases: {}, + }, }; /** diff --git a/plugins/ultraplan-local/tests/lib/arg-parser.test.mjs b/plugins/ultraplan-local/tests/lib/arg-parser.test.mjs index 42624fe..6425252 100644 --- a/plugins/ultraplan-local/tests/lib/arg-parser.test.mjs +++ b/plugins/ultraplan-local/tests/lib/arg-parser.test.mjs @@ -96,3 +96,45 @@ test('ultrareview — unknown flag goes to unknown[]', () => { const r = parseArgs('--mystery foo', 'ultrareview'); assert.ok(r.unknown.includes('--mystery')); }); + +test('ultracontinue — empty args produce no flags and no positional', () => { + const r = parseArgs('', 'ultracontinue'); + assert.equal(r.command, 'ultracontinue'); + assert.deepEqual(r.flags, {}); + assert.deepEqual(r.positional, []); + assert.deepEqual(r.errors, []); +}); + +test('ultracontinue — --help boolean flag', () => { + const r = parseArgs('--help', 'ultracontinue'); + assert.equal(r.flags['--help'], true); +}); + +test('ultracontinue — -h treated as positional (no alias resolution)', () => { + const r = parseArgs('-h', 'ultracontinue'); + assert.deepEqual(r.positional, ['-h']); + assert.deepEqual(r.errors, []); + assert.equal(r.flags['--help'], undefined); +}); + +test('ultracontinue — --cleanup boolean flag', () => { + const r = parseArgs('--cleanup', 'ultracontinue'); + assert.equal(r.flags['--cleanup'], true); +}); + +test('ultracontinue — --cleanup --confirm both flags', () => { + const r = parseArgs('--cleanup --confirm', 'ultracontinue'); + assert.equal(r.flags['--cleanup'], true); + assert.equal(r.flags['--confirm'], true); +}); + +test('ultracontinue — positional project dir captured', () => { + const r = parseArgs('.claude/projects/2026-05-04-foo', 'ultracontinue'); + assert.deepEqual(r.positional, ['.claude/projects/2026-05-04-foo']); +}); + +test('ultracontinue — .md positional accepted by parser (rejection is command-level)', () => { + const r = parseArgs('NEXT-SESSION-PROMPT.local.md', 'ultracontinue'); + assert.deepEqual(r.positional, ['NEXT-SESSION-PROMPT.local.md']); + assert.deepEqual(r.errors, []); +});