mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 16:56:22 +02:00
Some checks are pending
Build and Push Docker Images / tag_release (push) Waiting to run
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Blocked by required conditions
- Introduced a `ProcessingMode` enum to differentiate between basic and premium processing modes. - Updated `EtlRequest` to include a `processing_mode` field, defaulting to basic. - Enhanced ETL pipeline services to utilize the selected processing mode for Azure Document Intelligence and LlamaCloud parsing. - Modified various routes and services to handle processing mode, affecting document upload and indexing tasks. - Improved error handling and logging to include processing mode details. - Added tests to validate processing mode functionality and its impact on ETL operations.
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import type { ThreadMessageLike } from "@assistant-ui/react";
|
|
import type { MessageRecord } from "./thread-persistence";
|
|
|
|
/**
|
|
* Convert backend message to assistant-ui ThreadMessageLike format.
|
|
* Migrates legacy `thinking-steps` parts to `data-thinking-steps` (assistant-ui data parts).
|
|
*/
|
|
export function convertToThreadMessage(msg: MessageRecord): ThreadMessageLike {
|
|
let content: ThreadMessageLike["content"];
|
|
|
|
if (typeof msg.content === "string") {
|
|
content = [{ type: "text", text: msg.content }];
|
|
} else if (Array.isArray(msg.content)) {
|
|
const convertedContent = msg.content
|
|
.filter((part: unknown) => {
|
|
if (typeof part !== "object" || part === null || !("type" in part)) return true;
|
|
const partType = (part as { type: string }).type;
|
|
return partType !== "mentioned-documents" && partType !== "attachments";
|
|
})
|
|
.map((part: unknown) => {
|
|
if (
|
|
typeof part === "object" &&
|
|
part !== null &&
|
|
"type" in part &&
|
|
(part as { type: string }).type === "thinking-steps"
|
|
) {
|
|
return {
|
|
type: "data-thinking-steps",
|
|
data: { steps: (part as { steps: unknown[] }).steps ?? [] },
|
|
};
|
|
}
|
|
return part;
|
|
});
|
|
content =
|
|
convertedContent.length > 0
|
|
? (convertedContent as ThreadMessageLike["content"])
|
|
: [{ type: "text", text: "" }];
|
|
} else {
|
|
content = [{ type: "text", text: String(msg.content) }];
|
|
}
|
|
|
|
const metadata =
|
|
msg.author_id || msg.token_usage
|
|
? {
|
|
custom: {
|
|
...(msg.author_id && {
|
|
author: {
|
|
displayName: msg.author_display_name ?? null,
|
|
avatarUrl: msg.author_avatar_url ?? null,
|
|
},
|
|
}),
|
|
...(msg.token_usage && { usage: msg.token_usage }),
|
|
},
|
|
}
|
|
: undefined;
|
|
|
|
return {
|
|
id: `msg-${msg.id}`,
|
|
role: msg.role,
|
|
content,
|
|
createdAt: new Date(msg.created_at),
|
|
metadata,
|
|
};
|
|
}
|