From f9c2dd1b3ad096f87933bee67f464889470f3f15 Mon Sep 17 00:00:00 2001
From: Alex Yang <himself65@outlook.com>
Date: Tue, 23 Jan 2024 20:03:22 -0600
Subject: [PATCH] fix: abstract some node API (#426)

---
 packages/core/src/GlobalsHelper.ts                  |  2 +-
 packages/core/src/Node.ts                           |  3 ++-
 packages/core/src/QueryEngine.ts                    |  2 +-
 packages/core/src/engines/chat/ContextChatEngine.ts |  2 +-
 .../src/engines/chat/DefaultContextGenerator.ts     |  2 +-
 packages/core/src/env/index.edge-light.ts           | 13 +++++++++++++
 packages/core/src/env/index.ts                      |  4 +++-
 packages/core/src/indices/BaseIndex.ts              |  2 +-
 packages/core/src/llm/ollama.ts                     |  2 +-
 9 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/packages/core/src/GlobalsHelper.ts b/packages/core/src/GlobalsHelper.ts
index d9d4495b5..a6bd82500 100644
--- a/packages/core/src/GlobalsHelper.ts
+++ b/packages/core/src/GlobalsHelper.ts
@@ -1,7 +1,7 @@
 import { encodingForModel } from "js-tiktoken";
 
-import { randomUUID } from "node:crypto";
 import { Event, EventTag, EventType } from "./callbacks/CallbackManager";
+import { randomUUID } from "./env";
 
 export enum Tokenizers {
   CL100K_BASE = "cl100k_base",
diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts
index cf4f66928..a588c51a5 100644
--- a/packages/core/src/Node.ts
+++ b/packages/core/src/Node.ts
@@ -1,6 +1,7 @@
 import _ from "lodash";
-import { createHash, randomUUID } from "node:crypto";
+import { createHash } from "node:crypto";
 import path from "node:path";
+import { randomUUID } from "./env";
 
 export enum NodeRelationship {
   SOURCE = "SOURCE",
diff --git a/packages/core/src/QueryEngine.ts b/packages/core/src/QueryEngine.ts
index 0c709504b..790930d71 100644
--- a/packages/core/src/QueryEngine.ts
+++ b/packages/core/src/QueryEngine.ts
@@ -1,4 +1,3 @@
-import { randomUUID } from "node:crypto";
 import { NodeWithScore, TextNode } from "./Node";
 import {
   BaseQuestionGenerator,
@@ -10,6 +9,7 @@ import { BaseRetriever } from "./Retriever";
 import { ServiceContext, serviceContextFromDefaults } from "./ServiceContext";
 import { QueryEngineTool, ToolMetadata } from "./Tool";
 import { Event } from "./callbacks/CallbackManager";
+import { randomUUID } from "./env";
 import { BaseNodePostprocessor } from "./postprocessors";
 import {
   BaseSynthesizer,
diff --git a/packages/core/src/engines/chat/ContextChatEngine.ts b/packages/core/src/engines/chat/ContextChatEngine.ts
index 235006597..43cdd2af2 100644
--- a/packages/core/src/engines/chat/ContextChatEngine.ts
+++ b/packages/core/src/engines/chat/ContextChatEngine.ts
@@ -1,9 +1,9 @@
-import { randomUUID } from "node:crypto";
 import { ChatHistory, getHistory } from "../../ChatHistory";
 import { ContextSystemPrompt } from "../../Prompt";
 import { Response } from "../../Response";
 import { BaseRetriever } from "../../Retriever";
 import { Event } from "../../callbacks/CallbackManager";
+import { randomUUID } from "../../env";
 import { ChatMessage, ChatResponseChunk, LLM, OpenAI } from "../../llm";
 import { MessageContent } from "../../llm/types";
 import { extractText, streamConverter, streamReducer } from "../../llm/utils";
diff --git a/packages/core/src/engines/chat/DefaultContextGenerator.ts b/packages/core/src/engines/chat/DefaultContextGenerator.ts
index ea5604f2c..b5db4d27b 100644
--- a/packages/core/src/engines/chat/DefaultContextGenerator.ts
+++ b/packages/core/src/engines/chat/DefaultContextGenerator.ts
@@ -1,8 +1,8 @@
-import { randomUUID } from "node:crypto";
 import { NodeWithScore, TextNode } from "../../Node";
 import { ContextSystemPrompt, defaultContextSystemPrompt } from "../../Prompt";
 import { BaseRetriever } from "../../Retriever";
 import { Event } from "../../callbacks/CallbackManager";
+import { randomUUID } from "../../env";
 import { BaseNodePostprocessor } from "../../postprocessors";
 import { Context, ContextGenerator } from "./types";
 
diff --git a/packages/core/src/env/index.edge-light.ts b/packages/core/src/env/index.edge-light.ts
index e4a6d208b..509d269e8 100644
--- a/packages/core/src/env/index.edge-light.ts
+++ b/packages/core/src/env/index.edge-light.ts
@@ -1 +1,14 @@
 export const EOL = "\n";
+
+export function ok(value: unknown, message?: string): asserts value {
+  if (!value) {
+    const error = Error(message);
+    error.name = "AssertionError";
+    error.message = message ?? "The expression evaluated to a falsy value.";
+    throw error;
+  }
+}
+
+export function randomUUID(): string {
+  return crypto.randomUUID();
+}
diff --git a/packages/core/src/env/index.ts b/packages/core/src/env/index.ts
index ce1ebf034..d3759e07b 100644
--- a/packages/core/src/env/index.ts
+++ b/packages/core/src/env/index.ts
@@ -1,3 +1,5 @@
+import { ok } from "node:assert";
+import { randomUUID } from "node:crypto";
 import { EOL } from "node:os";
 
-export { EOL };
+export { EOL, ok, randomUUID };
diff --git a/packages/core/src/indices/BaseIndex.ts b/packages/core/src/indices/BaseIndex.ts
index 98e60ac5d..1f0ee6757 100644
--- a/packages/core/src/indices/BaseIndex.ts
+++ b/packages/core/src/indices/BaseIndex.ts
@@ -1,8 +1,8 @@
-import { randomUUID } from "node:crypto";
 import { BaseNode, Document, jsonToNode } from "../Node";
 import { BaseQueryEngine } from "../QueryEngine";
 import { BaseRetriever } from "../Retriever";
 import { ServiceContext } from "../ServiceContext";
+import { randomUUID } from "../env";
 import { StorageContext } from "../storage/StorageContext";
 import { BaseDocumentStore } from "../storage/docStore/types";
 import { BaseIndexStore } from "../storage/indexStore/types";
diff --git a/packages/core/src/llm/ollama.ts b/packages/core/src/llm/ollama.ts
index 96a9aba44..f1e9b3efc 100644
--- a/packages/core/src/llm/ollama.ts
+++ b/packages/core/src/llm/ollama.ts
@@ -1,6 +1,6 @@
-import { ok } from "node:assert";
 import { CallbackManager, Event } from "../callbacks/CallbackManager";
 import { BaseEmbedding } from "../embeddings";
+import { ok } from "../env";
 import {
   ChatMessage,
   ChatResponse,
-- 
GitLab