From 65e076f80175ac1bf1f0804687c4efbc4ae80b17 Mon Sep 17 00:00:00 2001 From: sid597 Date: Sat, 17 May 2025 17:11:24 +0530 Subject: [PATCH 1/5] use validRelations and types, address other review points --- .../components/DiscourseContextOverlay.tsx | 247 +++++++++++++++--- 1 file changed, 213 insertions(+), 34 deletions(-) diff --git a/apps/roam/src/components/DiscourseContextOverlay.tsx b/apps/roam/src/components/DiscourseContextOverlay.tsx index a9b9284e5..c0d2bb2d1 100644 --- a/apps/roam/src/components/DiscourseContextOverlay.tsx +++ b/apps/roam/src/components/DiscourseContextOverlay.tsx @@ -5,6 +5,7 @@ import { Position, Tooltip, ControlGroup, + Spinner, } from "@blueprintjs/core"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import ReactDOM from "react-dom"; @@ -19,7 +20,9 @@ import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTit import getDiscourseContextResults from "~/utils/getDiscourseContextResults"; import findDiscourseNode from "~/utils/findDiscourseNode"; import getDiscourseNodes from "~/utils/getDiscourseNodes"; -import getDiscourseRelations from "~/utils/getDiscourseRelations"; +import getDiscourseRelations, { + DiscourseRelation, +} from "~/utils/getDiscourseRelations"; import ExtensionApiContextProvider from "roamjs-components/components/ExtensionApiContext"; import { OnloadArgs } from "roamjs-components/types/native"; import AutocompleteInput from "roamjs-components/components/AutocompleteInput"; @@ -27,6 +30,12 @@ import getAllPageNames from "roamjs-components/queries/getAllPageNames"; import { Result } from "roamjs-components/types/query-builder"; import createBlock from "roamjs-components/writes/createBlock"; import { getBlockUidFromTarget } from "roamjs-components/dom"; +import { + findSimilarNodesUsingHyde, + SuggestedNode, + RelationDetails, + CandidateNodeWithEmbedding, +} from "~/utils/hyde"; type DiscourseData = { results: Awaited>; @@ -87,6 +96,67 @@ const getAllReferencesOnPage = (pageTitle: string) => { })) as Result[]; }; +type SelfNodeType = { + type: string; + text: string; + format: string; +}; + +type AllNodesType = ReadonlyArray; + +const getUniqueLabelTypeTriplets = ( + connectingRelations: DiscourseRelation[], + selfNode: SelfNodeType, + allNodes: AllNodesType, +): RelationDetails[] => { + const relatedNodeType = selfNode.type; + + const mappedItems = connectingRelations.flatMap((relation) => { + let targetNodeIdentifier: string; + let targetNodeDetails: { text: string; format: string } | undefined; + let finalRelationLabel: string; + + if (relation.source === relatedNodeType) { + targetNodeIdentifier = relation.destination; + finalRelationLabel = relation.label; + const destinationNode = allNodes.find( + (n) => n.type === targetNodeIdentifier, + ); + if (destinationNode && destinationNode.text && destinationNode.format) { + targetNodeDetails = { + text: destinationNode.text, + format: destinationNode.format, + }; + } + } else if (relation.destination === relatedNodeType) { + targetNodeIdentifier = relation.source; + finalRelationLabel = relation.complement; + const sourceNode = allNodes.find((n) => n.type === targetNodeIdentifier); + if (sourceNode && sourceNode.text && sourceNode.format) { + targetNodeDetails = { + text: sourceNode.text, + format: sourceNode.format, + }; + } + } else { + return []; + } + + if (!targetNodeDetails) { + return []; + } + + const mappedItem: RelationDetails = { + relationLabel: finalRelationLabel, + relatedNodeText: targetNodeDetails.text, + relatedNodeFormat: targetNodeDetails.format, + }; + return [mappedItem]; + }); + + return mappedItems; +}; + const DiscourseContextOverlay = ({ tag, id, @@ -102,9 +172,14 @@ const DiscourseContextOverlay = ({ const [results, setResults] = useState([]); const [refs, setRefs] = useState(0); const [score, setScore] = useState(0); + const [isSearchingHyde, setIsSearchingHyde] = useState(false); + const [hydeFilteredNodes, setHydeFilteredNodes] = useState( + [], + ); const discourseNode = useMemo(() => findDiscourseNode(tagUid), [tagUid]); const relations = useMemo(() => getDiscourseRelations(), []); + const allNodes = useMemo(() => getDiscourseNodes(), []); const getInfo = useCallback( () => @@ -138,29 +213,56 @@ const DiscourseContextOverlay = ({ getInfo(); }, [refresh, getInfo]); - // Suggestive Mode - const validTypes = useMemo(() => { - if (!discourseNode) return []; - const selfType = discourseNode.type; - const validRelations = relations.filter((relation) => - [relation.source, relation.destination].includes(selfType), + const suggestionContextData = useMemo(() => { + const selfNode = discourseNode; + + if (!selfNode || !selfNode.text || !selfNode.format) { + return { + validTypes: [] as string[], + uniqueRelationTypeTriplets: [] as RelationDetails[], + }; + } + const selfType = selfNode.type; + + const relationsConnectingToSelf = relations.filter( + (relation) => + relation.source === selfType || relation.destination === selfType, + ); + const uniqueTriplets = getUniqueLabelTypeTriplets( + relationsConnectingToSelf, + selfNode, + allNodes, + ); + + const relationsInvolvingSelfBroadly = relations.filter((relation) => + [relation.source, relation.destination, relation.label].includes( + selfType, + ), ); - const hasSelfRelation = validRelations.some( + const hasSelfRelation = relationsInvolvingSelfBroadly.some( (relation) => relation.source === selfType && relation.destination === selfType, ); const types = Array.from( new Set( - validRelations.flatMap((relation) => [ + relationsInvolvingSelfBroadly.flatMap((relation) => [ relation.source, relation.destination, ]), ), ); - return hasSelfRelation ? types : types.filter((type) => type !== selfType); - }, [discourseNode, relations]); + const filteredTypes = hasSelfRelation + ? types + : types.filter((type) => type !== selfType); + + return { + validTypes: filteredTypes, + uniqueRelationTypeTriplets: uniqueTriplets, + }; + }, [discourseNode, relations, allNodes]); + + const { validTypes, uniqueRelationTypeTriplets } = suggestionContextData; - const [suggestedNodes, setSuggestedNodes] = useState([]); const [currentPageInput, setCurrentPageInput] = useState(""); const [selectedPage, setSelectedPage] = useState(null); const allPages = useMemo(() => getAllPageNames(), []); @@ -170,7 +272,7 @@ const DiscourseContextOverlay = ({ useEffect(() => { if (!selectedPage) { - setSuggestedNodes([]); + setHydeFilteredNodes([]); return; } const nodesOnPage = getAllReferencesOnPage(selectedPage); @@ -178,25 +280,98 @@ const DiscourseContextOverlay = ({ .map((n) => { const node = findDiscourseNode(n.uid); if (!node || node.backedBy === "default") return null; + if (!validTypes.includes(node.type)) return null; return { uid: n.uid, text: n.text, type: node.type, }; }) - .filter((node) => node !== null) - .filter((node) => validTypes.includes(node.type)) - .filter((node) => !results.some((r) => Object.values(r.results).some((result) => result.uid === node.uid))); + .filter((node): node is SuggestedNode => node !== null) + .filter( + (node) => + !results.some((r) => + Object.values(r.results).some((result) => result.uid === node.uid), + ), + ); - setSuggestedNodes(nodes); - }, [selectedPage, discourseNode, relations]); + if (nodes.length > 0 && uniqueRelationTypeTriplets.length > 0) { + const performSearch = async () => { + setIsSearchingHyde(true); + setHydeFilteredNodes([]); + try { + const foundNodes = await runHydeSearch({ + currentSuggestions: nodes, + currentNodeText: tag, + relationDetails: uniqueRelationTypeTriplets, + }); + setHydeFilteredNodes(foundNodes); + } catch (error) { + console.error( + "Error during HyDE search operation in useEffect:", + error, + ); + setHydeFilteredNodes([]); + } finally { + setIsSearchingHyde(false); + } + }; + performSearch(); + } + }, [selectedPage, results, validTypes, tag, uniqueRelationTypeTriplets]); - const handleCreateBlock = async (node: { uid: string; text: string }) => { + const handleCreateBlock = async (node: SuggestedNode) => { await createBlock({ parentUid: blockUid, node: { text: `[[${node.text}]]` }, }); - setSuggestedNodes(suggestedNodes.filter((n) => n.uid !== node.uid)); + setHydeFilteredNodes(hydeFilteredNodes.filter((n) => n.uid !== node.uid)); + }; + + type RunHydeSearchArgs = { + currentSuggestions: SuggestedNode[]; + currentNodeText: string; + relationDetails: RelationDetails[]; + }; + + const runHydeSearch = async ({ + currentSuggestions, + currentNodeText, + relationDetails, + }: RunHydeSearchArgs): Promise => { + if ( + !currentSuggestions.length || + !currentNodeText || + !relationDetails.length + ) { + return []; + } + + try { + const candidateNodesForHyde = currentSuggestions.map((node) => { + const nodeWithEmbedding = { + uid: node.uid, + text: node.text, + type: node.type, + embedding: [] as number[], + }; + return nodeWithEmbedding as CandidateNodeWithEmbedding; + }); + + const foundNodes: SuggestedNode[] = await findSimilarNodesUsingHyde({ + candidateNodes: candidateNodesForHyde, + currentNodeText: currentNodeText, + relationDetails: relationDetails, + }); + + return foundNodes; + } catch (error) { + console.error( + "Error during HyDE search with default RPC subset search:", + error, + ); + return []; + } }; return ( @@ -246,21 +421,25 @@ const DiscourseContextOverlay = ({

Suggested Relationships

+ {isSearchingHyde && ( + + )}
    - {suggestedNodes.length > 0 ? ( - suggestedNodes.map((node) => ( -
  • - {node.text} -
  • - )) - ) : ( -
  • No relations found
  • + {!isSearchingHyde && hydeFilteredNodes.length > 0 + ? hydeFilteredNodes.map((node) => ( +
  • + {node.text} +
  • + )) + : null} + {!isSearchingHyde && hydeFilteredNodes.length === 0 && ( +
  • No relevant relations found.
  • )}
From f362843eda492c65c237ea10c31331cb09c96024 Mon Sep 17 00:00:00 2001 From: sid597 Date: Tue, 20 May 2025 13:20:35 +0530 Subject: [PATCH 2/5] address review --- .../components/DiscourseContextOverlay.tsx | 123 +++++++----------- apps/roam/src/utils/hyde.ts | 4 +- 2 files changed, 46 insertions(+), 81 deletions(-) diff --git a/apps/roam/src/components/DiscourseContextOverlay.tsx b/apps/roam/src/components/DiscourseContextOverlay.tsx index c0d2bb2d1..346fb3d8e 100644 --- a/apps/roam/src/components/DiscourseContextOverlay.tsx +++ b/apps/roam/src/components/DiscourseContextOverlay.tsx @@ -19,7 +19,7 @@ import nanoid from "nanoid"; import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle"; import getDiscourseContextResults from "~/utils/getDiscourseContextResults"; import findDiscourseNode from "~/utils/findDiscourseNode"; -import getDiscourseNodes from "~/utils/getDiscourseNodes"; +import getDiscourseNodes, { DiscourseNode } from "~/utils/getDiscourseNodes"; import getDiscourseRelations, { DiscourseRelation, } from "~/utils/getDiscourseRelations"; @@ -96,67 +96,6 @@ const getAllReferencesOnPage = (pageTitle: string) => { })) as Result[]; }; -type SelfNodeType = { - type: string; - text: string; - format: string; -}; - -type AllNodesType = ReadonlyArray; - -const getUniqueLabelTypeTriplets = ( - connectingRelations: DiscourseRelation[], - selfNode: SelfNodeType, - allNodes: AllNodesType, -): RelationDetails[] => { - const relatedNodeType = selfNode.type; - - const mappedItems = connectingRelations.flatMap((relation) => { - let targetNodeIdentifier: string; - let targetNodeDetails: { text: string; format: string } | undefined; - let finalRelationLabel: string; - - if (relation.source === relatedNodeType) { - targetNodeIdentifier = relation.destination; - finalRelationLabel = relation.label; - const destinationNode = allNodes.find( - (n) => n.type === targetNodeIdentifier, - ); - if (destinationNode && destinationNode.text && destinationNode.format) { - targetNodeDetails = { - text: destinationNode.text, - format: destinationNode.format, - }; - } - } else if (relation.destination === relatedNodeType) { - targetNodeIdentifier = relation.source; - finalRelationLabel = relation.complement; - const sourceNode = allNodes.find((n) => n.type === targetNodeIdentifier); - if (sourceNode && sourceNode.text && sourceNode.format) { - targetNodeDetails = { - text: sourceNode.text, - format: sourceNode.format, - }; - } - } else { - return []; - } - - if (!targetNodeDetails) { - return []; - } - - const mappedItem: RelationDetails = { - relationLabel: finalRelationLabel, - relatedNodeText: targetNodeDetails.text, - relatedNodeFormat: targetNodeDetails.format, - }; - return [mappedItem]; - }); - - return mappedItems; -}; - const DiscourseContextOverlay = ({ tag, id, @@ -218,8 +157,8 @@ const DiscourseContextOverlay = ({ if (!selfNode || !selfNode.text || !selfNode.format) { return { - validTypes: [] as string[], - uniqueRelationTypeTriplets: [] as RelationDetails[], + validTypes: [], + uniqueRelationTypeTriplets: [], }; } const selfType = selfNode.type; @@ -228,11 +167,43 @@ const DiscourseContextOverlay = ({ (relation) => relation.source === selfType || relation.destination === selfType, ); - const uniqueTriplets = getUniqueLabelTypeTriplets( - relationsConnectingToSelf, - selfNode, - allNodes, - ); + + const uniqueTriplets = useMemo(() => { + const relatedNodeType = selfNode.type; + + return relationsConnectingToSelf.flatMap((relation) => { + const isSelfSource = relation.source === relatedNodeType; + const isSelfDestination = relation.destination === relatedNodeType; + + let targetNodeType: string; + let currentRelationLabel: string; + + if (isSelfSource) { + targetNodeType = relation.destination; + currentRelationLabel = relation.label; + } else if (isSelfDestination) { + targetNodeType = relation.source; + currentRelationLabel = relation.complement; + } else { + return []; + } + + const identifiedTargetNode = allNodes.find( + (node) => node.type === targetNodeType, + ); + + if (!identifiedTargetNode) { + return []; + } + + const mappedItem: RelationDetails = { + relationLabel: currentRelationLabel, + relatedNodeText: identifiedTargetNode.text, + relatedNodeFormat: identifiedTargetNode.format, + }; + return [mappedItem]; + }); + }, [relationsConnectingToSelf, selfNode.type, allNodes]); const relationsInvolvingSelfBroadly = relations.filter((relation) => [relation.source, relation.destination, relation.label].includes( @@ -348,15 +319,11 @@ const DiscourseContextOverlay = ({ } try { - const candidateNodesForHyde = currentSuggestions.map((node) => { - const nodeWithEmbedding = { - uid: node.uid, - text: node.text, - type: node.type, - embedding: [] as number[], - }; - return nodeWithEmbedding as CandidateNodeWithEmbedding; - }); + const candidateNodesForHyde = currentSuggestions.map((node) => ({ + uid: node.uid, + text: node.text, + type: node.type, + })); const foundNodes: SuggestedNode[] = await findSimilarNodesUsingHyde({ candidateNodes: candidateNodesForHyde, diff --git a/apps/roam/src/utils/hyde.ts b/apps/roam/src/utils/hyde.ts index 1e24635e9..de5f8b624 100644 --- a/apps/roam/src/utils/hyde.ts +++ b/apps/roam/src/utils/hyde.ts @@ -17,7 +17,6 @@ export type EmbeddingVectorType = number[]; export type CandidateNodeWithEmbedding = Result & { type: string; - embedding: EmbeddingVectorType; }; export type SuggestedNode = Result & { @@ -308,8 +307,7 @@ const rankNodes = ({ maxScores.forEach((score, uid) => { const fullNode = nodeMap.get(uid); if (fullNode) { - const { embedding, ...restOfNode } = fullNode; - const suggestedNodeObject: SuggestedNode = restOfNode; + const suggestedNodeObject: SuggestedNode = fullNode; combinedResults.push({ node: suggestedNodeObject, score }); } }); From 0e73c4f6650ce58bddb31b42868e197b0c2b96dc Mon Sep 17 00:00:00 2001 From: sid597 Date: Wed, 21 May 2025 17:52:25 +0530 Subject: [PATCH 3/5] address review without ai, first pass --- .../components/DiscourseContextOverlay.tsx | 197 ++++++++---------- apps/roam/src/utils/hyde.ts | 3 +- 2 files changed, 84 insertions(+), 116 deletions(-) diff --git a/apps/roam/src/components/DiscourseContextOverlay.tsx b/apps/roam/src/components/DiscourseContextOverlay.tsx index 346fb3d8e..3c725e3d6 100644 --- a/apps/roam/src/components/DiscourseContextOverlay.tsx +++ b/apps/roam/src/components/DiscourseContextOverlay.tsx @@ -19,10 +19,8 @@ import nanoid from "nanoid"; import getPageUidByPageTitle from "roamjs-components/queries/getPageUidByPageTitle"; import getDiscourseContextResults from "~/utils/getDiscourseContextResults"; import findDiscourseNode from "~/utils/findDiscourseNode"; -import getDiscourseNodes, { DiscourseNode } from "~/utils/getDiscourseNodes"; -import getDiscourseRelations, { - DiscourseRelation, -} from "~/utils/getDiscourseRelations"; +import getDiscourseNodes from "~/utils/getDiscourseNodes"; +import getDiscourseRelations from "~/utils/getDiscourseRelations"; import ExtensionApiContextProvider from "roamjs-components/components/ExtensionApiContext"; import { OnloadArgs } from "roamjs-components/types/native"; import AutocompleteInput from "roamjs-components/components/AutocompleteInput"; @@ -34,7 +32,6 @@ import { findSimilarNodesUsingHyde, SuggestedNode, RelationDetails, - CandidateNodeWithEmbedding, } from "~/utils/hyde"; type DiscourseData = { @@ -152,87 +149,72 @@ const DiscourseContextOverlay = ({ getInfo(); }, [refresh, getInfo]); - const suggestionContextData = useMemo(() => { - const selfNode = discourseNode; + const validRelations = useMemo(() => { + if (!discourseNode) return []; + const selfType = discourseNode.type; - if (!selfNode || !selfNode.text || !selfNode.format) { - return { - validTypes: [], - uniqueRelationTypeTriplets: [], - }; - } - const selfType = selfNode.type; - - const relationsConnectingToSelf = relations.filter( + return relations.filter( (relation) => relation.source === selfType || relation.destination === selfType, ); + }, [relations, discourseNode]); + + const uniqueRelationTypeTriplets = useMemo(() => { + if (!discourseNode) return []; + const relatedNodeType = discourseNode.type; + + return validRelations.flatMap((relation) => { + const isSelfSource = relation.source === relatedNodeType; + const isSelfDestination = relation.destination === relatedNodeType; + + let targetNodeType: string; + let currentRelationLabel: string; + + if (isSelfSource) { + targetNodeType = relation.destination; + currentRelationLabel = relation.label; + } else if (isSelfDestination) { + targetNodeType = relation.source; + currentRelationLabel = relation.complement; + } else { + return []; + } - const uniqueTriplets = useMemo(() => { - const relatedNodeType = selfNode.type; - - return relationsConnectingToSelf.flatMap((relation) => { - const isSelfSource = relation.source === relatedNodeType; - const isSelfDestination = relation.destination === relatedNodeType; - - let targetNodeType: string; - let currentRelationLabel: string; - - if (isSelfSource) { - targetNodeType = relation.destination; - currentRelationLabel = relation.label; - } else if (isSelfDestination) { - targetNodeType = relation.source; - currentRelationLabel = relation.complement; - } else { - return []; - } + const identifiedTargetNode = allNodes.find( + (node) => node.type === targetNodeType, + ); - const identifiedTargetNode = allNodes.find( - (node) => node.type === targetNodeType, - ); + if (!identifiedTargetNode) { + return []; + } - if (!identifiedTargetNode) { - return []; - } + const mappedItem: RelationDetails = { + relationLabel: currentRelationLabel, + relatedNodeText: identifiedTargetNode.text, + relatedNodeFormat: identifiedTargetNode.format, + }; + return [mappedItem]; + }); + }, [validRelations, discourseNode, allNodes]); - const mappedItem: RelationDetails = { - relationLabel: currentRelationLabel, - relatedNodeText: identifiedTargetNode.text, - relatedNodeFormat: identifiedTargetNode.format, - }; - return [mappedItem]; - }); - }, [relationsConnectingToSelf, selfNode.type, allNodes]); + const validTypes = useMemo(() => { + if (!discourseNode) return []; + const selfType = discourseNode.type; - const relationsInvolvingSelfBroadly = relations.filter((relation) => - [relation.source, relation.destination, relation.label].includes( - selfType, - ), - ); - const hasSelfRelation = relationsInvolvingSelfBroadly.some( + const hasSelfRelation = validRelations.some( (relation) => relation.source === selfType && relation.destination === selfType, ); const types = Array.from( new Set( - relationsInvolvingSelfBroadly.flatMap((relation) => [ + validRelations.flatMap((relation) => [ relation.source, relation.destination, ]), ), ); - const filteredTypes = hasSelfRelation - ? types - : types.filter((type) => type !== selfType); - - return { - validTypes: filteredTypes, - uniqueRelationTypeTriplets: uniqueTriplets, - }; - }, [discourseNode, relations, allNodes]); - - const { validTypes, uniqueRelationTypeTriplets } = suggestionContextData; + return hasSelfRelation ? types : types.filter((type) => type !== selfType); + }, [discourseNode, validRelations]); const [currentPageInput, setCurrentPageInput] = useState(""); const [selectedPage, setSelectedPage] = useState(null); @@ -271,11 +253,27 @@ const DiscourseContextOverlay = ({ setIsSearchingHyde(true); setHydeFilteredNodes([]); try { - const foundNodes = await runHydeSearch({ - currentSuggestions: nodes, - currentNodeText: tag, - relationDetails: uniqueRelationTypeTriplets, - }); + const candidateNodesForHyde = nodes.map((node) => ({ + uid: node.uid, + text: node.text, + type: node.type, + })); + + // TODO: Remove this once the HyDE search is working + const foundNodes: SuggestedNode[] = + await tempFindSimilarNodesUsingHyde({ + candidateNodes: candidateNodesForHyde, + currentNodeText: tag, + relationDetails: uniqueRelationTypeTriplets, + }); + + // TODO: Uncomment this once the HyDE search is working + // const foundNodes: SuggestedNode[] = await findSimilarNodesUsingHyde({ + // candidateNodes: candidateNodesForHyde, + // currentNodeText: tag, + // relationDetails: uniqueRelationTypeTriplets, + // }); + setHydeFilteredNodes(foundNodes); } catch (error) { console.error( @@ -291,6 +289,19 @@ const DiscourseContextOverlay = ({ } }, [selectedPage, results, validTypes, tag, uniqueRelationTypeTriplets]); + // TODO: Remove this once the HyDE search is working + const tempFindSimilarNodesUsingHyde = async ({ + candidateNodes, + currentNodeText, + relationDetails, + }: { + candidateNodes: SuggestedNode[]; + currentNodeText: string; + relationDetails: RelationDetails[]; + }): Promise => { + return candidateNodes; + }; + const handleCreateBlock = async (node: SuggestedNode) => { await createBlock({ parentUid: blockUid, @@ -299,48 +310,6 @@ const DiscourseContextOverlay = ({ setHydeFilteredNodes(hydeFilteredNodes.filter((n) => n.uid !== node.uid)); }; - type RunHydeSearchArgs = { - currentSuggestions: SuggestedNode[]; - currentNodeText: string; - relationDetails: RelationDetails[]; - }; - - const runHydeSearch = async ({ - currentSuggestions, - currentNodeText, - relationDetails, - }: RunHydeSearchArgs): Promise => { - if ( - !currentSuggestions.length || - !currentNodeText || - !relationDetails.length - ) { - return []; - } - - try { - const candidateNodesForHyde = currentSuggestions.map((node) => ({ - uid: node.uid, - text: node.text, - type: node.type, - })); - - const foundNodes: SuggestedNode[] = await findSimilarNodesUsingHyde({ - candidateNodes: candidateNodesForHyde, - currentNodeText: currentNodeText, - relationDetails: relationDetails, - }); - - return foundNodes; - } catch (error) { - console.error( - "Error during HyDE search with default RPC subset search:", - error, - ); - return []; - } - }; - return ( { const fullNode = nodeMap.get(uid); if (fullNode) { - const suggestedNodeObject: SuggestedNode = fullNode; - combinedResults.push({ node: suggestedNodeObject, score }); + combinedResults.push({ node: fullNode, score }); } }); From 21ad829bb9a0310c17fc101646e0702ec4e5e953 Mon Sep 17 00:00:00 2001 From: sid597 Date: Wed, 21 May 2025 23:11:09 +0530 Subject: [PATCH 4/5] unused import and a console log for testin purpose --- apps/roam/src/components/DiscourseContextOverlay.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/roam/src/components/DiscourseContextOverlay.tsx b/apps/roam/src/components/DiscourseContextOverlay.tsx index 3c725e3d6..e369320bd 100644 --- a/apps/roam/src/components/DiscourseContextOverlay.tsx +++ b/apps/roam/src/components/DiscourseContextOverlay.tsx @@ -299,6 +299,7 @@ const DiscourseContextOverlay = ({ currentNodeText: string; relationDetails: RelationDetails[]; }): Promise => { + console.log("running stub for hyde search", candidateNodes); return candidateNodes; }; From 303070a8e06e20617d98865a0277157c5ba4a4bc Mon Sep 17 00:00:00 2001 From: sid597 Date: Wed, 21 May 2025 23:13:28 +0530 Subject: [PATCH 5/5] unused import and a console log for testin purpose --- apps/roam/src/components/DiscourseContextOverlay.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/roam/src/components/DiscourseContextOverlay.tsx b/apps/roam/src/components/DiscourseContextOverlay.tsx index e369320bd..eb34ff73f 100644 --- a/apps/roam/src/components/DiscourseContextOverlay.tsx +++ b/apps/roam/src/components/DiscourseContextOverlay.tsx @@ -28,11 +28,7 @@ import getAllPageNames from "roamjs-components/queries/getAllPageNames"; import { Result } from "roamjs-components/types/query-builder"; import createBlock from "roamjs-components/writes/createBlock"; import { getBlockUidFromTarget } from "roamjs-components/dom"; -import { - findSimilarNodesUsingHyde, - SuggestedNode, - RelationDetails, -} from "~/utils/hyde"; +import { SuggestedNode, RelationDetails } from "~/utils/hyde"; type DiscourseData = { results: Awaited>;