mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-27 13:40:37 +00:00
* feat(knowledge): integrate RAGFlow retrieval and management * test(knowledge): cover merged listing tool * feat(knowledge): add per-message retrieval scope * chore(docs): remove unrelated document * docs(knowledge): add interaction screenshots * feat(knowledge): simplify scope selector trigger * docs(knowledge): refresh selector screenshot * feat(knowledge): defer standalone management * docs(knowledge): show chat-only scope UI * fix(knowledge): honor scope on clarification replies * fix(knowledge): harden scoped replay validation * docs(knowledge): clarify replay scope precedence * fix(knowledge): keep provider settings on tools * fix(config): preserve tools-only knowledge settings * fix(knowledge): submit custom assistant identity * refactor(knowledge): trim PR scope changes * fix(knowledge): sanitize document scope display * feat(knowledge): enable scope selection in main chat * fix(knowledge): emphasize active scope icon without button frame * fix(knowledge): close context scrubbing and refresh e2e checks * fix(knowledge): preserve idempotent canonical retries * fix(knowledge): accept promptless conversation runs * style(knowledge): format backend regression tests * chore(knowledge): trim PR scope and fix frontend format * fix(knowledge): remove shared-scope notice * fix(knowledge): remove scope persistence notice * docs(knowledge): include main chat in catalog scope * fix(knowledge): preserve scope recovery and upgrades * fix(config): preserve LightRAG knowledge upgrades --------- Co-authored-by: foreleven <for-eleven@hotmail.com>
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import { fetch } from "@/core/api/fetcher";
|
|
import { getBackendBaseURL } from "@/core/config";
|
|
|
|
export interface FeaturesResponse {
|
|
agents_api: { enabled: boolean };
|
|
browser_control?: { enabled: boolean };
|
|
mcp_tasks?: { enabled: boolean };
|
|
subagent_batches?: {
|
|
enabled?: boolean;
|
|
repository_available?: boolean;
|
|
worker_running?: boolean;
|
|
max_running?: number;
|
|
};
|
|
conversation_references?: {
|
|
enabled?: boolean;
|
|
max_references?: number;
|
|
};
|
|
knowledge_base?: {
|
|
scope_selection_enabled?: boolean;
|
|
};
|
|
}
|
|
|
|
export interface ConversationReferencesCapability {
|
|
enabled: boolean;
|
|
maxReferences: number;
|
|
}
|
|
|
|
export interface SubagentBatchesCapability {
|
|
repositoryAvailable: boolean;
|
|
workerRunning: boolean;
|
|
maxRunning: number;
|
|
}
|
|
|
|
export async function fetchFeatures(): Promise<FeaturesResponse> {
|
|
const res = await fetch(`${getBackendBaseURL()}/api/features`);
|
|
if (!res.ok) {
|
|
throw new Error(`Failed to load features: ${res.statusText}`);
|
|
}
|
|
return (await res.json()) as FeaturesResponse;
|
|
}
|
|
|
|
export async function fetchAgentsApiEnabled(): Promise<boolean> {
|
|
return (await fetchFeatures()).agents_api.enabled;
|
|
}
|
|
|
|
export async function fetchBrowserControlEnabled(): Promise<boolean> {
|
|
return (await fetchFeatures()).browser_control?.enabled ?? false;
|
|
}
|
|
|
|
export async function fetchMcpTasksEnabled(): Promise<boolean> {
|
|
return (await fetchFeatures()).mcp_tasks?.enabled ?? false;
|
|
}
|
|
|
|
export async function fetchSubagentBatchesCapability(): Promise<SubagentBatchesCapability> {
|
|
const feature = (await fetchFeatures()).subagent_batches;
|
|
const legacyEnabled = feature?.enabled ?? false;
|
|
return {
|
|
repositoryAvailable: feature?.repository_available ?? legacyEnabled,
|
|
workerRunning: feature?.worker_running ?? legacyEnabled,
|
|
maxRunning: feature?.max_running ?? 0,
|
|
};
|
|
}
|
|
|
|
export async function fetchConversationReferencesCapability(): Promise<ConversationReferencesCapability> {
|
|
const features = await fetchFeatures();
|
|
const capability = features.conversation_references;
|
|
const maxReferences = capability?.max_references;
|
|
return {
|
|
enabled: capability?.enabled === true,
|
|
maxReferences:
|
|
typeof maxReferences === "number" &&
|
|
Number.isInteger(maxReferences) &&
|
|
maxReferences > 0
|
|
? maxReferences
|
|
: 0,
|
|
};
|
|
}
|
|
|
|
export async function fetchKnowledgeBaseFeature(): Promise<{
|
|
scopeSelectionEnabled: boolean;
|
|
}> {
|
|
const feature = (await fetchFeatures()).knowledge_base;
|
|
return {
|
|
scopeSelectionEnabled: feature?.scope_selection_enabled ?? false,
|
|
};
|
|
}
|