UNPKG

@pipedream/linkup

Version:

Pipedream Linkup Components

112 lines (110 loc) 3.29 kB
import app from "../../linkup.app.mjs"; export default { name: "Linkup Search", description: "Search and retrieve insights using the Linkup API. [See the documentation](https://docs.linkup.so/pages/api-reference/endpoint/post-search)", key: "linkup-search", version: "0.0.1", type: "action", props: { app, query: { type: "string", label: "Query", description: "The search query for Linkup.", }, depth: { type: "string", label: "Search Depth", description: "Defines the precision of the search. `standard` returns results quickly; `deep` takes longer but yields more complete results.", options: [ "standard", "deep", ], }, outputType: { type: "string", label: "Output Type", description: "The type of output you want to get. Use `structured` for a custom-formatted response defined by `structuredOutputSchema`", options: [ { value: "sourcedAnswer", label: "Natural language answer and its sources", }, { value: "searchResults", label: "Raw context", }, { value: "structured", label: "Json format of the response", }, ], reloadProps: true, }, structuredOutputSchema: { type: "string", label: "Structured Output Schema", description: "Schema for structured output (only applicable if Output Type is 'structured'). Provide a JSON schema (as a string) representing the desired response format.", optional: true, hidden: true, }, includeImages: { type: "boolean", label: "Include Images", description: "Defines whether the API should include images in its results", optional: true, }, }, additionalProps(props) { if (this.outputType === "structured") { props.structuredOutputSchema.optional = false; props.structuredOutputSchema.hidden = false; props.structuredOutputSchema.default = `{ "type": "object", "properties": { "results": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "year": { "type": "number" } }, "required": [ "name", "year" ], "additionalProperties": false } } }, "required": [ "results" ], "additionalProperties": false }`; } return {}; }, async run({ $ }) { try { const response = await this.app.search({ query: this.query, depth: this.depth, outputType: this.outputType, structuredOutputSchema: this.structuredOutputSchema && JSON.parse(this.structuredOutputSchema), includeImages: this.includeImages, }); $.export("$summary", "Successfully completed search query"); return response; } catch (error) { console.error("Error calling Linkup API:", error); throw new Error(`Failed to fetch data from Linkup API: ${error.message}`); } }, };