release 1.0.0: cost control, 41 tools, 29 skills, custom commands, auto-load

This commit is contained in:
Muhammad Zakir Ramadhan committed 2026-09-07 19:59:58 +07:00
1 parent a22d8e13b1
commit ffa9a02c26
97 files changed
+4791 -788

No files matched your search

+13
View File
@@ -60,6 +60,19 @@ test('writeConfigFile merges instead of clobbering unrelated keys', async () =>
expect(file.model).toBe('gpt-5');
});
test('maxSpendUsd and subagentModel load from the config file', async () => {
await writeConfigFile({ provider: 'openai', model: 'gpt-5', apiKey: 'sk-1', maxSpendUsd: 5, subagentModel: 'gpt-5-nano' });
const cfg = await loadConfig();
expect(cfg.maxSpendUsd).toBe(5);
expect(cfg.subagentModel).toBe('gpt-5-nano');
});
test('a non-positive maxSpendUsd is ignored rather than enforced', async () => {
await writeConfigFile({ provider: 'openai', model: 'gpt-5', apiKey: 'sk-1', maxSpendUsd: 0 });
const cfg = await loadConfig();
expect(cfg.maxSpendUsd).toBeUndefined();
});
/**
* What `/mcp add` and `/mcp remove` do to the file, exercised through the real
* persistence path. The hooks themselves live inline in cli.tsx, which a test