From d6d73364bb0dbf46a0d162bcea5b45b99a9ca939 Mon Sep 17 00:00:00 2001 From: William Thorsen Date: Sat, 30 May 2026 21:09:32 -0700 Subject: [PATCH] agents|test: Pin --kb resolution for a single-entry default registry Add a regression test covering the exact registry shape from #684: a single-entry registry whose sole entry is both default: true and the explicitly-requested entry, resolved via --kb. The explicit-resolution path already handled this correctly, but the existing suite only exercised multi-entry registries, leaving the reported single-entry scenario without a durable guard. Backed by a new home-single-default fixture mirroring the issue's registry. --- .../fixtures/home-single-default/.agents/kb.yaml | 7 +++++++ .../kb-shared/__tests__/resolve-writable-kb.test.ts | 10 ++++++++++ 2 files changed, 17 insertions(+) create mode 100644 packages/agents/src/kb-shared/__tests__/fixtures/home-single-default/.agents/kb.yaml diff --git a/packages/agents/src/kb-shared/__tests__/fixtures/home-single-default/.agents/kb.yaml b/packages/agents/src/kb-shared/__tests__/fixtures/home-single-default/.agents/kb.yaml new file mode 100644 index 00000000..7e614fe5 --- /dev/null +++ b/packages/agents/src/kb-shared/__tests__/fixtures/home-single-default/.agents/kb.yaml @@ -0,0 +1,7 @@ +# Single-entry user-global registry fixture (regression: #684). +# Its sole entry is also the default, mirroring the issue's reported registry shape. +kbs: + coding: + path: ../../vault-b + description: Fixture single-entry default vault + default: true diff --git a/packages/agents/src/kb-shared/__tests__/resolve-writable-kb.test.ts b/packages/agents/src/kb-shared/__tests__/resolve-writable-kb.test.ts index a950e92f..2920ed0d 100644 --- a/packages/agents/src/kb-shared/__tests__/resolve-writable-kb.test.ts +++ b/packages/agents/src/kb-shared/__tests__/resolve-writable-kb.test.ts @@ -15,6 +15,7 @@ const HOME_WITH_DEFAULT = join(FIXTURES, 'home-with-default'); const HOME_MALFORMED = join(FIXTURES, 'malformed-registry'); const HOME_READONLY_DEFAULT = join(FIXTURES, 'home-readonly-default'); const HOME_READONLY_NAMED = join(FIXTURES, 'home-readonly-named'); +const HOME_SINGLE_DEFAULT = join(FIXTURES, 'home-single-default'); // A home directory with no `.agents/kb.yaml`, so the user-global registry resolves empty. const HOME_EMPTY = FIXTURES; @@ -68,6 +69,15 @@ describe(resolveWritableKb, () => { }); }); + it('resolves --kb for a single-entry registry whose sole entry is the default (regression: #684)', async () => { + const result = await resolveWritableKb({ startDir: '/', explicitKb: 'coding', home: HOME_SINGLE_DEFAULT }); + + expect(result).toEqual({ + ok: true, + kb: { name: 'coding', path: VAULT_B, source: 'explicit' }, + }); + }); + it('returns no-kb-resolvable when --kb names an entry that does not exist', async () => { const result = await resolveWritableKb({ startDir: PROJECT_KB, explicitKb: 'nonexistent', home: HOME_EMPTY });