diff --git a/apps/playground/next-env.d.ts b/apps/playground/next-env.d.ts
index c4b7818..9edff1c 100644
--- a/apps/playground/next-env.d.ts
+++ b/apps/playground/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/playground/src/components/sidebar/ToolsSidebar.tsx b/apps/playground/src/components/sidebar/ToolsSidebar.tsx
index 6edcaae..34687ef 100644
--- a/apps/playground/src/components/sidebar/ToolsSidebar.tsx
+++ b/apps/playground/src/components/sidebar/ToolsSidebar.tsx
@@ -65,7 +65,11 @@ export function ToolsSidebar(): React.ReactElement {
No tools found
) : (
filteredTools.map((tool) => (
-
+
{tool.exportName}
diff --git a/apps/playground/src/lib/dynamic-tool-loader.ts b/apps/playground/src/lib/dynamic-tool-loader.ts
index 09a8815..438afd7 100644
--- a/apps/playground/src/lib/dynamic-tool-loader.ts
+++ b/apps/playground/src/lib/dynamic-tool-loader.ts
@@ -1,4 +1,4 @@
-import { tool, jsonSchema } from 'ai';
+import { jsonSchema, tool } from 'ai';
// Cache for tool wrappers (process-level)
const moduleCache = new Map();
diff --git a/apps/railway-executor/server.ts b/apps/railway-executor/server.ts
index 0d78c28..117f0b0 100644
--- a/apps/railway-executor/server.ts
+++ b/apps/railway-executor/server.ts
@@ -107,7 +107,9 @@ async function loadAndDescribe(req: Request): Promise {
// Strategy 3: Try Zod v3 schema (detect via _def property and convert)
if (!rawJsonSchema && toolModule.inputSchema._def) {
- console.log(`📋 Detected Zod schema (v3), converting with zod-to-json-schema for ${cacheKey}`);
+ console.log(
+ `📋 Detected Zod schema (v3), converting with zod-to-json-schema for ${cacheKey}`
+ );
try {
rawJsonSchema = zodToJsonSchema(toolModule.inputSchema);
console.log(`✅ Successfully converted Zod schema for ${cacheKey}`);
diff --git a/apps/web/next-env.d.ts b/apps/web/next-env.d.ts
index c4b7818..9edff1c 100644
--- a/apps/web/next-env.d.ts
+++ b/apps/web/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/lefthook.yml b/lefthook.yml
index 19df5eb..697b02f 100644
--- a/lefthook.yml
+++ b/lefthook.yml
@@ -9,9 +9,6 @@ pre-commit:
type-check:
run: pnpm type-check
- lint:
- run: pnpm lint
-
pre-push:
commands:
test:
diff --git a/packages/tools/search-registry/src/index.ts b/packages/tools/search-registry/src/index.ts
index daf6bfc..8cdfc70 100644
--- a/packages/tools/search-registry/src/index.ts
+++ b/packages/tools/search-registry/src/index.ts
@@ -68,7 +68,10 @@ export const searchTpmjsToolsTool = tool({
const baseUrl =
process.env.TPMJS_API_URL ||
(process.env.NODE_ENV === 'production' ? 'https://tpmjs.com' : 'http://localhost:3000');
- const url = `${baseUrl}/api/tools/search?${params}`;
+
+ // Note: /api/tools/search endpoint exists in local dev but not deployed yet
+ // Using /api/tools as fallback with client-side filtering for now
+ const url = `${baseUrl}/api/tools?${params}`;
console.log(`🌐 Fetching: ${url}`);
@@ -83,10 +86,34 @@ export const searchTpmjsToolsTool = tool({
const data = (await response.json()) as any;
console.log('📦 Search response data:', JSON.stringify(data, null, 2));
+ // Handle both /api/tools (deployed) and /api/tools/search (local dev) responses
+ const toolsArray = data.results?.tools || data.data || [];
+
+ // Client-side filtering if query is provided (since deployed /api/tools doesn't support search yet)
+ let filteredTools = toolsArray;
+ if (query?.trim()) {
+ const queryLower = query.toLowerCase();
+ filteredTools = toolsArray.filter((tool: any) => {
+ const searchableText = [
+ tool.description,
+ tool.exportName,
+ tool.package?.npmPackageName,
+ tool.package?.npmDescription,
+ ...(tool.package?.npmKeywords || []),
+ ]
+ .join(' ')
+ .toLowerCase();
+ return searchableText.includes(queryLower);
+ });
+ }
+
+ // Apply limit
+ const limitedTools = filteredTools.slice(0, limit);
+
return {
query,
- matchCount: data.results?.total || data.data?.length || 0,
- tools: (data.results?.tools || data.data || []).map((tool: any) => ({
+ matchCount: filteredTools.length,
+ tools: limitedTools.map((tool: any) => ({
toolId: tool.id,
packageName: tool.package.npmPackageName,
exportName: tool.exportName,