SYMBOL INDEX (5168 symbols across 598 files) FILE: apps/MemOS-Cloud-OpenClaw-Plugin/index.js constant API_KEY_HELP_URL (line 14) | const API_KEY_HELP_URL = "https://memos-dashboard.openmem.net/cn/apikeys/"; constant ENV_FILE_SEARCH_HINTS (line 15) | const ENV_FILE_SEARCH_HINTS = ["~/.openclaw/.env", "~/.moltbot/.env", "~... constant MEMOS_SOURCE (line 16) | const MEMOS_SOURCE = "openclaw"; function warnMissingApiKey (line 18) | function warnMissingApiKey(log, context) { function stripPrependedPrompt (line 36) | function stripPrependedPrompt(content) { function getCounterSuffix (line 43) | function getCounterSuffix(sessionKey) { function bumpConversationCounter (line 49) | function bumpConversationCounter(sessionKey) { function getEffectiveAgentId (line 55) | function getEffectiveAgentId(cfg, ctx) { function resolveConversationId (line 63) | function resolveConversationId(cfg, ctx) { function buildSearchPayload (line 75) | function buildSearchPayload(cfg, prompt, ctx) { function buildAddMessagePayload (line 122) | function buildAddMessagePayload(cfg, messages, ctx) { function pickLastTurnMessages (line 150) | function pickLastTurnMessages(messages, cfg) { function pickFullSessionMessages (line 178) | function pickFullSessionMessages(messages, cfg) { function truncate (line 194) | function truncate(text, maxLen) { function sleep (line 200) | function sleep(ms) { function parseModelJson (line 204) | function parseModelJson(text) { function normalizeIndexList (line 233) | function normalizeIndexList(value, maxLen) { function buildRecallCandidates (line 247) | function buildRecallCandidates(data, cfg) { function applyRecallDecision (line 283) | function applyRecallDecision(data, decision, lists) { function callRecallFilterModel (line 297) | async function callRecallFilterModel(cfg, userPrompt, candidatePayload) { function maybeFilterRecallData (line 369) | async function maybeFilterRecallData(cfg, data, userPrompt, log) { method register (line 397) | register(api) { FILE: apps/MemOS-Cloud-OpenClaw-Plugin/lib/check-update.js function killProcessTree (line 11) | function killProcessTree(child) { constant CHECK_INTERVAL (line 29) | const CHECK_INTERVAL = 12 * 60 * 60 * 1000; constant UPDATE_TIMEOUT (line 30) | const UPDATE_TIMEOUT = 3 * 60 * 1000; constant PLUGIN_NAME (line 31) | const PLUGIN_NAME = "@memtensor/memos-cloud-openclaw-plugin"; constant CHECK_FILE (line 32) | const CHECK_FILE = path.join(os.tmpdir(), "memos_openclaw_update_check.j... constant ANSI (line 34) | const ANSI = { function getPackageVersion (line 43) | function getPackageVersion() { function getLatestVersion (line 54) | function getLatestVersion(log) { function compareVersions (line 92) | function compareVersions(v1, v2) { function startUpdateChecker (line 125) | function startUpdateChecker(log) { FILE: apps/MemOS-Cloud-OpenClaw-Plugin/lib/memos-cloud-api.js constant DEFAULT_BASE_URL (line 6) | const DEFAULT_BASE_URL = "https://memos.memtensor.cn/api/openmem/v1"; constant USER_QUERY_MARKER (line 7) | const USER_QUERY_MARKER = "user\u200b原\u200b始\u200bquery\u200b:\u200b\u2... constant ENV_SOURCES (line 8) | const ENV_SOURCES = [ function stripQuotes (line 18) | function stripQuotes(value) { function extractResultData (line 30) | function extractResultData(result) { function pad2 (line 35) | function pad2(value) { function formatTime (line 39) | function formatTime(value) { function parseEnvFile (line 57) | function parseEnvFile(content) { function loadEnvFiles (line 72) | function loadEnvFiles() { function loadEnvFromFiles (line 86) | function loadEnvFromFiles(name) { function loadEnvVar (line 95) | function loadEnvVar(name) { function getEnvFileStatus (line 103) | function getEnvFileStatus() { function parseBool (line 114) | function parseBool(value, fallback) { function parseNumber (line 123) | function parseNumber(value, fallback) { function buildConfig (line 129) | function buildConfig(pluginConfig = {}) { function callApi (line 224) | async function callApi({ baseUrl, apiKey, timeoutMs = 5000, retries = 1 ... function searchMemory (line 265) | async function searchMemory(cfg, payload) { function addMessage (line 269) | async function addMessage(cfg, payload) { function extractText (line 273) | function extractText(content) { function normalizePreferenceType (line 285) | function normalizePreferenceType(value) { function sanitizeInlineText (line 296) | function sanitizeInlineText(text) { function formatMemoryLine (line 301) | function formatMemoryLine(item, text, options = {}) { function formatPreferenceLine (line 311) | function formatPreferenceLine(item, text, options = {}) { function wrapCodeBlock (line 323) | function wrapCodeBlock(lines, options = {}) { function buildMemorySections (line 328) | function buildMemorySections(data, options = {}) { constant STATIC_RECALL_SYSTEM_PROMPT (line 359) | const STATIC_RECALL_SYSTEM_PROMPT = [ function buildMemoryPrependBlock (line 407) | function buildMemoryPrependBlock(data, options = {}) { function formatPromptBlockFromData (line 426) | function formatPromptBlockFromData(data, options = {}) { function formatPromptBlock (line 431) | function formatPromptBlock(result, options = {}) { function formatContextBlock (line 436) | function formatContextBlock(result, options = {}) { function formatRecallHookResult (line 481) | function formatRecallHookResult(result, options = {}) { function truncate (line 497) | function truncate(text, maxLen) { FILE: apps/memos-local-openclaw/index.ts function deduplicateHits (line 30) | function deduplicateHits(hits: T[]): T[] { method register (line 79) | register(api: OpenClawPluginApi) { FILE: apps/memos-local-openclaw/plugin-impl.ts function ownerFilterFor (line 17) | function ownerFilterFor(agentId: string | undefined): string[] { method register (line 68) | register(api: OpenClawPluginApi) { FILE: apps/memos-local-openclaw/scripts/postinstall.cjs constant RESET (line 8) | const RESET = "\x1b[0m"; constant GREEN (line 9) | const GREEN = "\x1b[32m"; constant YELLOW (line 10) | const YELLOW = "\x1b[33m"; constant RED (line 11) | const RED = "\x1b[31m"; constant CYAN (line 12) | const CYAN = "\x1b[36m"; constant BOLD (line 13) | const BOLD = "\x1b[1m"; constant DIM (line 14) | const DIM = "\x1b[2m"; function log (line 16) | function log(msg) { console.log(` ${CYAN}[memos-local]${RESET} ${msg}`); } function warn (line 17) | function warn(msg) { console.log(` ${YELLOW}⚠ [memos-local]${RESET} ${m... function ok (line 18) | function ok(msg) { console.log(` ${GREEN}✔ [memos-local]${RESET} ${msg}... function fail (line 19) | function fail(msg) { console.log(` ${RED}✖ [memos-local]${RESET} ${msg}... function phase (line 21) | function phase(n, title) { function cleanStaleArtifacts (line 44) | function cleanStaleArtifacts() { function ensureDependencies (line 112) | function ensureDependencies() { function cleanupLegacy (line 165) | function cleanupLegacy() { function installBundledSkill (line 276) | function installBundledSkill() { function findSqliteBinding (line 347) | function findSqliteBinding() { function sqliteBindingsExist (line 372) | function sqliteBindingsExist() { FILE: apps/memos-local-openclaw/scripts/refresh-summaries.ts constant TASK_SUMMARY_PROMPT (line 6) | const TASK_SUMMARY_PROMPT = `You create a DETAILED task summary from a m... function parseTitleFromSummary (line 43) | function parseTitleFromSummary(summary: string): { title: string; body: ... function main (line 53) | async function main() { FILE: apps/memos-local-openclaw/scripts/run-accuracy-test.ts constant FULL_MODE (line 28) | const FULL_MODE = args.includes("--full"); constant SKIP_INGEST (line 29) | const SKIP_INGEST = args.includes("--skip-ingest"); constant WORKERS (line 30) | const WORKERS = Number(args.find((_, i, a) => a[i - 1] === "--workers") ... constant INGEST_DELAY_MS (line 31) | const INGEST_DELAY_MS = 3000; function loadConfig (line 35) | function loadConfig() { type TestResult (line 47) | interface TestResult { constant RUN_ID (line 56) | const RUN_ID = Date.now(); constant SESSION_PREFIX (line 57) | const SESSION_PREFIX = `acc-${RUN_ID}`; function mkSession (line 60) | function mkSession(label: string) { function log (line 64) | function log(msg: string) { class ProgressTracker (line 71) | class ProgressTracker { method constructor (line 77) | constructor(phaseName: string, total: number) { method tick (line 82) | tick(label: string) { method summary (line 101) | summary(): string { function fmtDur (line 107) | function fmtDur(ms: number): string { function hitContains (line 115) | function hitContains(hits: any[], keyword: string): boolean { function sendViaGateway (line 125) | function sendViaGateway(sessionId: string, message: string): boolean { type ConversationCase (line 144) | interface ConversationCase { function buildTestCases (line 152) | function buildTestCases(): ConversationCase[] { type SearchCase (line 473) | interface SearchCase { function buildSearchCases (line 482) | function buildSearchCases(): SearchCase[] { function registerSessionsInStore (line 517) | function registerSessionsInStore(cases: ConversationCase[]) { function ingestPhase (line 570) | async function ingestPhase(cases: ConversationCase[]) { function runSearchTests (line 615) | async function runSearchTests(plugin: MemosLocalPlugin, cases: SearchCas... function runDedupChecks (line 667) | async function runDedupChecks(plugin: MemosLocalPlugin, tracker: Progres... function runSummaryChecks (line 691) | async function runSummaryChecks(plugin: MemosLocalPlugin, tracker: Progr... function runTopicChecks (line 716) | async function runTopicChecks(plugin: MemosLocalPlugin, tracker: Progres... function printReport (line 749) | function printReport(totalMs: number, ingestStats?: { successCount: numb... function main (line 786) | async function main() { FILE: apps/memos-local-openclaw/scripts/seed-test-data.ts constant DB_PATH (line 17) | const DB_PATH = path.join(os.homedir(), ".openclaw", "memos-local", "mem... constant HOUR (line 23) | const HOUR = 3600_000; constant MIN (line 24) | const MIN = 60_000; function seedTask (line 266) | function seedTask( FILE: apps/memos-local-openclaw/scripts/smoke-test.ts constant GREEN (line 29) | const GREEN = "\x1b[32m"; constant RED (line 30) | const RED = "\x1b[31m"; constant CYAN (line 31) | const CYAN = "\x1b[36m"; constant YELLOW (line 32) | const YELLOW = "\x1b[33m"; constant RESET (line 33) | const RESET = "\x1b[0m"; constant BOLD (line 34) | const BOLD = "\x1b[1m"; function ok (line 36) | function ok(msg: string) { console.log(`${GREEN} ✓ ${msg}${RESET}`); } function fail (line 37) | function fail(msg: string) { console.log(`${RED} ✗ ${msg}${RESET}`); } function section (line 38) | function section(msg: string) { console.log(`\n${BOLD}${CYAN}━━━ ${msg} ... function info (line 39) | function info(msg: string) { console.log(`${YELLOW} ℹ ${msg}${RESET}`); } function main (line 41) | async function main() { FILE: apps/memos-local-openclaw/scripts/start-viewer.ts function main (line 40) | async function main() { FILE: apps/memos-local-openclaw/scripts/test-agent-isolation.ts constant RUN_ID (line 20) | const RUN_ID = Date.now(); constant AGENT_A (line 21) | const AGENT_A = "iso-test-alpha"; constant AGENT_B (line 22) | const AGENT_B = "iso-test-beta"; constant UNIQUE_A (line 24) | const UNIQUE_A = `AlphaUniqueKey${RUN_ID}`; constant UNIQUE_B (line 25) | const UNIQUE_B = `BetaUniqueKey${RUN_ID}`; constant MSG_A1 (line 27) | const MSG_A1 = `我正在用 ${UNIQUE_A} 部署一个私有 Redis 缓存集群,配置主从复制和哨兵模式,端口 6379。`; constant MSG_A2 (line 28) | const MSG_A2 = `${UNIQUE_A} 的 Redis 集群已经部署完成,延迟从 50ms 降到了 3ms,命中率 95%。`; constant MSG_B1 (line 30) | const MSG_B1 = `帮我设置 ${UNIQUE_B} 的 PostgreSQL 数据库迁移方案,从 v14 升级到 v16,数据量约... constant MSG_B2 (line 31) | const MSG_B2 = `${UNIQUE_B} 的 PostgreSQL 迁移完成了,用了 pg_upgrade --link 模式,停... function log (line 36) | function log(msg: string) { function assert (line 41) | function assert(name: string, condition: boolean, detail: string) { function main (line 53) | async function main() { FILE: apps/memos-local-openclaw/src/capture/index.ts constant SKIP_ROLES (line 3) | const SKIP_ROLES: Set = new Set(["system"]); constant SYSTEM_BOILERPLATE_RE (line 5) | const SYSTEM_BOILERPLATE_RE = /^A new session was started via \/new or \... constant SELF_TOOLS (line 7) | const SELF_TOOLS = new Set([ constant INBOUND_META_SENTINELS (line 20) | const INBOUND_META_SENTINELS = [ constant SENTINEL_FAST_RE (line 29) | const SENTINEL_FAST_RE = new RegExp( constant ENVELOPE_PREFIX_RE (line 33) | const ENVELOPE_PREFIX_RE = function captureMessages (line 43) | function captureMessages( function stripInboundMetadata (line 104) | function stripInboundMetadata(text: string): string { constant THINKING_TAG_RE (line 154) | const THINKING_TAG_RE = /][\s\S]*?<\/think>\s*/gi; function stripThinkingTags (line 156) | function stripThinkingTags(text: string): string { function stripEnvelopePrefix (line 160) | function stripEnvelopePrefix(text: string): string { function stripMemoryInjection (line 171) | function stripMemoryInjection(text: string): string { function stripEvidenceWrappers (line 262) | function stripEvidenceWrappers(text: string, evidenceTag: string): string { FILE: apps/memos-local-openclaw/src/config.ts constant ENV_RE (line 4) | const ENV_RE = /\$\{([A-Z_][A-Z0-9_]*)\}/g; function resolveEnvVars (line 6) | function resolveEnvVars(value: string): string { function deepResolveEnv (line 10) | function deepResolveEnv(obj: T): T { function resolveConfig (line 23) | function resolveConfig(raw: Partial | undefined, state... function buildContext (line 58) | function buildContext( FILE: apps/memos-local-openclaw/src/embedding/index.ts class Embedder (line 10) | class Embedder { method constructor (line 11) | constructor( method provider (line 16) | get provider(): string { method dimensions (line 20) | get dimensions(): number { method embed (line 25) | async embed(texts: string[]): Promise { method embedQuery (line 38) | async embedQuery(text: string): Promise { method embedBatch (line 46) | private async embedBatch(texts: string[]): Promise { FILE: apps/memos-local-openclaw/src/embedding/local.ts function getExtractor (line 6) | function getExtractor(log: Logger): Promise { function embedLocal (line 26) | async function embedLocal(texts: string[], log: Logger): Promise|#)\s+.+$/gm; function chunkText (line 29) | function chunkText(text: string): RawChunk[] { function extractBraceBlocks (line 86) | function extractBraceBlocks( function countBraces (line 147) | function countBraces(line: string): number { function mergeSmallChunks (line 156) | function mergeSmallChunks(chunks: RawChunk[]): RawChunk[] { function splitOversized (line 181) | function splitOversized(chunks: RawChunk[]): RawChunk[] { function splitAtSentenceBoundary (line 193) | function splitAtSentenceBoundary(text: string): RawChunk[] { FILE: apps/memos-local-openclaw/src/ingest/dedup.ts function findDuplicate (line 12) | function findDuplicate( function findTopSimilar (line 44) | function findTopSimilar( FILE: apps/memos-local-openclaw/src/ingest/providers/anthropic.ts constant SYSTEM_PROMPT (line 3) | const SYSTEM_PROMPT = `You generate a retrieval-friendly title. constant TASK_SUMMARY_PROMPT (line 19) | const TASK_SUMMARY_PROMPT = `You create a DETAILED task summary from a m... function summarizeTaskAnthropic (line 57) | async function summarizeTaskAnthropic( constant TASK_TITLE_PROMPT (line 93) | const TASK_TITLE_PROMPT = `Generate a short title for a conversation task. function generateTaskTitleAnthropic (line 105) | async function generateTaskTitleAnthropic( constant TOPIC_JUDGE_PROMPT (line 141) | const TOPIC_JUDGE_PROMPT = `You are a conversation topic boundary detect... function judgeNewTopicAnthropic (line 167) | async function judgeNewTopicAnthropic( constant FILTER_RELEVANT_PROMPT (line 208) | const FILTER_RELEVANT_PROMPT = `You are a memory relevance judge. function filterRelevantAnthropic (line 229) | async function filterRelevantAnthropic( function parseFilterResult (line 275) | function parseFilterResult(raw: string, log: Logger): FilterResult { function summarizeAnthropic (line 292) | async function summarizeAnthropic( function judgeDedupAnthropic (line 336) | async function judgeDedupAnthropic( FILE: apps/memos-local-openclaw/src/ingest/providers/bedrock.ts constant SYSTEM_PROMPT (line 3) | const SYSTEM_PROMPT = `You generate a retrieval-friendly title. constant TASK_SUMMARY_PROMPT (line 19) | const TASK_SUMMARY_PROMPT = `You create a DETAILED task summary from a m... function summarizeTaskBedrock (line 57) | async function summarizeTaskBedrock( constant TASK_TITLE_PROMPT (line 94) | const TASK_TITLE_PROMPT = `Generate a short title for a conversation task. function generateTaskTitleBedrock (line 106) | async function generateTaskTitleBedrock( constant TOPIC_JUDGE_PROMPT (line 143) | const TOPIC_JUDGE_PROMPT = `You are a conversation topic boundary detect... function judgeNewTopicBedrock (line 169) | async function judgeNewTopicBedrock( constant FILTER_RELEVANT_PROMPT (line 211) | const FILTER_RELEVANT_PROMPT = `You are a memory relevance judge. function filterRelevantBedrock (line 232) | async function filterRelevantBedrock( function parseFilterResult (line 279) | function parseFilterResult(raw: string, log: Logger): FilterResult { function summarizeBedrock (line 296) | async function summarizeBedrock( function judgeDedupBedrock (line 344) | async function judgeDedupBedrock( FILE: apps/memos-local-openclaw/src/ingest/providers/gemini.ts constant SYSTEM_PROMPT (line 3) | const SYSTEM_PROMPT = `You generate a retrieval-friendly title. constant TASK_SUMMARY_PROMPT (line 19) | const TASK_SUMMARY_PROMPT = `You create a DETAILED task summary from a m... function summarizeTaskGemini (line 57) | async function summarizeTaskGemini( constant TASK_TITLE_PROMPT (line 93) | const TASK_TITLE_PROMPT = `Generate a short title for a conversation task. function generateTaskTitleGemini (line 105) | async function generateTaskTitleGemini( constant TOPIC_JUDGE_PROMPT (line 141) | const TOPIC_JUDGE_PROMPT = `You are a conversation topic boundary detect... function judgeNewTopicGemini (line 167) | async function judgeNewTopicGemini( constant FILTER_RELEVANT_PROMPT (line 208) | const FILTER_RELEVANT_PROMPT = `You are a memory relevance judge. function filterRelevantGemini (line 229) | async function filterRelevantGemini( function parseFilterResult (line 275) | function parseFilterResult(raw: string, log: Logger): FilterResult { function summarizeGemini (line 292) | async function summarizeGemini( function judgeDedupGemini (line 336) | async function judgeDedupGemini( FILE: apps/memos-local-openclaw/src/ingest/providers/index.ts function detectProvider (line 14) | function detectProvider( function normalizeEndpointForProvider (line 31) | function normalizeEndpointForProvider( function loadOpenClawFallbackConfig (line 49) | function loadOpenClawFallbackConfig(log: Logger): SummarizerConfig | und... type ModelHealthEntry (line 92) | interface ModelHealthEntry { class ModelHealthTracker (line 103) | class ModelHealthTracker { method recordSuccess (line 107) | recordSuccess(role: string, model: string): void { method recordError (line 124) | recordError(role: string, model: string, error: string): void { method getAll (line 134) | getAll(): ModelHealthEntry[] { method getOrCreate (line 138) | private getOrCreate(role: string): ModelHealthEntry { class Summarizer (line 150) | class Summarizer { method constructor (line 154) | constructor( method getConfigChain (line 167) | private getConfigChain(): SummarizerConfig[] { method tryChain (line 179) | private async tryChain( method summarize (line 199) | async summarize(text: string): Promise { method summarizeTask (line 249) | async summarizeTask(text: string): Promise { method generateTaskTitle (line 258) | async generateTaskTitle(text: string): Promise { method judgeNewTopic (line 264) | async judgeNewTopic(currentContext: string, newMessage: string): Promi... method filterRelevant (line 286) | async filterRelevant( method judgeDedup (line 297) | async judgeDedup( method getStrongConfig (line 308) | getStrongConfig(): SummarizerConfig | undefined { function callSummarize (line 315) | function callSummarize(cfg: SummarizerConfig, text: string, log: Logger)... function callSummarizeTask (line 338) | function callSummarizeTask(cfg: SummarizerConfig, text: string, log: Log... function callGenerateTaskTitle (line 361) | function callGenerateTaskTitle(cfg: SummarizerConfig, text: string, log:... function callTopicJudge (line 384) | function callTopicJudge(cfg: SummarizerConfig, currentContext: string, n... function callFilterRelevant (line 407) | function callFilterRelevant(cfg: SummarizerConfig, query: string, candid... function callJudgeDedup (line 430) | function callJudgeDedup(cfg: SummarizerConfig, newSummary: string, candi... function ruleFallback (line 455) | function ruleFallback(text: string): string { function taskFallback (line 460) | function taskFallback(text: string): string { function stripMarkdown (line 465) | function stripMarkdown(text: string): string { function wordCount (line 476) | function wordCount(text: string): number { FILE: apps/memos-local-openclaw/src/ingest/providers/openai.ts constant SYSTEM_PROMPT (line 3) | const SYSTEM_PROMPT = `You generate a retrieval-friendly title. constant TASK_SUMMARY_PROMPT (line 19) | const TASK_SUMMARY_PROMPT = `You create a DETAILED task summary from a m... function summarizeTaskOpenAI (line 57) | async function summarizeTaskOpenAI( constant TASK_TITLE_PROMPT (line 94) | const TASK_TITLE_PROMPT = `Generate a short title for a conversation task. function generateTaskTitleOpenAI (line 106) | async function generateTaskTitleOpenAI( function summarizeOpenAI (line 143) | async function summarizeOpenAI( constant TOPIC_JUDGE_PROMPT (line 181) | const TOPIC_JUDGE_PROMPT = `You are a conversation topic boundary detect... function judgeNewTopicOpenAI (line 207) | async function judgeNewTopicOpenAI( constant FILTER_RELEVANT_PROMPT (line 249) | const FILTER_RELEVANT_PROMPT = `You are a memory relevance judge. type FilterResult (line 267) | interface FilterResult { function filterRelevantOpenAI (line 272) | async function filterRelevantOpenAI( function parseFilterResult (line 319) | function parseFilterResult(raw: string, log: Logger): FilterResult { constant DEDUP_JUDGE_PROMPT (line 338) | const DEDUP_JUDGE_PROMPT = `You are a memory deduplication system. type DedupResult (line 360) | interface DedupResult { function judgeDedupOpenAI (line 367) | async function judgeDedupOpenAI( function parseDedupResult (line 410) | function parseDedupResult(raw: string, log: Logger): DedupResult { function normalizeChatEndpoint (line 429) | function normalizeChatEndpoint(url: string): string { FILE: apps/memos-local-openclaw/src/ingest/task-processor.ts constant TRIVIAL_PATTERNS (line 7) | const TRIVIAL_PATTERNS = [ constant SKIP_REASONS (line 13) | const SKIP_REASONS = { class TaskProcessor (line 30) | class TaskProcessor { method constructor (line 37) | constructor( method onTaskCompleted (line 45) | onTaskCompleted(cb: (task: Task) => void): void { method onChunksIngested (line 53) | async onChunksIngested(sessionKey: string, latestTimestamp: number, ow... method drainPending (line 65) | private async drainPending(): Promise { method detectAndProcess (line 82) | private async detectAndProcess(sessionKey: string, latestTimestamp: nu... method processChunksIncrementally (line 114) | private async processChunksIncrementally( method groupIntoTurns (line 213) | private groupIntoTurns(chunks: Chunk[]): Chunk[][] { method buildContextSummary (line 238) | private buildContextSummary(chunks: Chunk[]): string { method createNewTaskReturn (line 263) | private async createNewTaskReturn(sessionKey: string, timestamp: numbe... method createNewTask (line 281) | private async createNewTask(sessionKey: string, timestamp: number, own... method assignChunksToTask (line 286) | private assignChunksToTask(chunks: Chunk[], taskId: string): void { method assignUnassignedChunks (line 295) | private assignUnassignedChunks(sessionKey: string, taskId: string): vo... method finalizeTask (line 300) | async finalizeTask(task: Task): Promise { method shouldSkipSummary (line 368) | private shouldSkipSummary(chunks: Chunk[]): string | null { method looksLikeTrivialContent (line 429) | private looksLikeTrivialContent(text: string): boolean { method buildConversationText (line 442) | private buildConversationText(chunks: Chunk[]): string { method parseTitleFromSummary (line 456) | private parseTitleFromSummary(summary: string): { title: string; body:... method generateTitle (line 466) | private async generateTitle(chunks: Chunk[], fallback: string): Promis... method extractTitle (line 482) | private extractTitle(chunks: Chunk[]): string { method humanReadableSkipReason (line 494) | private humanReadableSkipReason(reason: string, chunks: Chunk[]): stri... method fallbackSummary (line 522) | private fallbackSummary(chunks: Chunk[]): string { FILE: apps/memos-local-openclaw/src/ingest/worker.ts class IngestWorker (line 10) | class IngestWorker { method constructor (line 17) | constructor( method getTaskProcessor (line 26) | getTaskProcessor(): TaskProcessor { return this.taskProcessor; } method enqueue (line 28) | enqueue(messages: ConversationMessage[]): void { method flush (line 39) | async flush(): Promise { method processQueue (line 46) | private async processQueue(): Promise { method ingestMessage (line 123) | private async ingestMessage(msg: ConversationMessage): Promise< method storeChunk (line 129) | private async storeChunk( FILE: apps/memos-local-openclaw/src/recall/engine.ts type SkillSearchScope (line 10) | type SkillSearchScope = "mix" | "self" | "public"; type RecallOptions (line 12) | interface RecallOptions { constant MAX_RECENT_QUERIES (line 20) | const MAX_RECENT_QUERIES = 20; class RecallEngine (line 22) | class RecallEngine { method constructor (line 25) | constructor( method search (line 31) | async search(opts: RecallOptions): Promise { method checkRepeat (line 173) | private checkRepeat(query: string, maxResults: number, minScore: numbe... method recordQuery (line 191) | private recordQuery(query: string, maxResults: number, minScore: numbe... method searchSkills (line 205) | async searchSkills(query: string, scope: SkillSearchScope, currentOwne... method judgeSkillRelevance (line 266) | private async judgeSkillRelevance( function makeExcerpt (line 291) | function makeExcerpt(content: string): string { FILE: apps/memos-local-openclaw/src/recall/mmr.ts function mmrRerank (line 12) | function mmrRerank( FILE: apps/memos-local-openclaw/src/recall/recency.ts function applyRecencyDecay (line 12) | function applyRecencyDecay( FILE: apps/memos-local-openclaw/src/recall/rrf.ts type RankedItem (line 11) | interface RankedItem { function rrfFuse (line 16) | function rrfFuse( FILE: apps/memos-local-openclaw/src/shared/llm-call.ts function detectProvider (line 8) | function detectProvider(providerKey: string | undefined, baseUrl: string... function defaultEndpointForProvider (line 22) | function defaultEndpointForProvider(provider: SummaryProvider, baseUrl: ... function loadOpenClawFallbackConfig (line 38) | function loadOpenClawFallbackConfig(log: Logger): SummarizerConfig | und... function buildSkillConfigChain (line 82) | function buildSkillConfigChain(ctx: PluginContext): SummarizerConfig[] { type LLMCallOptions (line 93) | interface LLMCallOptions { function normalizeOpenAIEndpoint (line 99) | function normalizeOpenAIEndpoint(url: string): string { function normalizeAnthropicEndpoint (line 106) | function normalizeAnthropicEndpoint(url: string): string { function isAnthropicProvider (line 113) | function isAnthropicProvider(cfg: SummarizerConfig): boolean { function callLLMOnce (line 121) | async function callLLMOnce( function callLLMOnceAnthropic (line 132) | async function callLLMOnceAnthropic( function callLLMOnceOpenAI (line 169) | async function callLLMOnceOpenAI( function callLLMWithFallback (line 209) | async function callLLMWithFallback( FILE: apps/memos-local-openclaw/src/skill/bundled-memory-guide.ts constant MEMORY_GUIDE_SKILL_MD (line 9) | const MEMORY_GUIDE_SKILL_MD: string = fs.readFileSync(skillPath, "utf-8"); FILE: apps/memos-local-openclaw/src/skill/evaluator.ts type CreateEvalResult (line 5) | interface CreateEvalResult { type UpgradeEvalResult (line 13) | interface UpgradeEvalResult { constant CREATE_EVAL_PROMPT (line 22) | const CREATE_EVAL_PROMPT = `You are a strict experience evaluation exper... constant UPGRADE_EVAL_PROMPT (line 66) | const UPGRADE_EVAL_PROMPT = `You are a skill upgrade evaluation expert. class SkillEvaluator (line 107) | class SkillEvaluator { method constructor (line 108) | constructor(private ctx: PluginContext) {} method passesRuleFilter (line 110) | passesRuleFilter(chunks: Chunk[], task: Task): { pass: boolean; skipRe... method evaluateCreate (line 137) | async evaluateCreate(task: Task): Promise { method evaluateUpgrade (line 158) | async evaluateUpgrade(task: Task, skill: Skill, skillContent: string):... method parseJSON (line 182) | private parseJSON(raw: string, fallback: T): T { FILE: apps/memos-local-openclaw/src/skill/evolver.ts type SkillEvolvedCallback (line 15) | type SkillEvolvedCallback = (skillName: string, upgradeType: "created" |... class SkillEvolver (line 17) | class SkillEvolver { method constructor (line 26) | constructor( method recoverOrphanedTasks (line 38) | async recoverOrphanedTasks(): Promise { method onTaskCompleted (line 53) | async onTaskCompleted(task: Task): Promise { method drain (line 67) | private async drain(task: Task): Promise { method processOne (line 80) | private async processOne(task: Task): Promise { method process (line 89) | private async process(task: Task): Promise { method findRelatedSkill (line 119) | private async findRelatedSkill(task: Task): Promise { method judgeSkillRelatedToTask (line 192) | private async judgeSkillRelatedToTask( method parseJudgeSkillResult (line 242) | private parseJudgeSkillResult(raw: string, maxIndex: number): { select... method handleExistingSkill (line 257) | private async handleExistingSkill(task: Task, chunks: Chunk[], skill: ... method handleNewSkill (line 302) | private async handleNewSkill(task: Task, chunks: Chunk[]): Promise(raw: string): T[] { method buildConversationText (line 484) | private buildConversationText(chunks: Chunk[]): string { method parseDescription (line 494) | private parseDescription(content: string): string { FILE: apps/memos-local-openclaw/src/skill/installer.ts class SkillInstaller (line 6) | class SkillInstaller { method constructor (line 9) | constructor( method install (line 16) | install(skillId: string): { installed: boolean; path: string; message:... method uninstall (line 37) | uninstall(skillId: string): void { method syncIfInstalled (line 49) | syncIfInstalled(skillName: string): void { FILE: apps/memos-local-openclaw/src/skill/upgrader.ts constant UPGRADE_PROMPT (line 10) | const UPGRADE_PROMPT = `You are a Skill upgrade expert. You're merging n... class SkillUpgrader (line 71) | class SkillUpgrader { method constructor (line 74) | constructor( method upgrade (line 81) | async upgrade(task: Task, skill: Skill, evalResult: UpgradeEvalResult)... method readCurrentContent (line 151) | private readCurrentContent(skill: Skill): string | null { method callUpgradeLLM (line 161) | private async callUpgradeLLM( method parseDescription (line 212) | private parseDescription(content: string): string { FILE: apps/memos-local-openclaw/src/skill/validator.ts type ValidationResult (line 7) | interface ValidationResult { class SkillValidator (line 15) | class SkillValidator { method constructor (line 16) | constructor(private ctx: PluginContext) {} method validate (line 22) | async validate(dirPath: string, opts?: { skipLLM?: boolean; previousCo... method validateFormat (line 50) | private validateFormat(dirPath: string, result: ValidationResult): void { method regressionCheck (line 115) | private regressionCheck(dirPath: string, previousContent: string, resu... method assessQuality (line 136) | private async assessQuality(dirPath: string, result: ValidationResult)... constant QUALITY_PROMPT (line 175) | const QUALITY_PROMPT = `You are a skill quality reviewer. Evaluate the f... FILE: apps/memos-local-openclaw/src/storage/ensure-binding.ts function ensureSqliteBinding (line 15) | function ensureSqliteBinding(log?: { info: (msg: string) => void; warn: ... FILE: apps/memos-local-openclaw/src/storage/sqlite.ts class SqliteStore (line 7) | class SqliteStore { method constructor (line 10) | constructor(dbPath: string, private log: Logger) { method migrate (line 20) | private migrate(): void { method migrateChunksIndexesForRecall (line 116) | private migrateChunksIndexesForRecall(): void { method migrateOwnerFields (line 120) | private migrateOwnerFields(): void { method migrateSkillVisibility (line 135) | private migrateSkillVisibility(): void { method migrateSkillEmbeddingsAndFts (line 149) | private migrateSkillEmbeddingsAndFts(): void { method migrateFtsToTrigram (line 199) | private migrateFtsToTrigram(): void { method migrateTaskId (line 274) | private migrateTaskId(): void { method migrateContentHash (line 283) | private migrateContentHash(): void { method migrateSkillTables (line 301) | private migrateSkillTables(): void { method migrateSkillId (line 344) | private migrateSkillId(): void { method migrateSkillQualityScore (line 353) | private migrateSkillQualityScore(): void { method migrateTaskSkillMeta (line 371) | private migrateTaskSkillMeta(): void { method setTaskSkillMeta (line 380) | setTaskSkillMeta(taskId: string, meta: { skillStatus: string; skillRea... method getTasksBySkillStatus (line 385) | getTasksBySkillStatus(statuses: string[]): Task[] { method migrateMergeFields (line 393) | private migrateMergeFields(): void { method migrateApiLogs (line 403) | private migrateApiLogs(): void { method migrateDedupStatus (line 419) | private migrateDedupStatus(): void { method recordApiLog (line 430) | recordApiLog(toolName: string, input: unknown, output: string, duratio... method getApiLogs (line 437) | getApiLogs(limit: number = 50, offset: number = 0, toolFilter?: string... method getApiLogToolNames (line 468) | getApiLogToolNames(): string[] { method recordMergeHit (line 473) | recordMergeHit(chunkId: string, action: "DUPLICATE" | "UPDATE", reason... method updateChunkSummaryAndContent (line 491) | updateChunkSummaryAndContent(chunkId: string, newSummary: string, appe... method migrateToolCalls (line 497) | private migrateToolCalls(): void { method recordToolCall (line 511) | recordToolCall(toolName: string, durationMs: number, success: boolean)... method getToolMetrics (line 517) | getToolMetrics(minutes: number): { method recordViewerEvent (line 599) | recordViewerEvent(eventType: string): void { method getMetrics (line 606) | getMetrics(days: number): { method insertChunk (line 664) | insertChunk(chunk: Chunk): void { method markDedupStatus (line 689) | markDedupStatus(chunkId: string, status: "duplicate" | "merged", targe... method updateSummary (line 695) | updateSummary(chunkId: string, summary: string): void { method upsertEmbedding (line 703) | upsertEmbedding(chunkId: string, vector: number[]): void { method deleteEmbedding (line 711) | deleteEmbedding(chunkId: string): void { method getChunk (line 717) | getChunk(chunkId: string): Chunk | null { method getChunkForOwners (line 722) | getChunkForOwners(chunkId: string, ownerFilter?: string[]): Chunk | nu... method getChunksByRef (line 732) | getChunksByRef(ref: ChunkRef, ownerFilter?: string[]): Chunk | null { method getNeighborChunks (line 736) | getNeighborChunks(sessionKey: string, turnId: string, seq: number, win... method ftsSearch (line 767) | ftsSearch(query: string, limit: number, ownerFilter?: string[]): Array... method patternSearch (line 804) | patternSearch(patterns: string[], opts: { role?: string; limit?: numbe... method getAllEmbeddings (line 837) | getAllEmbeddings(ownerFilter?: string[]): Array<{ chunkId: string; vec... method getRecentEmbeddings (line 857) | getRecentEmbeddings(limit: number, ownerFilter?: string[]): Array<{ ch... method getEmbedding (line 883) | getEmbedding(chunkId: string): number[] | null { method updateChunk (line 893) | updateChunk(chunkId: string, fields: { summary?: string; content?: str... method findPollutedUserChunks (line 933) | findPollutedUserChunks(): Array<{ id: string; preview: string; reason:... method fixMixedUserChunks (line 960) | fixMixedUserChunks(): number { method deleteChunk (line 984) | deleteChunk(chunkId: string): boolean { method deleteSession (line 989) | deleteSession(sessionKey: string): number { method deleteAll (line 994) | deleteAll(): number { method deleteTask (line 1020) | deleteTask(taskId: string): boolean { method deleteSkill (line 1027) | deleteSkill(skillId: string): boolean { method insertTask (line 1038) | insertTask(task: Task): void { method getTask (line 1045) | getTask(taskId: string): Task | null { method getActiveTask (line 1050) | getActiveTask(sessionKey: string, owner?: string): Task | null { method hasTaskForSession (line 1063) | hasTaskForSession(sessionKey: string): boolean { method hasSkillForSessionTask (line 1070) | hasSkillForSessionTask(sessionKey: string): boolean { method getCompletedTasksForSession (line 1077) | getCompletedTasksForSession(sessionKey: string): Task[] { method getAllActiveTasks (line 1084) | getAllActiveTasks(owner?: string): Task[] { method updateTask (line 1097) | updateTask(taskId: string, fields: { title?: string; summary?: string;... method getChunksByTask (line 1112) | getChunksByTask(taskId: string): Chunk[] { method listTasks (line 1117) | listTasks(opts: { status?: string; limit?: number; offset?: number; ow... method countChunksByTask (line 1136) | countChunksByTask(taskId: string): number { method setChunkTaskId (line 1141) | setChunkTaskId(chunkId: string, taskId: string): void { method getUnassignedChunks (line 1145) | getUnassignedChunks(sessionKey: string, owner?: string): Chunk[] { method chunkExistsByContent (line 1163) | chunkExistsByContent(sessionKey: string, role: string, content: string... method findActiveChunkByHash (line 1175) | findActiveChunkByHash(content: string, owner?: string): string | null { method getRecentChunkIds (line 1193) | getRecentChunkIds(limit: number): string[] { method countChunks (line 1200) | countChunks(): number { method insertSkill (line 1207) | insertSkill(skill: Skill): void { method getSkill (line 1214) | getSkill(skillId: string): Skill | null { method getSkillByName (line 1219) | getSkillByName(name: string): Skill | null { method updateSkill (line 1224) | updateSkill(skillId: string, fields: { description?: string; version?:... method listSkills (line 1239) | listSkills(opts: { status?: string } = {}): Skill[] { method setSkillVisibility (line 1248) | setSkillVisibility(skillId: string, visibility: SkillVisibility): void { method upsertSkillEmbedding (line 1253) | upsertSkillEmbedding(skillId: string, vector: number[]): void { method getSkillEmbedding (line 1261) | getSkillEmbedding(skillId: string): number[] | null { method getSkillEmbeddings (line 1269) | getSkillEmbeddings(scope: "self" | "public" | "mix", currentOwner: str... method skillFtsSearch (line 1293) | skillFtsSearch(query: string, limit: number, scope: "self" | "public" ... method listPublicSkills (line 1331) | listPublicSkills(): Skill[] { method insertSkillVersion (line 1338) | insertSkillVersion(sv: SkillVersion): void { method getLatestSkillVersion (line 1345) | getLatestSkillVersion(skillId: string): SkillVersion | null { method getSkillVersions (line 1350) | getSkillVersions(skillId: string): SkillVersion[] { method getSkillVersion (line 1355) | getSkillVersion(skillId: string, version: number): SkillVersion | null { method linkTaskSkill (line 1362) | linkTaskSkill(taskId: string, skillId: string, relation: TaskSkillRela... method getSkillsByTask (line 1373) | getSkillsByTask(taskId: string): Array<{ skill: Skill; relation: TaskS... method getTasksBySkill (line 1386) | getTasksBySkill(skillId: string): Array<{ task: Task; relation: TaskSk... method countSkills (line 1399) | countSkills(status?: string): number { method setChunkSkillId (line 1408) | setChunkSkillId(chunkId: string, skillId: string): void { method getDistinctSessionKeys (line 1412) | getDistinctSessionKeys(): string[] { method getSessionOwnerMap (line 1417) | getSessionOwnerMap(sessionKeys: string[]): Map { method close (line 1428) | close(): void { function sanitizeFtsQuery (line 1440) | function sanitizeFtsQuery(raw: string): string { constant FTS_RESERVED (line 1451) | const FTS_RESERVED = new Set(["AND", "OR", "NOT", "NEAR"]); type ChunkRow (line 1455) | interface ChunkRow { function rowToChunk (line 1477) | function rowToChunk(row: ChunkRow): Chunk { type TaskRow (line 1502) | interface TaskRow { function rowToTask (line 1514) | function rowToTask(row: TaskRow): Task { type SkillRow (line 1528) | interface SkillRow { function rowToSkill (line 1545) | function rowToSkill(row: SkillRow): Skill { type SkillVersionRow (line 1564) | interface SkillVersionRow { function rowToSkillVersion (line 1578) | function rowToSkillVersion(row: SkillVersionRow): SkillVersion { function contentHash (line 1594) | function contentHash(content: string): string { FILE: apps/memos-local-openclaw/src/storage/vector.ts function cosineSimilarity (line 3) | function cosineSimilarity(a: number[], b: number[]): number { type VectorHit (line 17) | interface VectorHit { function vectorSearch (line 26) | function vectorSearch( FILE: apps/memos-local-openclaw/src/telemetry.ts type TelemetryConfig (line 17) | interface TelemetryConfig { constant ARMS_ENDPOINT (line 21) | const ARMS_ENDPOINT = constant ARMS_PID (line 27) | const ARMS_PID = "a3u72ukxmr@066657d42a13a9a9f337f"; constant ARMS_ENV (line 28) | const ARMS_ENV = "prod"; constant FLUSH_AT (line 30) | const FLUSH_AT = 10; constant FLUSH_INTERVAL_MS (line 31) | const FLUSH_INTERVAL_MS = 30_000; constant SEND_TIMEOUT_MS (line 32) | const SEND_TIMEOUT_MS = 30_000; constant SESSION_TTL_MS (line 33) | const SESSION_TTL_MS = 30 * 60_000; type ArmsEvent (line 34) | interface ArmsEvent { class Telemetry (line 46) | class Telemetry { method constructor (line 58) | constructor(config: TelemetryConfig, stateDir: string, pluginVersion: ... method loadOrCreateAnonymousId (line 76) | private loadOrCreateAnonymousId(stateDir: string): string { method loadOrCreateSessionId (line 99) | private loadOrCreateSessionId(stateDir: string): string { method touchSession (line 118) | private touchSession(filePath: string, id: string): void { method loadOrCreateFirstSeen (line 125) | private loadOrCreateFirstSeen(stateDir: string): string { method capture (line 139) | private capture(event: string, properties?: Record): ... method buildPayload (line 174) | private buildPayload(events: ArmsEvent[]): Record { method flush (line 191) | private async flush(): Promise { method trackPluginStarted (line 211) | trackPluginStarted(embeddingProvider: string, summarizerProvider: stri... method trackToolCalled (line 219) | trackToolCalled(toolName: string, latencyMs: number, success: boolean)... method trackMemoryIngested (line 226) | trackMemoryIngested(chunkCount: number): void { method trackSkillInstalled (line 232) | trackSkillInstalled(skillName: string): void { method trackSkillEvolved (line 238) | trackSkillEvolved(skillName: string, upgradeType: "created" | "upgrade... method trackViewerOpened (line 245) | trackViewerOpened(): void { method trackAutoRecall (line 249) | trackAutoRecall(hitCount: number, latencyMs: number): void { method trackError (line 257) | trackError(source: string, errorType: string): void { method maybeSendDailyPing (line 264) | private maybeSendDailyPing(): void { method shutdown (line 274) | async shutdown(): Promise { FILE: apps/memos-local-openclaw/src/tools/memory-get.ts function resolveOwnerFilter (line 5) | function resolveOwnerFilter(owner: unknown): string[] { function createMemoryGetTool (line 10) | function createMemoryGetTool(store: SqliteStore): ToolDefinition { FILE: apps/memos-local-openclaw/src/tools/memory-search.ts function resolveOwnerFilter (line 4) | function resolveOwnerFilter(owner: unknown): string[] { function createMemorySearchTool (line 9) | function createMemorySearchTool(engine: RecallEngine): ToolDefinition { FILE: apps/memos-local-openclaw/src/tools/memory-timeline.ts function resolveOwnerFilter (line 5) | function resolveOwnerFilter(owner: unknown): string[] { function createMemoryTimelineTool (line 10) | function createMemoryTimelineTool(store: SqliteStore): ToolDefinition { FILE: apps/memos-local-openclaw/src/types.ts type Role (line 3) | type Role = "user" | "assistant" | "system" | "tool"; type ConversationMessage (line 5) | interface ConversationMessage { type DedupStatus (line 17) | type DedupStatus = "active" | "duplicate" | "merged"; type Chunk (line 19) | interface Chunk { type TaskStatus (line 44) | type TaskStatus = "active" | "completed" | "skipped"; type Task (line 46) | interface Task { type ChunkKind (line 58) | type ChunkKind = "paragraph"; type ChunkRef (line 60) | interface ChunkRef { type SearchHit (line 69) | interface SearchHit { type SkillSearchHit (line 84) | interface SkillSearchHit { type SearchResult (line 94) | interface SearchResult { type TimelineEntry (line 104) | interface TimelineEntry { type TimelineResult (line 112) | interface TimelineResult { type GetResult (line 117) | interface GetResult { type RankedCandidate (line 129) | interface RankedCandidate { type SummaryProvider (line 141) | type SummaryProvider = type EmbeddingProvider (line 155) | type EmbeddingProvider = type ProviderConfig (line 165) | interface ProviderConfig { type SummarizerConfig (line 175) | interface SummarizerConfig extends ProviderConfig { type EmbeddingConfig (line 179) | interface EmbeddingConfig extends ProviderConfig { type SkillStatus (line 188) | type SkillStatus = "active" | "archived" | "draft"; type SkillUpgradeType (line 189) | type SkillUpgradeType = "create" | "refine" | "extend" | "fix"; type TaskSkillRelation (line 190) | type TaskSkillRelation = "generated_from" | "evolved_from" | "applied_to"; type SkillVisibility (line 192) | type SkillVisibility = "private" | "public"; type Skill (line 194) | interface Skill { type SkillVersion (line 211) | interface SkillVersion { type SkillGenerateOutput (line 225) | interface SkillGenerateOutput { type TaskSkillLink (line 232) | interface TaskSkillLink { type SkillEvolutionConfig (line 242) | interface SkillEvolutionConfig { type TelemetryConfig (line 252) | interface TelemetryConfig { type MemosLocalConfig (line 256) | interface MemosLocalConfig { constant DEFAULTS (line 285) | const DEFAULTS = { type PluginContext (line 316) | interface PluginContext { type Logger (line 323) | interface Logger { type ToolDefinition (line 330) | interface ToolDefinition { FILE: apps/memos-local-openclaw/src/update-check.ts type UpdateCheckResult (line 9) | interface UpdateCheckResult { function isPrerelease (line 23) | function isPrerelease(v: string): boolean { function computeUpdateCheck (line 30) | async function computeUpdateCheck( FILE: apps/memos-local-openclaw/src/viewer/html.ts function viewerHTML (line 1) | function viewerHTML(pluginVersion?: string): string { FILE: apps/memos-local-openclaw/src/viewer/server.ts function normalizeTimestamp (line 21) | function normalizeTimestamp(ts: number): number { type ViewerServerOptions (line 26) | interface ViewerServerOptions { type AuthState (line 35) | interface AuthState { class ViewerServer (line 40) | class ViewerServer { method constructor (line 83) | constructor(opts: ViewerServerOptions) { method start (line 96) | start(): Promise { method autoCleanupPolluted (line 116) | private autoCleanupPolluted(): void { method stop (line 132) | stop(): void { method getResetToken (line 137) | getResetToken(): string { method loadAuth (line 143) | private loadAuth(): void { method saveAuth (line 154) | private saveAuth(): void { method hashPassword (line 163) | private hashPassword(pw: string): string { method createSession (line 167) | private createSession(): string { method isValidSession (line 173) | private isValidSession(req: http.IncomingMessage): boolean { method needsSetup (line 183) | private get needsSetup(): boolean { method handleRequest (line 189) | private handleRequest(req: http.IncomingMessage, res: http.ServerRespo... method handleSetup (line 277) | private handleSetup(req: http.IncomingMessage, res: http.ServerRespons... method handleLogin (line 306) | private handleLogin(req: http.IncomingMessage, res: http.ServerRespons... method handleLogout (line 328) | private handleLogout(req: http.IncomingMessage, res: http.ServerRespon... method handlePasswordReset (line 339) | private handlePasswordReset(req: http.IncomingMessage, res: http.Serve... method serveViewer (line 373) | private serveViewer(res: http.ServerResponse): void { method serveMemories (line 380) | private serveMemories(res: http.ServerResponse, url: URL): void { method serveMetrics (line 422) | private serveMetrics(res: http.ServerResponse, url: URL): void { method serveToolMetrics (line 428) | private serveToolMetrics(res: http.ServerResponse, url: URL): void { method serveTasks (line 434) | private serveTasks(res: http.ServerResponse, url: URL): void { method serveTaskDetail (line 460) | private serveTaskDetail(res: http.ServerResponse, urlPath: string): vo... method serveStats (line 504) | private serveStats(res: http.ServerResponse): void { method serveSearch (line 567) | private async serveSearch(_req: http.IncomingMessage, res: http.Server... method serveSkills (line 664) | private serveSkills(res: http.ServerResponse, url: URL): void { method serveSkillDetail (line 674) | private serveSkillDetail(res: http.ServerResponse, urlPath: string): v... method serveSkillFiles (line 714) | private serveSkillFiles(res: http.ServerResponse, urlPath: string): vo... method walkDir (line 732) | private walkDir(dir: string, root: string): Array<{ path: string; type... method serveSkillDownload (line 755) | private serveSkillDownload(res: http.ServerResponse, urlPath: string):... method handleSkillVisibility (line 796) | private handleSkillVisibility(req: http.IncomingMessage, res: http.Ser... method handleTaskRetrySkill (line 827) | private handleTaskRetrySkill(_req: http.IncomingMessage, res: http.Ser... method handleTaskDelete (line 852) | private handleTaskDelete(res: http.ServerResponse, urlPath: string): v... method handleTaskUpdate (line 859) | private handleTaskUpdate(req: http.IncomingMessage, res: http.ServerRe... method handleSkillDelete (line 880) | private handleSkillDelete(res: http.ServerResponse, urlPath: string): ... method handleSkillUpdate (line 896) | private handleSkillUpdate(req: http.IncomingMessage, res: http.ServerR... method serveMemoryDetail (line 920) | private serveMemoryDetail(res: http.ServerResponse, urlPath: string): ... method handleUpdate (line 934) | private handleUpdate(req: http.IncomingMessage, res: http.ServerRespon... method handleDelete (line 954) | private handleDelete(res: http.ServerResponse, urlPath: string): void { method handleDeleteSession (line 960) | private handleDeleteSession(res: http.ServerResponse, url: URL): void { method handleDeleteAll (line 967) | private handleDeleteAll(res: http.ServerResponse): void { method getOpenClawConfigPath (line 993) | private getOpenClawConfigPath(): string { method serveConfig (line 999) | private serveConfig(res: http.ServerResponse): void { method handleSaveConfig (line 1029) | private handleSaveConfig(req: http.IncomingMessage, res: http.ServerRe... method handleTestModel (line 1071) | private handleTestModel(req: http.IncomingMessage, res: http.ServerRes... method serveModelHealth (line 1094) | private serveModelHealth(res: http.ServerResponse): void { method serveFallbackModel (line 1098) | private serveFallbackModel(res: http.ServerResponse): void { method findPluginPackageJson (line 1127) | private findPluginPackageJson(): string | null { method handleUpdateCheck (line 1142) | private async handleUpdateCheck(res: http.ServerResponse): Promise void... method jsonResponse (line 2391) | private jsonResponse(res: http.ServerResponse, data: unknown): void { FILE: apps/memos-local-openclaw/tests/accuracy.test.ts function loadProductionConfig (line 26) | function loadProductionConfig(): Partial { constant TOTAL_TESTS (line 39) | const TOTAL_TESTS = 14; function fmtDuration (line 44) | function fmtDuration(ms: number): string { function printProgress (line 51) | function printProgress(testName: string) { constant SESSION_PREFIX (line 76) | const SESSION_PREFIX = "test-accuracy"; function nextSession (line 79) | function nextSession(label: string): string { type TestResult (line 83) | interface TestResult { function record (line 91) | function record(category: string, name: string, pass: boolean, detail: s... FILE: apps/memos-local-openclaw/tests/multi-agent.test.ts function makeChunk (line 29) | function makeChunk(overrides: Partial = {}): Chunk { function makeSkill (line 134) | function makeSkill(overrides: Partial = {}): Skill { FILE: apps/memos-local-openclaw/tests/plugin-impl-access.test.ts function makeApi (line 7) | function makeApi(stateDir: string) { function waitFor (line 37) | async function waitFor(predicate: () => Promise | boolean, time... FILE: apps/memos-local-openclaw/tests/shutdown-lifecycle.test.ts class MockStore (line 23) | class MockStore { method close (line 24) | close(): void { method close (line 67) | close(): void { class MockWorker (line 29) | class MockWorker { method enqueue (line 30) | enqueue(): void {} method flush (line 31) | flush(): Promise { method enqueue (line 73) | enqueue(): void {} method flush (line 74) | flush(): Promise { class MockStore (line 66) | class MockStore { method close (line 24) | close(): void { method close (line 67) | close(): void { class MockWorker (line 72) | class MockWorker { method enqueue (line 30) | enqueue(): void {} method flush (line 31) | flush(): Promise { method enqueue (line 73) | enqueue(): void {} method flush (line 74) | flush(): Promise { class MockViewer (line 80) | class MockViewer { method start (line 81) | async start(): Promise { return "http://127.0.0.1:18799"; } method stop (line 82) | stop(): void { events.push("viewer-stop"); } method getResetToken (line 83) | getResetToken(): string { return "token"; } method search (line 91) | async search() { return { hits: [], meta: {} }; } method searchSkills (line 91) | async searchSkills() { return []; } FILE: apps/memos-local-openclaw/tests/storage.test.ts function makeChunk (line 29) | function makeChunk(overrides: Partial = {}): Chunk { FILE: apps/memos-local-openclaw/tests/task-processor.test.ts function makeCtx (line 21) | function makeCtx(): PluginContext { function insertTestChunk (line 41) | function insertTestChunk(overrides: Partial & { id: string }): vo... function insertChunk (line 363) | function insertChunk(overrides: Partial & { id: string }): void { FILE: apps/memos-local-openclaw/tests/worker-lifecycle.test.ts function makeCtx (line 16) | function makeCtx(tmpDir: string): PluginContext { function makeMessage (line 36) | function makeMessage(id: string, sessionKey = "s1"): ConversationMessage { FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/main/taskHistory.integration.test.ts function createMockTask (line 36) | function createMockTask(id: string, prompt: string = 'Test task'): Task { function createMockMessage (line 47) | function createMockMessage( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/components/Sidebar.integration.test.tsx function createMockTask (line 30) | function createMockTask( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/components/TaskHistory.integration.test.tsx function createMockTask (line 32) | function createMockTask( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/components/TaskLauncher.integration.test.tsx function createMockTask (line 26) | function createMockTask( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/pages/Execution.integration.test.tsx function createMockTask (line 29) | function createMockTask( function createMockMessage (line 45) | function createMockMessage( function renderWithRouter (line 166) | function renderWithRouter(taskId: string = 'task-123') { FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/pages/Home.integration.test.tsx function createMockTask (line 30) | function createMockTask( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/integration/renderer/taskStore.integration.test.ts function createMockTask (line 11) | function createMockTask(id: string, prompt: string = 'Test task', status... function createMockMessage (line 22) | function createMockMessage( FILE: apps/openwork-memos-integration/apps/desktop/__tests__/main/ipc/handlers-utils.unit.test.ts constant MAX_TEXT_LENGTH (line 21) | const MAX_TEXT_LENGTH = 8000; function sanitizeString (line 26) | function sanitizeString(input: unknown, field: string, maxLength = MAX_T... function createTaskId (line 43) | function createTaskId(): string { function createMessageId (line 50) | function createMessageId(): string { function extractScreenshots (line 57) | function extractScreenshots(output: string): { function sanitizeToolOutput (line 102) | function sanitizeToolOutput(text: string, isError: boolean): string { FILE: apps/openwork-memos-integration/apps/desktop/__tests__/main/ipc/validation.unit.test.ts class CustomError (line 186) | class CustomError extends Error { method constructor (line 188) | constructor(message: string, code: number) { FILE: apps/openwork-memos-integration/apps/desktop/__tests__/unit/main/ipc/handlers.unit.test.ts type MockedIpcMain (line 267) | type MockedIpcMain = typeof ipcMain & { function invokeHandler (line 278) | async function invokeHandler(channel: string, ...args: unknown[]): Promi... FILE: apps/openwork-memos-integration/apps/desktop/__tests__/unit/main/opencode/adapter.unit.test.ts class MockPty (line 62) | class MockPty extends EventEmitter { method simulateData (line 72) | simulateData(data: string) { method simulateExit (line 78) | simulateExit(exitCode: number, signal?: number) { method onData (line 84) | onData(callback: (data: string) => void) { method onExit (line 89) | onExit(callback: (params: { exitCode: number; signal?: number }) => vo... FILE: apps/openwork-memos-integration/apps/desktop/__tests__/unit/main/opencode/task-manager.unit.test.ts class MockOpenCodeAdapter (line 60) | class MockOpenCodeAdapter extends EventEmitter { method constructor (line 66) | constructor(taskId?: string) { method getTaskId (line 82) | getTaskId() { method getSessionId (line 86) | getSessionId() { method isAdapterDisposed (line 90) | isAdapterDisposed() { method startTask (line 94) | async startTask(config: TaskConfig) { method cancelTask (line 98) | async cancelTask() { method interruptTask (line 102) | async interruptTask() { method sendResponse (line 106) | async sendResponse(response: string) { method dispose (line 111) | dispose() { method simulateComplete (line 117) | simulateComplete(result: TaskResult) { method simulateError (line 121) | simulateError(error: Error) { method simulateMessage (line 125) | simulateMessage(message: OpenCodeMessage) { method simulateProgress (line 129) | simulateProgress(progress: { stage: string; message?: string }) { method simulatePermissionRequest (line 133) | simulatePermissionRequest(request: PermissionRequest) { method constructor (line 146) | constructor() { function createMockCallbacks (line 186) | function createMockCallbacks() { FILE: apps/openwork-memos-integration/apps/desktop/e2e/config/timeouts.ts constant TEST_TIMEOUTS (line 5) | const TEST_TIMEOUTS = { constant TEST_SCENARIOS (line 35) | const TEST_SCENARIOS = { type TestScenario (line 62) | type TestScenario = keyof typeof TEST_SCENARIOS; FILE: apps/openwork-memos-integration/apps/desktop/e2e/fixtures/electron-app.ts type ElectronFixtures (line 12) | type ElectronFixtures = { FILE: apps/openwork-memos-integration/apps/desktop/e2e/pages/execution.page.ts class ExecutionPage (line 4) | class ExecutionPage { method constructor (line 5) | constructor(private page: Page) {} method statusBadge (line 7) | get statusBadge() { method cancelButton (line 11) | get cancelButton() { method thinkingIndicator (line 15) | get thinkingIndicator() { method followUpInput (line 19) | get followUpInput() { method stopButton (line 23) | get stopButton() { method permissionModal (line 27) | get permissionModal() { method allowButton (line 31) | get allowButton() { method denyButton (line 35) | get denyButton() { method questionOptions (line 40) | get questionOptions() { method customResponseInput (line 45) | get customResponseInput() { method backToOptionsButton (line 50) | get backToOptionsButton() { method selectQuestionOption (line 55) | async selectQuestionOption(index: number) { method waitForComplete (line 59) | async waitForComplete() { FILE: apps/openwork-memos-integration/apps/desktop/e2e/pages/home.page.ts class HomePage (line 3) | class HomePage { method constructor (line 4) | constructor(private page: Page) {} method title (line 6) | get title() { method taskInput (line 10) | get taskInput() { method submitButton (line 14) | get submitButton() { method examplesToggle (line 18) | get examplesToggle() { method getExampleCard (line 22) | getExampleCard(index: number) { method expandExamples (line 26) | async expandExamples() { method enterTask (line 30) | async enterTask(text: string) { method submitTask (line 34) | async submitTask() { FILE: apps/openwork-memos-integration/apps/desktop/e2e/pages/settings.page.ts class SettingsPage (line 4) | class SettingsPage { method constructor (line 5) | constructor(private page: Page) {} method providerGrid (line 9) | get providerGrid() { method providerSearchInput (line 13) | get providerSearchInput() { method showAllButton (line 17) | get showAllButton() { method hideButton (line 21) | get hideButton() { method getProviderCard (line 25) | getProviderCard(providerId: string) { method getProviderConnectedBadge (line 29) | getProviderConnectedBadge(providerId: string) { method connectionStatus (line 35) | get connectionStatus() { method disconnectButton (line 39) | get disconnectButton() { method connectButton (line 43) | get connectButton() { method modelSelector (line 49) | get modelSelector() { method modelSelectorError (line 53) | get modelSelectorError() { method apiKeyInput (line 59) | get apiKeyInput() { method apiKeyHelpLink (line 63) | get apiKeyHelpLink() { method bedrockAccessKeyTab (line 69) | get bedrockAccessKeyTab() { method bedrockAwsProfileTab (line 73) | get bedrockAwsProfileTab() { method bedrockAccessKeyIdInput (line 77) | get bedrockAccessKeyIdInput() { method bedrockSecretKeyInput (line 81) | get bedrockSecretKeyInput() { method bedrockSessionTokenInput (line 85) | get bedrockSessionTokenInput() { method bedrockProfileNameInput (line 89) | get bedrockProfileNameInput() { method bedrockRegionSelect (line 93) | get bedrockRegionSelect() { method ollamaServerUrlInput (line 99) | get ollamaServerUrlInput() { method ollamaConnectionError (line 103) | get ollamaConnectionError() { method litellmServerUrlInput (line 109) | get litellmServerUrlInput() { method litellmApiKeyInput (line 113) | get litellmApiKeyInput() { method openrouterFetchModelsButton (line 119) | get openrouterFetchModelsButton() { method debugModeToggle (line 125) | get debugModeToggle() { method settingsDialog (line 131) | get settingsDialog() { method doneButton (line 135) | get doneButton() { method closeWarning (line 139) | get closeWarning() { method closeAnywayButton (line 143) | get closeAnywayButton() { method sidebarSettingsButton (line 147) | get sidebarSettingsButton() { method navigateToSettings (line 153) | async navigateToSettings() { method selectProvider (line 158) | async selectProvider(providerId: string) { method searchProvider (line 164) | async searchProvider(query: string) { method clearSearch (line 168) | async clearSearch() { method toggleShowAll (line 172) | async toggleShowAll() { method enterApiKey (line 181) | async enterApiKey(key: string) { method clickConnect (line 185) | async clickConnect() { method clickDisconnect (line 189) | async clickDisconnect() { method selectModel (line 193) | async selectModel(modelId: string) { method toggleDebugMode (line 197) | async toggleDebugMode() { method closeDialog (line 201) | async closeDialog() { method pressEscapeToClose (line 205) | async pressEscapeToClose() { method selectBedrockAccessKeyTab (line 210) | async selectBedrockAccessKeyTab() { method selectBedrockAwsProfileTab (line 214) | async selectBedrockAwsProfileTab() { method enterBedrockAccessKeyCredentials (line 218) | async enterBedrockAccessKeyCredentials(accessKeyId: string, secretKey:... method enterBedrockProfileCredentials (line 226) | async enterBedrockProfileCredentials(profileName: string) { method selectBedrockRegion (line 230) | async selectBedrockRegion(region: string) { method enterOllamaServerUrl (line 235) | async enterOllamaServerUrl(url: string) { method enterLiteLLMServerUrl (line 240) | async enterLiteLLMServerUrl(url: string) { method enterLiteLLMApiKey (line 244) | async enterLiteLLMApiKey(key: string) { FILE: apps/openwork-memos-integration/apps/desktop/e2e/utils/screenshots.ts type ScreenshotMetadata (line 17) | interface ScreenshotMetadata { type CaptureResult (line 26) | interface CaptureResult { function captureForAI (line 46) | async function captureForAI( function sanitizeFilename (line 102) | function sanitizeFilename(input: string): string { FILE: apps/openwork-memos-integration/apps/desktop/scripts/after-pack.cjs constant NODE_VERSION (line 14) | const NODE_VERSION = '20.18.1'; constant ARCH_MAP (line 20) | const ARCH_MAP = { constant PLATFORM_MAP (line 31) | const PLATFORM_MAP = { function getNodeDirName (line 40) | function getNodeDirName(platform, arch) { function copyNodeBinary (line 97) | async function copyNodeBinary(context, platform, arch) { constant NODEJS_EXCLUDE_DIRS (line 170) | const NODEJS_EXCLUDE_DIRS = ['include']; function copyDirRecursive (line 179) | function copyDirRecursive(src, dest, rootDest = dest, excludeDirs = []) { function resignMacApp (line 235) | async function resignMacApp(context) { FILE: apps/openwork-memos-integration/apps/desktop/scripts/download-nodejs.cjs constant NODE_VERSION (line 17) | const NODE_VERSION = '20.18.1'; constant BASE_URL (line 18) | const BASE_URL = `https://nodejs.org/dist/v${NODE_VERSION}`; constant PLATFORMS (line 20) | const PLATFORMS = [ constant RESOURCES_DIR (line 35) | const RESOURCES_DIR = path.join(__dirname, '..', 'resources', 'nodejs'); function downloadFile (line 40) | function downloadFile(url, destPath) { function verifyChecksum (line 92) | function verifyChecksum(filePath, expectedHash) { function extractArchive (line 109) | function extractArchive(archivePath, destDir, type) { function main (line 140) | async function main() { FILE: apps/openwork-memos-integration/apps/desktop/scripts/patch-electron-name.cjs constant APP_NAME (line 8) | const APP_NAME = 'Openwork'; FILE: apps/openwork-memos-integration/apps/desktop/skills/ask-user-question/src/index.ts constant QUESTION_API_PORT (line 17) | const QUESTION_API_PORT = process.env.QUESTION_API_PORT || '9227'; constant QUESTION_API_URL (line 18) | const QUESTION_API_URL = `http://localhost:${QUESTION_API_PORT}/question`; type QuestionOption (line 20) | interface QuestionOption { type AskUserQuestionInput (line 25) | interface AskUserQuestionInput { function main (line 187) | async function main() { FILE: apps/openwork-memos-integration/apps/desktop/skills/dev-browser/scripts/start-relay.ts constant PORT (line 10) | const PORT = parseInt(process.env.PORT || "9224", 10); constant HOST (line 11) | const HOST = process.env.HOST || "127.0.0.1"; function main (line 13) | async function main() { FILE: apps/openwork-memos-integration/apps/desktop/skills/dev-browser/scripts/start-server.ts function getDataDir (line 12) | function getDataDir(): string { constant ACCOMPLISH_HTTP_PORT (line 34) | const ACCOMPLISH_HTTP_PORT = 9224; constant ACCOMPLISH_CDP_PORT (line 35) | const ACCOMPLISH_CDP_PORT = 9225; function installPlaywrightChromium (line 87) | function installPlaywrightChromium(): void { function startServer (line 123) | async function startServer(retry = false): Promise { FILE: apps/openwork-memos-integration/apps/desktop/skills/dev-browser/src/client.ts function fetchWithRetry (line 15) | async function fetchWithRetry( type WaitForPageLoadOptions (line 47) | interface WaitForPageLoadOptions { type WaitForPageLoadResult (line 61) | interface WaitForPageLoadResult { type PageLoadState (line 74) | interface PageLoadState { type PendingRequest (line 80) | interface PendingRequest { function waitForPageLoad (line 95) | async function waitForPageLoad( function getPageLoadState (line 155) | async function getPageLoadState(page: Page): Promise { type ServerInfo (line 244) | interface ServerInfo { type PageOptions (line 253) | interface PageOptions { type DevBrowserClient (line 258) | interface DevBrowserClient { function connect (line 281) | async function connect(serverUrl = "http://localhost:9224"): Promise(promise: Promise, ms: number, message: string... function serve (line 56) | async function serve(options: ServeOptions = {}): Promise { function getSnapshot (line 32) | async function getSnapshot(): Promise { function selectRef (line 45) | async function selectRef(ref: string): Promise { FILE: apps/openwork-memos-integration/apps/desktop/skills/dev-browser/src/snapshot/browser-script.ts function getSnapshotScript (line 25) | function getSnapshotScript(): string { function getDomUtilsCode (line 52) | function getDomUtilsCode(): string { function getYamlCode (line 163) | function getYamlCode(): string { function getRoleUtilsCode (line 206) | function getRoleUtilsCode(): string { function getAriaSnapshotCode (line 628) | function getAriaSnapshotCode(): string { function clearSnapshotScriptCache (line 875) | function clearSnapshotScriptCache(): void { FILE: apps/openwork-memos-integration/apps/desktop/skills/dev-browser/src/types.ts type ServeOptions (line 3) | interface ServeOptions { type ViewportSize (line 13) | interface ViewportSize { type GetPageRequest (line 18) | interface GetPageRequest { type GetPageResponse (line 24) | interface GetPageResponse { type ListPagesResponse (line 30) | interface ListPagesResponse { type ServerInfoResponse (line 34) | interface ServerInfoResponse { FILE: apps/openwork-memos-integration/apps/desktop/skills/file-permission/src/index.ts constant PERMISSION_API_PORT (line 18) | const PERMISSION_API_PORT = process.env.PERMISSION_API_PORT || '9226'; constant PERMISSION_API_URL (line 19) | const PERMISSION_API_URL = `http://localhost:${PERMISSION_API_PORT}/perm... type FilePermissionInput (line 21) | interface FilePermissionInput { function main (line 129) | async function main() { FILE: apps/openwork-memos-integration/apps/desktop/src/main/config.ts constant PRODUCTION_API_URL (line 3) | const PRODUCTION_API_URL = 'https://lite.accomplish.ai'; type DesktopConfig (line 12) | type DesktopConfig = z.infer; function getDesktopConfig (line 16) | function getDesktopConfig(): DesktopConfig { FILE: apps/openwork-memos-integration/apps/desktop/src/main/index.ts constant MAIN_DIST (line 62) | const MAIN_DIST = path.join(process.env.APP_ROOT, 'dist-electron'); constant RENDERER_DIST (line 63) | const RENDERER_DIST = path.join(process.env.APP_ROOT, 'dist'); constant VITE_DEV_SERVER_URL (line 64) | const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL; function getPreloadPath (line 69) | function getPreloadPath(): string { function createWindow (line 73) | function createWindow() { FILE: apps/openwork-memos-integration/apps/desktop/src/main/ipc/handlers.ts constant MAX_TEXT_LENGTH (line 85) | const MAX_TEXT_LENGTH = 8000; constant ALLOWED_API_KEY_PROVIDERS (line 86) | const ALLOWED_API_KEY_PROVIDERS = new Set(['anthropic', 'openai', 'openr... constant API_KEY_VALIDATION_TIMEOUT_MS (line 87) | const API_KEY_VALIDATION_TIMEOUT_MS = 15000; type OllamaModel (line 89) | interface OllamaModel { function fetchWithTimeout (line 98) | async function fetchWithTimeout( constant MESSAGE_BATCH_DELAY_MS (line 115) | const MESSAGE_BATCH_DELAY_MS = 50; type MessageBatcher (line 118) | interface MessageBatcher { function createMessageBatcher (line 127) | function createMessageBatcher( function queueMessage (line 162) | function queueMessage( function flushAndCleanupBatcher (line 185) | function flushAndCleanupBatcher(taskId: string): void { function assertTrustedWindow (line 193) | function assertTrustedWindow(window: BrowserWindow | null): BrowserWindow { function sanitizeString (line 206) | function sanitizeString(input: unknown, field: string, maxLength = MAX_T... function applyMemoryContext (line 220) | function applyMemoryContext(config: TaskConfig, memoryContext: string | ... function validateTaskConfig (line 238) | function validateTaskConfig(config: TaskConfig): TaskConfig { function isE2ESkipAuthEnabled (line 275) | function isE2ESkipAuthEnabled(): boolean { function handle (line 283) | function handle( function registerIPCHandlers (line 300) | function registerIPCHandlers(): void { function createTaskId (line 1552) | function createTaskId(): string { function createMessageId (line 1556) | function createMessageId(): string { function extractScreenshots (line 1564) | function extractScreenshots(output: string): { function sanitizeToolOutput (line 1612) | function sanitizeToolOutput(text: string, isError: boolean): string { function toTaskMessage (line 1657) | function toTaskMessage(message: OpenCodeMessage): TaskMessage | null { FILE: apps/openwork-memos-integration/apps/desktop/src/main/ipc/validation.ts function validate (line 30) | function validate( function normalizeIpcError (line 42) | function normalizeIpcError(error: unknown): Error { FILE: apps/openwork-memos-integration/apps/desktop/src/main/opencode/adapter.ts class OpenCodeCliNotFoundError (line 29) | class OpenCodeCliNotFoundError extends Error { method constructor (line 30) | constructor() { function isOpenCodeCliInstalled (line 41) | async function isOpenCodeCliInstalled(): Promise { function getOpenCodeCliVersion (line 48) | async function getOpenCodeCliVersion(): Promise { type OpenCodeAdapterEvents (line 52) | interface OpenCodeAdapterEvents { class OpenCodeAdapter (line 63) | class OpenCodeAdapter extends EventEmitter { method constructor (line 77) | constructor(taskId?: string) { method startTask (line 87) | async startTask(config: TaskConfig): Promise { method resumeSession (line 222) | async resumeSession(sessionId: string, prompt: string): Promise { method sendResponse (line 233) | async sendResponse(response: string): Promise { method cancelTask (line 245) | async cancelTask(): Promise { method interruptTask (line 258) | async interruptTask(): Promise { method getSessionId (line 275) | getSessionId(): string | null { method getTaskId (line 282) | getTaskId(): string | null { method isAdapterDisposed (line 289) | isAdapterDisposed(): boolean { method dispose (line 297) | dispose(): void { method buildEnvironment (line 333) | private async buildEnvironment(): Promise { method buildCliArgs (line 445) | private async buildCliArgs(config: TaskConfig): Promise { method setupStreamParsing (line 486) | private setupStreamParsing(): void { method handleMessage (line 500) | private handleMessage(message: OpenCodeMessage): void { method handleAskUserQuestion (line 643) | private handleAskUserQuestion(input: AskUserQuestionInput): void { method handleProcessExit (line 663) | private handleProcessExit(code: number | null): void { method generateTaskId (line 689) | private generateTaskId(): string { method generateMessageId (line 693) | private generateMessageId(): string { method generateRequestId (line 697) | private generateRequestId(): string { method getPlatformShell (line 710) | private getPlatformShell(): string { method getShellArgs (line 741) | private getShellArgs(command: string): string[] { type AskUserQuestionInput (line 752) | interface AskUserQuestionInput { function createAdapter (line 765) | function createAdapter(taskId?: string): OpenCodeAdapter { function getOpenCodeAdapter (line 779) | function getOpenCodeAdapter(): OpenCodeAdapter { FILE: apps/openwork-memos-integration/apps/desktop/src/main/opencode/cli-path.ts function getNvmOpenCodePaths (line 9) | function getNvmOpenCodePaths(): string[] { function getOpenCodeCliPath (line 37) | function getOpenCodeCliPath(): { command: string; args: string[] } { function isOpenCodeOnPath (line 104) | function isOpenCodeOnPath(): boolean { function isOpenCodeBundled (line 117) | function isOpenCodeBundled(): boolean { function getBundledOpenCodeVersion (line 178) | function getBundledOpenCodeVersion(): string | null { FILE: apps/openwork-memos-integration/apps/desktop/src/main/opencode/config-generator.ts constant ACCOMPLISH_AGENT_NAME (line 12) | const ACCOMPLISH_AGENT_NAME = 'accomplish'; function getSkillsPath (line 26) | function getSkillsPath(): string { function getOpenCodeConfigDir (line 41) | function getOpenCodeConfigDir(): string { constant ACCOMPLISH_SYSTEM_PROMPT_TEMPLATE (line 49) | const ACCOMPLISH_SYSTEM_PROMPT_TEMPLATE = ` type AgentConfig (line 318) | interface AgentConfig { type McpServerConfig (line 324) | interface McpServerConfig { type OllamaProviderModelConfig (line 333) | interface OllamaProviderModelConfig { type OllamaProviderConfig (line 338) | interface OllamaProviderConfig { type BedrockProviderConfig (line 347) | interface BedrockProviderConfig { type OpenRouterProviderModelConfig (line 354) | interface OpenRouterProviderModelConfig { type OpenRouterProviderConfig (line 359) | interface OpenRouterProviderConfig { type LiteLLMProviderModelConfig (line 368) | interface LiteLLMProviderModelConfig { type LiteLLMProviderConfig (line 373) | interface LiteLLMProviderConfig { type ZaiProviderModelConfig (line 383) | interface ZaiProviderModelConfig { type ZaiProviderConfig (line 388) | interface ZaiProviderConfig { type ProviderConfig (line 397) | type ProviderConfig = OllamaProviderConfig | BedrockProviderConfig | Ope... type OpenCodeConfig (line 399) | interface OpenCodeConfig { function generateOpenCodeConfig (line 415) | async function generateOpenCodeConfig(systemPromptAppend?: string): Prom... function getOpenCodeConfigPath (line 660) | function getOpenCodeConfigPath(): string { function getOpenCodeAuthPath (line 668) | function getOpenCodeAuthPath(): string { function syncApiKeysToOpenCodeAuth (line 680) | async function syncApiKeysToOpenCodeAuth(): Promise { FILE: apps/openwork-memos-integration/apps/desktop/src/main/opencode/stream-parser.ts type StreamParserEvents (line 4) | interface StreamParserEvents { constant MAX_BUFFER_SIZE (line 10) | const MAX_BUFFER_SIZE = 10 * 1024 * 1024; class StreamParser (line 15) | class StreamParser extends EventEmitter { method feed (line 21) | feed(chunk: string): void { method parseBuffer (line 37) | private parseBuffer(): void { method isTerminalDecoration (line 54) | private isTerminalDecoration(line: string): boolean { method parseLine (line 72) | private parseLine(line: string): void { method flush (line 132) | flush(): void { method reset (line 142) | reset(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/opencode/task-manager.ts function isSystemChromeInstalled (line 28) | function isSystemChromeInstalled(): boolean { function isPlaywrightInstalled (line 47) | function isPlaywrightInstalled(): boolean { function installPlaywrightChromium (line 78) | async function installPlaywrightChromium( function ensureDevBrowserServer (line 149) | async function ensureDevBrowserServer( type TaskCallbacks (line 208) | interface TaskCallbacks { type ManagedTask (line 221) | interface ManagedTask { type QueuedTask (line 232) | interface QueuedTask { constant DEFAULT_MAX_CONCURRENT_TASKS (line 243) | const DEFAULT_MAX_CONCURRENT_TASKS = 10; class TaskManager (line 251) | class TaskManager { method constructor (line 256) | constructor(options?: { maxConcurrentTasks?: number }) { method startTask (line 264) | async startTask( method queueTask (line 293) | private queueTask( method executeTask (line 328) | private async executeTask( method processQueue (line 430) | private async processQueue(): Promise { method cancelTask (line 455) | async cancelTask(taskId: string): Promise { method interruptTask (line 487) | async interruptTask(taskId: string): Promise { method cancelQueuedTask (line 502) | cancelQueuedTask(taskId: string): boolean { method hasRunningTask (line 516) | hasRunningTask(): boolean { method isTaskQueued (line 523) | isTaskQueued(taskId: string): boolean { method getQueuePosition (line 530) | getQueuePosition(taskId: string): number { method getQueueLength (line 538) | getQueueLength(): number { method sendResponse (line 545) | async sendResponse(taskId: string, response: string): Promise { method getSessionId (line 557) | getSessionId(taskId: string): string | null { method hasActiveTask (line 565) | hasActiveTask(taskId: string): boolean { method getActiveTaskCount (line 572) | getActiveTaskCount(): number { method getActiveTaskIds (line 579) | getActiveTaskIds(): string[] { method getActiveTaskId (line 587) | getActiveTaskId(): string | null { method cleanupTask (line 595) | private cleanupTask(taskId: string): void { method dispose (line 609) | dispose(): void { function getTaskManager (line 634) | function getTaskManager(): TaskManager { function disposeTaskManager (line 645) | function disposeTaskManager(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/permission-api.ts constant PERMISSION_API_PORT (line 13) | const PERMISSION_API_PORT = 9226; constant QUESTION_API_PORT (line 14) | const QUESTION_API_PORT = 9227; type PendingPermission (line 16) | interface PendingPermission { type PendingQuestion (line 21) | interface PendingQuestion { function initPermissionApi (line 39) | function initPermissionApi( function resolvePermission (line 51) | function resolvePermission(requestId: string, allowed: boolean): boolean { function resolveQuestion (line 67) | function resolveQuestion( function generateRequestId (line 85) | function generateRequestId(): string { function generateQuestionRequestId (line 92) | function generateQuestionRequestId(): string { function startPermissionApiServer (line 99) | function startPermissionApiServer(): http.Server { function startQuestionApiServer (line 228) | function startQuestionApiServer(): http.Server { function isFilePermissionRequest (line 347) | function isFilePermissionRequest(requestId: string): boolean { function isQuestionRequest (line 354) | function isQuestionRequest(requestId: string): boolean { FILE: apps/openwork-memos-integration/apps/desktop/src/main/services/memory.ts constant DEFAULT_BASE_URL (line 5) | const DEFAULT_BASE_URL = 'https://memos.memtensor.cn/api/openmem/v1'; constant DEFAULT_TOP_K (line 6) | const DEFAULT_TOP_K = 5; constant DEFAULT_TIMEOUT_MS (line 7) | const DEFAULT_TIMEOUT_MS = 6000; constant DEFAULT_MAX_CONTEXT_LENGTH (line 8) | const DEFAULT_MAX_CONTEXT_LENGTH = 3000; constant DEFAULT_MAX_MESSAGE_COUNT (line 9) | const DEFAULT_MAX_MESSAGE_COUNT = 8; constant DEFAULT_MAX_MESSAGE_LENGTH (line 10) | const DEFAULT_MAX_MESSAGE_LENGTH = 2000; type MemoryMessage (line 12) | interface MemoryMessage { type MemoryConfig (line 17) | interface MemoryConfig { function getEnv (line 30) | function getEnv(): Record { function resolveMemoryConfig (line 35) | function resolveMemoryConfig(): MemoryConfig { function resolveMemoryUserId (line 70) | function resolveMemoryUserId(): string { function buildUrl (line 76) | function buildUrl(baseUrl: string, path: string): string { function buildAuthHeaders (line 82) | function buildAuthHeaders(config: MemoryConfig): Record { function fetchWithTimeout (line 98) | async function fetchWithTimeout( function normalizeText (line 113) | function normalizeText(value: unknown): string | null { function extractMemoryTexts (line 119) | function extractMemoryTexts(payload: unknown): string[] { function formatMemoryContext (line 194) | function formatMemoryContext(entries: string[], maxLength: number): stri... function toMemoryMessages (line 209) | function toMemoryMessages(messages: TaskMessage[], taskPrompt?: string, ... function getMemoryContextForPrompt (line 238) | async function getMemoryContextForPrompt( function rememberTask (line 281) | async function rememberTask(task: { FILE: apps/openwork-memos-integration/apps/desktop/src/main/services/summarizer.ts constant SUMMARY_PROMPT (line 10) | const SUMMARY_PROMPT = `Generate a very short title (3-5 words max) that... function generateTaskSummary (line 21) | async function generateTaskSummary(prompt: string): Promise { function callProvider (line 46) | async function callProvider( function callAnthropic (line 65) | async function callAnthropic(apiKey: string, prompt: string): Promise { function cleanSummary (line 191) | function cleanSummary(text: string): string { function truncatePrompt (line 206) | function truncatePrompt(prompt: string, maxLength = 30): string { FILE: apps/openwork-memos-integration/apps/desktop/src/main/store/appSettings.ts type AppSettingsSchema (line 8) | interface AppSettingsSchema { function getDebugMode (line 41) | function getDebugMode(): boolean { function setDebugMode (line 48) | function setDebugMode(enabled: boolean): void { function getOnboardingComplete (line 55) | function getOnboardingComplete(): boolean { function setOnboardingComplete (line 62) | function setOnboardingComplete(complete: boolean): void { function getSelectedModel (line 69) | function getSelectedModel(): SelectedModel | null { function setSelectedModel (line 76) | function setSelectedModel(model: SelectedModel): void { function getOllamaConfig (line 83) | function getOllamaConfig(): OllamaConfig | null { function setOllamaConfig (line 90) | function setOllamaConfig(config: OllamaConfig | null): void { function getLiteLLMConfig (line 97) | function getLiteLLMConfig(): LiteLLMConfig | null { function setLiteLLMConfig (line 104) | function setLiteLLMConfig(config: LiteLLMConfig | null): void { function getMemoryUserId (line 111) | function getMemoryUserId(): string { function getAppSettings (line 123) | function getAppSettings(): AppSettingsSchema { function clearAppSettings (line 138) | function clearAppSettings(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/store/freshInstallCleanup.ts type InstallMarker (line 21) | interface InstallMarker { function getKnownUserDataDirs (line 30) | function getKnownUserDataDirs(): string[] { function getMarkerPath (line 46) | function getMarkerPath(): string { function getAppBundleMtime (line 55) | function getAppBundleMtime(): Date | null { function readInstallMarker (line 86) | function readInstallMarker(): InstallMarker | null { function writeInstallMarker (line 104) | function writeInstallMarker(marker: InstallMarker): void { function hasExistingUserData (line 124) | function hasExistingUserData(): boolean { function clearPreviousInstallData (line 136) | function clearPreviousInstallData(): void { function checkAndCleanupFreshInstall (line 205) | async function checkAndCleanupFreshInstall(): Promise { FILE: apps/openwork-memos-integration/apps/desktop/src/main/store/providerSettings.ts constant DEFAULT_SETTINGS (line 6) | const DEFAULT_SETTINGS: ProviderSettings = { function getProviderSettings (line 17) | function getProviderSettings(): ProviderSettings { function setActiveProvider (line 25) | function setActiveProvider(providerId: ProviderId | null): void { function getActiveProviderId (line 29) | function getActiveProviderId(): ProviderId | null { function getConnectedProvider (line 33) | function getConnectedProvider(providerId: ProviderId): ConnectedProvider... function setConnectedProvider (line 38) | function setConnectedProvider(providerId: ProviderId, provider: Connecte... function removeConnectedProvider (line 46) | function removeConnectedProvider(providerId: ProviderId): void { function updateProviderModel (line 57) | function updateProviderModel(providerId: ProviderId, modelId: string | n... function setProviderDebugMode (line 67) | function setProviderDebugMode(enabled: boolean): void { function getProviderDebugMode (line 71) | function getProviderDebugMode(): boolean { function clearProviderSettings (line 75) | function clearProviderSettings(): void { function getActiveProviderModel (line 83) | function getActiveProviderModel(): { provider: ProviderId; model: string... function hasReadyProvider (line 110) | function hasReadyProvider(): boolean { function getConnectedProviderIds (line 120) | function getConnectedProviderIds(): ProviderId[] { FILE: apps/openwork-memos-integration/apps/desktop/src/main/store/secureStorage.ts type SecureStorageSchema (line 23) | interface SecureStorageSchema { function getSecureStore (line 34) | function getSecureStore(): Store { function getSalt (line 48) | function getSalt(): Buffer { function getDerivedKey (line 68) | function getDerivedKey(): Buffer { function encryptValue (line 100) | function encryptValue(value: string): string { function decryptValue (line 118) | function decryptValue(encryptedData: string): string | null { function storeApiKey (line 148) | function storeApiKey(provider: string, apiKey: string): void { function getApiKey (line 159) | function getApiKey(provider: string): string | null { function deleteApiKey (line 175) | function deleteApiKey(provider: string): boolean { type ApiKeyProvider (line 190) | type ApiKeyProvider = 'anthropic' | 'openai' | 'openrouter' | 'google' |... function getAllApiKeys (line 195) | async function getAllApiKeys(): Promise | null { function hasAnyApiKey (line 235) | async function hasAnyApiKey(): Promise { function listStoredCredentials (line 244) | function listStoredCredentials(): Array<{ account: string; password: str... function clearSecureStorage (line 265) | function clearSecureStorage(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/store/taskHistory.ts type StoredTask (line 7) | interface StoredTask { type TaskHistorySchema (line 20) | interface TaskHistorySchema { constant PERSIST_DEBOUNCE_MS (line 33) | const PERSIST_DEBOUNCE_MS = 250; function getCurrentTasks (line 37) | function getCurrentTasks(): StoredTask[] { function schedulePersist (line 41) | function schedulePersist(tasks: StoredTask[]): void { function flushPendingTasks (line 59) | function flushPendingTasks(): void { function getTasks (line 73) | function getTasks(): StoredTask[] { function getTask (line 80) | function getTask(taskId: string): StoredTask | undefined { function saveTask (line 88) | function saveTask(task: Task): void { function updateTaskStatus (line 124) | function updateTaskStatus( function addTaskMessage (line 144) | function addTaskMessage(taskId: string, message: TaskMessage): void { function updateTaskSessionId (line 157) | function updateTaskSessionId(taskId: string, sessionId: string): void { function updateTaskSummary (line 170) | function updateTaskSummary(taskId: string, summary: string): void { function deleteTask (line 183) | function deleteTask(taskId: string): void { function clearHistory (line 192) | function clearHistory(): void { function setMaxHistoryItems (line 199) | function setMaxHistoryItems(max: number): void { function clearTaskHistoryStore (line 214) | function clearTaskHistoryStore(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/test-utils/mock-task-flow.ts type MockScenario (line 13) | type MockScenario = type MockTaskConfig (line 21) | interface MockTaskConfig { function isMockTaskEventsEnabled (line 37) | function isMockTaskEventsEnabled(): boolean { constant SCENARIO_KEYWORDS (line 52) | const SCENARIO_KEYWORDS: Record = { function detectScenarioFromPrompt (line 65) | function detectScenarioFromPrompt(prompt: string): MockScenario { function createMessageId (line 93) | function createMessageId(): string { function sleep (line 97) | function sleep(ms: number): Promise { function executeMockTaskFlow (line 109) | async function executeMockTaskFlow( function executeScenario (line 151) | async function executeScenario( function executeSuccessScenario (line 184) | async function executeSuccessScenario( function executeToolScenario (line 211) | async function executeToolScenario( function executePermissionScenario (line 260) | function executePermissionScenario( function executeQuestionScenario (line 278) | function executeQuestionScenario( function executeErrorScenario (line 299) | function executeErrorScenario( function executeInterruptedScenario (line 313) | async function executeInterruptedScenario( function createMockTask (line 347) | function createMockTask(taskId: string, prompt: string): Task { FILE: apps/openwork-memos-integration/apps/desktop/src/main/utils/bundled-node.ts constant NODE_VERSION (line 12) | const NODE_VERSION = '20.18.1'; type BundledNodePaths (line 14) | interface BundledNodePaths { function getBundledNodePaths (line 35) | function getBundledNodePaths(): BundledNodePaths | null { function isBundledNodeAvailable (line 71) | function isBundledNodeAvailable(): boolean { function getNodePath (line 87) | function getNodePath(): string { function getNpmPath (line 104) | function getNpmPath(): string { function getNpxPath (line 120) | function getNpxPath(): string { function logBundledNodeInfo (line 134) | function logBundledNodeInfo(): void { FILE: apps/openwork-memos-integration/apps/desktop/src/main/utils/system-path.ts function getNvmNodePaths (line 22) | function getNvmNodePaths(): string[] { function getFnmNodePaths (line 52) | function getFnmNodePaths(): string[] { function getCommonNodePaths (line 81) | function getCommonNodePaths(): string[] { function getSystemPathFromPathHelper (line 117) | function getSystemPathFromPathHelper(): string | null { function getExtendedNodePath (line 153) | function getExtendedNodePath(basePath?: string): string { function findCommandInPath (line 206) | function findCommandInPath(command: string, searchPath: string): string ... FILE: apps/openwork-memos-integration/apps/desktop/src/preload/index.ts type AccomplishAPI (line 220) | type AccomplishAPI = typeof accomplishAPI; FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/App.tsx type AppStatus (line 20) | type AppStatus = 'loading' | 'ready' | 'error'; function App (line 22) | function App() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/TaskLauncher/TaskLauncher.tsx function TaskLauncher (line 15) | function TaskLauncher() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/TaskLauncher/TaskLauncherItem.tsx type TaskLauncherItemProps (line 7) | interface TaskLauncherItemProps { function formatRelativeDate (line 13) | function formatRelativeDate(dateString: string): string { function getStatusIcon (line 26) | function getStatusIcon(status: Task['status']) { function TaskLauncherItem (line 42) | function TaskLauncherItem({ task, isSelected, onClick }: TaskLauncherIte... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/history/TaskHistory.tsx type TaskHistoryProps (line 6) | interface TaskHistoryProps { function TaskHistory (line 11) | function TaskHistory({ limit, showTitle = true }: TaskHistoryProps) { function TaskHistoryItem (line 70) | function TaskHistoryItem({ function getTimeAgo (line 121) | function getTimeAgo(dateString: string): string { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/landing/TaskInputBar.tsx type TaskInputBarProps (line 8) | interface TaskInputBarProps { function TaskInputBar (line 19) | function TaskInputBar({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/layout/ConversationListItem.tsx type ConversationListItemProps (line 9) | interface ConversationListItemProps { function ConversationListItem (line 13) | function ConversationListItem({ task }: ConversationListItemProps) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/layout/Header.tsx function Header (line 3) | function Header() { function NavLink (line 40) | function NavLink({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/layout/SettingsDialog.tsx type SettingsDialogProps (line 17) | interface SettingsDialogProps { constant API_KEY_PROVIDERS (line 24) | const API_KEY_PROVIDERS = [ type ProviderId (line 35) | type ProviderId = typeof API_KEY_PROVIDERS[number]['id']; constant OPENROUTER_PROVIDER_PRIORITY (line 38) | const OPENROUTER_PROVIDER_PRIORITY = [ constant LITELLM_PROVIDER_PRIORITY (line 52) | const LITELLM_PROVIDER_PRIORITY = [ function SettingsDialog (line 65) | function SettingsDialog({ open, onOpenChange, onApiKeySaved }: SettingsD... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/layout/Sidebar.tsx function Sidebar (line 17) | function Sidebar() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/ProviderCard.tsx constant PROVIDER_LOGOS (line 22) | const PROVIDER_LOGOS: Record = { type ProviderCardProps (line 35) | interface ProviderCardProps { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/ProviderGrid.tsx constant PROVIDER_ORDER (line 9) | const PROVIDER_ORDER: ProviderId[] = [ type ProviderGridProps (line 22) | interface ProviderGridProps { function ProviderGrid (line 30) | function ProviderGrid({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/ProviderSettingsPanel.tsx type ProviderSettingsPanelProps (line 13) | interface ProviderSettingsPanelProps { function ProviderSettingsPanel (line 22) | function ProviderSettingsPanel({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/hooks/useProviderSettings.ts function useProviderSettings (line 11) | function useProviderSettings() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/providers/BedrockProviderForm.tsx type BedrockProviderFormProps (line 19) | interface BedrockProviderFormProps { function BedrockProviderForm (line 27) | function BedrockProviderForm({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/providers/ClassicProviderForm.tsx constant PROVIDER_LOGOS (line 23) | const PROVIDER_LOGOS: Record = { type ClassicProviderFormProps (line 32) | interface ClassicProviderFormProps { function ClassicProviderForm (line 41) | function ClassicProviderForm({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/providers/LiteLLMProviderForm.tsx type LiteLLMProviderFormProps (line 16) | interface LiteLLMProviderFormProps { function LiteLLMProviderForm (line 24) | function LiteLLMProviderForm({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/providers/OllamaProviderForm.tsx type OllamaProviderFormProps (line 17) | interface OllamaProviderFormProps { function OllamaProviderForm (line 25) | function OllamaProviderForm({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/providers/OpenRouterProviderForm.tsx type OpenRouterProviderFormProps (line 18) | interface OpenRouterProviderFormProps { function OpenRouterProviderForm (line 26) | function OpenRouterProviderForm({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ApiKeyInput.tsx type ApiKeyInputProps (line 3) | interface ApiKeyInputProps { function ApiKeyInput (line 13) | function ApiKeyInput({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ConnectButton.tsx type ConnectButtonProps (line 5) | interface ConnectButtonProps { function ConnectButton (line 11) | function ConnectButton({ onClick, connecting, disabled }: ConnectButtonP... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ConnectedControls.tsx type ConnectedControlsProps (line 5) | interface ConnectedControlsProps { function ConnectedControls (line 9) | function ConnectedControls({ onDisconnect }: ConnectedControlsProps) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ConnectionStatus.tsx type ConnectionStatusProps (line 5) | interface ConnectionStatusProps { function ConnectionStatus (line 10) | function ConnectionStatus({ status, onDisconnect }: ConnectionStatusProp... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/FormError.tsx type FormErrorProps (line 3) | interface FormErrorProps { function FormError (line 7) | function FormError({ error }: FormErrorProps) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ModelSelector.tsx type Model (line 5) | interface Model { type ModelSelectorProps (line 10) | interface ModelSelectorProps { function ModelSelector (line 20) | function ModelSelector({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/ProviderFormHeader.tsx type ProviderFormHeaderProps (line 3) | interface ProviderFormHeaderProps { function ProviderFormHeader (line 8) | function ProviderFormHeader({ logoSrc, providerName }: ProviderFormHeade... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/settings/shared/RegionSelector.tsx constant AWS_REGIONS (line 3) | const AWS_REGIONS = [ type RegionSelectorProps (line 19) | interface RegionSelectorProps { function RegionSelector (line 24) | function RegionSelector({ value, onChange }: RegionSelectorProps) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/avatar.tsx function Avatar (line 8) | function Avatar({ function AvatarImage (line 24) | function AvatarImage({ function AvatarFallback (line 37) | function AvatarFallback({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/button.tsx function Button (line 39) | function Button({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<'div'>) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<'div'>) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<'div'>) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<'... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<'div'>) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<'div'... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/dialog.tsx function Dialog (line 11) | function Dialog({ function DialogTrigger (line 17) | function DialogTrigger({ function DialogPortal (line 25) | function DialogPortal({ function DialogClose (line 33) | function DialogClose({ function DialogHeader (line 95) | function DialogHeader({ function DialogFooter (line 108) | function DialogFooter({ function DialogTitle (line 124) | function DialogTitle({ function DialogDescription (line 137) | function DialogDescription({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 163) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 176) | function DropdownMenuShortcut({ function DropdownMenuSub (line 189) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 195) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 219) | function DropdownMenuSubContent({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<'inpu... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/label.tsx function Label (line 13) | function Label({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/scroll-area.tsx type ScrollAreaProps (line 4) | interface ScrollAreaProps extends React.HTMLAttributes { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<'div'>) { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/streaming-text.tsx type StreamingTextProps (line 9) | interface StreamingTextProps { function StreamingText (line 23) | function StreamingText({ function useStreamingState (line 110) | function useStreamingState( FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/components/ui/textarea.tsx function Textarea (line 5) | function Textarea({ className, ...props }: React.ComponentProps<'textare... FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/pages/Execution.tsx type DebugLogEntry (line 23) | interface DebugLogEntry { constant TOOL_PROGRESS_MAP (line 41) | const TOOL_PROGRESS_MAP: Record void>(fn: T, ms: num... function getOperationBadgeClasses (line 66) | function getOperationBadgeClasses(operation?: string): string { function isDeleteOperation (line 79) | function isDeleteOperation(request: { type: string; fileOperation?: stri... function getDisplayFilePaths (line 84) | function getDisplayFilePaths(request: { filePath?: string; filePaths?: s... function ExecutionPage (line 94) | function ExecutionPage() { type MessageBubbleProps (line 1133) | interface MessageBubbleProps { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/pages/History.tsx function HistoryPage (line 4) | function HistoryPage() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/pages/Home.tsx constant USE_CASE_EXAMPLES (line 26) | const USE_CASE_EXAMPLES = [ function HomePage (line 83) | function HomePage() { FILE: apps/openwork-memos-integration/apps/desktop/src/renderer/stores/taskStore.ts type TaskUpdateBatchEvent (line 14) | interface TaskUpdateBatchEvent { type SetupProgressEvent (line 20) | interface SetupProgressEvent { type TaskState (line 26) | interface TaskState { function createMessageId (line 67) | function createMessageId(): string { FILE: apps/openwork-memos-integration/apps/desktop/vite.config.ts method onstart (line 17) | onstart({ startup }) { method onstart (line 32) | onstart({ reload }) { FILE: apps/openwork-memos-integration/packages/shared/src/types/auth.ts type User (line 5) | interface User { type Session (line 14) | interface Session { type AuthTokens (line 23) | interface AuthTokens { type ApiKeyConfig (line 29) | interface ApiKeyConfig { type BedrockAccessKeyCredentials (line 39) | interface BedrockAccessKeyCredentials { type BedrockProfileCredentials (line 47) | interface BedrockProfileCredentials { type BedrockCredentials (line 53) | type BedrockCredentials = BedrockAccessKeyCredentials | BedrockProfileCr... type QuotaStatus (line 55) | interface QuotaStatus { FILE: apps/openwork-memos-integration/packages/shared/src/types/opencode.ts type OpenCodeMessageBase (line 6) | interface OpenCodeMessageBase { type OpenCodeStepStartMessage (line 13) | interface OpenCodeStepStartMessage extends OpenCodeMessageBase { type OpenCodeTextMessage (line 25) | interface OpenCodeTextMessage extends OpenCodeMessageBase { type OpenCodeToolCallMessage (line 41) | interface OpenCodeToolCallMessage extends OpenCodeMessageBase { type OpenCodeToolUseMessage (line 58) | interface OpenCodeToolUseMessage extends OpenCodeMessageBase { type OpenCodeToolResultMessage (line 80) | interface OpenCodeToolResultMessage extends OpenCodeMessageBase { type OpenCodeStepFinishMessage (line 98) | interface OpenCodeStepFinishMessage extends OpenCodeMessageBase { type OpenCodeErrorMessage (line 121) | interface OpenCodeErrorMessage extends OpenCodeMessageBase { type OpenCodeMessage (line 128) | type OpenCodeMessage = type NormalizedMessage (line 140) | interface NormalizedMessage { type ClaudeMessage (line 161) | type ClaudeMessage = OpenCodeMessage; type ClaudeMessageBase (line 162) | type ClaudeMessageBase = OpenCodeMessageBase; FILE: apps/openwork-memos-integration/packages/shared/src/types/permission.ts type FileOperation (line 6) | type FileOperation = 'create' | 'delete' | 'rename' | 'move' | 'modify' ... type PermissionRequest (line 8) | interface PermissionRequest { type PermissionOption (line 39) | interface PermissionOption { type PermissionResponse (line 44) | interface PermissionResponse { FILE: apps/openwork-memos-integration/packages/shared/src/types/provider.ts type ProviderType (line 5) | type ProviderType = 'anthropic' | 'openai' | 'openrouter' | 'google' | '... type ProviderConfig (line 7) | interface ProviderConfig { type ModelConfig (line 16) | interface ModelConfig { type SelectedModel (line 26) | interface SelectedModel { type OllamaModelInfo (line 35) | interface OllamaModelInfo { type OllamaConfig (line 44) | interface OllamaConfig { type OpenRouterModel (line 54) | interface OpenRouterModel { type OpenRouterConfig (line 64) | interface OpenRouterConfig { type LiteLLMModel (line 72) | interface LiteLLMModel { type LiteLLMConfig (line 82) | interface LiteLLMConfig { constant DEFAULT_PROVIDERS (line 92) | const DEFAULT_PROVIDERS: ProviderConfig[] = [ constant DEFAULT_MODEL (line 272) | const DEFAULT_MODEL: SelectedModel = { FILE: apps/openwork-memos-integration/packages/shared/src/types/providerSettings.ts type ProviderId (line 3) | type ProviderId = type ProviderCategory (line 15) | type ProviderCategory = 'classic' | 'aws' | 'local' | 'proxy' | 'hybrid'; type ProviderMeta (line 17) | interface ProviderMeta { constant PROVIDER_META (line 26) | const PROVIDER_META: Record = { type ConnectionStatus (line 39) | type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'e... type ApiKeyCredentials (line 41) | interface ApiKeyCredentials { type BedrockProviderCredentials (line 46) | interface BedrockProviderCredentials { type OllamaCredentials (line 54) | interface OllamaCredentials { type OpenRouterCredentials (line 59) | interface OpenRouterCredentials { type LiteLLMCredentials (line 64) | interface LiteLLMCredentials { type ProviderCredentials (line 71) | type ProviderCredentials = type ConnectedProvider (line 78) | interface ConnectedProvider { type ProviderSettings (line 87) | interface ProviderSettings { function isProviderReady (line 93) | function isProviderReady(provider: ConnectedProvider | undefined): boole... function hasAnyReadyProvider (line 98) | function hasAnyReadyProvider(settings: ProviderSettings | null | undefin... function getActiveProvider (line 103) | function getActiveProvider(settings: ProviderSettings | null | undefined... constant DEFAULT_MODELS (line 112) | const DEFAULT_MODELS: Partial> = { function getDefaultModelForProvider (line 123) | function getDefaultModelForProvider(providerId: ProviderId): string | nu... FILE: apps/openwork-memos-integration/packages/shared/src/types/task.ts type TaskStatus (line 5) | type TaskStatus = type TaskConfig (line 15) | interface TaskConfig { type Task (line 32) | interface Task { type TaskAttachment (line 46) | interface TaskAttachment { type TaskMessage (line 52) | interface TaskMessage { type TaskResult (line 63) | interface TaskResult { type TaskProgress (line 70) | interface TaskProgress { type TaskUpdateEvent (line 79) | interface TaskUpdateEvent { FILE: evaluation/scripts/PrefEval/pref_eval.py function call_gpt4o_mini_async (line 23) | async def call_gpt4o_mini_async(client: OpenAI, prompt: str) -> str: function parse_xml_response (line 41) | def parse_xml_response(response: str, tag: str) -> str: function evaluate_violate_preference_async (line 46) | async def evaluate_violate_preference_async( function evaluate_acknowledge_preference_async (line 78) | async def evaluate_acknowledge_preference_async( function evaluate_hallucinate_preference_async (line 108) | async def evaluate_hallucinate_preference_async( function evaluate_helpful_response_async (line 141) | async def evaluate_helpful_response_async( function classify_error_type (line 181) | def classify_error_type(evaluation_results: dict[str, Any]) -> str: function process_line (line 199) | async def process_line(line: str, client: OpenAI, semaphore: asyncio.Sem... function log_summary (line 230) | def log_summary(error_counter: Counter, total_samples: int) -> dict[str,... function generate_excel_summary (line 253) | def generate_excel_summary( function main (line 307) | async def main(concurrency_limit: int, input_file: str, output_file: str... FILE: evaluation/scripts/PrefEval/pref_mem0.py function add_memory_for_line (line 31) | def add_memory_for_line( function search_memory_for_line (line 83) | def search_memory_for_line(line_data: tuple, mem_client, top_k_value: in... function generate_response_for_line (line 129) | def generate_response_for_line(line_data: tuple, openai_client: OpenAI) ... function main (line 175) | def main(): FILE: evaluation/scripts/PrefEval/pref_memobase.py function add_memory_for_line (line 30) | def add_memory_for_line( function search_memory_for_line (line 91) | def search_memory_for_line(line_data: tuple, mem_client, top_k_value: in... function generate_response_for_line (line 136) | def generate_response_for_line(line_data: tuple, openai_client: OpenAI) ... function main (line 182) | def main(): FILE: evaluation/scripts/PrefEval/pref_memos.py function add_memory_for_line (line 31) | def add_memory_for_line( function search_memory_for_line (line 77) | def search_memory_for_line(line_data, mem_client, top_k_value): function generate_response_for_line (line 129) | def generate_response_for_line(line_data, openai_client, lib): function main (line 177) | def main(): FILE: evaluation/scripts/PrefEval/pref_memu.py function add_memory_for_line (line 32) | def add_memory_for_line( function search_memory_for_line (line 83) | def search_memory_for_line(line_data: tuple, mem_client, top_k_value: in... function generate_response_for_line (line 130) | def generate_response_for_line(line_data: tuple, openai_client: OpenAI) ... function main (line 176) | def main(): FILE: evaluation/scripts/PrefEval/pref_supermemory.py function add_memory_for_line (line 30) | def add_memory_for_line( function search_memory_for_line (line 80) | def search_memory_for_line(line_data: tuple, mem_client, top_k_value: in... function generate_response_for_line (line 125) | def generate_response_for_line(line_data: tuple, openai_client: OpenAI) ... function main (line 171) | def main(): FILE: evaluation/scripts/PrefEval/pref_zep.py function add_memory_for_line (line 32) | def add_memory_for_line( function search_memory_for_line (line 84) | def search_memory_for_line(line_data: tuple, mem_client, top_k_value: in... function generate_response_for_line (line 131) | def generate_response_for_line(line_data: tuple, openai_client: OpenAI) ... function main (line 177) | def main(): FILE: evaluation/scripts/PrefEval/prefeval_preprocess.py function convert_dataset_to_jsonl (line 7) | def convert_dataset_to_jsonl(dataset_name, output_dir="./scripts/PrefEva... function restructure_conversation_in_json (line 29) | def restructure_conversation_in_json(data): function process_jsonl_file (line 63) | def process_jsonl_file(input_filepath, output_filepath): function main (line 94) | def main(): FILE: evaluation/scripts/locomo/locomo_eval.py class LLMGrade (line 46) | class LLMGrade(BaseModel): function extract_label_json (line 51) | def extract_label_json(text: str) -> str | None: function locomo_grader (line 74) | async def locomo_grader(llm_client, question: str, gold_answer: str, res... function calculate_rouge_scores (line 123) | def calculate_rouge_scores(gold_answer, response): function calculate_bleu_scores (line 136) | def calculate_bleu_scores(gold_tokens, response_tokens): function calculate_meteor_score (line 155) | def calculate_meteor_score(gold_tokens, response_tokens): function calculate_semantic_similarity (line 163) | def calculate_semantic_similarity(gold_answer, response): function calculate_f1_score (line 178) | def calculate_f1_score(gold_tokens, response_tokens): function calculate_nlp_metrics (line 197) | def calculate_nlp_metrics(gold_answer, response, context, options=None): function convert_numpy_types (line 227) | def convert_numpy_types(obj): function process_group_responses (line 238) | async def process_group_responses(group_id, group_responses, oai_client,... function process_single_group (line 279) | async def process_single_group(group_id, group_responses, oai_client, op... function main (line 294) | async def main(frame, version="default", options=None, num_runs=1, max_w... FILE: evaluation/scripts/locomo/locomo_ingestion.py function ingest_session (line 22) | def ingest_session(client, session, frame, version, metadata): function process_user (line 91) | def process_user(conv_idx, frame, locomo_df, version, success_records, f): function main (line 168) | def main(frame, version="default", num_workers=4): FILE: evaluation/scripts/locomo/locomo_metric.py function calculate_scores (line 50) | def calculate_scores(data): function save_to_excel (line 303) | def save_to_excel(results, output_path): FILE: evaluation/scripts/locomo/locomo_openai.py class OpenAIPredict (line 64) | class OpenAIPredict: method __init__ (line 65) | def __init__(self, model="gpt-4o-mini"): method search_memory (line 72) | def search_memory(self, idx): method process_question (line 78) | def process_question(self, val, idx): method answer_question (line 102) | def answer_question(self, idx, question): method process_data_file (line 117) | def process_data_file(self, file_path, output_file_path): function main (line 156) | def main(version): FILE: evaluation/scripts/locomo/locomo_rag.py class RAGManager (line 38) | class RAGManager: method __init__ (line 39) | def __init__(self, data_path="data/locomo/locomo10_rag.json", chunk_si... method generate_response (line 46) | def generate_response(self, question, context): method clean_chat_history (line 88) | def clean_chat_history(self, chat_history): method calculate_embedding (line 95) | def calculate_embedding(self, document): method calculate_similarity (line 99) | def calculate_similarity(self, embedding1, embedding2): method search (line 104) | def search(self, query, chunks, embeddings, k=1): method create_chunks (line 132) | def create_chunks(self, chat_history, chunk_size=500): method process_all_conversations (line 162) | def process_all_conversations(self, output_file_path): class Experiment (line 205) | class Experiment: method __init__ (line 206) | def __init__(self, technique_type, chunk_size): method run (line 210) | def run(self): function process_item (line 216) | def process_item(item_data): function rename_json_keys (line 249) | def rename_json_keys(file_path): function generate_response_file (line 262) | def generate_response_file(file_path): function main (line 302) | def main(): FILE: evaluation/scripts/locomo/locomo_responses.py function locomo_response (line 26) | async def locomo_response(frame, llm_client, context: str, question: str... function process_qa (line 54) | async def process_qa(frame, qa, search_result, oai_client): function main (line 79) | async def main(frame, version="default"): FILE: evaluation/scripts/locomo/locomo_search.py function mem0_search (line 25) | def mem0_search(client, query, speaker_a_user_id, speaker_b_user_id, top... function mem0_graph_search (line 51) | def mem0_graph_search( function memos_api_search (line 99) | def memos_api_search( function memobase_search (line 128) | def memobase_search( function memu_search (line 147) | def memu_search(client, query, speaker_a_user_id, speaker_b_user_id, top... function supermemory_search (line 167) | def supermemory_search( function search_query (line 186) | def search_query(client, query, metadata, frame, version, top_k=20): function load_existing_results (line 223) | def load_existing_results(frame, version, group_idx): function process_user (line 236) | def process_user(conv_idx, locomo_df, frame, version, top_k=20, num_work... function main (line 319) | def main(frame, version="default", num_workers=1, top_k=20): FILE: evaluation/scripts/locomo/utils.py function filter_memory_data (line 1) | def filter_memory_data(memories_data): FILE: evaluation/scripts/long_bench-v2/longbench_v2_ingestion.py function ingest_sample (line 22) | def ingest_sample( function load_dataset_from_local (line 63) | def load_dataset_from_local(): function main (line 83) | def main(frame, version="default", num_workers=10, max_samples=None): FILE: evaluation/scripts/long_bench-v2/longbench_v2_metric.py function calculate_accuracy (line 6) | def calculate_accuracy(responses): function main (line 84) | def main(frame, version="default"): FILE: evaluation/scripts/long_bench-v2/longbench_v2_responses.py function extract_answer (line 42) | def extract_answer(response): function llm_answer (line 59) | def llm_answer(llm_client, memories, question, choices): function process_sample (line 104) | def process_sample(search_result, llm_client, success_records, record_fi... function main (line 194) | def main(frame, version="default", num_workers=10): FILE: evaluation/scripts/long_bench-v2/longbench_v2_search.py function memos_api_search (line 23) | def memos_api_search(client, query, user_id, top_k, frame): function process_sample (line 54) | def process_sample( function load_dataset_from_local (line 103) | def load_dataset_from_local(): function main (line 123) | def main(frame, version="default", num_workers=10, top_k=20, max_samples... FILE: evaluation/scripts/long_bench-v2/wait_scheduler.py function wait_until_completed (line 9) | def wait_until_completed(params: dict, interval: float = 2.0, timeout: f... FILE: evaluation/scripts/longmemeval/lme_eval.py class LLMGrade (line 51) | class LLMGrade(BaseModel): function calculate_rouge_scores (line 56) | def calculate_rouge_scores(golden_answer, response): function calculate_bleu_scores (line 69) | def calculate_bleu_scores(gold_tokens, response_tokens): function calculate_meteor_score (line 88) | def calculate_meteor_score(gold_tokens, response_tokens): function calculate_semantic_similarity (line 96) | def calculate_semantic_similarity(golden_answer, response): function calculate_f1_score (line 111) | def calculate_f1_score(gold_tokens, response_tokens): function calculate_nlp_metrics (line 130) | def calculate_nlp_metrics(golden_answer, response, context, options=None): function lme_grader (line 161) | def lme_grader(llm_client, question, golden_answer, response): function process_qa (line 183) | async def process_qa( function convert_numpy_types (line 246) | def convert_numpy_types(obj): function evaluate_accuracy (line 257) | def evaluate_accuracy(results, num_runs): function main (line 276) | async def main(frame, version, nlp_options, num_runs=3, num_workers=5): FILE: evaluation/scripts/longmemeval/lme_ingestion.py function ingest_session (line 16) | def ingest_session(session, date, user_id, session_id, frame, client): function ingest_conv (line 63) | def ingest_conv(lme_df, version, conv_idx, frame, success_records, f): function main (line 120) | def main(frame, version, num_workers=2): FILE: evaluation/scripts/longmemeval/lme_metric.py function save_to_excel (line 8) | def save_to_excel(results, output_path): function calculate_scores (line 37) | def calculate_scores(data, grade_path, output_path): FILE: evaluation/scripts/longmemeval/lme_rag.py class RAGFullContext (line 29) | class RAGFullContext(RAGManager): method __init__ (line 30) | def __init__(self, data_path="data/longmemeval/longmemeval_s.json", ch... method get_dataset (line 33) | def get_dataset(self): method split_chunks (line 38) | def split_chunks(self, message_content, chunk_size): method split_chunks2 (line 66) | def split_chunks2(self, message_content, chunk_size): function rag_search (line 98) | def rag_search(client, user_id, query, top_k, frame): function process_user (line 147) | def process_user(lme_df, conv_idx, frame, version, chunk_size, num_chunk... function load_existing_results (line 208) | def load_existing_results(frame, version, group_idx): function main (line 221) | def main(frame, version, chunk_size, num_chunks, top_k=20, num_workers=2): FILE: evaluation/scripts/longmemeval/lme_responses.py function lme_response (line 18) | def lme_response(llm_client, context, question, question_date): function process_qa (line 36) | def process_qa(user_id, search_result, llm_client): function main (line 67) | def main(frame, version, num_workers=4): FILE: evaluation/scripts/longmemeval/lme_search.py function mem0_search (line 23) | def mem0_search(client, query, user_id, top_k): function memos_search (line 44) | def memos_search(client, query, user_id, top_k): function memobase_search (line 56) | def memobase_search(client, query, user_id, top_k): function memu_search (line 63) | def memu_search(client, query, user_id, top_k): function supermemory_search (line 71) | def supermemory_search(client, query, user_id, top_k): function process_user (line 78) | def process_user(lme_df, conv_idx, frame, version, top_k=20): function load_existing_results (line 165) | def load_existing_results(frame, version, group_idx): function main (line 176) | def main(frame, version, top_k=20, num_workers=2): FILE: evaluation/scripts/utils/client.py class ZepClient (line 19) | class ZepClient: method __init__ (line 20) | def __init__(self): method add (line 26) | def add(self, messages, user_id, timestamp): method search (line 36) | def search(self, query, user_id, top_k): class Mem0Client (line 51) | class Mem0Client: method __init__ (line 52) | def __init__(self, enable_graph=False): method add (line 58) | def add(self, messages, user_id, timestamp, batch_size=2): method search (line 84) | def search(self, query, user_id, top_k): class MemobaseClient (line 95) | class MemobaseClient: method __init__ (line 96) | def __init__(self): method add (line 103) | def add(self, messages, user_id, batch_size=2): method search (line 123) | def search(self, query, user_id, top_k): method delete_user (line 134) | def delete_user(self, user_id): method string_to_uuid (line 141) | def string_to_uuid(self, s: str, salt="memobase_client"): class MemosApiClient (line 145) | class MemosApiClient: method __init__ (line 146) | def __init__(self): method add (line 150) | def add(self, messages, user_id, conv_id, batch_size: int = 9999): method search (line 174) | def search(self, query, user_id, top_k): class MemosApiOnlineClient (line 198) | class MemosApiOnlineClient: method __init__ (line 199) | def __init__(self): method add (line 203) | def add(self, messages, user_id, conv_id=None, batch_size: int = 9999): method search (line 228) | def search(self, query, user_id, top_k): class SupermemoryClient (line 277) | class SupermemoryClient: method __init__ (line 278) | def __init__(self): method add (line 283) | def add(self, messages, user_id): method search (line 298) | def search(self, query, user_id, top_k): class MemuClient (line 319) | class MemuClient: method __init__ (line 320) | def __init__(self): method add (line 328) | def add(self, messages, user_id, iso_date): method search (line 342) | def search(self, query, user_id, top_k): method wait_for_completion (line 349) | def wait_for_completion(self, task_id): FILE: evaluation/scripts/utils/mirix_utils.py function get_mirix_client (line 8) | def get_mirix_client(config_path, load_from=None): FILE: examples/api/server_router_api.py function call_add_api (line 46) | def call_add_api(name: str, payload: dict): function example_01a_string_message_minimal (line 80) | def example_01a_string_message_minimal(): function example_01b_standard_chat_triplet (line 96) | def example_01b_standard_chat_triplet(): function example_02a_assistant_with_tool_calls (line 144) | def example_02a_assistant_with_tool_calls(): function example_02b_tool_message_with_result (line 177) | def example_02b_tool_message_with_result(): function example_02c_tool_description_input_output (line 218) | def example_02c_tool_description_input_output(): function example_03_multimodal_text_and_image (line 258) | def example_03_multimodal_text_and_image(): function example_04a_pure_text_input_items (line 298) | def example_04a_pure_text_input_items(): function example_04b_pure_file_input_by_file_id (line 323) | def example_04b_pure_file_input_by_file_id(): function example_04c_pure_file_input_by_file_data (line 351) | def example_04c_pure_file_input_by_file_data(): function example_04d_pure_file_input_by_oss_url (line 378) | def example_04d_pure_file_input_by_oss_url(): function example_05_deprecated_memory_content_and_doc_path (line 408) | def example_05_deprecated_memory_content_and_doc_path(): function example_06a_feedback_add (line 437) | def example_06a_feedback_add(): function example_06b_family_travel_conversation (line 466) | def example_06b_family_travel_conversation(): function example_06c_add_with_chat_history (line 515) | def example_06c_add_with_chat_history(): function example_07a_search_memories (line 561) | def example_07a_search_memories(): function example_07b_chat_complete (line 595) | def example_07b_chat_complete(): FILE: examples/basic_modules/chunker.py function main (line 5) | def main(): FILE: examples/basic_modules/neo4j_example.py function embed_memory_item (line 26) | def embed_memory_item(memory: str) -> list[float]: function get_neo4j_graph (line 30) | def get_neo4j_graph(db_name: str = "paper"): function example_multi_db (line 47) | def example_multi_db(db_name: str = "paper"): function example_shared_db (line 278) | def example_shared_db(db_name: str = "shared-traval-group"): function run_user_session (line 370) | def run_user_session( function example_complex_shared_db (line 523) | def example_complex_shared_db(db_name: str = "shared-traval-group-comple... function example_complex_shared_db_search_filter (line 557) | def example_complex_shared_db_search_filter(db): function example_complex_shared_db_delete_memory (line 597) | def example_complex_shared_db_delete_memory(db): FILE: examples/basic_modules/reranker.py function make_item (line 18) | def make_item(text: str) -> TextualMemoryItem: function show_ranked (line 43) | def show_ranked(title: str, ranked: list[tuple[TextualMemoryItem, float]... function main (line 50) | def main(): FILE: examples/core_memories/kv_cache_memory.py function get_cache_info (line 10) | def get_cache_info(cache): function serialize_item (line 45) | def serialize_item(obj): FILE: examples/core_memories/vllm_kv_cache_memory.py function main (line 11) | def main(): FILE: examples/extras/nli_e2e_example.py function run_server (line 16) | def run_server(): function main (line 22) | def main(): FILE: examples/mem_agent/deepsearch_example.py function build_minimal_components (line 39) | def build_minimal_components(): function factory_initialization (line 150) | def factory_initialization() -> tuple[DeepSearchMemAgent, dict[str, Any]]: function main (line 181) | def main(): FILE: examples/mem_chat/chat_w_generated_cube_explicit_memory_only.py function get_mem_chat_config (line 14) | def get_mem_chat_config() -> MemChatConfigFactory: function get_mem_cube_config (line 56) | def get_mem_cube_config() -> GeneralMemCubeConfig: function main (line 113) | def main(): FILE: examples/mem_feedback/example_feedback.py function init_components (line 10) | def init_components(): function main (line 153) | def main(): FILE: examples/mem_mcp/simple_fastmcp_client.py function main (line 9) | async def main(): FILE: examples/mem_mcp/simple_fastmcp_serve.py function add_memory (line 22) | def add_memory(memory_content: str, user_id: str, cube_id: str | None = ... function search_memories (line 38) | def search_memories(query: str, user_id: str, cube_ids: str | None = None): function chat (line 51) | def chat(query: str, user_id: str): FILE: examples/mem_reader/builders.py function build_llm_and_embedder (line 25) | def build_llm_and_embedder() -> tuple[Any, Any]: function build_file_parser (line 39) | def build_file_parser() -> Any: function build_simple_reader (line 58) | def build_simple_reader() -> SimpleStructMemReader: function build_multimodal_reader (line 70) | def build_multimodal_reader() -> MultiModalStructMemReader: FILE: examples/mem_reader/parser_demos/_base.py class BaseParserDemo (line 10) | class BaseParserDemo: method __init__ (line 13) | def __init__(self): method create_parser (line 19) | def create_parser(self): method run (line 23) | def run(self): method demo_source_creation (line 27) | def demo_source_creation( method demo_rebuild (line 48) | def demo_rebuild(self, source: SourceMessage | list[SourceMessage]): method demo_parse_fast (line 62) | def demo_parse_fast(self, message: Any, info: dict): FILE: examples/mem_reader/parser_demos/demo_assistant.py class AssistantParserDemo (line 9) | class AssistantParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 29) | def run(self): FILE: examples/mem_reader/parser_demos/demo_file_content.py class FileContentParserDemo (line 10) | class FileContentParserDemo(BaseParserDemo): method create_parser (line 11) | def create_parser(self): method run (line 21) | def run(self): FILE: examples/mem_reader/parser_demos/demo_image.py class ImageParserDemo (line 14) | class ImageParserDemo(BaseParserDemo): method create_parser (line 15) | def create_parser(self): method run (line 18) | def run(self): FILE: examples/mem_reader/parser_demos/demo_multi_modal.py class MultiModalParserDemo (line 9) | class MultiModalParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 14) | def run(self): method parser_selection (line 19) | def parser_selection(self): method parser_instances (line 305) | def parser_instances(self): FILE: examples/mem_reader/parser_demos/demo_string.py class StringParserDemo (line 9) | class StringParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 13) | def run(self): FILE: examples/mem_reader/parser_demos/demo_system.py class SystemParserDemo (line 9) | class SystemParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 13) | def run(self): FILE: examples/mem_reader/parser_demos/demo_text_content.py class TextContentParserDemo (line 9) | class TextContentParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 13) | def run(self): FILE: examples/mem_reader/parser_demos/demo_tool.py class ToolParserDemo (line 9) | class ToolParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 13) | def run(self): FILE: examples/mem_reader/parser_demos/demo_user.py class UserParserDemo (line 9) | class UserParserDemo(BaseParserDemo): method create_parser (line 10) | def create_parser(self): method run (line 13) | def run(self): FILE: examples/mem_reader/runners/run_multimodal.py function run_multimodal_reader (line 25) | def run_multimodal_reader(): FILE: examples/mem_reader/runners/run_simple.py function _print_memory_sets (line 12) | def _print_memory_sets(title: str, memories): function run_simple_reader (line 24) | def run_simple_reader(): FILE: examples/mem_reader/samples.py class TestCase (line 12) | class TestCase: method get_info (line 20) | def get_info(self) -> dict[str, Any]: FILE: examples/mem_reader/settings.py function get_llm_config (line 18) | def get_llm_config() -> dict[str, Any]: function get_embedder_config (line 59) | def get_embedder_config() -> dict[str, Any]: function get_chunker_config (line 88) | def get_chunker_config() -> dict[str, Any]: function get_reader_config (line 101) | def get_reader_config() -> dict[str, Any]: FILE: examples/mem_reader/utils.py function _truncate (line 11) | def _truncate(s: str, max_len: int | None) -> str: function sanitize_for_print (line 17) | def sanitize_for_print(obj: Any, *, max_str_len: int | None = 500) -> Any: function pretty_print_dict (line 34) | def pretty_print_dict(d: dict, *, max_str_len: int | None = 500): function print_memory_item (line 61) | def print_memory_item( FILE: examples/mem_scheduler/api_w_scheduler.py function run_with_scheduler_api (line 33) | def run_with_scheduler_api(): FILE: examples/mem_scheduler/memos_w_scheduler.py function init_task (line 44) | def init_task(): function custom_query_handler (line 93) | def custom_query_handler(messages: list[ScheduleMessageItem]): function custom_mem_update_handler (line 104) | def custom_mem_update_handler(messages: list[ScheduleMessageItem]): function run_with_scheduler (line 112) | async def run_with_scheduler(): FILE: examples/mem_scheduler/redis_example.py function service_run (line 33) | def service_run(): FILE: examples/mem_scheduler/run_async_tasks.py function my_test_handler (line 30) | def my_test_handler(messages: list[ScheduleMessageItem]): function submit_tasks (line 44) | def submit_tasks(): FILE: examples/mem_scheduler/show_redis_status.py function fetch_status (line 25) | def fetch_status( function print_diff (line 36) | def print_diff(prev: dict[str, dict[str, int]], curr: dict[str, dict[str... function main (line 60) | def main(interval_sec: float = 5.0, stream_key_prefix: str | None = None... FILE: examples/mem_scheduler/try_schedule_modules.py function init_task (line 24) | def init_task(): class ScheduleModulesRunner (line 99) | class ScheduleModulesRunner(DirectSearchMemoriesAnalyzer): method __init__ (line 100) | def __init__(self): method start_conversation (line 103) | def start_conversation(self, user_id="test_user", mem_cube_id="test_cu... method add_msgs (line 116) | def add_msgs( FILE: scripts/check_dependencies.py function extract_top_level_modules (line 12) | def extract_top_level_modules(tree: ast.Module) -> set[str]: function check_importable (line 27) | def check_importable(modules: set[str], filename: str) -> list[str]: function main (line 48) | def main(): FILE: src/memos/api/client.py class MemOSClient (line 31) | class MemOSClient: method __init__ (line 34) | def __init__( method _validate_required_params (line 62) | def _validate_required_params(self, **params): method get_message (line 68) | def get_message( method add_message (line 102) | def add_message( method search_memory (line 150) | def search_memory( method get_memory (line 197) | def get_memory( method create_knowledgebase (line 226) | def create_knowledgebase( method delete_knowledgebase (line 258) | def delete_knowledgebase( method add_knowledgebase_file_json (line 286) | def add_knowledgebase_file_json( method add_knowledgebase_file_form (line 315) | def add_knowledgebase_file_form( method delete_knowledgebase_file (line 364) | def delete_knowledgebase_file( method get_knowledgebase_file (line 392) | def get_knowledgebase_file( method get_task_status (line 420) | def get_task_status(self, task_id: str) -> MemOSGetTaskStatusResponse ... method add_feedback (line 446) | def add_feedback( method delete_memory (line 488) | def delete_memory( method chat (line 515) | def chat( FILE: src/memos/api/config.py function _update_env_from_dict (line 31) | def _update_env_from_dict(data: dict[str, Any]) -> None: function get_config_json (line 61) | def get_config_json(name: str, default: Any | None = None) -> Any: function get_config_value (line 73) | def get_config_value(path: str, default: Any | None = None) -> Any: class NacosConfigManager (line 96) | class NacosConfigManager: method _sign (line 108) | def _sign(cls, secret_key: str, data: str) -> str: method _parse_value (line 114) | def _parse_value(value: str) -> Any: method parse_properties (line 146) | def parse_properties(content: str) -> dict[str, Any]: method start_config_watch (line 173) | def start_config_watch(cls): method start_watch_if_enabled (line 179) | def start_watch_if_enabled(cls) -> None: method init (line 198) | def init(cls) -> None: class APIConfig (line 260) | class APIConfig: method get_openai_config (line 264) | def get_openai_config() -> dict[str, Any]: method qwen_config (line 278) | def qwen_config() -> dict[str, Any]: method vllm_config (line 288) | def vllm_config() -> dict[str, Any]: method get_activation_config (line 301) | def get_activation_config() -> dict[str, Any]: method get_memreader_config (line 323) | def get_memreader_config() -> dict[str, Any]: method get_memreader_general_llm_config (line 359) | def get_memreader_general_llm_config() -> dict[str, Any]: method get_image_parser_llm_config (line 397) | def get_image_parser_llm_config() -> dict[str, Any]: method get_preference_extractor_llm_config (line 429) | def get_preference_extractor_llm_config() -> dict[str, Any]: method get_activation_vllm_config (line 460) | def get_activation_vllm_config() -> dict[str, Any]: method get_preference_memory_config (line 474) | def get_preference_memory_config() -> dict[str, Any]: method get_reranker_config (line 493) | def get_reranker_config() -> dict[str, Any]: method get_feedback_reranker_config (line 519) | def get_feedback_reranker_config() -> dict[str, Any]: method get_embedder_config (line 547) | def get_embedder_config() -> dict[str, Any]: method get_reader_config (line 586) | def get_reader_config() -> dict[str, Any]: method get_oss_config (line 599) | def get_oss_config() -> dict[str, Any] | None: method get_internet_config (line 628) | def get_internet_config() -> dict[str, Any]: method get_nli_config (line 674) | def get_nli_config() -> dict[str, Any]: method get_neo4j_community_config (line 681) | def get_neo4j_community_config(user_id: str | None = None) -> dict[str... method get_neo4j_config (line 710) | def get_neo4j_config(user_id: str | None = None) -> dict[str, Any]: method get_noshared_neo4j_config (line 718) | def get_noshared_neo4j_config(user_id) -> dict[str, Any]: method get_neo4j_shared_config (line 731) | def get_neo4j_shared_config(user_id: str | None = None) -> dict[str, A... method get_nebular_config (line 745) | def get_nebular_config(user_id: str | None = None) -> dict[str, Any]: method get_milvus_config (line 759) | def get_milvus_config(): method get_polardb_config (line 773) | def get_polardb_config(user_id: str | None = None) -> dict[str, Any]: method get_postgres_config (line 810) | def get_postgres_config(user_id: str | None = None) -> dict[str, Any]: method get_mysql_config (line 834) | def get_mysql_config() -> dict[str, Any]: method get_scheduler_config (line 846) | def get_scheduler_config() -> dict[str, Any]: method is_scheduler_enabled (line 876) | def is_scheduler_enabled() -> bool: method is_default_cube_config_enabled (line 881) | def is_default_cube_config_enabled() -> bool: method is_dingding_bot_enabled (line 886) | def is_dingding_bot_enabled() -> bool: method get_dingding_bot_config (line 891) | def get_dingding_bot_config() -> dict[str, Any] | None: method get_product_default_config (line 914) | def get_product_default_config() -> dict[str, Any]: method get_start_default_config (line 997) | def get_start_default_config() -> dict[str, Any]: method create_user_config (line 1033) | def create_user_config(user_name: str, user_id: str) -> tuple["MOSConf... method get_default_cube_config (line 1177) | def get_default_cube_config() -> "GeneralMemCubeConfig | None": FILE: src/memos/api/context/dependencies.py function get_g_object (line 12) | def get_g_object() -> G: function get_current_g (line 25) | def get_current_g() -> G | None: function require_g (line 35) | def require_g() -> G: FILE: src/memos/api/exceptions.py class APIExceptionHandler (line 11) | class APIExceptionHandler: method validation_error_handler (line 15) | async def validation_error_handler(request: Request, exc: RequestValid... method value_error_handler (line 29) | async def value_error_handler(request: Request, exc: ValueError): method global_exception_handler (line 38) | async def global_exception_handler(request: Request, exc: Exception): method http_error_handler (line 47) | async def http_error_handler(request: Request, exc: HTTPException): FILE: src/memos/api/handlers/add_handler.py class AddHandler (line 21) | class AddHandler(BaseHandler): method __init__ (line 28) | def __init__(self, dependencies: HandlerDependencies): method handle_add_memories (line 40) | def handle_add_memories(self, add_req: APIADDRequest) -> MemoryResponse: method _resolve_cube_ids (line 116) | def _resolve_cube_ids(self, add_req: APIADDRequest) -> list[str]: method _build_cube_view (line 128) | def _build_cube_view(self, add_req: APIADDRequest) -> MemCubeView: FILE: src/memos/api/handlers/base_handler.py class HandlerDependencies (line 18) | class HandlerDependencies: method __init__ (line 26) | def __init__( method from_init_server (line 79) | def from_init_server(cls, components: dict[str, Any]): class BaseHandler (line 98) | class BaseHandler: method __init__ (line 106) | def __init__(self, dependencies: HandlerDependencies): method llm (line 117) | def llm(self): method naive_mem_cube (line 122) | def naive_mem_cube(self): method mem_reader (line 127) | def mem_reader(self): method mem_scheduler (line 132) | def mem_scheduler(self) -> OptimizedScheduler: method searcher (line 137) | def searcher(self) -> AdvancedSearcher: method embedder (line 142) | def embedder(self): method reranker (line 147) | def reranker(self): method graph_db (line 152) | def graph_db(self): method vector_db (line 157) | def vector_db(self): method mos_server (line 162) | def mos_server(self): method deepsearch_agent (line 167) | def deepsearch_agent(self): method feedback_server (line 172) | def feedback_server(self): method _validate_dependencies (line 176) | def _validate_dependencies(self, *required_deps: str) -> None: FILE: src/memos/api/handlers/chat_handler.py class ChatHandler (line 51) | class ChatHandler(BaseHandler): method __init__ (line 59) | def __init__( method handle_chat_complete (line 102) | def handle_chat_complete(self, chat_req: APIChatCompleteRequest) -> di... method handle_chat_stream (line 237) | def handle_chat_stream(self, chat_req: ChatRequest) -> StreamingResponse: method handle_chat_stream_playground (line 422) | def handle_chat_stream_playground(self, chat_req: ChatPlaygroundReques... method handle_chat_stream_for_business_user (line 774) | def handle_chat_stream_for_business_user( method _dedup_and_supplement_memories (line 966) | def _dedup_and_supplement_memories( method _get_internet_reference (line 989) | def _get_internet_reference( method _build_pref_md_string_for_playground (line 1006) | def _build_pref_md_string_for_playground(self, pref_mem_list: list[any... method _build_system_prompt (line 1041) | def _build_system_prompt( method _build_enhance_system_prompt (line 1072) | def _build_enhance_system_prompt( method _format_mem_block (line 1110) | def _format_mem_block( method _filter_memories_by_threshold (line 1159) | def _filter_memories_by_threshold( method _get_further_suggestion (line 1214) | def _get_further_suggestion( method _extract_references_from_response (line 1233) | def _extract_references_from_response(self, response: str) -> tuple[st... method _extract_struct_data_from_history (line 1257) | def _extract_struct_data_from_history(self, chat_data: list[dict]) -> ... method _send_message_to_scheduler (line 1290) | def _send_message_to_scheduler( method _add_conversation_to_memory (line 1319) | async def _add_conversation_to_memory( method _post_chat_processing (line 1357) | async def _post_chat_processing( method _start_post_chat_processing (line 1457) | def _start_post_chat_processing( method _start_add_to_memory (line 1552) | def _start_add_to_memory( FILE: src/memos/api/handlers/component_init.py function _get_default_memory_size (line 57) | def _get_default_memory_size(cube_config: Any) -> dict[str, int]: function _init_chat_llms (line 77) | def _init_chat_llms(chat_llm_configs: list[dict]) -> dict[str, Any]: function init_server (line 109) | def init_server() -> dict[str, Any]: FILE: src/memos/api/handlers/config_builders.py function build_graph_db_config (line 29) | def build_graph_db_config(user_id: str = "default") -> dict[str, Any]: function build_vec_db_config (line 57) | def build_vec_db_config() -> dict[str, Any]: function build_llm_config (line 72) | def build_llm_config() -> dict[str, Any]: function build_chat_llm_config (line 87) | def build_chat_llm_config() -> list[dict[str, Any]]: function build_embedder_config (line 114) | def build_embedder_config() -> dict[str, Any]: function build_mem_reader_config (line 124) | def build_mem_reader_config() -> dict[str, Any]: function build_reranker_config (line 136) | def build_reranker_config() -> dict[str, Any]: function build_feedback_reranker_config (line 146) | def build_feedback_reranker_config() -> dict[str, Any]: function build_internet_retriever_config (line 156) | def build_internet_retriever_config() -> dict[str, Any]: function build_pref_extractor_config (line 166) | def build_pref_extractor_config() -> dict[str, Any]: function build_pref_adder_config (line 176) | def build_pref_adder_config() -> dict[str, Any]: function build_pref_retriever_config (line 186) | def build_pref_retriever_config() -> dict[str, Any]: function build_nli_client_config (line 196) | def build_nli_client_config() -> dict[str, Any]: function build_general_llm_config (line 206) | def build_general_llm_config() -> dict[str, Any]: function build_image_parser_llm_config (line 219) | def build_image_parser_llm_config() -> dict[str, Any]: FILE: src/memos/api/handlers/feedback_handler.py class FeedbackHandler (line 16) | class FeedbackHandler(BaseHandler): method __init__ (line 23) | def __init__(self, dependencies: HandlerDependencies): method handle_feedback_memories (line 33) | def handle_feedback_memories(self, feedback_req: APIFeedbackRequest) -... method _resolve_cube_ids (line 54) | def _resolve_cube_ids(self, feedback_req: APIFeedbackRequest) -> list[... method _build_cube_view (line 63) | def _build_cube_view(self, feedback_req: APIFeedbackRequest) -> MemCub... FILE: src/memos/api/handlers/formatters_handler.py function to_iter (line 17) | def to_iter(running: Any) -> list[Any]: function format_memory_item (line 36) | def format_memory_item( function post_process_textual_mem (line 68) | def post_process_textual_mem( function separate_knowledge_and_conversation_mem (line 134) | def separate_knowledge_and_conversation_mem(memories: list[dict[str, Any... function rerank_knowledge_mem (line 160) | def rerank_knowledge_mem( FILE: src/memos/api/handlers/memory_handler.py function handle_get_all_memories (line 31) | def handle_get_all_memories( function handle_get_subgraph (line 98) | def handle_get_subgraph( function handle_get_memory (line 163) | def handle_get_memory(memory_id: str, naive_mem_cube: NaiveMemCube) -> G... function handle_get_memory_by_ids (line 194) | def handle_get_memory_by_ids( function handle_get_memories (line 218) | def handle_get_memories( function handle_delete_memories (line 317) | def handle_delete_memories(delete_mem_req: DeleteMemoryRequest, naive_me... function handle_get_memories_dashboard (line 403) | def handle_get_memories_dashboard( FILE: src/memos/api/handlers/scheduler_handler.py function handle_scheduler_allstatus (line 38) | def handle_scheduler_allstatus( function handle_scheduler_status (line 190) | def handle_scheduler_status( function handle_task_queue_status (line 249) | def handle_task_queue_status( function handle_scheduler_wait (line 343) | def handle_scheduler_wait( function handle_scheduler_wait_stream (line 416) | def handle_scheduler_wait_stream( FILE: src/memos/api/handlers/search_handler.py class SearchHandler (line 28) | class SearchHandler(BaseHandler): method __init__ (line 35) | def __init__(self, dependencies: HandlerDependencies): method handle_search_memories (line 47) | def handle_search_memories(self, search_req: APISearchRequest) -> Sear... method _apply_relativity_threshold (line 104) | def _apply_relativity_threshold(results: dict[str, Any], relativity: f... method _dedup_text_memories (line 137) | def _dedup_text_memories(self, results: dict[str, Any], target_top_k: ... method _mmr_dedup_text_memories (line 181) | def _mmr_dedup_text_memories( method _is_unrelated (line 412) | def _is_unrelated( method _max_similarity (line 421) | def _max_similarity( method _extract_embeddings (line 428) | def _extract_embeddings(self, memories: list[dict[str, Any]]) -> list[... method _strip_embeddings (line 457) | def _strip_embeddings(results: dict[str, Any]) -> None: method _dice_similarity (line 467) | def _dice_similarity(text1: str, text2: str) -> float: method _bigram_similarity (line 491) | def _bigram_similarity(text1: str, text2: str) -> float: method _tfidf_similarity (line 518) | def _tfidf_similarity(text1: str, text2: str) -> float: method _is_text_highly_similar_optimized (line 564) | def _is_text_highly_similar_optimized( method _dice_similarity (line 629) | def _dice_similarity(text1: str, text2: str) -> float: method _bigram_similarity (line 653) | def _bigram_similarity(text1: str, text2: str) -> float: method _tfidf_similarity (line 680) | def _tfidf_similarity(text1: str, text2: str) -> float: method _is_text_highly_similar_optimized (line 726) | def _is_text_highly_similar_optimized( method _resolve_cube_ids (line 790) | def _resolve_cube_ids(self, search_req: APISearchRequest) -> list[str]: method _build_cube_view (line 802) | def _build_cube_view(self, search_req: APISearchRequest, searcher=None... FILE: src/memos/api/handlers/suggestion_handler.py function _get_further_suggestion (line 26) | def _get_further_suggestion( function handle_get_suggestion_queries (line 62) | def handle_get_suggestion_queries( FILE: src/memos/api/mcp_serve.py function load_default_config (line 18) | def load_default_config(user_id="default_user"): class MOSMCPServer (line 125) | class MOSMCPServer: method __init__ (line 128) | def __init__(self, mos_instance: MOS | None = None): method _setup_tools (line 139) | def _setup_tools(self): function _run_mcp (line 563) | def _run_mcp(self, transport: str = "stdio", **kwargs): FILE: src/memos/api/middleware/auth.py function _get_auth_pool (line 34) | def _get_auth_pool(): function hash_api_key (line 60) | def hash_api_key(key: str) -> str: function validate_key_format (line 65) | def validate_key_format(key: str) -> bool: function get_key_prefix (line 79) | def get_key_prefix(key: str) -> str: function lookup_api_key (line 84) | async def lookup_api_key(key_hash: str) -> dict[str, Any] | None: function is_internal_request (line 144) | def is_internal_request(request: Request) -> bool: function verify_api_key (line 157) | async def verify_api_key( function require_scope (line 240) | def require_scope(required_scope: str): FILE: src/memos/api/middleware/rate_limit.py function _get_redis (line 36) | def _get_redis(): function _get_client_key (line 54) | def _get_client_key(request: Request) -> str: function _check_rate_limit_redis (line 77) | def _check_rate_limit_redis(key: str) -> tuple[bool, int, int]: function _check_rate_limit_memory (line 122) | def _check_rate_limit_memory(key: str) -> tuple[bool, int, int]: class RateLimitMiddleware (line 153) | class RateLimitMiddleware(BaseHTTPMiddleware): method dispatch (line 168) | async def dispatch(self, request: Request, call_next: Callable) -> Res... FILE: src/memos/api/middleware/request_context.py function extract_trace_id_from_headers (line 21) | def extract_trace_id_from_headers(request: Request) -> str | None: class RequestContextMiddleware (line 29) | class RequestContextMiddleware(BaseHTTPMiddleware): method __init__ (line 39) | def __init__(self, app, source: str | None = None): method dispatch (line 50) | async def dispatch(self, request: Request, call_next: Callable) -> Res... FILE: src/memos/api/product_models.py class BaseRequest (line 16) | class BaseRequest(BaseModel): class BaseResponse (line 20) | class BaseResponse(BaseModel, Generic[T]): class UserRegisterRequest (line 29) | class UserRegisterRequest(BaseRequest): class GetMemoryPlaygroundRequest (line 40) | class GetMemoryPlaygroundRequest(BaseRequest): class Message (line 53) | class Message(BaseModel): class MemoryCreate (line 58) | class MemoryCreate(BaseRequest): class MemCubeRegister (line 66) | class MemCubeRegister(BaseRequest): class ChatRequest (line 71) | class ChatRequest(BaseRequest): method _convert_deprecated_fields (line 144) | def _convert_deprecated_fields(self): class ChatPlaygroundRequest (line 174) | class ChatPlaygroundRequest(ChatRequest): class ChatBusinessRequest (line 182) | class ChatBusinessRequest(ChatRequest): class ChatCompleteRequest (line 189) | class ChatCompleteRequest(BaseRequest): class UserCreate (line 216) | class UserCreate(BaseRequest): class CubeShare (line 222) | class CubeShare(BaseRequest): class SimpleResponse (line 227) | class SimpleResponse(BaseResponse[None]): class UserRegisterResponse (line 231) | class UserRegisterResponse(BaseResponse[dict]): class MemoryResponse (line 235) | class MemoryResponse(BaseResponse[list]): class SuggestionResponse (line 239) | class SuggestionResponse(BaseResponse[list]): class AddStatusResponse (line 245) | class AddStatusResponse(BaseResponse[dict]): class ConfigResponse (line 249) | class ConfigResponse(BaseResponse[None]): class SearchResponse (line 253) | class SearchResponse(BaseResponse[dict]): class ChatResponse (line 257) | class ChatResponse(BaseResponse[str]): class GetMemoryResponse (line 261) | class GetMemoryResponse(BaseResponse[dict]): class DeleteMemoryResponse (line 265) | class DeleteMemoryResponse(BaseResponse[dict]): class UserResponse (line 269) | class UserResponse(BaseResponse[dict]): class UserListResponse (line 273) | class UserListResponse(BaseResponse[list]): class MemoryCreateRequest (line 277) | class MemoryCreateRequest(BaseRequest): class SearchRequest (line 291) | class SearchRequest(BaseRequest): class APISearchRequest (line 301) | class APISearchRequest(BaseRequest): method _convert_deprecated_fields (line 483) | def _convert_deprecated_fields(self) -> "APISearchRequest": class APIADDRequest (line 518) | class APIADDRequest(BaseRequest): method _convert_deprecated_fields (line 638) | def _convert_deprecated_fields(self) -> "APIADDRequest": class APIFeedbackRequest (line 718) | class APIFeedbackRequest(BaseRequest): class APIChatCompleteRequest (line 762) | class APIChatCompleteRequest(BaseRequest): class AddStatusRequest (line 822) | class AddStatusRequest(BaseRequest): class GetMemoryRequest (line 830) | class GetMemoryRequest(BaseRequest): class GetMemoryDashboardRequest (line 848) | class GetMemoryDashboardRequest(GetMemoryRequest): class DeleteMemoryRequest (line 854) | class DeleteMemoryRequest(BaseRequest): class SuggestionRequest (line 870) | class SuggestionRequest(BaseRequest): class MessageDetail (line 882) | class MessageDetail(BaseModel): class MemoryDetail (line 888) | class MemoryDetail(BaseModel): class FileDetail (line 894) | class FileDetail(BaseModel): class GetMessagesData (line 900) | class GetMessagesData(BaseModel): class GetCreateKnowledgebaseData (line 908) | class GetCreateKnowledgebaseData(BaseModel): class SearchMemoryData (line 914) | class SearchMemoryData(BaseModel): class GetKnowledgebaseFileData (line 938) | class GetKnowledgebaseFileData(BaseModel): class GetMemoryData (line 946) | class GetMemoryData(BaseModel): class AddMessageData (line 957) | class AddMessageData(BaseModel): class DeleteMessageData (line 965) | class DeleteMessageData(BaseModel): class ChatMessageData (line 971) | class ChatMessageData(BaseModel): class GetTaskStatusMessageData (line 977) | class GetTaskStatusMessageData(BaseModel): class MemOSGetMessagesResponse (line 986) | class MemOSGetMessagesResponse(BaseModel): method messages (line 994) | def messages(self) -> list[MessageDetail]: class MemOSSearchResponse (line 999) | class MemOSSearchResponse(BaseModel): method memories (line 1007) | def memories(self) -> list[MemoryDetail]: method preferences (line 1012) | def preferences(self) -> list[MemoryDetail]: method tool_memories (line 1017) | def tool_memories(self) -> list[MemoryDetail]: class MemOSDeleteKnowledgebaseResponse (line 1022) | class MemOSDeleteKnowledgebaseResponse(BaseModel): method success (line 1030) | def success(self) -> bool: class MemOSDeleteMemoryResponse (line 1035) | class MemOSDeleteMemoryResponse(BaseModel): method success (line 1043) | def success(self) -> bool: class MemOSChatResponse (line 1048) | class MemOSChatResponse(BaseModel): method response (line 1056) | def response(self) -> str: class MemOSGetTaskStatusResponse (line 1061) | class MemOSGetTaskStatusResponse(BaseModel): method messages (line 1069) | def messages(self) -> list[GetTaskStatusMessageData]: class MemOSCreateKnowledgebaseResponse (line 1074) | class MemOSCreateKnowledgebaseResponse(BaseModel): method knowledgebase_id (line 1082) | def knowledgebase_id(self) -> str: class MemOSAddKnowledgebaseFileResponse (line 1087) | class MemOSAddKnowledgebaseFileResponse(BaseModel): method memories (line 1095) | def memories(self) -> list[dict[str, Any]]: class MemOSGetMemoryResponse (line 1100) | class MemOSGetMemoryResponse(BaseModel): method memories (line 1108) | def memories(self) -> list[MemoryDetail]: method preferences (line 1113) | def preferences(self) -> list[MessageDetail] | None: class MemOSGetKnowledgebaseFileResponse (line 1118) | class MemOSGetKnowledgebaseFileResponse(BaseModel): method files (line 1126) | def files(self) -> list[FileDetail]: class MemOSAddResponse (line 1131) | class MemOSAddResponse(BaseModel): method success (line 1139) | def success(self) -> bool: method task_id (line 1144) | def task_id(self) -> str: method status (line 1149) | def status(self) -> str: class MemOSAddFeedBackResponse (line 1154) | class MemOSAddFeedBackResponse(BaseModel): method success (line 1162) | def success(self) -> bool: method task_id (line 1167) | def task_id(self) -> str: method status (line 1172) | def status(self) -> str: class StatusRequest (line 1180) | class StatusRequest(BaseRequest): class StatusResponseItem (line 1187) | class StatusResponseItem(BaseModel): class StatusResponse (line 1196) | class StatusResponse(BaseResponse[list[StatusResponseItem]]): class TaskQueueData (line 1202) | class TaskQueueData(BaseModel): class TaskQueueResponse (line 1224) | class TaskQueueResponse(BaseResponse[TaskQueueData]): class TaskSummary (line 1230) | class TaskSummary(BaseModel): class AllStatusResponseData (line 1244) | class AllStatusResponseData(BaseModel): class AllStatusResponse (line 1255) | class AllStatusResponse(BaseResponse[AllStatusResponseData]): class GetUserNamesByMemoryIdsRequest (line 1264) | class GetUserNamesByMemoryIdsRequest(BaseRequest): class GetUserNamesByMemoryIdsResponse (line 1270) | class GetUserNamesByMemoryIdsResponse(BaseResponse[dict[str, str | None]]): class ExistMemCubeIdRequest (line 1274) | class ExistMemCubeIdRequest(BaseRequest): class ExistMemCubeIdResponse (line 1280) | class ExistMemCubeIdResponse(BaseResponse[dict[str, bool]]): class DeleteMemoryByRecordIdRequest (line 1284) | class DeleteMemoryByRecordIdRequest(BaseRequest): class DeleteMemoryByRecordIdResponse (line 1292) | class DeleteMemoryByRecordIdResponse(BaseResponse[dict]): class RecoverMemoryByRecordIdRequest (line 1296) | class RecoverMemoryByRecordIdRequest(BaseRequest): class RecoverMemoryByRecordIdResponse (line 1303) | class RecoverMemoryByRecordIdResponse(BaseResponse[dict]): FILE: src/memos/api/routers/admin_router.py class CreateKeyRequest (line 31) | class CreateKeyRequest(BaseModel): class CreateKeyResponse (line 38) | class CreateKeyResponse(BaseModel): class KeyListResponse (line 46) | class KeyListResponse(BaseModel): class RevokeKeyRequest (line 51) | class RevokeKeyRequest(BaseModel): class SimpleResponse (line 55) | class SimpleResponse(BaseModel): function _get_db_connection (line 60) | def _get_db_connection(): function create_key (line 79) | def create_key( function list_keys (line 126) | def list_keys( function revoke_key (line 156) | def revoke_key( function generate_new_master_key (line 189) | def generate_new_master_key( function admin_health (line 219) | def admin_health(): FILE: src/memos/api/routers/product_router.py function get_mos_product_instance (line 38) | def get_mos_product_instance(): function set_config (line 71) | def set_config(config): function register_user (line 79) | def register_user(user_req: UserRegisterRequest): function get_suggestion_queries (line 122) | def get_suggestion_queries(user_id: str): function get_suggestion_queries_post (line 142) | def get_suggestion_queries_post(suggestion_req: SuggestionRequest): function get_all_memories (line 162) | def get_all_memories(memory_req: GetMemoryPlaygroundRequest): function create_memory (line 189) | def create_memory(memory_req: MemoryCreateRequest): function search_memories (line 264) | def search_memories(search_req: SearchRequest): function chat (line 289) | def chat(chat_req: ChatRequest): function chat_complete (line 334) | def chat_complete(chat_req: ChatCompleteRequest): function list_users (line 368) | def list_users(): function get_user_info (line 380) | async def get_user_info(user_id: str): function get_config (line 396) | def get_config(user_id: str): function get_user_config (line 406) | def get_user_config(user_id: str): function update_user_config (line 430) | def update_user_config(user_id: str, config_data: dict): function get_instance_status (line 455) | def get_instance_status(): function get_active_user_count (line 469) | def get_active_user_count(): FILE: src/memos/api/routers/server_router.py function search_memories (line 105) | def search_memories(search_req: APISearchRequest): function add_memories (line 121) | def add_memories(add_req: APIADDRequest): function scheduler_allstatus (line 140) | def scheduler_allstatus(): function scheduler_status (line 150) | def scheduler_status( function scheduler_task_queue_status (line 167) | def scheduler_task_queue_status( function scheduler_wait (line 177) | def scheduler_wait( function scheduler_wait_stream (line 192) | def scheduler_wait_stream( function chat_complete (line 213) | def chat_complete(chat_req: APIChatCompleteRequest): function chat_stream (line 227) | def chat_stream(chat_req: ChatRequest): function chat_stream_playground (line 242) | def chat_stream_playground(chat_req: ChatPlaygroundRequest): function get_suggestion_queries (line 266) | def get_suggestion_queries(suggestion_req: SuggestionRequest): function get_all_memories (line 283) | def get_all_memories(memory_req: GetMemoryPlaygroundRequest): function get_memories (line 313) | def get_memories(memory_req: GetMemoryRequest): function get_memory_by_id (line 321) | def get_memory_by_id(memory_id: str): function get_memory_by_ids (line 329) | def get_memory_by_ids(memory_ids: list[str]): function delete_memories (line 339) | def delete_memories(memory_req: DeleteMemoryRequest): function feedback_memories (line 351) | def feedback_memories(feedback_req: APIFeedbackRequest): function get_user_names_by_memory_ids (line 370) | def get_user_names_by_memory_ids(request: GetUserNamesByMemoryIdsRequest): function exist_mem_cube_id (line 386) | def exist_mem_cube_id(request: ExistMemCubeIdRequest): function chat_stream_business_user (line 396) | def chat_stream_business_user(chat_req: ChatBusinessRequest): function delete_memory_by_record_id (line 411) | def delete_memory_by_record_id(memory_req: DeleteMemoryByRecordIdRequest): function recover_memory_by_record_id (line 431) | def recover_memory_by_record_id(memory_req: RecoverMemoryByRecordIdReque... function get_memories_dashboard (line 448) | def get_memories_dashboard(memory_req: GetMemoryDashboardRequest): FILE: src/memos/api/server_api_ext.py class SecurityHeadersMiddleware (line 48) | class SecurityHeadersMiddleware(BaseHTTPMiddleware): method dispatch (line 51) | async def dispatch(self, request: Request, call_next) -> Response: function health_check (line 111) | async def health_check(): FILE: src/memos/api/start_api.py function get_mos_instance (line 49) | def get_mos_instance(): class BaseRequest (line 85) | class BaseRequest(BaseModel): class BaseResponse (line 93) | class BaseResponse(BaseModel, Generic[T]): class Message (line 103) | class Message(BaseModel): class MemoryCreate (line 116) | class MemoryCreate(BaseRequest): class SearchRequest (line 137) | class SearchRequest(BaseRequest): class MemCubeRegister (line 150) | class MemCubeRegister(BaseRequest): class ChatRequest (line 161) | class ChatRequest(BaseRequest): class UserCreate (line 169) | class UserCreate(BaseRequest): class CubeShare (line 177) | class CubeShare(BaseRequest): class SimpleResponse (line 183) | class SimpleResponse(BaseResponse[None]): class ConfigResponse (line 187) | class ConfigResponse(BaseResponse[None]): class MemoryResponse (line 191) | class MemoryResponse(BaseResponse[dict]): class SearchResponse (line 195) | class SearchResponse(BaseResponse[dict]): class ChatResponse (line 199) | class ChatResponse(BaseResponse[str]): class UserResponse (line 203) | class UserResponse(BaseResponse[dict]): class UserListResponse (line 207) | class UserListResponse(BaseResponse[list]): function set_config (line 212) | async def set_config(config: MOSConfig): function create_user (line 232) | async def create_user(user_create: UserCreate): function list_users (line 243) | async def list_users(): function get_user_info (line 251) | async def get_user_info(): function register_mem_cube (line 259) | async def register_mem_cube(mem_cube: MemCubeRegister): function unregister_mem_cube (line 273) | async def unregister_mem_cube(mem_cube_id: str, user_id: str | None = No... function share_cube (line 285) | async def share_cube(cube_id: str, share_request: CubeShare): function add_memory (line 296) | async def add_memory(memory_create: MemoryCreate): function get_all_memories (line 324) | async def get_all_memories( function get_memory (line 337) | async def get_memory(mem_cube_id: str, memory_id: str, user_id: str | No... function search_memories (line 345) | async def search_memories(search_req: SearchRequest): function update_memory (line 359) | async def update_memory( function delete_memory (line 376) | async def delete_memory(mem_cube_id: str, memory_id: str, user_id: str |... function delete_all_memories (line 384) | async def delete_all_memories(mem_cube_id: str, user_id: str | None = No... function chat (line 392) | async def chat(chat_req: ChatRequest): function home (line 402) | async def home(): function value_error_handler (line 408) | async def value_error_handler(request: Request, exc: ValueError): function global_exception_handler (line 417) | async def global_exception_handler(request: Request, exc: Exception): FILE: src/memos/api/utils/api_keys.py class APIKey (line 15) | class APIKey: function generate_api_key (line 23) | def generate_api_key() -> APIKey: function hash_key (line 43) | def hash_key(key: str) -> str: function validate_key_format (line 48) | def validate_key_format(key: str) -> bool: function generate_master_key (line 71) | def generate_master_key() -> tuple[str, str]: function create_api_key_in_db (line 84) | def create_api_key_in_db( function revoke_api_key (line 134) | def revoke_api_key(conn, key_id: str) -> bool: function list_api_keys (line 150) | def list_api_keys(conn, user_name: str | None = None) -> list[dict]: FILE: src/memos/chunkers/base.py class Chunk (line 8) | class Chunk: method __init__ (line 11) | def __init__(self, text: str, token_count: int, sentences: list[str]): class BaseChunker (line 17) | class BaseChunker(ABC): method __init__ (line 21) | def __init__(self, config: BaseChunkerConfig): method chunk (line 25) | def chunk(self, text: str) -> list[Chunk]: method protect_urls (line 28) | def protect_urls(self, text: str) -> tuple[str, dict[str, str]]: method restore_urls (line 50) | def restore_urls(self, text: str, url_map: dict[str, str]) -> str: FILE: src/memos/chunkers/charactertext_chunker.py class CharacterTextChunker (line 11) | class CharacterTextChunker(BaseChunker): method __init__ (line 19) | def __init__( method chunk (line 37) | def chunk(self, text: str, **kwargs) -> list[str] | list[Chunk]: FILE: src/memos/chunkers/factory.py class ChunkerFactory (line 10) | class ChunkerFactory: method from_config (line 19) | def from_config(cls, config_factory: ChunkerConfigFactory) -> BaseChun... FILE: src/memos/chunkers/markdown_chunker.py class MarkdownChunker (line 13) | class MarkdownChunker(BaseChunker): method __init__ (line 21) | def __init__( method chunk (line 51) | def chunk(self, text: str, **kwargs) -> list[str] | list[Chunk]: method _detect_malformed_headers (line 78) | def _detect_malformed_headers(self, text: str) -> bool: method _fix_header_hierarchy (line 116) | def _fix_header_hierarchy(self, text: str) -> str: FILE: src/memos/chunkers/sentence_chunker.py class SentenceChunker (line 11) | class SentenceChunker(BaseChunker): method __init__ (line 19) | def __init__(self, config: SentenceChunkerConfig): method chunk (line 44) | def chunk(self, text: str) -> list[str] | list[Chunk]: FILE: src/memos/chunkers/simple_chunker.py class SimpleTextSplitter (line 1) | class SimpleTextSplitter: method __init__ (line 4) | def __init__(self, chunk_size: int, chunk_overlap: int): method chunk (line 8) | def chunk(self, text: str, **kwargs) -> list[str]: method _simple_split_text (line 11) | def _simple_split_text(self, text: str, chunk_size: int, chunk_overlap... FILE: src/memos/cli.py function export_openapi (line 14) | def export_openapi(output: str) -> bool: function download_examples (line 30) | def download_examples(dest: str) -> bool: function main (line 70) | def main(): FILE: src/memos/configs/base.py class BaseConfig (line 15) | class BaseConfig(BaseModel): method set_default_schema (line 31) | def set_default_schema(self) -> "BaseConfig": method from_json_file (line 44) | def from_json_file(cls, json_path: str) -> Any: method to_json_file (line 50) | def to_json_file(self, json_path: str) -> None: method from_yaml_file (line 59) | def from_yaml_file(cls, yaml_path: str) -> Any: method to_yaml_file (line 65) | def to_yaml_file(self, yaml_path: str) -> None: method get (line 81) | def get(self, key, default=None): FILE: src/memos/configs/chunker.py class BaseChunkerConfig (line 8) | class BaseChunkerConfig(BaseConfig): class SentenceChunkerConfig (line 20) | class SentenceChunkerConfig(BaseChunkerConfig): class MarkdownChunkerConfig (line 24) | class MarkdownChunkerConfig(BaseChunkerConfig): class ChunkerConfigFactory (line 37) | class ChunkerConfigFactory(BaseConfig): method validate_backend (line 50) | def validate_backend(cls, backend: str) -> str: method create_config (line 57) | def create_config(self) -> "ChunkerConfigFactory": FILE: src/memos/configs/embedder.py class BaseEmbedderConfig (line 8) | class BaseEmbedderConfig(BaseConfig): class OllamaEmbedderConfig (line 25) | class OllamaEmbedderConfig(BaseEmbedderConfig): class ArkEmbedderConfig (line 29) | class ArkEmbedderConfig(BaseEmbedderConfig): class SenTranEmbedderConfig (line 41) | class SenTranEmbedderConfig(BaseEmbedderConfig): class UniversalAPIEmbedderConfig (line 50) | class UniversalAPIEmbedderConfig(BaseEmbedderConfig): class EmbedderConfigFactory (line 80) | class EmbedderConfigFactory(BaseConfig): method validate_backend (line 95) | def validate_backend(cls, backend: str) -> str: method create_config (line 102) | def create_config(self) -> "EmbedderConfigFactory": FILE: src/memos/configs/graph_db.py class BaseGraphDBConfig (line 9) | class BaseGraphDBConfig(BaseConfig): class Neo4jGraphDBConfig (line 17) | class Neo4jGraphDBConfig(BaseGraphDBConfig): method validate_config (line 74) | def validate_config(self): class Neo4jCommunityGraphDBConfig (line 83) | class Neo4jCommunityGraphDBConfig(Neo4jGraphDBConfig): method validate_community (line 98) | def validate_community(self): class NebulaGraphDBConfig (line 106) | class NebulaGraphDBConfig(BaseGraphDBConfig): method validate_config (line 150) | def validate_config(self): class PolarDBGraphDBConfig (line 157) | class PolarDBGraphDBConfig(BaseConfig): method validate_config (line 234) | def validate_config(self): class PostgresGraphDBConfig (line 241) | class PostgresGraphDBConfig(BaseConfig): method validate_config (line 286) | def validate_config(self): class GraphDBConfigFactory (line 295) | class GraphDBConfigFactory(BaseModel): method validate_backend (line 309) | def validate_backend(cls, backend: str) -> str: method instantiate_config (line 315) | def instantiate_config(self): FILE: src/memos/configs/internet_retriever.py class BaseInternetRetrieverConfig (line 12) | class BaseInternetRetrieverConfig(BaseConfig): class GoogleCustomSearchConfig (line 21) | class GoogleCustomSearchConfig(BaseInternetRetrieverConfig): class BingSearchConfig (line 31) | class BingSearchConfig(BaseInternetRetrieverConfig): class XinyuSearchConfig (line 41) | class XinyuSearchConfig(BaseInternetRetrieverConfig): class BochaSearchConfig (line 58) | class BochaSearchConfig(BaseInternetRetrieverConfig): class InternetRetrieverConfigFactory (line 70) | class InternetRetrieverConfigFactory(BaseConfig): method validate_backend (line 89) | def validate_backend(cls, backend: str | None) -> str | None: method create_config (line 96) | def create_config(self) -> "InternetRetrieverConfigFactory": FILE: src/memos/configs/llm.py class BaseLLMConfig (line 8) | class BaseLLMConfig(BaseConfig): class OpenAILLMConfig (line 25) | class OpenAILLMConfig(BaseLLMConfig): class OpenAIResponsesLLMConfig (line 49) | class OpenAIResponsesLLMConfig(BaseLLMConfig): class QwenLLMConfig (line 61) | class QwenLLMConfig(OpenAILLMConfig): class DeepSeekLLMConfig (line 68) | class DeepSeekLLMConfig(OpenAILLMConfig): class AzureLLMConfig (line 75) | class AzureLLMConfig(BaseLLMConfig): class AzureResponsesLLMConfig (line 87) | class AzureResponsesLLMConfig(BaseLLMConfig): class OllamaLLMConfig (line 99) | class OllamaLLMConfig(BaseLLMConfig): class HFLLMConfig (line 110) | class HFLLMConfig(BaseLLMConfig): class VLLMLLMConfig (line 121) | class VLLMLLMConfig(BaseLLMConfig): class LLMConfigFactory (line 134) | class LLMConfigFactory(BaseConfig): method validate_backend (line 154) | def validate_backend(cls, backend: str) -> str: method create_config (line 161) | def create_config(self) -> "LLMConfigFactory": FILE: src/memos/configs/mem_agent.py class BaseAgentConfig (line 8) | class BaseAgentConfig(BaseConfig): class SimpleAgentConfig (line 15) | class SimpleAgentConfig(BaseAgentConfig): class DeepSearchAgentConfig (line 24) | class DeepSearchAgentConfig(BaseAgentConfig): class MemAgentConfigFactory (line 31) | class MemAgentConfigFactory(BaseConfig): method validate_backend (line 44) | def validate_backend(cls, backend: str) -> str: method create_config (line 51) | def create_config(self) -> "MemAgentConfigFactory": FILE: src/memos/configs/mem_chat.py class BaseMemChatConfig (line 12) | class BaseMemChatConfig(BaseConfig): class SimpleMemChatConfig (line 29) | class SimpleMemChatConfig(BaseMemChatConfig): class MemChatConfigFactory (line 59) | class MemChatConfigFactory(BaseConfig): method validate_backend (line 71) | def validate_backend(cls, backend: str) -> str: method create_config (line 78) | def create_config(self) -> "MemChatConfigFactory": FILE: src/memos/configs/mem_cube.py class BaseMemCubeConfig (line 16) | class BaseMemCubeConfig(BaseConfig): class GeneralMemCubeConfig (line 31) | class GeneralMemCubeConfig(BaseMemCubeConfig): method validate_text_mem (line 65) | def validate_text_mem(cls, text_mem: MemoryConfigFactory) -> MemoryCon... method validate_act_mem (line 76) | def validate_act_mem(cls, act_mem: MemoryConfigFactory) -> MemoryConfi... method validate_para_mem (line 87) | def validate_para_mem(cls, para_mem: MemoryConfigFactory) -> MemoryCon... method validate_pref_mem (line 98) | def validate_pref_mem(cls, pref_mem: MemoryConfigFactory) -> MemoryCon... FILE: src/memos/configs/mem_os.py class MOSConfig (line 14) | class MOSConfig(BaseConfig): class MemOSConfigFactory (line 75) | class MemOSConfigFactory(BaseConfig): method create_config (line 81) | def create_config(self) -> "MemOSConfigFactory": FILE: src/memos/configs/mem_reader.py class BaseMemReaderConfig (line 12) | class BaseMemReaderConfig(BaseConfig): method parse_datetime (line 21) | def parse_datetime(cls, value): class SimpleStructMemReaderConfig (line 55) | class SimpleStructMemReaderConfig(BaseMemReaderConfig): class MultiModalStructMemReaderConfig (line 62) | class MultiModalStructMemReaderConfig(BaseMemReaderConfig): class StrategyStructMemReaderConfig (line 81) | class StrategyStructMemReaderConfig(BaseMemReaderConfig): class MemReaderConfigFactory (line 87) | class MemReaderConfigFactory(BaseConfig): method validate_backend (line 101) | def validate_backend(cls, backend: str) -> str: method create_config (line 108) | def create_config(self) -> "MemReaderConfigFactory": FILE: src/memos/configs/mem_scheduler.py class BaseSchedulerConfig (line 29) | class BaseSchedulerConfig(BaseConfig): class GeneralSchedulerConfig (line 77) | class GeneralSchedulerConfig(BaseSchedulerConfig): class OptimizedSchedulerConfig (line 127) | class OptimizedSchedulerConfig(GeneralSchedulerConfig): class SchedulerConfigFactory (line 135) | class SchedulerConfigFactory(BaseConfig): method validate_backend (line 149) | def validate_backend(cls, backend: str) -> str: method create_config (line 156) | def create_config(self) -> "SchedulerConfigFactory": class RabbitMQConfig (line 166) | class RabbitMQConfig( class GraphDBAuthConfig (line 193) | class GraphDBAuthConfig(BaseConfig, DictConversionMixin, EnvConfigMixin): class OpenAIConfig (line 210) | class OpenAIConfig(BaseConfig, DictConversionMixin, EnvConfigMixin): class AuthConfig (line 216) | class AuthConfig(BaseConfig, DictConversionMixin): method validate_partial_initialization (line 225) | def validate_partial_initialization(self) -> "AuthConfig": method from_local_config (line 267) | def from_local_config(cls, config_path: str | Path | None = None) -> "... method from_local_env (line 309) | def from_local_env(cls) -> "AuthConfig": method set_openai_config_to_environment (line 374) | def set_openai_config_to_environment(self): method default_config_exists (line 385) | def default_config_exists(cls) -> bool: FILE: src/memos/configs/mem_user.py class BaseUserManagerConfig (line 8) | class BaseUserManagerConfig(BaseConfig): class SQLiteUserManagerConfig (line 14) | class SQLiteUserManagerConfig(BaseUserManagerConfig): class MySQLUserManagerConfig (line 23) | class MySQLUserManagerConfig(BaseUserManagerConfig): class RedisUserManagerConfig (line 34) | class RedisUserManagerConfig(BaseUserManagerConfig): class UserManagerConfigFactory (line 45) | class UserManagerConfigFactory(BaseModel): method validate_backend (line 61) | def validate_backend(cls, backend: str) -> str: method instantiate_config (line 67) | def instantiate_config(self): FILE: src/memos/configs/memory.py class BaseMemoryConfig (line 24) | class BaseMemoryConfig(BaseConfig): class UninitializedMemoryConfig (line 33) | class UninitializedMemoryConfig(BaseMemoryConfig): class BaseActMemoryConfig (line 40) | class BaseActMemoryConfig(BaseMemoryConfig): class KVCacheMemoryConfig (line 49) | class KVCacheMemoryConfig(BaseActMemoryConfig): method validate_extractor_llm (line 60) | def validate_extractor_llm(cls, extractor_llm: LLMConfigFactory) -> LL... class BaseParaMemoryConfig (line 72) | class BaseParaMemoryConfig(BaseMemoryConfig): class LoRAMemoryConfig (line 81) | class LoRAMemoryConfig(BaseParaMemoryConfig): method validate_extractor_llm (line 92) | def validate_extractor_llm(cls, extractor_llm: LLMConfigFactory) -> LL... class BaseTextMemoryConfig (line 104) | class BaseTextMemoryConfig(BaseMemoryConfig): class NaiveTextMemoryConfig (line 113) | class NaiveTextMemoryConfig(BaseTextMemoryConfig): class GeneralTextMemoryConfig (line 123) | class GeneralTextMemoryConfig(BaseTextMemoryConfig): class TreeTextMemoryConfig (line 143) | class TreeTextMemoryConfig(BaseTextMemoryConfig): class SimpleTreeTextMemoryConfig (line 205) | class SimpleTreeTextMemoryConfig(TreeTextMemoryConfig): class PreferenceTextMemoryConfig (line 209) | class PreferenceTextMemoryConfig(BaseTextMemoryConfig): class MemFeedbackConfig (line 248) | class MemFeedbackConfig(BaseMemoryConfig): class MemoryConfigFactory (line 293) | class MemoryConfigFactory(BaseConfig): method validate_backend (line 314) | def validate_backend(cls, backend: str) -> str: method create_config (line 321) | def create_config(self) -> "MemoryConfigFactory": FILE: src/memos/configs/parser.py class BaseParserConfig (line 8) | class BaseParserConfig(BaseConfig): class MarkItDownParserConfig (line 12) | class MarkItDownParserConfig(BaseParserConfig): class ParserConfigFactory (line 16) | class ParserConfigFactory(BaseConfig): method validate_backend (line 28) | def validate_backend(cls, backend: str) -> str: method create_config (line 35) | def create_config(self) -> "ParserConfigFactory": FILE: src/memos/configs/reranker.py class RerankerConfigFactory (line 9) | class RerankerConfigFactory(BaseModel): FILE: src/memos/configs/utils.py function get_json_file_model_schema (line 4) | def get_json_file_model_schema(json_path: str) -> str: FILE: src/memos/configs/vec_db.py class BaseVecDBConfig (line 13) | class BaseVecDBConfig(BaseConfig): class QdrantVecDBConfig (line 24) | class QdrantVecDBConfig(BaseVecDBConfig): method set_default_path (line 34) | def set_default_path(self): class MilvusVecDBConfig (line 45) | class MilvusVecDBConfig(BaseVecDBConfig): class VectorDBConfigFactory (line 57) | class VectorDBConfigFactory(BaseConfig): method validate_backend (line 70) | def validate_backend(cls, backend: str) -> str: method create_config (line 77) | def create_config(self) -> "VectorDBConfigFactory": FILE: src/memos/context/context.py class RequestContext (line 25) | class RequestContext: method __init__ (line 32) | def __init__( method set (line 49) | def set(self, key: str, value: Any) -> None: method get (line 53) | def get(self, key: str, default: Any | None = None) -> Any: method __setattr__ (line 57) | def __setattr__(self, name: str, value: Any) -> None: method __getattr__ (line 73) | def __getattr__(self, name: str) -> Any: method to_dict (line 78) | def to_dict(self) -> dict[str, Any]: function set_request_context (line 91) | def set_request_context(context: RequestContext | None) -> None: function get_current_trace_id (line 103) | def get_current_trace_id() -> str | None: function get_current_api_path (line 116) | def get_current_api_path() -> str | None: function get_current_env (line 126) | def get_current_env() -> str | None: function get_current_user_type (line 136) | def get_current_user_type() -> str | None: function get_current_user_name (line 146) | def get_current_user_name() -> str | None: function get_current_source (line 156) | def get_current_source() -> str | None: function get_current_context (line 166) | def get_current_context() -> RequestContext | None: function require_context (line 188) | def require_context() -> RequestContext: class ContextThread (line 206) | class ContextThread(threading.Thread): method __init__ (line 211) | def __init__(self, target, args=(), kwargs=None, **thread_kwargs): method run (line 224) | def run(self): class ContextThreadPoolExecutor (line 244) | class ContextThreadPoolExecutor(ThreadPoolExecutor): method submit (line 249) | def submit(self, fn: Callable[..., T], *args: Any, **kwargs: Any) -> Any: method map (line 279) | def map( function generate_trace_id (line 323) | def generate_trace_id() -> str: function set_trace_id_getter (line 328) | def set_trace_id_getter(getter: TraceIdGetter) -> None: function get_trace_id_for_logging (line 339) | def get_trace_id_for_logging() -> str | None: FILE: src/memos/dependency.py function require_python_package (line 9) | def require_python_package( FILE: src/memos/deprecation.py function deprecated (line 21) | def deprecated( function deprecated_class (line 78) | def deprecated_class( function deprecated_parameter (line 141) | def deprecated_parameter( function warn_deprecated (line 196) | def warn_deprecated( function is_deprecated (line 237) | def is_deprecated(obj: Any) -> bool: function get_deprecation_info (line 250) | def get_deprecation_info(obj: Any) -> dict | None: FILE: src/memos/embedders/ark.py class ArkEmbedder (line 10) | class ArkEmbedder(BaseEmbedder): method __init__ (line 18) | def __init__(self, config: ArkEmbedderConfig): method embed (line 38) | def embed(self, texts: list[str]) -> list[list[float]]: method text_embedding (line 62) | def text_embedding(self, inputs: list[str], chunk_size: int | None = N... method multimodal_embeddings (line 76) | def multimodal_embeddings( FILE: src/memos/embedders/base.py function _count_tokens_for_embedding (line 8) | def _count_tokens_for_embedding(text: str) -> int: function _truncate_text_to_tokens (line 37) | def _truncate_text_to_tokens(text: str, max_tokens: int) -> str: class BaseEmbedder (line 74) | class BaseEmbedder(ABC): method __init__ (line 78) | def __init__(self, config: BaseEmbedderConfig): method _truncate_texts (line 82) | def _truncate_texts(self, texts: list[str], approx_char_per_token=1.0)... method embed (line 105) | def embed(self, texts: list[str]) -> list[list[float]]: FILE: src/memos/embedders/factory.py class EmbedderFactory (line 12) | class EmbedderFactory(BaseEmbedder): method from_config (line 24) | def from_config(cls, config_factory: EmbedderConfigFactory) -> BaseEmb... FILE: src/memos/embedders/ollama.py class OllamaEmbedder (line 11) | class OllamaEmbedder(BaseEmbedder): method __init__ (line 14) | def __init__(self, config: OllamaEmbedderConfig): method _list_models (line 36) | def _list_models(self) -> list[str]: method _ensure_model_exists (line 46) | def _ensure_model_exists(self): method embed (line 60) | def embed(self, texts: list[str]) -> list[list[float]]: FILE: src/memos/embedders/sentence_transformer.py class SenTranEmbedder (line 10) | class SenTranEmbedder(BaseEmbedder): method __init__ (line 18) | def __init__(self, config: SenTranEmbedderConfig): method embed (line 35) | def embed(self, texts: list[str]) -> list[list[float]]: FILE: src/memos/embedders/universal_api.py function _sanitize_unicode (line 17) | def _sanitize_unicode(text: str) -> str: class UniversalAPIEmbedder (line 32) | class UniversalAPIEmbedder(BaseEmbedder): method __init__ (line 33) | def __init__(self, config: UniversalAPIEmbedderConfig): method embed (line 69) | def embed(self, texts: list[str]) -> list[list[float]]: FILE: src/memos/exceptions.py class MemOSError (line 9) | class MemOSError(Exception): ... class ConfigurationError (line 12) | class ConfigurationError(MemOSError): ... class MemoryError (line 15) | class MemoryError(MemOSError): ... class MemCubeError (line 18) | class MemCubeError(MemOSError): ... class VectorDBError (line 21) | class VectorDBError(MemOSError): ... class LLMError (line 24) | class LLMError(MemOSError): ... class EmbedderError (line 27) | class EmbedderError(MemOSError): ... class ParserError (line 30) | class ParserError(MemOSError): ... FILE: src/memos/extras/nli_model/client.py class NLIClient (line 11) | class NLIClient: method __init__ (line 16) | def __init__(self, base_url: str = "http://localhost:32532"): method compare_one_to_many (line 20) | def compare_one_to_many(self, source: str, targets: list[str]) -> list... FILE: src/memos/extras/nli_model/server/handler.py function _map_label_to_result (line 13) | def _map_label_to_result(raw: str) -> NLIResult: function _clean_temporal_markers (line 23) | def _clean_temporal_markers(s: str) -> str: class NLIHandler (line 40) | class NLIHandler: method __init__ (line 46) | def __init__(self, device: str = "cpu", use_fp16: bool = True, use_com... method _resolve_device (line 85) | def _resolve_device(self, device: str) -> str: method predict_batch (line 127) | def predict_batch(self, premises: list[str], hypotheses: list[str]) ->... method compare_one_to_many (line 147) | def compare_one_to_many(self, source: str, targets: list[str]) -> list... FILE: src/memos/extras/nli_model/server/serve.py function lifespan (line 17) | async def lifespan(app: FastAPI): function compare_one_to_many (line 29) | async def compare_one_to_many(request: CompareRequest): function start_server (line 39) | def start_server(host: str = "0.0.0.0", port: int = 32532): FILE: src/memos/extras/nli_model/types.py class NLIResult (line 6) | class NLIResult(Enum): class CompareRequest (line 12) | class CompareRequest(BaseModel): class CompareResponse (line 17) | class CompareResponse(BaseModel): FILE: src/memos/graph_dbs/base.py class BaseGraphDB (line 11) | class BaseGraphDB(ABC): method _validate_return_fields (line 17) | def _validate_return_fields(return_fields: list[str] | None) -> list[s... method add_node (line 35) | def add_node(self, id: str, memory: str, metadata: dict[str, Any]) -> ... method update_node (line 45) | def update_node(self, id: str, fields: dict[str, Any], user_name: str ... method delete_node (line 55) | def delete_node(self, id: str) -> None: method add_edge (line 64) | def add_edge(self, source_id: str, target_id: str, type: str) -> None: method delete_edge (line 74) | def delete_edge(self, source_id: str, target_id: str, type: str) -> None: method edge_exists (line 84) | def edge_exists(self, source_id: str, target_id: str, type: str) -> bool: method get_node (line 97) | def get_node(self, id: str, include_embedding: bool = False, **kwargs)... method get_nodes (line 108) | def get_nodes( method get_neighbors (line 121) | def get_neighbors( method get_path (line 135) | def get_path(self, source_id: str, target_id: str, max_depth: int = 3)... method get_subgraph (line 147) | def get_subgraph(self, center_id: str, depth: int = 2) -> list[str]: method get_context_chain (line 158) | def get_context_chain(self, id: str, type: str = "FOLLOWS") -> list[str]: method search_by_embedding (line 170) | def search_by_embedding( method get_by_metadata (line 194) | def get_by_metadata( method get_structure_optimization_candidates (line 215) | def get_structure_optimization_candidates( method deduplicate_nodes (line 226) | def deduplicate_nodes(self) -> None: method detect_conflicts (line 233) | def detect_conflicts(self) -> list[tuple[str, str]]: method merge_nodes (line 241) | def merge_nodes(self, id1: str, id2: str) -> str: method clear (line 253) | def clear(self) -> None: method export_graph (line 259) | def export_graph(self, include_embedding: bool = False) -> dict[str, A... method import_graph (line 268) | def import_graph(self, data: dict[str, Any]) -> None: method get_all_memory_items (line 277) | def get_all_memory_items( method add_nodes_batch (line 294) | def add_nodes_batch(self, nodes: list[dict[str, Any]], user_name: str ... FILE: src/memos/graph_dbs/factory.py class GraphStoreFactory (line 12) | class GraphStoreFactory(BaseGraphDB): method from_config (line 24) | def from_config(cls, config_factory: GraphDBConfigFactory) -> BaseGrap... FILE: src/memos/graph_dbs/item.py class GraphDBNode (line 10) | class GraphDBNode(TextualMemoryItem): class GraphDBEdge (line 14) | class GraphDBEdge(BaseModel): method validate_id (line 33) | def validate_id(cls, v): method from_dict (line 40) | def from_dict(cls, data: dict[str, Any]) -> "GraphDBEdge": method to_dict (line 44) | def to_dict(self) -> dict[str, Any]: FILE: src/memos/graph_dbs/nebular.py function _normalize (line 41) | def _normalize(vec: list[float]) -> list[float]: function _compose_node (line 48) | def _compose_node(item: dict[str, Any]) -> tuple[str, str, dict[str, Any]]: function _escape_str (line 56) | def _escape_str(value: str) -> str: function _format_datetime (line 82) | def _format_datetime(value: str | datetime) -> str: function _normalize_datetime (line 90) | def _normalize_datetime(val): class NebulaGraphDB (line 104) | class NebulaGraphDB(BaseGraphDB): method _get_hosts_from_cfg (line 118) | def _get_hosts_from_cfg(cfg: NebulaGraphDBConfig) -> list[str]: method _make_client_key (line 125) | def _make_client_key(cfg: NebulaGraphDBConfig) -> str: method _bootstrap_admin (line 137) | def _bootstrap_admin(cls, cfg: NebulaGraphDBConfig, client: "NebulaCli... method _get_or_create_shared_client (line 177) | def _get_or_create_shared_client(cls, cfg: NebulaGraphDBConfig) -> tup... method _refresh_client (line 254) | def _refresh_client(self): method _release_shared_client (line 281) | def _release_shared_client(cls, key: str): method close_all_shared_clients (line 297) | def close_all_shared_clients(cls): method __init__ (line 314) | def __init__(self, config: NebulaGraphDBConfig): method execute_query (line 376) | def execute_query(self, gql: str, timeout: float = 60.0, auto_set_db: ... method close (line 398) | def close(self): method __del__ (line 415) | def __del__(self): method create_index (line 420) | def create_index( method remove_oldest_memory (line 433) | def remove_oldest_memory( method add_node (line 462) | def add_node( method node_not_exist (line 497) | def node_not_exist(self, scope: str, user_name: str | None = None) -> ... method update_node (line 515) | def update_node(self, id: str, fields: dict[str, Any], user_name: str ... method delete_node (line 536) | def delete_node(self, id: str, user_name: str | None = None) -> None: method add_edge (line 551) | def add_edge(self, source_id: str, target_id: str, type: str, user_nam... method delete_edge (line 575) | def delete_edge( method get_memory_count (line 597) | def get_memory_count(self, memory_type: str, user_name: str | None = N... method count_nodes (line 614) | def count_nodes(self, scope: str, user_name: str | None = None) -> int: method edge_exists (line 627) | def edge_exists( method get_node (line 675) | def get_node( method get_nodes (line 711) | def get_nodes( method get_edges (line 755) | def get_edges( method get_neighbors_by_tag (line 811) | def get_neighbors_by_tag( method get_children_with_embeddings (line 879) | def get_children_with_embeddings( method get_subgraph (line 902) | def get_subgraph( method search_by_embedding (line 971) | def search_by_embedding( method get_by_metadata (line 1058) | def get_by_metadata( method get_grouped_counts (line 1123) | def get_grouped_counts( method clear (line 1192) | def clear(self, user_name: str | None = None) -> None: method export_graph (line 1209) | def export_graph( method import_graph (line 1288) | def import_graph(self, data: dict[str, Any], user_name: str | None = N... method get_all_memory_items (line 1325) | def get_all_memory_items( method get_structure_optimization_candidates (line 1365) | def get_structure_optimization_candidates( method drop_database (line 1408) | def drop_database(self) -> None: method detect_conflicts (line 1419) | def detect_conflicts(self) -> list[tuple[str, str]]: method deduplicate_nodes (line 1429) | def deduplicate_nodes(self) -> None: method get_context_chain (line 1437) | def get_context_chain(self, id: str, type: str = "FOLLOWS") -> list[str]: method get_neighbors (line 1449) | def get_neighbors( method get_path (line 1464) | def get_path(self, source_id: str, target_id: str, max_depth: int = 3)... method merge_nodes (line 1477) | def merge_nodes(self, id1: str, id2: str) -> str: method _ensure_space_exists (line 1489) | def _ensure_space_exists(cls, tmp_client, cfg): method _ensure_database_exists (line 1508) | def _ensure_database_exists(self): method _create_vector_index (line 1578) | def _create_vector_index( method _create_basic_property_indexes (line 1614) | def _create_basic_property_indexes(self) -> None: method _index_exists (line 1644) | def _index_exists(self, index_name: str) -> bool: method _parse_value (line 1666) | def _parse_value(self, value: Any) -> Any: method _parse_node (line 1687) | def _parse_node(self, props: dict[str, Any]) -> dict[str, Any]: method _prepare_node_metadata (line 1706) | def _prepare_node_metadata(self, metadata: dict[str, Any]) -> dict[str... method _format_value (line 1729) | def _format_value(self, val: Any, key: str = "") -> str: method _metadata_filter (line 1771) | def _metadata_filter(self, metadata: dict[str, Any]) -> dict[str, Any]: method _build_return_fields (line 1790) | def _build_return_fields(self, include_embedding: bool = False) -> str: FILE: src/memos/graph_dbs/neo4j.py function _compose_node (line 16) | def _compose_node(item: dict[str, Any]) -> tuple[str, str, dict[str, Any]]: function _prepare_node_metadata (line 23) | def _prepare_node_metadata(metadata: dict[str, Any]) -> dict[str, Any]: function _flatten_info_fields (line 48) | def _flatten_info_fields(metadata: dict[str, Any]) -> dict[str, Any]: class Neo4jGraphDB (line 75) | class Neo4jGraphDB(BaseGraphDB): method __init__ (line 83) | def __init__(self, config: Neo4jGraphDBConfig): method create_index (line 115) | def create_index( method get_memory_count (line 131) | def get_memory_count(self, memory_type: str, user_name: str | None = N... method node_not_exist (line 150) | def node_not_exist(self, scope: str, user_name: str | None = None) -> ... method remove_oldest_memory (line 170) | def remove_oldest_memory( method add_node (line 197) | def add_node( method add_nodes_batch (line 243) | def add_nodes_batch( method update_node (line 352) | def update_node(self, id: str, fields: dict[str, Any], user_name: str ... method delete_node (line 382) | def delete_node(self, id: str, user_name: str | None = None) -> None: method add_edge (line 402) | def add_edge( method delete_edge (line 429) | def delete_edge( method edge_exists (line 456) | def edge_exists( method get_node (line 505) | def get_node(self, id: str, include_embedding: bool = False, **kwargs)... method get_nodes (line 536) | def get_nodes(self, ids: list[str], **kwargs) -> list[dict[str, Any]]: method get_edges (line 568) | def get_edges( method get_neighbors (line 624) | def get_neighbors( method get_neighbors_by_tag (line 642) | def get_neighbors_by_tag( method get_children_with_embeddings (line 693) | def get_children_with_embeddings( method get_path (line 716) | def get_path( method get_subgraph (line 730) | def get_subgraph( method get_context_chain (line 798) | def get_context_chain(self, id: str, type: str = "FOLLOWS") -> list[str]: method search_by_embedding (line 810) | def search_by_embedding( method search_by_fulltext (line 954) | def search_by_fulltext( method get_by_metadata (line 974) | def get_by_metadata( method get_grouped_counts (line 1102) | def get_grouped_counts( method deduplicate_nodes (line 1156) | def deduplicate_nodes(self) -> None: method detect_conflicts (line 1163) | def detect_conflicts(self) -> list[tuple[str, str]]: method merge_nodes (line 1171) | def merge_nodes(self, id1: str, id2: str) -> str: method clear (line 1183) | def clear(self, user_name: str | None = None) -> None: method export_graph (line 1205) | def export_graph( method import_graph (line 1363) | def import_graph(self, data: dict[str, Any], user_name: str | None = N... method get_all_memory_items (line 1410) | def get_all_memory_items( method get_structure_optimization_candidates (line 1499) | def get_structure_optimization_candidates(self, scope: str, **kwargs) ... method drop_database (line 1529) | def drop_database(self) -> None: method _ensure_database_exists (line 1547) | def _ensure_database_exists(self): method _vector_index_exists (line 1581) | def _vector_index_exists(self, index_name: str = "memory_vector_index"... method _create_vector_index (line 1587) | def _create_vector_index( method _create_basic_property_indexes (line 1610) | def _create_basic_property_indexes(self) -> None: method _index_exists (line 1648) | def _index_exists(self, index_name: str) -> bool: method _build_user_name_and_kb_ids_conditions_cypher (line 1660) | def _build_user_name_and_kb_ids_conditions_cypher( method _build_filter_conditions_cypher (line 1698) | def _build_filter_conditions_cypher( method _parse_node (line 1830) | def _parse_node(self, node_data: dict[str, Any]) -> dict[str, Any]: method delete_node_by_prams (line 1851) | def delete_node_by_prams( method get_user_names_by_memory_ids (line 1977) | def get_user_names_by_memory_ids(self, memory_ids: list[str]) -> dict[... method exist_user_name (line 2030) | def exist_user_name(self, user_name: str) -> dict[str, bool]: method delete_node_by_mem_cube_id (line 2067) | def delete_node_by_mem_cube_id( method recover_memory_by_mem_cube_id (line 2142) | def recover_memory_by_mem_cube_id( FILE: src/memos/graph_dbs/neo4j_community.py class Neo4jCommunityGraphDB (line 17) | class Neo4jCommunityGraphDB(Neo4jGraphDB): method __init__ (line 28) | def __init__(self, config: Neo4jGraphDBConfig): method create_index (line 36) | def create_index( method add_node (line 49) | def add_node( method add_nodes_batch (line 111) | def add_nodes_batch(self, nodes: list[dict[str, Any]], user_name: str ... method get_children_with_embeddings (line 216) | def get_children_with_embeddings( method _fetch_return_fields (line 247) | def _fetch_return_fields( method search_by_embedding (line 281) | def search_by_embedding( method search_by_fulltext (line 456) | def search_by_fulltext( method _normalize_date_string (line 476) | def _normalize_date_string(self, date_str: str) -> str: method _build_filter_conditions_cypher (line 513) | def _build_filter_conditions_cypher( method _normalize_filter_dates (line 542) | def _normalize_filter_dates(self, filter: dict) -> dict: method _normalize_condition_dates (line 573) | def _normalize_condition_dates(self, condition: dict) -> dict: method get_all_memory_items (line 639) | def get_all_memory_items( method get_by_metadata (line 718) | def get_by_metadata( method delete_node_by_prams (line 920) | def delete_node_by_prams( method clear (line 1050) | def clear(self, user_name: str | None = None) -> None: method drop_database (line 1069) | def drop_database(self) -> None: method _ensure_database_exists (line 1080) | def _ensure_database_exists(self): method _create_basic_property_indexes (line 1083) | def _create_basic_property_indexes(self) -> None: method _parse_node (line 1131) | def _parse_node(self, node_data: dict[str, Any]) -> dict[str, Any]: method _parse_nodes (line 1160) | def _parse_nodes(self, nodes_data: list[dict[str, Any]]) -> list[dict[... method get_user_names_by_memory_ids (line 1207) | def get_user_names_by_memory_ids(self, memory_ids: list[str]) -> dict[... method delete_node_by_mem_cube_id (line 1262) | def delete_node_by_mem_cube_id( method recover_memory_by_mem_cube_id (line 1360) | def recover_memory_by_mem_cube_id( FILE: src/memos/graph_dbs/polardb.py function _compose_node (line 23) | def _compose_node(item: dict[str, Any]) -> tuple[str, str, dict[str, Any]]: function _prepare_node_metadata (line 30) | def _prepare_node_metadata(metadata: dict[str, Any]) -> dict[str, Any]: function generate_vector (line 51) | def generate_vector(dim=1024, low=-0.2, high=0.2): function find_embedding (line 56) | def find_embedding(metadata): function detect_embedding_field (line 69) | def detect_embedding_field(embedding_list): function convert_to_vector (line 80) | def convert_to_vector(embedding_list): function clean_properties (line 88) | def clean_properties(props): function escape_sql_string (line 96) | def escape_sql_string(value: str) -> str: class PolarDBGraphDB (line 101) | class PolarDBGraphDB(BaseGraphDB): method __init__ (line 109) | def __init__(self, config: PolarDBGraphDBConfig): method _get_config_value (line 204) | def _get_config_value(self, key: str, default=None): method _warm_up_search_connections_by_full (line 211) | def _warm_up_search_connections_by_full(self, user_name: str | None = ... method warm_up_search_connections_by_full (line 230) | def warm_up_search_connections_by_full(self, user_name: str | None = N... method _warm_up_connections_by_all (line 233) | def _warm_up_connections_by_all(self): method _get_connection (line 249) | def _get_connection(self): method _ensure_database_exists (line 293) | def _ensure_database_exists(self): method _create_graph (line 304) | def _create_graph(self): method create_index (line 356) | def create_index( method get_memory_count (line 389) | def get_memory_count(self, memory_type: str, user_name: str | None = N... method node_not_exist (line 410) | def node_not_exist(self, scope: str, user_name: str | None = None) -> ... method remove_oldest_memory (line 432) | def remove_oldest_memory( method update_node (line 494) | def update_node(self, id: str, fields: dict[str, Any], user_name: str ... method delete_node (line 561) | def delete_node(self, id: str, user_name: str | None = None) -> None: method create_extension (line 587) | def create_extension(self): method create_graph (line 615) | def create_graph(self): method create_edge (line 634) | def create_edge(self): method add_edge (line 653) | def add_edge( method delete_edge (line 703) | def delete_edge(self, source_id: str, target_id: str, type: str) -> None: method edge_exists_old (line 720) | def edge_exists_old( method edge_exists (line 778) | def edge_exists( method get_node (line 829) | def get_node( method get_nodes (line 914) | def get_nodes(self, ids: list[str], user_name: str, **kwargs) -> list[... method get_edges_old (line 989) | def get_edges_old( method get_neighbors (line 1075) | def get_neighbors( method get_neighbors_by_tag_old (line 1082) | def get_neighbors_by_tag_old( method get_children_with_embeddings (line 1183) | def get_children_with_embeddings( method get_path (line 1261) | def get_path(self, source_id: str, target_id: str, max_depth: int = 3)... method get_subgraph (line 1266) | def get_subgraph( method get_context_chain (line 1469) | def get_context_chain(self, id: str, type: str = "FOLLOWS") -> list[str]: method _extract_fields_from_properties (line 1473) | def _extract_fields_from_properties( method search_by_keywords_like (line 1504) | def search_by_keywords_like( method search_by_keywords_tfidf (line 1601) | def search_by_keywords_tfidf( method search_by_fulltext (line 1705) | def search_by_fulltext( method search_by_embedding (line 1832) | def search_by_embedding( method get_by_metadata (line 1965) | def get_by_metadata( method get_grouped_counts1 (line 2064) | def get_grouped_counts1( method get_grouped_counts (line 2140) | def get_grouped_counts( method deduplicate_nodes (line 2233) | def deduplicate_nodes(self) -> None: method detect_conflicts (line 2237) | def detect_conflicts(self) -> list[tuple[str, str]]: method merge_nodes (line 2241) | def merge_nodes(self, id1: str, id2: str) -> str: method clear (line 2246) | def clear(self, user_name: str | None = None) -> None: method export_graph (line 2271) | def export_graph( method count_nodes (line 2495) | def count_nodes(self, scope: str, user_name: str | None = None) -> int: method get_all_memory_items (line 2511) | def get_all_memory_items( method get_all_memory_items_old (line 2667) | def get_all_memory_items_old( method get_structure_optimization_candidates (line 2774) | def get_structure_optimization_candidates( method drop_database (line 2947) | def drop_database(self) -> None: method _parse_node (line 2960) | def _parse_node(self, node_data: dict[str, Any]) -> dict[str, Any]: method _parse_node_new (line 2993) | def _parse_node_new(self, node_data: dict[str, Any]) -> dict[str, Any]: method __del__ (line 3049) | def __del__(self): method add_node (line 3055) | def add_node( method add_nodes_batch (line 3168) | def add_nodes_batch( method _build_node_from_agtype (line 3353) | def _build_node_from_agtype(self, node_agtype, embedding=None): method get_neighbors_by_tag (line 3389) | def get_neighbors_by_tag( method get_neighbors_by_tag_ccl (line 3514) | def get_neighbors_by_tag_ccl( method import_graph (line 3674) | def import_graph(self, data: dict[str, Any], user_name: str | None = N... method get_edges (line 3711) | def get_edges( method _convert_graph_edges (line 3820) | def _convert_graph_edges(self, core_node: dict) -> dict: method format_param_value (line 3848) | def format_param_value(self, value: str | None) -> str: method _build_user_name_and_kb_ids_conditions_cypher (line 3863) | def _build_user_name_and_kb_ids_conditions_cypher( method _build_user_name_and_kb_ids_conditions_sql (line 3896) | def _build_user_name_and_kb_ids_conditions_sql( method _build_filter_conditions_cypher (line 3931) | def _build_filter_conditions_cypher( method _build_filter_conditions_sql (line 4304) | def _build_filter_conditions_sql( method parse_filter (line 4732) | def parse_filter( method delete_node_by_prams (line 4806) | def delete_node_by_prams( method get_user_names_by_memory_ids (line 4922) | def get_user_names_by_memory_ids(self, memory_ids: list[str]) -> dict[... method exist_user_name (line 5024) | def exist_user_name(self, user_name: str) -> dict[str, bool]: method delete_node_by_mem_cube_id (line 5070) | def delete_node_by_mem_cube_id( method recover_memory_by_mem_cube_id (line 5162) | def recover_memory_by_mem_cube_id( FILE: src/memos/graph_dbs/postgres.py function _prepare_node_metadata (line 28) | def _prepare_node_metadata(metadata: dict[str, Any]) -> dict[str, Any]: class PostgresGraphDB (line 42) | class PostgresGraphDB(BaseGraphDB): method __init__ (line 50) | def __init__(self, config: PostgresGraphDBConfig): method _get_conn (line 80) | def _get_conn(self): method _put_conn (line 106) | def _put_conn(self, conn): method _init_schema (line 115) | def _init_schema(self): method remove_oldest_memory (line 186) | def remove_oldest_memory( method add_node (line 244) | def add_node( method add_nodes_batch (line 303) | def add_nodes_batch(self, nodes: list[dict[str, Any]], user_name: str ... method update_node (line 313) | def update_node(self, id: str, fields: dict[str, Any], user_name: str ... method delete_node (line 355) | def delete_node(self, id: str, user_name: str | None = None) -> None: method get_node (line 380) | def get_node(self, id: str, include_embedding: bool = False, **kwargs)... method get_nodes (line 403) | def get_nodes( method _parse_row (line 427) | def _parse_row(self, row, include_embedding: bool = False) -> dict[str... method add_edge (line 445) | def add_edge( method delete_edge (line 463) | def delete_edge( method edge_exists (line 480) | def edge_exists(self, source_id: str, target_id: str, type: str) -> bool: method get_neighbors (line 501) | def get_neighbors( method get_path (line 537) | def get_path(self, source_id: str, target_id: str, max_depth: int = 3)... method get_subgraph (line 567) | def get_subgraph(self, center_id: str, depth: int = 2) -> list[str]: method get_context_chain (line 591) | def get_context_chain(self, id: str, type: str = "FOLLOWS") -> list[str]: method search_by_embedding (line 599) | def search_by_embedding( method get_by_metadata (line 666) | def get_by_metadata( method get_all_memory_items (line 724) | def get_all_memory_items( method get_structure_optimization_candidates (line 762) | def get_structure_optimization_candidates( method deduplicate_nodes (line 793) | def deduplicate_nodes(self) -> None: method get_grouped_counts (line 796) | def get_grouped_counts( method detect_conflicts (line 862) | def detect_conflicts(self) -> list[tuple[str, str]]: method merge_nodes (line 866) | def merge_nodes(self, id1: str, id2: str) -> str: method clear (line 870) | def clear(self, user_name: str | None = None) -> None: method export_graph (line 906) | def export_graph(self, include_embedding: bool = False, **kwargs) -> d... method import_graph (line 953) | def import_graph(self, data: dict[str, Any], user_name: str | None = N... method close (line 972) | def close(self): FILE: src/memos/hello_world.py function memos_hello_world (line 7) | def memos_hello_world() -> str: function memos_chend_hello_world (line 12) | def memos_chend_hello_world() -> str: function memos_wanghy_hello_world (line 17) | def memos_wanghy_hello_world() -> str: function memos_niusm_hello_world (line 22) | def memos_niusm_hello_world() -> str: function memos_huojh_hello_world (line 27) | def memos_huojh_hello_world(arr: list) -> list: function memos_dany_hello_world (line 38) | def memos_dany_hello_world(para_1: int, para_2: str) -> str: function memos_wangyzh_hello_world (line 44) | def memos_wangyzh_hello_world() -> str: function memos_zhaojihao_hello_world (line 49) | def memos_zhaojihao_hello_world() -> str: function memos_yuqingchen_hello_world (line 54) | def memos_yuqingchen_hello_world() -> str: function memos_chentang_hello_world (line 59) | def memos_chentang_hello_world(user_id: str = "locomo_exp_user_1", versi... FILE: src/memos/llms/base.py class BaseLLM (line 8) | class BaseLLM(ABC): method __init__ (line 12) | def __init__(self, config: BaseLLMConfig): method generate (line 16) | def generate(self, messages: MessageList, **kwargs) -> str: method generate_stream (line 20) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... FILE: src/memos/llms/deepseek.py class DeepSeekLLM (line 9) | class DeepSeekLLM(OpenAILLM): method __init__ (line 12) | def __init__(self, config: DeepSeekLLMConfig): FILE: src/memos/llms/factory.py class LLMFactory (line 16) | class LLMFactory(BaseLLM): method from_config (line 33) | def from_config(cls, config_factory: LLMConfigFactory) -> BaseLLM: FILE: src/memos/llms/hf.py class HFLLM (line 18) | class HFLLM(BaseLLM): method __init__ (line 23) | def __init__(self, config: HFLLMConfig): method generate (line 67) | def generate( method generate_stream (line 87) | def generate_stream( method _generate_full (line 107) | def _generate_full(self, prompt: str, **kwargs) -> str: method _generate_full_stream (line 140) | def _generate_full_stream(self, prompt: str, **kwargs) -> Generator[st... method _generate_with_cache (line 207) | def _generate_with_cache(self, query: str, kv: DynamicCache, **kwargs)... method _generate_with_cache_stream (line 242) | def _generate_with_cache_stream( method _prefill (line 305) | def _prefill(self, input_ids: Any, kv: DynamicCache) -> tuple[Any, Dyn... method _select_next_token (line 325) | def _select_next_token(self, logits: Any) -> Any: method _should_stop (line 343) | def _should_stop(self, token: Any) -> bool: method build_kv_cache (line 354) | def build_kv_cache(self, messages) -> DynamicCache: FILE: src/memos/llms/hf_singleton.py class HFSingletonLLM (line 13) | class HFSingletonLLM(HFLLM): method __new__ (line 22) | def __new__(cls, config: HFLLMConfig): method __init__ (line 44) | def __init__(self, config: HFLLMConfig): method _get_config_key (line 58) | def _get_config_key(cls, config: HFLLMConfig) -> str: method get_instance_count (line 73) | def get_instance_count(cls) -> int: method get_instance_info (line 83) | def get_instance_info(cls) -> dict[str, str]: method clear_all (line 93) | def clear_all(cls) -> None: function get_hf_singleton_info (line 104) | def get_hf_singleton_info() -> dict[str, int]: FILE: src/memos/llms/ollama.py class OllamaLLM (line 16) | class OllamaLLM(BaseLLM): method __init__ (line 19) | def __init__(self, config: OllamaLLMConfig): method _list_models (line 33) | def _list_models(self) -> list[str]: method _ensure_model_exists (line 43) | def _ensure_model_exists(self): method generate (line 57) | def generate(self, messages: MessageList, **kwargs) -> Any: method generate_stream (line 95) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... method tool_call_parser (line 127) | def tool_call_parser(self, tool_calls: list[Message.ToolCall]) -> list... FILE: src/memos/llms/openai.py class OpenAILLM (line 22) | class OpenAILLM(BaseLLM): method __init__ (line 25) | def __init__(self, config: OpenAILLMConfig): method _parse_response (line 45) | def _parse_response(self, response) -> str: method generate (line 71) | def generate(self, messages: MessageList, **kwargs) -> str: method generate_stream (line 118) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... method tool_call_parser (line 161) | def tool_call_parser(self, tool_calls: list[ChatCompletionMessageToolC... class AzureLLM (line 173) | class AzureLLM(BaseLLM): method __init__ (line 176) | def __init__(self, config: AzureLLMConfig): method generate (line 185) | def generate(self, messages: MessageList, **kwargs) -> str: method generate_stream (line 209) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... method tool_call_parser (line 248) | def tool_call_parser(self, tool_calls: list[ChatCompletionMessageToolC... FILE: src/memos/llms/openai_new.py class OpenAIResponsesLLM (line 22) | class OpenAIResponsesLLM(BaseLLM): method __init__ (line 23) | def __init__(self, config: OpenAILLMConfig): method generate (line 30) | def generate(self, messages: MessageList, **kwargs) -> str: method generate_stream (line 62) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... method tool_call_parser (line 102) | def tool_call_parser(self, tool_calls: list[ResponseFunctionToolCall])... class AzureResponsesLLM (line 114) | class AzureResponsesLLM(BaseLLM): method __init__ (line 115) | def __init__(self, config: AzureLLMConfig): method generate (line 123) | def generate(self, messages: MessageList, **kwargs) -> str: method generate_stream (line 149) | def generate_stream(self, messages: MessageList, **kwargs) -> Generato... method tool_call_parser (line 189) | def tool_call_parser(self, tool_calls: list[ResponseFunctionToolCall])... FILE: src/memos/llms/qwen.py class QwenLLM (line 9) | class QwenLLM(OpenAILLM): method __init__ (line 12) | def __init__(self, config: QwenLLMConfig): FILE: src/memos/llms/utils.py function remove_thinking_tags (line 4) | def remove_thinking_tags(text: str) -> str: FILE: src/memos/llms/vllm.py class VLLMLLM (line 19) | class VLLMLLM(BaseLLM): method __init__ (line 24) | def __init__(self, config: VLLMLLMConfig): method build_vllm_kv_cache (line 42) | def build_vllm_kv_cache(self, messages: Any) -> str: method generate (line 94) | def generate(self, messages: list[MessageDict], **kwargs) -> str: method _generate_with_api_client (line 103) | def _generate_with_api_client(self, messages: list[MessageDict], **kwa... method _messages_to_prompt (line 144) | def _messages_to_prompt(self, messages: list[MessageDict]) -> str: method generate_stream (line 155) | def generate_stream(self, messages: list[MessageDict], **kwargs): method tool_call_parser (line 197) | def tool_call_parser(self, tool_calls: list[ChatCompletionMessageToolC... FILE: src/memos/log.py function _setup_logfile (line 32) | def _setup_logfile() -> Path: class ContextFilter (line 44) | class ContextFilter(logging.Filter): method filter (line 47) | def filter(self, record): class CustomLoggerRequestHandler (line 64) | class CustomLoggerRequestHandler(logging.Handler): method __new__ (line 68) | def __new__(cls): method __init__ (line 79) | def __init__(self): method emit (line 92) | def emit(self, record): method _send_log_sync (line 121) | def _send_log_sync(self, message, trace_id, api_path, env, user_type, ... method _cleanup (line 156) | def _cleanup(self): method close (line 168) | def close(self): function get_logger (line 227) | def get_logger(name: str | None = None) -> logging.Logger: FILE: src/memos/mem_agent/base.py class BaseMemAgent (line 6) | class BaseMemAgent(ABC): method __init__ (line 11) | def __init__(self, config: BaseAgentConfig): method run (line 16) | def run(self, input: str) -> str: FILE: src/memos/mem_agent/deepsearch_agent.py class JSONResponseParser (line 32) | class JSONResponseParser: method parse (line 36) | def parse(response: str) -> dict[str, Any]: class QueryRewriter (line 53) | class QueryRewriter(BaseMemAgent): method __init__ (line 56) | def __init__(self, llm: BaseLLM, name: str = "QueryRewriter"): method run (line 60) | def run(self, query: str, history: list[str] | None = None) -> str: method _format_history (line 75) | def _format_history(self, history: list[str]) -> str: class ReflectionAgent (line 82) | class ReflectionAgent: method __init__ (line 85) | def __init__(self, llm: BaseLLM, name: str = "Reflector"): method run (line 89) | def run(self, query: str, context: list[str]) -> dict[str, Any]: method _format_context (line 106) | def _format_context(self, context: list[str]) -> str: method _fallback_response (line 112) | def _fallback_response(self) -> dict[str, Any]: class DeepSearchMemAgent (line 121) | class DeepSearchMemAgent(BaseMemAgent): method __init__ (line 129) | def __init__( method run (line 151) | def run(self, query: str, **kwargs) -> str | list[TextualMemoryItem]: method _remove_duplicate_memories (line 225) | def _remove_duplicate_memories( method _generate_final_answer (line 246) | def _generate_final_answer( method _perform_memory_search (line 269) | def _perform_memory_search( method _extract_context_from_memory (line 315) | def _extract_context_from_memory(self, memory_item: TextualMemoryItem)... method _refine_query_for_missing_info (line 324) | def _refine_query_for_missing_info(self, query: str, missing_entities:... method _set_source_from_memory (line 335) | def _set_source_from_memory( method _generate_final_answer (line 351) | def _generate_final_answer( FILE: src/memos/mem_agent/factory.py class MemAgentFactory (line 8) | class MemAgentFactory: method from_config (line 16) | def from_config( FILE: src/memos/mem_chat/base.py class BaseMemChat (line 7) | class BaseMemChat(ABC): method __init__ (line 11) | def __init__(self, config: BaseMemChatConfig): method mem_cube (line 16) | def mem_cube(self) -> BaseMemCube: method mem_cube (line 21) | def mem_cube(self, value: BaseMemCube) -> None: method run (line 25) | def run(self) -> None: FILE: src/memos/mem_chat/factory.py class MemChatFactory (line 8) | class MemChatFactory(BaseMemChat): method from_config (line 16) | def from_config(cls, config_factory: MemChatConfigFactory) -> BaseMemC... FILE: src/memos/mem_chat/simple.py class SimpleMemChat (line 18) | class SimpleMemChat(BaseMemChat): method __init__ (line 21) | def __init__(self, config: SimpleMemChatConfig): method mem_cube (line 28) | def mem_cube(self) -> BaseMemCube: method mem_cube (line 33) | def mem_cube(self, value: BaseMemCube) -> None: method run (line 37) | def run(self) -> None: method _build_system_prompt (line 140) | def _build_system_prompt(self, memories: list | None = None) -> str: method _str_memories (line 157) | def _str_memories( method _export_chat_history (line 168) | def _export_chat_history(self, messages: MessageList, output_dir: str ... FILE: src/memos/mem_cube/base.py class BaseMemCube (line 13) | class BaseMemCube(ABC): method __init__ (line 17) | def __init__(self, config: BaseMemCubeConfig): method load (line 25) | def load(self, dir: str) -> None: method dump (line 29) | def dump(self, dir: str) -> None: FILE: src/memos/mem_cube/general.py class GeneralMemCube (line 21) | class GeneralMemCube(BaseMemCube): method __init__ (line 24) | def __init__(self, config: GeneralMemCubeConfig): method load (line 50) | def load( method dump (line 92) | def dump( method init_from_dir (line 136) | def init_from_dir( method init_from_remote_repo (line 165) | def init_from_remote_repo( method text_mem (line 187) | def text_mem(self) -> "BaseTextMemory | None": method text_mem (line 194) | def text_mem(self, value: BaseTextMemory) -> None: method act_mem (line 201) | def act_mem(self) -> "BaseActMemory | None": method act_mem (line 208) | def act_mem(self, value: BaseActMemory) -> None: method para_mem (line 215) | def para_mem(self) -> "BaseParaMemory | None": method para_mem (line 222) | def para_mem(self, value: BaseParaMemory) -> None: method pref_mem (line 229) | def pref_mem(self) -> "BaseTextMemory | None": method pref_mem (line 236) | def pref_mem(self, value: BaseTextMemory) -> None: FILE: src/memos/mem_cube/navie.py class NaiveMemCube (line 17) | class NaiveMemCube(BaseMemCube): method __init__ (line 20) | def __init__( method load (line 32) | def load( method dump (line 71) | def dump( method text_mem (line 112) | def text_mem(self) -> "BaseTextMemory | None": method text_mem (line 119) | def text_mem(self, value: BaseTextMemory) -> None: method act_mem (line 126) | def act_mem(self) -> "BaseActMemory | None": method act_mem (line 133) | def act_mem(self, value: BaseActMemory) -> None: method para_mem (line 140) | def para_mem(self) -> "BaseParaMemory | None": method para_mem (line 147) | def para_mem(self, value: BaseParaMemory) -> None: FILE: src/memos/mem_cube/utils.py function download_repo (line 12) | def download_repo(repo: str, base_url: str, dir: str | None = None) -> str: function merge_config_with_default (line 34) | def merge_config_with_default( FILE: src/memos/mem_feedback/base.py class BaseMemFeedback (line 6) | class BaseMemFeedback(ABC): method __init__ (line 10) | def __init__(self, config: MemFeedbackConfig): method process_feedback (line 14) | def process_feedback(self, data: dict) -> None: FILE: src/memos/mem_feedback/feedback.py class MemFeedback (line 65) | class MemFeedback(BaseMemFeedback): method __init__ (line 66) | def __init__(self, config: MemFeedbackConfig): method _tokenize_chinese (line 104) | def _tokenize_chinese(self, text): method _embed_once (line 113) | def _embed_once(self, texts): method _retry_db_operation (line 117) | def _retry_db_operation(self, operation): method _batch_embed (line 126) | def _batch_embed(self, texts: list[str], embed_bs: int = 5): method _pure_add (line 141) | def _pure_add(self, user_name: str, feedback_content: str, feedback_ti... method _keyword_replace_judgement (line 174) | def _keyword_replace_judgement(self, feedback_content: str) -> dict | ... method _feedback_judgement (line 193) | def _feedback_judgement( method _single_add_operation (line 218) | def _single_add_operation( method _single_update_operation (line 264) | def _single_update_operation( method _del_working_binding (line 324) | def _del_working_binding(self, user_name, mem_items: list[TextualMemor... method semantics_feedback (line 348) | def semantics_feedback( method _feedback_memory (line 478) | def _feedback_memory( method _info_comparison (line 541) | def _info_comparison(self, memory: TextualMemoryItem, _info: dict, inc... method _retrieve (line 553) | def _retrieve(self, query: str, info=None, top_k=20, user_name=None): method _vec_query (line 605) | def _vec_query(self, new_memories_embedding: list[float], user_name=No... method _get_llm_response (line 648) | def _get_llm_response( method filter_fault_update (line 684) | def filter_fault_update(self, operations: list[dict]): method standard_operations (line 730) | def standard_operations(self, operations, current_memories): method _generate_answer (line 819) | def _generate_answer( method _doc_filter (line 837) | def _doc_filter(self, doc_scope: str, memories: list[TextualMemoryItem]): method process_keyword_replace (line 866) | def process_keyword_replace( method process_feedback_core (line 966) | def process_feedback_core( method process_feedback (line 1091) | def process_feedback( FILE: src/memos/mem_feedback/simple_feedback.py class SimpleMemFeedback (line 16) | class SimpleMemFeedback(MemFeedback): method __init__ (line 17) | def __init__( FILE: src/memos/mem_feedback/utils.py function estimate_tokens (line 7) | def estimate_tokens(text: str) -> int: function should_keep_update (line 30) | def should_keep_update(new_text: str, old_text: str) -> bool: function general_split_into_chunks (line 63) | def general_split_into_chunks(items: list[dict], max_tokens_per_chunk: i... function split_into_chunks (line 95) | def split_into_chunks(memories: list[TextualMemoryItem], max_tokens_per_... function make_mem_item (line 127) | def make_mem_item(text: str, **kwargs) -> TextualMemoryItem: function extract_bracket_content (line 155) | def extract_bracket_content(text): function extract_square_brackets_content (line 194) | def extract_square_brackets_content(text): FILE: src/memos/mem_os/client.py class ClientMOS (line 4) | class ClientMOS: FILE: src/memos/mem_os/core.py class MOSCore (line 38) | class MOSCore: method __init__ (line 45) | def __init__(self, config: MOSConfig, user_manager: UserManager | None... method mem_scheduler (line 83) | def mem_scheduler(self) -> GeneralScheduler: method mem_scheduler (line 91) | def mem_scheduler(self, value: GeneralScheduler | None) -> None: method _initialize_mem_scheduler (line 111) | def _initialize_mem_scheduler(self) -> GeneralScheduler: method mem_scheduler_on (line 141) | def mem_scheduler_on(self) -> bool: method mem_scheduler_off (line 153) | def mem_scheduler_off(self) -> bool: method mem_reorganizer_on (line 169) | def mem_reorganizer_on(self) -> bool: method mem_reorganizer_off (line 172) | def mem_reorganizer_off(self) -> bool: method mem_reorganizer_wait (line 181) | def mem_reorganizer_wait(self) -> bool: method _register_chat_history (line 188) | def _register_chat_history( method _validate_user_exists (line 200) | def _validate_user_exists(self, user_id: str) -> None: method _validate_cube_access (line 214) | def _validate_cube_access(self, user_id: str, cube_id: str) -> None: method _get_all_documents (line 233) | def _get_all_documents(self, path: str) -> list[str]: method chat (line 251) | def chat(self, query: str, user_id: str | None = None, base_prompt: st... method _build_system_prompt (line 354) | def _build_system_prompt( method _str_memories (line 390) | def _str_memories( method clear_messages (line 401) | def clear_messages(self, user_id: str | None = None) -> None: method create_user (line 406) | def create_user( method list_users (line 423) | def list_users(self) -> list: method create_cube_for_user (line 441) | def create_cube_for_user( method register_mem_cube (line 460) | def register_mem_cube( method unregister_mem_cube (line 534) | def unregister_mem_cube(self, mem_cube_id: str, user_id: str | None = ... method search (line 546) | def search( method add (line 684) | def add( method get (line 925) | def get( method get_all (line 959) | def get_all( method update (line 997) | def update( method delete (line 1036) | def delete(self, mem_cube_id: str, memory_id: str, user_id: str | None... method delete_all (line 1063) | def delete_all(self, mem_cube_id: str | None = None, user_id: str | No... method dump (line 1089) | def dump( method load (line 1109) | def load( method get_user_info (line 1133) | def get_user_info(self) -> dict[str, Any]: method share_cube_with_user (line 1162) | def share_cube_with_user(self, cube_id: str, target_user_id: str) -> b... method get_query_rewrite (line 1181) | def get_query_rewrite(self, query: str, user_id: str | None = None): FILE: src/memos/mem_os/main.py class MOS (line 24) | class MOS(MOSCore): method __init__ (line 30) | def __init__(self, config: MOSConfig | None = None): method _auto_configure (line 57) | def _auto_configure(self, **kwargs) -> tuple[MOSConfig, Any]: method simple (line 80) | def simple(cls) -> "MOS": method chat (line 108) | def chat(self, query: str, user_id: str | None = None, base_prompt: st... method _chat_with_cot_enhancement (line 131) | def _chat_with_cot_enhancement( method _get_search_engine_for_cot_with_validation (line 232) | def _get_search_engine_for_cot_with_validation( method _generate_enhanced_response_with_context (line 256) | def _generate_enhanced_response_with_context( method cot_decompose (line 350) | def cot_decompose( method get_sub_answers (line 402) | def get_sub_answers( method _search_with_engine (line 515) | def _search_with_engine( FILE: src/memos/mem_os/product.py function _short_id (line 59) | def _short_id(mem_id: str) -> str: function _format_mem_block (line 63) | def _format_mem_block(memories_all, max_items: int = 20, max_chars_each:... class MOSProduct (line 92) | class MOSProduct(MOSCore): method __init__ (line 98) | def __init__( method _restore_user_instances (line 172) | def _restore_user_instances( method _initialize_cube_from_default_config (line 220) | def _initialize_cube_from_default_config( method _preload_user_cubes (line 240) | def _preload_user_cubes( method _load_user_cubes (line 282) | def _load_user_cubes( method _ensure_user_instance (line 331) | def _ensure_user_instance(self, user_id: str, max_instances: int | Non... method _load_user_cube_access (line 369) | def _load_user_cube_access(self, user_id: str) -> None: method _get_user_config (line 379) | def _get_user_config(self, user_id: str) -> MOSConfig: method _validate_user_cube_access (line 385) | def _validate_user_cube_access(self, user_id: str, cube_id: str) -> None: method _validate_user_access (line 393) | def _validate_user_access(self, user_id: str, cube_id: str | None = No... method _create_user_config (line 401) | def _create_user_config(self, user_id: str, config: MOSConfig) -> MOSC... method _get_or_create_user_config (line 413) | def _get_or_create_user_config( method _build_system_prompt (line 432) | def _build_system_prompt( method _build_base_system_prompt (line 466) | def _build_base_system_prompt( method _build_memory_context (line 482) | def _build_memory_context( method _build_enhance_system_prompt (line 507) | def _build_enhance_system_prompt( method _extract_references_from_response (line 532) | def _extract_references_from_response(self, response: str) -> tuple[st... method _extract_struct_data_from_history (line 566) | def _extract_struct_data_from_history(self, chat_data: list[dict]) -> ... method _chunk_response_with_tiktoken (line 594) | def _chunk_response_with_tiktoken( method _send_message_to_scheduler (line 621) | def _send_message_to_scheduler( method _post_chat_processing (line 646) | async def _post_chat_processing( method _start_post_chat_processing (line 738) | def _start_post_chat_processing( method _filter_memories_by_threshold (line 820) | def _filter_memories_by_threshold( method register_mem_cube (line 855) | def register_mem_cube( method user_register (line 917) | def user_register( method _get_further_suggestion (line 997) | def _get_further_suggestion(self, message: MessageList | None = None) ... method get_suggestion_query (line 1011) | def get_suggestion_query( method chat (line 1042) | def chat( method chat_with_references (line 1111) | def chat_with_references( method get_all (line 1277) | def get_all( method _get_subgraph (line 1367) | def _get_subgraph( method get_subgraph (line 1382) | def get_subgraph( method search (line 1429) | def search( method add (line 1494) | def add( method list_users (line 1535) | def list_users(self) -> list: method get_user_info (line 1539) | def get_user_info(self, user_id: str) -> dict: method share_cube_with_user (line 1549) | def share_cube_with_user(self, cube_id: str, owner_user_id: str, targe... method clear_user_chat_history (line 1558) | def clear_user_chat_history(self, user_id: str) -> None: method update_user_config (line 1565) | def update_user_config(self, user_id: str, config: MOSConfig) -> bool: method get_user_config (line 1588) | def get_user_config(self, user_id: str) -> MOSConfig | None: method get_active_user_count (line 1599) | def get_active_user_count(self) -> int: method get_user_instance_info (line 1603) | def get_user_instance_info(self) -> dict[str, Any]: FILE: src/memos/mem_os/product_server.py class MOSServer (line 23) | class MOSServer: method __init__ (line 24) | def __init__( method chat (line 34) | def chat( method add (line 102) | def add( method search (line 127) | def search( method _filter_memories_by_threshold (line 135) | def _filter_memories_by_threshold( method _build_base_system_prompt (line 170) | def _build_base_system_prompt( method _build_system_prompt (line 186) | def _build_system_prompt( method _build_memory_context (line 222) | def _build_memory_context( method _extract_references_from_response (line 247) | def _extract_references_from_response(self, response: str) -> tuple[st... method _post_chat_processing (line 281) | async def _post_chat_processing( method _start_post_chat_processing (line 372) | def _start_post_chat_processing( FILE: src/memos/mem_os/utils/default_config.py function get_default_config (line 18) | def get_default_config( function get_default_cube_config (line 131) | def get_default_cube_config( function get_default (line 274) | def get_default( function get_simple_config (line 331) | def get_simple_config( FILE: src/memos/mem_os/utils/format_utils.py function extract_node_name (line 13) | def extract_node_name(memory: str) -> str: function analyze_tree_structure_enhanced (line 28) | def analyze_tree_structure_enhanced(nodes: list[dict], edges: list[dict]... function calculate_enhanced_quality (line 127) | def calculate_enhanced_quality( function sample_nodes_with_type_balance (line 213) | def sample_nodes_with_type_balance( function sample_by_enhanced_subtree_quality (line 344) | def sample_by_enhanced_subtree_quality( function select_best_nodes_from_subtree (line 421) | def select_best_nodes_from_subtree( function sample_nodes_by_importance (line 471) | def sample_nodes_by_importance( function convert_graph_to_tree_forworkmem (line 496) | def convert_graph_to_tree_forworkmem( function print_tree_structure (line 645) | def print_tree_structure(node: dict[str, Any], level: int = 0, max_level... function analyze_final_tree_quality (line 677) | def analyze_final_tree_quality(tree_data: dict[str, Any]) -> dict: function print_tree_analysis (line 868) | def print_tree_analysis(tree_data: dict[str, Any]): function remove_embedding_recursive (line 972) | def remove_embedding_recursive(memory_info: dict) -> Any: function remove_embedding_from_memory_items (line 992) | def remove_embedding_from_memory_items(memory_items: list[Any]) -> list[... function sort_children_by_memory_type (line 1008) | def sort_children_by_memory_type(children: list[dict[str, Any]]) -> list... function extract_all_ids_from_tree (line 1030) | def extract_all_ids_from_tree(tree_node): function filter_nodes_by_tree_ids (line 1054) | def filter_nodes_by_tree_ids(tree_data, nodes_data): function convert_activation_memory_to_serializable (line 1075) | def convert_activation_memory_to_serializable( function convert_activation_memory_summary (line 1155) | def convert_activation_memory_summary(act_mem_items: list[KVCacheItem]) ... function detect_and_remove_duplicate_ids (line 1205) | def detect_and_remove_duplicate_ids(tree_node: dict[str, Any]) -> dict[s... function validate_tree_structure (line 1268) | def validate_tree_structure(tree_node: dict[str, Any]) -> dict[str, Any]: function ensure_unique_tree_ids (line 1343) | def ensure_unique_tree_ids(tree_result: dict[str, Any]) -> dict[str, Any]: function clean_json_response (line 1393) | def clean_json_response(response: str) -> str: FILE: src/memos/mem_os/utils/reference_utils.py function split_continuous_references (line 6) | def split_continuous_references(text: str) -> str: function process_streaming_references_complete (line 50) | def process_streaming_references_complete(text_buffer: str) -> tuple[str... function prepare_reference_data (line 141) | def prepare_reference_data(memories_list: list[TextualMemoryItem]) -> li... FILE: src/memos/mem_reader/base.py class BaseMemReader (line 13) | class BaseMemReader(ABC): method __init__ (line 21) | def __init__(self, config: BaseMemReaderConfig): method set_graph_db (line 25) | def set_graph_db(self, graph_db: "BaseGraphDB | None") -> None: method set_searcher (line 38) | def set_searcher(self, searcher: "Searcher | None") -> None: method get_memory (line 44) | def get_memory( method fine_transfer_simple_mem (line 50) | def fine_transfer_simple_mem( FILE: src/memos/mem_reader/factory.py class MemReaderFactory (line 16) | class MemReaderFactory(BaseMemReader): method from_config (line 27) | def from_config( FILE: src/memos/mem_reader/memory.py class Memory (line 7) | class Memory: method __init__ (line 10) | def __init__( method to_dict (line 52) | def to_dict(self) -> dict[str, Any]: method update_user_memory (line 65) | def update_user_memory( method add_qa_batch (line 154) | def add_qa_batch( method add_document_chunk_group (line 189) | def add_document_chunk_group( method process_qa_pair_summaries (line 222) | def process_qa_pair_summaries(self, llm: BaseLLM | None = None) -> None: method process_document_summaries (line 260) | def process_document_summaries(self, llm=None) -> str: FILE: src/memos/mem_reader/multi_modal_struct.py class MultiModalStructMemReader (line 31) | class MultiModalStructMemReader(SimpleStructMemReader): method __init__ (line 35) | def __init__(self, config: MultiModalStructMemReaderConfig): method _split_large_memory_item (line 78) | def _split_large_memory_item( method _concat_multi_modal_memories (line 141) | def _concat_multi_modal_memories( method _build_window_from_items (line 291) | def _build_window_from_items( method _get_llm_response (line 398) | def _get_llm_response( method _determine_prompt_type (line 484) | def _determine_prompt_type(self, sources: list) -> str: method _get_maybe_merged_memory (line 505) | def _get_maybe_merged_memory( method _merge_memories_with_llm (line 623) | def _merge_memories_with_llm( method _process_string_fine (line 672) | def _process_string_fine( method _relate_preceding_following_rawfile_memories (line 840) | def _relate_preceding_following_rawfile_memories( method _get_llm_tool_trajectory_response (line 895) | def _get_llm_tool_trajectory_response(self, mem_str: str) -> dict: method _process_tool_trajectory_fine (line 913) | def _process_tool_trajectory_fine( method _process_multi_modal_data (line 970) | def _process_multi_modal_data( method _process_transfer_multi_modal_data (line 1088) | def _process_transfer_multi_modal_data( method _expand_multimodal_messages (line 1170) | def _expand_multimodal_messages(messages: list) -> list: method _is_file_url_only_item (line 1237) | def _is_file_url_only_item(item: TextualMemoryItem) -> bool: method get_scene_data_info (line 1253) | def get_scene_data_info(self, scene_data: list, type: str) -> list[lis... method _read_memory (line 1268) | def _read_memory( method fine_transfer_simple_mem (line 1297) | def fine_transfer_simple_mem( FILE: src/memos/mem_reader/read_multi_modal/assistant_parser.py class AssistantParser (line 28) | class AssistantParser(BaseMessageParser): method __init__ (line 35) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 45) | def create_source( method rebuild_from_source (line 205) | def rebuild_from_source( method parse_fast (line 211) | def parse_fast( method parse_fine (line 317) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/base.py function _derive_key (line 27) | def _derive_key(text: str, max_len: int = 80) -> str: function _extract_text_from_content (line 35) | def _extract_text_from_content(content: Any) -> str: function _add_lang_to_source (line 62) | def _add_lang_to_source(source: SourceMessage, content: str | None = Non... class BaseMessageParser (line 81) | class BaseMessageParser(ABC): method __init__ (line 84) | def __init__(self, embedder, llm=None): method create_source (line 97) | def create_source( method rebuild_from_source (line 118) | def rebuild_from_source( method parse_fast (line 134) | def parse_fast( method parse_fine (line 207) | def parse_fine( method parse (line 225) | def parse( method _split_text (line 252) | def _split_text(self, text: str, is_markdown: bool = False) -> list[str]: FILE: src/memos/mem_reader/read_multi_modal/file_content_parser.py class FileContentParser (line 50) | class FileContentParser(BaseMessageParser): method _get_doc_llm_response (line 53) | def _get_doc_llm_response( method _handle_url (line 100) | def _handle_url(self, url_str: str, filename: str) -> tuple[str, str |... method _is_oss_md (line 130) | def _is_oss_md(self, url: str) -> bool: method _is_base64 (line 141) | def _is_base64(self, data: str) -> bool: method _handle_base64 (line 151) | def _handle_base64(self, data: str) -> str: method _handle_local (line 156) | def _handle_local(self, data: str) -> str: method _process_single_image (line 161) | def _process_single_image( method _extract_and_process_images (line 234) | def _extract_and_process_images( method __init__ (line 323) | def __init__( method create_source (line 360) | def create_source( method rebuild_from_source (line 393) | def rebuild_from_source( method _parse_file (line 404) | def _parse_file(self, file_info: dict[str, Any]) -> str: method parse_fast (line 437) | def parse_fast( method parse_fine (line 617) | def parse_fine( method _extract_markdown_headers (line 1018) | def _extract_markdown_headers(self, text: str) -> dict[int, dict]: method _get_header_context (line 1053) | def _get_header_context( FILE: src/memos/mem_reader/read_multi_modal/image_parser.py class ImageParser (line 30) | class ImageParser(BaseMessageParser): method __init__ (line 33) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 43) | def create_source( method rebuild_from_source (line 73) | def rebuild_from_source( method parse_fast (line 98) | def parse_fast( method parse_fine (line 109) | def parse_fine( method _parse_json_result (line 300) | def _parse_json_result(self, response_text: str) -> dict: method _create_memory_item (line 348) | def _create_memory_item( FILE: src/memos/mem_reader/read_multi_modal/multi_modal_parser.py class MultiModalParser (line 33) | class MultiModalParser: method __init__ (line 36) | def __init__( method _get_parser (line 100) | def _get_parser(self, message: Any) -> BaseMessageParser | None: method parse (line 137) | def parse( method parse_batch (line 175) | def parse_batch( method process_transfer (line 201) | def process_transfer( FILE: src/memos/mem_reader/read_multi_modal/string_parser.py class StringParser (line 27) | class StringParser(BaseMessageParser): method __init__ (line 35) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 45) | def create_source( method rebuild_from_source (line 57) | def rebuild_from_source( method parse_fast (line 63) | def parse_fast( method parse_fine (line 139) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/system_parser.py class SystemParser (line 31) | class SystemParser(BaseMessageParser): method __init__ (line 34) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 44) | def create_source( method rebuild_from_source (line 74) | def rebuild_from_source( method parse_fast (line 87) | def parse_fast( method parse_fine (line 279) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/text_content_parser.py class TextContentParser (line 29) | class TextContentParser(BaseMessageParser): method __init__ (line 37) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 47) | def create_source( method rebuild_from_source (line 63) | def rebuild_from_source( method parse_fast (line 69) | def parse_fast( method parse_fine (line 132) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/tool_parser.py class ToolParser (line 28) | class ToolParser(BaseMessageParser): method __init__ (line 31) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 41) | def create_source( method rebuild_from_source (line 149) | def rebuild_from_source( method parse_fast (line 155) | def parse_fast( method parse_fine (line 214) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/user_parser.py class UserParser (line 26) | class UserParser(BaseMessageParser): method __init__ (line 32) | def __init__(self, embedder: BaseEmbedder, llm: BaseLLM | None = None): method create_source (line 42) | def create_source( method rebuild_from_source (line 151) | def rebuild_from_source( method parse_fast (line 157) | def parse_fast( method parse_fine (line 224) | def parse_fine( FILE: src/memos/mem_reader/read_multi_modal/utils.py function parse_json_result (line 52) | def parse_json_result(response_text: str) -> dict: function get_parser (line 151) | def get_parser() -> Any: function get_text_splitter (line 161) | def get_text_splitter( function extract_role (line 184) | def extract_role(message: dict[str, Any]) -> str: function _is_message_list (line 189) | def _is_message_list(obj): function coerce_scene_data (line 207) | def coerce_scene_data(scene_data: SceneDataInput, scene_type: str) -> li... function detect_lang (line 334) | def detect_lang(text): FILE: src/memos/mem_reader/read_pref_memory/process_preference_memory.py function _extract_explicit_preference (line 29) | def _extract_explicit_preference(qa_pair_str: str, llm) -> list[dict[str... function _extract_implicit_preference (line 55) | def _extract_implicit_preference(qa_pair_str: str, llm) -> list[dict[str... function _create_preference_memory_item (line 84) | def _create_preference_memory_item( function _process_single_chunk_explicit (line 152) | def _process_single_chunk_explicit( function _process_single_chunk_implicit (line 183) | def _process_single_chunk_implicit( function process_preference_fine (line 214) | def process_preference_fine( FILE: src/memos/mem_reader/read_skill_memory/process_skill_memory.py function _generate_content_by_llm (line 55) | def _generate_content_by_llm(llm: BaseLLM, prompt_template: str, **kwarg... function _batch_extract_skills (line 73) | def _batch_extract_skills( function _batch_generate_skill_details (line 108) | def _batch_generate_skill_details( function add_id_to_mysql (line 255) | def add_id_to_mysql(memory_id: str, mem_cube_id: str): function create_oss_client (line 289) | def create_oss_client(oss_config: dict[str, Any] | None = None) -> Any: function _reconstruct_messages_from_memory_items (line 304) | def _reconstruct_messages_from_memory_items(memory_items: list[TextualMe... function _preprocess_extract_messages (line 328) | def _preprocess_extract_messages( function _add_index_to_message (line 339) | def _add_index_to_message(messages: MessageList) -> MessageList: function _split_task_chunk_by_llm (line 345) | def _split_task_chunk_by_llm(llm: BaseLLM, messages: MessageList) -> dic... function _extract_skill_memory_by_llm (line 393) | def _extract_skill_memory_by_llm( function _extract_skill_memory_by_llm_md (line 489) | def _extract_skill_memory_by_llm_md( function _recall_related_skill_memories (line 621) | def _recall_related_skill_memories( function _rewrite_query (line 643) | def _rewrite_query(task_type: str, messages: MessageList, llm: BaseLLM, ... function _upload_skills (line 683) | def _upload_skills( function _delete_skills (line 736) | def _delete_skills( function _write_skills_to_file (line 768) | def _write_skills_to_file( function create_skill_memory_item (line 905) | def create_skill_memory_item( function _skill_init (line 967) | def _skill_init(skills_repo_backend, oss_config, skills_dir_config): function _get_skill_file_storage_location (line 1000) | def _get_skill_file_storage_location() -> str: function process_skill_memory_fine (line 1014) | def process_skill_memory_fine( FILE: src/memos/mem_reader/simple_struct.py class ParserFactory (line 63) | class ParserFactory: method from_config (line 67) | def from_config(_config): function _build_node (line 104) | def _build_node(idx, message, info, source_info, llm, parse_json_result,... class SimpleStructMemReader (line 166) | class SimpleStructMemReader(BaseMemReader, ABC): method __init__ (line 169) | def __init__(self, config: SimpleStructMemReaderConfig): method set_graph_db (line 198) | def set_graph_db(self, graph_db: "BaseGraphDB | None") -> None: method set_searcher (line 201) | def set_searcher(self, searcher: "Searcher | None") -> None: method _make_memory_item (line 204) | def _make_memory_item( method _safe_generate (line 242) | def _safe_generate(self, messages: list[dict]) -> str | None: method _safe_parse (line 249) | def _safe_parse(self, text: str | None) -> dict | None: method _get_llm_response (line 258) | def _get_llm_response(self, mem_str: str, custom_tags: list[str] | Non... method _iter_chat_windows (line 293) | def _iter_chat_windows(self, scene_data_info, max_tokens=None, overlap... method _process_chat_data (line 337) | def _process_chat_data(self, scene_data_info, info, **kwargs): method _process_transfer_chat_data (line 409) | def _process_transfer_chat_data( method get_memory (line 457) | def get_memory( method rewrite_memories (line 512) | def rewrite_memories( method filter_hallucination_in_memories (line 581) | def filter_hallucination_in_memories( method _read_memory (line 637) | def _read_memory( method fine_transfer_simple_mem (line 727) | def fine_transfer_simple_mem( method get_scene_data_info (line 762) | def get_scene_data_info(self, scene_data: list, type: str) -> list[lis... method _process_doc_data (line 849) | def _process_doc_data(self, scene_data_info, info, **kwargs): method _process_transfer_doc_data (line 952) | def _process_transfer_doc_data( FILE: src/memos/mem_reader/strategy_struct.py class StrategyStructMemReader (line 38) | class StrategyStructMemReader(SimpleStructMemReader, ABC): method __init__ (line 41) | def __init__(self, config: StrategyStructMemReaderConfig): method _get_llm_response (line 45) | def _get_llm_response(self, mem_str: str, custom_tags: list[str] | Non... method get_scene_data_info (line 79) | def get_scene_data_info(self, scene_data: list, type: str) -> list[str]: FILE: src/memos/mem_reader/utils.py function count_tokens_text (line 17) | def count_tokens_text(s: str) -> int: function count_tokens_text (line 21) | def count_tokens_text(s: str) -> int: function derive_key (line 30) | def derive_key(text: str, max_len: int = 80) -> str: function parse_json_result (line 38) | def parse_json_result(response_text: str) -> dict: function parse_rewritten_response (line 80) | def parse_rewritten_response(text: str) -> tuple[bool, dict[int, dict]]: function parse_keep_filter_response (line 124) | def parse_keep_filter_response(text: str) -> tuple[bool, dict[int, dict]]: FILE: src/memos/mem_scheduler/analyzer/api_analyzer.py class APIAnalyzerForScheduler (line 25) | class APIAnalyzerForScheduler: method __init__ (line 33) | def __init__( method _get_connection (line 68) | def _get_connection(self) -> http.client.HTTPConnection | http.client.... method _close_connection (line 82) | def _close_connection(self): method search (line 88) | def search( method _search_with_requests (line 115) | def _search_with_requests(self, payload: dict[str, Any]) -> dict[str, ... method _search_with_http_client (line 148) | def _search_with_http_client(self, payload: dict[str, Any]) -> dict[st... method add (line 184) | def add( method _add_with_requests (line 210) | def _add_with_requests(self, payload: dict[str, Any]) -> dict[str, Any]: method _add_with_http_client (line 243) | def _add_with_http_client(self, payload: dict[str, Any]) -> dict[str, ... method update_base_url (line 279) | def update_base_url(self, new_base_url: str): method update_headers (line 297) | def update_headers(self, headers: dict[str, str]): method __del__ (line 307) | def __del__(self): method analyze_service (line 311) | def analyze_service(self): method analyze_features (line 335) | def analyze_features(self): class DirectSearchMemoriesAnalyzer (line 349) | class DirectSearchMemoriesAnalyzer: method __init__ (line 355) | def __init__(self): method start_conversation (line 373) | def start_conversation(self, user_id="test_user", mem_cube_id="test_cu... method add_to_conversation (line 394) | def add_to_conversation(self, user_message, assistant_message=None): method search_in_conversation (line 435) | def search_in_conversation(self, query, mode="fast", top_k=10, include... method test_continuous_conversation (line 484) | def test_continuous_conversation(self, mode=SearchMode.MIXTURE): method create_test_search_request (line 560) | def create_test_search_request( method create_test_add_request (line 595) | def create_test_add_request( method run_all_tests (line 646) | def run_all_tests(self, mode=SearchMode.MIXTURE): FILE: src/memos/mem_scheduler/analyzer/eval_analyzer.py class EvalAnalyzer (line 27) | class EvalAnalyzer: method __init__ (line 35) | def __init__( method load_json_file (line 65) | def load_json_file(self, filepath: str) -> Any: method extract_bad_cases (line 77) | def extract_bad_cases(self, judged_file: str, search_results_file: str... function main (line 144) | def main(version_name="ct-1111"): FILE: src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py class MOSForTestScheduler (line 19) | class MOSForTestScheduler(MOS): method __init__ (line 22) | def __init__(self, config: MOSConfig): method _str_memories (line 26) | def _str_memories(self, memories: list[str]) -> str: method _analyze_memory_helpfulness (line 32) | def _analyze_memory_helpfulness( method _batch_assess_memories (line 168) | def _batch_assess_memories(self, query: str, memories: list, context: ... method _assess_memory_helpfulness (line 247) | def _assess_memory_helpfulness(self, query: str, memory: str) -> dict: method _fallback_memory_assessment (line 300) | def _fallback_memory_assessment(self, query: str, memory: str) -> dict: method _assess_ranking_quality (line 356) | def _assess_ranking_quality(self, rank: int, helpfulness: int) -> str: method chat (line 397) | def chat(self, query: str, user_id: str | None = None) -> str: method get_memory_helpfulness_summary (line 530) | def get_memory_helpfulness_summary(self) -> dict: FILE: src/memos/mem_scheduler/analyzer/scheduler_for_eval.py class SchedulerForEval (line 24) | class SchedulerForEval(GeneralScheduler): method __init__ (line 33) | def __init__(self, config): method time_it (line 45) | def time_it(func_name: str | None = None): method get_timer_summary (line 93) | def get_timer_summary(self) -> str: method clear_timer_cache (line 109) | def clear_timer_cache(self): method update_working_memory_for_eval (line 114) | def update_working_memory_for_eval( method evaluate_memory_answer_ability (line 198) | def evaluate_memory_answer_ability( method search_for_eval (line 251) | def search_for_eval( FILE: src/memos/mem_scheduler/base_mixins/memory_ops.py class BaseSchedulerMemoryMixin (line 19) | class BaseSchedulerMemoryMixin: method transform_working_memories_to_monitors (line 20) | def transform_working_memories_to_monitors( method replace_working_memory (line 57) | def replace_working_memory( method update_activation_memory (line 191) | def update_activation_memory( method update_activation_memory_periodically (line 210) | def update_activation_memory_periodically( FILE: src/memos/mem_scheduler/base_mixins/queue_ops.py class BaseSchedulerQueueMixin (line 32) | class BaseSchedulerQueueMixin: method submit_messages (line 33) | def submit_messages(self, messages: ScheduleMessageItem | list[Schedul... method _message_consumer (line 144) | def _message_consumer(self) -> None: method _monitor_loop (line 213) | def _monitor_loop(self): method start (line 238) | def start(self) -> None: method start_background_monitor (line 248) | def start_background_monitor(self): method start_consumer (line 257) | def start_consumer(self) -> None: method stop_consumer (line 281) | def stop_consumer(self) -> None: method stop (line 312) | def stop(self) -> None: method handlers (line 331) | def handlers(self) -> dict[str, Callable]: method register_handlers (line 338) | def register_handlers( method unregister_handlers (line 354) | def unregister_handlers(self, labels: list[str]) -> dict[str, bool]: method get_running_tasks (line 361) | def get_running_tasks(self, filter_func: Callable | None = None) -> di... method get_tasks_status (line 386) | def get_tasks_status(self): method print_tasks_status (line 389) | def print_tasks_status(self, tasks_status: dict | None = None) -> None: method _gather_queue_stats (line 392) | def _gather_queue_stats(self) -> dict: FILE: src/memos/mem_scheduler/base_mixins/web_log_ops.py class BaseSchedulerWebLogMixin (line 18) | class BaseSchedulerWebLogMixin: method _submit_web_logs (line 19) | def _submit_web_logs( method get_web_log_messages (line 56) | def get_web_log_messages(self) -> list[dict]: FILE: src/memos/mem_scheduler/base_scheduler.py class BaseScheduler (line 69) | class BaseScheduler( method __init__ (line 79) | def __init__(self, config: BaseSchedulerConfig): method init_mem_cube (line 175) | def init_mem_cube( method initialize_modules (line 202) | def initialize_modules( method _cleanup_on_init_failure (line 276) | def _cleanup_on_init_failure(self): method mem_cube (line 285) | def mem_cube(self) -> BaseMemCube: method status_tracker (line 299) | def status_tracker(self) -> TaskStatusTracker | None: method status_tracker (line 320) | def status_tracker(self, value: TaskStatusTracker | None) -> None: method feedback_server (line 332) | def feedback_server(self) -> SimpleMemFeedback: method feedback_server (line 346) | def feedback_server(self, value: SimpleMemFeedback) -> None: method mem_cube (line 350) | def mem_cube(self, value: BaseMemCube) -> None: method mem_cubes (line 356) | def mem_cubes(self) -> dict[str, BaseMemCube]: method mem_cubes (line 366) | def mem_cubes(self, value: dict[str, BaseMemCube]) -> None: method update_activation_memory (line 394) | def update_activation_memory( method update_activation_memory_periodically (line 417) | def update_activation_memory_periodically( FILE: src/memos/mem_scheduler/general_modules/api_misc.py class SchedulerAPIModule (line 17) | class SchedulerAPIModule(BaseSchedulerModule): method __init__ (line 18) | def __init__(self, window_size: int | None = None, history_memory_turn... method get_search_history_manager (line 24) | def get_search_history_manager(self, user_id: str, mem_cube_id: str) -... method sync_search_data (line 39) | def sync_search_data( method get_history_memories (line 111) | def get_history_memories( FILE: src/memos/mem_scheduler/general_modules/base.py class BaseSchedulerModule (line 13) | class BaseSchedulerModule: method __init__ (line 14) | def __init__(self): method load_template (line 21) | def load_template(self, template_name: str) -> str: method build_prompt (line 27) | def build_prompt(self, template_name: str, **kwargs) -> str: method _build_system_prompt (line 33) | def _build_system_prompt(self, memories: list | None = None) -> str: method get_mem_cube (line 50) | def get_mem_cube(self, mem_cube_id: str) -> GeneralMemCube: method chat_llm (line 55) | def chat_llm(self) -> BaseLLM: method chat_llm (line 60) | def chat_llm(self, value: BaseLLM) -> None: method process_llm (line 65) | def process_llm(self) -> BaseLLM: method process_llm (line 69) | def process_llm(self, value: BaseLLM) -> None: method mem_cube (line 73) | def mem_cube(self) -> GeneralMemCube: method mem_cube (line 78) | def mem_cube(self, value: GeneralMemCube) -> None: FILE: src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py function build_graph_db_config (line 37) | def build_graph_db_config(user_id: str = "default") -> dict[str, Any]: function build_vec_db_config (line 65) | def build_vec_db_config() -> dict[str, Any]: function build_llm_config (line 80) | def build_llm_config() -> dict[str, Any]: function build_chat_llm_config (line 95) | def build_chat_llm_config() -> list[dict[str, Any]]: function build_embedder_config (line 121) | def build_embedder_config() -> dict[str, Any]: function build_mem_reader_config (line 131) | def build_mem_reader_config() -> dict[str, Any]: function build_reranker_config (line 143) | def build_reranker_config() -> dict[str, Any]: function build_feedback_reranker_config (line 153) | def build_feedback_reranker_config() -> dict[str, Any]: function build_internet_retriever_config (line 163) | def build_internet_retriever_config() -> dict[str, Any]: function _get_default_memory_size (line 173) | def _get_default_memory_size(cube_config: Any) -> dict[str, int]: function _init_chat_llms (line 193) | def _init_chat_llms(chat_llm_configs: list[dict]) -> dict[str, Any]: function init_components (line 225) | def init_components() -> dict[str, Any]: FILE: src/memos/mem_scheduler/general_modules/misc.py class EnvConfigMixin (line 21) | class EnvConfigMixin(Generic[T]): method get_env_prefix (line 27) | def get_env_prefix(cls) -> str: method from_env (line 47) | def from_env(cls: type[T]) -> T: method _parse_env_value (line 81) | def _parse_env_value(cls, value: str, target_type: type) -> Any: method print_env_mapping (line 92) | def print_env_mapping(cls) -> None: class DictConversionMixin (line 121) | class DictConversionMixin: method serialize_datetime (line 128) | def serialize_datetime(self, dt: datetime | None, _info) -> str | None: method to_dict (line 138) | def to_dict(self) -> dict: method to_json (line 149) | def to_json(self, **kwargs) -> str: method from_json (line 158) | def from_json(cls: type[BaseModelType], json_str: str) -> BaseModelType: method from_dict (line 170) | def from_dict(cls: type[BaseModelType], data: dict) -> BaseModelType: method __str__ (line 185) | def __str__(self) -> str: class AutoDroppingQueue (line 198) | class AutoDroppingQueue(Queue[T]): method __init__ (line 201) | def __init__(self, maxsize: int = 0): method put (line 207) | def put(self, item: T, block: bool = False, timeout: float | None = No... method get (line 235) | def get( method get_nowait (line 265) | def get_nowait(self, batch_size: int | None = None) -> list[T]: method get_queue_content_without_pop (line 285) | def get_queue_content_without_pop(self) -> list[T]: method qsize (line 291) | def qsize(self) -> int: method clear (line 299) | def clear(self) -> None: FILE: src/memos/mem_scheduler/general_modules/scheduler_logger.py class SchedulerLoggerModule (line 35) | class SchedulerLoggerModule(BaseSchedulerModule): method __init__ (line 36) | def __init__(self): method create_autofilled_log_item (line 43) | def create_autofilled_log_item( method create_event_log (line 132) | def create_event_log( method _map_memcube_name (line 161) | def _map_memcube_name(self, mem_cube_id: str) -> str: method log_working_memory_replacement (line 169) | def log_working_memory_replacement( method log_activation_memory_update (line 233) | def log_activation_memory_update( method log_adding_memory (line 289) | def log_adding_memory( method log_updating_memory (line 315) | def log_updating_memory( method log_archiving_memory (line 337) | def log_archiving_memory( method validate_schedule_message (line 359) | def validate_schedule_message(self, message: ScheduleMessageItem, labe... method validate_schedule_messages (line 375) | def validate_schedule_messages(self, messages: list[ScheduleMessageIte... FILE: src/memos/mem_scheduler/general_modules/task_threads.py class ThreadManager (line 18) | class ThreadManager(BaseSchedulerModule): method __init__ (line 30) | def __init__(self, thread_pool_executor=None): method worker (line 45) | def worker( method run_multiple_tasks (line 91) | def run_multiple_tasks( method run_with_thread_pool (line 182) | def run_with_thread_pool( method run_race (line 262) | def run_race( FILE: src/memos/mem_scheduler/general_scheduler.py class GeneralScheduler (line 16) | class GeneralScheduler(BaseScheduler): method __init__ (line 17) | def __init__(self, config: GeneralSchedulerConfig): FILE: src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py class ActivationMemoryManager (line 18) | class ActivationMemoryManager: method __init__ (line 19) | def __init__( method update_activation_memory (line 31) | def update_activation_memory( method update_activation_memory_periodically (line 112) | def update_activation_memory_periodically( FILE: src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py class EnhancementPipeline (line 23) | class EnhancementPipeline: method __init__ (line 24) | def __init__(self, process_llm, config, build_prompt: Callable[..., st... method evaluate_memory_answer_ability (line 35) | def evaluate_memory_answer_ability( method _build_enhancement_prompt (line 67) | def _build_enhancement_prompt(self, query_history: list[str], batch_te... method _process_enhancement_batch (line 88) | def _process_enhancement_batch( method _split_batches (line 184) | def _split_batches( method recall_for_missing_memories (line 196) | def recall_for_missing_memories(self, query: str, memories: list[str])... method enhance_memories_with_query (line 219) | def enhance_memories_with_query( FILE: src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py class FilterPipeline (line 12) | class FilterPipeline: method __init__ (line 13) | def __init__(self, process_llm, config): method filter_unrelated_memories (line 16) | def filter_unrelated_memories( method filter_redundant_memories (line 21) | def filter_redundant_memories( method filter_unrelated_and_redundant_memories (line 26) | def filter_unrelated_and_redundant_memories( FILE: src/memos/mem_scheduler/memory_manage_modules/memory_filter.py class MemoryFilter (line 12) | class MemoryFilter(BaseSchedulerModule): method __init__ (line 13) | def __init__(self, process_llm: BaseLLM, config: BaseSchedulerConfig): method filter_unrelated_memories (line 18) | def filter_unrelated_memories( method filter_redundant_memories (line 105) | def filter_redundant_memories( method filter_unrelated_and_redundant_memories (line 205) | def filter_unrelated_and_redundant_memories( FILE: src/memos/mem_scheduler/memory_manage_modules/post_processor.py class MemoryPostProcessor (line 33) | class MemoryPostProcessor(BaseSchedulerModule): method __init__ (line 67) | def __init__(self, process_llm: BaseLLM, config: BaseSchedulerConfig): method evaluate_memory_answer_ability (line 95) | def evaluate_memory_answer_ability( method rerank_memories (line 145) | def rerank_memories( method process_and_rerank_memories (line 198) | def process_and_rerank_memories( method filter_unrelated_memories (line 273) | def filter_unrelated_memories( method filter_redundant_memories (line 285) | def filter_redundant_memories( method filter_unrelated_and_redundant_memories (line 297) | def filter_unrelated_and_redundant_memories( FILE: src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py class RerankPipeline (line 21) | class RerankPipeline: method __init__ (line 22) | def __init__( method rerank_memories (line 34) | def rerank_memories( method process_and_rerank_memories (line 70) | def process_and_rerank_memories( FILE: src/memos/mem_scheduler/memory_manage_modules/retriever.py class SchedulerRetriever (line 20) | class SchedulerRetriever(BaseSchedulerModule): method __init__ (line 21) | def __init__(self, process_llm, config): method evaluate_memory_answer_ability (line 44) | def evaluate_memory_answer_ability( method search (line 53) | def search( method enhance_memories_with_query (line 73) | def enhance_memories_with_query( method recall_for_missing_memories (line 83) | def recall_for_missing_memories(self, query: str, memories: list[str])... method rerank_memories (line 89) | def rerank_memories( method process_and_rerank_memories (line 98) | def process_and_rerank_memories( method filter_unrelated_memories (line 112) | def filter_unrelated_memories( method filter_redundant_memories (line 122) | def filter_redundant_memories( method filter_unrelated_and_redundant_memories (line 132) | def filter_unrelated_and_redundant_memories( FILE: src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py class SearchPipeline (line 15) | class SearchPipeline: method search (line 16) | def search( FILE: src/memos/mem_scheduler/memory_manage_modules/search_service.py class SchedulerSearchService (line 19) | class SchedulerSearchService: method __init__ (line 42) | def __init__(self, searcher: Searcher | None = None): method search (line 52) | def search( method _search_with_searcher (line 162) | def _search_with_searcher( method _search_with_text_mem (line 234) | def _search_with_text_mem( FILE: src/memos/mem_scheduler/monitors/dispatcher_monitor.py class SchedulerDispatcherMonitor (line 23) | class SchedulerDispatcherMonitor(BaseSchedulerModule): method __init__ (line 26) | def __init__(self, config: BaseSchedulerConfig): method initialize (line 55) | def initialize(self, dispatcher: SchedulerDispatcher): method register_pool (line 64) | def register_pool( method unregister_pool (line 99) | def unregister_pool(self, name: str) -> bool: method _monitor_loop (line 118) | def _monitor_loop(self) -> None: method _check_pools_health (line 131) | def _check_pools_health(self) -> None: method _check_pool_health (line 160) | def _check_pool_health( method _restart_pool (line 242) | def _restart_pool(self, name: str, pool_info: dict) -> None: method get_status (line 298) | def get_status(self, name: str | None = None) -> dict: method __enter__ (line 313) | def __enter__(self): method __exit__ (line 318) | def __exit__(self, exc_type, exc_val, exc_tb): method start (line 322) | def start(self) -> bool: method stop (line 341) | def stop(self) -> None: FILE: src/memos/mem_scheduler/monitors/general_monitor.py class SchedulerGeneralMonitor (line 38) | class SchedulerGeneralMonitor(BaseSchedulerModule): method __init__ (line 41) | def __init__( method extract_query_keywords (line 84) | def extract_query_keywords(self, query: str) -> list: method register_query_monitor_if_not_exists (line 103) | def register_query_monitor_if_not_exists( method register_memory_manager_if_not_exists (line 133) | def register_memory_manager_if_not_exists( method update_working_memory_monitors (line 196) | def update_working_memory_monitors( method update_activation_memory_monitors (line 234) | def update_activation_memory_monitors( method timed_trigger (line 262) | def timed_trigger(self, last_time: datetime, interval_seconds: float) ... method get_monitor_memories (line 270) | def get_monitor_memories( method get_monitors_info (line 315) | def get_monitors_info(self, user_id: str, mem_cube_id: str) -> dict[st... method detect_intent (line 343) | def detect_intent( method close (line 366) | def close(self): FILE: src/memos/mem_scheduler/monitors/task_schedule_monitor.py class TaskScheduleMonitor (line 11) | class TaskScheduleMonitor: method __init__ (line 20) | def __init__( method init_task_status (line 31) | def init_task_status() -> dict: method get_tasks_status (line 34) | def get_tasks_status(self) -> dict: method print_tasks_status (line 45) | def print_tasks_status(self, tasks_status: dict | None = None) -> None: method _get_local_tasks_status (line 151) | def _get_local_tasks_status(self) -> dict: method _get_redis_tasks_status (line 167) | def _get_redis_tasks_status(self) -> dict: FILE: src/memos/mem_scheduler/optimized_scheduler.py class OptimizedScheduler (line 37) | class OptimizedScheduler(GeneralScheduler): method __init__ (line 40) | def __init__(self, config: GeneralSchedulerConfig): method submit_memory_history_async_task (line 64) | def submit_memory_history_async_task( method search_memories (line 101) | def search_memories( method mix_search_memories (line 117) | def mix_search_memories( method update_search_memories_to_redis (line 209) | def update_search_memories_to_redis( method _api_mix_search_message_consumer (line 264) | def _api_mix_search_message_consumer(self, messages: list[ScheduleMess... method replace_working_memory (line 285) | def replace_working_memory( FILE: src/memos/mem_scheduler/orm_modules/api_redis_model.py class APIRedisDBManager (line 21) | class APIRedisDBManager: method __init__ (line 31) | def __init__( method _get_key_prefix (line 81) | def _get_key_prefix(self) -> str: method _get_data_key (line 89) | def _get_data_key(self) -> str: method _init_redis_client (line 97) | def _init_redis_client(self): method acquire_lock (line 136) | def acquire_lock(self, block: bool = True, **kwargs) -> bool: method release_locks (line 177) | def release_locks(self, **kwargs): method merge_items (line 187) | def merge_items( method sync_with_redis (line 284) | def sync_with_redis(self, size_limit: int | None = None) -> None: method save_to_db (line 326) | def save_to_db(self, obj_instance: Any) -> None: method load_from_db (line 339) | def load_from_db(self) -> Any | None: method from_env (line 361) | def from_env( method close (line 391) | def close(self): method load_redis_engine_from_env (line 403) | def load_redis_engine_from_env(env_file_path: str | None = None) -> Any: FILE: src/memos/mem_scheduler/orm_modules/base_model.py class DatabaseError (line 19) | class DatabaseError(Exception): class LockableORM (line 31) | class LockableORM(Base): class BaseDBManager (line 50) | class BaseDBManager(UserManager): method __init__ (line 58) | def __init__( method orm_class (line 90) | def orm_class(self) -> type[LockableORM]: method obj_class (line 100) | def obj_class(self) -> Any: method init_manager (line 108) | def init_manager(self, engine: Engine, user_id: str, mem_cube_id: str): method _create_table_with_error_handling (line 134) | def _create_table_with_error_handling(self, engine: Engine): method _get_session (line 167) | def _get_session(self) -> Session: method _serialize (line 171) | def _serialize(self, obj: T) -> str: method _deserialize (line 177) | def _deserialize(self, data: str, model_class: type[T]) -> T: method acquire_lock (line 183) | def acquire_lock(self, block: bool = True, **kwargs) -> bool: method release_locks (line 257) | def release_locks(self, user_id: str, mem_cube_id: str, **kwargs): method _get_primary_key (line 294) | def _get_primary_key(self) -> dict[str, Any]: method _increment_version_control (line 302) | def _increment_version_control(self, current_tag: str) -> str: method merge_items (line 321) | def merge_items(self, orm_instance, obj_instance, size_limit): method sync_with_orm (line 330) | def sync_with_orm(self, size_limit: int | None = None) -> None: method save_to_db (line 437) | def save_to_db(self, obj_instance) -> None: method load_from_db (line 496) | def load_from_db(self, acquire_lock: bool = False): method close (line 546) | def close(self): method create_default_sqlite_engine (line 567) | def create_default_sqlite_engine() -> Engine: method create_engine_from_db_path (line 595) | def create_engine_from_db_path(db_path: str) -> Engine: method create_mysql_db_path (line 610) | def create_mysql_db_path( method load_mysql_engine_from_env (line 641) | def load_mysql_engine_from_env(env_file_path: str | None = None) -> En... FILE: src/memos/mem_scheduler/orm_modules/monitor_models.py class MemoryMonitorManagerORM (line 24) | class MemoryMonitorManagerORM(LockableORM): class QueryMonitorQueueORM (line 37) | class QueryMonitorQueueORM(LockableORM): class DBManagerForMemoryMonitorManager (line 50) | class DBManagerForMemoryMonitorManager(BaseDBManager): method __init__ (line 57) | def __init__( method orm_class (line 81) | def orm_class(self) -> type[MemoryMonitorManagerORM]: method obj_class (line 85) | def obj_class(self) -> type[MemoryMonitorManager]: method merge_items (line 88) | def merge_items( class DBManagerForQueryMonitorQueue (line 165) | class DBManagerForQueryMonitorQueue(BaseDBManager): method __init__ (line 172) | def __init__( method orm_class (line 196) | def orm_class(self) -> type[QueryMonitorQueueORM]: method obj_class (line 200) | def obj_class(self) -> type[QueryMonitorQueue]: method merge_items (line 203) | def merge_items( FILE: src/memos/mem_scheduler/orm_modules/redis_model.py class SimpleListManager (line 23) | class SimpleListManager: method __init__ (line 26) | def __init__(self, items: list[str] | None = None): method to_json (line 29) | def to_json(self) -> str: method from_json (line 34) | def from_json(cls, json_str: str) -> "SimpleListManager": method add_item (line 39) | def add_item(self, item: str): method __len__ (line 43) | def __len__(self): method __str__ (line 46) | def __str__(self): class RedisLockableORM (line 50) | class RedisLockableORM: method __init__ (line 57) | def __init__(self, redis_client, user_id: str, mem_cube_id: str): method _get_key_prefix (line 66) | def _get_key_prefix(self) -> str: method _get_data_key (line 70) | def _get_data_key(self) -> str: method _get_lock_key (line 74) | def _get_lock_key(self) -> str: method _get_version_key (line 78) | def _get_version_key(self) -> str: method save (line 82) | def save(self): method load (line 101) | def load(self): method delete (line 131) | def delete(self): class RedisDBManager (line 142) | class RedisDBManager(BaseDBManager): method __init__ (line 149) | def __init__( method _init_redis_client (line 200) | def _init_redis_client(self): method orm_class (line 244) | def orm_class(self) -> type[RedisLockableORM]: method obj_class (line 249) | def obj_class(self) -> type: method merge_items (line 253) | def merge_items( method _merge_memory_monitor_items (line 302) | def _merge_memory_monitor_items(self, obj_instance, db_obj, size_limit... method _merge_list_items (line 324) | def _merge_list_items(self, obj_instance, db_obj, size_limit: int): method _get_redis_orm_instance (line 352) | def _get_redis_orm_instance(self) -> RedisLockableORM: method _get_key_prefix (line 359) | def _get_key_prefix(self) -> str: method acquire_lock (line 363) | def acquire_lock(self, block: bool = True, **kwargs) -> bool: method release_locks (line 410) | def release_locks(self, user_id: str, mem_cube_id: str, **kwargs): method sync_with_orm (line 432) | def sync_with_orm(self, size_limit: int | None = None) -> None: method save_to_db (line 524) | def save_to_db(self, obj_instance: Any) -> None: method load_from_db (line 569) | def load_from_db(self, acquire_lock: bool = False) -> Any | None: method close (line 612) | def close(self): method from_env (line 632) | def from_env( method list_keys (line 665) | def list_keys(self, pattern: str | None = None) -> list[str]: method health_check (line 685) | def health_check(self) -> dict[str, bool]: FILE: src/memos/mem_scheduler/scheduler_factory.py class SchedulerFactory (line 9) | class SchedulerFactory(BaseScheduler): method from_config (line 18) | def from_config(cls, config_factory: SchedulerConfigFactory) -> Genera... FILE: src/memos/mem_scheduler/schemas/analyzer_schemas.py class BasicRecordingCase (line 17) | class BasicRecordingCase(BaseModel): method to_dict (line 32) | def to_dict(self) -> dict[str, Any]: method to_json (line 35) | def to_json(self, indent: int = 2) -> str: method from_dict (line 39) | def from_dict(cls, data: dict[str, Any]) -> "BasicRecordingCase": method from_json (line 43) | def from_json(cls, json_str: str) -> "BasicRecordingCase": class Config (line 47) | class Config: FILE: src/memos/mem_scheduler/schemas/api_schemas.py class TaskRunningStatus (line 17) | class TaskRunningStatus(str, Enum): class APIMemoryHistoryEntryItem (line 24) | class APIMemoryHistoryEntryItem(BaseModel, DictConversionMixin): method serialize_created_time (line 49) | def serialize_created_time(self, value: datetime) -> str: method get (line 53) | def get(self, key: str, default: Any | None = None) -> Any: class APISearchHistoryManager (line 67) | class APISearchHistoryManager(BaseModel, DictConversionMixin): method complete_entry (line 86) | def complete_entry(self, task_id: str) -> bool: method get_running_item_ids (line 105) | def get_running_item_ids(self) -> list[str]: method get_completed_entries (line 109) | def get_completed_entries(self) -> list[APIMemoryHistoryEntryItem]: method get_history_memory_entries (line 113) | def get_history_memory_entries( method get_history_memories (line 136) | def get_history_memories(self, turns: int | None = None) -> list[Textu... method find_entry_by_item_id (line 153) | def find_entry_by_item_id(self, item_id: str) -> tuple[dict[str, Any] ... method update_entry_by_item_id (line 177) | def update_entry_by_item_id( method get_total_count (line 219) | def get_total_count(self) -> dict[str, int]: method __len__ (line 227) | def __len__(self) -> int: FILE: src/memos/mem_scheduler/schemas/message_schemas.py class ScheduleMessageItem (line 38) | class ScheduleMessageItem(BaseModel, DictConversionMixin): method to_dict (line 84) | def to_dict(self) -> dict: method _serialize_redis_value (line 105) | def _serialize_redis_value(value: Any) -> Any: method from_dict (line 113) | def from_dict(cls, data: dict) -> "ScheduleMessageItem": class MemorySizes (line 160) | class MemorySizes(TypedDict): class MemoryCapacities (line 167) | class MemoryCapacities(TypedDict): class ScheduleLogForWebItem (line 174) | class ScheduleLogForWebItem(BaseModel, DictConversionMixin): method debug_info (line 213) | def debug_info(self) -> dict[str, Any]: FILE: src/memos/mem_scheduler/schemas/monitor_schemas.py class QueryMonitorItem (line 32) | class QueryMonitorItem(BaseModel, DictConversionMixin): method validate_keywords (line 56) | def validate_keywords(cls, v, values): method with_max_keywords (line 72) | def with_max_keywords(cls, limit: int): class QueryMonitorQueue (line 80) | class QueryMonitorQueue(AutoDroppingQueue[QueryMonitorItem]): method put (line 86) | def put(self, item: QueryMonitorItem, block: bool = True, timeout: flo... method get_queries_by_timestamp (line 100) | def get_queries_by_timestamp( method get_keywords_collections (line 110) | def get_keywords_collections(self) -> Counter: method get_queries_with_timesort (line 123) | def get_queries_with_timesort(self, reverse: bool = True) -> list[str]: method to_json (line 141) | def to_json(self) -> str: method from_json (line 158) | def from_json(cls, json_str: str) -> "QueryMonitorQueue": class MemoryMonitorItem (line 189) | class MemoryMonitorItem(BaseModel, DictConversionMixin): method generate_mapping_key (line 233) | def generate_mapping_key(cls, v, values): # noqa: N805 method get_importance_score (line 238) | def get_importance_score(self, weight_vector: list[float] | None = Non... method _get_complex_importance_score (line 241) | def _get_complex_importance_score(self, weight_vector: list[float] | N... class MemoryMonitorManager (line 265) | class MemoryMonitorManager(BaseModel, DictConversionMixin): method memory_size (line 277) | def memory_size(self) -> int: method memories_mapping_dict (line 282) | def memories_mapping_dict(self) -> dict[str, MemoryMonitorItem]: method get_sorted_mem_monitors (line 304) | def get_sorted_mem_monitors(self, reverse=True) -> list[MemoryMonitorI... method update_memories (line 319) | def update_memories( FILE: src/memos/mem_scheduler/schemas/task_schemas.py class TaskPriorityLevel (line 23) | class TaskPriorityLevel(Enum): class RunningTaskItem (line 84) | class RunningTaskItem(BaseModel, DictConversionMixin): method mark_completed (line 103) | def mark_completed(self, result: Any | None = None) -> None: method mark_failed (line 109) | def mark_failed(self, error_message: str) -> None: method duration_seconds (line 117) | def duration_seconds(self) -> float | None: method get_execution_info (line 123) | def get_execution_info(self) -> str: FILE: src/memos/mem_scheduler/task_schedule_modules/base_handler.py class BaseSchedulerHandler (line 20) | class BaseSchedulerHandler: method __init__ (line 21) | def __init__(self, scheduler_context: SchedulerHandlerContext) -> None: method expected_task_label (line 26) | def expected_task_label(self) -> str: method validate_and_log_messages (line 30) | def validate_and_log_messages(self, messages: list[ScheduleMessageItem... method handle_exception (line 34) | def handle_exception(self, e: Exception, message: str = "Error process... method process_grouped_messages (line 37) | def process_grouped_messages( method batch_handler (line 55) | def batch_handler( method __call__ (line 59) | def __call__(self, messages: list[ScheduleMessageItem]) -> None: FILE: src/memos/mem_scheduler/task_schedule_modules/context.py class SchedulerHandlerServices (line 16) | class SchedulerHandlerServices: class SchedulerHandlerContext (line 32) | class SchedulerHandlerContext: FILE: src/memos/mem_scheduler/task_schedule_modules/dispatcher.py class SchedulerDispatcher (line 35) | class SchedulerDispatcher(BaseSchedulerModule): method __init__ (line 48) | def __init__( method on_messages_enqueued (line 114) | def on_messages_enqueued(self, msgs: list[ScheduleMessageItem]) -> None: method _create_task_wrapper (line 119) | def _create_task_wrapper(self, handler: Callable, task_item: RunningTa... method _maybe_emit_task_completion (line 289) | def _maybe_emit_task_completion( method get_running_tasks (line 383) | def get_running_tasks( method get_running_task_count (line 421) | def get_running_task_count(self) -> int: method register_handler (line 431) | def register_handler( method register_handlers (line 453) | def register_handlers( method unregister_handler (line 497) | def unregister_handler(self, label: str) -> bool: method unregister_handlers (line 517) | def unregister_handlers(self, labels: list[str]) -> dict[str, bool]: method stats (line 534) | def stats(self) -> dict[str, int]: method _default_message_handler (line 560) | def _default_message_handler(self, messages: list[ScheduleMessageItem]... method _handle_future_result (line 563) | def _handle_future_result(self, future): method _calc_total_duration_ms (line 572) | def _calc_total_duration_ms(finish_epoch: float, enqueue_ts) -> float ... method execute_task (line 595) | def execute_task( method dispatch (line 643) | def dispatch(self, msg_list: list[ScheduleMessageItem]): method join (line 676) | def join(self, timeout: float | None = None) -> bool: method run_competitive_tasks (line 701) | def run_competitive_tasks( method run_multiple_tasks (line 717) | def run_multiple_tasks( method shutdown (line 761) | def shutdown(self) -> None: method __enter__ (line 773) | def __enter__(self): method __exit__ (line 777) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py class AddMessageHandler (line 26) | class AddMessageHandler(BaseSchedulerHandler): method expected_task_label (line 28) | def expected_task_label(self) -> str: method batch_handler (line 31) | def batch_handler( method log_add_messages (line 52) | def log_add_messages(self, msg: ScheduleMessageItem): method send_add_log_messages_to_local_env (line 152) | def send_add_log_messages_to_local_env( method send_add_log_messages_to_cloud_env (line 237) | def send_add_log_messages_to_cloud_env( FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py class AnswerMessageHandler (line 20) | class AnswerMessageHandler(BaseSchedulerHandler): method expected_task_label (line 22) | def expected_task_label(self) -> str: method batch_handler (line 25) | def batch_handler( FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py class FeedbackMessageHandler (line 23) | class FeedbackMessageHandler(BaseSchedulerHandler): method expected_task_label (line 25) | def expected_task_label(self) -> str: method batch_handler (line 28) | def batch_handler( method process_single_feedback (line 41) | def process_single_feedback(self, message: ScheduleMessageItem) -> None: FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py class MemReadMessageHandler (line 30) | class MemReadMessageHandler(BaseSchedulerHandler): method expected_task_label (line 32) | def expected_task_label(self) -> str: method batch_handler (line 35) | def batch_handler( method process_message (line 50) | def process_message(self, message: ScheduleMessageItem): method _process_memories_with_reader (line 108) | def _process_memories_with_reader( FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py class MemReorganizeMessageHandler (line 28) | class MemReorganizeMessageHandler(BaseSchedulerHandler): method expected_task_label (line 30) | def expected_task_label(self) -> str: method batch_handler (line 33) | def batch_handler( method process_message (line 44) | def process_message(self, message: ScheduleMessageItem): method _process_memories_with_reorganize (line 210) | def _process_memories_with_reorganize( FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py class MemoryUpdateHandler (line 26) | class MemoryUpdateHandler(BaseSchedulerHandler): method expected_task_label (line 28) | def expected_task_label(self) -> str: method batch_handler (line 31) | def batch_handler( method long_memory_update_process (line 36) | def long_memory_update_process( method process_session_turn (line 165) | def process_session_turn( FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py class PrefAddMessageHandler (line 21) | class PrefAddMessageHandler(BaseSchedulerHandler): method expected_task_label (line 23) | def expected_task_label(self) -> str: method batch_handler (line 26) | def batch_handler( method process_message (line 37) | def process_message(self, message: ScheduleMessageItem): FILE: src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py class QueryMessageHandler (line 17) | class QueryMessageHandler(BaseSchedulerHandler): method expected_task_label (line 19) | def expected_task_label(self) -> str: method batch_handler (line 22) | def batch_handler( FILE: src/memos/mem_scheduler/task_schedule_modules/local_queue.py class SchedulerLocalQueue (line 25) | class SchedulerLocalQueue(RedisSchedulerModule): method __init__ (line 26) | def __init__( method get_stream_key (line 62) | def get_stream_key(self, user_id: str, mem_cube_id: str, task_label: s... method put (line 66) | def put( method get (line 105) | def get( method get_nowait (line 135) | def get_nowait(self, stream_key: str, batch_size: int | None = 1) -> l... method get_messages (line 152) | def get_messages(self, batch_size: int) -> list[ScheduleMessageItem]: method qsize (line 179) | def qsize(self) -> dict: method clear (line 195) | def clear(self, stream_key: str | None = None) -> None: method unfinished_tasks (line 204) | def unfinished_tasks(self) -> int: method get_stream_keys (line 220) | def get_stream_keys(self, stream_key_prefix: str | None = None) -> lis... method size (line 227) | def size(self) -> int: method empty (line 233) | def empty(self) -> bool: method full (line 239) | def full(self) -> bool: FILE: src/memos/mem_scheduler/task_schedule_modules/orchestrator.py class SchedulerOrchestrator (line 30) | class SchedulerOrchestrator(RedisSchedulerModule): method __init__ (line 31) | def __init__(self): method get_stream_priorities (line 47) | def get_stream_priorities(self) -> None | dict: method set_task_config (line 50) | def set_task_config( method remove_task_config (line 69) | def remove_task_config(self, task_label: str): method get_task_priority (line 81) | def get_task_priority(self, task_label: str): method get_task_idle_min (line 84) | def get_task_idle_min(self, task_label: str) -> int: method get_stream_quotas (line 88) | def get_stream_quotas(self, stream_keys, consume_batch_size) -> dict: FILE: src/memos/mem_scheduler/task_schedule_modules/redis_queue.py class SchedulerRedisQueue (line 34) | class SchedulerRedisQueue(RedisSchedulerModule): method __init__ (line 46) | def __init__( method _check_xautoclaim_support (line 148) | def _check_xautoclaim_support(self): method get_stream_key (line 175) | def get_stream_key(self, user_id: str, mem_cube_id: str, task_label: s... method _refresh_stream_keys (line 180) | def _refresh_stream_keys( method _stream_keys_refresh_loop (line 259) | def _stream_keys_refresh_loop(self) -> None: method _start_stream_keys_refresh_thread (line 276) | def _start_stream_keys_refresh_thread(self) -> None: method _stop_stream_keys_refresh_thread (line 287) | def _stop_stream_keys_refresh_thread(self) -> None: method task_broker (line 295) | def task_broker( method _async_refill_cache (line 349) | def _async_refill_cache(self, batch_size: int) -> None: method get_messages (line 364) | def get_messages(self, batch_size: int) -> list[ScheduleMessageItem]: method _ensure_consumer_group (line 389) | def _ensure_consumer_group(self, stream_key) -> None: method put (line 407) | def put( method ack_message (line 461) | def ack_message( method get (line 501) | def get( method _compute_redis_timeout (line 552) | def _compute_redis_timeout(self, block: bool, timeout: float | None) -... method _read_new_messages (line 558) | def _read_new_messages( method _read_new_messages_batch (line 587) | def _read_new_messages_batch( method _compute_pending_need (line 645) | def _compute_pending_need( method _parse_pending_entry (line 655) | def _parse_pending_entry(self, entry) -> tuple[str, int]: method _manual_xautoclaim (line 665) | def _manual_xautoclaim( method _claim_pending_messages (line 702) | def _claim_pending_messages( method _batch_claim_native (line 782) | def _batch_claim_native( method _batch_claim_manual (line 850) | def _batch_claim_manual( method _batch_claim_pending_messages (line 923) | def _batch_claim_pending_messages( method _convert_messages (line 942) | def _convert_messages( method qsize (line 958) | def qsize(self) -> dict: method show_task_status (line 986) | def show_task_status(self, stream_key_prefix: str | None = None) -> di... method get_stream_keys (line 1025) | def get_stream_keys(self, stream_key_prefix: str | None = None) -> lis... method size (line 1051) | def size(self) -> int: method empty (line 1061) | def empty(self) -> bool: method full (line 1070) | def full(self) -> bool: method join (line 1075) | def join(self) -> None: method clear (line 1083) | def clear(self, stream_key=None) -> None: method start_listening (line 1103) | def start_listening( method stop_listening (line 1147) | def stop_listening(self) -> None: method connect (line 1152) | def connect(self) -> None: method disconnect (line 1170) | def disconnect(self) -> None: method __enter__ (line 1179) | def __enter__(self): method __exit__ (line 1184) | def __exit__(self, exc_type, exc_val, exc_tb): method __del__ (line 1189) | def __del__(self): method unfinished_tasks (line 1196) | def unfinished_tasks(self) -> int: method _scan_candidate_stream_keys (line 1199) | def _scan_candidate_stream_keys( method _pipeline_last_entries (line 1239) | def _pipeline_last_entries( method _parse_last_ms_from_entries (line 1271) | def _parse_last_ms_from_entries(self, entries: list[tuple[str, dict]])... method _collect_inactive_keys (line 1281) | def _collect_inactive_keys( method _filter_active_keys (line 1312) | def _filter_active_keys( method _delete_streams (line 1335) | def _delete_streams(self, keys_to_delete: list[str]) -> int: method _update_stream_cache_with_log (line 1367) | def _update_stream_cache_with_log( FILE: src/memos/mem_scheduler/task_schedule_modules/registry.py class SchedulerHandlerRegistry (line 33) | class SchedulerHandlerRegistry: method __init__ (line 34) | def __init__(self, scheduler_context: SchedulerHandlerContext) -> None: method build_dispatch_map (line 44) | def build_dispatch_map(self) -> dict[str, Callable | tuple]: FILE: src/memos/mem_scheduler/task_schedule_modules/task_queue.py class ScheduleTaskQueue (line 23) | class ScheduleTaskQueue: method __init__ (line 24) | def __init__( method set_status_tracker (line 52) | def set_status_tracker(self, status_tracker: TaskStatusTracker) -> None: method ack_message (line 65) | def ack_message( method get_stream_keys (line 85) | def get_stream_keys(self) -> list[str]: method submit_messages (line 92) | def submit_messages(self, messages: ScheduleMessageItem | list[Schedul... method get_messages (line 155) | def get_messages(self, batch_size: int) -> list[ScheduleMessageItem]: method clear (line 158) | def clear(self): method qsize (line 161) | def qsize(self): FILE: src/memos/mem_scheduler/utils/api_utils.py function format_textual_memory_item (line 9) | def format_textual_memory_item(memory_data: Any, include_embedding: bool... function make_textual_item (line 26) | def make_textual_item(memory_data): function text_to_textual_memory_item (line 30) | def text_to_textual_memory_item( FILE: src/memos/mem_scheduler/utils/config_utils.py function flatten_dict (line 9) | def flatten_dict( function convert_config_to_env (line 51) | def convert_config_to_env(input_file: str, output_file: str = ".env", pr... FILE: src/memos/mem_scheduler/utils/db_utils.py function get_utc_now (line 12) | def get_utc_now(): function get_utc_now (line 17) | def get_utc_now(): function print_db_tables (line 22) | def print_db_tables(db_path: str): FILE: src/memos/mem_scheduler/utils/filter_utils.py function transform_name_to_key (line 10) | def transform_name_to_key(name): function is_all_english (line 38) | def is_all_english(input_string: str) -> bool: function is_all_chinese (line 43) | def is_all_chinese(input_string: str) -> bool: function filter_vector_based_similar_memories (line 63) | def filter_vector_based_similar_memories( function filter_too_short_memories (line 127) | def filter_too_short_memories( FILE: src/memos/mem_scheduler/utils/metrics.py function task_enqueued (line 61) | def task_enqueued(user_id: str, task_type: str, count: int = 1): function task_dequeued (line 65) | def task_dequeued(user_id: str, task_type: str, count: int = 1): function observe_task_duration (line 69) | def observe_task_duration(duration: float, user_id: str, task_type: str): function observe_task_wait_duration (line 73) | def observe_task_wait_duration(duration: float, user_id: str, task_type:... function task_failed (line 77) | def task_failed(user_id: str, task_type: str, error_type: str): function task_completed (line 81) | def task_completed(user_id: str, task_type: str, count: int = 1): function update_queue_length (line 85) | def update_queue_length(length: int, user_id: str): function observe_internal_span (line 89) | def observe_internal_span(duration: float, span_name: str, user_id: str,... class TimingSpan (line 98) | class TimingSpan(ContextDecorator): method __init__ (line 113) | def __init__(self, span_name: str, user_id: str = "unknown", task_id: ... method __enter__ (line 119) | def __enter__(self): method __exit__ (line 123) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: src/memos/mem_scheduler/utils/misc_utils.py function _normalize_env_value (line 21) | def _normalize_env_value(value: str | None) -> str: function is_playground_env (line 26) | def is_playground_env() -> bool: function is_cloud_env (line 32) | def is_cloud_env() -> bool: function extract_json_obj (line 55) | def extract_json_obj(text: str): function extract_list_items (line 105) | def extract_list_items(text: str, bullet_prefixes: tuple[str, ...] = ("-... function extract_list_items_in_answer (line 169) | def extract_list_items_in_answer( function parse_yaml (line 219) | def parse_yaml(yaml_file: str | Path): function log_exceptions (line 230) | def log_exceptions(logger=logger): function group_messages_by_user_and_mem_cube (line 260) | def group_messages_by_user_and_mem_cube( FILE: src/memos/mem_scheduler/utils/monitor_event_utils.py function _iso_ts_now (line 15) | def _iso_ts_now() -> str: function to_iso (line 20) | def to_iso(ts) -> str | None: function emit_monitor_event (line 35) | def emit_monitor_event(event: str, msg: ScheduleMessageItem, extra: dict... FILE: src/memos/mem_scheduler/utils/status_tracker.py class TaskStatusTracker (line 14) | class TaskStatusTracker: method __init__ (line 16) | def __init__(self, redis_client: "redis.Redis | None"): method _get_key (line 19) | def _get_key(self, user_id: str) -> str: method _get_task_items_key (line 25) | def _get_task_items_key(self, user_id: str, task_id: str) -> str: method task_submitted (line 29) | def task_submitted( method task_started (line 69) | def task_started(self, task_id: str, user_id: str): method task_completed (line 88) | def task_completed(self, task_id: str, user_id: str): method task_failed (line 105) | def task_failed(self, task_id: str, user_id: str, error_message: str): method get_task_status (line 125) | def get_task_status(self, task_id: str, user_id: str) -> dict | None: method get_all_tasks_for_user (line 133) | def get_all_tasks_for_user(self, user_id: str) -> dict[str, dict]: method get_task_status_by_business_id (line 141) | def get_task_status_by_business_id(self, business_task_id: str, user_i... method get_all_tasks_global (line 200) | def get_all_tasks_global(self) -> dict[str, dict[str, dict]]: FILE: src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py class RabbitMQSchedulerModule (line 22) | class RabbitMQSchedulerModule(BaseSchedulerModule): method __init__ (line 28) | def __init__(self): method is_rabbitmq_connected (line 66) | def is_rabbitmq_connected(self) -> bool: method initialize_rabbitmq (line 75) | def initialize_rabbitmq( method get_rabbitmq_queue_size (line 178) | def get_rabbitmq_queue_size(self) -> int: method get_rabbitmq_connection_param (line 207) | def get_rabbitmq_connection_param(self): method on_rabbitmq_connection_open (line 241) | def on_rabbitmq_connection_open(self, connection): method on_rabbitmq_connection_error (line 246) | def on_rabbitmq_connection_error(self, connection, error): method on_rabbitmq_connection_closed (line 251) | def on_rabbitmq_connection_closed(self, connection, reason): method on_rabbitmq_channel_open (line 258) | def on_rabbitmq_channel_open(self, channel): method on_rabbitmq_exchange_declared (line 271) | def on_rabbitmq_exchange_declared(self, frame): method on_rabbitmq_queue_declared (line 277) | def on_rabbitmq_queue_declared(self, frame): method on_rabbitmq_bind_ok (line 286) | def on_rabbitmq_bind_ok(self, frame): method on_rabbitmq_message (line 292) | def on_rabbitmq_message(self, channel, method, properties, body): method wait_for_connection_ready (line 302) | def wait_for_connection_ready(self): method rabbitmq_start_consuming (line 313) | def rabbitmq_start_consuming(self): method rabbitmq_publish_message (line 324) | def rabbitmq_publish_message(self, message: dict): method rabbit_reconnect (line 409) | def rabbit_reconnect(self): method rabbitmq_close (line 419) | def rabbitmq_close(self): method _flush_cached_publish_messages (line 453) | def _flush_cached_publish_messages(self): FILE: src/memos/mem_scheduler/webservice_modules/redis_service.py class RedisSchedulerModule (line 18) | class RedisSchedulerModule(BaseSchedulerModule): method __init__ (line 24) | def __init__(self): method redis (line 48) | def redis(self) -> Any: method redis (line 54) | def redis(self, value: Any) -> None: method initialize_redis (line 57) | def initialize_redis( method auto_initialize_redis (line 106) | def auto_initialize_redis(self) -> bool: method _cleanup_local_redis (line 259) | def _cleanup_local_redis(self): method _cleanup_redis_resources (line 275) | def _cleanup_redis_resources(self): method redis_add_message_stream (line 288) | def redis_add_message_stream(self, message: dict): method redis_consume_message_stream (line 292) | async def redis_consume_message_stream(self, message: dict): method _redis_run_listener_async (line 295) | def _redis_run_listener_async(self, handler: Callable): method __redis_listen_query_stream (line 310) | async def __redis_listen_query_stream( method redis_start_listening (line 342) | def redis_start_listening(self, handler: Callable | None = None): method redis_stop_listening (line 369) | def redis_stop_listening(self): method redis_close (line 378) | def redis_close(self): FILE: src/memos/mem_user/factory.py class UserManagerFactory (line 8) | class UserManagerFactory: method from_config (line 17) | def from_config( method create_sqlite (line 42) | def create_sqlite(cls, db_path: str | None = None, user_id: str = "roo... method create_mysql (line 58) | def create_mysql( FILE: src/memos/mem_user/mysql_persistent_user_manager.py class UserConfig (line 22) | class UserConfig(Base): method __repr__ (line 32) | def __repr__(self): class MySQLPersistentUserManager (line 36) | class MySQLPersistentUserManager(MySQLUserManager): method __init__ (line 39) | def __init__( method _convert_datetime_strings (line 66) | def _convert_datetime_strings(self, obj: Any) -> Any: method save_user_config (line 92) | def save_user_config(self, user_id: str, config: MOSConfig) -> bool: method get_user_config (line 138) | def get_user_config(self, user_id: str) -> MOSConfig | None: method delete_user_config (line 164) | def delete_user_config(self, user_id: str) -> bool: method list_user_configs (line 191) | def list_user_configs(self, limit: int = 1) -> dict[str, MOSConfig]: method create_user_with_config (line 220) | def create_user_with_config( method delete_user (line 246) | def delete_user(self, user_id: str) -> bool: method get_user_cube_access (line 261) | def get_user_cube_access(self, user_id: str) -> list[str]: FILE: src/memos/mem_user/mysql_user_manager.py class UserRole (line 32) | class UserRole(Enum): class User (line 51) | class User(Base): method __repr__ (line 69) | def __repr__(self): class Cube (line 73) | class Cube(Base): method __repr__ (line 90) | def __repr__(self): class MySQLUserManager (line 94) | class MySQLUserManager: method __init__ (line 97) | def __init__( method _get_session (line 140) | def _get_session(self) -> Session: method _init_root_user (line 144) | def _init_root_user(self, user_id: str) -> None: method create_user (line 163) | def create_user( method get_user (line 201) | def get_user(self, user_id: str) -> User | None: method get_user_by_name (line 216) | def get_user_by_name(self, user_name: str) -> User | None: method validate_user (line 231) | def validate_user(self, user_id: str) -> bool: method list_users (line 243) | def list_users(self) -> list[User]: method create_cube (line 255) | def create_cube( method get_cube (line 304) | def get_cube(self, cube_id: str) -> Cube | None: method validate_user_cube_access (line 319) | def validate_user_cube_access(self, user_id: str, cube_id: str) -> bool: method get_user_cubes (line 350) | def get_user_cubes(self, user_id: str) -> list[Cube]: method add_user_to_cube (line 370) | def add_user_to_cube(self, user_id: str, cube_id: str) -> bool: method remove_user_from_cube (line 401) | def remove_user_from_cube(self, user_id: str, cube_id: str) -> bool: method delete_user (line 437) | def delete_user(self, user_id: str) -> bool: method delete_cube (line 468) | def delete_cube(self, cube_id: str) -> bool: method close (line 494) | def close(self) -> None: FILE: src/memos/mem_user/persistent_factory.py class PersistentUserManagerFactory (line 9) | class PersistentUserManagerFactory: method from_config (line 19) | def from_config( method create_sqlite (line 44) | def create_sqlite( method create_mysql (line 62) | def create_mysql( FILE: src/memos/mem_user/persistent_user_manager.py class UserConfig (line 22) | class UserConfig(Base): method __repr__ (line 32) | def __repr__(self): class PersistentUserManager (line 36) | class PersistentUserManager(UserManager): method __init__ (line 39) | def __init__(self, db_path: str | None = None, user_id: str = "root"): method _convert_datetime_strings (line 53) | def _convert_datetime_strings(self, obj: Any) -> Any: method save_user_config (line 79) | def save_user_config(self, user_id: str, config: MOSConfig) -> bool: method get_user_config (line 127) | def get_user_config(self, user_id: str) -> MOSConfig | None: method delete_user_config (line 153) | def delete_user_config(self, user_id: str) -> bool: method list_user_configs (line 180) | def list_user_configs(self, limit: int = 1) -> dict[str, MOSConfig]: method create_user_with_config (line 209) | def create_user_with_config( method delete_user (line 235) | def delete_user(self, user_id: str) -> bool: method get_user_cube_access (line 250) | def get_user_cube_access(self, user_id: str) -> list[str]: FILE: src/memos/mem_user/redis_persistent_user_manager.py class RedisPersistentUserManager (line 16) | class RedisPersistentUserManager: method __init__ (line 24) | def __init__( method _get_config_key (line 70) | def _get_config_key(self, user_id: str) -> str: method save_user_config (line 81) | def save_user_config(self, user_id: str, config: MOSConfig) -> bool: method get_user_config (line 107) | def get_user_config(self, user_id: str) -> dict | None: method delete_user_config (line 138) | def delete_user_config(self, user_id: str) -> bool: method exists_user_config (line 162) | def exists_user_config(self, user_id: str) -> bool: method list_user_configs (line 178) | def list_user_configs( method close (line 214) | def close(self) -> None: FILE: src/memos/mem_user/user_manager.py class UserRole (line 37) | class UserRole(Enum): class User (line 56) | class User(Base): method __repr__ (line 72) | def __repr__(self): class Cube (line 76) | class Cube(Base): method __repr__ (line 93) | def __repr__(self): class UserManager (line 97) | class UserManager: method __init__ (line 100) | def __init__(self, db_path: str | None = None, user_id: str = "root"): method _get_session (line 126) | def _get_session(self) -> Session: method _init_root_user (line 130) | def _init_root_user(self, user_id: str) -> None: method create_user (line 149) | def create_user( method get_user (line 187) | def get_user(self, user_id: str) -> User | None: method get_user_by_name (line 202) | def get_user_by_name(self, user_name: str) -> User | None: method validate_user (line 217) | def validate_user(self, user_id: str) -> bool: method list_users (line 229) | def list_users(self) -> list[User]: method create_cube (line 241) | def create_cube( method get_cube (line 290) | def get_cube(self, cube_id: str) -> Cube | None: method validate_user_cube_access (line 305) | def validate_user_cube_access(self, user_id: str, cube_id: str) -> bool: method get_user_cubes (line 336) | def get_user_cubes(self, user_id: str) -> list[Cube]: method add_user_to_cube (line 356) | def add_user_to_cube(self, user_id: str, cube_id: str) -> bool: method remove_user_from_cube (line 387) | def remove_user_from_cube(self, user_id: str, cube_id: str) -> bool: method delete_user (line 423) | def delete_user(self, user_id: str) -> bool: method delete_cube (line 454) | def delete_cube(self, cube_id: str) -> bool: method close (line 480) | def close(self) -> None: FILE: src/memos/memories/activation/base.py class BaseActMemory (line 8) | class BaseActMemory(BaseMemory): method __init__ (line 10) | def __init__(self, config: BaseActMemoryConfig) -> None: method extract (line 14) | def extract(self, text: str) -> Any: method add (line 18) | def add(self, memories: list) -> None: method get (line 22) | def get(self, memory_id: str) -> Any | None: method get_by_ids (line 26) | def get_by_ids(self, memory_ids: list[str]) -> list[Any | None]: method get_all (line 30) | def get_all(self) -> list[Any]: method delete (line 34) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 41) | def delete_all(self) -> None: FILE: src/memos/memories/activation/item.py class ActivationMemoryItem (line 12) | class ActivationMemoryItem(BaseModel): class KVCacheRecords (line 18) | class KVCacheRecords(BaseModel): class KVCacheItem (line 32) | class KVCacheItem(ActivationMemoryItem): class VLLMKVCacheItem (line 46) | class VLLMKVCacheItem(KVCacheItem): FILE: src/memos/memories/activation/kv.py class KVCacheMemory (line 16) | class KVCacheMemory(BaseActMemory): method __init__ (line 26) | def __init__(self, config: KVCacheMemoryConfig) -> None: method extract (line 32) | def extract(self, text: str) -> KVCacheItem: method add (line 54) | def add(self, memories: list[KVCacheItem]) -> None: method get_cache (line 63) | def get_cache(self, cache_ids: list[str]) -> DynamicCache | None: method get (line 83) | def get(self, memory_id: str) -> KVCacheItem | None: method get_by_ids (line 94) | def get_by_ids(self, memory_ids: list[str]) -> list[KVCacheItem | None]: method get_all (line 109) | def get_all(self) -> list[KVCacheItem]: method delete (line 117) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 126) | def delete_all(self) -> None: method from_textual_memory (line 130) | def from_textual_memory(self, mem: TextualMemoryItem) -> KVCacheItem: method load (line 139) | def load(self, dir: str) -> None: method dump (line 183) | def dump(self, dir: str) -> None: method _concat_caches (line 200) | def _concat_caches(self, caches: list[DynamicCache]) -> DynamicCache: function move_dynamic_cache_htod (line 258) | def move_dynamic_cache_htod(dynamic_cache: DynamicCache, device: str) ->... FILE: src/memos/memories/activation/vllmkv.py class VLLMKVCacheMemory (line 14) | class VLLMKVCacheMemory(BaseActMemory): method __init__ (line 25) | def __init__(self, config: KVCacheMemoryConfig) -> None: method extract (line 31) | def extract(self, text: str) -> VLLMKVCacheItem: method add (line 55) | def add(self, memories: list[VLLMKVCacheItem]) -> None: method get_cache (line 64) | def get_cache(self, cache_ids: list[str]) -> str | None: method get (line 89) | def get(self, memory_id: str) -> VLLMKVCacheItem | None: method get_by_ids (line 100) | def get_by_ids(self, memory_ids: list[str]) -> list[VLLMKVCacheItem | ... method get_all (line 115) | def get_all(self) -> list[VLLMKVCacheItem]: method delete (line 123) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 132) | def delete_all(self) -> None: method from_textual_memory (line 136) | def from_textual_memory(self, mem: TextualMemoryItem) -> VLLMKVCacheItem: method load (line 145) | def load(self, dir: str) -> None: method dump (line 189) | def dump(self, dir: str) -> None: method preload_kv_cache (line 206) | def preload_kv_cache(self, cache_ids: list[str]) -> None: FILE: src/memos/memories/base.py class BaseMemory (line 4) | class BaseMemory(ABC): method load (line 8) | def load(self, dir: str) -> None: method dump (line 15) | def dump(self, dir: str) -> None: FILE: src/memos/memories/factory.py class MemoryFactory (line 19) | class MemoryFactory(BaseMemory): method from_config (line 35) | def from_config( FILE: src/memos/memories/parametric/base.py class BaseParaMemory (line 14) | class BaseParaMemory(BaseMemory): method __init__ (line 18) | def __init__(self, config: BaseParaMemoryConfig): FILE: src/memos/memories/parametric/item.py class ParametricMemoryItem (line 8) | class ParametricMemoryItem(BaseModel): FILE: src/memos/memories/parametric/lora.py class LoRAMemory (line 14) | class LoRAMemory(BaseParaMemory): method __init__ (line 20) | def __init__(self, config: LoRAMemoryConfig) -> None: method load (line 24) | def load(self, dir: str) -> None: method dump (line 31) | def dump(self, dir: str) -> None: FILE: src/memos/memories/textual/base.py class BaseTextMemory (line 10) | class BaseTextMemory(BaseMemory): method __init__ (line 17) | def __init__(self, config: BaseTextMemoryConfig): method extract (line 21) | def extract(self, messages: MessageList) -> list[TextualMemoryItem]: method add (line 30) | def add(self, memories: list[TextualMemoryItem | dict[str, Any]], **kw... method update (line 38) | def update(self, memory_id: str, new_memory: TextualMemoryItem | dict[... method search (line 42) | def search(self, query: str, top_k: int, info=None, **kwargs) -> list[... method get (line 53) | def get(self, memory_id: str, user_name: str | None = None) -> Textual... method get_by_ids (line 62) | def get_by_ids( method get_all (line 73) | def get_all(self) -> list[TextualMemoryItem]: method delete (line 80) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 87) | def delete_all(self) -> None: method drop (line 91) | def drop( FILE: src/memos/memories/textual/general.py class GeneralTextMemory (line 24) | class GeneralTextMemory(BaseTextMemory): method __init__ (line 27) | def __init__(self, config: GeneralTextMemoryConfig): method extract (line 45) | def extract(self, messages: MessageList) -> list[TextualMemoryItem]: method add (line 81) | def add(self, memories: list[TextualMemoryItem | dict[str, Any]]) -> N... method update (line 106) | def update(self, memory_id: str, new_memory: TextualMemoryItem | dict[... method search (line 121) | def search(self, query: str, top_k: int, info=None, **kwargs) -> list[... method get (line 139) | def get(self, memory_id: str, user_name: str | None = None) -> Textual... method get_by_ids (line 146) | def get_by_ids(self, memory_ids: list[str]) -> list[TextualMemoryItem]: method get_all (line 157) | def get_all(self) -> list[TextualMemoryItem]: method delete (line 166) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 170) | def delete_all(self) -> None: method load (line 175) | def load(self, dir: str) -> None: method dump (line 197) | def dump(self, dir: str) -> None: method drop (line 214) | def drop( method _embed_one_sentence (line 219) | def _embed_one_sentence(self, sentence: str) -> list[float]: method parse_json_result (line 223) | def parse_json_result(self, response_text): FILE: src/memos/memories/textual/item.py class SourceMessage (line 16) | class SourceMessage(BaseModel): class ArchivedTextualMemory (line 49) | class ArchivedTextualMemory(BaseModel): class TextualMemoryMetadata (line 86) | class TextualMemoryMetadata(BaseModel): method __str__ (line 157) | def __str__(self) -> str: class TreeNodeTextualMemoryMetadata (line 163) | class TreeNodeTextualMemoryMetadata(TextualMemoryMetadata): method coerce_sources (line 205) | def coerce_sources(cls, v): method __str__ (line 257) | def __str__(self) -> str: class SearchedTreeNodeTextualMemoryMetadata (line 263) | class SearchedTreeNodeTextualMemoryMetadata(TreeNodeTextualMemoryMetadata): class PreferenceTextualMemoryMetadata (line 271) | class PreferenceTextualMemoryMetadata(TextualMemoryMetadata): class TextualMemoryItem (line 286) | class TextualMemoryItem(BaseModel): method _validate_id (line 306) | def _validate_id(cls, v: str) -> str: method from_dict (line 311) | def from_dict(cls, data: dict) -> "TextualMemoryItem": method to_dict (line 314) | def to_dict(self) -> dict: method _coerce_metadata (line 319) | def _coerce_metadata(cls, v: Any): method __str__ (line 347) | def __str__(self) -> str: function list_all_fields (line 352) | def list_all_fields() -> list[str]: FILE: src/memos/memories/textual/naive.py class NaiveTextMemory (line 59) | class NaiveTextMemory(BaseTextMemory): method __init__ (line 62) | def __init__(self, config: NaiveTextMemoryConfig): method extract (line 70) | def extract(self, messages: MessageList) -> list[TextualMemoryItem]: method add (line 92) | def add(self, memories: list[TextualMemoryItem | dict[str, Any]]) -> N... method update (line 104) | def update(self, memory_id: str, new_memory: TextualMemoryItem | dict[... method search (line 120) | def search(self, query: str, top_k: int, **kwargs) -> list[TextualMemo... method get (line 130) | def get(self, memory_id: str, user_name: str | None = None) -> Textual... method get_all (line 138) | def get_all(self) -> list[TextualMemoryItem]: method get_by_ids (line 142) | def get_by_ids(self, memory_ids: list[str]) -> list[TextualMemoryItem]: method delete (line 151) | def delete(self, memory_ids: list[str]) -> None: method delete_all (line 158) | def delete_all(self) -> None: method load (line 162) | def load(self, dir: str) -> None: method dump (line 174) | def dump(self, dir: str) -> None: method drop (line 184) | def drop( FILE: src/memos/memories/textual/prefer_text_memory/adder.py class BaseAdder (line 24) | class BaseAdder(ABC): method __init__ (line 28) | def __init__(self, llm_provider=None, embedder=None, vector_db=None, t... method add (line 32) | def add(self, memories: list[TextualMemoryItem | dict[str, Any]], *arg... class NaiveAdder (line 42) | class NaiveAdder(BaseAdder): method __init__ (line 45) | def __init__(self, llm_provider=None, embedder=None, vector_db=None, t... method _judge_update_or_add_fast (line 53) | def _judge_update_or_add_fast(self, old_msg: str, new_msg: str) -> bool: method _judge_update_or_add_fine (line 71) | def _judge_update_or_add_fine(self, new_mem: str, retrieved_mems: str)... method _judge_dup_with_text_mem (line 86) | def _judge_dup_with_text_mem(self, new_pref: MilvusVecDBItem) -> bool: method _judge_update_or_add_trace_op (line 124) | def _judge_update_or_add_trace_op( method _dedup_explicit_pref_by_textual (line 141) | def _dedup_explicit_pref_by_textual( method _update_memory_op_trace (line 167) | def _update_memory_op_trace( method _update_memory_fine (line 270) | def _update_memory_fine( method _update_memory_fast (line 329) | def _update_memory_fast( method _update_memory (line 362) | def _update_memory( method _process_single_memory (line 383) | def _process_single_memory(self, memory: TextualMemoryItem) -> list[st... method process_memory_batch (line 413) | def process_memory_batch(self, memories: list[TextualMemoryItem], *arg... method process_memory_single (line 464) | def process_memory_single( method add (line 487) | def add( FILE: src/memos/memories/textual/prefer_text_memory/config.py class BaseAdderConfig (line 8) | class BaseAdderConfig(BaseConfig): class NaiveAdderConfig (line 12) | class NaiveAdderConfig(BaseAdderConfig): class AdderConfigFactory (line 18) | class AdderConfigFactory(BaseConfig): method validate_backend (line 30) | def validate_backend(cls, backend: str) -> str: method create_config (line 37) | def create_config(self) -> "AdderConfigFactory": class BaseExtractorConfig (line 43) | class BaseExtractorConfig(BaseConfig): class NaiveExtractorConfig (line 47) | class NaiveExtractorConfig(BaseExtractorConfig): class ExtractorConfigFactory (line 51) | class ExtractorConfigFactory(BaseConfig): method validate_backend (line 63) | def validate_backend(cls, backend: str) -> str: method create_config (line 70) | def create_config(self) -> "ExtractorConfigFactory": class BaseRetrieverConfig (line 76) | class BaseRetrieverConfig(BaseConfig): class NaiveRetrieverConfig (line 80) | class NaiveRetrieverConfig(BaseRetrieverConfig): class RetrieverConfigFactory (line 84) | class RetrieverConfigFactory(BaseConfig): method validate_backend (line 96) | def validate_backend(cls, backend: str) -> str: method create_config (line 103) | def create_config(self) -> "RetrieverConfigFactory": FILE: src/memos/memories/textual/prefer_text_memory/extractor.py class BaseExtractor (line 35) | class BaseExtractor(ABC): method __init__ (line 39) | def __init__(self, llm_provider=None, embedder=None, vector_db=None): class NaiveExtractor (line 43) | class NaiveExtractor(BaseExtractor): method __init__ (line 46) | def __init__(self, llm_provider=None, embedder=None, vector_db=None): method extract_basic_info (line 54) | def extract_basic_info(self, qa_pair: MessageList) -> dict[str, Any]: method extract_explicit_preference (line 64) | def extract_explicit_preference(self, qa_pair: MessageList | str) -> d... method extract_implicit_preference (line 90) | def extract_implicit_preference(self, qa_pair: MessageList | str) -> d... method _process_single_chunk_explicit (line 118) | def _process_single_chunk_explicit( method _process_single_chunk_implicit (line 149) | def _process_single_chunk_implicit( method extract (line 178) | def extract( FILE: src/memos/memories/textual/prefer_text_memory/factory.py class AdderFactory (line 13) | class AdderFactory(BaseAdder): method from_config (line 21) | def from_config( class ExtractorFactory (line 39) | class ExtractorFactory(BaseExtractor): method from_config (line 47) | def from_config( class RetrieverFactory (line 62) | class RetrieverFactory(BaseRetriever): method from_config (line 70) | def from_config( FILE: src/memos/memories/textual/prefer_text_memory/retrievers.py class BaseRetriever (line 11) | class BaseRetriever(ABC): method __init__ (line 15) | def __init__(self, llm_provider=None, embedder=None, reranker=None, ve... method retrieve (line 19) | def retrieve( class NaiveRetriever (line 29) | class NaiveRetriever(BaseRetriever): method __init__ (line 32) | def __init__(self, llm_provider=None, embedder=None, reranker=None, ve... method _naive_reranker (line 39) | def _naive_reranker( method _original_text_reranker (line 50) | def _original_text_reranker( method retrieve (line 82) | def retrieve( FILE: src/memos/memories/textual/prefer_text_memory/spliter.py class Splitter (line 10) | class Splitter: method __init__ (line 13) | def __init__( method _split_with_lookback (line 54) | def _split_with_lookback(self, data: MessageList) -> list[MessageList]: method _split_with_overlap (line 77) | def _split_with_overlap(self, data: MessageList) -> list[MessageList]: method split_chunks (line 95) | def split_chunks(self, data: MessageList | str, **kwargs) -> list[Mess... method build_qa_pairs (line 117) | def build_qa_pairs(self, chat_history: MessageList) -> list[MessageList]: FILE: src/memos/memories/textual/prefer_text_memory/utils.py function convert_messages_to_string (line 9) | def convert_messages_to_string(messages: MessageList) -> str: function deduplicate_preferences (line 50) | def deduplicate_preferences( FILE: src/memos/memories/textual/preference.py class PreferenceTextMemory (line 33) | class PreferenceTextMemory(BaseTextMemory): method __init__ (line 36) | def __init__(self, config: PreferenceTextMemoryConfig): method get_memory (line 69) | def get_memory( method search (line 81) | def search( method load (line 97) | def load(self, dir: str) -> None: method dump (line 128) | def dump(self, dir: str) -> None: method extract (line 154) | def extract(self, messages: MessageList) -> list[TextualMemoryItem]: method add (line 163) | def add(self, memories: list[TextualMemoryItem | dict[str, Any]]) -> l... method update (line 171) | def update(self, memory_id: str, new_memory: TextualMemoryItem | dict[... method get (line 175) | def get(self, memory_id: str, user_name: str | None = None) -> Textual... method get_with_collection_name (line 184) | def get_with_collection_name( method get_by_ids (line 209) | def get_by_ids(self, memory_ids: list[str]) -> list[TextualMemoryItem]: method get_by_ids_with_collection_name (line 218) | def get_by_ids_with_collection_name( method get_all (line 246) | def get_all(self) -> list[TextualMemoryItem]: method get_memory_by_filter (line 265) | def get_memory_by_filter( method delete (line 308) | def delete(self, memory_ids: list[str]) -> None: method delete_by_filter (line 317) | def delete_by_filter(self, filter: dict[str, Any]) -> None: method delete_with_collection_name (line 326) | def delete_with_collection_name(self, collection_name: str, memory_ids... method delete_all (line 334) | def delete_all(self) -> None: method drop (line 340) | def drop( FILE: src/memos/memories/textual/simple_preference.py class SimplePreferenceTextMemory (line 16) | class SimplePreferenceTextMemory(PreferenceTextMemory): method __init__ (line 19) | def __init__( FILE: src/memos/memories/textual/simple_tree.py class SimpleTreeTextMemory (line 25) | class SimpleTreeTextMemory(TreeTextMemory): method __init__ (line 28) | def __init__( FILE: src/memos/memories/textual/tree.py class TreeTextMemory (line 39) | class TreeTextMemory(BaseTextMemory): method __init__ (line 42) | def __init__(self, config: TreeTextMemoryConfig): method add (line 103) | def add( method replace_working_memory (line 116) | def replace_working_memory( method get_working_memory (line 121) | def get_working_memory(self, user_name: str | None = None) -> list[Tex... method get_current_memory_size (line 132) | def get_current_memory_size(self, user_name: str | None = None) -> dic... method get_searcher (line 139) | def get_searcher( method search (line 157) | def search( method get_relevant_subgraph (line 233) | def get_relevant_subgraph( method extract (line 347) | def extract(self, messages: MessageList) -> list[TextualMemoryItem]: method update (line 350) | def update(self, memory_id: str, new_memory: TextualMemoryItem | dict[... method get (line 353) | def get(self, memory_id: str, user_name: str | None = None) -> Textual... method get_by_ids (line 365) | def get_by_ids( method get_all (line 371) | def get_all( method delete (line 394) | def delete(self, memory_ids: list[str], user_name: str | None = None) ... method delete_by_memory_ids (line 404) | def delete_by_memory_ids(self, memory_ids: list[str]) -> None: method delete_all (line 411) | def delete_all(self, user_name: str | None = None) -> None: method delete_by_filter (line 420) | def delete_by_filter( method load (line 431) | def load(self, dir: str, user_name: str | None = None) -> None: method dump (line 452) | def dump(self, dir: str, include_embedding: bool = False, user_name: s... method drop (line 470) | def drop(self, keep_last_n: int = 30) -> None: method _cleanup_old_backups (line 497) | def _cleanup_old_backups(root_dir: Path, keep_last_n: int) -> None: method add_rawfile_nodes_n_edges (line 516) | def add_rawfile_nodes_n_edges( method add_graph_edges (line 588) | def add_graph_edges( FILE: src/memos/memories/textual/tree_text_memory/organize/handler.py class NodeHandler (line 22) | class NodeHandler: method __init__ (line 25) | def __init__(self, graph_store: Neo4jGraphDB, llm: BaseLLM, embedder: ... method detect (line 30) | def detect(self, memory, top_k: int = 5, scope=None, user_name: str | ... method resolve (line 76) | def resolve( method _hard_update (line 131) | def _hard_update( method _resolve_in_graph (line 151) | def _resolve_in_graph( method _merge_metadata (line 192) | def _merge_metadata( FILE: src/memos/memories/textual/tree_text_memory/organize/history_manager.py function _append_related_content (line 18) | def _append_related_content( function _detach_related_content (line 52) | def _detach_related_content(new_item: TextualMemoryItem) -> None: class MemoryHistoryManager (line 70) | class MemoryHistoryManager: method __init__ (line 71) | def __init__(self, nli_client: NLIClient, graph_db: BaseGraphDB) -> None: method resolve_history_via_nli (line 82) | def resolve_history_via_nli( method mark_memory_status (line 140) | def mark_memory_status( FILE: src/memos/memories/textual/tree_text_memory/organize/manager.py function extract_working_binding_ids (line 23) | def extract_working_binding_ids(mem_items: list[TextualMemoryItem]) -> s... class MemoryManager (line 54) | class MemoryManager: method __init__ (line 55) | def __init__( method add (line 89) | def add( method _add_memories_parallel (line 120) | def _add_memories_parallel( method _add_memories_batch (line 138) | def _add_memories_batch( method _cleanup_working_memory (line 246) | def _cleanup_working_memory(self, user_name: str | None = None) -> None: method replace_working_memory (line 259) | def replace_working_memory( method get_current_memory_size (line 286) | def get_current_memory_size(self, user_name: str | None = None) -> dic... method _refresh_memory_size (line 293) | def _refresh_memory_size(self, user_name: str | None = None) -> None: method _process_memory (line 305) | def _process_memory(self, memory: TextualMemoryItem, user_name: str | ... method _add_memory_to_db (line 364) | def _add_memory_to_db( method _add_to_graph_memory (line 385) | def _add_to_graph_memory( method _inherit_edges (line 421) | def _inherit_edges(self, from_id: str, to_id: str, user_name: str | No... method _ensure_structure_path (line 451) | def _ensure_structure_path( method remove_and_refresh_memory (line 515) | def remove_and_refresh_memory(self, user_name: str | None = None): method _cleanup_memories_if_needed (line 519) | def _cleanup_memories_if_needed(self, user_name: str | None = None) ->... method wait_reorganizer (line 541) | def wait_reorganizer(self): method close (line 548) | def close(self): method __del__ (line 552) | def __del__(self): FILE: src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py class RelationAndReasoningDetector (line 20) | class RelationAndReasoningDetector: method __init__ (line 21) | def __init__(self, graph_store: Neo4jGraphDB, llm: BaseLLM, embedder: ... method process_node (line 26) | def process_node(self, node: GraphDBNode, exclude_ids: list[str], top_... method _detect_pairwise_causal_condition_relations (line 88) | def _detect_pairwise_causal_condition_relations( method _infer_fact_nodes_from_relations (line 118) | def _infer_fact_nodes_from_relations(self, pairwise_results: dict): method _detect_sequence_links (line 156) | def _detect_sequence_links(self, node: GraphDBNode, nearest_nodes: lis... method _detect_aggregate_node_for_group (line 172) | def _detect_aggregate_node_for_group( method _call_llm (line 209) | def _call_llm(self, prompt: str) -> str: method _parse_json_result (line 219) | def _parse_json_result(self, response_text): method _parse_relation_result (line 227) | def _parse_relation_result(self, response_text: str) -> str: FILE: src/memos/memories/textual/tree_text_memory/organize/reorganizer.py function build_summary_parent_node (line 30) | def build_summary_parent_node(cluster_nodes): class QueueMessage (line 46) | class QueueMessage: method __init__ (line 47) | def __init__( method __str__ (line 64) | def __str__(self) -> str: method __lt__ (line 67) | def __lt__(self, other: "QueueMessage") -> bool: function extract_first_to_last_brace (line 72) | def extract_first_to_last_brace(text: str): class GraphStructureReorganizer (line 81) | class GraphStructureReorganizer: method __init__ (line 82) | def __init__( method add_message (line 108) | def add_message(self, message: QueueMessage): method wait_until_current_task_done (line 111) | def wait_until_current_task_done(self): method _run_message_consumer_loop (line 133) | def _run_message_consumer_loop(self): method _run_structure_organizer_loop (line 151) | def _run_structure_organizer_loop(self): method stop (line 173) | def stop(self): method handle_message (line 187) | def handle_message(self, message: QueueMessage): method handle_add (line 192) | def handle_add(self, message: QueueMessage): method handle_remove (line 208) | def handle_remove(self, message: QueueMessage): method optimize_structure (line 211) | def optimize_structure( method _process_cluster_and_write (line 314) | def _process_cluster_and_write( method _local_subcluster (line 416) | def _local_subcluster( method _partition (line 459) | def _partition(self, nodes, min_cluster_size: int = 10, max_cluster_si... method _summarize_cluster (line 550) | def _summarize_cluster(self, cluster_nodes: list[GraphDBNode], scope: ... method _parse_json_result (line 598) | def _parse_json_result(self, response_text): method _create_parent_node (line 609) | def _create_parent_node(self, parent_node: GraphDBNode, user_name: str... method _link_cluster_nodes (line 620) | def _link_cluster_nodes( method _preprocess_message (line 635) | def _preprocess_message(self, message: QueueMessage) -> bool: method _convert_id_to_node (line 644) | def _convert_id_to_node(self, message: QueueMessage) -> QueueMessage: FILE: src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py class AdvancedSearcher (line 25) | class AdvancedSearcher(Searcher): method __init__ (line 26) | def __init__( method load_template (line 59) | def load_template(self, template_name: str) -> str: method build_prompt (line 65) | def build_prompt(self, template_name: str, **kwargs) -> str: method stage_retrieve (line 71) | def stage_retrieve( method judge_memories (line 135) | def judge_memories(self, query: str, text_memories: str): method tree_memories_to_text_memories (line 168) | def tree_memories_to_text_memories(self, memories: list[TextualMemoryI... method get_final_memories (line 180) | def get_final_memories(self, user_id: str, top_k: int, mem_list: list[... method memory_recreate_enhancement (line 193) | def memory_recreate_enhancement( method deep_search (line 232) | def deep_search( FILE: src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py class EnhancedBM25 (line 18) | class EnhancedBM25: method __init__ (line 22) | def __init__(self, tokenizer=None, en_model="en_core_web_sm", zh_model... method _tokenize_doc (line 37) | def _tokenize_doc(self, text): method _prepare_corpus_data (line 44) | def _prepare_corpus_data(self, corpus, corpus_name="default"): method clear_cache (line 58) | def clear_cache(self, corpus_name=None): method get_cache_info (line 67) | def get_cache_info(self): method _search_docs (line 76) | def _search_docs( method search (line 165) | def search(self, query: str, node_dicts: list[dict], corpus_name="defa... FILE: src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py class BochaAISearchAPI (line 27) | class BochaAISearchAPI: method __init__ (line 30) | def __init__(self, api_key: str, max_results: int = 20): method search_web (line 49) | def search_web( method search_ai (line 72) | def search_ai( method _post (line 102) | def _post(self, url: str, body: dict) -> list[dict]: class BochaAISearchRetriever (line 132) | class BochaAISearchRetriever: method __init__ (line 140) | def __init__( method _extract_tags (line 164) | def _extract_tags(self, title: str, content: str, summary: str, parsed... method retrieve_from_internet (line 272) | def retrieve_from_internet( method retrieve_from_web (line 292) | def retrieve_from_web( method retrieve_from_ai (line 299) | def retrieve_from_ai( method _convert_to_mem_items (line 306) | def _convert_to_mem_items( method _process_result (line 329) | def _process_result( FILE: src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py class GoogleCustomSearchAPI (line 17) | class GoogleCustomSearchAPI: method __init__ (line 20) | def __init__( method search (line 38) | def search(self, query: str, num_results: int | None = None, start_ind... method get_all_results (line 69) | def get_all_results(self, query: str, max_results: int | None = None) ... class InternetGoogleRetriever (line 107) | class InternetGoogleRetriever: method __init__ (line 110) | def __init__( method retrieve_from_internet (line 133) | def retrieve_from_internet( method _extract_entities (line 195) | def _extract_entities(self, title: str, snippet: str) -> list[str]: method _extract_tags (line 226) | def _extract_tags(self, title: str, snippet: str, parsed_goal=None) ->... FILE: src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py class InternetRetrieverFactory (line 16) | class InternetRetrieverFactory: method from_config (line 28) | def from_config( method create_google_retriever (line 88) | def create_google_retriever( FILE: src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py class PreUpdateRetriever (line 16) | class PreUpdateRetriever: method __init__ (line 17) | def __init__(self, graph_db, embedder): method _adjust_perspective (line 31) | def _adjust_perspective(self, text: str, role: str, lang: str) -> str: method _preprocess_query (line 77) | def _preprocess_query(self, item: TextualMemoryItem) -> str: method _get_full_memories (line 114) | def _get_full_memories( method vector_search (line 123) | def vector_search( method keyword_search (line 151) | def keyword_search( method retrieve (line 190) | def retrieve( FILE: src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py class MemoryReasoner (line 11) | class MemoryReasoner: method __init__ (line 17) | def __init__(self, llm): method reason (line 20) | def reason( method _parse_selected_ids (line 50) | def _parse_selected_ids(self, response_text: str) -> list[str]: FILE: src/memos/memories/textual/tree_text_memory/retrieve/recall.py class GraphMemoryRetriever (line 15) | class GraphMemoryRetriever: method __init__ (line 20) | def __init__( method retrieve (line 35) | def retrieve( method retrieve_from_cube (line 140) | def retrieve_from_cube( method retrieve_from_mixed (line 177) | def retrieve_from_mixed( method _graph_recall (line 196) | def _graph_recall( method _vector_recall (line 324) | def _vector_recall( method _bm25_recall (line 442) | def _bm25_recall( method _fulltext_recall (line 480) | def _fulltext_recall( FILE: src/memos/memories/textual/tree_text_memory/retrieve/reranker.py function batch_cosine_similarity (line 9) | def batch_cosine_similarity( class MemoryReranker (line 39) | class MemoryReranker: method __init__ (line 44) | def __init__(self, llm: OpenAILLM | OllamaLLM | AzureLLM, embedder: Ol... method rerank (line 55) | def rerank( FILE: src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py class ParsedTaskGoal (line 5) | class ParsedTaskGoal: FILE: src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py function parse_structured_output (line 16) | def parse_structured_output(content: str) -> dict[str, str | list[str]]: function find_project_root (line 86) | def find_project_root(marker=".git"): class StopwordManager (line 96) | class StopwordManager: method _load_stopwords (line 100) | def _load_stopwords(cls): method _load_default_stopwords (line 112) | def _load_default_stopwords(cls): method get_stopwords (line 344) | def get_stopwords(cls): method filter_words (line 350) | def filter_words(cls, words): method is_stopword (line 356) | def is_stopword(cls, word): class FastTokenizer (line 362) | class FastTokenizer: method __init__ (line 363) | def __init__(self, use_jieba=True, use_stopwords=True): method tokenize_mixed (line 369) | def tokenize_mixed(self, text, **kwargs): method _is_chinese (line 376) | def _is_chinese(self, text): method _tokenize_chinese (line 386) | def _tokenize_chinese(self, text): method _tokenize_english (line 397) | def _tokenize_english(self, text): function parse_json_result (line 405) | def parse_json_result(response_text): function detect_lang (line 421) | def detect_lang(text): function format_memory_item (line 434) | def format_memory_item(memory_data: Any) -> dict[str, Any]: function find_best_unrelated_subgroup (line 450) | def find_best_unrelated_subgroup(sentences: list, similarity_matrix: lis... function cosine_similarity_matrix (line 468) | def cosine_similarity_matrix(embeddings: list[list[float]]) -> list[list... FILE: src/memos/memories/textual/tree_text_memory/retrieve/searcher.py class Searcher (line 41) | class Searcher: method __init__ (line 42) | def __init__( method retrieve (line 76) | def retrieve( method post_retrieve (line 126) | def post_retrieve( method search (line 160) | def search( method _parse_task (line 259) | def _parse_task( method _retrieve_paths (line 330) | def _retrieve_paths( method _retrieve_from_working_memory (line 472) | def _retrieve_from_working_memory( method _retrieve_from_keyword (line 509) | def _retrieve_from_keyword( method _retrieve_from_long_term_and_user (line 606) | def _retrieve_from_long_term_and_user( method _retrieve_from_memcubes (line 699) | def _retrieve_from_memcubes( method _retrieve_from_internet (line 720) | def _retrieve_from_internet( method _retrieve_from_tool_memory (line 756) | def _retrieve_from_tool_memory( method _retrieve_from_skill_memory (line 848) | def _retrieve_from_skill_memory( method _retrieve_from_preference_memory (line 900) | def _retrieve_from_preference_memory( method _retrieve_simple (line 951) | def _retrieve_simple( method _deduplicate_results (line 1002) | def _deduplicate_results(self, results): method _sort_and_trim (line 1011) | def _sort_and_trim( method _deduplicate_rawfile_results (line 1136) | def _deduplicate_rawfile_results(self, results, user_name: str | None ... method _filter_intermediate_content (line 1183) | def _filter_intermediate_content(self, results): method _update_usage_history (line 1196) | def _update_usage_history(self, items, info, user_name: str | None = N... method _update_usage_history_worker (line 1223) | def _update_usage_history_worker( method _cot_query (line 1232) | def _cot_query( FILE: src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py class TaskGoalParser (line 18) | class TaskGoalParser: method __init__ (line 25) | def __init__(self, llm=BaseLLM): method parse (line 30) | def parse( method _parse_fast (line 55) | def _parse_fast(self, task_description: str, **kwargs) -> ParsedTaskGoal: method _parse_fine (line 83) | def _parse_fine( method _parse_response (line 107) | def _parse_response(self, response: str, **kwargs) -> ParsedTaskGoal: FILE: src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py class XinyuSearchAPI (line 25) | class XinyuSearchAPI: method __init__ (line 28) | def __init__(self, access_key: str, search_engine_id: str, max_results... method query_detail (line 51) | def query_detail(self, body: dict | None = None, detail: bool = True) ... method search (line 84) | def search(self, query: str, max_results: int | None = None) -> list[d... class XinyuSearchRetriever (line 114) | class XinyuSearchRetriever: method __init__ (line 117) | def __init__( method retrieve_from_internet (line 138) | def retrieve_from_internet( method _extract_entities (line 176) | def _extract_entities(self, title: str, content: str, summary: str) ->... method _extract_tags (line 201) | def _extract_tags(self, title: str, content: str, summary: str, parsed... method _process_result (line 309) | def _process_result( FILE: src/memos/memos_tools/dinding_report_bot.py function get_access_token (line 83) | def get_access_token(): function _pick_font (line 89) | def _pick_font(size: int = 48) -> ImageFont.ImageFont: function make_header (line 107) | def make_header( function _sign (line 165) | def _sign(secret: str, ts: str): function _send_md (line 172) | def _send_md(title: str, md: str, type="user", at=None): function upload_bytes_to_oss (line 193) | def upload_bytes_to_oss( function _md_table (line 233) | def _md_table(data: dict, is_error: bool = False) -> str: function upload_to_oss (line 253) | def upload_to_oss( function send_ding_reminder (line 263) | def send_ding_reminder( function error_bot (line 296) | def error_bot( function _kv_lines (line 369) | def _kv_lines(d: dict, emoji: str = "", heading: str = "", heading_color... function online_bot (line 382) | def online_bot( FILE: src/memos/memos_tools/lockfree_dict.py class CopyOnWriteDict (line 16) | class CopyOnWriteDict(Generic[K, V]): method __init__ (line 25) | def __init__(self, initial_dict: dict[K, V] | None = None): method __getitem__ (line 30) | def __getitem__(self, key: K) -> V: method __setitem__ (line 34) | def __setitem__(self, key: K, value: V) -> None: method __delitem__ (line 43) | def __delitem__(self, key: K) -> None: method __contains__ (line 50) | def __contains__(self, key: K) -> bool: method __len__ (line 54) | def __len__(self) -> int: method __bool__ (line 58) | def __bool__(self) -> bool: method __iter__ (line 62) | def __iter__(self) -> Iterator[K]: method get (line 66) | def get(self, key: K, default: V | None = None) -> V: method keys (line 70) | def keys(self) -> KeysView[K]: method values (line 74) | def values(self) -> ValuesView[V]: method items (line 78) | def items(self) -> ItemsView[K, V]: method copy (line 82) | def copy(self) -> dict[K, V]: method update (line 86) | def update(self, *args, **kwargs) -> None: method clear (line 93) | def clear(self) -> None: method pop (line 98) | def pop(self, key: K, *args) -> V: method setdefault (line 106) | def setdefault(self, key: K, default: V | None = None) -> V: FILE: src/memos/memos_tools/notification_service.py function get_online_bot_function (line 13) | def get_online_bot_function() -> Callable | None: function get_error_bot_function (line 30) | def get_error_bot_function() -> Callable | None: FILE: src/memos/memos_tools/notification_utils.py function send_online_bot_notification (line 15) | def send_online_bot_notification( function send_online_bot_notification_async (line 55) | async def send_online_bot_notification_async( function send_error_bot_notification (line 100) | def send_error_bot_notification( function send_error_alert (line 133) | def send_error_alert( FILE: src/memos/memos_tools/singleton.py class FactorySingleton (line 18) | class FactorySingleton: method __init__ (line 21) | def __init__(self): method _generate_cache_key (line 25) | def _generate_cache_key(self, config: Any, *args, **kwargs) -> str: method _filter_temporal_fields (line 51) | def _filter_temporal_fields(self, config_data: Any) -> Any: method get_or_create (line 83) | def get_or_create(self, factory_class: type, cache_key: str, creator_f... method clear_cache (line 100) | def clear_cache(self, factory_class: type | None = None): function singleton_factory (line 115) | def singleton_factory(factory_class: type | str | None = None): FILE: src/memos/memos_tools/thread_safe_dict.py class ReadWriteLock (line 20) | class ReadWriteLock: method __init__ (line 23) | def __init__(self): method acquire_read (line 28) | def acquire_read(self): method release_read (line 36) | def release_read(self): method acquire_write (line 47) | def acquire_write(self): method release_write (line 53) | def release_write(self): class ThreadSafeDict (line 58) | class ThreadSafeDict(Generic[K, V]): method __init__ (line 67) | def __init__(self, initial_dict: dict[K, V] | None = None): method __getitem__ (line 78) | def __getitem__(self, key: K) -> V: method __setitem__ (line 87) | def __setitem__(self, key: K, value: V) -> None: method __delitem__ (line 96) | def __delitem__(self, key: K) -> None: method __contains__ (line 105) | def __contains__(self, key: K) -> bool: method __len__ (line 114) | def __len__(self) -> int: method __bool__ (line 122) | def __bool__(self) -> bool: method __iter__ (line 131) | def __iter__(self) -> Iterator[K]: method get (line 141) | def get(self, key: K, default: V | None = None) -> V: method pop (line 150) | def pop(self, key: K, *args) -> V: method update (line 159) | def update(self, *args, **kwargs) -> None: method clear (line 168) | def clear(self) -> None: method keys (line 177) | def keys(self) -> KeysView[K]: method values (line 186) | def values(self) -> ValuesView[V]: method items (line 195) | def items(self) -> ItemsView[K, V]: method copy (line 204) | def copy(self) -> dict[K, V]: method setdefault (line 213) | def setdefault(self, key: K, default: V | None = None) -> V: method __repr__ (line 221) | def __repr__(self) -> str: method __str__ (line 229) | def __str__(self) -> str: class SimpleThreadSafeDict (line 238) | class SimpleThreadSafeDict(Generic[K, V]): method __init__ (line 244) | def __init__(self, initial_dict: dict[K, V] | None = None): method __getitem__ (line 248) | def __getitem__(self, key: K) -> V: method __setitem__ (line 252) | def __setitem__(self, key: K, value: V) -> None: method __delitem__ (line 256) | def __delitem__(self, key: K) -> None: method __contains__ (line 260) | def __contains__(self, key: K) -> bool: method __len__ (line 264) | def __len__(self) -> int: method __bool__ (line 268) | def __bool__(self) -> bool: method __iter__ (line 272) | def __iter__(self) -> Iterator[K]: method get (line 276) | def get(self, key: K, default: V | None = None) -> V: method pop (line 280) | def pop(self, key: K, *args) -> V: method update (line 284) | def update(self, *args, **kwargs) -> None: method clear (line 288) | def clear(self) -> None: method keys (line 292) | def keys(self): method values (line 296) | def values(self): method items (line 300) | def items(self): method copy (line 304) | def copy(self) -> dict[K, V]: method setdefault (line 308) | def setdefault(self, key: K, default: V | None = None) -> V: FILE: src/memos/memos_tools/thread_safe_dict_segment.py class FastReadWriteLock (line 13) | class FastReadWriteLock: method __init__ (line 17) | def __init__(self): method acquire_read (line 28) | def acquire_read(self) -> bool: method release_read (line 55) | def release_read(self): method acquire_write (line 62) | def acquire_write(self) -> bool: method release_write (line 78) | def release_write(self): class SegmentedLock (line 87) | class SegmentedLock: method __init__ (line 90) | def __init__(self, segment_count: int = 64): method get_lock (line 94) | def get_lock(self, key: K) -> FastReadWriteLock: method read_lock (line 100) | def read_lock(self, key: K): method write_lock (line 110) | def write_lock(self, key: K): class OptimizedThreadSafeDict (line 120) | class OptimizedThreadSafeDict(Generic[K, V]): method __init__ (line 129) | def __init__( method _get_segment (line 142) | def _get_segment(self, key: K) -> int: method __getitem__ (line 146) | def __getitem__(self, key: K) -> V: method __setitem__ (line 152) | def __setitem__(self, key: K, value: V) -> None: method __delitem__ (line 158) | def __delitem__(self, key: K) -> None: method __contains__ (line 164) | def __contains__(self, key: K) -> bool: method get (line 170) | def get(self, key: K, default: V | None = None) -> V | None: method pop (line 176) | def pop(self, key: K, *args) -> V: method setdefault (line 182) | def setdefault(self, key: K, default: V | None = None) -> V: method update (line 188) | def update(self, other=None, **kwargs) -> None: method clear (line 215) | def clear(self) -> None: method __len__ (line 234) | def __len__(self) -> int: method __bool__ (line 256) | def __bool__(self) -> bool: method keys (line 260) | def keys(self) -> list[K]: method values (line 282) | def values(self) -> list[V]: method items (line 302) | def items(self) -> list[tuple[K, V]]: method copy (line 322) | def copy(self) -> dict[K, V]: method __iter__ (line 342) | def __iter__(self) -> Iterator[K]: method __repr__ (line 346) | def __repr__(self) -> str: method stats (line 350) | def stats(self) -> dict[str, Any]: FILE: src/memos/multi_mem_cube/composite_cube.py class CompositeCubeView (line 17) | class CompositeCubeView(MemCubeView): method add_memories (line 28) | def add_memories(self, add_req: APIADDRequest) -> list[dict[str, Any]]: method search_memories (line 40) | def search_memories(self, search_req: APISearchRequest) -> dict[str, A... method feedback_memories (line 79) | def feedback_memories(self, feedback_req: APIFeedbackRequest) -> list[... FILE: src/memos/multi_mem_cube/single_cube.py class SingleCubeView (line 48) | class SingleCubeView(MemCubeView): method add_memories (line 59) | def add_memories(self, add_req: APIADDRequest) -> list[dict[str, Any]]: method search_memories (line 89) | def search_memories(self, search_req: APISearchRequest) -> dict[str, A... method feedback_memories (line 130) | def feedback_memories(self, feedback_req: APIFeedbackRequest) -> dict[... method _get_search_mode (line 171) | def _get_search_mode(self, mode: str) -> str: method _search_text (line 184) | def _search_text( method _deep_search (line 217) | def _deep_search( method _agentic_search (line 248) | def _agentic_search( method _fine_search (line 261) | def _fine_search( method _fast_search (line 379) | def _fast_search( method _postformat_memories (line 409) | def _postformat_memories( method _mix_search (line 462) | def _mix_search( method _get_sync_mode (line 482) | def _get_sync_mode(self) -> str: method _schedule_memory_tasks (line 494) | def _schedule_memory_tasks( method add_before_search (line 552) | def add_before_search( method _process_text_mem (line 651) | def _process_text_mem( FILE: src/memos/multi_mem_cube/views.py class MemCubeView (line 10) | class MemCubeView(Protocol): method add_memories (line 17) | def add_memories(self, add_req: APIADDRequest) -> list[dict[str, Any]]: method search_memories (line 30) | def search_memories(self, search_req: APISearchRequest) -> dict[str, A... method feedback_memories (line 43) | def feedback_memories(self, feedback_req: APIFeedbackRequest) -> dict[... FILE: src/memos/parsers/base.py class BaseParser (line 6) | class BaseParser(ABC): method __init__ (line 10) | def __init__(self, config: BaseParserConfig): method parse (line 14) | def parse(self, file_path: str) -> str: FILE: src/memos/parsers/factory.py class ParserFactory (line 9) | class ParserFactory(BaseParser): method from_config (line 16) | def from_config(cls, config_factory: ParserConfigFactory) -> BaseParser: FILE: src/memos/parsers/markitdown.py class MarkItDownParser (line 10) | class MarkItDownParser(BaseParser): method __init__ (line 13) | def __init__(self, config: MarkItDownParserConfig): method parse (line 21) | def parse(self, file_path: str) -> str: FILE: src/memos/reranker/base.py class BaseReranker (line 12) | class BaseReranker(ABC): method rerank (line 16) | def rerank( FILE: src/memos/reranker/concat.py function get_encoded_tokens (line 11) | def get_encoded_tokens(content: str) -> int: function truncate_data (line 22) | def truncate_data(data: list[str | dict[str, Any] | Any], max_tokens: in... function process_source (line 44) | def process_source( function concat_original_source (line 70) | def concat_original_source( FILE: src/memos/reranker/cosine_local.py function _cosine_one_to_many (line 25) | def _cosine_one_to_many(q: list[float], m: list[list[float]]) -> list[fl... class CosineLocalReranker (line 52) | class CosineLocalReranker(BaseReranker): method __init__ (line 53) | def __init__( method rerank (line 63) | def rerank( FILE: src/memos/reranker/factory.py class RerankerFactory (line 23) | class RerankerFactory: method from_config (line 26) | def from_config(cfg: RerankerConfigFactory | None) -> BaseReranker | N... FILE: src/memos/reranker/http_bge.py function _value_matches (line 31) | def _value_matches(item_value: Any, wanted: Any) -> bool: class HTTPBGEReranker (line 52) | class HTTPBGEReranker(BaseReranker): method __init__ (line 77) | def __init__( method rerank (line 133) | def rerank( method _get_attr_or_key (line 243) | def _get_attr_or_key(self, obj: Any, key: str) -> Any: method _apply_boost_generic (line 287) | def _apply_boost_generic( FILE: src/memos/reranker/http_bge_strategy.py function _value_matches (line 31) | def _value_matches(item_value: Any, wanted: Any) -> bool: class HTTPBGERerankerStrategy (line 52) | class HTTPBGERerankerStrategy(BaseReranker): method __init__ (line 77) | def __init__( method rerank (line 128) | def rerank( method _get_attr_or_key (line 246) | def _get_attr_or_key(self, obj: Any, key: str) -> Any: method _apply_boost_generic (line 290) | def _apply_boost_generic( FILE: src/memos/reranker/noop.py class NoopReranker (line 14) | class NoopReranker(BaseReranker): method rerank (line 16) | def rerank( FILE: src/memos/reranker/strategies/base.py class BaseRerankerStrategy (line 9) | class BaseRerankerStrategy(ABC): method prepare_documents (line 13) | def prepare_documents( method reconstruct_items (line 38) | def reconstruct_items( FILE: src/memos/reranker/strategies/concat_background.py class ConcatBackgroundStrategy (line 15) | class ConcatBackgroundStrategy(BaseRerankerStrategy): method prepare_documents (line 24) | def prepare_documents( method reconstruct_items (line 63) | def reconstruct_items( FILE: src/memos/reranker/strategies/concat_docsource.py class ConcatDocSourceStrategy (line 15) | class ConcatDocSourceStrategy(BaseRerankerStrategy): method prepare_documents (line 32) | def prepare_documents( method reconstruct_items (line 79) | def reconstruct_items( FILE: src/memos/reranker/strategies/dialogue_common.py function strip_memory_tags (line 18) | def strip_memory_tags(item: TextualMemoryItem) -> str: function extract_content (line 24) | def extract_content(msg: dict[str, Any] | str) -> str: class DialoguePair (line 33) | class DialoguePair(BaseModel): method user_content (line 46) | def user_content(self) -> str: method assistant_content (line 51) | def assistant_content(self) -> str: class DialogueRankingTracker (line 56) | class DialogueRankingTracker: method __init__ (line 59) | def __init__(self): method add_dialogue_pair (line 62) | def add_dialogue_pair( method get_documents_for_ranking (line 98) | def get_documents_for_ranking(self, concat_memory: bool = True) -> lis... method get_dialogue_pair_by_index (line 105) | def get_dialogue_pair_by_index(self, index: int) -> DialoguePair | None: FILE: src/memos/reranker/strategies/factory.py class RerankerStrategyFactory (line 16) | class RerankerStrategyFactory: method from_config (line 27) | def from_config(cls, config_factory: str = "single_turn") -> BaseReran... FILE: src/memos/reranker/strategies/single_turn.py class SingleTurnStrategy (line 11) | class SingleTurnStrategy(BaseRerankerStrategy): method prepare_documents (line 23) | def prepare_documents( method reconstruct_items (line 70) | def reconstruct_items( FILE: src/memos/reranker/strategies/singleturn_outmem.py class SingleTurnOutMemStrategy (line 15) | class SingleTurnOutMemStrategy(SingleTurnStrategy): method prepare_documents (line 27) | def prepare_documents( method reconstruct_items (line 50) | def reconstruct_items( FILE: src/memos/search/search_service.py class SearchContext (line 13) | class SearchContext: function build_search_context (line 21) | def build_search_context( function search_text_memories (line 39) | def search_text_memories( FILE: src/memos/templates/cloud_service_prompt.py function get_cloud_chat_prompt (line 97) | def get_cloud_chat_prompt(lang: str = "en") -> str: FILE: src/memos/templates/instruction_completion.py function instruct_completion (line 7) | def instruct_completion( FILE: src/memos/templates/mos_prompts.py function get_memos_prompt (line 380) | def get_memos_prompt(date, tone, verbosity, mode="base", lang="en"): FILE: src/memos/types/general_types.py class MessageDict (line 51) | class MessageDict(TypedDict, total=False): class ChatHistory (line 74) | class ChatHistory(BaseModel): class SearchMode (line 90) | class SearchMode(str, Enum): class FineStrategy (line 98) | class FineStrategy(str, Enum): class MOSSearchResult (line 124) | class MOSSearchResult(TypedDict): class PermissionDict (line 138) | class PermissionDict(TypedDict, total=False): class UserContext (line 145) | class UserContext(BaseModel): FILE: src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py class Audio (line 17) | class Audio(TypedDict, total=False): class ChatCompletionAssistantMessageParam (line 27) | class ChatCompletionAssistantMessageParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py class ImageURL (line 11) | class ImageURL(TypedDict, total=False): class ChatCompletionContentPartImageParam (line 26) | class ChatCompletionContentPartImageParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py class InputAudio (line 11) | class InputAudio(TypedDict, total=False): class ChatCompletionContentPartInputAudioParam (line 19) | class ChatCompletionContentPartInputAudioParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py class FileFile (line 15) | class FileFile(TypedDict, total=False): class File (line 31) | class File(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py class ChatCompletionContentPartRefusalParam (line 11) | class ChatCompletionContentPartRefusalParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py class ChatCompletionContentPartTextParam (line 11) | class ChatCompletionContentPartTextParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py class Custom (line 11) | class Custom(TypedDict, total=False): class ChatCompletionMessageCustomToolCallParam (line 19) | class ChatCompletionMessageCustomToolCallParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py class Function (line 11) | class Function(TypedDict, total=False): class ChatCompletionMessageFunctionToolCallParam (line 24) | class ChatCompletionMessageFunctionToolCallParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py class ChatCompletionSystemMessageParam (line 15) | class ChatCompletionSystemMessageParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py class ChatCompletionToolMessageParam (line 15) | class ChatCompletionToolMessageParam(TypedDict, total=False): FILE: src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py class ChatCompletionUserMessageParam (line 15) | class ChatCompletionUserMessageParam(TypedDict, total=False): FILE: src/memos/utils.py function timed_with_status (line 11) | def timed_with_status( function timed (line 102) | def timed(func=None, *, log=True, log_prefix=""): FILE: src/memos/vec_dbs/base.py class BaseVecDB (line 8) | class BaseVecDB(ABC): method __init__ (line 12) | def __init__(self, config: BaseVecDBConfig): method create_collection (line 18) | def create_collection(self) -> None: method list_collections (line 22) | def list_collections(self) -> list[str]: method delete_collection (line 26) | def delete_collection(self, name: str) -> None: method collection_exists (line 30) | def collection_exists(self, name: str) -> bool: method search (line 36) | def search( method get_by_id (line 55) | def get_by_id(self, id: str) -> VecDBItem | None: method get_by_ids (line 59) | def get_by_ids(self, ids: list[str]) -> list[VecDBItem]: method get_by_filter (line 63) | def get_by_filter(self, filter: dict[str, Any]) -> list[VecDBItem]: method get_all (line 75) | def get_all(self) -> list[VecDBItem]: method count (line 79) | def count(self, filter: dict[str, Any] | None = None) -> int: method add (line 83) | def add(self, data: list[VecDBItem | dict[str, Any]]) -> None: method update (line 95) | def update(self, id: str, data: VecDBItem | dict[str, Any]) -> None: method upsert (line 99) | def upsert(self, data: list[VecDBItem | dict[str, Any]]) -> None: method delete (line 108) | def delete(self, ids: list[str]) -> None: method ensure_payload_indexes (line 112) | def ensure_payload_indexes(self, fields: list[str]) -> None: FILE: src/memos/vec_dbs/factory.py class VecDBFactory (line 9) | class VecDBFactory(BaseVecDB): method from_config (line 18) | def from_config(cls, config_factory: VectorDBConfigFactory) -> BaseVecDB: FILE: src/memos/vec_dbs/item.py class VecDBItem (line 10) | class VecDBItem(BaseModel): method validate_id (line 30) | def validate_id(cls, v): method from_dict (line 37) | def from_dict(cls, data: dict[str, Any]) -> "VecDBItem": method to_dict (line 41) | def to_dict(self) -> dict[str, Any]: class MilvusVecDBItem (line 46) | class MilvusVecDBItem(VecDBItem): FILE: src/memos/vec_dbs/milvus.py class MilvusVecDB (line 13) | class MilvusVecDB(BaseVecDB): method __init__ (line 21) | def __init__(self, config: MilvusVecDBConfig): method create_schema (line 35) | def create_schema(self): method create_index (line 69) | def create_index(self): method create_collection (line 83) | def create_collection(self) -> None: method create_collection_by_name (line 102) | def create_collection_by_name(self, collection_name: str) -> None: method list_collections (line 116) | def list_collections(self) -> list[str]: method delete_collection (line 120) | def delete_collection(self, name: str) -> None: method collection_exists (line 124) | def collection_exists(self, name: str) -> bool: method _dense_search (line 128) | def _dense_search( method _sparse_search (line 147) | def _sparse_search( method _hybrid_search (line 166) | def _hybrid_search( method search (line 210) | def search( method _dict_to_expr (line 270) | def _dict_to_expr(self, filter_dict: dict[str, Any]) -> str: method _build_expression (line 287) | def _build_expression(self, condition: Any) -> str: method _handle_logical_and (line 321) | def _handle_logical_and(self, conditions: list) -> str: method _handle_logical_or (line 331) | def _handle_logical_or(self, conditions: list) -> str: method _handle_logical_not (line 341) | def _handle_logical_not(self, condition: Any) -> str: method _handle_field_conditions (line 348) | def _handle_field_conditions(self, condition_dict: dict[str, Any]) -> ... method _build_field_expression (line 364) | def _build_field_expression(self, field: str, value: Any) -> str: method _handle_in_operator (line 422) | def _handle_in_operator(self, field: str, values: list) -> str: method _handle_contains_operator (line 430) | def _handle_contains_operator(self, field: str, value: Any, case_sensi... method _handle_like_operator (line 439) | def _handle_like_operator(self, field: str, pattern: str) -> str: method _handle_comparison_operator (line 444) | def _handle_comparison_operator(self, field: str, operator: str, value... method _format_value (line 456) | def _format_value(self, value: Any) -> str: method _get_metric_type (line 472) | def _get_metric_type(self) -> str: method get_by_id (line 481) | def get_by_id(self, collection_name: str, id: str) -> MilvusVecDBItem ... method get_by_ids (line 501) | def get_by_ids(self, collection_name: str, ids: list[str]) -> list[Mil... method get_by_filter (line 525) | def get_by_filter( method get_all (line 583) | def get_all(self, collection_name: str, scroll_limit=100) -> list[Milv... method count (line 587) | def count(self, collection_name: str, filter: dict[str, Any] | None = ... method add (line 604) | def add(self, collection_name: str, data: list[MilvusVecDBItem | dict[... method update (line 638) | def update(self, collection_name: str, id: str, data: MilvusVecDBItem ... method ensure_payload_indexes (line 651) | def ensure_payload_indexes(self, fields: list[str]) -> None: method upsert (line 663) | def upsert(self, collection_name: str, data: list[MilvusVecDBItem | di... method delete (line 673) | def delete(self, collection_name: str, ids: list[str]) -> None: method delete_by_filter (line 682) | def delete_by_filter(self, collection_name: str, filter: dict[str, Any... FILE: src/memos/vec_dbs/qdrant.py class QdrantVecDB (line 13) | class QdrantVecDB(BaseVecDB): method __init__ (line 21) | def __init__(self, config: QdrantVecDBConfig): method create_collection (line 65) | def create_collection(self) -> None: method list_collections (line 109) | def list_collections(self) -> list[str]: method delete_collection (line 114) | def delete_collection(self, name: str) -> None: method collection_exists (line 118) | def collection_exists(self, name: str) -> bool: method search (line 126) | def search( method _dict_to_filter (line 160) | def _dict_to_filter(self, filter_dict: dict[str, Any]) -> Any: method get_by_id (line 175) | def get_by_id(self, id: str) -> VecDBItem | None: method get_by_ids (line 194) | def get_by_ids(self, ids: list[str]) -> list[VecDBItem]: method get_by_filter (line 215) | def get_by_filter(self, filter: dict[str, Any], scroll_limit: int = 10... method get_all (line 260) | def get_all(self, scroll_limit=100) -> list[VecDBItem]: method count (line 264) | def count(self, filter: dict[str, Any] | None = None) -> int: method add (line 276) | def add(self, data: list[VecDBItem | dict[str, Any]]) -> None: method update (line 298) | def update(self, id: str, data: VecDBItem | dict[str, Any]) -> None: method ensure_payload_indexes (line 318) | def ensure_payload_indexes(self, fields: list[str]) -> None: method upsert (line 337) | def upsert(self, data: list[VecDBItem | dict[str, Any]]) -> None: method delete (line 347) | def delete(self, ids: list[str]) -> None: FILE: tests/api/test_product_router.py function mock_mos_product_instance (line 28) | def mock_mos_product_instance(): function client (line 37) | def client(mock_mos_product_instance): function mock_mos_product (line 44) | def mock_mos_product(mock_mos_product_instance): function setup_mock_mos_product (line 56) | def setup_mock_mos_product(mock_mos_product): class TestProductRouterSearch (line 76) | class TestProductRouterSearch: method test_search_valid_input_output (line 79) | def test_search_valid_input_output(self, mock_mos_product, client): method test_search_invalid_input_missing_user_id (line 106) | def test_search_invalid_input_missing_user_id(self, mock_mos_product, ... method test_search_response_format (line 117) | def test_search_response_format(self, mock_mos_product, client): class TestProductRouterAdd (line 139) | class TestProductRouterAdd: method test_add_valid_input_output (line 142) | def test_add_valid_input_output(self, mock_mos_product, client): method test_add_invalid_input_missing_user_id (line 168) | def test_add_invalid_input_missing_user_id(self, mock_mos_product, cli... method test_add_response_format (line 179) | def test_add_response_format(self, mock_mos_product, client): class TestProductRouterChatComplete (line 194) | class TestProductRouterChatComplete: method test_chat_complete_valid_input_output (line 197) | def test_chat_complete_valid_input_output(self, mock_mos_product, clie... method test_chat_complete_invalid_input_missing_user_id (line 223) | def test_chat_complete_invalid_input_missing_user_id(self, mock_mos_pr... method test_chat_complete_response_format (line 234) | def test_chat_complete_response_format(self, mock_mos_product, client): class TestProductRouterChat (line 252) | class TestProductRouterChat: method test_chat_valid_input_output (line 255) | def test_chat_valid_input_output(self, mock_mos_product, client): method test_chat_invalid_input_missing_user_id (line 274) | def test_chat_invalid_input_missing_user_id(self, mock_mos_product, cl... class TestProductRouterSuggestions (line 286) | class TestProductRouterSuggestions: method test_suggestions_valid_input_output (line 289) | def test_suggestions_valid_input_output(self, mock_mos_product, client): method test_suggestions_invalid_input_missing_user_id (line 315) | def test_suggestions_invalid_input_missing_user_id(self, mock_mos_prod... method test_suggestions_response_format (line 326) | def test_suggestions_response_format(self, mock_mos_product, client): class TestProductRouterGetAll (line 349) | class TestProductRouterGetAll: method test_get_all_valid_input_output (line 352) | def test_get_all_valid_input_output(self, mock_mos_product, client): method test_get_all_with_search_query (line 377) | def test_get_all_with_search_query(self, mock_mos_product, client): method test_get_all_invalid_input_missing_user_id (line 396) | def test_get_all_invalid_input_missing_user_id(self, mock_mos_product,... method test_get_all_response_format (line 407) | def test_get_all_response_format(self, mock_mos_product, client): FILE: tests/api/test_server_router.py function mock_init_server (line 27) | def mock_init_server(): function client (line 64) | def client(mock_init_server): function mock_handlers (line 70) | def mock_handlers(): class TestServerRouterSearch (line 115) | class TestServerRouterSearch: method test_search_valid_input_output (line 118) | def test_search_valid_input_output(self, mock_handlers, client): method test_search_invalid_input_missing_query (line 146) | def test_search_invalid_input_missing_query(self, mock_handlers, client): method test_search_response_format (line 157) | def test_search_response_format(self, mock_handlers, client): class TestServerRouterAdd (line 183) | class TestServerRouterAdd: method test_add_valid_input_output (line 186) | def test_add_valid_input_output(self, mock_handlers, client): method test_add_response_format (line 213) | def test_add_response_format(self, mock_handlers, client): class TestServerRouterChatComplete (line 233) | class TestServerRouterChatComplete: method test_chat_complete_valid_input_output (line 236) | def test_chat_complete_valid_input_output(self, mock_handlers, client): method test_chat_complete_invalid_input_missing_user_id (line 263) | def test_chat_complete_invalid_input_missing_user_id(self, mock_handle... method test_chat_complete_response_format (line 274) | def test_chat_complete_response_format(self, mock_handlers, client): class TestServerRouterSuggestions (line 295) | class TestServerRouterSuggestions: method test_suggestions_valid_input_output (line 298) | def test_suggestions_valid_input_output(self, mock_handlers, client): method test_suggestions_invalid_input_missing_user_id (line 320) | def test_suggestions_invalid_input_missing_user_id(self, mock_handlers... method test_suggestions_response_format (line 331) | def test_suggestions_response_format(self, mock_handlers, client): class TestServerRouterGetAll (line 353) | class TestServerRouterGetAll: method test_get_all_valid_input_output (line 356) | def test_get_all_valid_input_output(self, mock_handlers, client): method test_get_all_with_search_query (line 375) | def test_get_all_with_search_query(self, mock_handlers, client): method test_get_all_invalid_input_missing_user_id (line 389) | def test_get_all_invalid_input_missing_user_id(self, mock_handlers, cl... method test_get_all_response_format (line 400) | def test_get_all_response_format(self, mock_handlers, client): FILE: tests/api/test_start_api.py function mock_mos (line 58) | def mock_mos(): function test_configure_error (line 85) | def test_configure_error(mock_mos): function test_create_user (line 92) | def test_create_user(mock_mos): function test_create_user_validation_error (line 106) | def test_create_user_validation_error(mock_mos): function test_list_users (line 114) | def test_list_users(mock_mos): function test_get_user_info (line 138) | def test_get_user_info(mock_mos): function test_register_mem_cube (line 160) | def test_register_mem_cube(mock_mos): function test_register_mem_cube_validation_error (line 174) | def test_register_mem_cube_validation_error(mock_mos): function test_unregister_mem_cube (line 182) | def test_unregister_mem_cube(mock_mos): function test_unregister_nonexistent_mem_cube (line 196) | def test_unregister_nonexistent_mem_cube(mock_mos): function test_share_cube (line 204) | def test_share_cube(mock_mos): function test_share_cube_failure (line 212) | def test_share_cube_failure(mock_mos): function test_add_memory (line 228) | def test_add_memory(mock_mos, memory_create, expected_calls): function test_add_memory_validation_error (line 236) | def test_add_memory_validation_error(mock_mos): function test_get_all_memories (line 243) | def test_get_all_memories(mock_mos): function test_get_memory (line 262) | def test_get_memory(mock_mos): function test_get_nonexistent_memory (line 279) | def test_get_nonexistent_memory(mock_mos): function test_search_memories (line 287) | def test_search_memories(mock_mos): function test_update_memory (line 312) | def test_update_memory(mock_mos): function test_update_nonexistent_memory (line 326) | def test_update_nonexistent_memory(mock_mos): function test_delete_memory (line 334) | def test_delete_memory(mock_mos): function test_delete_nonexistent_memory (line 344) | def test_delete_nonexistent_memory(mock_mos): function test_delete_all_memories (line 352) | def test_delete_all_memories(mock_mos): function test_delete_all_nonexistent_memories (line 364) | def test_delete_all_nonexistent_memories(mock_mos): function test_chat (line 372) | def test_chat(mock_mos): function test_chat_without_user_id (line 384) | def test_chat_without_user_id(mock_mos): function test_home_redirect (line 397) | def test_home_redirect(): FILE: tests/api/test_thread_context.py function task_with_context (line 16) | def task_with_context(task_name: str, delay: int) -> tuple[str, str | No... function test_context_thread_propagation (line 25) | def test_context_thread_propagation(): function test_context_thread_pool_propagation (line 51) | def test_context_thread_pool_propagation(): function test_context_thread_pool_map_propagation (line 75) | def test_context_thread_pool_map_propagation(): function test_context_thread_isolation (line 101) | def test_context_thread_isolation(): function test_context_thread_error_with_context (line 149) | def test_context_thread_error_with_context(): FILE: tests/chunkers/test_base.py function test_base_chunker_class (line 5) | def test_base_chunker_class(): FILE: tests/chunkers/test_factory.py function test_chunker_factory (line 5) | def test_chunker_factory(): FILE: tests/chunkers/test_sentence_chunker.py class TestSentenceChunker (line 9) | class TestSentenceChunker(unittest.TestCase): method test_sentence_chunker (line 10) | def test_sentence_chunker(self): FILE: tests/configs/test_base.py class DummyConfig (line 13) | class DummyConfig(BaseConfig): function test_model_schema_override_warning (line 18) | def test_model_schema_override_warning(caplog): function test_from_json_file (line 25) | def test_from_json_file(): function test_to_json_file (line 37) | def test_to_json_file(): function test_extra_fields_forbidden (line 51) | def test_extra_fields_forbidden(): function test_strict_type_enforcement (line 57) | def test_strict_type_enforcement(): function test_from_yaml_file (line 63) | def test_from_yaml_file(): function test_to_yaml_file (line 75) | def test_to_yaml_file(): FILE: tests/configs/test_embedder.py function test_base_embedder_config (line 14) | def test_base_embedder_config(): function test_ollama_embedder_config (line 33) | def test_ollama_embedder_config(): function test_embedder_config_factory (line 53) | def test_embedder_config_factory(): FILE: tests/configs/test_llm.py function test_base_llm_config (line 16) | def test_base_llm_config(): function test_openai_llm_config (line 46) | def test_openai_llm_config(): function test_ollama_llm_config (line 82) | def test_ollama_llm_config(): function test_hf_llm_config (line 115) | def test_hf_llm_config(): function test_llm_config_factory (line 148) | def test_llm_config_factory(): FILE: tests/configs/test_mem_chat.py function test_base_mem_chat_config (line 13) | def test_base_mem_chat_config(): function test_simple_mem_chat_config (line 32) | def test_simple_mem_chat_config(): function test_mem_chat_config_factory (line 64) | def test_mem_chat_config_factory(): FILE: tests/configs/test_mem_cube.py function test_base_mem_cube_config (line 11) | def test_base_mem_cube_config(): function test_general_mem_cube_config (line 28) | def test_general_mem_cube_config(): FILE: tests/configs/test_memory.py function test_base_memory_config (line 20) | def test_base_memory_config(): function test_base_act_memory_config (line 35) | def test_base_act_memory_config(): function test_kv_cache_memory_config (line 50) | def test_kv_cache_memory_config(): function test_base_para_memory_config (line 73) | def test_base_para_memory_config(): function test_lora_memory_config (line 88) | def test_lora_memory_config(): function test_base_text_memory_config (line 123) | def test_base_text_memory_config(): function test_naive_memory_config (line 138) | def test_naive_memory_config(): function test_textual_memory_config (line 161) | def test_textual_memory_config(): function test_memory_config_factory (line 200) | def test_memory_config_factory(): FILE: tests/configs/test_parser.py function test_base_parser_config (line 10) | def test_base_parser_config(): function test_markitdown_parser_config (line 25) | def test_markitdown_parser_config(): function test_parser_config_factory (line 40) | def test_parser_config_factory(): FILE: tests/configs/test_vec_db.py function test_base_vec_db_config (line 13) | def test_base_vec_db_config(): function test_qdrant_vec_db_config (line 37) | def test_qdrant_vec_db_config(): function test_vector_db_config_factory (line 78) | def test_vector_db_config_factory(): FILE: tests/embedders/test_ark.py class TestEmbedderFactory (line 9) | class TestEmbedderFactory(unittest.TestCase): method test_embed_single_text (line 11) | def test_embed_single_text(self, mock_embed): method test_embed_batch_text (line 34) | def test_embed_batch_text(self, mock_embed): FILE: tests/embedders/test_base.py function test_base_embedder_class (line 5) | def test_base_embedder_class(): FILE: tests/embedders/test_factory.py function test_embedder_factory (line 5) | def test_embedder_factory(): FILE: tests/embedders/test_ollama.py class TestEmbedderFactory (line 9) | class TestEmbedderFactory(unittest.TestCase): method test_embed_single_text (line 11) | def test_embed_single_text(self, mock_embed): method test_embed_batch_text (line 32) | def test_embed_batch_text(self, mock_embed): FILE: tests/embedders/test_universal_api.py class TestUniversalAPIEmbedder (line 9) | class TestUniversalAPIEmbedder(unittest.TestCase): method test_embed_single_text (line 11) | def test_embed_single_text(self, mock_openai_client): method test_embed_batch_text (line 43) | def test_embed_batch_text(self, mock_openai_client): FILE: tests/extras/nli_model/test_client_integration.py class TestNLIClientIntegration (line 17) | class TestNLIClientIntegration(unittest.TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 54) | def tearDownClass(cls): method _wait_for_server (line 64) | def _wait_for_server(cls): method setUp (line 77) | def setUp(self): method test_real_server_compare_one_to_many (line 87) | def test_real_server_compare_one_to_many(self): method test_real_server_empty_targets (line 104) | def test_real_server_empty_targets(self): method test_real_server_handler_error (line 114) | def test_real_server_handler_error(self): FILE: tests/graph_dbs/graph_dbs.py function config (line 13) | def config(): function mock_driver (line 25) | def mock_driver(): function graph_db (line 31) | def graph_db(config, mock_driver): function test_add_node (line 35) | def test_add_node(graph_db): function test_get_node (line 52) | def test_get_node(graph_db): function test_update_node (line 72) | def test_update_node(graph_db): function test_delete_node (line 86) | def test_delete_node(graph_db): function test_remove_oldest_memory (line 95) | def test_remove_oldest_memory(graph_db): function test_get_memory_count (line 103) | def test_get_memory_count(graph_db): FILE: tests/graph_dbs/test_search_return_fields.py function neo4j_config (line 19) | def neo4j_config(): function neo4j_db (line 31) | def neo4j_db(neo4j_config): class TestNeo4jSearchReturnFields (line 42) | class TestNeo4jSearchReturnFields: method test_return_fields_included_in_results (line 45) | def test_return_fields_included_in_results(self, neo4j_db): method test_backward_compatible_without_return_fields (line 66) | def test_backward_compatible_without_return_fields(self, neo4j_db): method test_cypher_return_clause_includes_fields (line 82) | def test_cypher_return_clause_includes_fields(self, neo4j_db): method test_cypher_return_clause_default (line 98) | def test_cypher_return_clause_default(self, neo4j_db): method test_return_fields_skips_id_field (line 113) | def test_return_fields_skips_id_field(self, neo4j_db): method test_threshold_filtering_still_works_with_return_fields (line 130) | def test_threshold_filtering_still_works_with_return_fields(self, neo4... class TestPolarDBExtractFieldsFromProperties (line 150) | class TestPolarDBExtractFieldsFromProperties: method polardb_instance (line 154) | def polardb_instance(self): method test_extract_from_json_string (line 162) | def test_extract_from_json_string(self, polardb_instance): method test_extract_from_dict (line 170) | def test_extract_from_dict(self, polardb_instance): method test_extract_skips_id (line 176) | def test_extract_skips_id(self, polardb_instance): method test_extract_missing_fields (line 182) | def test_extract_missing_fields(self, polardb_instance): method test_extract_empty_properties (line 188) | def test_extract_empty_properties(self, polardb_instance): method test_extract_invalid_json (line 193) | def test_extract_invalid_json(self, polardb_instance): class TestFieldNameValidation (line 199) | class TestFieldNameValidation: method test_valid_field_names_pass (line 202) | def test_valid_field_names_pass(self): method test_invalid_field_names_rejected (line 208) | def test_invalid_field_names_rejected(self): method test_none_returns_empty (line 224) | def test_none_returns_empty(self): method test_empty_list_returns_empty (line 229) | def test_empty_list_returns_empty(self): method test_injection_in_cypher_query_prevented (line 234) | def test_injection_in_cypher_query_prevented(self, neo4j_db): class TestNeo4jCommunitySearchReturnFields (line 254) | class TestNeo4jCommunitySearchReturnFields: method neo4j_community_db (line 258) | def neo4j_community_db(self): method test_fetch_return_fields_queries_neo4j (line 270) | def test_fetch_return_fields_queries_neo4j(self, neo4j_community_db): method test_fetch_return_fields_validates_names (line 293) | def test_fetch_return_fields_validates_names(self, neo4j_community_db): FILE: tests/llms/test_base.py function test_base_llm_class (line 5) | def test_base_llm_class(): FILE: tests/llms/test_deepseek.py class TestDeepSeekLLM (line 10) | class TestDeepSeekLLM(unittest.TestCase): method test_deepseek_llm_generate_with_and_without_think_prefix (line 11) | def test_deepseek_llm_generate_with_and_without_think_prefix(self): method test_deepseek_llm_generate_stream (line 50) | def test_deepseek_llm_generate_stream(self): FILE: tests/llms/test_factory.py function test_llm_factory (line 5) | def test_llm_factory(): FILE: tests/llms/test_hf.py class TestHFLLM (line 16) | class TestHFLLM(unittest.TestCase): method setUp (line 17) | def setUp(self): method _create_llm (line 38) | def _create_llm(self, config): method test_llm_factory_with_mocked_hf_backend (line 44) | def test_llm_factory_with_mocked_hf_backend(self): method test_standard_generation (line 66) | def test_standard_generation(self): method test_build_kv_cache_and_generation (line 88) | def test_build_kv_cache_and_generation(self): method test_think_prefix_removal (line 141) | def test_think_prefix_removal(self): method test_kv_cache_generation_greedy (line 155) | def test_kv_cache_generation_greedy(self): method test_kv_cache_generation_with_sampling (line 167) | def test_kv_cache_generation_with_sampling(self): FILE: tests/llms/test_ollama.py class TestOllamaLLM (line 11) | class TestOllamaLLM(unittest.TestCase): method test_llm_factory_with_mocked_ollama_backend (line 12) | def test_llm_factory_with_mocked_ollama_backend(self): method test_ollama_llm_with_mocked_backend (line 52) | def test_ollama_llm_with_mocked_backend(self): FILE: tests/llms/test_openai.py class TestLLMFactoryWithOpenAIBackend (line 10) | class TestLLMFactoryWithOpenAIBackend(unittest.TestCase): method test_llm_factory_with_mocked_openai_backend (line 11) | def test_llm_factory_with_mocked_openai_backend(self): method test_llm_factory_with_stream_openai_backend (line 46) | def test_llm_factory_with_stream_openai_backend(self): FILE: tests/llms/test_qwen.py class TestQwenLLM (line 10) | class TestQwenLLM(unittest.TestCase): method test_qwen_llm_generate_with_and_without_think_prefix (line 11) | def test_qwen_llm_generate_with_and_without_think_prefix(self): method test_qwen_llm_generate_stream (line 55) | def test_qwen_llm_generate_stream(self): FILE: tests/mem_agent/test_deepsearch_agent.py class TestJSONResponseParser (line 17) | class TestJSONResponseParser: method test_parse_clean_json (line 20) | def test_parse_clean_json(self): method test_parse_json_with_code_blocks (line 26) | def test_parse_json_with_code_blocks(self): method test_parse_invalid_json_raises_error (line 32) | def test_parse_invalid_json_raises_error(self): class TestDeepSearchMemAgent (line 38) | class TestDeepSearchMemAgent: method mock_llm (line 42) | def mock_llm(self): method mock_memory_retriever (line 49) | def mock_memory_retriever(self): method config (line 68) | def config(self): method agent (line 73) | def agent(self, mock_llm, mock_memory_retriever, config): method test_init_with_config (line 89) | def test_init_with_config(self, mock_llm, mock_memory_retriever, config): method test_init_without_config (line 98) | def test_init_without_config(self, mock_llm, mock_memory_retriever): method test_run_no_llm_raises_error (line 104) | def test_run_no_llm_raises_error(self, config): method test_run_returns_memories_when_no_generated_answer (line 110) | def test_run_returns_memories_when_no_generated_answer(self, agent, mo... method test_run_returns_answer_when_generated_answer (line 119) | def test_run_returns_answer_when_generated_answer(self, agent, mock_llm): method test_run_with_user_id (line 127) | def test_run_with_user_id(self, agent, mock_memory_retriever): method test_run_no_search_results (line 135) | def test_run_no_search_results(self, agent, mock_memory_retriever): method test_remove_duplicate_memories (line 143) | def test_remove_duplicate_memories(self, agent): method test_generate_final_answer (line 169) | def test_generate_final_answer(self, agent, mock_llm): method test_generate_final_answer_with_missing_info (line 185) | def test_generate_final_answer_with_missing_info(self, agent, mock_llm): method test_generate_final_answer_llm_error (line 195) | def test_generate_final_answer_llm_error(self, agent, mock_llm): method test_perform_memory_search_no_retriever (line 204) | def test_perform_memory_search_no_retriever(self, mock_llm, config): method test_integration_full_pipeline (line 211) | def test_integration_full_pipeline(self, mock_llm, mock_memory_retriev... FILE: tests/mem_chat/test_base.py function test_base_mem_chat_class (line 5) | def test_base_mem_chat_class(): FILE: tests/mem_chat/test_factory.py function test_mem_chat_factory (line 5) | def test_mem_chat_factory(): FILE: tests/mem_cube/test_base.py function test_base_mem_cube_class (line 5) | def test_base_mem_cube_class(): FILE: tests/mem_cube/test_general.py function mem_cube (line 17) | def mem_cube(): function test_load_with_real_directory (line 53) | def test_load_with_real_directory(): function test_memory_interface_methods_called (line 67) | def test_memory_interface_methods_called(mem_cube): FILE: tests/mem_os/test_memos.py function simple_config (line 10) | def simple_config(): function test_mos_can_initialize (line 62) | def test_mos_can_initialize(mock_llm, mock_reader, mock_user_manager, si... function test_mos_has_core_methods (line 83) | def test_mos_has_core_methods(mock_llm, mock_reader, mock_user_manager, ... function test_mos_chat_with_custom_prompt_no_cot (line 109) | def test_mos_chat_with_custom_prompt_no_cot( function test_mos_chat_with_custom_prompt_with_cot (line 138) | def test_mos_chat_with_custom_prompt_with_cot( FILE: tests/mem_os/test_memos_core.py function mock_config (line 19) | def mock_config(): function mock_user_manager (line 71) | def mock_user_manager(): function mock_mem_cube (line 94) | def mock_mem_cube(): function mock_llm (line 135) | def mock_llm(): function mock_mem_reader (line 143) | def mock_mem_reader(): class TestMOSInitialization (line 157) | class TestMOSInitialization: method test_mos_init_success (line 163) | def test_mos_init_success( method test_mos_init_invalid_user (line 195) | def test_mos_init_invalid_user(self, mock_llm_factory, mock_user_manag... class TestMOSUserManagement (line 208) | class TestMOSUserManagement: method test_create_user (line 214) | def test_create_user( method test_list_users (line 240) | def test_list_users( class TestMOSMemoryOperations (line 266) | class TestMOSMemoryOperations: method test_register_mem_cube (line 272) | def test_register_mem_cube( method test_search_memories (line 303) | def test_search_memories( method test_register_mem_cube_embedder_consistency_warning (line 346) | def test_register_mem_cube_embedder_consistency_warning( method test_register_mem_cube_embedder_consistency_no_warning (line 406) | def test_register_mem_cube_embedder_consistency_no_warning( method test_add_memory_content (line 463) | def test_add_memory_content( method test_add_messages (line 494) | def test_add_messages( method test_get_all_memories (line 531) | def test_get_all_memories( class TestMOSChat (line 560) | class TestMOSChat: method test_chat_with_memories (line 566) | def test_chat_with_memories( method test_chat_with_custom_base_prompt (line 615) | def test_chat_with_custom_base_prompt( method test_chat_without_memories (line 653) | def test_chat_without_memories( class TestMOSSystemPrompt (line 689) | class TestMOSSystemPrompt: method mos_core_instance (line 693) | def mos_core_instance(self, mock_config, mock_user_manager): method test_build_prompt_with_template_and_memories (line 698) | def test_build_prompt_with_template_and_memories(self, mos_core_instan... method test_build_prompt_with_template_no_memories (line 707) | def test_build_prompt_with_template_no_memories(self, mos_core_instance): method test_build_prompt_no_template_with_memories (line 719) | def test_build_prompt_no_template_with_memories(self, mos_core_instance): method test_build_prompt_default_with_memories (line 728) | def test_build_prompt_default_with_memories(self, mos_core_instance): method test_build_prompt_default_no_memories (line 736) | def test_build_prompt_default_no_memories(self, mos_core_instance): class TestMOSErrorHandling (line 743) | class TestMOSErrorHandling: method test_add_without_required_params (line 749) | def test_add_without_required_params( method test_search_nonexistent_cube (line 773) | def test_search_nonexistent_cube( FILE: tests/mem_reader/test_base.py function test_base_mem_reader (line 5) | def test_base_mem_reader(): FILE: tests/mem_reader/test_coarse_memory_type.py function assert_equal (line 28) | def assert_equal(actual, expected, message): function create_temp_file (line 39) | def create_temp_file(content="hello world", suffix=".txt"): function test_empty_inputs (line 52) | def test_empty_inputs(): function test_chat_passthrough (line 57) | def test_chat_passthrough(): function test_doc_local_file (line 66) | def test_doc_local_file(): function test_doc_remote_url (line 85) | def test_doc_remote_url(): function test_doc_unknown_path (line 94) | def test_doc_unknown_path(): function test_doc_plain_text (line 102) | def test_doc_plain_text(): function test_doc_mixed (line 110) | def test_doc_mixed(): function test_fallback (line 142) | def test_fallback(): function main (line 153) | def main(): FILE: tests/mem_reader/test_factory.py function test_factory_class (line 7) | def test_factory_class(): function test_factory_from_config (line 12) | def test_factory_from_config(): FILE: tests/mem_reader/test_memory.py function test_memory_initialization (line 6) | def test_memory_initialization(): function test_to_dict (line 29) | def test_to_dict(): function test_add_qa_batch (line 42) | def test_add_qa_batch(): function test_add_document_chunk_group (line 89) | def test_add_document_chunk_group(): function test_process_qa_pair_summaries_without_llm (line 135) | def test_process_qa_pair_summaries_without_llm(): function test_process_document_summaries_without_llm (line 162) | def test_process_document_summaries_without_llm(): function test_process_qa_pair_summaries_with_llm (line 190) | def test_process_qa_pair_summaries_with_llm(): function test_process_document_summaries_with_llm (line 219) | def test_process_document_summaries_with_llm(): FILE: tests/mem_reader/test_project_id_propagation.py function _make_user_context (line 36) | def _make_user_context( function _make_fast_item (line 49) | def _make_fast_item( function _assert_fields (line 70) | def _assert_fields( class TestSimpleStructProjectIdPropagation (line 89) | class TestSimpleStructProjectIdPropagation(unittest.TestCase): method setUp (line 92) | def setUp(self): method test_process_chat_data_fast_with_user_context (line 114) | def test_process_chat_data_fast_with_user_context(self): method test_process_chat_data_fast_without_user_context (line 129) | def test_process_chat_data_fast_without_user_context(self): method test_process_chat_data_fine_with_user_context (line 141) | def test_process_chat_data_fine_with_user_context(self): method test_process_chat_data_fine_without_user_context (line 157) | def test_process_chat_data_fine_without_user_context(self): method test_process_transfer_chat_data_with_user_context (line 170) | def test_process_transfer_chat_data_with_user_context(self): method test_process_transfer_chat_data_without_user_context (line 182) | def test_process_transfer_chat_data_without_user_context(self): class TestMultiModalProjectIdPropagation (line 197) | class TestMultiModalProjectIdPropagation(unittest.TestCase): method setUp (line 200) | def setUp(self): method test_build_window_propagates_project_id (line 221) | def test_build_window_propagates_project_id(self): method test_build_window_without_project_id (line 235) | def test_build_window_without_project_id(self): method test_build_window_picks_first_nonempty (line 247) | def test_build_window_picks_first_nonempty(self): method test_process_string_fine_propagates_fields (line 259) | def test_process_string_fine_propagates_fields(self): method test_process_string_fine_without_user_context (line 280) | def test_process_string_fine_without_user_context(self): method test_process_multi_modal_data_passes_user_context_to_transfer (line 298) | def test_process_multi_modal_data_passes_user_context_to_transfer(self): method test_process_transfer_passes_user_context (line 361) | def test_process_transfer_passes_user_context(self): FILE: tests/mem_reader/test_simple_structure.py class TestSimpleStructMemReader (line 14) | class TestSimpleStructMemReader(unittest.TestCase): method setUp (line 15) | def setUp(self): method test_init (line 38) | def test_init(self): method test_process_chat_data (line 44) | def test_process_chat_data(self): method test_get_scene_data_info_with_chat (line 72) | def test_get_scene_data_info_with_chat(self): method test_parse_json_result_success (line 106) | def test_parse_json_result_success(self): method test_parse_json_result_failure (line 114) | def test_parse_json_result_failure(self): FILE: tests/mem_scheduler/test_config.py class TestEnvConfigMixin (line 20) | class TestEnvConfigMixin(unittest.TestCase): method test_env_prefix_class_variable (line 23) | def test_env_prefix_class_variable(self): method test_get_env_prefix_generation (line 27) | def test_get_env_prefix_generation(self): method test_from_local_env_with_env_vars (line 39) | def test_from_local_env_with_env_vars(self): method test_parse_env_value (line 76) | def test_parse_env_value(self): method test_env_config_mixin_integration (line 96) | def test_env_config_mixin_integration(self): class TestSchedulerConfig (line 144) | class TestSchedulerConfig(unittest.TestCase): method setUp (line 145) | def setUp(self): method tearDown (line 149) | def tearDown(self): method _clear_prefixed_env_vars (line 153) | def _clear_prefixed_env_vars(self): method test_loads_all_configs_from_env (line 158) | def test_loads_all_configs_from_env(self): method test_uses_default_values_when_env_not_set (line 191) | def test_uses_default_values_when_env_not_set(self): method test_allows_partial_initialization (line 211) | def test_allows_partial_initialization(self): method test_raises_on_all_components_missing (line 225) | def test_raises_on_all_components_missing(self): method test_type_conversion (line 236) | def test_type_conversion(self): method test_combined_with_local_config (line 262) | def test_combined_with_local_config(self): class TestConfigUtils (line 307) | class TestConfigUtils(unittest.TestCase): method test_flatten_dict_basic (line 310) | def test_flatten_dict_basic(self): method test_flatten_dict_with_prefix (line 318) | def test_flatten_dict_with_prefix(self): method test_flatten_dict_special_chars (line 326) | def test_flatten_dict_special_chars(self): method test_flatten_dict_none_values (line 334) | def test_flatten_dict_none_values(self): method test_convert_json_to_env (line 342) | def test_convert_json_to_env(self): method test_convert_yaml_to_env (line 362) | def test_convert_yaml_to_env(self): method test_convert_with_special_values (line 389) | def test_convert_with_special_values(self): method test_unsupported_file_format (line 410) | def test_unsupported_file_format(self): method test_file_not_found (line 422) | def test_file_not_found(self): method test_invalid_json (line 427) | def test_invalid_json(self): FILE: tests/mem_scheduler/test_dispatcher.py class TestSchedulerDispatcher (line 30) | class TestSchedulerDispatcher(unittest.TestCase): method _create_mock_auth_config (line 33) | def _create_mock_auth_config(self): method setUp (line 52) | def setUp(self): method tearDown (line 127) | def tearDown(self): method test_register_handler (line 133) | def test_register_handler(self): method test_register_handlers (line 142) | def test_register_handlers(self): method test_dispatch_serial (line 156) | def test_dispatch_serial(self): method test_group_messages_by_user_and_mem_cube (line 199) | def test_group_messages_by_user_and_mem_cube(self): method test_thread_race_cooperative_termination (line 226) | def test_thread_race_cooperative_termination(self): method test_running_task_item_messages_field (line 255) | def test_running_task_item_messages_field(self): method test_dispatcher_creates_task_with_messages (line 303) | def test_dispatcher_creates_task_with_messages(self): method test_dispatcher_monitor_logs_stuck_task_messages (line 332) | def test_dispatcher_monitor_logs_stuck_task_messages(self): method test_get_running_tasks_no_filter (line 384) | def test_get_running_tasks_no_filter(self): method test_get_running_tasks_filter_by_user_id (line 419) | def test_get_running_tasks_filter_by_user_id(self): method test_get_running_tasks_filter_by_multiple_conditions (line 460) | def test_get_running_tasks_filter_by_multiple_conditions(self): method test_get_running_tasks_filter_by_status (line 503) | def test_get_running_tasks_filter_by_status(self): method test_get_running_tasks_thread_safety (line 542) | def test_get_running_tasks_thread_safety(self): FILE: tests/mem_scheduler/test_retriever.py class TestSchedulerRetriever (line 30) | class TestSchedulerRetriever(unittest.TestCase): method _create_mock_auth_config (line 31) | def _create_mock_auth_config(self): method setUp (line 50) | def setUp(self): method tearDown (line 89) | def tearDown(self): method test_filter_similar_memories_empty_input (line 95) | def test_filter_similar_memories_empty_input(self): method test_filter_similar_memories_no_duplicates (line 100) | def test_filter_similar_memories_no_duplicates(self): method test_filter_similar_memories_with_duplicates (line 112) | def test_filter_similar_memories_with_duplicates(self): method test_filter_similar_memories_error_handling (line 122) | def test_filter_similar_memories_error_handling(self): method test_filter_too_short_memories_empty_input (line 129) | def test_filter_too_short_memories_empty_input(self): method test_filter_too_short_memories_all_valid (line 134) | def test_filter_too_short_memories_all_valid(self): method test_filter_too_short_memories_with_short_ones (line 146) | def test_filter_too_short_memories_with_short_ones(self): method test_filter_too_short_memories_edge_case (line 162) | def test_filter_too_short_memories_edge_case(self): method test_filter_unrelated_memories_empty_memories (line 175) | def test_filter_unrelated_memories_empty_memories(self): method test_filter_unrelated_memories_empty_query_history (line 187) | def test_filter_unrelated_memories_empty_query_history(self): method test_filter_unrelated_memories_successful_filtering (line 203) | def test_filter_unrelated_memories_successful_filtering(self): method test_filter_unrelated_memories_llm_failure_fallback (line 243) | def test_filter_unrelated_memories_llm_failure_fallback(self): method test_filter_unrelated_memories_invalid_json_response (line 267) | def test_filter_unrelated_memories_invalid_json_response(self): method test_filter_unrelated_memories_invalid_indices (line 286) | def test_filter_unrelated_memories_invalid_indices(self): method test_filter_unrelated_memories_missing_required_fields (line 313) | def test_filter_unrelated_memories_missing_required_fields(self): method test_filter_unrelated_memories_conservative_filtering (line 338) | def test_filter_unrelated_memories_conservative_filtering(self): FILE: tests/mem_scheduler/test_scheduler.py class TestGeneralScheduler (line 35) | class TestGeneralScheduler(unittest.TestCase): method _create_mock_auth_config (line 39) | def _create_mock_auth_config(self): method setUp (line 58) | def setUp(self): method tearDown (line 102) | def tearDown(self): method test_initialization (line 106) | def test_initialization(self): method test_initialize_modules (line 112) | def test_initialize_modules(self): method test_submit_web_logs (line 118) | def test_submit_web_logs(self): method test_activation_memory_update (line 158) | def test_activation_memory_update(self): method test_dynamic_cache_layers_access (line 225) | def test_dynamic_cache_layers_access(self): FILE: tests/mem_scheduler/test_version_control.py class TestVersionControl (line 14) | class TestVersionControl: method temp_db (line 18) | def temp_db(self): method memory_manager_obj (line 32) | def memory_manager_obj(self): method test_version_control_increment (line 51) | def test_version_control_increment(self, temp_db, memory_manager_obj): method test_new_record_has_version_zero (line 73) | def test_new_record_has_version_zero(self, temp_db, memory_manager_obj): method test_version_control_increments_on_save (line 100) | def test_version_control_increments_on_save(self, temp_db, memory_mana... method test_sync_with_orm_version_control (line 126) | def test_sync_with_orm_version_control(self, temp_db, memory_manager_o... method test_version_control_cycles_correctly (line 179) | def test_version_control_cycles_correctly(self, temp_db, memory_manage... method test_load_from_db_updates_version_control (line 198) | def test_load_from_db_updates_version_control(self, temp_db, memory_ma... method test_version_control_persistence_across_instances (line 230) | def test_version_control_persistence_across_instances(self, temp_db, m... FILE: tests/mem_tools/test_thread_safe_dict.py class TestThreadSafeDict (line 13) | class TestThreadSafeDict: method test_basic_operations (line 16) | def test_basic_operations(self): method test_initialization_with_dict (line 41) | def test_initialization_with_dict(self): method test_iteration_methods (line 51) | def test_iteration_methods(self): method test_delete_operations (line 77) | def test_delete_operations(self): method test_update_operations (line 103) | def test_update_operations(self): method test_copy_method (line 128) | def test_copy_method(self): method test_string_representation (line 140) | def test_string_representation(self): method test_exception_handling (line 151) | def test_exception_handling(self): method test_concurrent_access_basic (line 165) | def test_concurrent_access_basic(self): class TestSimpleThreadSafeDict (line 204) | class TestSimpleThreadSafeDict: method test_basic_operations_simple (line 207) | def test_basic_operations_simple(self): function test_both_implementations_equivalent (line 225) | def test_both_implementations_equivalent(): FILE: tests/mem_user/test_mem_user.py class TestUserManager (line 20) | class TestUserManager: method temp_db (line 24) | def temp_db(self): method user_manager (line 40) | def user_manager(self, temp_db): method test_initialization (line 47) | def test_initialization(self, temp_db): method test_initialization_default_path (line 61) | def test_initialization_default_path(self, monkeypatch): class TestUserOperations (line 96) | class TestUserOperations: method temp_db (line 100) | def temp_db(self): method user_manager (line 110) | def user_manager(self, temp_db): method test_create_user (line 116) | def test_create_user(self, user_manager): method test_create_user_with_custom_id (line 130) | def test_create_user_with_custom_id(self, user_manager): method test_create_duplicate_user (line 143) | def test_create_duplicate_user(self, user_manager): method test_get_user_by_name (line 158) | def test_get_user_by_name(self, user_manager): method test_validate_user (line 171) | def test_validate_user(self, user_manager): method test_list_users (line 185) | def test_list_users(self, user_manager): method test_delete_user (line 211) | def test_delete_user(self, user_manager): method test_delete_root_user (line 230) | def test_delete_root_user(self, user_manager): method test_delete_nonexistent_user (line 238) | def test_delete_nonexistent_user(self, user_manager): class TestCubeOperations (line 244) | class TestCubeOperations: method temp_db (line 248) | def temp_db(self): method user_manager (line 258) | def user_manager(self, temp_db): method test_create_cube (line 264) | def test_create_cube(self, user_manager): method test_create_cube_with_path_and_custom_id (line 282) | def test_create_cube_with_path_and_custom_id(self, user_manager): method test_create_cube_invalid_owner (line 302) | def test_create_cube_invalid_owner(self, user_manager): method test_validate_user_cube_access (line 307) | def test_validate_user_cube_access(self, user_manager): method test_get_user_cubes (line 332) | def test_get_user_cubes(self, user_manager): method test_add_user_to_cube (line 364) | def test_add_user_to_cube(self, user_manager): method test_remove_user_from_cube (line 390) | def test_remove_user_from_cube(self, user_manager): method test_delete_cube (line 414) | def test_delete_cube(self, user_manager): method test_delete_nonexistent_cube (line 434) | def test_delete_nonexistent_cube(self, user_manager): class TestUserRoles (line 440) | class TestUserRoles: method temp_db (line 444) | def temp_db(self): method user_manager (line 454) | def user_manager(self, temp_db): method test_user_roles (line 460) | def test_user_roles(self, user_manager): method test_root_user_protection (line 477) | def test_root_user_protection(self, user_manager): class TestDatabaseIntegrity (line 492) | class TestDatabaseIntegrity: method temp_db (line 496) | def temp_db(self): method user_manager (line 506) | def user_manager(self, temp_db): method test_cascade_delete_user_cubes (line 512) | def test_cascade_delete_user_cubes(self, user_manager): method test_timestamps (line 532) | def test_timestamps(self, user_manager): method test_uuid_generation (line 552) | def test_uuid_generation(self, user_manager): method test_session_management (line 571) | def test_session_management(self, user_manager): FILE: tests/memories/activation/test_base.py function test_base_memory_class (line 5) | def test_base_memory_class(): FILE: tests/memories/activation/test_item.py class TestActivationMemoryItem (line 8) | class TestActivationMemoryItem: method test_basic_init_and_defaults (line 9) | def test_basic_init_and_defaults(self): method test_id_is_uuid (line 16) | def test_id_is_uuid(self): method test_metadata_default (line 21) | def test_metadata_default(self): class TestKVCacheItem (line 27) | class TestKVCacheItem: method test_kvcacheitem_init_and_types (line 28) | def test_kvcacheitem_init_and_types(self): method test_metadata_default (line 36) | def test_metadata_default(self): method test_arbitrary_types_allowed (line 42) | def test_arbitrary_types_allowed(self): FILE: tests/memories/activation/test_kv.py function dummy_config (line 14) | def dummy_config(): function kv_memory (line 23) | def kv_memory(dummy_config): function make_filled_cache (line 36) | def make_filled_cache(): function test_extract_and_add_and_get (line 44) | def test_extract_and_add_and_get(kv_memory): function test_get_cache_merge (line 54) | def test_get_cache_merge(kv_memory): function test_delete_and_get_all (line 66) | def test_delete_and_get_all(kv_memory): function test_from_textual_memory (line 78) | def test_from_textual_memory(kv_memory): FILE: tests/memories/test_base.py function test_base_memory_class (line 5) | def test_base_memory_class(): FILE: tests/memories/test_factory.py function test_memory_factory (line 5) | def test_memory_factory(): FILE: tests/memories/textual/test_base.py function test_base_memory_class (line 5) | def test_base_memory_class(): FILE: tests/memories/textual/test_general.py class TestGeneralTextMemory (line 19) | class TestGeneralTextMemory(unittest.TestCase): method setUp (line 20) | def setUp(self): method tearDown (line 74) | def tearDown(self): method test_initialization (line 79) | def test_initialization(self): method test_embed_one_sentence (line 91) | def test_embed_one_sentence(self): method test_extract (line 102) | def test_extract(self): method test_add_memories (line 120) | def test_add_memories(self): method test_update_memory (line 148) | def test_update_memory(self): method test_search_memories (line 182) | def test_search_memories(self): method test_get_memory_by_id (line 238) | def test_get_memory_by_id(self): method test_get_memories_by_ids (line 258) | def test_get_memories_by_ids(self): method test_get_all_memories (line 288) | def test_get_all_memories(self): method test_delete_memories (line 321) | def test_delete_memories(self): method test_delete_all_memories (line 329) | def test_delete_all_memories(self): FILE: tests/memories/textual/test_history_manager.py function mock_nli_client (line 22) | def mock_nli_client(): function mock_graph_db (line 28) | def mock_graph_db(): function history_manager (line 33) | def history_manager(mock_nli_client, mock_graph_db): function test_detach_related_content (line 37) | def test_detach_related_content(): function test_detach_only_conflicts (line 61) | def test_detach_only_conflicts(): function test_detach_only_duplicates (line 76) | def test_detach_only_duplicates(): function test_truncation (line 91) | def test_truncation(history_manager, mock_nli_client): function test_empty_related_items (line 108) | def test_empty_related_items(history_manager, mock_nli_client): function test_mark_memory_status (line 116) | def test_mark_memory_status(history_manager, mock_graph_db): FILE: tests/memories/textual/test_naive.py class TestNaiveMemory (line 14) | class TestNaiveMemory: method mock_llm (line 16) | def mock_llm(self): method config (line 30) | def config(self): method memory (line 42) | def memory(self, config, mock_llm): method test_init (line 46) | def test_init(self, config): method test_extract (line 53) | def test_extract(self, memory): method test_add (line 66) | def test_add(self, memory): method test_update (line 88) | def test_update(self, memory): method test_update_dict (line 107) | def test_update_dict(self, memory): method test_search (line 130) | def test_search(self, memory): method test_get (line 161) | def test_get(self, memory): method test_get_all (line 177) | def test_get_all(self, memory): method test_delete (line 207) | def test_delete(self, memory): method test_delete_all (line 224) | def test_delete_all(self, memory): method test_load_and_dump (line 235) | def test_load_and_dump(self, memory, tmp_path): method test_load_nonexistent_directory (line 258) | def test_load_nonexistent_directory(self, memory, caplog): FILE: tests/memories/textual/test_pre_update_retriever.py class TestPreUpdateRecaller (line 21) | class TestPreUpdateRecaller(unittest.TestCase): method setUpClass (line 23) | def setUpClass(cls): method setUp (line 42) | def setUp(self): method tearDown (line 84) | def tearDown(self): method test_recall_vector_search (line 92) | def test_recall_vector_search(self): method test_recall_keyword_search (line 119) | def test_recall_keyword_search(self): method test_perspective_adjustment (line 135) | def test_perspective_adjustment(self): FILE: tests/memories/textual/test_pre_update_retriever_latency.py class TestPreUpdateRecallerLatency (line 24) | class TestPreUpdateRecallerLatency(unittest.TestCase): method setUpClass (line 31) | def setUpClass(cls): method setUp (line 49) | def setUp(self): method tearDown (line 72) | def tearDown(self): method measure_network_rtt (line 81) | def measure_network_rtt(self, trials=10): method test_recall_latency (line 115) | def test_recall_latency(self): FILE: tests/memories/textual/test_tree.py function mock_config (line 13) | def mock_config(): function mock_tree_text_memory (line 50) | def mock_tree_text_memory(mock_config): function test_add_calls_manager (line 61) | def test_add_calls_manager(mock_tree_text_memory): function test_get_working_memory_sorted (line 74) | def test_get_working_memory_sorted(mock_tree_text_memory): function test_get_memory_found (line 93) | def test_get_memory_found(mock_tree_text_memory): function test_get_memory_not_found (line 102) | def test_get_memory_not_found(mock_tree_text_memory): function test_delete_all (line 108) | def test_delete_all(mock_tree_text_memory): function test_load_file_not_exists (line 114) | def test_load_file_not_exists(mock_tree_text_memory, tmp_path): function test_dump_and_load_success (line 123) | def test_dump_and_load_success(tmp_path, mock_tree_text_memory): function test_drop_creates_backup_and_cleans (line 134) | def test_drop_creates_backup_and_cleans(mock_tree_text_memory): function test_add_returns_ids (line 145) | def test_add_returns_ids(mock_tree_text_memory): FILE: tests/memories/textual/test_tree_manager.py function mock_graph_store (line 12) | def mock_graph_store(): function mock_embedder (line 32) | def mock_embedder(): function mock_llm (line 39) | def mock_llm(): function memory_manager (line 46) | def memory_manager(mock_graph_store, mock_embedder, mock_llm): function test_add_and_replace_working_memory (line 54) | def test_add_and_replace_working_memory(memory_manager): function test_process_memory_adds_nodes (line 64) | def test_process_memory_adds_nodes(memory_manager): function test_add_to_graph_memory_merges (line 79) | def test_add_to_graph_memory_merges(memory_manager, mock_graph_store): function test_add_to_graph_memory_creates_new_node (line 90) | def test_add_to_graph_memory_creates_new_node(memory_manager, mock_graph... function test_inherit_edges (line 105) | def test_inherit_edges(memory_manager, mock_graph_store): function test_ensure_structure_path_creates_new (line 116) | def test_ensure_structure_path_creates_new(memory_manager, mock_graph_st... function test_ensure_structure_path_reuses_existing (line 129) | def test_ensure_structure_path_reuses_existing(memory_manager, mock_grap... function test_add_returns_written_node_ids (line 136) | def test_add_returns_written_node_ids(memory_manager): FILE: tests/memories/textual/test_tree_reranker.py function test_batch_cosine_similarity_basic (line 16) | def test_batch_cosine_similarity_basic(): function mock_reranker (line 31) | def mock_reranker(): function make_item (line 44) | def make_item(embedding, level): function test_rerank_with_structural_weight (line 52) | def test_rerank_with_structural_weight(mock_reranker): function test_rerank_no_embeddings (line 76) | def test_rerank_no_embeddings(mock_reranker): function test_rerank_with_fallback (line 94) | def test_rerank_with_fallback(mock_reranker): FILE: tests/memories/textual/test_tree_retriever.py function mock_graph_store (line 13) | def mock_graph_store(): function mock_embedder (line 18) | def mock_embedder(): function retriever (line 23) | def retriever(mock_graph_store, mock_embedder): function test_retrieve_working_memory (line 27) | def test_retrieve_working_memory(retriever, mock_graph_store): function test_graph_recall_filters (line 45) | def test_graph_recall_filters(retriever, mock_graph_store): function test_vector_recall_combines_and_dedups (line 66) | def test_vector_recall_combines_and_dedups(retriever, mock_graph_store): function test_retrieve_merges_graph_and_vector (line 83) | def test_retrieve_merges_graph_and_vector(retriever, mock_graph_store): FILE: tests/memories/textual/test_tree_searcher.py function mock_searcher (line 11) | def mock_searcher(): function make_item (line 27) | def make_item(content: str, score: float): function test_searcher_fast_path (line 41) | def test_searcher_fast_path(mock_searcher): function test_searcher_fine_mode_triggers_reasoner (line 85) | def test_searcher_fine_mode_triggers_reasoner(mock_searcher): function test_searcher_respects_memory_type (line 107) | def test_searcher_respects_memory_type(mock_searcher): FILE: tests/memories/textual/test_tree_task_goal_parser.py class MockLLM (line 7) | class MockLLM: method generate (line 8) | def generate(self, messages): function test_parse_fast_returns_expected (line 20) | def test_parse_fast_returns_expected(): function test_parse_fine_calls_llm_and_parses (line 26) | def test_parse_fine_calls_llm_and_parses(): function test_parse_response_invalid_json (line 38) | def test_parse_response_invalid_json(): function test_parse_fine_raises_without_llm (line 47) | def test_parse_fine_raises_without_llm(): function test_parse_raises_on_unknown_mode (line 54) | def test_parse_raises_on_unknown_mode(): FILE: tests/parsers/test_base.py function test_base_parser_class (line 5) | def test_base_parser_class(): FILE: tests/parsers/test_factory.py function test_parser_factory (line 5) | def test_parser_factory(): FILE: tests/parsers/test_markitdown.py class TestMarkItDownParser (line 7) | class TestMarkItDownParser(unittest.TestCase): method test_parse_docx_file (line 8) | def test_parse_docx_file(self): method test_parse_pdf_file (line 17) | def test_parse_pdf_file(self): FILE: tests/test_cli.py class TestExportOpenAPI (line 16) | class TestExportOpenAPI: method test_export_openapi_success (line 22) | def test_export_openapi_success(self, mock_makedirs, mock_file, mock_a... method test_export_openapi_error (line 35) | def test_export_openapi_error(self, mock_file, mock_app): class TestDownloadExamples (line 43) | class TestDownloadExamples: method create_mock_zip_content (line 46) | def create_mock_zip_content(self): method test_download_examples_success (line 59) | def test_download_examples_success(self, mock_file, mock_makedirs, moc... method test_download_examples_error (line 74) | def test_download_examples_error(self, mock_requests): class TestMainCLI (line 83) | class TestMainCLI: method test_main_download_examples (line 87) | def test_main_download_examples(self, mock_download): method test_main_export_openapi (line 98) | def test_main_export_openapi(self, mock_export): FILE: tests/test_deprecation.py class TestDeprecated (line 13) | class TestDeprecated: method test_deprecated_function_warns (line 16) | def test_deprecated_function_warns(self): method test_deprecated_function_metadata (line 35) | def test_deprecated_function_metadata(self): method test_deprecated_minimal (line 48) | def test_deprecated_minimal(self): class TestDeprecatedClass (line 64) | class TestDeprecatedClass: method test_deprecated_class_warns (line 67) | def test_deprecated_class_warns(self): method test_deprecated_class_metadata (line 85) | def test_deprecated_class_metadata(self): class TestDeprecatedParameter (line 98) | class TestDeprecatedParameter: method test_deprecated_parameter_warns (line 101) | def test_deprecated_parameter_warns(self): class TestWarnDeprecated (line 123) | class TestWarnDeprecated: method test_warn_deprecated_basic (line 126) | def test_warn_deprecated_basic(self): method test_warn_deprecated_minimal (line 141) | def test_warn_deprecated_minimal(self): class TestDeprecationUtilities (line 152) | class TestDeprecationUtilities: method test_is_deprecated_false (line 155) | def test_is_deprecated_false(self): method test_get_deprecation_info_none (line 168) | def test_get_deprecation_info_none(self): FILE: tests/test_hello_world.py function test_memos_hello_world_logger_called (line 17) | def test_memos_hello_world_logger_called(): function test_memos_dany_hello_world_logger_called (line 26) | def test_memos_dany_hello_world_logger_called(): function test_memos_chend_hello_world_logger_called (line 55) | def test_memos_chend_hello_world_logger_called(): function test_memos_wanghy_hello_world_logger_called (line 64) | def test_memos_wanghy_hello_world_logger_called(): function test_memos_huojh_hello_world_logger_called (line 73) | def test_memos_huojh_hello_world_logger_called(): function test_memos_niusm_hello_world_logger_called (line 84) | def test_memos_niusm_hello_world_logger_called(): function test_memos_wangyzh_hello_world_logger_called (line 93) | def test_memos_wangyzh_hello_world_logger_called(): function test_memos_zhaojihao_hello_world_logger_called (line 102) | def test_memos_zhaojihao_hello_world_logger_called(): function test_memos_yuqingchen_hello_world_logger_called (line 111) | def test_memos_yuqingchen_hello_world_logger_called(): function test_memos_chen_tang_hello_world (line 120) | def test_memos_chen_tang_hello_world(): FILE: tests/test_log.py function generate_trace_id (line 12) | def generate_trace_id() -> str: function test_setup_logfile_creates_file (line 17) | def test_setup_logfile_creates_file(tmp_path, monkeypatch): function test_get_logger_returns_logger (line 24) | def test_get_logger_returns_logger(): FILE: tests/test_settings.py function test_memos_dir (line 7) | def test_memos_dir(): function test_debug (line 13) | def test_debug(): FILE: tests/utils.py function check_module_base_class (line 12) | def check_module_base_class(cls: Any) -> None: function check_module_factory_class (line 68) | def check_module_factory_class(cls: Any) -> None: function check_config_base_class (line 101) | def check_config_base_class( function check_config_factory_class (line 163) | def check_config_factory_class(cls: BaseModel, expected_backends: list[s... function check_config_instantiation_valid (line 196) | def check_config_instantiation_valid(cls: BaseModel, valid_config: dict)... function check_config_instantiation_invalid (line 208) | def check_config_instantiation_invalid(cls: BaseModel, invalid_config: d... FILE: tests/vec_dbs/test_base.py function test_base_vec_db_class (line 5) | def test_base_vec_db_class(): FILE: tests/vec_dbs/test_factory.py function test_vec_db_factory (line 5) | def test_vec_db_factory(): FILE: tests/vec_dbs/test_item.py function test_item_creation (line 10) | def test_item_creation(): function test_item_with_score (line 19) | def test_item_with_score(): function test_item_validation (line 24) | def test_item_validation(): function test_item_from_dict (line 31) | def test_item_from_dict(): FILE: tests/vec_dbs/test_qdrant.py function config (line 14) | def config(): function mock_qdrant_client (line 30) | def mock_qdrant_client(): function vec_db (line 36) | def vec_db(config, mock_qdrant_client): function test_create_collection (line 44) | def test_create_collection(vec_db): function test_list_collections (line 49) | def test_list_collections(vec_db): function test_add_and_get_by_id (line 57) | def test_add_and_get_by_id(vec_db): function test_search (line 71) | def test_search(vec_db): function test_update_vector (line 98) | def test_update_vector(vec_db): function test_update_payload_only (line 105) | def test_update_payload_only(vec_db): function test_delete (line 110) | def test_delete(vec_db): function test_count (line 115) | def test_count(vec_db): function test_get_all (line 121) | def test_get_all(vec_db): function test_qdrant_client_cloud_init (line 130) | def test_qdrant_client_cloud_init():