Files
waggle-os/packages/server/tests/launch-args.test.ts
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

40 lines
1.6 KiB
TypeScript

/**
* AI-OS #5 fast-follow — promptArgTemplate application: a third-party adapter's
* declarative template turns a raw prompt into CLI args at launch. Focused unit
* on the exported resolver (the route just looks the manifest up + calls it).
*/
import { describe, it, expect } from 'vitest';
import { resolveLaunchArgs } from '../src/local/routes/tools.js';
import type { ToolManifest } from '@waggle/shared';
const manifest = (promptArgTemplate?: string[]): ToolManifest => ({
id: 'foo',
displayName: 'Foo',
launchable: true,
hookCapable: false,
hookPointer: '.foo/hm.json',
detect: { kind: 'path', binaryName: 'foo' },
...(promptArgTemplate ? { promptArgTemplate } : {}),
builtin: false,
});
describe('resolveLaunchArgs (#5 fast-follow)', () => {
it('passes through explicit args (built-in path) unchanged', () => {
expect(resolveLaunchArgs(manifest(['--print', '{prompt}']), { args: ['--print', 'hi'], prompt: 'ignored' }))
.toEqual(['--print', 'hi']);
});
it('applies a third-party promptArgTemplate when a prompt is given and no args', () => {
expect(resolveLaunchArgs(manifest(['--print', '{prompt}']), { prompt: 'hello' }))
.toEqual(['--print', 'hello']);
});
it('returns undefined with no args and no template', () => {
expect(resolveLaunchArgs(manifest(), { prompt: 'hello' })).toBeUndefined();
});
it('returns undefined with a template but no prompt', () => {
expect(resolveLaunchArgs(manifest(['--print', '{prompt}']), {})).toBeUndefined();
});
it('returns undefined when the manifest is missing', () => {
expect(resolveLaunchArgs(undefined, { prompt: 'hello' })).toBeUndefined();
});
});