UNPKG

donobu

Version:

Create browser automations with an LLM agent and replay them as Playwright scripts.

60 lines (59 loc) 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AggregateExtractedStreetviewDataTool = void 0; const Tool_1 = require("./Tool"); const ExtractGoogleStreetviewEntityDataTool_1 = require("./ExtractGoogleStreetviewEntityDataTool"); /** * Ends the current flow by aggregating the data gathered by the ExtractGoogleStreetviewEntityDataTool * and GoToGoogleMapsStreetViewTool classes (likely kicked off by SpecialFlowsApi#extractGoogleStreetviewEntityData. * Note that there is special handling using the ExtractGoogleStreetviewEntityDataTool's * "recommendedNextStepForStreetViewNavigator", and "isBusinessMatch" fields. Additionally, there is * a check to see if GoToGoogleMapsStreetViewTool failed, since the entire flow is * predicated on that step succeeding. */ class AggregateExtractedStreetviewDataTool extends Tool_1.Tool { constructor() { const extractTool = new ExtractGoogleStreetviewEntityDataTool_1.ExtractGoogleStreetviewEntityDataTool(); super(AggregateExtractedStreetviewDataTool.NAME, `Aggregate data extracted by the '${extractTool.name}' tool and end the flow. IMPORTANT: Only business/entity data extracted via the '${extractTool.name}' tool is considered for this operation! Do NOT call this tool until all the relevant business/entity data has been extracted via that tool! Note that you need to call the '${extractTool.name}' for each unique street view!`, 'AggregateExtractedStreetviewDataToolCoreParameters', 'AggregateExtractedStreetviewDataToolGptParameters'); } async call(context, _parameters) { const resultMetadata = AggregateExtractedStreetviewDataTool.aggregateStreetviewData(context.invokedToolCalls, context.metadata); return { isSuccessful: true, forLlm: 'Successfully aggregated the extracted street view data.', metadata: resultMetadata, }; } static aggregateStreetviewData(invokedToolCalls, metadata) { const extractBusinessDataTool = new ExtractGoogleStreetviewEntityDataTool_1.ExtractGoogleStreetviewEntityDataTool(); const accumulatedResults = invokedToolCalls .filter((tc) => tc.toolName === extractBusinessDataTool.name) .map((tc) => tc.outcome) .filter((outcome) => outcome.metadata !== null) .map((outcome) => outcome.metadata) .filter((metadata) => metadata.businessSignage !== undefined) .sort((a, b) => { // Sort in reverse order (true values first) return b.isBusinessMatch - a.isBusinessMatch; }) .map((metadata) => { const copy = { ...metadata }; delete copy.recommendedNextStepForStreetViewNavigator; return copy; }); metadata.nextState = 'SUCCESS'; return { streetviews: accumulatedResults, flowId: metadata.id, }; } async callFromGpt(context, parameters) { return this.call(context, parameters); } } exports.AggregateExtractedStreetviewDataTool = AggregateExtractedStreetviewDataTool; AggregateExtractedStreetviewDataTool.NAME = 'aggregateExtractedStreetviewData'; //# sourceMappingURL=AggregateExtractedStreetviewDataTool.js.map