mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 06:23:06 +08:00
fix ai streaming
This commit is contained in:
@@ -37,14 +37,18 @@ export async function askAi(
|
|||||||
|
|
||||||
let answer = "";
|
let answer = "";
|
||||||
let sources: any[] = [];
|
let sources: any[] = [];
|
||||||
|
let buffer = "";
|
||||||
|
|
||||||
if (reader) {
|
if (reader) {
|
||||||
while (true) {
|
while (true) {
|
||||||
const { done, value } = await reader.read();
|
const { done, value } = await reader.read();
|
||||||
if (done) break;
|
if (done) break;
|
||||||
|
|
||||||
const chunk = decoder.decode(value);
|
buffer += decoder.decode(value, { stream: true });
|
||||||
const lines = chunk.split("\n");
|
const lines = buffer.split("\n");
|
||||||
|
|
||||||
|
// Keep the last incomplete line in the buffer
|
||||||
|
buffer = lines.pop() || "";
|
||||||
|
|
||||||
for (const line of lines) {
|
for (const line of lines) {
|
||||||
if (line.startsWith("data: ")) {
|
if (line.startsWith("data: ")) {
|
||||||
|
|||||||
+1
-1
Submodule apps/server/src/ee updated: 18e00b1866...075761c2d9
@@ -117,7 +117,7 @@ export class EnvironmentVariables {
|
|||||||
|
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@ValidateIf((obj) => obj.AI_EMBEDDING_DIMENSION)
|
@ValidateIf((obj) => obj.AI_EMBEDDING_DIMENSION)
|
||||||
@IsIn(['768', '1024', '1536'])
|
@IsIn(['768', '1024', '1536', '2000'])
|
||||||
@IsString()
|
@IsString()
|
||||||
AI_EMBEDDING_DIMENSION: string;
|
AI_EMBEDDING_DIMENSION: string;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { Editor, findParentNode, isTextSelection } from "@tiptap/core";
|
|||||||
import { Selection, Transaction } from "@tiptap/pm/state";
|
import { Selection, Transaction } from "@tiptap/pm/state";
|
||||||
import { CellSelection, TableMap } from "@tiptap/pm/tables";
|
import { CellSelection, TableMap } from "@tiptap/pm/tables";
|
||||||
import { Node, ResolvedPos } from "@tiptap/pm/model";
|
import { Node, ResolvedPos } from "@tiptap/pm/model";
|
||||||
import Table from "@tiptap/extension-table";
|
|
||||||
import { sanitizeUrl as braintreeSanitizeUrl } from "@braintree/sanitize-url";
|
import { sanitizeUrl as braintreeSanitizeUrl } from "@braintree/sanitize-url";
|
||||||
import { customAlphabet } from "nanoid";
|
import { customAlphabet } from "nanoid";
|
||||||
|
|
||||||
@@ -289,7 +288,7 @@ export const isColumnGripSelected = ({
|
|||||||
const node = nodeDOM || domAtPos;
|
const node = nodeDOM || domAtPos;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!editor.isActive(Table.name) ||
|
!editor.isActive("table") ||
|
||||||
!node ||
|
!node ||
|
||||||
isTableSelected(state.selection)
|
isTableSelected(state.selection)
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user