From 72cfd5fe50d02a5211d19e0e8be617b6881dd78f Mon Sep 17 00:00:00 2001 From: Sim Pi Agent Date: Wed, 29 Jul 2026 22:39:17 +0000 Subject: [PATCH 1/3] Pi: Fix Pinecone vector-search output options. The Pinecone block expose... --- apps/sim/tools/pinecone/search_vector.test.ts | 39 +++++++++++++++++++ apps/sim/tools/pinecone/search_vector.ts | 4 +- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 apps/sim/tools/pinecone/search_vector.test.ts diff --git a/apps/sim/tools/pinecone/search_vector.test.ts b/apps/sim/tools/pinecone/search_vector.test.ts new file mode 100644 index 00000000000..cc1f6991e40 --- /dev/null +++ b/apps/sim/tools/pinecone/search_vector.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, it } from 'vitest' +import { searchVectorTool } from '@/tools/pinecone/search_vector' + +describe('searchVectorTool', () => { + const buildBody = searchVectorTool.request.body! + const baseParams = { + indexHost: 'https://example.pinecone.io', + namespace: 'default', + vector: [0.1, 0.2], + apiKey: 'test-key', + } + + it.each([ + { + name: 'neither option', + options: {}, + expected: { includeValues: false, includeMetadata: false }, + }, + { + name: 'include values only', + options: { includeValues: true }, + expected: { includeValues: true, includeMetadata: false }, + }, + { + name: 'include metadata only', + options: { includeMetadata: true }, + expected: { includeValues: false, includeMetadata: true }, + }, + { + name: 'both options', + options: { includeValues: true, includeMetadata: true }, + expected: { includeValues: true, includeMetadata: true }, + }, + ])('maps $name to the Pinecone query flags', ({ options, expected }) => { + const body = buildBody({ ...baseParams, ...options }) + + expect(body).toMatchObject(expected) + }) +}) diff --git a/apps/sim/tools/pinecone/search_vector.ts b/apps/sim/tools/pinecone/search_vector.ts index c4854a40ab4..a4bef24bdf4 100644 --- a/apps/sim/tools/pinecone/search_vector.ts +++ b/apps/sim/tools/pinecone/search_vector.ts @@ -76,8 +76,8 @@ export const searchVectorTool: ToolConfig Date: Wed, 29 Jul 2026 22:45:45 +0000 Subject: [PATCH 2/3] Pi Babysit: address PR #6066 feedback --- apps/sim/blocks/blocks/pinecone.ts | 1 + apps/sim/tools/pinecone/search_vector.test.ts | 8 ++--- apps/sim/tools/pinecone/search_vector.ts | 34 +++++++++++++++++-- apps/sim/tools/pinecone/types.ts | 1 + 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/apps/sim/blocks/blocks/pinecone.ts b/apps/sim/blocks/blocks/pinecone.ts index 3d01b42f702..6448569405a 100644 --- a/apps/sim/blocks/blocks/pinecone.ts +++ b/apps/sim/blocks/blocks/pinecone.ts @@ -541,6 +541,7 @@ export const PineconeBlock: BlockConfig = { vector: { type: 'json', description: 'Query vector' }, includeValues: { type: 'boolean', description: 'Include vector values' }, includeMetadata: { type: 'boolean', description: 'Include metadata' }, + options: { type: 'json', description: 'Selected vector search options' }, id: { type: 'string', description: 'Vector identifier to update' }, values: { type: 'json', description: 'New dense vector values' }, sparseValues: { type: 'json', description: 'New sparse vector values' }, diff --git a/apps/sim/tools/pinecone/search_vector.test.ts b/apps/sim/tools/pinecone/search_vector.test.ts index cc1f6991e40..78192206c6d 100644 --- a/apps/sim/tools/pinecone/search_vector.test.ts +++ b/apps/sim/tools/pinecone/search_vector.test.ts @@ -13,22 +13,22 @@ describe('searchVectorTool', () => { it.each([ { name: 'neither option', - options: {}, + options: [], expected: { includeValues: false, includeMetadata: false }, }, { name: 'include values only', - options: { includeValues: true }, + options: ['includeValues'], expected: { includeValues: true, includeMetadata: false }, }, { name: 'include metadata only', - options: { includeMetadata: true }, + options: ['includeMetadata'], expected: { includeValues: false, includeMetadata: true }, }, { name: 'both options', - options: { includeValues: true, includeMetadata: true }, + options: ['includeValues', 'includeMetadata'], expected: { includeValues: true, includeMetadata: true }, }, ])('maps $name to the Pinecone query flags', ({ options, expected }) => { diff --git a/apps/sim/tools/pinecone/search_vector.ts b/apps/sim/tools/pinecone/search_vector.ts index a4bef24bdf4..eb5e8bf02bd 100644 --- a/apps/sim/tools/pinecone/search_vector.ts +++ b/apps/sim/tools/pinecone/search_vector.ts @@ -1,6 +1,26 @@ import type { PineconeResponse, PineconeSearchVectorParams } from '@/tools/pinecone/types' import type { ToolConfig } from '@/tools/types' +function parseBoolean(value: unknown): boolean { + if (typeof value === 'boolean') return value + if (typeof value === 'number') return value !== 0 + return typeof value === 'string' && ['true', '1'].includes(value.trim().toLowerCase()) +} + +function selectedOptions(value: string[] | string | undefined): Set { + if (Array.isArray(value)) return new Set(value) + if (typeof value !== 'string' || value.trim().length === 0) return new Set() + + try { + const parsed: unknown = JSON.parse(value) + return Array.isArray(parsed) + ? new Set(parsed.filter((item): item is string => typeof item === 'string')) + : new Set() + } catch { + return new Set() + } +} + export const searchVectorTool: ToolConfig = { id: 'pinecone_search_vector', name: 'Pinecone Search Vector', @@ -51,6 +71,12 @@ export const searchVectorTool: ToolConfig | string includeValues?: boolean includeMetadata?: boolean + options?: string[] | string } export interface PineconeDeleteVectorsParams { From 128451b2cbcba66018798e3d9cab4f20c00d2366 Mon Sep 17 00:00:00 2001 From: Sim Pi Agent Date: Wed, 29 Jul 2026 22:56:25 +0000 Subject: [PATCH 3/3] Pi Babysit: address PR #6066 feedback --- apps/sim/tools/pinecone/search_vector.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sim/tools/pinecone/search_vector.test.ts b/apps/sim/tools/pinecone/search_vector.test.ts index 78192206c6d..0159bed5d37 100644 --- a/apps/sim/tools/pinecone/search_vector.test.ts +++ b/apps/sim/tools/pinecone/search_vector.test.ts @@ -32,7 +32,7 @@ describe('searchVectorTool', () => { expected: { includeValues: true, includeMetadata: true }, }, ])('maps $name to the Pinecone query flags', ({ options, expected }) => { - const body = buildBody({ ...baseParams, ...options }) + const body = buildBody({ ...baseParams, options }) expect(body).toMatchObject(expected) })