Skip to content

Commit 8696cd1

Browse files
committed
test(agent): cover knowledge-base selector resolution for unique tool ids
1 parent 732ae04 commit 8696cd1

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

apps/sim/providers/utils.test.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,3 +1576,69 @@ describe('transformBlockTool multi-instance unique IDs', () => {
15761576
expect(result?.id).toBe('table_query_rows')
15771577
})
15781578
})
1579+
1580+
describe('transformBlockTool knowledge-base multi-instance unique IDs', () => {
1581+
const knowledgeBlockDef = {
1582+
type: 'knowledge',
1583+
inputs: {},
1584+
subBlocks: [
1585+
{ id: 'operation', type: 'dropdown' },
1586+
{
1587+
id: 'knowledgeBaseSelector',
1588+
type: 'knowledge-base-selector',
1589+
canonicalParamId: 'knowledgeBaseId',
1590+
mode: 'basic',
1591+
},
1592+
{
1593+
id: 'manualKnowledgeBaseId',
1594+
type: 'short-input',
1595+
canonicalParamId: 'knowledgeBaseId',
1596+
mode: 'advanced',
1597+
},
1598+
],
1599+
tools: {
1600+
access: ['knowledge_search', 'knowledge_upload_chunk'],
1601+
config: { tool: () => 'knowledge_search' },
1602+
},
1603+
}
1604+
1605+
const getAllBlocks = () => [knowledgeBlockDef]
1606+
const getTool = (id: string) => ({
1607+
id,
1608+
name: 'Search',
1609+
description: 'Search the knowledge base',
1610+
params: {},
1611+
})
1612+
1613+
const transformKb = (
1614+
params: Record<string, unknown>,
1615+
canonicalModes?: Record<string, 'basic' | 'advanced'>
1616+
) =>
1617+
transformBlockTool(
1618+
{ type: 'knowledge', operation: 'search', params },
1619+
{ selectedOperation: 'search', getAllBlocks, getTool, canonicalModes }
1620+
)
1621+
1622+
it('appends the knowledge base id when stored under the basic selector subblock key', async () => {
1623+
const result = await transformKb({ knowledgeBaseSelector: 'kb_abc' })
1624+
expect(result?.id).toBe('knowledge_search_kb_abc')
1625+
})
1626+
1627+
it('appends the knowledge base id resolved from the advanced manual input', async () => {
1628+
const result = await transformKb(
1629+
{ manualKnowledgeBaseId: 'kb_xyz' },
1630+
{ 'knowledge:knowledgeBaseId': 'advanced' }
1631+
)
1632+
expect(result?.id).toBe('knowledge_search_kb_xyz')
1633+
})
1634+
1635+
it('appends the canonical knowledge base id when already present in params', async () => {
1636+
const result = await transformKb({ knowledgeBaseId: 'kb_direct' })
1637+
expect(result?.id).toBe('knowledge_search_kb_direct')
1638+
})
1639+
1640+
it('falls back to the base tool id when no knowledge base is selected', async () => {
1641+
const result = await transformKb({})
1642+
expect(result?.id).toBe('knowledge_search')
1643+
})
1644+
})

0 commit comments

Comments
 (0)