SYMBOL INDEX (4896 symbols across 366 files) FILE: benchmark/MR-NIAH/fetch_data.py function manifest_paths (line 67) | def manifest_paths(langs: Sequence[str]) -> List[str]: function normalize_dataset_path (line 78) | def normalize_dataset_path(path: str) -> str: function dedupe (line 90) | def dedupe(paths: Iterable[str]) -> List[str]: function collect_paths (line 100) | def collect_paths(langs: Sequence[str], extra: Sequence[str], allowed_to... function apply_include_filter (line 110) | def apply_include_filter(paths: Iterable[str], include: Sequence[str]) -... function relative_dest (line 120) | def relative_dest(path: str) -> Path: function display_path (line 127) | def display_path(dest_root: Path, target: Path) -> str: function token_from_path (line 134) | def token_from_path(path: str) -> str: function filter_by_tokens (line 138) | def filter_by_tokens(paths: Iterable[str], allowed: set[str] | None) -> ... function parse_tokens (line 144) | def parse_tokens(values: Sequence[str]) -> set[str] | None: function github_url (line 162) | def github_url(path: str, revision: str) -> str: function sha256_for_file (line 167) | def sha256_for_file(path: Path) -> str: function download_file (line 175) | def download_file(url: str, dest: Path, force: bool, label: str) -> bool: function list_manifest (line 198) | def list_manifest() -> None: function invalid_jsonl_lines (line 203) | def invalid_jsonl_lines(path: Path) -> List[int]: function sanitize_jsonl_file (line 220) | def sanitize_jsonl_file(path: Path) -> List[int]: function parse_args (line 250) | def parse_args() -> argparse.Namespace: function main (line 286) | def main() -> int: FILE: benchmark/MR-NIAH/mr-niah-transcript.py function canonical_tokens (line 84) | def canonical_tokens(selection: set[str] | None) -> List[str]: function parse_tokens (line 90) | def parse_tokens(values: Sequence[str]) -> set[str] | None: function parse_langs (line 108) | def parse_langs(choice: str) -> List[str]: function normalize_dataset_relative (line 118) | def normalize_dataset_relative(value: str) -> Path: function describe_path (line 125) | def describe_path(path: Path) -> str: function dedupe_paths (line 132) | def dedupe_paths(paths: Iterable[Path]) -> List[Path]: function resolve_input_path (line 142) | def resolve_input_path(value: str) -> Path: function build_auto_inputs (line 154) | def build_auto_inputs(langs: Sequence[str], tokens: Sequence[str]) -> Tu... function gather_inputs (line 171) | def gather_inputs(positionals: Sequence[str], extras: Sequence[str], lan... function _build_token_counter (line 197) | def _build_token_counter(): function make_usage_snapshot (line 239) | def make_usage_snapshot(*, input_tokens: int, output_tokens: int) -> Dic... function isoformat_utc (line 257) | def isoformat_utc(dt: _dt.datetime) -> str: function utc_now_iso (line 261) | def utc_now_iso() -> str: function short_hex (line 265) | def short_hex(counter: int, seed: str) -> str: function make_session_header (line 271) | def make_session_header(session_id: str, ts: str) -> Dict[str, Any]: function make_message_entry (line 275) | def make_message_entry( function read_transcript (line 332) | def read_transcript(path: Path) -> List[Dict[str, Any]]: function clean_output (line 346) | def clean_output() -> None: function iter_samples (line 353) | def iter_samples(path: Path) -> Iterable[Tuple[int, Dict[str, Any]]]: function normalize_turn (line 420) | def normalize_turn(m: Dict[str, Any]) -> Optional[Tuple[str, str]]: function split_history_question (line 440) | def split_history_question(messages: List[Dict[str, Any]]) -> Tuple[List... function validate_transcript (line 465) | def validate_transcript(lines: List[Dict[str, Any]]) -> None: function main (line 559) | def main() -> int: FILE: benchmark/MR-NIAH/run_batch.py function now_ms (line 60) | def now_ms() -> int: function _parse_openclaw_version_text (line 64) | def _parse_openclaw_version_text(text: str) -> Optional[tuple[int, int, ... function openclaw_supports_conversation_access (line 75) | def openclaw_supports_conversation_access() -> bool: function ensure_mem9_conversation_access (line 100) | def ensure_mem9_conversation_access(profile: str) -> None: function extract_last_compaction_event (line 130) | def extract_last_compaction_event(session_file: Path) -> Optional[Dict[s... function coerce_str (line 179) | def coerce_str(value: Any) -> Optional[str]: function preview_text (line 186) | def preview_text(value: Any, max_chars: int) -> Optional[str]: function truncate_text (line 199) | def truncate_text(value: str, max_chars: int) -> str: function maybe_truncate (line 207) | def maybe_truncate(text: str, max_chars: int) -> tuple[str, bool]: function compaction_event_key (line 215) | def compaction_event_key(event: Dict[str, Any]) -> tuple[Optional[str], ... function maybe_add_agent_arg (line 220) | def maybe_add_agent_arg(cmd: List[str], agent: str) -> None: function load_index (line 225) | def load_index(path: Path) -> List[Dict[str, Any]]: function read_json (line 230) | def read_json(path: Path) -> Dict[str, Any]: function write_json (line 234) | def write_json(path: Path, obj: Any) -> None: function append_jsonl (line 237) | def append_jsonl(path: Path, obj: Any) -> None: function safe_extract_text (line 243) | def safe_extract_text(payload_obj: Any) -> str: function strip_ansi (line 303) | def strip_ansi(text: str) -> str: function parse_json_stdout (line 307) | def parse_json_stdout(stdout: str) -> Optional[Any]: function find_first_str_by_key (line 347) | def find_first_str_by_key(obj: Any, keys: set[str]) -> Optional[str]: function extract_effective_session_id (line 366) | def extract_effective_session_id(payload_obj: Any) -> Optional[str]: function extract_run_id (line 379) | def extract_run_id(payload_obj: Any) -> Optional[str]: function build_multipart_form (line 383) | def build_multipart_form( function http_json (line 410) | def http_json( function mem9_import_session (line 473) | def mem9_import_session( function mem9_list_memories (line 595) | def mem9_list_memories( function mem9_search_memories (line 618) | def mem9_search_memories( function mem9v2_create_messages (line 649) | def mem9v2_create_messages( function mem9v2_search_memories (line 682) | def mem9v2_search_memories( function mem9_clear_memories (line 721) | def mem9_clear_memories( function mem9_provision_tenant (line 829) | def mem9_provision_tenant(*, api_url: str) -> str: function _http_probe_ok (line 846) | def _http_probe_ok(*, url: str, timeout_s: int = 5) -> bool: function _wait_gateway_healthy (line 856) | def _wait_gateway_healthy(*, port: int, timeout_s: int = 60) -> None: function _start_gateway (line 866) | def _start_gateway(*, profile: str, log_path: Path) -> subprocess.Popen[... function _stop_process (line 884) | def _stop_process(proc: Optional[subprocess.Popen[str]]) -> None: function _summarize_memories_page (line 902) | def _summarize_memories_page(page: Dict[str, Any]) -> Dict[str, Any]: function summarize_memories_page (line 933) | def summarize_memories_page(page: Dict[str, Any], content_preview_chars:... class StorePaths (line 947) | class StorePaths: function resolve_store_paths (line 955) | def resolve_store_paths(profile: str, agent: str) -> StorePaths: function resolve_default_openclaw_workspace_dir (line 967) | def resolve_default_openclaw_workspace_dir(profile: str) -> Path: function resolve_profile_workspace_dir (line 979) | def resolve_profile_workspace_dir(*, profile: str, agent: str, profile_d... function rewrite_session_header_cwd (line 1019) | def rewrite_session_header_cwd(*, session_file: Path, cwd: Path) -> None: function _extract_text_blocks (line 1042) | def _extract_text_blocks(value: Any) -> str: function extract_openclaw_session_messages (line 1067) | def extract_openclaw_session_messages(session_file: Path) -> List[Dict[s... function ensure_store_initialized (line 1109) | def ensure_store_initialized(paths: StorePaths) -> None: function load_store (line 1116) | def load_store(paths: StorePaths) -> Dict[str, Any]: function pick_template_entry (line 1122) | def pick_template_entry(store: Dict[str, Any]) -> Dict[str, Any]: function _coerce_int (line 1136) | def _coerce_int(value: Any) -> Optional[int]: function load_processed_sample_ids (line 1154) | def load_processed_sample_ids(pred_path: Path) -> set[int]: function build_session_entry (line 1192) | def build_session_entry( function upsert_store_entry (line 1209) | def upsert_store_entry(*, paths: StorePaths, key: str, entry: Dict[str, ... function find_store_entry (line 1215) | def find_store_entry( function extract_compaction_metrics (line 1227) | def extract_compaction_metrics( function wipe_profile_local_memory (line 1248) | def wipe_profile_local_memory(paths: StorePaths) -> Dict[str, Any]: function main (line 1286) | def main() -> int: FILE: benchmark/MR-NIAH/score.py function detect_language (line 23) | def detect_language(answer: str) -> str: function modify_gt (line 30) | def modify_gt(gt): function score_response (line 77) | def score_response(response: str, gt_label: str, language: str) -> float: function load_predictions (line 87) | def load_predictions(path: Path) -> List[Dict[str, Any]]: function _coerce_bool (line 135) | def _coerce_bool(value: Any) -> Optional[bool]: function _coerce_int (line 149) | def _coerce_int(value: Any) -> Optional[int]: function resolve_compaction_tag (line 167) | def resolve_compaction_tag(rec: Dict[str, Any]) -> Tuple[Optional[bool],... function summarize_group (line 181) | def summarize_group(rows: Sequence[Dict[str, Any]]) -> Dict[str, Any]: function _strip_ansi (line 204) | def _strip_ansi(text: str) -> str: function _parse_json_from_mixed_stdout (line 208) | def _parse_json_from_mixed_stdout(stdout: str) -> Optional[Any]: function _safe_read_json (line 256) | def _safe_read_json(path: Path) -> Optional[Any]: function _extract_openclaw_meta (line 270) | def _extract_openclaw_meta(stdout_obj: Any) -> Optional[Dict[str, Any]]: function _classify_failure (line 282) | def _classify_failure(rec: Dict[str, Any]) -> Tuple[Optional[str], Dict[... function main (line 337) | def main() -> int: FILE: benchmark/locomo/src/cli.ts type Args (line 20) | interface Args { FILE: benchmark/locomo/src/evaluation.ts constant ARTICLES (line 3) | const ARTICLES = new Set(['a', 'an', 'and', 'the']) FILE: benchmark/locomo/src/ingest.ts type OrderedSession (line 9) | interface OrderedSession { dateLabel: string | null, turns: DialogTurn[]... FILE: benchmark/locomo/src/llm.ts constant SYSTEM_PROMPT (line 5) | const SYSTEM_PROMPT = 'You are a helpful assistant answering questions a... type ChatMessage (line 23) | interface ChatMessage { role: 'system' | 'user' | 'assistant', content: ... FILE: benchmark/locomo/src/stats.ts constant CATEGORIES (line 4) | const CATEGORIES: QACategory[] = [1, 2, 3, 4, 5] constant CATEGORY_NAMES (line 5) | const CATEGORY_NAMES: Record = { FILE: benchmark/locomo/src/types.ts type BenchmarkOutput (line 1) | interface BenchmarkOutput { type BenchmarkStats (line 13) | interface BenchmarkStats { type DialogTurn (line 22) | interface DialogTurn { type LoCoMoSample (line 32) | interface LoCoMoSample { type QACategory (line 38) | type QACategory = 1 | 2 | 3 | 4 | 5 type QAPair (line 40) | interface QAPair { type QAResult (line 48) | interface QAResult { type MnemoMemory (line 60) | interface MnemoMemory { FILE: benchmark/scripts/drive-session.py function send_prompt (line 26) | def send_prompt(profile: str, message: str, timeout: int, session_id: st... function parse_response (line 77) | def parse_response(raw: dict) -> str: function write_transcript (line 122) | def write_transcript(scenario: dict, turns: list, results_dir: str): function write_results_json (line 168) | def write_results_json(scenario: dict, turns: list, results_dir: str): function main (line 182) | def main(): FILE: benchmark/scripts/report.py function classify_turn (line 18) | def classify_turn(prompt): function render_markdown (line 35) | def render_markdown(text): function generate_html (line 78) | def generate_html(data): function _render_response (line 453) | def _render_response(resp): function _preview (line 466) | def _preview(resp): function _status_indicator (line 483) | def _status_indicator(resp): function main (line 492) | def main(): FILE: claude-plugin/hooks/lib/hook-json.mjs function parseJsonObject (line 12) | function parseJsonObject(raw) { function readStdinText (line 27) | function readStdinText() { function readStdinJson (line 34) | function readStdinJson() { function getString (line 43) | function getString(input, key) { function makeAdditionalContextOutput (line 53) | function makeAdditionalContextOutput(eventName, additionalContext) { function printJson (line 66) | function printJson(value) { function main (line 74) | function main(argv) { FILE: claude-plugin/hooks/lib/memories-formatter.mjs function escapeForPrompt (line 22) | function escapeForPrompt(text) { function formatMemoryLine (line 35) | function formatMemoryLine(memory, index, maxContentLength) { function formatMemoriesBlock (line 56) | function formatMemoriesBlock(memories, options = {}) { function parseMemories (line 90) | function parseMemories(raw) { function main (line 108) | function main() { FILE: claude-plugin/hooks/lib/transcript-parser.mjs constant START_TAG (line 8) | const START_TAG = ""; constant END_TAG (line 9) | const END_TAG = ""; function stripInjectedMemories (line 30) | function stripInjectedMemories(text) { function blockText (line 48) | function blockText(block) { function entryRole (line 67) | function entryRole(entry) { function entryContent (line 93) | function entryContent(entry) { constant ASSISTANT_NOISE_PREFIXES (line 117) | const ASSISTANT_NOISE_PREFIXES = [ function isSystemNoise (line 131) | function isSystemNoise(role, content) { function normalizeEntry (line 144) | function normalizeEntry(entry) { function parseTranscriptText (line 174) | function parseTranscriptText(raw) { function selectLastTurn (line 201) | function selectLastTurn(messages) { function applyMessageCap (line 226) | function applyMessageCap(messages, maxMessages) { function applyByteBudget (line 238) | function applyByteBudget(messages, maxBytes) { function selectWindow (line 267) | function selectWindow(messages, options) { function parseTranscriptFile (line 291) | function parseTranscriptFile(filePathOrUrl, options) { function parseArgs (line 300) | function parseArgs(argv) { function main (line 331) | function main(argv) { FILE: cli/main.go type ProvisionResponse (line 32) | type ProvisionResponse struct type Memory (line 36) | type Memory struct type ListResponse (line 53) | type ListResponse struct type BootstrapResponse (line 60) | type BootstrapResponse struct type BulkResponse (line 65) | type BulkResponse struct type IngestResponse (line 70) | type IngestResponse struct type TaskResponse (line 78) | type TaskResponse struct type TaskDetail (line 83) | type TaskDetail struct type TaskListResponse (line 92) | type TaskListResponse struct type TenantInfo (line 97) | type TenantInfo struct type ErrorResponse (line 102) | type ErrorResponse struct type Client (line 108) | type Client struct method tenantPath (line 126) | func (c *Client) tenantPath(path string) string { method doRequest (line 164) | func (c *Client) doRequest(method, path string, body interface{}) ([]b... method doMultipart (line 226) | func (c *Client) doMultipart(path string, fields map[string]string, fi... method Provision (line 304) | func (c *Client) Provision() (*ProvisionResponse, error) { method CreateMemory (line 319) | func (c *Client) CreateMemory(content string, tags []string, metadata ... method SearchMemories (line 344) | func (c *Client) SearchMemories(query, tags, source, state, memoryType... method GetMemory (line 393) | func (c *Client) GetMemory(id string) (*Memory, error) { method UpdateMemory (line 408) | func (c *Client) UpdateMemory(id, content string, tags []string, metad... method DeleteMemory (line 434) | func (c *Client) DeleteMemory(id string) error { method BulkCreate (line 445) | func (c *Client) BulkCreate(memories []map[string]interface{}) (*BulkR... method Ingest (line 463) | func (c *Client) Ingest(messages []map[string]string, sessionID, agent... method Bootstrap (line 490) | func (c *Client) Bootstrap(limit int) (*BootstrapResponse, error) { method GetTenantInfo (line 509) | func (c *Client) GetTenantInfo() (*TenantInfo, error) { method CreateTask (line 515) | func (c *Client) CreateTask(filePath, agentIDOverride, sessionID, file... method ListTasks (line 546) | func (c *Client) ListTasks() (*TaskListResponse, error) { method GetTask (line 561) | func (c *Client) GetTask(id string) (*TaskDetail, error) { function NewClient (line 116) | func NewClient(baseURL, tenantID, agentID string, timeout time.Duration,... function buildCurlCommand (line 130) | func buildCurlCommand(method, url string, headers http.Header, body inte... function parseError (line 576) | func parseError(body []byte, status int) error { function printJSON (line 586) | func printJSON(v interface{}) { function main (line 593) | func main() { function getEnvOrDefault (line 618) | func getEnvOrDefault(key, defaultVal string) string { function getClient (line 625) | func getClient() *Client { function requireTenantID (line 629) | func requireTenantID() error { function provisionCmd (line 638) | func provisionCmd() *cobra.Command { function memoryCmd (line 657) | func memoryCmd() *cobra.Command { function memoryCreateCmd (line 675) | func memoryCreateCmd() *cobra.Command { function memorySearchCmd (line 711) | func memorySearchCmd() *cobra.Command { function memoryGetCmd (line 746) | func memoryGetCmd() *cobra.Command { function memoryUpdateCmd (line 767) | func memoryUpdateCmd() *cobra.Command { function memoryDeleteCmd (line 805) | func memoryDeleteCmd() *cobra.Command { function memoryBulkCmd (line 825) | func memoryBulkCmd() *cobra.Command { function memoryIngestCmd (line 863) | func memoryIngestCmd() *cobra.Command { function memoryBootstrapCmd (line 913) | func memoryBootstrapCmd() *cobra.Command { function taskCmd (line 941) | func taskCmd() *cobra.Command { function taskCreateCmd (line 954) | func taskCreateCmd() *cobra.Command { function taskListCmd (line 994) | func taskListCmd() *cobra.Command { function taskGetCmd (line 1014) | func taskGetCmd() *cobra.Command { function tenantCmd (line 1037) | func tenantCmd() *cobra.Command { function tenantInfoCmd (line 1048) | func tenantInfoCmd() *cobra.Command { FILE: codex-plugin/bootstrap-hooks/shared/bootstrap.mjs constant DEFAULT_PLUGIN_VERSION (line 14) | const DEFAULT_PLUGIN_VERSION = "local"; constant PLUGINS_CACHE_DIR (line 15) | const PLUGINS_CACHE_DIR = path.join("plugins", "cache"); constant DEFAULT_INSTALL_METADATA (line 16) | const DEFAULT_INSTALL_METADATA = { function isRecord (line 25) | function isRecord(value) { function normalizeString (line 33) | function normalizeString(value) { function replacePathToken (line 43) | function replacePathToken(text, from, to) { function sanitizeDebugText (line 59) | function sanitizeDebugText(value, context = {}) { function hookAdditionalContext (line 82) | function hookAdditionalContext(eventName, text) { function resolveCodexHome (line 97) | function resolveCodexHome(inputCodexHome, env = process.env, homeDir = o... function debugEnabled (line 110) | function debugEnabled(env = process.env) { function resolveDebugLogFile (line 122) | function resolveDebugLogFile(input) { function scriptHookName (line 135) | function scriptHookName(scriptName) { function appendShimDebugError (line 161) | function appendShimDebugError(input) { function readJsonFile (line 207) | function readJsonFile(filePath) { function isValidPluginVersionSegment (line 223) | function isValidPluginVersionSegment(pluginVersion) { function readInstallMetadata (line 239) | function readInstallMetadata(input = {}) { function resolveInstallMetadataForShim (line 271) | function resolveInstallMetadataForShim(input = {}) { function buildPluginMissingSessionStartOutput (line 290) | function buildPluginMissingSessionStartOutput() { function handleMissingPluginHook (line 301) | function handleMissingPluginHook(scriptName) { function resolveActivePluginVersion (line 323) | function resolveActivePluginVersion(input) { function resolveActivePluginRoot (line 360) | function resolveActivePluginRoot(input) { function runHookShim (line 389) | async function runHookShim(scriptName, input = {}) { FILE: codex-plugin/hooks/session-start.mjs function buildSessionStartMessage (line 31) | function buildSessionStartMessage( function appendUpgradeNotice (line 103) | function appendUpgradeNotice(message, upgradeNotice) { function runSessionStart (line 122) | async function runSessionStart(input = {}) { function readStdinText (line 136) | function readStdinText() { function main (line 140) | async function main() { FILE: codex-plugin/hooks/shared/debug.mjs function normalizeString (line 21) | function normalizeString(value) { function replacePathToken (line 31) | function replacePathToken(text, from, to) { function sanitizeDebugText (line 49) | function sanitizeDebugText(value, context = {}) { function debugEnabled (line 70) | function debugEnabled(env = process.env) { function resolveDebugLogFile (line 82) | function resolveDebugLogFile(input = {}) { function appendDebugLog (line 112) | function appendDebugLog(input) { function appendDebugError (line 178) | function appendDebugError(input) { FILE: codex-plugin/hooks/shared/format.mjs constant START_TAG (line 3) | const START_TAG = ""; constant END_TAG (line 4) | const END_TAG = ""; function escapeForPrompt (line 18) | function escapeForPrompt(text) { function stripInjectedMemories (line 29) | function stripInjectedMemories(text) { function memoryContent (line 47) | function memoryContent(memory) { function formatMemoriesBlock (line 59) | function formatMemoriesBlock(memories) { function hookAdditionalContext (line 92) | function hookAdditionalContext(eventName, text) { FILE: codex-plugin/hooks/shared/transcript.mjs function blockText (line 16) | function blockText(block) { function normalizeVisibleMessage (line 41) | function normalizeVisibleMessage(role, content) { function appendIfDistinct (line 58) | function appendIfDistinct(messages, message) { function extractEventMessage (line 79) | function extractEventMessage(lineValue) { function extractResponseCandidates (line 110) | function extractResponseCandidates(lineValue) { function normalizeTranscriptItem (line 138) | function normalizeTranscriptItem(candidate) { function parseTranscriptText (line 161) | function parseTranscriptText(raw) { function selectStopWindow (line 233) | function selectStopWindow( FILE: codex-plugin/hooks/stop.mjs constant STOP_MAX_MESSAGES (line 11) | const STOP_MAX_MESSAGES = 20; constant STOP_MAX_BYTES (line 12) | const STOP_MAX_BYTES = 200_000; function buildIngestUrl (line 37) | function buildIngestUrl(baseUrl) { function runStop (line 51) | async function runStop(input) { function readStdinText (line 107) | function readStdinText() { function main (line 111) | async function main() { FILE: codex-plugin/hooks/user-prompt-submit.mjs constant RECALL_LIMIT (line 11) | const RECALL_LIMIT = 10; function buildRecallUrl (line 37) | function buildRecallUrl(baseUrl, prompt, limit = RECALL_LIMIT) { function extractMemories (line 48) | function extractMemories(payload) { function runUserPromptSubmit (line 75) | async function runUserPromptSubmit(input) { function readStdinText (line 121) | function readStdinText() { function main (line 125) | async function main() { FILE: codex-plugin/lib/config.mjs constant DEFAULT_AGENT_ID (line 13) | const DEFAULT_AGENT_ID = "codex"; constant DEFAULT_REQUEST_TIMEOUT_MS (line 14) | const DEFAULT_REQUEST_TIMEOUT_MS = 8_000; constant DEFAULT_SEARCH_TIMEOUT_MS (line 15) | const DEFAULT_SEARCH_TIMEOUT_MS = 15_000; constant DEFAULT_API_URL (line 17) | const DEFAULT_API_URL = "https://api.mem9.ai"; constant DEFAULT_PLUGIN_ID (line 18) | const DEFAULT_PLUGIN_ID = "mem9@mem9-ai"; constant DEFAULT_PLUGIN_INSTALL_IDENTITY (line 19) | const DEFAULT_PLUGIN_INSTALL_IDENTITY = { constant DEFAULT_PLUGIN_VERSION (line 23) | const DEFAULT_PLUGIN_VERSION = "local"; constant PLUGINS_CACHE_DIR (line 24) | const PLUGINS_CACHE_DIR = path.join("plugins", "cache"); function isRecord (line 177) | function isRecord(value) { function readJsonFile (line 181) | function readJsonFile(filePath) { function readTextFile (line 185) | function readTextFile(filePath) { function readDirNamesFromDisk (line 189) | function readDirNamesFromDisk(dirPath) { function envOverride (line 195) | function envOverride(env, key) { function normalizeTimeoutMs (line 200) | function normalizeTimeoutMs(value, fallback) { function resolveHomePath (line 208) | function resolveHomePath(inputPath, envPath, fallbackPath) { function normalizeString (line 220) | function normalizeString(value) { function normalizeProfileId (line 224) | function normalizeProfileId(value) { function isValidPluginVersionSegment (line 228) | function isValidPluginVersionSegment(pluginVersion) { function resolveInstalledPluginCacheVersion (line 237) | function resolveInstalledPluginCacheVersion({ function runtimePaths (line 264) | function runtimePaths(projectRoot, codexHome, mem9Home) { function asScopeConfig (line 280) | function asScopeConfig(value) { function asCredentialsFile (line 284) | function asCredentialsFile(value) { function resolveScopedProfileId (line 288) | function resolveScopedProfileId(globalConfig, projectConfig) { function resolveScopedTimeout (line 293) | function resolveScopedTimeout(projectValue, globalValue, fallback) { function resolveScopedEnabled (line 313) | function resolveScopedEnabled(globalConfig, projectConfig) { function buildEffectiveScopeConfig (line 321) | function buildEffectiveScopeConfig(globalConfig, projectConfig) { function resolveConfigSource (line 344) | function resolveConfigSource(globalLoad, projectLoad) { function resolveScopeFromConfigSource (line 352) | function resolveScopeFromConfigSource(configSource) { function loadScopeConfigFile (line 356) | function loadScopeConfigFile(filePath, exists, readJson) { function stripTomlLineComment (line 380) | function stripTomlLineComment(line) { function parseTomlTableHeader (line 416) | function parseTomlTableHeader(line) { function parsePluginEnabledState (line 421) | function parsePluginEnabledState(configTomlText, pluginId = DEFAULT_PLUG... function loadPluginState (line 458) | function loadPluginState({ function resolveLegacyPausedState (line 534) | function resolveLegacyPausedState(globalConfig, projectConfig) { function resolveConfigIssue (line 558) | function resolveConfigIssue(globalLoad, projectLoad) { function resolveWarnings (line 587) | function resolveWarnings(globalLoad, projectLoad) { function resolveCodexHome (line 604) | function resolveCodexHome(inputCodexHome, env, homeDir = os.homedir()) { function resolveMem9Home (line 612) | function resolveMem9Home(inputMem9Home, env, homeDir = os.homedir()) { function resolveRuntimeConfig (line 620) | function resolveRuntimeConfig(input) { function loadRuntimeStateFromDisk (line 658) | function loadRuntimeStateFromDisk(input = {}) { function loadRuntimeFromDisk (line 783) | function loadRuntimeFromDisk(input = {}) { FILE: codex-plugin/lib/http.mjs function mem9FetchJson (line 14) | async function mem9FetchJson(url, options = {}) { function mem9Headers (line 41) | function mem9Headers(apiKey, agentId) { function buildMem9Url (line 49) | function buildMem9Url(baseUrl, relativePath) { FILE: codex-plugin/lib/project-root.mjs function resolveProjectRoot (line 6) | function resolveProjectRoot(input = {}) { FILE: codex-plugin/lib/skill-runtime.mjs function legacyPausedSource (line 5) | function legacyPausedSource(state) { function buildRuntimeIssueMessage (line 17) | function buildRuntimeIssueMessage(state) { function loadReadyRuntimeState (line 66) | function loadReadyRuntimeState(options = {}) { FILE: codex-plugin/lib/update-check.mjs constant DEFAULT_UPDATE_CHECK (line 11) | const DEFAULT_UPDATE_CHECK = Object.freeze({ constant DEFAULT_INSTALL_IDENTITY (line 16) | const DEFAULT_INSTALL_IDENTITY = Object.freeze({ constant DEFAULT_REMOTE_UPGRADE_COMMAND (line 20) | const DEFAULT_REMOTE_UPGRADE_COMMAND = constant REMOTE_UPDATE_MANIFEST_URL (line 22) | const REMOTE_UPDATE_MANIFEST_URL = constant REMOTE_UPDATE_TIMEOUT_MS (line 24) | const REMOTE_UPDATE_TIMEOUT_MS = 2_000; function isRecord (line 137) | function isRecord(value) { function normalizeString (line 145) | function normalizeString(value) { function normalizePositiveInteger (line 154) | function normalizePositiveInteger(value, fallback) { function normalizeDate (line 166) | function normalizeDate(value) { function normalizeTimestamp (line 176) | function normalizeTimestamp(value) { function normalizeVersionText (line 194) | function normalizeVersionText(value) { function normalizeInstallIdentity (line 202) | function normalizeInstallIdentity(value) { function buildMarketplaceUpgradeCommand (line 221) | function buildMarketplaceUpgradeCommand(marketplaceName) { function normalizeUpdateState (line 231) | function normalizeUpdateState(value) { function readJsonFile (line 249) | function readJsonFile(filePath) { function compareNumbers (line 258) | function compareNumbers(left, right) { function parseComparableVersion (line 270) | function parseComparableVersion(version) { function comparePrereleaseIdentifier (line 300) | function comparePrereleaseIdentifier(left, right) { function compareParsedVersions (line 328) | function compareParsedVersions(left, right) { function normalizeRemoteManifest (line 383) | function normalizeRemoteManifest(value, fallbackUpgradeCommand) { function isRemoteCheckDue (line 411) | function isRemoteCheckDue(lastCheckedAt, intervalHours, now) { function fetchRemoteManifest (line 424) | async function fetchRemoteManifest(input = {}) { function resolveInstallIdentity (line 467) | function resolveInstallIdentity(input) { function maybeResolveRemoteUpdateNotice (line 497) | async function maybeResolveRemoteUpdateNotice(input) { function normalizeUpdateCheckConfig (line 567) | function normalizeUpdateCheckConfig(value) { function comparePluginVersions (line 584) | function comparePluginVersions(left, right) { function resolveUpdateStatePath (line 599) | function resolveUpdateStatePath(codexHome) { function readUpdateStateFile (line 607) | function readUpdateStateFile(input = {}) { function writeUpdateStateFile (line 630) | function writeUpdateStateFile(statePath, state, input = {}) { function resolveUpgradeNotice (line 658) | async function resolveUpgradeNotice(input) { FILE: codex-plugin/skills/cleanup/scripts/cleanup.mjs constant MEM9_EVENTS (line 18) | const MEM9_EVENTS = ["SessionStart", "UserPromptSubmit", "Stop"]; constant MEM9_MANAGED_HOOKS (line 19) | const MEM9_MANAGED_HOOKS = { function isRecord (line 34) | function isRecord(value) { function normalizeString (line 38) | function normalizeString(value) { function isHelpToken (line 42) | function isHelpToken(token) { function detectCleanupHelpRequest (line 47) | function detectCleanupHelpRequest(argv = process.argv.slice(2)) { function buildCleanupHelpText (line 68) | function buildCleanupHelpText(command = "") { function maybeWriteCleanupHelp (line 133) | function maybeWriteCleanupHelp(argv, stdout) { function sanitizeRelativePath (line 147) | function sanitizeRelativePath(filePath, basePath, options = {}) { function sanitizeDisplayPath (line 174) | function sanitizeDisplayPath(filePath, { cwd, codexHome, mem9Home }) { function sanitizeProjectConfigPath (line 207) | function sanitizeProjectConfigPath(filePath, context) { function sanitizeProjectRootPath (line 212) | function sanitizeProjectRootPath(filePath, context) { function sanitizeOptionalPath (line 219) | function sanitizeOptionalPath(filePath, context) { function parseArgs (line 225) | function parseArgs(argv = process.argv.slice(2)) { function isWritablePath (line 257) | function isWritablePath(targetPath, fsOps = {}) { function resolveContext (line 279) | function resolveContext(args = {}, options = {}) { function normalizeHookCommand (line 331) | function normalizeHookCommand(command) { function managedHookCommandFragments (line 335) | function managedHookCommandFragments(scriptName) { function isMem9ManagedHook (line 342) | function isMem9ManagedHook(eventName, hook) { function readJsonFile (line 357) | function readJsonFile(filePath, fsOps = {}) { function writeJsonFile (line 362) | function writeJsonFile(filePath, value, fsOps = {}) { function buildCleanupSnapshot (line 367) | function buildCleanupSnapshot(context) { function inspectManagedHooks (line 501) | function inspectManagedHooks(filePath, context) { function removeManagedHooks (line 541) | function removeManagedHooks(existingHooks) { function inspectCleanup (line 575) | function inspectCleanup(argv = process.argv.slice(2), options = {}) { function ensureWritableCleanupTargets (line 600) | function ensureWritableCleanupTargets(context, includeProject) { function runCleanup (line 616) | function runCleanup(argv = process.argv.slice(2), options = {}) { function main (line 709) | function main(argv = process.argv.slice(2), options = {}) { FILE: codex-plugin/skills/recall/scripts/recall.mjs constant DEFAULT_LIMIT (line 11) | const DEFAULT_LIMIT = 10; function normalizeString (line 13) | function normalizeString(value) { function isHelpToken (line 17) | function isHelpToken(token) { function shouldWriteRecallHelp (line 22) | function shouldWriteRecallHelp(argv = process.argv.slice(2)) { function buildRecallHelpText (line 29) | function buildRecallHelpText() { function parseIntegerArg (line 59) | function parseIntegerArg(flag, value) { function parseArgs (line 68) | function parseArgs(argv = process.argv.slice(2)) { function buildRecallUrl (line 100) | function buildRecallUrl(baseUrl, query, limit = DEFAULT_LIMIT) { function extractMemories (line 107) | function extractMemories(payload) { function normalizeMemorySummary (line 124) | function normalizeMemorySummary(memory) { function readStdinText (line 137) | function readStdinText() { function runRecall (line 141) | async function runRecall(argv = process.argv.slice(2), options = {}) { function main (line 197) | async function main(argv = process.argv.slice(2), options = {}) { FILE: codex-plugin/skills/setup/scripts/setup.mjs constant SCRIPT_DIR (line 31) | const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url)); constant PACKAGE_ROOT (line 32) | const PACKAGE_ROOT = path.resolve(SCRIPT_DIR, "../../.."); constant PLUGIN_MANIFEST_PATH (line 33) | const PLUGIN_MANIFEST_PATH = path.join(PACKAGE_ROOT, ".codex-plugin", "p... constant HOOK_SHIM_SOURCE_DIR (line 34) | const HOOK_SHIM_SOURCE_DIR = path.join(PACKAGE_ROOT, "bootstrap-hooks"); constant HOOK_TEMPLATE_PATH (line 35) | const HOOK_TEMPLATE_PATH = path.join(PACKAGE_ROOT, "templates", "hooks.j... constant DEFAULT_BASE_URL (line 36) | const DEFAULT_BASE_URL = "https://api.mem9.ai"; constant DEFAULT_UPDATE_CHECK (line 37) | const DEFAULT_UPDATE_CHECK = Object.freeze({ constant DEFAULT_INSTALL_METADATA (line 41) | const DEFAULT_INSTALL_METADATA = { constant CODEX_HOOKS_CANONICAL_RENAME_VERSION (line 47) | const CODEX_HOOKS_CANONICAL_RENAME_VERSION = { constant HOOKS_FEATURE_KEY (line 52) | const HOOKS_FEATURE_KEY = "hooks"; constant LEGACY_HOOKS_FEATURE_KEY (line 53) | const LEGACY_HOOKS_FEATURE_KEY = "codex_hooks"; constant HOOKS_FEATURE_KEYS (line 54) | const HOOKS_FEATURE_KEYS = [HOOKS_FEATURE_KEY, LEGACY_HOOKS_FEATURE_KEY]; constant MEM9_EVENTS (line 55) | const MEM9_EVENTS = ["SessionStart", "UserPromptSubmit", "Stop"]; constant HOOK_TEMPLATE_KEYS (line 56) | const HOOK_TEMPLATE_KEYS = { constant MEM9_MANAGED_HOOKS (line 61) | const MEM9_MANAGED_HOOKS = { function isRecord (line 76) | function isRecord(value) { function normalizeString (line 80) | function normalizeString(value) { function normalizeBaseUrl (line 84) | function normalizeBaseUrl(value) { function normalizeTimeoutMs (line 89) | function normalizeTimeoutMs(value, fallback) { function parseIntegerArg (line 97) | function parseIntegerArg(flag, value) { function parseSemver (line 106) | function parseSemver(value) { function compareSemver (line 119) | function compareSemver(left, right) { function detectCodexVersion (line 136) | function detectCodexVersion(options = {}) { function selectHooksFeatureKey (line 174) | function selectHooksFeatureKey(options = {}) { function parseUpdateCheckMode (line 189) | function parseUpdateCheckMode(value) { function readTextFile (line 198) | function readTextFile(filePath, readFile = readFileSync) { function isHelpToken (line 202) | function isHelpToken(token) { function detectSetupHelpRequest (line 207) | function detectSetupHelpRequest(argv = process.argv.slice(2)) { function buildSetupHelpText (line 246) | function buildSetupHelpText(command = "", subcommand = "") { function maybeWriteSetupHelp (line 430) | function maybeWriteSetupHelp(argv, stdout) { function getProfiles (line 446) | function getProfiles(credentials) { function hasApiKey (line 450) | function hasApiKey(profile) { function buildDefaultProfileId (line 454) | function buildDefaultProfileId(profiles) { function normalizeProfileRecord (line 463) | function normalizeProfileRecord(profileId, profile) { function readJsonFileOrDefault (line 473) | function readJsonFileOrDefault(filePath, fallback, fsOps = {}, options =... function readTextFileOrDefault (line 498) | function readTextFileOrDefault(filePath, fallback, fsOps = {}) { function writeJsonFile (line 509) | function writeJsonFile(filePath, value, fsOps = {}) { function writeTextFile (line 517) | function writeTextFile(filePath, text, fsOps = {}) { function buildBackupPath (line 525) | function buildBackupPath(filePath, fsOps = {}) { function backupFiles (line 538) | function backupFiles(filePaths, fsOps = {}) { function sanitizeDisplayPath (line 559) | function sanitizeDisplayPath(filePath, { cwd, codexHome, mem9Home }) { function sanitizeRelativePath (line 592) | function sanitizeRelativePath(filePath, basePath, options = {}) { function sanitizeProjectPath (line 619) | function sanitizeProjectPath(filePath, context) { function sanitizeBackupsForOutput (line 624) | function sanitizeBackupsForOutput(backups, context) { function sanitizeOptionalPath (line 631) | function sanitizeOptionalPath(filePath, context) { function requireString (line 637) | function requireString(flag, value) { function summarizeApiKeyPreview (line 646) | function summarizeApiKeyPreview(apiKey) { function summarizeProfileDisplayName (line 663) | function summarizeProfileDisplayName(profileId, label) { function summarizeProfileDisplaySummary (line 668) | function summarizeProfileDisplaySummary(profile) { function resolveInstallIdentityFromMetadata (line 678) | function resolveInstallIdentityFromMetadata(installPath, fsOps = {}) { function summarizeInstalledSetupScriptPath (line 693) | function summarizeInstalledSetupScriptPath(context) { function summarizeShellPath (line 727) | function summarizeShellPath(displayPath) { function buildManualSaveKeyShellCommand (line 747) | function buildManualSaveKeyShellCommand(profileId, label, baseUrl, conte... function summarizeProfiles (line 766) | function summarizeProfiles(profiles, context) { function normalizeUpdateCheckConfig (line 794) | function normalizeUpdateCheckConfig(value) { function stripTomlLineComment (line 806) | function stripTomlLineComment(line) { function parseFeaturesHooksState (line 842) | function parseFeaturesHooksState(configTomlText = "") { function inspectJsonFile (line 877) | function inspectJsonFile(filePath, fallback, fsOps = {}) { function summarizeScopeConfigState (line 913) | function summarizeScopeConfigState(config, options = {}) { function summarizeScopeFile (line 938) | function summarizeScopeFile(filePath, context, fsOps = {}, options = {}) { function inspectInstallMetadata (line 954) | function inspectInstallMetadata(filePath, context, fsOps = {}) { function listRelativeFiles (line 968) | function listRelativeFiles(dirPath, fsOps = {}, prefix = "") { function detectHookShimsInstalled (line 985) | function detectHookShimsInstalled(sourceDir, targetDir, fsOps = {}) { function detectManagedHooksInstalled (line 996) | function detectManagedHooksInstalled(existingHooks) { function parseArgs (line 1014) | function parseArgs(argv = process.argv.slice(2)) { function assertNodeVersion (line 1169) | function assertNodeVersion(nodeVersion = process.versions.node) { function isWritablePath (line 1178) | function isWritablePath(targetPath, fsOps = {}) { function resolveGlobalPaths (line 1201) | function resolveGlobalPaths(codexHome) { function resolveInstalledPluginIdentity (line 1213) | function resolveInstalledPluginIdentity(codexHome, packageRoot = PACKAGE... function buildInstallMetadata (line 1233) | function buildInstallMetadata(codexHome, packageRoot = PACKAGE_ROOT) { function shellQuote (line 1240) | function shellQuote(value, platform = process.platform) { function buildNodeCommand (line 1251) | function buildNodeCommand(scriptPath, platform = process.platform) { function buildHookCommands (line 1256) | function buildHookCommands(hooksDir) { function renderHooksTemplate (line 1279) | function renderHooksTemplate({ function normalizeHookCommand (line 1297) | function normalizeHookCommand(command) { function managedHookCommandFragments (line 1301) | function managedHookCommandFragments(scriptName) { function isMem9ManagedHook (line 1308) | function isMem9ManagedHook(eventName, hook) { function removeManagedHooks (line 1323) | function removeManagedHooks(existingHooks) { function mergeMem9Hooks (line 1353) | function mergeMem9Hooks(existingHooks, mem9Hooks) { function applyCodexHooksPatch (line 1374) | function applyCodexHooksPatch(sourceText = "", options = {}) { function upsertCredentialsProfile (line 1450) | function upsertCredentialsProfile(credentials, profile) { function buildManualProfileGuidance (line 1470) | function buildManualProfileGuidance(profileId, label, baseUrl = DEFAULT_... function provisionApiKey (line 1492) | async function provisionApiKey({ function buildScopeConfig (line 1543) | function buildScopeConfig(profileId, options = {}) { function installHookShims (line 1575) | function installHookShims(sourceDir, targetDir, fsOps = {}) { function resolveCommandContext (line 1595) | function resolveCommandContext(args = {}, options = {}) { function resolveHooksFeature (line 1642) | function resolveHooksFeature(options = {}) { function emitMachineSummary (line 1654) | function emitMachineSummary(summary, context, stdout) { function sanitizeScopeResultForOutput (line 1658) | function sanitizeScopeResultForOutput(result, context) { function sanitizeProfileResultForOutput (line 1680) | function sanitizeProfileResultForOutput(result, context) { function prepareManagedRuntimeRepair (line 1693) | function prepareManagedRuntimeRepair(context, noteInvalidJson, options =... function applyManagedRuntimeRepair (line 1746) | function applyManagedRuntimeRepair(context, prepared, options = {}) { function loadCredentialsForWrite (line 1791) | function loadCredentialsForWrite(context, noteInvalidJson) { function resolveWritableFlags (line 1806) | function resolveWritableFlags(context, options = {}) { function resolveProfileForWrite (line 1824) | function resolveProfileForWrite(args, profiles) { function inspectSetup (line 1837) | function inspectSetup(argv = process.argv.slice(2), options = {}) { function runProfileCreate (line 1993) | async function runProfileCreate(args, options = {}) { function runProfileSaveKey (line 2043) | async function runProfileSaveKey(args, options = {}) { function readValidatedCredentials (line 2097) | function readValidatedCredentials(context) { function resolveConfigWriteFallback (line 2118) | function resolveConfigWriteFallback(scope, targetConfig, globalConfig) { function runScopeApply (line 2129) | async function runScopeApply(args, options = {}) { function runScopeClear (line 2230) | async function runScopeClear(args, options = {}) { function runSetup (line 2295) | async function runSetup(argv = process.argv.slice(2), options = {}) { function main (line 2327) | async function main(argv = process.argv.slice(2), options = {}) { FILE: codex-plugin/skills/store/scripts/store.mjs function normalizeString (line 11) | function normalizeString(value) { function isHelpToken (line 15) | function isHelpToken(token) { function shouldWriteStoreHelp (line 20) | function shouldWriteStoreHelp(argv = process.argv.slice(2)) { function buildStoreHelpText (line 27) | function buildStoreHelpText() { function parseArgs (line 56) | function parseArgs(argv = process.argv.slice(2)) { function readStdinText (line 83) | function readStdinText() { function runStore (line 87) | async function runStore(argv = process.argv.slice(2), options = {}) { function main (line 138) | async function main(argv = process.argv.slice(2), options = {}) { FILE: codex-plugin/tests/bootstrap-hooks.test.mjs function writeJson (line 25) | function writeJson(filePath, value) { FILE: codex-plugin/tests/cleanup.test.mjs function writeJson (line 21) | function writeJson(filePath, value) { function readJson (line 26) | function readJson(filePath) { function createCleanupFixture (line 30) | function createCleanupFixture() { function createStdoutCapture (line 123) | function createStdoutCapture() { FILE: codex-plugin/tests/recall.test.mjs method write (line 38) | write(/** @type {string} */ chunk) { method write (line 97) | write(/** @type {string} */ chunk) { method write (line 153) | write() {} FILE: codex-plugin/tests/runtime-config.test.mjs constant REPO_ROOT (line 18) | const REPO_ROOT = "/workspace/app"; constant PROJECT_CWD (line 19) | const PROJECT_CWD = "/workspace/app/packages/web"; constant OUTSIDE_CWD (line 20) | const OUTSIDE_CWD = "/workspace/scratch"; constant CODEX_HOME (line 21) | const CODEX_HOME = "/CODEX_HOME"; constant MEM9_HOME (line 22) | const MEM9_HOME = "/MEM9_HOME"; constant GLOBAL_CONFIG_PATH (line 23) | const GLOBAL_CONFIG_PATH = `${CODEX_HOME}/mem9/config.json`; constant PROJECT_CONFIG_PATH (line 24) | const PROJECT_CONFIG_PATH = `${REPO_ROOT}/.codex/mem9/config.json`; constant CREDENTIALS_PATH (line 25) | const CREDENTIALS_PATH = `${MEM9_HOME}/.credentials.json`; constant CONFIG_TOML_PATH (line 26) | const CONFIG_TOML_PATH = `${CODEX_HOME}/config.toml`; constant INSTALL_PATH (line 27) | const INSTALL_PATH = `${CODEX_HOME}/mem9/install.json`; constant DEFAULT_INSTALL (line 29) | const DEFAULT_INSTALL = { constant DEFAULT_CREDENTIALS (line 36) | const DEFAULT_CREDENTIALS = { function normalizeFixtureString (line 52) | function normalizeFixtureString(value) { function createRuntimeDisk (line 56) | function createRuntimeDisk(options = {}) { method exists (line 148) | exists(filePath) { method exists (line 159) | exists(filePath) { method exists (line 170) | exists(filePath) { FILE: codex-plugin/tests/session-start.test.mjs constant SESSION_START_ENTRY (line 14) | const SESSION_START_ENTRY = path.resolve("./hooks/session-start.mjs"); function writeJson (line 20) | function writeJson(filePath, value) { function runNodeHook (line 29) | async function runNodeHook(scriptPath, input) { FILE: codex-plugin/tests/setup.test.mjs function writeJson (line 30) | function writeJson(filePath, value) { function readJson (line 35) | function readJson(filePath) { function installActivePlugin (line 39) | function installActivePlugin(codexHome) { method write (line 183) | write(chunk) { method write (line 209) | write(chunk) { method execFileSync (line 507) | execFileSync() { method write (line 758) | write(chunk) { method json (line 816) | async json() { method write (line 824) | write(chunk) { method write (line 883) | write(chunk) { method execFileSync (line 1091) | execFileSync() { method write (line 1095) | write(chunk) { method execFileSync (line 1262) | execFileSync() { method write (line 1520) | write(chunk) { FILE: codex-plugin/tests/stop.test.mjs constant STOP_ENTRY (line 19) | const STOP_ENTRY = path.resolve("./hooks/stop.mjs"); constant NON_READY_ISSUE_CODES (line 21) | const NON_READY_ISSUE_CODES = ["plugin_disabled", "plugin_missing", "leg... function writeJson (line 34) | function writeJson(filePath, value) { function createCountingServer (line 39) | async function createCountingServer() { function runNodeHook (line 84) | async function runNodeHook(scriptPath, input) { function createRuntimeLayout (line 119) | function createRuntimeLayout(tempRoot, issueCode, baseUrl) { method post (line 447) | async post(_url, body, options) { method debug (line 452) | debug(stage, fields) { FILE: codex-plugin/tests/store.test.mjs method write (line 18) | write(/** @type {string} */ chunk) { method write (line 66) | write(/** @type {string} */ chunk) { method write (line 114) | write() {} method write (line 142) | write() {} FILE: codex-plugin/tests/test-temp.mjs constant TESTS_DIR (line 5) | const TESTS_DIR = path.dirname(fileURLToPath(import.meta.url)); constant PACKAGE_ROOT (line 6) | const PACKAGE_ROOT = path.resolve(TESTS_DIR, ".."); constant TMP_ROOT (line 7) | const TMP_ROOT = path.join(PACKAGE_ROOT, ".tmp"); constant RUN_ROOT (line 8) | const RUN_ROOT = path.join(TMP_ROOT, `run-${process.pid}`); function registerTmpCleanup (line 12) | function registerTmpCleanup() { function createTempRoot (line 26) | function createTempRoot(scope = "tests") { FILE: codex-plugin/tests/update-check.test.mjs method exists (line 209) | exists(filePath) { method readJson (line 212) | readJson(filePath) { FILE: codex-plugin/tests/user-prompt-submit.test.mjs constant USER_PROMPT_SUBMIT_ENTRY (line 19) | const USER_PROMPT_SUBMIT_ENTRY = path.resolve("./hooks/user-prompt-submi... constant NON_READY_ISSUE_CODES (line 21) | const NON_READY_ISSUE_CODES = ["plugin_disabled", "plugin_missing", "leg... function writeJson (line 27) | function writeJson(filePath, value) { function createCountingServer (line 32) | async function createCountingServer() { function runNodeHook (line 77) | async function runNodeHook(scriptPath, input) { function createRuntimeLayout (line 112) | function createRuntimeLayout(tempRoot, issueCode, baseUrl) { method search (line 207) | async search(url, options) { method debug (line 216) | debug(stage, fields) { method search (line 249) | async search() { method debug (line 253) | debug(stage, fields) { FILE: dashboard/app/scripts/sentry-sourcemaps.mjs function runSentryCli (line 25) | function runSentryCli(command, extraArgs = []) { FILE: dashboard/app/src/api/analysis-cache.ts type AnalysisCacheEntry (line 9) | interface AnalysisCacheEntry { function readAnalysisCache (line 17) | function readAnalysisCache( function writeAnalysisCache (line 24) | function writeAnalysisCache( function clearAnalysisCache (line 32) | function clearAnalysisCache( FILE: dashboard/app/src/api/analysis-client.ts constant ANALYSIS_API_BASE (line 19) | const ANALYSIS_API_BASE = class AnalysisApiError (line 22) | class AnalysisApiError extends Error { method constructor (line 28) | public constructor( function readJson (line 42) | async function readJson(response: Response): Promise { function request (line 51) | async function request( function requestResponse (line 67) | async function requestResponse( method createJob (line 97) | createJob( method uploadBatch (line 107) | uploadBatch( method finalizeJob (line 119) | finalizeJob( method getSnapshot (line 128) | getSnapshot( method getUpdates (line 135) | getUpdates( method getTaxonomy (line 144) | getTaxonomy(spaceId: string, version?: string): Promise { method createDeepAnalysisReport (line 151) | createDeepAnalysisReport( method listDeepAnalysisReports (line 161) | listDeepAnalysisReports( method getDeepAnalysisReport (line 173) | getDeepAnalysisReport( method downloadDeepAnalysisDuplicatesCsv (line 180) | async downloadDeepAnalysisDuplicatesCsv( method deleteDeepAnalysisDuplicates (line 191) | deleteDeepAnalysisDuplicates( method deleteDeepAnalysisReport (line 200) | deleteDeepAnalysisReport( FILE: dashboard/app/src/api/analysis-helpers.test.ts function createMemory (line 20) | function createMemory(overrides: Partial = {}): Memory { function createSnapshot (line 39) | function createSnapshot(): AnalysisJobSnapshotResponse { FILE: dashboard/app/src/api/analysis-helpers.ts constant TERMINAL_JOB_STATUSES (line 16) | const TERMINAL_JOB_STATUSES: JobStatus[] = [ constant DEFAULT_TAXONOMY_VERSION (line 24) | const DEFAULT_TAXONOMY_VERSION = "v3"; constant MAX_ANALYSIS_FACETS (line 25) | const MAX_ANALYSIS_FACETS = 50; constant EMPTY_AGGREGATE (line 27) | const EMPTY_AGGREGATE: AggregateSnapshot = { function getAnalysisBatchSize (line 35) | function getAnalysisBatchSize(): number { function getDefaultPollMs (line 40) | function getDefaultPollMs(): number { function isTerminalJobStatus (line 45) | function isTerminalJobStatus(status: JobStatus): boolean { function toAnalysisMemoryInput (line 49) | function toAnalysisMemoryInput(memory: Memory): AnalysisMemoryInput { function chunkAnalysisMemories (line 58) | function chunkAnalysisMemories(items: T[], size: number): T[][] { function dateRangeFromMemories (line 67) | function dateRangeFromMemories( function buildCreateJobRequest (line 87) | function buildCreateJobRequest( function makeBatchSummaries (line 113) | function makeBatchSummaries( function createPendingSnapshot (line 127) | function createPendingSnapshot( function applyUploadedBatch (line 163) | function applyUploadedBatch( function toAggregateCards (line 186) | function toAggregateCards( function compareFacetValues (line 202) | function compareFacetValues(left: string, right: string): number { function normalizeFacetStats (line 206) | function normalizeFacetStats(stats: AnalysisFacetStat[]): AnalysisFacetS... function buildFacetStats (line 216) | function buildFacetStats( function toFacetStatsFromLegacyValues (line 230) | function toFacetStatsFromLegacyValues( function toFacetValues (line 248) | function toFacetValues(stats: AnalysisFacetStat[]): string[] { function getMoreRecentProgress (line 252) | function getMoreRecentProgress( function getMoreRecentAggregate (line 261) | function getMoreRecentAggregate( function mergeBatchSummaries (line 270) | function mergeBatchSummaries( function mergeSnapshotWithUpdates (line 284) | function mergeSnapshotWithUpdates( function sha256Hex (line 319) | async function sha256Hex(input: string): Promise { function createMemoryFingerprint (line 327) | async function createMemoryFingerprint( function createBatchHash (line 341) | async function createBatchHash( function isDegradedAnalysisError (line 357) | function isDegradedAnalysisError(error: unknown): boolean { FILE: dashboard/app/src/api/analysis-matcher.test.ts function createMemory (line 10) | function createMemory( FILE: dashboard/app/src/api/analysis-matcher.ts function normalizeText (line 10) | function normalizeText(memory: Memory): string { function matchesRule (line 15) | function matchesRule(text: string, rule: TaxonomyRuleDefinition): boolean { function matchMemoriesToTaxonomy (line 30) | function matchMemoriesToTaxonomy( function buildAnalysisCardsFromMatches (line 63) | function buildAnalysisCardsFromMatches( function createAnalysisMatchMap (line 85) | function createAnalysisMatchMap( FILE: dashboard/app/src/api/analysis-queries.test.ts function createSnapshot (line 14) | function createSnapshot( function createBatchSummaries (line 81) | function createBatchSummaries( FILE: dashboard/app/src/api/analysis-queries.ts constant TERMINAL_BATCH_STATUSES (line 41) | const TERMINAL_BATCH_STATUSES = new Set(["SUCCEEDED", "FAILED", "DLQ"]); constant ANALYSIS_AUTO_REFRESH_WINDOW_MS (line 42) | const ANALYSIS_AUTO_REFRESH_WINDOW_MS = 3 * 24 * 60 * 60 * 1000; constant MAX_STALLED_POLL_ATTEMPTS (line 43) | const MAX_STALLED_POLL_ATTEMPTS = 4; type PollProgressState (line 45) | interface PollProgressState { type AnalysisStartupResult (line 55) | interface AnalysisStartupResult { constant INITIAL_STATE (line 63) | const INITIAL_STATE: SpaceAnalysisState = { function shouldStopPollingSnapshot (line 76) | function shouldStopPollingSnapshot( function isAnalysisCacheFresh (line 96) | function isAnalysisCacheFresh( function trimEvents (line 109) | function trimEvents(items: T[], limit: number): T[] { function persistAnalysisSnapshot (line 113) | async function persistAnalysisSnapshot( function createAnalysisRunKey (line 133) | function createAnalysisRunKey( function getSnapshotPhase (line 141) | function getSnapshotPhase( function shouldRestartIncompleteCachedSnapshot (line 153) | function shouldRestartIncompleteCachedSnapshot( function createTerminalBatchSignature (line 162) | function createTerminalBatchSignature( function createPollProgressState (line 171) | function createPollProgressState( function hasPollingProgress (line 186) | function hasPollingProgress( function getNextPollProgressState (line 200) | function getNextPollProgressState( function shouldTreatPollAsStalled (line 219) | function shouldTreatPollAsStalled( function shouldUseCachedAnalysisMatches (line 225) | function shouldUseCachedAnalysisMatches({ function startAnalysisStartup (line 244) | async function startAnalysisStartup( function useSpaceAnalysis (line 337) | function useSpaceAnalysis(input: { FILE: dashboard/app/src/api/client.ts function createHybridProvider (line 6) | function createHybridProvider(): DashboardProvider { FILE: dashboard/app/src/api/deep-analysis-queries.test.tsx function createWrapper (line 22) | function createWrapper() { FILE: dashboard/app/src/api/deep-analysis-queries.ts constant TERMINAL_REPORT_STATUSES (line 12) | const TERMINAL_REPORT_STATUSES = new Set(["COMPLETED", "FAILED"]); constant TERMINAL_DUPLICATE_CLEANUP_STATUSES (line 13) | const TERMINAL_DUPLICATE_CLEANUP_STATUSES = new Set(["COMPLETED", "FAILE... function hasPendingDuplicateCleanup (line 15) | function hasPendingDuplicateCleanup( function getDeepAnalysisReportsQueryKey (line 21) | function getDeepAnalysisReportsQueryKey(spaceId: string): string[] { function getDeepAnalysisReportDetailQueryKey (line 25) | function getDeepAnalysisReportDetailQueryKey( function shouldPollReports (line 32) | function shouldPollReports(reports: DeepAnalysisReportListItem[]): boole... function useDeepAnalysisReports (line 40) | function useDeepAnalysisReports(spaceId: string, active: boolean) { FILE: dashboard/app/src/api/local-cache.ts constant DB_NAME (line 9) | const DB_NAME = "mem9-dashboard-cache"; constant DB_VERSION (line 10) | const DB_VERSION = 1; constant MEMORIES_STORE (line 12) | const MEMORIES_STORE = "memories"; constant ANALYSIS_RESULTS_STORE (line 13) | const ANALYSIS_RESULTS_STORE = "analysis_results"; constant ANALYSIS_MATCHES_STORE (line 14) | const ANALYSIS_MATCHES_STORE = "analysis_matches"; constant SYNC_STATE_STORE (line 15) | const SYNC_STATE_STORE = "sync_state"; type CachedMemoryRecord (line 17) | interface CachedMemoryRecord { type CachedAnalysisResultRecord (line 26) | interface CachedAnalysisResultRecord { type CachedAnalysisMatchRecord (line 37) | interface CachedAnalysisMatchRecord { type SyncStateRecord (line 47) | interface SyncStateRecord { type CachedAnalysisResultEntry (line 55) | interface CachedAnalysisResultEntry { function createMemoryKey (line 68) | function createMemoryKey(spaceId: string, memoryId: string): string { function createRangeKey (line 72) | function createRangeKey(spaceId: string, range: TimeRangePreset): string { function createMatchKey (line 76) | function createMatchKey( function supportsIndexedDb (line 84) | function supportsIndexedDb(): boolean { function requestToPromise (line 88) | function requestToPromise(request: IDBRequest): Promise { function transactionDone (line 95) | function transactionDone(transaction: IDBTransaction): Promise { function openDatabase (line 107) | function openDatabase(): Promise { function putRecords (line 153) | async function putRecords( function deleteRecords (line 169) | async function deleteRecords(storeName: string, keys: string[]): Promise... function getRecord (line 182) | async function getRecord(storeName: string, key: string): Promise( function toMatchRecord (line 209) | function toMatchRecord( function fromMatchRecord (line 225) | function fromMatchRecord(record: CachedAnalysisMatchRecord): MemoryAnaly... function readCachedMemories (line 233) | async function readCachedMemories(spaceId: string): Promise { function upsertCachedMemories (line 253) | async function upsertCachedMemories( function clearCachedMemoriesForSpace (line 276) | async function clearCachedMemoriesForSpace( function removeCachedMemory (line 297) | async function removeCachedMemory( function readSyncState (line 309) | async function readSyncState( function patchSyncState (line 319) | async function patchSyncState( function readCachedAnalysisResult (line 356) | async function readCachedAnalysisResult( function writeCachedAnalysisResult (line 387) | async function writeCachedAnalysisResult( function clearCachedAnalysisResult (line 411) | async function clearCachedAnalysisResult( function readCachedAnalysisMatches (line 423) | async function readCachedAnalysisMatches( function writeCachedAnalysisMatches (line 441) | async function writeCachedAnalysisMatches( function clearCachedAnalysisMatches (line 464) | async function clearCachedAnalysisMatches( FILE: dashboard/app/src/api/mock-data.ts constant MOCK_SPACE_ID (line 3) | const MOCK_SPACE_ID = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"; FILE: dashboard/app/src/api/provider-http.ts constant API_BASE (line 23) | const API_BASE = (import.meta.env.VITE_API_BASE || "/your-memory/api").r... constant AGENT_ID (line 27) | const AGENT_ID = "mem9-dashboard"; constant EMPTY_TIMESTAMP (line 28) | const EMPTY_TIMESTAMP = new Date(0).toISOString(); function normalizeTags (line 30) | function normalizeTags(tags: unknown): string[] { function buildHeaders (line 35) | function buildHeaders( function normalizeMemory (line 49) | function normalizeMemory(memory: Partial): Memory { function hasValidMemoryShape (line 68) | function hasValidMemoryShape(memory: Partial): boolean { function normalizeMemoryListResponse (line 76) | function normalizeMemoryListResponse( function normalizeSessionMessage (line 89) | function normalizeSessionMessage( function normalizeSessionMessageListResponse (line 108) | function normalizeSessionMessageListResponse( function request (line 118) | async function request( function requestRaw (line 136) | async function requestRaw( method verifySpace (line 154) | async verifySpace(apiKey: string): Promise { method listMemories (line 167) | async listMemories( method listSessionMessages (line 188) | async listSessionMessages( method getStats (line 229) | async getStats( method getMemory (line 254) | async getMemory(apiKey: string, memoryId: string): Promise { method createMemory (line 264) | async createMemory( method updateMemory (line 284) | async updateMemory( method deleteMemory (line 306) | async deleteMemory(apiKey: string, memoryId: string): Promise { method exportMemories (line 313) | async exportMemories(apiKey: string): Promise { method importMemories (line 346) | async importMemories(apiKey: string, file: File): Promise { method getImportTask (line 359) | async getImportTask( method listImportTasks (line 366) | async listImportTasks(apiKey: string): Promise { method getTopicSummary (line 385) | async getTopicSummary( FILE: dashboard/app/src/api/provider-mock.ts constant AGENT_ID (line 33) | const AGENT_ID = "mem9-dashboard"; function delay (line 35) | function delay(ms: number): Promise { function applyTimeFilter (line 96) | function applyTimeFilter(memories: Memory[], params?: TimeRangeParams): ... function mockList (line 108) | function mockList(params: MemoryListParams): MemoryListResponse { function mockListSessionMessages (line 164) | function mockListSessionMessages( function mockStats (line 189) | function mockStats(params?: TimeRangeParams): MemoryStats { function mockTopicSummary (line 198) | function mockTopicSummary(params?: TimeRangeParams): TopicSummary { method verifySpace (line 219) | async verifySpace(apiKey: string): Promise { method listMemories (line 230) | async listMemories( method listSessionMessages (line 238) | async listSessionMessages( method getStats (line 246) | async getStats( method getMemory (line 254) | async getMemory(_apiKey: string, memoryId: string): Promise { method createMemory (line 261) | async createMemory( method updateMemory (line 286) | async updateMemory( method deleteMemory (line 312) | async deleteMemory(apiKey: string, memoryId: string): Promise { method exportMemories (line 318) | async exportMemories(apiKey: string): Promise { method importMemories (line 337) | async importMemories( method getImportTask (line 368) | async getImportTask( method listImportTasks (line 390) | async listImportTasks(_apiKey: string): Promise { method getTopicSummary (line 412) | async getTopicSummary( FILE: dashboard/app/src/api/provider.ts type DashboardProvider (line 17) | interface DashboardProvider { FILE: dashboard/app/src/api/queries.test.ts function createMemory (line 26) | function createMemory(sessionID = ""): Memory { function createMessage (line 46) | function createMessage( function importQueriesModule (line 67) | async function importQueriesModule() { FILE: dashboard/app/src/api/queries.ts constant PAGE_SIZE (line 21) | const PAGE_SIZE = 50; function getLinkedSessionID (line 23) | function getLinkedSessionID( function compareSessionMessages (line 29) | function compareSessionMessages( function useStats (line 50) | function useStats( function useMemories (line 64) | function useMemories( function sortSessionMessages (line 97) | function sortSessionMessages( function useSelectedSessionMessages (line 103) | function useSelectedSessionMessages( function useMemory (line 124) | function useMemory(spaceId: string, memoryId: string | null) { function useTopicSummary (line 132) | function useTopicSummary( function useImportTasks (line 146) | function useImportTasks(spaceId: string, enabled = true) { function useImportTask (line 159) | function useImportTask( function useCreateMemory (line 177) | function useCreateMemory(spaceId: string) { function useDeleteMemory (line 191) | function useDeleteMemory(spaceId: string) { function useUpdateMemory (line 204) | function useUpdateMemory(spaceId: string) { function useExportMemories (line 226) | function useExportMemories(spaceId: string) { function useImportMemories (line 236) | function useImportMemories(spaceId: string) { FILE: dashboard/app/src/api/source-memories.test.ts function createMemory (line 4) | function createMemory(id: string): Memory { function importModules (line 37) | async function importModules() { FILE: dashboard/app/src/api/source-memories.ts constant PAGE_SIZE (line 13) | const PAGE_SIZE = 200; function getSourceMemoriesQueryKey (line 16) | function getSourceMemoriesQueryKey(spaceId: string): string[] { function syncAllMemories (line 20) | async function syncAllMemories(spaceId: string): Promise { function loadSourceMemories (line 63) | async function loadSourceMemories(spaceId: string): Promise { function useSourceMemories (line 76) | function useSourceMemories( FILE: dashboard/app/src/components/lang-toggle.tsx constant LANGS (line 11) | const LANGS = [ function LangToggle (line 16) | function LangToggle() { FILE: dashboard/app/src/components/pixel-farm/actor-preview-panel.tsx type PixelFarmActorPreviewPanelProps (line 28) | interface PixelFarmActorPreviewPanelProps { constant DIRECTION_OPTIONS (line 37) | const DIRECTION_OPTIONS = ["left", "right"] as const; function humanizeLabel (line 39) | function humanizeLabel(value: string): string { function radioOptions (line 46) | function radioOptions(values: readonly string[]): Array<{ label: string;... function defaultStateForType (line 53) | function defaultStateForType( function variantOptionsForType (line 67) | function variantOptionsForType(type: PixelFarmDebugActorType): readonly ... function stateOptionsForType (line 80) | function stateOptionsForType(type: PixelFarmDebugActorType): readonly st... function directionOptionsForType (line 93) | function directionOptionsForType(type: PixelFarmDebugActorType): readonl... function PixelFarmActorPreviewPanel (line 97) | function PixelFarmActorPreviewPanel({ type RadioChipGroupProps (line 258) | interface RadioChipGroupProps { function RadioChipGroup (line 266) | function RadioChipGroup({ label, name, onChange, options, value }: Radio... FILE: dashboard/app/src/components/pixel-farm/feedback-dialog.tsx type FeedbackType (line 6) | type FeedbackType = "bug" | "suggestion" | "other"; function PixelFarmFeedbackDialog (line 8) | function PixelFarmFeedbackDialog() { FILE: dashboard/app/src/components/pixel-farm/front-target-panel.tsx type PixelFarmFrontTargetPanelProps (line 5) | interface PixelFarmFrontTargetPanelProps { function formatTile (line 9) | function formatTile( function PixelFarmFrontTargetPanel (line 19) | function PixelFarmFrontTargetPanel({ FILE: dashboard/app/src/components/pixel-farm/phaser-stage.tsx type PhaserStageProps (line 31) | interface PhaserStageProps { function createFallbackNpcDialogContent (line 44) | function createFallbackNpcDialogContent(): PixelFarmNpcDialogContentState { function playBubbleAppearSound (line 56) | function playBubbleAppearSound( function PhaserStage (line 88) | function PhaserStage({ FILE: dashboard/app/src/components/pixel-farm/pointer-coordinates-panel.tsx type PixelFarmPointerCoordinatesPanelProps (line 3) | interface PixelFarmPointerCoordinatesPanelProps { function formatTile (line 7) | function formatTile( function PixelFarmPointerCoordinatesPanel (line 17) | function PixelFarmPointerCoordinatesPanel({ FILE: dashboard/app/src/components/pixel-farm/world-state-panel.tsx type PixelFarmWorldStatePanelProps (line 5) | interface PixelFarmWorldStatePanelProps { function formatBuckets (line 10) | function formatBuckets(count: number): string { function formatPlantCount (line 14) | function formatPlantCount(count: number): string { function PixelFarmWorldStatePanel (line 18) | function PixelFarmWorldStatePanel({ FILE: dashboard/app/src/components/space/add-dialog.tsx function AddMemoryDialog (line 15) | function AddMemoryDialog({ FILE: dashboard/app/src/components/space/analysis-panel.test.tsx function createFacetStats (line 22) | function createFacetStats( function createSnapshot (line 31) | function createSnapshot( function createState (line 103) | function createState( FILE: dashboard/app/src/components/space/analysis-panel.tsx constant TERMINAL_SNAPSHOT_STATUSES (line 24) | const TERMINAL_SNAPSHOT_STATUSES = new Set([ constant COLLAPSED_CARD_LIMIT (line 31) | const COLLAPSED_CARD_LIMIT = 5; constant COLLAPSED_FACET_LIMIT (line 32) | const COLLAPSED_FACET_LIMIT = 8; function humanizeCategory (line 34) | function humanizeCategory(category: AnalysisCategory): string { function formatCategoryLabel (line 42) | function formatCategoryLabel(t: TFunction, category: AnalysisCategory): ... function formatPhaseLabel (line 48) | function formatPhaseLabel(t: TFunction, phase: SpaceAnalysisState["phase... function getFacetStats (line 52) | function getFacetStats( function getTagStatsFromState (line 89) | function getTagStatsFromState( function getDisplayedBatchProgress (line 95) | function getDisplayedBatchProgress( function formatBatchSummary (line 145) | function formatBatchSummary( function AnalysisPanel (line 172) | function AnalysisPanel({ function AnalysisPanelBody (line 241) | function AnalysisPanelBody({ function MetricCard (line 534) | function MetricCard({ label, value }: { label: string; value: string }) { function FacetSection (line 545) | function FacetSection({ function InlineCollapsibleSection (line 638) | function InlineCollapsibleSection({ FILE: dashboard/app/src/components/space/deep-analysis-overlay.tsx function DeepAnalysisOverlay (line 8) | function DeepAnalysisOverlay({ active }: { active: boolean }) { FILE: dashboard/app/src/components/space/deep-analysis-tab.tsx constant TERMINAL_REPORT_STATUSES (line 44) | const TERMINAL_REPORT_STATUSES = new Set(["COMPLETED", "FAILED"]); constant ACTIVE_DUPLICATE_CLEANUP_STATUSES (line 45) | const ACTIVE_DUPLICATE_CLEANUP_STATUSES = new Set(["QUEUED", "RUNNING"]); function formatDateTime (line 47) | function formatDateTime(value: string, locale: string): string { function isRecord (line 56) | function isRecord(value: unknown): value is Record { function isFiniteNumber (line 60) | function isFiniteNumber(value: unknown): value is number { function toStringOrNull (line 64) | function toStringOrNull(value: unknown): string | null { function toStringArray (line 68) | function toStringArray(value: unknown): string[] { function normalizeEntityGroups (line 74) | function normalizeEntityGroups(value: unknown): DeepAnalysisEntityGroup[] { function normalizeThemeHighlights (line 98) | function normalizeThemeHighlights(value: unknown): DeepAnalysisThemeItem... function getOverviewTimeSpan (line 123) | function getOverviewTimeSpan(report: DeepAnalysisReportDetail): { function getDuplicateRatio (line 137) | function getDuplicateRatio(report: DeepAnalysisReportDetail): number { function getNoisyMemoryCount (line 152) | function getNoisyMemoryCount(report: DeepAnalysisReportDetail): number { function countDuplicateMemories (line 163) | function countDuplicateMemories( function getDuplicateCleanupStatus (line 182) | function getDuplicateCleanupStatus( function isDuplicateCleanupPending (line 188) | function isDuplicateCleanupPending( function getDuplicateCleanupFeedback (line 194) | function getDuplicateCleanupFeedback( function triggerBlobDownload (line 236) | function triggerBlobDownload(blob: Blob, filename: string) { function ReportSection (line 245) | function ReportSection({ constant WORD_CLOUD_COLORS (line 267) | const WORD_CLOUD_COLORS = [ function seededRandom (line 285) | function seededRandom(seed: number): () => number { function EntityWordCloud (line 293) | function EntityWordCloud({ function RelationshipList (line 373) | function RelationshipList({ constant PERSONA_SECTION_COLORS (line 418) | const PERSONA_SECTION_COLORS: Record = { function PersonaList (line 428) | function PersonaList({ function EvidenceList (line 458) | function EvidenceList({ function DiscoveryCardList (line 496) | function DiscoveryCardList({ function ReportDetail (line 522) | function ReportDetail({ function DeepAnalysisTab (line 806) | function DeepAnalysisTab({ FILE: dashboard/app/src/components/space/delete-dialog.tsx function DeleteDialog (line 14) | function DeleteDialog({ FILE: dashboard/app/src/components/space/edit-dialog.tsx function EditMemoryDialog (line 16) | function EditMemoryDialog({ FILE: dashboard/app/src/components/space/empty-state.tsx function EmptyState (line 5) | function EmptyState({ FILE: dashboard/app/src/components/space/export-dialog.tsx function ExportDialog (line 14) | function ExportDialog({ FILE: dashboard/app/src/components/space/import-dialog.tsx constant MAX_FILE_SIZE (line 13) | const MAX_FILE_SIZE = 50 * 1024 * 1024; function ImportDialog (line 15) | function ImportDialog({ FILE: dashboard/app/src/components/space/import-status.tsx constant STATUS_CONFIG (line 19) | const STATUS_CONFIG: Record< function ImportStatusDialog (line 29) | function ImportStatusDialog({ function ImportTaskRow (line 79) | function ImportTaskRow({ FILE: dashboard/app/src/components/space/memory-card.test.tsx function createMemory (line 8) | function createMemory(sessionID = ""): Memory { FILE: dashboard/app/src/components/space/memory-composition-chart.tsx type RingSegment (line 12) | interface RingSegment extends PulseCompositionSegment { function humanizeLabelToken (line 19) | function humanizeLabelToken(value: string): string { function buildCompositionLabels (line 27) | function buildCompositionLabels( function polarToCartesian (line 56) | function polarToCartesian( function describeArc (line 69) | function describeArc( function buildRingSegments (line 94) | function buildRingSegments( function MemoryCompositionChart (line 141) | function MemoryCompositionChart({ FILE: dashboard/app/src/components/space/memory-farm-preparation-dialog.tsx function MemoryFarmPreparationDialog (line 15) | function MemoryFarmPreparationDialog({ FILE: dashboard/app/src/components/space/memory-farm-promo-card.tsx function MemoryFarmPromoCard (line 5) | function MemoryFarmPromoCard({ FILE: dashboard/app/src/components/space/memory-insight-layout.test.ts function rectsOverlap (line 11) | function rectsOverlap( FILE: dashboard/app/src/components/space/memory-insight-layout.ts type InsightPoint (line 1) | type InsightPoint = { type InsightCircleItem (line 6) | type InsightCircleItem = { type InsightRectItem (line 13) | type InsightRectItem = { type PackedRootBubbles (line 19) | type PackedRootBubbles = { type PackedLaneColumn (line 24) | type PackedLaneColumn = { type PackedLaneAnchors (line 29) | type PackedLaneAnchors = { type CanvasRect (line 35) | type CanvasRect = { type CanvasBounds (line 42) | type CanvasBounds = { type PlacedCircle (line 47) | type PlacedCircle = InsightCircleItem & InsightPoint & { type PlacedRect (line 51) | type PlacedRect = InsightRectItem & InsightPoint; constant ROOT_PADDING (line 53) | const ROOT_PADDING = 24; constant ROOT_GUTTER (line 54) | const ROOT_GUTTER = 18; constant ROOT_SEARCH_STEP (line 55) | const ROOT_SEARCH_STEP = 14; constant ROOT_MIN_HEIGHT (line 56) | const ROOT_MIN_HEIGHT = 240; constant COLUMN_PADDING (line 58) | const COLUMN_PADDING = 12; constant COLUMN_GAP (line 59) | const COLUMN_GAP = 12; constant COLUMN_SEARCH_STEP (line 60) | const COLUMN_SEARCH_STEP = 10; constant COLUMN_MIN_HEIGHT (line 61) | const COLUMN_MIN_HEIGHT = 96; constant LANE_MIN_HEIGHT (line 62) | const LANE_MIN_HEIGHT = 180; constant CANVAS_PADDING (line 63) | const CANVAS_PADDING = 40; function clamp (line 65) | function clamp(value: number, min: number, max: number): number { function hashKey (line 69) | function hashKey(value: string): number { function circleIntersects (line 78) | function circleIntersects( function rectIntersects (line 91) | function rectIntersects( function generateSearchOffsets (line 104) | function generateSearchOffsets(step: number, maxDistance: number): Insig... constant ROOT_OFFSETS (line 122) | const ROOT_OFFSETS = generateSearchOffsets(ROOT_SEARCH_STEP, 960); constant COLUMN_OFFSETS (line 123) | const COLUMN_OFFSETS = generateSearchOffsets(COLUMN_SEARCH_STEP, 720); function buildInterleavedOrder (line 125) | function buildInterleavedOrder(size: number): number[] { function buildRootScatterPlan (line 148) | function buildRootScatterPlan({ function resolveCirclePosition (line 266) | function resolveCirclePosition({ function resolveRectPosition (line 327) | function resolveRectPosition({ function packRootBubbles (line 380) | function packRootBubbles({ function resolveRootBubbleDrop (line 445) | function resolveRootBubbleDrop({ function layoutLaneColumn (line 483) | function layoutLaneColumn({ function resolveLaneNodeDrop (line 550) | function resolveLaneNodeDrop({ function layoutLaneAnchors (line 581) | function layoutLaneAnchors({ function computeCanvasBounds (line 615) | function computeCanvasBounds({ FILE: dashboard/app/src/components/space/memory-insight-overview.test.tsx function createMemory (line 108) | function createMemory(id: string, content: string, tags: string[]): Memo... function renderInsight (line 126) | function renderInsight({ function createDenseRootRelationFixture (line 153) | function createDenseRootRelationFixture(): { FILE: dashboard/app/src/components/space/memory-insight-overview.tsx type InsightRenderableKind (line 35) | type InsightRenderableKind = MemoryInsightNodeKind | "more"; type LanePath (line 37) | type LanePath = { type LaneRenderableItem (line 42) | type LaneRenderableItem = { type DragState (line 61) | type DragState = { type PanState (line 76) | type PanState = { type PositionedNode (line 85) | type PositionedNode = LaneRenderableItem & { type InsightPerformanceMode (line 90) | type InsightPerformanceMode = "full" | "reduced"; type RootBubbleRelationEdge (line 92) | type RootBubbleRelationEdge = { type RootRelationRenderableEdge (line 101) | type RootRelationRenderableEdge = RootBubbleRelationEdge & { type SampledPathPoint (line 117) | type SampledPathPoint = InsightPoint & { type SampledRootRelationEdge (line 121) | type SampledRootRelationEdge = RootRelationRenderableEdge & { constant DRIFT_SEEDS (line 129) | const DRIFT_SEEDS = [ constant BUBBLE_COLOR_PALETTE (line 138) | const BUBBLE_COLOR_PALETTE = [ constant ROOT_BUBBLE_RANGE (line 149) | const ROOT_BUBBLE_RANGE = { constant ROOT_BUBBLE_EXPONENT (line 154) | const ROOT_BUBBLE_EXPONENT = { constant BRANCH_LIMITS (line 159) | const BRANCH_LIMITS = { constant CANVAS_GAP (line 165) | const CANVAS_GAP = { constant LANE_COLUMN_WIDTHS (line 170) | const LANE_COLUMN_WIDTHS = { constant LANE_GAP (line 177) | const LANE_GAP = { constant ROOT_RELATION_ANIMATION_BUDGET (line 182) | const ROOT_RELATION_ANIMATION_BUDGET = { constant ROOT_RELATION_MEDIUM_EDGE_THRESHOLD (line 187) | const ROOT_RELATION_MEDIUM_EDGE_THRESHOLD = 32; constant ROOT_RELATION_DENSE_EDGE_THRESHOLD (line 188) | const ROOT_RELATION_DENSE_EDGE_THRESHOLD = 60; constant ROOT_RELATION_BASE_DPR_CAP (line 189) | const ROOT_RELATION_BASE_DPR_CAP = 1.5; constant ROOT_RELATION_DENSE_DPR_CAP (line 190) | const ROOT_RELATION_DENSE_DPR_CAP = 1.25; constant ROOT_RELATION_HIGHLIGHT_LENGTH_RATIO (line 191) | const ROOT_RELATION_HIGHLIGHT_LENGTH_RATIO = 0.14; constant ROOT_RELATION_HIGHLIGHT_LENGTH_MIN (line 192) | const ROOT_RELATION_HIGHLIGHT_LENGTH_MIN = 24; constant ROOT_RELATION_HIGHLIGHT_LENGTH_MAX (line 193) | const ROOT_RELATION_HIGHLIGHT_LENGTH_MAX = 72; constant ROOT_RELATION_CYCLE_DURATION_MS (line 194) | const ROOT_RELATION_CYCLE_DURATION_MS = { constant REDUCED_MOTION_MEDIA_QUERY (line 198) | const REDUCED_MOTION_MEDIA_QUERY = "(prefers-reduced-motion: reduce)"; function previewMemoryContent (line 200) | function previewMemoryContent(memory: Memory): string { function normalizeInlineText (line 207) | function normalizeInlineText(value: string): string { function hashString (line 211) | function hashString(value: string): number { function seededUnitInterval (line 220) | function seededUnitInterval(value: string): number { function seededRange (line 224) | function seededRange(value: string, min: number, max: number): number { function roundSeed (line 228) | function roundSeed(value: number, digits = 2): number { function bubbleDiameter (line 232) | function bubbleDiameter(count: number, maxCount: number, compact: boolea... function nodeDimensions (line 241) | function nodeDimensions( function createBubbleMotionStyle (line 283) | function createBubbleMotionStyle(id: string): CSSProperties { function bubbleToneColor (line 307) | function bubbleToneColor(category: string): string { function mixHexColors (line 313) | function mixHexColors(left: string, right: string, ratio = 0.5): string { function bubbleSizeTier (line 329) | function bubbleSizeTier(diameter?: number): "small" | "medium" | "large"... function clamp (line 345) | function clamp(value: number, min: number, max: number): number { function hexToRgba (line 349) | function hexToRgba(hex: string, alpha: number): string { function getRootRelationAnimationBudget (line 360) | function getRootRelationAnimationBudget(edgeCount: number, prefersReduce... function getRootRelationEffectiveDpr (line 376) | function getRootRelationEffectiveDpr( function getRootRelationHighlightLength (line 386) | function getRootRelationHighlightLength(pathLength: number): number { function quadraticBezierPoint (line 394) | function quadraticBezierPoint( function sampleBezierPath (line 410) | function sampleBezierPath( function pointAtDistance (line 445) | function pointAtDistance( function collectPathSegmentPoints (line 483) | function collectPathSegmentPoints( function strokePolyline (line 509) | function strokePolyline( function configureCanvasContext (line 525) | function configureCanvasContext( function drawBaseEdges (line 553) | function drawBaseEdges( function drawAnimatedEdges (line 592) | function drawAnimatedEdges( function rootSpreadWidth (line 672) | function rootSpreadWidth(viewportWidth: number, compact: boolean, canvas... function getBranchLimit (line 679) | function getBranchLimit(kind: keyof typeof BRANCH_LIMITS, compact: boole... function sortMemoryNodes (line 683) | function sortMemoryNodes(memoryNodes: MemoryInsightMemoryNode[]): Memory... function buildRootBubbleRelationEdges (line 692) | function buildRootBubbleRelationEdges(input: { function omitKeys (line 791) | function omitKeys>(record: T, keys: st... function useElementWidth (line 803) | function useElementWidth(): [React.RefObject = { constant BUBBLE_COLOR_PALETTE (line 91) | const BUBBLE_COLOR_PALETTE = [ constant DRIFT_SEEDS (line 101) | const DRIFT_SEEDS = [ constant DESKTOP_MEDIA_QUERY (line 109) | const DESKTOP_MEDIA_QUERY = "(min-width: 1200px)"; function clamp (line 111) | function clamp(value: number, min: number, max: number): number { function hashString (line 115) | function hashString(value: string): number { function useElementWidth (line 124) | function useElementWidth(): [React.RefObject boolean): boolean { function useIsDesktopViewport (line 47) | function useIsDesktopViewport(): boolean { function useIsLargeViewport (line 51) | function useIsLargeViewport(): boolean { function scrollToMemoryList (line 55) | function scrollToMemoryList(): void { function navigateAndScrollToMemoryList (line 64) | function navigateAndScrollToMemoryList(action: () => void): void { FILE: dashboard/app/src/components/space/tag-strip.tsx type TagSummary (line 4) | interface TagSummary { function TagStrip (line 10) | function TagStrip({ FILE: dashboard/app/src/components/space/time-range.tsx constant PRESETS (line 4) | const PRESETS: TimeRangePreset[] = ["7d", "30d", "90d", "all"]; function TimeRangeSelector (line 6) | function TimeRangeSelector({ FILE: dashboard/app/src/components/space/topic-strip.tsx constant FACET_STYLES (line 4) | const FACET_STYLES: Record = { constant FACET_ACTIVE (line 15) | const FACET_ACTIVE: Record = { function TopicStrip (line 26) | function TopicStrip({ function FacetBadge (line 77) | function FacetBadge({ FILE: dashboard/app/src/components/space/use-memory-farm-entry-state.test.ts function importModules (line 8) | async function importModules() { FILE: dashboard/app/src/components/space/use-memory-farm-entry-state.ts type MemoryFarmEntryStatus (line 6) | type MemoryFarmEntryStatus = "ready" | "preparing" | "unavailable"; function resolveMemoryFarmEntryStatus (line 8) | async function resolveMemoryFarmEntryStatus(input: { function useMemoryFarmEntryState (line 53) | function useMemoryFarmEntryState( FILE: dashboard/app/src/components/space/use-space-data-model.test.tsx function createMemory (line 24) | function createMemory(id: string): Memory { constant SOURCE_MEMORIES (line 42) | const SOURCE_MEMORIES = [createMemory("mem-1"), createMemory("mem-2")]; constant EMPTY_SIGNAL_INDEX (line 43) | const EMPTY_SIGNAL_INDEX: LocalDerivedSignalIndex = { function primeMocks (line 81) | function primeMocks(): void { FILE: dashboard/app/src/components/space/use-space-data-model.ts type SpaceDataModel (line 42) | interface SpaceDataModel { function useSpaceDataModel (line 78) | function useSpaceDataModel(input: { FILE: dashboard/app/src/components/space/use-space-route-state.ts type SpaceSearch (line 26) | type SpaceSearch = ReturnType; type SpaceRouteState (line 28) | interface SpaceRouteState { function useSpaceRouteState (line 72) | function useSpaceRouteState(spaceId: string): SpaceRouteState { FILE: dashboard/app/src/components/theme-toggle.tsx constant OPTIONS (line 12) | const OPTIONS: { value: Theme; icon: typeof Sun; label: string }[] = [ function ThemeToggle (line 18) | function ThemeToggle() { FILE: dashboard/app/src/components/ui/badge.tsx function Badge (line 29) | function Badge({ FILE: dashboard/app/src/components/ui/button-group.tsx function ButtonGroup (line 4) | function ButtonGroup({ function ButtonGroupSeparator (line 26) | function ButtonGroupSeparator({ FILE: dashboard/app/src/components/ui/button.tsx function Button (line 41) | function Button({ FILE: dashboard/app/src/components/ui/dialog.tsx function Dialog (line 8) | function Dialog({ function DialogTrigger (line 14) | function DialogTrigger({ function DialogPortal (line 20) | function DialogPortal({ function DialogClose (line 26) | function DialogClose({ function DialogOverlay (line 32) | function DialogOverlay({ function DialogContent (line 48) | function DialogContent({ function DialogHeader (line 84) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 94) | function DialogFooter({ function DialogTitle (line 121) | function DialogTitle({ function DialogDescription (line 134) | function DialogDescription({ FILE: dashboard/app/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 7) | function DropdownMenu({ function DropdownMenuPortal (line 13) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 21) | function DropdownMenuTrigger({ function DropdownMenuContent (line 32) | function DropdownMenuContent({ function DropdownMenuGroup (line 52) | function DropdownMenuGroup({ function DropdownMenuItem (line 60) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 83) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 109) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 120) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 144) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 164) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 177) | function DropdownMenuShortcut({ function DropdownMenuSub (line 193) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 199) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 223) | function DropdownMenuSubContent({ FILE: dashboard/app/src/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: dashboard/app/src/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: dashboard/app/src/components/ui/select.tsx function Select (line 7) | function Select({ function SelectGroup (line 13) | function SelectGroup({ function SelectValue (line 19) | function SelectValue({ function SelectTrigger (line 25) | function SelectTrigger({ function SelectContent (line 51) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 128) | function SelectSeparator({ function SelectScrollUpButton (line 141) | function SelectScrollUpButton({ function SelectScrollDownButton (line 159) | function SelectScrollDownButton({ FILE: dashboard/app/src/components/ui/switch.tsx type SwitchProps (line 3) | interface SwitchProps { function Switch (line 10) | function Switch({ checked, className, disabled = false, onCheckedChange ... FILE: dashboard/app/src/components/ui/tabs.tsx function Tabs (line 9) | function Tabs({ function TabsList (line 43) | function TabsList({ function TabsTrigger (line 59) | function TabsTrigger({ function TabsContent (line 78) | function TabsContent({ FILE: dashboard/app/src/i18n/index.ts constant STORAGE_KEY (line 6) | const STORAGE_KEY = "mem9-locale"; function detectLocale (line 8) | function detectLocale(): string { FILE: dashboard/app/src/lib/connect-bootstrap.ts type ConnectBootstrapState (line 1) | interface ConnectBootstrapState { type ConnectBootstrapParseResult (line 7) | interface ConnectBootstrapParseResult { type ConnectBootstrapInitOptions (line 13) | interface ConnectBootstrapInitOptions { constant EMPTY_CONNECT_BOOTSTRAP_STATE (line 18) | const EMPTY_CONNECT_BOOTSTRAP_STATE: ConnectBootstrapState = { function normalizeBootstrapParam (line 27) | function normalizeBootstrapParam(value: string | null): string | null { function buildRelativeURL (line 36) | function buildRelativeURL(url: URL): string { function parseConnectBootstrapFromLocation (line 40) | function parseConnectBootstrapFromLocation( function initializeConnectBootstrapFromLocation (line 62) | function initializeConnectBootstrapFromLocation( function consumeConnectBootstrap (line 89) | function consumeConnectBootstrap(): ConnectBootstrapState { function resetConnectBootstrapForTests (line 95) | function resetConnectBootstrapForTests(): void { FILE: dashboard/app/src/lib/ga4.ts constant GA4_MEASUREMENT_ID (line 1) | const GA4_MEASUREMENT_ID = import.meta.env.VITE_GA4_MEASUREMENT_ID?.trim... constant GA4_SCRIPT_ID (line 2) | const GA4_SCRIPT_ID = "mem9-ga4-script"; type Window (line 8) | interface Window { function gtag (line 14) | function gtag(...args: unknown[]): void { function initGa4 (line 19) | function initGa4(): void { function trackGa4PageView (line 43) | function trackGa4PageView(pathname: string, search = ""): void { FILE: dashboard/app/src/lib/memory-derived-signals.test.ts function createMemory (line 11) | function createMemory(id: string, overrides: Partial = {}): Memo... function createMatch (line 30) | function createMatch(memoryId: string, categories: string[]): MemoryAnal... FILE: dashboard/app/src/lib/memory-derived-signals.ts type DerivedTagOrigin (line 10) | type DerivedTagOrigin = "raw" | "derived" | "mixed"; type DerivedTagSource (line 11) | type DerivedTagSource = "structured" | "named_term" | "segmented"; type DerivedSignalMemory (line 12) | type DerivedSignalMemory = Pick; type MemoryDerivedTagCandidate (line 14) | interface MemoryDerivedTagCandidate { type MemoryDerivedAnalysis (line 20) | interface MemoryDerivedAnalysis { type LocalDerivedTagStat (line 26) | interface LocalDerivedTagStat { type LocalDerivedSignalIndex (line 33) | interface LocalDerivedSignalIndex { type BuildLocalDerivedSignalIndexInput (line 40) | interface BuildLocalDerivedSignalIndexInput { type CandidateAggregate (line 46) | interface CandidateAggregate { type TagAggregate (line 53) | interface TagAggregate { constant MAX_DERIVED_TAGS_PER_MEMORY (line 61) | const MAX_DERIVED_TAGS_PER_MEMORY = 2; constant SOURCE_PRIORITY (line 62) | const SOURCE_PRIORITY: Record = { constant FILE_EXTENSION_TOKENS (line 67) | const FILE_EXTENSION_TOKENS = new Set([ constant DERIVED_TAG_STOPWORDS (line 88) | const DERIVED_TAG_STOPWORDS = new Set([ function normalizeDerivedTagValue (line 236) | function normalizeDerivedTagValue(value: string): string { function cleanDisplayValue (line 245) | function cleanDisplayValue(value: string): string { function normalizeCategories (line 252) | function normalizeCategories( function containsCJK (line 259) | function containsCJK(value: string): boolean { function isNumericLike (line 263) | function isNumericLike(value: string): boolean { function isDateOrTimeLike (line 268) | function isDateOrTimeLike(value: string): boolean { function looksLikeFileExtension (line 273) | function looksLikeFileExtension(value: string): boolean { function isPersonLikeValue (line 277) | function isPersonLikeValue(value: string, personLikeLabels: Set)... function isMeaningfulSegment (line 286) | function isMeaningfulSegment(value: string): boolean { type SegmenterLike (line 307) | type SegmenterLike = { function getSegmenter (line 314) | function getSegmenter(): SegmenterLike | null { function extractSegmentCandidates (line 329) | function extractSegmentCandidates(content: string): string[] { function extractStructuredCandidates (line 347) | function extractStructuredCandidates(content: string): string[] { function addCandidate (line 393) | function addCandidate( function collectMemoryCandidates (line 419) | function collectMemoryCandidates(memory: Pick): Memor... function createMemoryDerivedAnalysis (line 445) | function createMemoryDerivedAnalysis(memory: DerivedSignalMemory): Memor... function incrementCount (line 453) | function incrementCount(map: Map, key: string): void { function getTopDisplayLabel (line 457) | function getTopDisplayLabel(displayCounts: Map, fallback... function getMaxCategoryCount (line 465) | function getMaxCategoryCount(categoryCounts: Map): number { function buildTagStats (line 469) | function buildTagStats( function mergeRawAndDerivedTags (line 542) | function mergeRawAndDerivedTags(rawTags: string[], derivedTags: string[]... function buildLocalDerivedSignalIndex (line 559) | function buildLocalDerivedSignalIndex( function getCombinedTagsForMemory (line 657) | function getCombinedTagsForMemory( function getDerivedTagsForMemory (line 665) | function getDerivedTagsForMemory( function getDerivedTagOrigin (line 672) | function getDerivedTagOrigin( FILE: dashboard/app/src/lib/memory-filters.test.ts constant FIXED_NOW (line 10) | const FIXED_NOW = new Date("2026-03-21T12:00:00Z"); function createMemory (line 12) | function createMemory(overrides: Partial = {}): Memory { FILE: dashboard/app/src/lib/memory-filters.ts type MemoryTagResolver (line 11) | type MemoryTagResolver = (memory: Memory) => string[]; function parseTimestamp (line 13) | function parseTimestamp(value: string): number | null { function sortMemoriesByCreatedAtDesc (line 18) | function sortMemoriesByCreatedAtDesc(memories: Memory[]): Memory[] { function memoryMatchesRange (line 26) | function memoryMatchesRange( function memoryMatchesTimeline (line 38) | function memoryMatchesTimeline( function resolveMemoryTags (line 54) | function resolveMemoryTags( function memoryMatchesQuery (line 61) | function memoryMatchesQuery( function memoryMatchesTag (line 78) | function memoryMatchesTag( function memoryMatchesType (line 92) | function memoryMatchesType( function memoryMatchesFacet (line 100) | function memoryMatchesFacet( function filterMemoriesForView (line 108) | function filterMemoriesForView( FILE: dashboard/app/src/lib/memory-insight-background.test.ts function createMemory (line 8) | function createMemory(): Memory { FILE: dashboard/app/src/lib/memory-insight-background.ts type InsightWorkerMemory (line 21) | interface InsightWorkerMemory { type WorkerRequest (line 29) | type WorkerRequest = type WorkerResult (line 61) | type WorkerResult = type WorkerResponse (line 66) | type WorkerResponse = constant EMPTY_LOCAL_DERIVED_SIGNAL_INDEX (line 78) | const EMPTY_LOCAL_DERIVED_SIGNAL_INDEX: LocalDerivedSignalIndex = { constant EMPTY_MEMORY_INSIGHT_GRAPH (line 85) | const EMPTY_MEMORY_INSIGHT_GRAPH: MemoryInsightGraph = { constant EMPTY_MEMORY_INSIGHT_RELATION_GRAPH (line 94) | const EMPTY_MEMORY_INSIGHT_RELATION_GRAPH: MemoryInsightRelationGraph = { constant DEFAULT_DERIVED_SIGNALS_MINIMUM_MEMORY_COUNT (line 107) | const DEFAULT_DERIVED_SIGNALS_MINIMUM_MEMORY_COUNT = 80; function shouldUseBackgroundWorker (line 119) | function shouldUseBackgroundWorker(): boolean { function projectInsightWorkerMemory (line 125) | function projectInsightWorkerMemory(memory: Memory): InsightWorkerMemory { function shouldUseDerivedSignalsWorker (line 135) | function shouldUseDerivedSignalsWorker(input: { function getWorker (line 151) | function getWorker(): Worker { function runWorkerTask (line 187) | function runWorkerTask( function useBackgroundComputation (line 203) | function useBackgroundComputation({ function useBackgroundDerivedSignals (line 274) | function useBackgroundDerivedSignals({ function useBackgroundMemoryInsightGraph (line 315) | function useBackgroundMemoryInsightGraph({ function useBackgroundMemoryInsightRelationGraph (line 348) | function useBackgroundMemoryInsightRelationGraph({ FILE: dashboard/app/src/lib/memory-insight-background.worker.ts type InsightWorkerMemory (line 24) | interface InsightWorkerMemory { type WorkerRequest (line 32) | type WorkerRequest = type WorkerResult (line 64) | type WorkerResult = type WorkerResponse (line 69) | type WorkerResponse = constant MAX_MEMORY_ANALYSIS_CACHE (line 81) | const MAX_MEMORY_ANALYSIS_CACHE = 2048; constant MAX_RESULT_CACHE (line 82) | const MAX_RESULT_CACHE = 128; function stableHash (line 89) | function stableHash(value: string): string { function setBoundedCache (line 100) | function setBoundedCache(cache: Map, key: string, value: T... function createMemoryAnalysisKey (line 116) | function createMemoryAnalysisKey( function createMatchesKey (line 132) | function createMatchesKey(matches: MemoryAnalysisMatch[]): string { function createCardsKey (line 143) | function createCardsKey(cards: AnalysisCategoryCard[]): string { function createMemorySetKey (line 152) | function createMemorySetKey( function buildSignalKey (line 166) | function buildSignalKey(memories: InsightWorkerMemory[], matches: Memory... function buildInsightKey (line 170) | function buildInsightKey( function buildRelationKey (line 178) | function buildRelationKey( function getMemoryAnalyses (line 200) | function getMemoryAnalyses(memories: InsightWorkerMemory[]): MemoryDeriv... function getOrBuildDerivedSignals (line 217) | function getOrBuildDerivedSignals( function getOrBuildInsightGraph (line 236) | function getOrBuildInsightGraph( function getOrBuildRelationGraph (line 258) | function getOrBuildRelationGraph( FILE: dashboard/app/src/lib/memory-insight-entities.ts type MemoryInsightEntityKind (line 3) | type MemoryInsightEntityKind = type MemoryInsightEntityHit (line 9) | interface MemoryInsightEntityHit { constant ENTITY_KIND_ORDER (line 16) | const ENTITY_KIND_ORDER: Record = { function normalizeLabel (line 23) | function normalizeLabel(value: string): string { function addEntityHit (line 27) | function addEntityHit( function extractMemoryInsightEntities (line 54) | function extractMemoryInsightEntities( FILE: dashboard/app/src/lib/memory-insight-relations.test.ts function createMemory (line 6) | function createMemory( function createCard (line 29) | function createCard(category: string, count: number): AnalysisCategoryCa... function createMatch (line 37) | function createMatch(memoryId: string, categories: string[]): MemoryAnal... FILE: dashboard/app/src/lib/memory-insight-relations.ts type MemoryInsightRelationType (line 13) | type MemoryInsightRelationType = type MemoryInsightRelationEntity (line 21) | interface MemoryInsightRelationEntity { type MemoryInsightRelationEdge (line 39) | interface MemoryInsightRelationEdge { type MemoryInsightRelationCluster (line 57) | interface MemoryInsightRelationCluster { type MemoryInsightRelationGraph (line 64) | interface MemoryInsightRelationGraph { type BuildInput (line 77) | interface BuildInput { type EntityAggregate (line 88) | interface EntityAggregate { type EdgeAggregate (line 101) | interface EdgeAggregate { constant SIGNIFICANT_ENTITY_MIN_COUNT (line 113) | const SIGNIFICANT_ENTITY_MIN_COUNT = 2; constant TOP_ENTITY_LIMIT (line 114) | const TOP_ENTITY_LIMIT = 30; constant TOP_EDGE_LIMIT (line 115) | const TOP_EDGE_LIMIT = 80; constant RELATION_PRIORITY (line 116) | const RELATION_PRIORITY: MemoryInsightRelationType[] = [ constant DEPENDS_ON_PATTERN (line 124) | const DEPENDS_ON_PATTERN = /\bdepends on\b|\brely on\b|依赖/iu; constant USED_WITH_PATTERN (line 125) | const USED_WITH_PATTERN = /\bwith\b|\busing\b|\bvia\b|配合|结合/iu; constant DEPLOYED_TO_PATTERN (line 126) | const DEPLOYED_TO_PATTERN = /\bdeploy(?:ed)? to\b|部署到|发布到/iu; constant SCHEDULED_WITH_PATTERN (line 127) | const SCHEDULED_WITH_PATTERN = /\bevery\b|\bdaily\b|\bweekly\b|\bcron\b|... constant POINTS_TO_PATTERN (line 128) | const POINTS_TO_PATTERN = /\bto\b|\bat\b|\bpath\b|\bconfig\b|指向/iu; function normalizeLabel (line 130) | function normalizeLabel(value: string): string { function isEligibleEntity (line 134) | function isEligibleEntity(label: string, kind: MemoryInsightEntityKind):... function getEntityID (line 151) | function getEntityID(kind: MemoryInsightEntityKind, normalizedLabel: str... function incrementCount (line 155) | function incrementCount(map: Map, key: string): void { function sortedKeysByCount (line 159) | function sortedKeysByCount(map: Map): string[] { function pickDominantCategory (line 168) | function pickDominantCategory(categoryCounts: Map): stri... function computeRangeBounds (line 176) | function computeRangeBounds(memories: Memory[]): { min: number; midpoint... function computeRecencyScore (line 191) | function computeRecencyScore(timestamp: number, bounds: { min: number; s... function looksLikePathOrLocation (line 197) | function looksLikePathOrLocation(value: string): boolean { function chooseRelationType (line 204) | function chooseRelationType( function pickRelationType (line 243) | function pickRelationType(counts: Map... function sortMemoryIDs (line 252) | function sortMemoryIDs(memoryIDs: Iterable, memoriesById: Map = {}): Memo... function createCard (line 33) | function createCard(category: string, count: number): AnalysisCategoryCa... function createMatch (line 41) | function createMatch( FILE: dashboard/app/src/lib/memory-insight.ts type MemoryInsightTab (line 14) | type MemoryInsightTab = "pulse" | "insight" | "analysis"; type MemoryInsightViewMode (line 15) | type MemoryInsightViewMode = "browse" | "relations"; type MemoryInsightNodeKind (line 16) | type MemoryInsightNodeKind = "card" | "tag" | "entity" | "memory"; constant MEMORY_INSIGHT_UNTAGGED_TAG (line 20) | const MEMORY_INSIGHT_UNTAGGED_TAG = "__untagged__"; type MemoryInsightSelection (line 22) | type MemoryInsightSelection = type MemoryInsightEntityFilter (line 44) | interface MemoryInsightEntityFilter { type MemoryInsightCardNode (line 51) | interface MemoryInsightCardNode { type MemoryInsightTagNode (line 64) | interface MemoryInsightTagNode { type MemoryInsightEntityNode (line 79) | interface MemoryInsightEntityNode { type MemoryInsightMemoryNode (line 94) | interface MemoryInsightMemoryNode { type MemoryInsightNode (line 114) | type MemoryInsightNode = type MemoryInsightEdge (line 120) | interface MemoryInsightEdge { type MemoryInsightGraph (line 128) | interface MemoryInsightGraph { type BuildMemoryInsightGraphInput (line 137) | interface BuildMemoryInsightGraphInput { type TagBucket (line 145) | interface TagBucket { type EntityBucket (line 152) | interface EntityBucket { constant ENTITY_KIND_ORDER (line 159) | const ENTITY_KIND_ORDER: Record = { constant CATEGORY_PREFIXES (line 166) | const CATEGORY_PREFIXES = [ constant CATEGORY_PREFIX_PATTERN (line 172) | const CATEGORY_PREFIX_PATTERN = /^analysis\.category\./i; function createMatchLookup (line 174) | function createMatchLookup( function slugify (line 185) | function slugify(value: string): string { function capitalizeToken (line 195) | function capitalizeToken(value: string): string { function stripInsightCategoryPrefix (line 203) | function stripInsightCategoryPrefix(value: string): string { function humanizeInsightCategoryLabel (line 215) | function humanizeInsightCategoryLabel(value: string): string { function normalizeLabel (line 229) | function normalizeLabel(value: string): string { function stableInsightIdSuffix (line 233) | function stableInsightIdSuffix(value: string): string { function buildStableInsightSegment (line 245) | function buildStableInsightSegment(value: string): string { function buildInsightTagSegment (line 250) | function buildInsightTagSegment(tagValue: string): string { function normalizeInsightCategoryKey (line 256) | function normalizeInsightCategoryKey(value: string): string { function humanizeInsightLabel (line 260) | function humanizeInsightLabel(value: string): string { function formatInsightCategoryLabel (line 264) | function formatInsightCategoryLabel( function truncatePreview (line 284) | function truncatePreview(value: string, limit: number): string { function buildSize (line 293) | function buildSize(base: number, count: number, scale: number): number { function memoryMatchesInsightEntity (line 297) | function memoryMatchesInsightEntity( function buildTagBuckets (line 316) | function buildTagBuckets( function buildEntityBuckets (line 358) | function buildEntityBuckets(memories: Memory[]): EntityBucket[] { function getCardMemories (line 394) | function getCardMemories( function createCardNode (line 404) | function createCardNode( function createTagNode (line 425) | function createTagNode( function buildInsightTagNodeId (line 450) | function buildInsightTagNodeId(category: string, tagValue: string): stri... function buildInsightEntityNodeId (line 454) | function buildInsightEntityNodeId( function createEntityNode (line 464) | function createEntityNode( function buildInsightMemoryNodeId (line 489) | function buildInsightMemoryNodeId( function createMemoryNode (line 500) | function createMemoryNode( function buildMemoryInsightGraph (line 541) | function buildMemoryInsightGraph( FILE: dashboard/app/src/lib/memory-pulse.test.ts constant FIXED_NOW (line 6) | const FIXED_NOW = new Date("2026-03-21T12:00:00Z"); function createMemory (line 8) | function createMemory(overrides: Partial = {}): Memory { function createStats (line 27) | function createStats(overrides: Partial = {}): MemoryStats { function createSnapshot (line 35) | function createSnapshot(): AnalysisJobSnapshotResponse { FILE: dashboard/app/src/lib/memory-pulse.ts constant DAY_IN_MS (line 15) | const DAY_IN_MS = 24 * 60 * 60 * 1000; constant TREND_BUCKETS (line 16) | const TREND_BUCKETS: Record = { constant RANGE_DAYS (line 22) | const RANGE_DAYS: Record, number> = { constant FACET_COLOR_TOKENS (line 27) | const FACET_COLOR_TOKENS: Record = { constant CATEGORY_COLOR_TOKENS (line 37) | const CATEGORY_COLOR_TOKENS: Record = { constant DEFAULT_CATEGORY_COLOR_TOKEN (line 44) | const DEFAULT_CATEGORY_COLOR_TOKEN = "--facet-other"; type PulseTrendBucket (line 46) | interface PulseTrendBucket { type PulseCompositionSegment (line 52) | interface PulseCompositionSegment { type PulseSignalItem (line 61) | interface PulseSignalItem { type MemoryPulseData (line 67) | interface MemoryPulseData { function parseTimestamp (line 84) | function parseTimestamp(value: string): number | null { function getWindow (line 89) | function getWindow(range: TimeRangePreset, memories: Memory[]): { function buildPulseTrend (line 116) | function buildPulseTrend( function normalizeSegments (line 156) | function normalizeSegments = { function resolvePageName (line 14) | function resolvePageName(pathname: string): string { function initMixpanelOnLogin (line 18) | function initMixpanelOnLogin(): void { function trackMixpanelEvent (line 31) | function trackMixpanelEvent( function trackMixpanelPageView (line 42) | function trackMixpanelPageView(pathname: string): void { FILE: dashboard/app/src/lib/pixel-farm/baby-cow.ts constant BABY_COW_SPRITE_ORIGIN_X (line 10) | const BABY_COW_SPRITE_ORIGIN_X = 0.5; constant BABY_COW_SPRITE_ORIGIN_Y (line 11) | const BABY_COW_SPRITE_ORIGIN_Y = 0.8; constant BABY_COW_BODY_WIDTH (line 12) | const BABY_COW_BODY_WIDTH = 14; constant BABY_COW_BODY_HEIGHT (line 13) | const BABY_COW_BODY_HEIGHT = 8; constant BABY_COW_BODY_OFFSET_X (line 14) | const BABY_COW_BODY_OFFSET_X = 9; constant BABY_COW_BODY_OFFSET_Y (line 15) | const BABY_COW_BODY_OFFSET_Y = 20; constant BABY_COW_RUN_SPEED (line 16) | const BABY_COW_RUN_SPEED = 40; constant BABY_COW_LOVE_COOLDOWN_MS (line 17) | const BABY_COW_LOVE_COOLDOWN_MS = 2600; constant BABY_COW_AI_THINK_INTERVAL_MS (line 18) | const BABY_COW_AI_THINK_INTERVAL_MS = 180; constant BABY_COW_ROAMING_COLLISION_COOLDOWN_MS (line 19) | const BABY_COW_ROAMING_COLLISION_COOLDOWN_MS = 350; constant BABY_COW_ROAMING_COLLISION_IDLE_MS (line 20) | const BABY_COW_ROAMING_COLLISION_IDLE_MS = 350; constant BABY_COW_ROAMING_COLLISION_RETREAT_MS (line 21) | const BABY_COW_ROAMING_COLLISION_RETREAT_MS = 550; constant BABY_COW_ROAMING_COLLISION_FACE_THRESHOLD (line 22) | const BABY_COW_ROAMING_COLLISION_FACE_THRESHOLD = 2; constant BABY_COW_BLOCKED_IDLE_MS (line 23) | const BABY_COW_BLOCKED_IDLE_MS = 240; constant PIXEL_FARM_BABY_COW_COLORS (line 25) | const PIXEL_FARM_BABY_COW_COLORS = [ constant BABY_COW_STATES (line 33) | const BABY_COW_STATES = { type PixelFarmBabyCowColor (line 45) | type PixelFarmBabyCowColor = (typeof PIXEL_FARM_BABY_COW_COLORS)[number]; type PixelFarmBabyCowState (line 46) | type PixelFarmBabyCowState = keyof typeof BABY_COW_STATES; constant PIXEL_FARM_BABY_COW_STATE_OPTIONS (line 47) | const PIXEL_FARM_BABY_COW_STATE_OPTIONS = Object.keys( type PixelFarmBabyCowConfig (line 51) | interface PixelFarmBabyCowConfig { function animationKey (line 67) | function animationKey(color: PixelFarmBabyCowColor, state: PixelFarmBaby... function babyCowTextureKey (line 71) | function babyCowTextureKey(color: PixelFarmBabyCowColor): string { function randomRange (line 75) | function randomRange(min: number, max: number): number { function registerPixelFarmBabyCowAnimations (line 79) | function registerPixelFarmBabyCowAnimations(scene: Phaser.Scene): void { function measurePixelFarmBabyCowBodyAt (line 103) | function measurePixelFarmBabyCowBodyAt( class PixelFarmBabyCow (line 120) | class PixelFarmBabyCow extends Phaser.Physics.Arcade.Sprite { method constructor (line 134) | constructor(config: PixelFarmBabyCowConfig) { method destroy (line 158) | override destroy(fromScene?: boolean): void { method update (line 163) | update(deltaMs: number): void { method setInteractionHeld (line 207) | setInteractionHeld(held: boolean): void { method triggerLove (line 220) | triggerLove(sourceX: number): void { method applyDebugPose (line 234) | applyDebugPose(state: PixelFarmBabyCowState, flipX: boolean, playing: ... method handleRoamingCollision (line 250) | handleRoamingCollision(otherX: number, _otherY: number): void { method updateRun (line 282) | private updateRun(deltaMs: number): void { method handleBlockedRun (line 324) | private handleBlockedRun(): void { method chooseNextState (line 330) | private chooseNextState(): void { method startRun (line 360) | private startRun(): boolean { method startCollisionRetreat (line 385) | private startCollisionRetreat(otherX: number): boolean { method handleAnimationComplete (line 420) | private handleAnimationComplete(): void { method cueOneShotState (line 445) | private cueOneShotState(state: Extract { function loadInitialSnapshot (line 124) | async function loadInitialSnapshot( function pollDelta (line 141) | async function pollDelta( FILE: dashboard/app/src/lib/pixel-farm/data/types.ts type PixelFarmSeedTag (line 10) | interface PixelFarmSeedTag { type PixelFarmInitialSnapshot (line 16) | interface PixelFarmInitialSnapshot { type PixelFarmDeltaEvent (line 23) | interface PixelFarmDeltaEvent { type PixelFarmDeltaBatch (line 33) | interface PixelFarmDeltaBatch { type PixelFarmPlantState (line 39) | interface PixelFarmPlantState { type PixelFarmMemoryBucketState (line 49) | interface PixelFarmMemoryBucketState { type PixelFarmNpcState (line 62) | interface PixelFarmNpcState { type PixelFarmWorldState (line 68) | interface PixelFarmWorldState { type PixelFarmWorldQueryState (line 81) | interface PixelFarmWorldQueryState { FILE: dashboard/app/src/lib/pixel-farm/data/use-pixel-farm-world.ts function indexMemoriesById (line 14) | function indexMemoriesById(memories: readonly Memory[]): Record; type PixelFarmLayer (line 17) | interface PixelFarmLayer { type PixelFarmObjectPlacement (line 25) | interface PixelFarmObjectPlacement { type PixelFarmObjectGroup (line 35) | interface PixelFarmObjectGroup { type PixelFarmCollisionCell (line 41) | interface PixelFarmCollisionCell { type PixelFarmMaskBounds (line 47) | interface PixelFarmMaskBounds { function validateMask (line 56) | function validateMask(mask: readonly string[], expectedColumns?: number,... function normalizeLayers (line 75) | function normalizeLayers(): PixelFarmLayer[] { function measureMask (line 108) | function measureMask(mask: readonly string[]): PixelFarmMaskBounds { function normalizeObjectGroups (line 141) | function normalizeObjectGroups(): PixelFarmObjectGroup[] { function normalizeObjects (line 172) | function normalizeObjects( function normalizeCollisions (line 216) | function normalizeCollisions(): PixelFarmCollisionCell[] { constant PIXEL_FARM_LAYERS (line 247) | const PIXEL_FARM_LAYERS = normalizeLayers(); type PixelFarmLayerId (line 248) | type PixelFarmLayerId = string; constant PIXEL_FARM_LAYER_IDS (line 249) | const PIXEL_FARM_LAYER_IDS = PIXEL_FARM_LAYERS.map((layer) => layer.id); constant PIXEL_FARM_ROOT_LAYER (line 250) | const PIXEL_FARM_ROOT_LAYER = PIXEL_FARM_LAYERS[0]!; constant PIXEL_FARM_MASK_COLUMNS (line 251) | const PIXEL_FARM_MASK_COLUMNS = PIXEL_FARM_ROOT_LAYER.mask[0]?.length ?? 0; constant PIXEL_FARM_MASK_ROWS (line 252) | const PIXEL_FARM_MASK_ROWS = PIXEL_FARM_ROOT_LAYER.mask.length; constant PIXEL_FARM_MASK_BOUNDS (line 253) | const PIXEL_FARM_MASK_BOUNDS = measureMask(PIXEL_FARM_ROOT_LAYER.mask); constant PIXEL_FARM_OBJECT_GROUPS (line 254) | const PIXEL_FARM_OBJECT_GROUPS = normalizeObjectGroups(); constant PIXEL_FARM_OBJECTS (line 255) | const PIXEL_FARM_OBJECTS = normalizeObjects(PIXEL_FARM_LAYER_IDS, PIXEL_... constant PIXEL_FARM_COLLISIONS (line 256) | const PIXEL_FARM_COLLISIONS = normalizeCollisions(); function maskHasTile (line 258) | function maskHasTile(mask: readonly string[], row: number, column: numbe... function tileOverrideKey (line 262) | function tileOverrideKey(row: number, column: number): string { function tileOverrideAt (line 266) | function tileOverrideAt( FILE: dashboard/app/src/lib/pixel-farm/npc-dialog-content.test.ts function translate (line 11) | function translate(key: string, vars?: Record):... function createLightSnapshot (line 15) | function createLightSnapshot(): AnalysisJobSnapshotResponse { function createDeepReport (line 50) | function createDeepReport(): DeepAnalysisReportDetail { FILE: dashboard/app/src/lib/pixel-farm/npc-dialog-content.ts type PixelFarmNpcDialogSource (line 10) | type PixelFarmNpcDialogSource = type PixelFarmNpcDialogCandidate (line 15) | interface PixelFarmNpcDialogCandidate { type PixelFarmNpcDialogCatalog (line 22) | interface PixelFarmNpcDialogCatalog { type PixelFarmNpcDialogRotationState (line 28) | interface PixelFarmNpcDialogRotationState { type Translate (line 35) | type Translate = (key: string, vars?: Record) =... function buildDeepCandidates (line 37) | function buildDeepCandidates( function buildLightCandidates (line 86) | function buildLightCandidates( function buildTipCandidates (line 134) | function buildTipCandidates(t: Translate): PixelFarmNpcDialogCandidate[] { function buildPixelFarmNpcDialogCatalog (line 146) | function buildPixelFarmNpcDialogCatalog(input: { function resolveActivePool (line 158) | function resolveActivePool( function buildPoolSignature (line 168) | function buildPoolSignature(pool: readonly PixelFarmNpcDialogCandidate[]... function shuffleCandidates (line 172) | function shuffleCandidates( function moveFirstAwayFromPrevious (line 188) | function moveFirstAwayFromPrevious( function rebuildQueue (line 226) | function rebuildQueue(input: { function pickNextPixelFarmNpcDialogEntry (line 241) | function pickNextPixelFarmNpcDialogEntry(input: { FILE: dashboard/app/src/lib/pixel-farm/npc-tips.ts constant PIXEL_FARM_NPC_TIP_IDS (line 4) | const PIXEL_FARM_NPC_TIP_IDS = [ type PixelFarmNpcTipId (line 13) | type PixelFarmNpcTipId = (typeof PIXEL_FARM_NPC_TIP_IDS)[number]; function pickRandomPixelFarmNpcTipId (line 15) | function pickRandomPixelFarmNpcTipId( function getPixelFarmNpcDialogTitle (line 27) | function getPixelFarmNpcDialogTitle(): string { function buildPixelFarmNpcDialogEntry (line 31) | function buildPixelFarmNpcDialogEntry( FILE: dashboard/app/src/lib/pixel-farm/palette.ts constant FARMING_PLANTS_COLUMNS (line 6) | const FARMING_PLANTS_COLUMNS = 5; constant MUSHROOMS_FLOWERS_STONES_COLUMNS (line 7) | const MUSHROOMS_FLOWERS_STONES_COLUMNS = 12; constant PIXEL_FARM_TOP_CROP_TAG_COUNT (line 9) | const PIXEL_FARM_TOP_CROP_TAG_COUNT = 13; type PixelFarmCropStage (line 11) | type PixelFarmCropStage = "seed" | "sprout" | "growing" | "mature"; type PixelFarmBucketAnimalTier (line 12) | type PixelFarmBucketAnimalTier = "chicken" | "baby-cow" | "cow"; type PixelFarmCropFamilyPalette (line 14) | interface PixelFarmCropFamilyPalette { type PixelFarmDecorationPalette (line 19) | interface PixelFarmDecorationPalette { type PixelFarmBucketAnimalPalette (line 24) | interface PixelFarmBucketAnimalPalette { function frameAt (line 30) | function frameAt(columns: number, row: number, column: number): number { function farmingPlant (line 34) | function farmingPlant(row: number, column: number): PixelFarmAssetTileSe... function otherDecoration (line 41) | function otherDecoration(row: number, column: number): PixelFarmAssetTil... function singleTileCropPalette (line 48) | function singleTileCropPalette(row: number, family: string): PixelFarmCr... constant PIXEL_FARM_CROP_BUCKET_PALETTES (line 67) | const PIXEL_FARM_CROP_BUCKET_PALETTES: readonly PixelFarmCropFamilyPalet... constant PIXEL_FARM_SPECIAL_TALL_CROP_CANDIDATE (line 83) | const PIXEL_FARM_SPECIAL_TALL_CROP_CANDIDATE: PixelFarmCropFamilyPalette... constant PIXEL_FARM_OTHER_ZONE_DECORATIONS (line 101) | const PIXEL_FARM_OTHER_ZONE_DECORATIONS = { constant PIXEL_FARM_BUCKET_ANIMAL_PALETTES (line 136) | const PIXEL_FARM_BUCKET_ANIMAL_PALETTES: readonly PixelFarmBucketAnimalP... FILE: dashboard/app/src/lib/pixel-farm/plant-dialog-content.test.ts function createMemory (line 5) | function createMemory(id: string, content: string): Memory { FILE: dashboard/app/src/lib/pixel-farm/plant-dialog-content.ts type Translate (line 5) | type Translate = (key: string, vars?: Record) =... function buildPixelFarmPlantDialogEntries (line 7) | function buildPixelFarmPlantDialogEntries(input: { FILE: dashboard/app/src/lib/pixel-farm/plant-placement.ts type PixelFarmPlantPlacement (line 7) | interface PixelFarmPlantPlacement { function cellKey (line 14) | function cellKey(cell: PixelFarmFieldCell): string { function compareCells (line 18) | function compareCells(left: PixelFarmFieldCell, right: PixelFarmFieldCel... function measureBounds (line 22) | function measureBounds( function cellDistance (line 46) | function cellDistance(left: PixelFarmFieldCell, right: PixelFarmFieldCel... function lerp (line 50) | function lerp(min: number, max: number, ratio: number): number { function buildFieldInteriorDepthIndex (line 54) | function buildFieldInteriorDepthIndex( function isInteriorCell (line 106) | function isInteriorCell( function pickDistributedCells (line 113) | function pickDistributedCells( function takeNearestCells (line 176) | function takeNearestCells( function buildPixelFarmPlantPlacements (line 206) | function buildPixelFarmPlantPlacements(input: { FILE: dashboard/app/src/lib/pixel-farm/runtime-assets.ts constant PIXEL_FARM_BUBBLE_APPEAR_SOUND_KEY (line 32) | const PIXEL_FARM_BUBBLE_APPEAR_SOUND_KEY = "pixel-farm-bubble-appear"; constant PIXEL_FARM_BUBBLE_APPEAR_SOUND_DURATION_MS (line 33) | const PIXEL_FARM_BUBBLE_APPEAR_SOUND_DURATION_MS = 500; constant PIXEL_FARM_BGM_TEXTURE_KEY (line 34) | const PIXEL_FARM_BGM_TEXTURE_KEY = "pixel-farm-bgm"; constant PIXEL_FARM_DIALOG_TEXTURE_KEY (line 35) | const PIXEL_FARM_DIALOG_TEXTURE_KEY = "pixel-farm-dialog-box"; constant PIXEL_FARM_MOUSE_CURSOR_TEXTURE_KEY (line 36) | const PIXEL_FARM_MOUSE_CURSOR_TEXTURE_KEY = "pixel-farm-mouse-cursor"; constant PIXEL_FARM_CHARACTER_TEXTURE_KEY (line 38) | const PIXEL_FARM_CHARACTER_TEXTURE_KEY = "pixel-farm-character-premium"; constant PIXEL_FARM_CHARACTER_FRAME_WIDTH (line 39) | const PIXEL_FARM_CHARACTER_FRAME_WIDTH = 48; constant PIXEL_FARM_CHARACTER_FRAME_HEIGHT (line 40) | const PIXEL_FARM_CHARACTER_FRAME_HEIGHT = 48; constant PIXEL_FARM_COW_FRAME_WIDTH (line 41) | const PIXEL_FARM_COW_FRAME_WIDTH = 32; constant PIXEL_FARM_COW_FRAME_HEIGHT (line 42) | const PIXEL_FARM_COW_FRAME_HEIGHT = 32; constant PIXEL_FARM_BABY_COW_FRAME_WIDTH (line 43) | const PIXEL_FARM_BABY_COW_FRAME_WIDTH = 32; constant PIXEL_FARM_BABY_COW_FRAME_HEIGHT (line 44) | const PIXEL_FARM_BABY_COW_FRAME_HEIGHT = 32; constant PIXEL_FARM_COW_TEXTURE_KEYS (line 46) | const PIXEL_FARM_COW_TEXTURE_KEYS = { constant PIXEL_FARM_BABY_COW_TEXTURE_KEYS (line 54) | const PIXEL_FARM_BABY_COW_TEXTURE_KEYS = { constant PIXEL_FARM_CHICKEN_TEXTURE_KEYS (line 62) | const PIXEL_FARM_CHICKEN_TEXTURE_KEYS = { constant PIXEL_FARM_WATER_TEXTURE_KEYS (line 70) | const PIXEL_FARM_WATER_TEXTURE_KEYS = [ constant PIXEL_FARM_WATER_TEXTURE_URLS (line 77) | const PIXEL_FARM_WATER_TEXTURE_URLS = [ constant PIXEL_FARM_COW_TEXTURE_URLS (line 84) | const PIXEL_FARM_COW_TEXTURE_URLS: Record { FILE: dashboard/app/src/pages/connect.test.tsx function setLoaderData (line 58) | function setLoaderData(next: ConnectRouteLoaderData): void { function currentURL (line 62) | function currentURL(): string { function getByExactText (line 66) | function getByExactText(text: string): HTMLElement { function getInlineCodeTokens (line 70) | function getInlineCodeTokens(): HTMLElement[] { FILE: dashboard/app/src/pages/connect.tsx function getOpenerOrigin (line 20) | function getOpenerOrigin(): string | null { function InlineToken (line 32) | function InlineToken({ children }: { children?: ReactNode }) { function ConnectPage (line 40) | function ConnectPage() { FILE: dashboard/app/src/pages/pixel-farm-editor.tsx type LayerState (line 43) | type LayerState = Omit & { mask: string[] }; type ObjectState (line 44) | type ObjectState = PixelFarmObjectPlacement; type ObjectGroupState (line 45) | type ObjectGroupState = PixelFarmObjectGroup; type CollisionState (line 46) | type CollisionState = PixelFarmCollisionCell; type TerrainTool (line 47) | type TerrainTool = "paint" | "erase" | "fill" | "rectangle"; type ObjectTool (line 48) | type ObjectTool = "place" | "erase"; type CollisionTool (line 49) | type CollisionTool = "paint" | "erase"; type CollisionBrushSize (line 50) | type CollisionBrushSize = 1 | 2; type EditorMode (line 51) | type EditorMode = "terrain" | "objects" | "collision"; type ObjectPaletteSelection (line 53) | interface ObjectPaletteSelection { type ContentState (line 58) | interface ContentState { type HistoryState (line 65) | interface HistoryState { type DragState (line 71) | interface DragState { type EditorState (line 91) | interface EditorState { type HoveredCell (line 104) | interface HoveredCell { type HoveredCollision (line 109) | interface HoveredCollision { type ObjectStampTile (line 114) | interface ObjectStampTile { constant CELL_SIZE_MIN (line 121) | const CELL_SIZE_MIN = 12; constant CELL_SIZE_MAX (line 122) | const CELL_SIZE_MAX = 64; constant CELL_SIZE_STEP (line 123) | const CELL_SIZE_STEP = 2; constant INITIAL_CELL_SIZE (line 124) | const INITIAL_CELL_SIZE = 32; constant PALETTE_CELL_SIZE (line 125) | const PALETTE_CELL_SIZE = 28; constant MAX_HISTORY (line 126) | const MAX_HISTORY = 100; constant DRAFT_STORAGE_KEY (line 127) | const DRAFT_STORAGE_KEY = "pixel-farm-mask-editor-draft-v11"; constant EXPORT_ENDPOINT (line 128) | const EXPORT_ENDPOINT = "/your-memory/__pixel-farm/export-generated-mask... constant OBJECT_LAYER_ID (line 129) | const OBJECT_LAYER_ID = "objects"; constant DEFAULT_SELECTED_TILE (line 130) | const DEFAULT_SELECTED_TILE: PixelFarmAssetTileSelection = { constant COPY (line 134) | const COPY = { function cloneLayers (line 192) | function cloneLayers(): LayerState[] { function cloneObjects (line 204) | function cloneObjects(): ObjectState[] { function cloneObjectGroups (line 208) | function cloneObjectGroups(): ObjectGroupState[] { function cloneCollisions (line 212) | function cloneCollisions(): CollisionState[] { function cloneContent (line 216) | function cloneContent(): ContentState { function sameContent (line 225) | function sameContent(left: ContentState, right: ContentState): boolean { function appendPast (line 249) | function appendPast(past: ContentState[], snapshot: ContentState): Conte... function buildEmptyMask (line 257) | function buildEmptyMask(rows: number, columns: number): string[] { function defaultObjectLayer (line 261) | function defaultObjectLayer(): LayerState { function ensureObjectLayer (line 282) | function ensureObjectLayer(layers: readonly LayerState[]): LayerState[] { function findObjectAtCell (line 288) | function findObjectAtCell( function nextObjectID (line 304) | function nextObjectID(objects: readonly ObjectState[]): string { function nextObjectGroupID (line 316) | function nextObjectGroupID(groups: readonly ObjectGroupState[]): string { function paletteFrameCell (line 328) | function paletteFrameCell(sourceId: PixelFarmAssetSourceId, frame: numbe... function buildObjectStampTiles (line 337) | function buildObjectStampTiles(selection: ObjectPaletteSelection): Objec... function defaultGroupSortMarker (line 364) | function defaultGroupSortMarker( function nextCollisionID (line 386) | function nextCollisionID(collisions: readonly CollisionState[]): string { function collisionPlacementKey (line 398) | function collisionPlacementKey(halfTileRow: number, halfTileColumn: numb... function collisionCellKey (line 402) | function collisionCellKey(segment: Pick unknown; type StubApi (line 17) | interface StubApi { function createStubApi (line 30) | function createStubApi( function flushAsyncWork (line 84) | async function flushAsyncWork(): Promise { function waitFor (line 88) | async function waitFor(predicate: () => boolean, timeoutMs = 2_000): Pro... function uniqueApiUrl (line 99) | function uniqueApiUrl(name: string): string { FILE: openclaw-plugin/index.ts constant DEFAULT_API_URL (line 24) | const DEFAULT_API_URL = "https://api.mem9.ai"; constant TIMEOUT_FIELDS (line 25) | const TIMEOUT_FIELDS = ["defaultTimeoutMs", "searchTimeoutMs"] as const; constant SHARED_PROVISION_DIR (line 26) | const SHARED_PROVISION_DIR = path.join(os.homedir(), ".openclaw", "mem9"... constant SHARED_PROVISION_POLL_INTERVAL_MS (line 27) | const SHARED_PROVISION_POLL_INTERVAL_MS = 250; type SharedProvisionState (line 30) | type SharedProvisionState = function normalizeTimeoutMs (line 49) | function normalizeTimeoutMs( function resolveTimeouts (line 63) | function resolveTimeouts( function jsonResult (line 91) | function jsonResult(data: unknown) { function errorMessage (line 105) | function errorMessage(err: unknown): string { function sleep (line 109) | function sleep(ms: number): Promise { function sharedProvisionKey (line 113) | function sharedProvisionKey( function sharedProvisionStatePath (line 133) | function sharedProvisionStatePath(sharedKey: string): string { function readSharedProvisionState (line 137) | async function readSharedProvisionState(filePath: string): Promise AnyAgentTool | AnyAgentTool[] |... type AnyAgentTool (line 354) | interface AnyAgentTool { function buildTools (line 366) | function buildTools( method register (line 550) | register(api: OpenClawPluginApi) { class LazyServerBackend (line 751) | class LazyServerBackend implements MemoryBackend { method constructor (line 759) | constructor( method resolve (line 771) | private async resolve(): Promise { method store (line 790) | async store(input: CreateMemoryInput) { method search (line 793) | async search(input: SearchInput) { method get (line 796) | async get(id: string) { method update (line 799) | async update(id: string, input: UpdateMemoryInput) { method remove (line 802) | async remove(id: string) { method ingest (line 805) | async ingest(input: IngestInput): Promise { FILE: openclaw-plugin/server-backend.ts type ProvisionMem9sResponse (line 13) | type ProvisionMem9sResponse = { constant DEFAULT_TIMEOUT_MS (line 17) | const DEFAULT_TIMEOUT_MS = 8_000; constant DEFAULT_SEARCH_TIMEOUT_MS (line 18) | const DEFAULT_SEARCH_TIMEOUT_MS = 15_000; type BackendTimeouts (line 20) | interface BackendTimeouts { type ServerBackendOptions (line 25) | interface ServerBackendOptions { type RequestOptions (line 30) | interface RequestOptions { class ServerBackend (line 34) | class ServerBackend implements MemoryBackend { method constructor (line 41) | constructor( method register (line 57) | async register(): Promise { method memoryPath (line 87) | private memoryPath(path: string): string { method store (line 94) | async store(input: CreateMemoryInput): Promise { method search (line 98) | async search(input: SearchInput): Promise { method get (line 127) | async get(id: string): Promise { method update (line 135) | async update(id: string, input: UpdateMemoryInput): Promise { method ingest (line 152) | async ingest(input: IngestInput): Promise { method requestRaw (line 156) | private async requestRaw( method request (line 176) | private async request( FILE: openclaw-plugin/types.ts type PluginConfig (line 1) | interface PluginConfig { type Memory (line 24) | interface Memory { type SearchResult (line 46) | interface SearchResult { type CreateMemoryInput (line 53) | interface CreateMemoryInput { type UpdateMemoryInput (line 60) | interface UpdateMemoryInput { type SearchInput (line 67) | interface SearchInput { type IngestMessage (line 76) | interface IngestMessage { type IngestInput (line 81) | interface IngestInput { type IngestResult (line 88) | interface IngestResult { type StoreResult (line 96) | type StoreResult = Memory | IngestResult; FILE: opencode-plugin/scripts/publish.mjs constant STABLE_INCREMENTS (line 37) | const STABLE_INCREMENTS = new Set(["major", "minor", "patch"]); constant PRERELEASE_INCREMENTS (line 38) | const PRERELEASE_INCREMENTS = new Set([ constant CHANNELS (line 44) | const CHANNELS = new Set(["alpha", "beta", "rc"]); function fail (line 46) | function fail(message) { function printHelp (line 50) | function printHelp() { function parseArgs (line 73) | function parseArgs(argv) { function parseVersion (line 146) | function parseVersion(version) { function formatVersion (line 161) | function formatVersion(version) { function toPreIncrement (line 170) | function toPreIncrement(increment) { function deriveTagFromVersion (line 183) | function deriveTagFromVersion(version) { function normalizePublishBranch (line 188) | function normalizePublishBranch(remoteHeadRef) { function assertGitPublishState (line 198) | function assertGitPublishState({ function applyStableIncrement (line 223) | function applyStableIncrement(current, increment) { function resolveReleasePlan (line 254) | function resolveReleasePlan(currentVersion, increment, channel) { function readPublishToken (line 334) | function readPublishToken() { function writePublishNpmrc (line 355) | function writePublishNpmrc(token) { function runPnpm (line 363) | function runPnpm(args) { function readCommandOutput (line 381) | function readCommandOutput(bin, args, cwd) { function resolveRepoRoot (line 400) | function resolveRepoRoot() { function resolvePublishBranch (line 404) | function resolvePublishBranch(repoRoot) { function ensureGitPublishReady (line 417) | function ensureGitPublishReady(repoRoot, options = {}) { function buildPublishArgs (line 442) | function buildPublishArgs(tag, dryRun) { function main (line 458) | async function main() { FILE: opencode-plugin/src/server/backend.ts type IngestMessage (line 10) | interface IngestMessage { type IngestInput (line 15) | interface IngestInput { type IngestResult (line 22) | interface IngestResult { type MemoryBackend (line 31) | interface MemoryBackend { FILE: opencode-plugin/src/server/config.ts constant EMPTY_CREDENTIALS (line 17) | const EMPTY_CREDENTIALS: Mem9CredentialsFile = { type EffectiveConfig (line 22) | interface EffectiveConfig extends Mem9ConfigFile { type RuntimeIdentity (line 26) | interface RuntimeIdentity { function isRecord (line 32) | function isRecord(value: unknown): value is Record { function normalizeOptionalString (line 36) | function normalizeOptionalString(value: string | undefined): string | un... function normalizeOptionalBoolean (line 45) | function normalizeOptionalBoolean(value: string | undefined): boolean | ... function isErrnoException (line 62) | function isErrnoException(error: unknown): error is NodeJS.ErrnoException { function normalizeConfigFile (line 66) | function normalizeConfigFile(value: unknown): Mem9ConfigFile { function readConfigFile (line 103) | async function readConfigFile(filePath: string): Promise) =>... type DebugLoggerOptions (line 14) | interface DebugLoggerOptions { function isRecord (line 19) | function isRecord(value: unknown): value is Record { function maskSecret (line 23) | function maskSecret(value: string): string { function truncateDebugText (line 31) | function truncateDebugText(value: string): string { function redactEmbeddedSecrets (line 39) | function redactEmbeddedSecrets(value: string): string { function sanitizeDebugValue (line 47) | function sanitizeDebugValue(value: unknown, key: string): unknown { function redactDebugPayload (line 78) | function redactDebugPayload(payload: Record): Record; type ChatMessageOutput (line 19) | type ChatMessageOutput = Parameters[1]; type EventHook (line 20) | type EventHook = NonNullable; type EventInput (line 21) | type EventInput = Parameters[0]; type SessionState (line 23) | interface SessionState { type BuildHooksOptions (line 31) | interface BuildHooksOptions { function runInBackground (line 37) | function runInBackground(task: Promise): void { function extractLatestUserPrompt (line 43) | function extractLatestUserPrompt(parts: ChatMessageOutput["parts"]): str... function pruneSessionState (line 66) | function pruneSessionState(cache: Map, now: number... function resolveAgentID (line 82) | function resolveAgentID(candidate: string | undefined, fallback: string)... function ensureSessionState (line 91) | function ensureSessionState( function buildIngestFingerprint (line 116) | function buildIngestFingerprint(messages: IngestMessage[]): string { function hasAssistantMessage (line 120) | function hasAssistantMessage(messages: IngestMessage[]): boolean { function ingestSessionTranscript (line 124) | async function ingestSessionTranscript( function buildHooks (line 205) | function buildHooks( FILE: opencode-plugin/src/server/index.ts function buildPluginHooksAndTools (line 15) | function buildPluginHooksAndTools( FILE: opencode-plugin/src/server/ingest/select.ts constant RELEVANT_MEMORIES_BLOCK_RE (line 3) | const RELEVANT_MEMORIES_BLOCK_RE = /[\s\S]*?(<\/relev... constant MAX_INGEST_MESSAGES (line 4) | const MAX_INGEST_MESSAGES = 12; function cleanMessageContent (line 6) | function cleanMessageContent(content: string): string { function selectMessagesForIngest (line 10) | function selectMessagesForIngest(messages: IngestMessage[]): IngestMessa... FILE: opencode-plugin/src/server/ingest/submit.ts type SubmitIngestOptions (line 5) | interface SubmitIngestOptions { function submitMessagesForIngest (line 13) | async function submitMessagesForIngest( FILE: opencode-plugin/src/server/recall/format.ts constant MAX_CONTENT_LEN (line 3) | const MAX_CONTENT_LEN = 500; constant MAX_TAGS (line 4) | const MAX_TAGS = 3; constant MAX_TAG_LEN (line 5) | const MAX_TAG_LEN = 24; constant MAX_AGE_LEN (line 6) | const MAX_AGE_LEN = 32; function escapeForPrompt (line 8) | function escapeForPrompt(text: string): string { function truncateForPrompt (line 15) | function truncateForPrompt(text: string, maxLen: number): string { function formatTags (line 23) | function formatTags(tags: Memory["tags"]): string { function formatMemoryLine (line 43) | function formatMemoryLine(memory: Memory, index: number): string { function formatRecallBlock (line 61) | function formatRecallBlock(memories: Memory[]): string { FILE: opencode-plugin/src/server/recall/query.ts constant TOOL_NOISE_TAGS (line 1) | const TOOL_NOISE_TAGS = [ constant MAX_RECALL_QUERY_PARAM_LEN (line 10) | const MAX_RECALL_QUERY_PARAM_LEN = 1600; constant QUERY_ELLIPSIS (line 12) | const QUERY_ELLIPSIS = "\n...\n"; constant QUERY_PARAM_KEY (line 13) | const QUERY_PARAM_KEY = "q"; function stripTaggedBlock (line 15) | function stripTaggedBlock(input: string, tagName: string): string { function clampRecallQuery (line 35) | function clampRecallQuery(input: string): string { function encodedQueryParamLength (line 60) | function encodedQueryParamLength(input: string): number { function buildBalancedCandidate (line 64) | function buildBalancedCandidate(chars: string[], keptChars: number): str... function truncatePrefixToEncodedBudget (line 77) | function truncatePrefixToEncodedBudget(chars: string[]): string { function buildRecallQuery (line 97) | function buildRecallQuery(input: string): string { FILE: opencode-plugin/src/server/server-backend.ts function isRecord (line 16) | function isRecord(value: unknown): value is Record { function normalizeTimeoutMs (line 20) | function normalizeTimeoutMs(value: number | undefined, fallback: number)... type ServerBackendOptions (line 28) | interface ServerBackendOptions { class ServerBackend (line 37) | class ServerBackend implements MemoryBackend { method constructor (line 42) | constructor( method memoryPath (line 59) | private memoryPath(path: string): string { method request (line 63) | private async request( method store (line 94) | async store(input: CreateMemoryInput): Promise { method ingest (line 98) | async ingest(input: IngestInput): Promise { method search (line 102) | async search(input: SearchInput): Promise { method get (line 132) | async get(id: string): Promise { method update (line 143) | async update(id: string, input: UpdateMemoryInput): Promise { method listRecent (line 166) | async listRecent(limit: number): Promise { FILE: opencode-plugin/src/server/session-transcript.ts constant SESSION_TRANSCRIPT_FETCH_LIMIT (line 4) | const SESSION_TRANSCRIPT_FETCH_LIMIT = 24; type TranscriptPartLike (line 6) | interface TranscriptPartLike { type SessionTranscriptLoader (line 13) | type SessionTranscriptLoader = (sessionID: string) => Promise { function isMem9Profile (line 7) | function isMem9Profile(value: unknown): value is Mem9Profile { function normalizeMem9Profile (line 19) | function normalizeMem9Profile(value: Mem9Profile): Mem9Profile { function parseCredentialsFile (line 27) | function parseCredentialsFile(raw: string): Mem9CredentialsFile { function stringifyCredentialsFile (line 53) | function stringifyCredentialsFile(file: Mem9CredentialsFile): string { FILE: opencode-plugin/src/shared/defaults.ts constant DEFAULT_SCOPE_CONFIG (line 3) | const DEFAULT_SCOPE_CONFIG: Required< FILE: opencode-plugin/src/shared/platform-paths.ts type Mem9PathInput (line 4) | interface Mem9PathInput { type Mem9ResolvedPaths (line 11) | interface Mem9ResolvedPaths { type OpenCodeBasePaths (line 18) | interface OpenCodeBasePaths { function normalizeDir (line 23) | function normalizeDir(value: string | undefined): string | undefined { function resolveMem9Home (line 32) | function resolveMem9Home( function resolveOpenCodeBasePaths (line 44) | function resolveOpenCodeBasePaths( function resolveMem9Paths (line 66) | function resolveMem9Paths(input: Mem9PathInput): Mem9ResolvedPaths { FILE: opencode-plugin/src/shared/plugin-meta.ts constant PLUGIN_ID (line 1) | const PLUGIN_ID = "mem9"; FILE: opencode-plugin/src/shared/setup-files.ts type SetupScope (line 13) | type SetupScope = "user" | "project"; type SetupProfileSummary (line 15) | interface SetupProfileSummary { type ScopeConfigState (line 23) | interface ScopeConfigState { type SetupState (line 30) | interface SetupState { type SetupRequest (line 40) | interface SetupRequest { type ScopeConfigRequest (line 48) | interface ScopeConfigRequest { type ProvisionApiKeyOptions (line 57) | interface ProvisionApiKeyOptions { function isRecord (line 63) | function isRecord(value: unknown): value is Record { function normalizeOptionalString (line 67) | function normalizeOptionalString(value: unknown): string | undefined { function normalizeBaseUrl (line 76) | function normalizeBaseUrl(value: unknown): string | undefined { function normalizeTimeoutMs (line 81) | function normalizeTimeoutMs(value: unknown, fallback: number): number { function requireString (line 89) | function requireString(value: string, field: string): string { function isErrnoException (line 97) | function isErrnoException(error: unknown): error is NodeJS.ErrnoException { function resolveScopeConfigFile (line 101) | function resolveScopeConfigFile( function hasApiKey (line 108) | function hasApiKey(profile: unknown): boolean { function summarizeApiKeyPreview (line 116) | function summarizeApiKeyPreview(apiKey: string): string { function normalizeProfileRecord (line 133) | function normalizeProfileRecord( function buildDefaultProfileId (line 146) | function buildDefaultProfileId( function buildSuggestedNewProfileId (line 165) | function buildSuggestedNewProfileId( function sortProfileSummaries (line 182) | function sortProfileSummaries( function buildProfiles (line 198) | function buildProfiles( function normalizeConfigLayer (line 215) | function normalizeConfigLayer( function buildScopeState (line 229) | function buildScopeState( function mergeConfigLayers (line 257) | function mergeConfigLayers( function createScopeConfig (line 282) | function createScopeConfig( function readJsonObject (line 302) | async function readJsonObject(filePath: string): Promise { function writeScopeConfig (line 432) | async function writeScopeConfig( function provisionApiKey (line 458) | async function provisionApiKey( FILE: opencode-plugin/src/shared/types.ts constant DEFAULT_API_URL (line 2) | const DEFAULT_API_URL = "https://api.mem9.ai"; type Mem9ConfigFile (line 4) | interface Mem9ConfigFile { type Mem9Profile (line 12) | interface Mem9Profile { type Mem9CredentialsFile (line 18) | interface Mem9CredentialsFile { type Memory (line 23) | interface Memory { type SearchResult (line 44) | interface SearchResult { type CreateMemoryInput (line 51) | interface CreateMemoryInput { type UpdateMemoryInput (line 58) | interface UpdateMemoryInput { type SearchInput (line 65) | interface SearchInput { type StoreResult (line 74) | type StoreResult = Memory; FILE: opencode-plugin/src/tui/index.ts type SetupAction (line 25) | type SetupAction = type ScopeFlowMode (line 31) | type ScopeFlowMode = "profile-only" | "settings-only"; type ProfileDraft (line 33) | interface ProfileDraft { type ScopeDraft (line 40) | interface ScopeDraft { type SetupActionOption (line 48) | interface SetupActionOption { type SetupProfileOption (line 54) | interface SetupProfileOption { type SetupProfileOptionState (line 61) | interface SetupProfileOptionState { constant DEFAULT_TOAST_DURATION_MS (line 66) | const DEFAULT_TOAST_DURATION_MS = 5000; function scheduleDialogTransition (line 68) | function scheduleDialogTransition(next: () => void): void { function showToast (line 74) | function showToast(api: TuiPluginApi, toast: TuiToast): void { function getProjectDir (line 81) | function getProjectDir(api: TuiPluginApi): string { function getProjectName (line 90) | function getProjectName(api: TuiPluginApi): string { function resolvePaths (line 95) | function resolvePaths(api: TuiPluginApi): Mem9ResolvedPaths { function createProfileDraft (line 104) | function createProfileDraft(state: SetupState): ProfileDraft { function createScopeDraft (line 113) | function createScopeDraft( function showError (line 127) | function showError( function showProfileSavedSuccess (line 140) | function showProfileSavedSuccess(api: TuiPluginApi, profileId: string): ... function showScopeSavedSuccess (line 148) | function showScopeSavedSuccess( function isReusableProfileID (line 161) | function isReusableProfileID(state: SetupState, profileId: string): bool... function buildSetupActionOptions (line 165) | function buildSetupActionOptions( function formatProfileTitle (line 199) | function formatProfileTitle(profile: SetupProfileSummary): string { function buildScopeProfileOptions (line 205) | function buildScopeProfileOptions( function parsePositiveInteger (line 223) | function parsePositiveInteger(value: string, field: string): number | nu... function submitManualProfile (line 237) | async function submitManualProfile( function submitProvisionedProfile (line 257) | async function submitProvisionedProfile( function submitScopeConfigDraft (line 289) | async function submitScopeConfigDraft( function showActionDialog (line 310) | function showActionDialog( function showProfileIdDialog (line 340) | function showProfileIdDialog( function showProfileLabelDialog (line 385) | function showProfileLabelDialog( function showProfileBaseUrlDialog (line 421) | function showProfileBaseUrlDialog( function showProfileApiKeyDialog (line 462) | function showProfileApiKeyDialog( function showScopeDialog (line 503) | function showScopeDialog( function showScopeProfileDialog (line 540) | function showScopeProfileDialog( function showScopeDebugDialog (line 561) | function showScopeDebugDialog( function showDefaultTimeoutDialog (line 591) | function showDefaultTimeoutDialog( function showSearchTimeoutDialog (line 624) | function showSearchTimeoutDialog( function startSetup (line 657) | async function startSetup(api: TuiPluginApi): Promise { FILE: opencode-plugin/tests/config.test.ts function createPluginInput (line 19) | function createPluginInput(): PluginInput { function withEnv (line 33) | async function withEnv( function captureWarnings (line 60) | async function captureWarnings(run: () => Promise): Promise Promise): Promise { function withPatchedAbortSignalTimeout (line 92) | async function withPatchedAbortSignalTimeout( function writeJSON (line 115) | async function writeJSON(filePath: string, value: unknown): Promise { type DebugRecord (line 120) | interface DebugRecord { function readDebugRecords (line 125) | async function readDebugRecords(logDir: string): Promise { FILE: opencode-plugin/tests/ingest.test.ts type ChatMessageHook (line 22) | type ChatMessageHook = NonNullable; type ChatMessageInput (line 23) | type ChatMessageInput = Parameters[0]; type ChatMessageOutput (line 24) | type ChatMessageOutput = Parameters[1]; type EventHook (line 25) | type EventHook = NonNullable; type EventInput (line 26) | type EventInput = Parameters[0]; type SessionCompactingHook (line 27) | type SessionCompactingHook = NonNullable[0]; type SessionCompactingOutput (line 29) | type SessionCompactingOutput = Parameters[1]; type Deferred (line 31) | interface Deferred { function createDeferred (line 37) | function createDeferred(): Deferred { function waitForBackgroundTasks (line 48) | async function waitForBackgroundTasks(): Promise { function createBackend (line 54) | function createBackend(options: { function createChatMessageInput (line 99) | function createChatMessageInput( function createChatMessageOutput (line 109) | function createChatMessageOutput(parts: ChatMessageOutput["parts"]): Cha... function textPart (line 119) | function textPart(text: string): ChatMessageOutput["parts"][number] { function createSessionIdleEventInput (line 126) | function createSessionIdleEventInput(sessionID: string): EventInput { function createSessionCompactingInput (line 135) | function createSessionCompactingInput(sessionID: string): SessionCompact... function createSessionCompactingOutput (line 139) | function createSessionCompactingOutput(): SessionCompactingOutput { method ingestImpl (line 240) | async ingestImpl(input) { method ingestImpl (line 303) | async ingestImpl(input) { method ingestImpl (line 335) | async ingestImpl(input) { method ingestImpl (line 370) | async ingestImpl(input) { method ingestImpl (line 399) | async ingestImpl() { method ingestImpl (line 467) | async ingestImpl(input) { method ingestImpl (line 515) | async ingestImpl(input) { FILE: opencode-plugin/tests/recall.test.ts type ChatMessageHook (line 22) | type ChatMessageHook = NonNullable; type ChatMessageInput (line 23) | type ChatMessageInput = Parameters[0]; type ChatMessageOutput (line 24) | type ChatMessageOutput = Parameters[1]; type SystemTransformHook (line 25) | type SystemTransformHook = NonNullable[0]; type SystemTransformOutput (line 27) | type SystemTransformOutput = Parameters[1]; type SessionCompactingHook (line 28) | type SessionCompactingHook = NonNullable[0]; type SessionCompactingOutput (line 30) | type SessionCompactingOutput = Parameters[1]; function createMemory (line 32) | function createMemory(overrides: Partial = {}): Memory { function createBackend (line 42) | function createBackend( function createChatMessageInput (line 79) | function createChatMessageInput(sessionID: string): ChatMessageInput { function createChatMessageOutput (line 83) | function createChatMessageOutput(parts: ChatMessageOutput["parts"]): Cha... function textPart (line 93) | function textPart( function nonTextPart (line 104) | function nonTextPart(): ChatMessageOutput["parts"][number] { function createSystemTransformInput (line 110) | function createSystemTransformInput(sessionID: string): SystemTransformI... function createSystemTransformOutput (line 117) | function createSystemTransformOutput(system: string[] = []): SystemTrans... function createSessionCompactingInput (line 121) | function createSessionCompactingInput(sessionID: string): SessionCompact... function createSessionCompactingOutput (line 125) | function createSessionCompactingOutput(): SessionCompactingOutput { function encodedQueryParamLength (line 129) | function encodedQueryParamLength(query: string): number { FILE: opencode-plugin/tests/server-backend.test.ts function withPatchedAbortSignalTimeout (line 6) | async function withPatchedAbortSignalTimeout( FILE: opencode-plugin/tests/session-transcript.test.ts function createClient (line 7) | function createClient( FILE: opencode-plugin/tests/setup-files.test.ts function createPaths (line 13) | async function createPaths(): Promise<{ function writeJSON (line 29) | async function writeJSON(filePath: string, value: unknown): Promise { FILE: opencode-plugin/tests/source-imports.test.ts function collectSourceFiles (line 11) | function collectSourceFiles(dir: string): string[] { FILE: server/cmd/mnemo-server/main.go function main (line 27) | func main() { function redactMeteringURLForLog (line 326) | func redactMeteringURLForLog(raw string) string { FILE: server/cmd/mnemo-server/main_test.go function TestRedactMeteringURLForLog (line 5) | func TestRedactMeteringURLForLog(t *testing.T) { FILE: server/internal/config/config.go type Config (line 13) | type Config struct method LogValue (line 352) | func (c *Config) LogValue() slog.Value { function Load (line 122) | func Load() (*Config, error) { function envOr (line 239) | func envOr(key, fallback string) string { function envFloat (line 246) | func envFloat(key string, fallback float64) float64 { function envInt (line 255) | func envInt(key string, fallback int) int { function envBool (line 264) | func envBool(key string, fallback bool) bool { function envBoolWithSet (line 273) | func envBoolWithSet(key string, fallback bool) (bool, bool) { function envDuration (line 282) | func envDuration(key string, fallback time.Duration) time.Duration { function parseClusterBlacklist (line 291) | func parseClusterBlacklist(raw string) map[string]struct{} { function parseMeteringURL (line 301) | func parseMeteringURL(raw string) (string, error) { function parseRuntimeUsageBaseURL (line 323) | func parseRuntimeUsageBaseURL(raw string) (string, error) { FILE: server/internal/config/config_test.go function TestConfig_MeteringSurfaceReduced (line 10) | func TestConfig_MeteringSurfaceReduced(t *testing.T) { function TestLoad_MeteringSupportedFields (line 26) | func TestLoad_MeteringSupportedFields(t *testing.T) { function TestLoad_MeteringURLHTTPSAccepted (line 52) | func TestLoad_MeteringURLHTTPSAccepted(t *testing.T) { function TestLoad_MeteringURLInvalidScheme (line 71) | func TestLoad_MeteringURLInvalidScheme(t *testing.T) { function TestLoad_MeteringURLSkippedWhenDisabled (line 82) | func TestLoad_MeteringURLSkippedWhenDisabled(t *testing.T) { function TestLoad_MeteringURLValidationErrorRedactsRawURL (line 99) | func TestLoad_MeteringURLValidationErrorRedactsRawURL(t *testing.T) { function TestLoad_RuntimeUsageConfig (line 116) | func TestLoad_RuntimeUsageConfig(t *testing.T) { function TestLoad_RuntimeUsageRequiresBaseURLAndSecret (line 159) | func TestLoad_RuntimeUsageRequiresBaseURLAndSecret(t *testing.T) { function TestLoad_RuntimeUsageOutboxCannotBeDisabledWithoutFailOpen (line 196) | func TestLoad_RuntimeUsageOutboxCannotBeDisabledWithoutFailOpen(t *testi... function TestLoad_RuntimeUsageBaseURLDrivesRuntimeUsageMeteringWhenLegacyMeteringEnabled (line 209) | func TestLoad_RuntimeUsageBaseURLDrivesRuntimeUsageMeteringWhenLegacyMet... function TestLoad_AutoSpendLimitDefaultsAndCustom (line 229) | func TestLoad_AutoSpendLimitDefaultsAndCustom(t *testing.T) { function TestLoad_AutoSpendLimitValidation (line 288) | func TestLoad_AutoSpendLimitValidation(t *testing.T) { FILE: server/internal/domain/errors.go type ValidationError (line 17) | type ValidationError struct method Error (line 22) | func (e *ValidationError) Error() string { method Unwrap (line 29) | func (e *ValidationError) Unwrap() error { type SchemaCompatibilityError (line 34) | type SchemaCompatibilityError struct method Error (line 38) | func (e *SchemaCompatibilityError) Error() string { method Unwrap (line 42) | func (e *SchemaCompatibilityError) Unwrap() error { FILE: server/internal/domain/tokengen.go constant TokenPrefix (line 9) | TokenPrefix = "mnemo_" function GenerateToken (line 13) | func GenerateToken() (string, error) { FILE: server/internal/domain/types.go type MemoryType (line 11) | type MemoryType constant TypePinned (line 14) | TypePinned MemoryType = "pinned" constant TypeInsight (line 15) | TypeInsight MemoryType = "insight" constant TypeSession (line 16) | TypeSession MemoryType = "session" type MemoryState (line 20) | type MemoryState constant StateActive (line 23) | StateActive MemoryState = "active" constant StatePaused (line 24) | StatePaused MemoryState = "paused" constant StateArchived (line 25) | StateArchived MemoryState = "archived" constant StateDeleted (line 26) | StateDeleted MemoryState = "deleted" type Memory (line 30) | type Memory struct constant ChainKeyPrefix (line 61) | ChainKeyPrefix = "chain_" type ChainSource (line 64) | type ChainSource struct type AuthInfo (line 71) | type AuthInfo struct method IsChain (line 87) | func (a *AuthInfo) IsChain() bool { type ChainAuth (line 92) | type ChainAuth struct type ChainAuthNode (line 99) | type ChainAuthNode struct type SpaceChain (line 106) | type SpaceChain struct type SpaceChainBinding (line 121) | type SpaceChainBinding struct type SpaceChainNode (line 132) | type SpaceChainNode struct type MemoryFilter (line 144) | type MemoryFilter struct type TenantStatus (line 158) | type TenantStatus constant TenantProvisioning (line 161) | TenantProvisioning TenantStatus = "provisioning" constant TenantActive (line 162) | TenantActive TenantStatus = "active" constant TenantSuspended (line 163) | TenantSuspended TenantStatus = "suspended" constant TenantDeleted (line 164) | TenantDeleted TenantStatus = "deleted" type KeyStatus (line 168) | type KeyStatus constant KeyStatusActive (line 171) | KeyStatusActive KeyStatus = "active" constant KeyStatusInactive (line 172) | KeyStatusInactive KeyStatus = "inactive" type Tenant (line 176) | type Tenant struct method DSNForBackend (line 204) | func (t *Tenant) DSNForBackend(backend string) string { type TenantUTM (line 229) | type TenantUTM struct type TenantInfo (line 239) | type TenantInfo struct type Session (line 251) | type Session struct FILE: server/internal/domain/upload.go type TaskStatus (line 5) | type TaskStatus constant TaskPending (line 8) | TaskPending TaskStatus = "pending" constant TaskProcessing (line 9) | TaskProcessing TaskStatus = "processing" constant TaskDone (line 10) | TaskDone TaskStatus = "done" constant TaskFailed (line 11) | TaskFailed TaskStatus = "failed" type FileType (line 14) | type FileType constant FileTypeSession (line 17) | FileTypeSession FileType = "session" constant FileTypeMemory (line 18) | FileTypeMemory FileType = "memory" type UploadTask (line 21) | type UploadTask struct FILE: server/internal/embed/embedder.go type Embedder (line 14) | type Embedder struct method Dims (line 68) | func (e *Embedder) Dims() int { method Model (line 72) | func (e *Embedder) Model() string { method Embed (line 90) | func (e *Embedder) Embed(ctx context.Context, text string) ([]float32,... type Config (line 23) | type Config struct constant defaultModel (line 31) | defaultModel = "text-embedding-3-small" constant defaultDims (line 32) | defaultDims = 1536 constant defaultBaseURL (line 33) | defaultBaseURL = "https://api.openai.com/v1" function New (line 38) | func New(cfg Config) *Embedder { type embeddingRequest (line 77) | type embeddingRequest struct type embeddingResponse (line 83) | type embeddingResponse struct FILE: server/internal/encrypt/encryptor.go type Encryptor (line 7) | type Encryptor interface FILE: server/internal/encrypt/factory.go type Type (line 9) | type Type constant TypePlain (line 13) | TypePlain Type = "plain" constant TypeMD5 (line 15) | TypeMD5 Type = "md5" constant TypeKMS (line 17) | TypeKMS Type = "kms" type Config (line 21) | type Config struct function New (line 36) | func New(cfg Config) (Encryptor, error) { function mustNew (line 57) | func mustNew(cfg Config) Encryptor { FILE: server/internal/encrypt/factory_test.go function TestNew (line 7) | func TestNew(t *testing.T) { function TestMustNew (line 63) | func TestMustNew(t *testing.T) { FILE: server/internal/encrypt/kms.go type KMSEncryptor (line 14) | type KMSEncryptor struct method Encrypt (line 45) | func (e *KMSEncryptor) Encrypt(ctx context.Context, plaintext string) ... method Decrypt (line 61) | func (e *KMSEncryptor) Decrypt(ctx context.Context, ciphertext string)... function NewKMSEncryptor (line 22) | func NewKMSEncryptor(keyID string) (*KMSEncryptor, error) { function NewKMSEncryptorWithClient (line 37) | func NewKMSEncryptorWithClient(client *kms.Client, keyID string) *KMSEnc... FILE: server/internal/encrypt/md5.go type MD5Encryptor (line 16) | type MD5Encryptor struct method Encrypt (line 28) | func (e *MD5Encryptor) Encrypt(ctx context.Context, plaintext string) ... method Decrypt (line 49) | func (e *MD5Encryptor) Decrypt(ctx context.Context, ciphertext string)... function NewMD5Encryptor (line 22) | func NewMD5Encryptor(key string) *MD5Encryptor { FILE: server/internal/encrypt/md5_test.go function TestMD5Encryptor (line 8) | func TestMD5Encryptor(t *testing.T) { FILE: server/internal/encrypt/plain.go type PlainEncryptor (line 7) | type PlainEncryptor struct method Encrypt (line 15) | func (e *PlainEncryptor) Encrypt(ctx context.Context, plaintext string... method Decrypt (line 20) | func (e *PlainEncryptor) Decrypt(ctx context.Context, ciphertext strin... function NewPlainEncryptor (line 10) | func NewPlainEncryptor() *PlainEncryptor { FILE: server/internal/encrypt/plain_test.go function TestPlainEncryptor (line 8) | func TestPlainEncryptor(t *testing.T) { FILE: server/internal/handler/chain_runtime.go method firstChainNodeAuth (line 13) | func (s *Server) firstChainNodeAuth(auth *domain.AuthInfo) (*domain.Auth... function chainNodeAuth (line 20) | func chainNodeAuth(auth *domain.AuthInfo, node domain.ChainAuthNode) *do... function chainSource (line 34) | func chainSource(auth *domain.AuthInfo, node domain.ChainAuthNode) *doma... function applyChainSource (line 43) | func applyChainSource(memories []domain.Memory, source *domain.ChainSour... type chainMemoryTarget (line 49) | type chainMemoryTarget struct type chainDeleteGroup (line 55) | type chainDeleteGroup struct method findChainMemoryTarget (line 60) | func (s *Server) findChainMemoryTarget(ctx context.Context, auth *domain... method chainDeleteGroups (line 82) | func (s *Server) chainDeleteGroups(ctx context.Context, auth *domain.Aut... method listChainMemories (line 109) | func (s *Server) listChainMemories(ctx context.Context, auth *domain.Aut... method getChainMemory (line 182) | func (s *Server) getChainMemory(ctx context.Context, auth *domain.AuthIn... function topChainScore (line 202) | func topChainScore(memories []domain.Memory) float64 { function chainRankScore (line 213) | func chainRankScore(mem domain.Memory) float64 { function finalizeChainMemories (line 223) | func finalizeChainMemories(memories []domain.Memory, limit, offset int, ... function uniqueChainMemories (line 255) | func uniqueChainMemories(memories []domain.Memory) []domain.Memory { method listChainSessionMessages (line 275) | func (s *Server) listChainSessionMessages(ctx context.Context, auth *dom... function sortChainSessionMessages (line 310) | func sortChainSessionMessages(messages []sessionMessageResponse) { FILE: server/internal/handler/handler.go type Server (line 31) | type Server struct method WithSpaceChainService (line 80) | func (s *Server) WithSpaceChainService(chains *service.SpaceChainServi... method WithMetering (line 88) | func (s *Server) WithMetering(writer metering.Writer) *Server { method WithRuntimeUsage (line 93) | func (s *Server) WithRuntimeUsage(manager runtimeusage.Manager) *Server { method WithActivityTracker (line 98) | func (s *Server) WithActivityTracker(tracker *service.ActivityTracker)... method resolveServices (line 114) | func (s *Server) resolveServices(auth *domain.AuthInfo) resolvedSvc { method Router (line 165) | func (s *Server) Router( method handleError (line 270) | func (s *Server) handleError(ctx context.Context, w http.ResponseWrite... function NewServer (line 52) | func NewServer( type resolvedSvc (line 105) | type resolvedSvc struct type tenantSvcKey (line 111) | type tenantSvcKey function respond (line 254) | func respond(w http.ResponseWriter, status int, data any) { function respondError (line 265) | func respondError(w http.ResponseWriter, status int, msg string) { function decode (line 293) | func decode(r *http.Request, dst any) error { function authInfo (line 305) | func authInfo(r *http.Request) *domain.AuthInfo { function requestLogger (line 312) | func requestLogger(logger *slog.Logger) func(http.Handler) http.Handler { FILE: server/internal/handler/memory.go type createMemoryRequest (line 28) | type createMemoryRequest struct function isSyncIngestTimeout (line 40) | func isSyncIngestTimeout(ctx context.Context, err error) bool { method createMemory (line 44) | func (s *Server) createMemory(w http.ResponseWriter, r *http.Request) { method ingestMessages (line 409) | func (s *Server) ingestMessages(ctx context.Context, auth *domain.AuthIn... type listResponse (line 505) | type listResponse struct method listMemories (line 512) | func (s *Server) listMemories(w http.ResponseWriter, r *http.Request) { function normalizeRecallQuery (line 627) | func normalizeRecallQuery(query string, now time.Time) string { type contentSessionMeta (line 631) | type contentSessionMeta struct function trimUniqueMemories (line 679) | func trimUniqueMemories(mems []domain.Memory, limit int) []domain.Memory { method getMemory (line 703) | func (s *Server) getMemory(w http.ResponseWriter, r *http.Request) { type updateMemoryRequest (line 728) | type updateMemoryRequest struct method updateMemory (line 734) | func (s *Server) updateMemory(w http.ResponseWriter, r *http.Request) { method deleteMemory (line 854) | func (s *Server) deleteMemory(w http.ResponseWriter, r *http.Request) { type batchDeleteRequest (line 961) | type batchDeleteRequest struct method batchDeleteMemories (line 965) | func (s *Server) batchDeleteMemories(w http.ResponseWriter, r *http.Requ... type bulkCreateRequest (line 1092) | type bulkCreateRequest struct method bulkCreateMemories (line 1096) | func (s *Server) bulkCreateMemories(w http.ResponseWriter, r *http.Reque... method bootstrapMemories (line 1173) | func (s *Server) bootstrapMemories(w http.ResponseWriter, r *http.Reques... function tagsAtIndex (line 1207) | func tagsAtIndex(tags [][]string, i int) []string { constant maxLimitPerSession (line 1215) | maxLimitPerSession = 500 constant maxSessionIDs (line 1216) | maxSessionIDs = 100 type sessionMessageResponse (line 1219) | type sessionMessageResponse struct method handleListSessionMessages (line 1235) | func (s *Server) handleListSessionMessages(w http.ResponseWriter, r *htt... function dedupStrings (line 1312) | func dedupStrings(ss []string) []string { method refreshWriteMetrics (line 1324) | func (s *Server) refreshWriteMetrics(auth *domain.AuthInfo, svc resolved... FILE: server/internal/handler/memory_batch_delete_test.go function TestBatchDeleteMemories_Success_ReturnsDeletedCount (line 11) | func TestBatchDeleteMemories_Success_ReturnsDeletedCount(t *testing.T) { function TestBatchDeleteMemories_EmptyIDs_Returns400 (line 51) | func TestBatchDeleteMemories_EmptyIDs_Returns400(t *testing.T) { function TestBatchDeleteMemories_AllEmptyStrings_Returns400 (line 69) | func TestBatchDeleteMemories_AllEmptyStrings_Returns400(t *testing.T) { FILE: server/internal/handler/memory_test.go type testMemoryRepo (line 28) | type testMemoryRepo struct method Create (line 46) | func (m *testMemoryRepo) Create(_ context.Context, mem *domain.Memory)... method GetByID (line 53) | func (m *testMemoryRepo) GetByID(_ context.Context, id string) (*domai... method UpdateOptimistic (line 64) | func (m *testMemoryRepo) UpdateOptimistic(_ context.Context, mem *doma... method SoftDelete (line 77) | func (m *testMemoryRepo) SoftDelete(_ context.Context, id string, _ st... method BulkSoftDelete (line 86) | func (m *testMemoryRepo) BulkSoftDelete(_ context.Context, ids []strin... method ArchiveMemory (line 92) | func (m *testMemoryRepo) ArchiveMemory(context.Context, string, string... method ArchiveAndCreate (line 93) | func (m *testMemoryRepo) ArchiveAndCreate(_ context.Context, _, _ stri... method SetState (line 99) | func (m *testMemoryRepo) SetState(context.Context, string, domain.Memo... method List (line 100) | func (m *testMemoryRepo) List(context.Context, domain.MemoryFilter) ([... method Count (line 103) | func (m *testMemoryRepo) Count(context.Context) (int, error) { return ... method BulkCreate (line 104) | func (m *testMemoryRepo) BulkCreate(ctx context.Context, _ []*domain.M... method VectorSearch (line 114) | func (m *testMemoryRepo) VectorSearch(context.Context, []float32, doma... method AutoVectorSearch (line 118) | func (m *testMemoryRepo) AutoVectorSearch(context.Context, string, dom... method KeywordSearch (line 122) | func (m *testMemoryRepo) KeywordSearch(ctx context.Context, query stri... method FTSSearch (line 134) | func (m *testMemoryRepo) FTSSearch(context.Context, string, domain.Mem... method FTSAvailable (line 137) | func (m *testMemoryRepo) FTSAvailable() bool { return false } method ListBootstrap (line 138) | func (m *testMemoryRepo) ListBootstrap(context.Context, int) ([]domain... method NearDupSearch (line 142) | func (m *testMemoryRepo) NearDupSearch(context.Context, string) (strin... method CountStats (line 146) | func (m *testMemoryRepo) CountStats(context.Context) (int64, int64, er... type testSessionRepo (line 154) | type testSessionRepo struct method BulkCreate (line 170) | func (s *testSessionRepo) BulkCreate(_ context.Context, sessions []*do... method PatchTags (line 178) | func (s *testSessionRepo) PatchTags(_ context.Context, sessionID, hash... method AutoVectorSearch (line 188) | func (s *testSessionRepo) AutoVectorSearch(context.Context, string, do... method VectorSearch (line 192) | func (s *testSessionRepo) VectorSearch(context.Context, []float32, dom... method FTSSearch (line 196) | func (s *testSessionRepo) FTSSearch(context.Context, string, domain.Me... method KeywordSearch (line 200) | func (s *testSessionRepo) KeywordSearch(ctx context.Context, query str... method FTSAvailable (line 211) | func (s *testSessionRepo) FTSAvailable() bool { return false } method ListBySessionIDs (line 212) | func (s *testSessionRepo) ListBySessionIDs(_ context.Context, sessionI... function intPtr (line 218) | func intPtr(v int) *int { type captureMeteringWriter (line 222) | type captureMeteringWriter struct method Record (line 227) | func (w *captureMeteringWriter) Record(evt metering.Event) { method Close (line 234) | func (w *captureMeteringWriter) Close(context.Context) error { return ... method snapshot (line 236) | func (w *captureMeteringWriter) snapshot() []metering.Event { type blockingMeteringWriter (line 244) | type blockingMeteringWriter struct method Record (line 249) | func (w *blockingMeteringWriter) Record(evt metering.Event) { method Close (line 254) | func (w *blockingMeteringWriter) Close(context.Context) error { return... type captureRuntimeUsageManager (line 256) | type captureRuntimeUsageManager struct method Enabled (line 281) | func (m *captureRuntimeUsageManager) Enabled() bool { return m.enabled } method BeforeRecall (line 282) | func (m *captureRuntimeUsageManager) BeforeRecall(_ context.Context, s... method AfterRecallSuccess (line 287) | func (m *captureRuntimeUsageManager) AfterRecallSuccess(ctx context.Co... method AfterRecallFailure (line 293) | func (m *captureRuntimeUsageManager) AfterRecallFailure(context.Contex... method BeforeMemoryCreate (line 295) | func (m *captureRuntimeUsageManager) BeforeMemoryCreate(_ context.Cont... method AfterMemoryCreateSuccess (line 300) | func (m *captureRuntimeUsageManager) AfterMemoryCreateSuccess(ctx cont... method AfterMemoryCreateFailure (line 306) | func (m *captureRuntimeUsageManager) AfterMemoryCreateFailure(context.... method BeforeMemoryUpdate (line 309) | func (m *captureRuntimeUsageManager) BeforeMemoryUpdate(_ context.Cont... method AfterMemoryUpdateSuccess (line 314) | func (m *captureRuntimeUsageManager) AfterMemoryUpdateSuccess(_ contex... method AfterMemoryUpdateFailure (line 319) | func (m *captureRuntimeUsageManager) AfterMemoryUpdateFailure(context.... method BeforeMemoryDelete (line 322) | func (m *captureRuntimeUsageManager) BeforeMemoryDelete(_ context.Cont... method AfterMemoryDeleteSuccess (line 327) | func (m *captureRuntimeUsageManager) AfterMemoryDeleteSuccess(_ contex... method AfterMemoryDeleteFailure (line 332) | func (m *captureRuntimeUsageManager) AfterMemoryDeleteFailure(context.... type handlerActivityTenantRepo (line 335) | type handlerActivityTenantRepo struct method Create (line 349) | func (r *handlerActivityTenantRepo) Create(context.Context, *domain.Te... method GetByID (line 350) | func (r *handlerActivityTenantRepo) GetByID(context.Context, string) (... method GetByName (line 353) | func (r *handlerActivityTenantRepo) GetByName(context.Context, string)... method UpdateStatus (line 356) | func (r *handlerActivityTenantRepo) UpdateStatus(context.Context, stri... method UpdateSchemaVersion (line 359) | func (r *handlerActivityTenantRepo) UpdateSchemaVersion(context.Contex... method TouchActivity (line 363) | func (r *handlerActivityTenantRepo) TouchActivity(_ context.Context, t... method UpsertMemoryStats (line 379) | func (r *handlerActivityTenantRepo) UpsertMemoryStats(_ context.Contex... method CountActiveTenantsSince (line 397) | func (r *handlerActivityTenantRepo) CountActiveTenantsSince(context.Co... method SumActiveMemoryStats (line 403) | func (r *handlerActivityTenantRepo) SumActiveMemoryStats(context.Conte... function cloneMap (line 409) | func cloneMap(in map[string]any) map[string]any { function waitForMeteringEvents (line 420) | func waitForMeteringEvents(t *testing.T, writer *captureMeteringWriter, ... function ensureNoMeteringEvents (line 435) | func ensureNoMeteringEvents(t *testing.T, writer *captureMeteringWriter,... function newTestServer (line 445) | func newTestServer(memRepo *testMemoryRepo, sessRepo *testSessionRepo) *... function makeRequest (line 461) | func makeRequest(t *testing.T, method, path string, body any) *http.Requ... function makeTenantRequest (line 477) | func makeTenantRequest(t *testing.T, method, path string, body any) *htt... function makeChainRequest (line 489) | func makeChainRequest(t *testing.T, method, path string, body any) *http... function withURLParam (line 512) | func withURLParam(req *http.Request, key string, value string) *http.Req... function TestCreateMemory_SyncContent_Returns200 (line 518) | func TestCreateMemory_SyncContent_Returns200(t *testing.T) { function TestCreateMemory_RuntimeUsageAllowsSmartContentWrite (line 550) | func TestCreateMemory_RuntimeUsageAllowsSmartContentWrite(t *testing.T) { function TestCreateMemory_RuntimeUsageAllowsPinnedKnownDelta (line 575) | func TestCreateMemory_RuntimeUsageAllowsPinnedKnownDelta(t *testing.T) { function TestCreateMemory_RuntimeUsageFinalizationFailureFailsClosed (line 600) | func TestCreateMemory_RuntimeUsageFinalizationFailureFailsClosed(t *test... function TestCreateMemory_ActivityFailureDoesNotFailWrite (line 631) | func TestCreateMemory_ActivityFailureDoesNotFailWrite(t *testing.T) { function TestRefreshWriteMetricsRecordsMemoryStats (line 662) | func TestRefreshWriteMetricsRecordsMemoryStats(t *testing.T) { function TestRefreshWriteMetricsSkipsStatsWhenActivityTrackerMissing (line 687) | func TestRefreshWriteMetricsSkipsStatsWhenActivityTrackerMissing(t *test... function TestCreateMemory_CountStatsFailureStillRecordsActivity (line 703) | func TestCreateMemory_CountStatsFailureStillRecordsActivity(t *testing.T) { function TestCreateMemory_ContentWithPinnedMemoryType_Returns201Memory (line 740) | func TestCreateMemory_ContentWithPinnedMemoryType_Returns201Memory(t *te... function TestCreateMemory_ContentWithUnsupportedExplicitMemoryType_Returns400 (line 777) | func TestCreateMemory_ContentWithUnsupportedExplicitMemoryType_Returns40... function TestCreateMemory_MessagesWithMemoryType_Returns400 (line 809) | func TestCreateMemory_MessagesWithMemoryType_Returns400(t *testing.T) { function TestCreateMemory_SyncContent_WithSessionID_DoesNotPersistRawSession (line 826) | func TestCreateMemory_SyncContent_WithSessionID_DoesNotPersistRawSession... function TestCreateMemory_AsyncContent_Returns202 (line 852) | func TestCreateMemory_AsyncContent_Returns202(t *testing.T) { function TestCreateMemory_SyncMessages_Returns200 (line 876) | func TestCreateMemory_SyncMessages_Returns200(t *testing.T) { function TestCreateMemory_SyncMessages_RecordsIngestMetering (line 897) | func TestCreateMemory_SyncMessages_RecordsIngestMetering(t *testing.T) { function TestCreateMemory_SyncMessages_WaitsForMeteringBeforeReturning (line 934) | func TestCreateMemory_SyncMessages_WaitsForMeteringBeforeReturning(t *te... function TestCreateMemory_SyncMessages_WithExplicitSeq_PersistsSessionSeq (line 984) | func TestCreateMemory_SyncMessages_WithExplicitSeq_PersistsSessionSeq(t ... function TestCreateMemory_AsyncMessages_Returns202 (line 1015) | func TestCreateMemory_AsyncMessages_Returns202(t *testing.T) { function TestCreateMemory_AsyncMessages_ReconcileFailed_DoesNotRecordIngestMetering (line 1042) | func TestCreateMemory_AsyncMessages_ReconcileFailed_DoesNotRecordIngestM... function TestBulkCreateMemoriesTriggersPostWriteHooks (line 1089) | func TestBulkCreateMemoriesTriggersPostWriteHooks(t *testing.T) { function TestBulkCreateMemories_RuntimeUsageFinalizationFailureFailsClosed (line 1130) | func TestBulkCreateMemories_RuntimeUsageFinalizationFailureFailsClosed(t... function TestBulkCreateMemories_RuntimeUsageFinalizationIgnoresRequestCancellation (line 1162) | func TestBulkCreateMemories_RuntimeUsageFinalizationIgnoresRequestCancel... function TestBulkCreateMemories_ChainRuntimeUsageUsesResolvedNodeSubject (line 1199) | func TestBulkCreateMemories_ChainRuntimeUsageUsesResolvedNodeSubject(t *... function TestListMemories_RuntimeUsageRecallFinalizationIgnoresRequestCancellation (line 1228) | func TestListMemories_RuntimeUsageRecallFinalizationIgnoresRequestCancel... function TestListMemories_ChainRuntimeUsageRecallUsesChainAPIKeySubject (line 1265) | func TestListMemories_ChainRuntimeUsageRecallUsesChainAPIKeySubject(t *t... function TestBulkCreateMemories_RuntimeUsageValidatesBeforeQuota (line 1293) | func TestBulkCreateMemories_RuntimeUsageValidatesBeforeQuota(t *testing.... function TestBatchDeleteMemories_RuntimeUsageValidatesBeforeQuota (line 1319) | func TestBatchDeleteMemories_RuntimeUsageValidatesBeforeQuota(t *testing... function TestUpdateMemory_RuntimeUsageRecordsUpdate (line 1343) | func TestUpdateMemory_RuntimeUsageRecordsUpdate(t *testing.T) { function TestUpdateMemory_ChainRuntimeUsageUsesResolvedNodeSubject (line 1372) | func TestUpdateMemory_ChainRuntimeUsageUsesResolvedNodeSubject(t *testin... function TestDeleteMemory_ChainRuntimeUsageUsesResolvedNodeSubject (line 1401) | func TestDeleteMemory_ChainRuntimeUsageUsesResolvedNodeSubject(t *testin... function TestBatchDeleteMemories_ChainRuntimeUsageGroupsByResolvedNode (line 1429) | func TestBatchDeleteMemories_ChainRuntimeUsageGroupsByResolvedNode(t *te... type failSearchMemoryRepo (line 1468) | type failSearchMemoryRepo struct method KeywordSearch (line 1472) | func (m *failSearchMemoryRepo) KeywordSearch(context.Context, string, ... function TestCreateMemory_SyncMessages_Phase1ErrorReturnsServerError (line 1476) | func TestCreateMemory_SyncMessages_Phase1ErrorReturnsServerError(t *test... function TestCreateMemory_SyncMessages_StripsInjectedContext (line 1515) | func TestCreateMemory_SyncMessages_StripsInjectedContext(t *testing.T) { function TestCreateMemory_SyncMessages_ReconcileFailure_Returns500 (line 1588) | func TestCreateMemory_SyncMessages_ReconcileFailure_Returns500(t *testin... function TestCreateMemory_SyncMessages_TimeoutReturnsGatewayTimeout (line 1635) | func TestCreateMemory_SyncMessages_TimeoutReturnsGatewayTimeout(t *testi... function TestCreateMemory_SyncMessages_ExplicitSeqUsesSeqAwarePatchHash (line 1677) | func TestCreateMemory_SyncMessages_ExplicitSeqUsesSeqAwarePatchHash(t *t... function TestListMemories_DefaultRecall_PrefersSessionForExactQuery (line 1737) | func TestListMemories_DefaultRecall_PrefersSessionForExactQuery(t *testi... function TestListMemories_DefaultRecall_RecordsMetering (line 1786) | func TestListMemories_DefaultRecall_RecordsMetering(t *testing.T) { function TestListMemories_DefaultRecall_ExactKeepsComplementaryInsightEvidence (line 1829) | func TestListMemories_DefaultRecall_ExactKeepsComplementaryInsightEviden... function TestListMemories_DefaultRecall_PrefersTargetSpeakerForSpeechQuestion (line 1886) | func TestListMemories_DefaultRecall_PrefersTargetSpeakerForSpeechQuestio... function TestListMemories_DefaultRecall_DownranksCaptionHeavyNonVisualSessionNoise (line 1920) | func TestListMemories_DefaultRecall_DownranksCaptionHeavyNonVisualSessio... function TestListMemories_DefaultRecall_PrefersSubjectSpeakerForPersonalPreferenceQuestion (line 1954) | func TestListMemories_DefaultRecall_PrefersSubjectSpeakerForPersonalPref... function TestListMemories_DefaultRecall_PrefersSubjectAnswerForResearchQuestion (line 1989) | func TestListMemories_DefaultRecall_PrefersSubjectAnswerForResearchQuest... function TestListMemories_DefaultRecall_PrefersSelfIdentityStatement (line 2024) | func TestListMemories_DefaultRecall_PrefersSelfIdentityStatement(t *test... function TestListMemories_DefaultRecall_PrefersRelationshipStatusSelfStatement (line 2059) | func TestListMemories_DefaultRecall_PrefersRelationshipStatusSelfStateme... function TestListMemories_DefaultRecall_DemotesNonSubjectPromptForSymbolQuestion (line 2094) | func TestListMemories_DefaultRecall_DemotesNonSubjectPromptForSymbolQues... function TestListMemories_DefaultRecall_ExpandsAdjacentSessionAnswerTurn (line 2129) | func TestListMemories_DefaultRecall_ExpandsAdjacentSessionAnswerTurn(t *... function TestListMemories_DefaultRecall_KeepsQualifiedPinnedFirst (line 2194) | func TestListMemories_DefaultRecall_KeepsQualifiedPinnedFirst(t *testing... function TestListMemories_DefaultRecall_UnderfillsOnConfidenceGap (line 2248) | func TestListMemories_DefaultRecall_UnderfillsOnConfidenceGap(t *testing... function TestListMemories_DefaultRecall_EnumerationCanExpandBeyondRequestedLimit (line 2289) | func TestListMemories_DefaultRecall_EnumerationCanExpandBeyondRequestedL... function TestListMemories_DefaultRecall_ExactStillHonorsRequestedLimit (line 2345) | func TestListMemories_DefaultRecall_ExactStillHonorsRequestedLimit(t *te... function TestListMemories_DefaultRecall_EnumerationFiltersLowConfidenceNoise (line 2383) | func TestListMemories_DefaultRecall_EnumerationFiltersLowConfidenceNoise... function TestClassifyRecallQueryShape_ExpandedEnumerationQueries (line 2426) | func TestClassifyRecallQueryShape_ExpandedEnumerationQueries(t *testing.... function TestListMemories_DefaultRecall_EnumerationPrefersFocusMatchedMemories (line 2444) | func TestListMemories_DefaultRecall_EnumerationPrefersFocusMatchedMemori... function TestListMemories_DefaultRecall_RepeatCountIncludesConcreteEvents (line 2487) | func TestListMemories_DefaultRecall_RepeatCountIncludesConcreteEvents(t ... function TestListMemories_DefaultRecall_DurationPrefersExactSpanMemory (line 2530) | func TestListMemories_DefaultRecall_DurationPrefersExactSpanMemory(t *te... function TestListMemories_DefaultRecall_FrequencyPrefersCadenceOverDuration (line 2565) | func TestListMemories_DefaultRecall_FrequencyPrefersCadenceOverDuration(... function TestListMemories_DefaultRecall_DurationDemotesQuestionTurns (line 2600) | func TestListMemories_DefaultRecall_DurationDemotesQuestionTurns(t *test... function TestDefaultConfidenceRecallSearch_FansOutPoolSearchesConcurrently (line 2634) | func TestDefaultConfidenceRecallSearch_FansOutPoolSearchesConcurrently(t... function TestListMemories_DefaultRecall_PrefersSessionForChineseExactQuery (line 2720) | func TestListMemories_DefaultRecall_PrefersSessionForChineseExactQuery(t... function TestListMemories_DefaultRecall_PrefersQuantifiedEvidenceForChineseCountQuery (line 2769) | func TestListMemories_DefaultRecall_PrefersQuantifiedEvidenceForChineseC... function TestNormalizeRecallQuery_ChineseRelativeDates (line 2818) | func TestNormalizeRecallQuery_ChineseRelativeDates(t *testing.T) { function TestNormalizeRecallQuery_EnglishQueryExpanded (line 2850) | func TestNormalizeRecallQuery_EnglishQueryExpanded(t *testing.T) { function TestNormalizeRecallQuery_LocalAnchorRemainsUnchanged (line 2859) | func TestNormalizeRecallQuery_LocalAnchorRemainsUnchanged(t *testing.T) { function TestListMemories_DefaultRecall_NormalizesChineseRelativeQuery (line 2868) | func TestListMemories_DefaultRecall_NormalizesChineseRelativeQuery(t *te... function TestListMemories_SinglePoolRecall_NormalizesChineseRelativeQuery (line 2899) | func TestListMemories_SinglePoolRecall_NormalizesChineseRelativeQuery(t ... FILE: server/internal/handler/metering.go constant meteringCategoryAPI (line 12) | meteringCategoryAPI = "mem9-api" method afterSuccessfulWrite (line 14) | func (s *Server) afterSuccessfulWrite(auth *domain.AuthInfo, svc resolve... method afterSuccessfulIngest (line 21) | func (s *Server) afterSuccessfulIngest(auth *domain.AuthInfo, svc resolv... method recordRecallMetering (line 26) | func (s *Server) recordRecallMetering(auth *domain.AuthInfo) { method recordIngestMetering (line 41) | func (s *Server) recordIngestMetering(auth *domain.AuthInfo, svc resolve... FILE: server/internal/handler/recall.go constant defaultPinnedCandidateLimit (line 19) | defaultPinnedCandidateLimit = 5 constant defaultInsightCandidateLimit (line 20) | defaultInsightCandidateLimit = 10 constant defaultSessionCandidateLimit (line 21) | defaultSessionCandidateLimit = 10 constant defaultPinnedKeepMax (line 22) | defaultPinnedKeepMax = 2 constant defaultPinnedMinConfidence (line 23) | defaultPinnedMinConfidence = 70 constant defaultMixedMinConfidence (line 24) | defaultMixedMinConfidence = 65 constant enumerationMinConfidence (line 25) | enumerationMinConfidence = 55 constant enumerationMaxBudget (line 26) | enumerationMaxBudget = 20 constant enumerationBudgetMultiplier (line 27) | enumerationBudgetMultiplier = 2 constant enumerationCandidateLimit (line 28) | enumerationCandidateLimit = 24 constant enumerationFetchMultiplier (line 29) | enumerationFetchMultiplier = 4 constant enumerationSecondHopTopN (line 30) | enumerationSecondHopTopN = 5 constant enumerationPinnedKeepMax (line 31) | enumerationPinnedKeepMax = 1 constant enumerationAdjacentTurnTopN (line 32) | enumerationAdjacentTurnTopN = 12 constant richTopFetchMultiplier (line 33) | richTopFetchMultiplier = 4 constant richTopSecondHopTopN (line 34) | richTopSecondHopTopN = 5 constant sessionAdjacentTurnTopN (line 35) | sessionAdjacentTurnTopN = 4 constant sessionAdjacentTurnRadius (line 36) | sessionAdjacentTurnRadius = 1 constant balancedSelectionRounds (line 37) | balancedSelectionRounds = 2 constant defaultConfidenceGapStop (line 38) | defaultConfidenceGapStop = 18 constant recallRRFMaxScore (line 39) | recallRRFMaxScore = 2.0 / 61.0 type recallTemporalIntent (line 93) | type recallTemporalIntent constant recallTemporalIntentAny (line 96) | recallTemporalIntentAny recallTemporalIntent = iota constant recallTemporalIntentPast (line 97) | recallTemporalIntentPast constant recallTemporalIntentFuture (line 98) | recallTemporalIntentFuture type recallQueryProfile (line 101) | type recallQueryProfile struct type recallQueryShape (line 117) | type recallQueryShape constant recallQueryShapeGeneral (line 120) | recallQueryShapeGeneral recallQueryShape = iota constant recallQueryShapeEntity (line 121) | recallQueryShapeEntity constant recallQueryShapeCount (line 122) | recallQueryShapeCount constant recallQueryShapeTime (line 123) | recallQueryShapeTime constant recallQueryShapeLocation (line 124) | recallQueryShapeLocation constant recallQueryShapeEnumeration (line 125) | recallQueryShapeEnumeration constant recallQueryShapeExact (line 126) | recallQueryShapeExact type recallSelectionStats (line 129) | type recallSelectionStats struct method defaultConfidenceRecallSearch (line 138) | func (s *Server) defaultConfidenceRecallSearch( method singlePoolConfidenceRecallSearch (line 243) | func (s *Server) singlePoolConfidenceRecallSearch( function applyRecallConfidence (line 326) | func applyRecallConfidence(profile recallQueryProfile, candidates []serv... function buildRecallConfidence (line 336) | func buildRecallConfidence(profile recallQueryProfile, candidate service... function selectPinnedRecallCandidates (line 358) | func selectPinnedRecallCandidates( function selectMixedRecallCandidates (line 375) | func selectMixedRecallCandidates( function effectiveRecallBudget (line 391) | func effectiveRecallBudget(shape recallQueryShape, requested int) int { function recallCandidateLimit (line 401) | func recallCandidateLimit(shape recallQueryShape, pool service.RecallSou... function pinnedKeepMax (line 423) | func pinnedKeepMax(shape recallQueryShape) int { function recallCandidateOptions (line 430) | func recallCandidateOptions(shape recallQueryShape, enableSecondHop bool... function shouldExpandAdjacentSessionTurns (line 458) | func shouldExpandAdjacentSessionTurns(shape recallQueryShape) bool { function shouldUseBalancedTopSelection (line 462) | func shouldUseBalancedTopSelection(shape recallQueryShape) bool { function selectBalancedRecallCandidates (line 471) | func selectBalancedRecallCandidates( function selectEnumerationRecallCandidates (line 554) | func selectEnumerationRecallCandidates( type enumerationBucket (line 626) | type enumerationBucket struct function splitEnumerationBuckets (line 631) | func splitEnumerationBuckets(candidates []service.RecallCandidate) []enu... function splitBalancedBuckets (line 658) | func splitBalancedBuckets(shape recallQueryShape, candidates []service.R... function nextEnumerationCandidate (line 674) | func nextEnumerationCandidate( function rememberRecallCandidate (line 717) | func rememberRecallCandidate(candidate service.RecallCandidate, seen map... function recordRecallSourceSelection (line 723) | func recordRecallSourceSelection(stats *recallSelectionStats, pool servi... function introducesNewCoverage (line 732) | func introducesNewCoverage(tokens []string, coverageSeen map[string]stru... function rememberRecallCoverage (line 741) | func rememberRecallCoverage(tokens []string, coverageSeen map[string]str... function selectTopRecallCandidates (line 747) | func selectTopRecallCandidates( function dedupeRecallCandidates (line 802) | func dedupeRecallCandidates(shape recallQueryShape, candidates []service... function recallCandidateLess (line 821) | func recallCandidateLess(shape recallQueryShape, left, right service.Rec... function sourcePreference (line 840) | func sourcePreference(shape recallQueryShape, pool service.RecallSourceP... function sourcePrior (line 872) | func sourcePrior(shape recallQueryShape, pool service.RecallSourcePool) ... function answerEvidenceBonus (line 889) | func answerEvidenceBonus(profile recallQueryProfile, memory domain.Memor... function containsRecallEnumerationCue (line 1078) | func containsRecallEnumerationCue(lower, content string) bool { function extractRecallQueryTokens (line 1091) | func extractRecallQueryTokens(lower string) map[string]struct{} { function extractRecallCoverageTokens (line 1106) | func extractRecallCoverageTokens(memory domain.Memory, queryTokens map[s... function recallFocusMatchCount (line 1136) | func recallFocusMatchCount(memory domain.Memory, focusTokens []string) i... function containsRecallDurationAnswer (line 1155) | func containsRecallDurationAnswer(content string) bool { function containsRecallDurationRange (line 1160) | func containsRecallDurationRange(content string) bool { function containsRecallFrequencyAnswer (line 1171) | func containsRecallFrequencyAnswer(content string) bool { function extractRecallTargetSpeaker (line 1182) | func extractRecallTargetSpeaker(lower string) string { function extractRecallSubjectSpeaker (line 1190) | func extractRecallSubjectSpeaker(query string) string { function extractRecallSpeaker (line 1205) | func extractRecallSpeaker(content string) string { function normalizeRecallPersonToken (line 1213) | func normalizeRecallPersonToken(raw string) string { function sameRecallPerson (line 1221) | func sameRecallPerson(left, right string) bool { function addRecallCoverageToken (line 1244) | func addRecallCoverageToken(tokens map[string]struct{}, raw string, quer... function normalizeRecallCoverageToken (line 1257) | func normalizeRecallCoverageToken(raw string) string { function recallSelfFactCueCount (line 1266) | func recallSelfFactCueCount(lower string) int { function isRecallCoverageStopword (line 1281) | func isRecallCoverageStopword(token string) bool { function isRecallFocusStopword (line 1296) | func isRecallFocusStopword(token string) bool { function recallContentForScoring (line 1309) | func recallContentForScoring(memory domain.Memory) (string, string, stri... function buildRecallQueryProfile (line 1327) | func buildRecallQueryProfile(query string) recallQueryProfile { function buildRecallFocusTokens (line 1349) | func buildRecallFocusTokens(profile recallQueryProfile) []string { function classifyRecallTemporalIntent (line 1372) | func classifyRecallTemporalIntent(lower string) recallTemporalIntent { function extractRecallTemporalTokens (line 1387) | func extractRecallTemporalTokens(lower string) []string { function timeAnswerEvidenceBonus (line 1401) | func timeAnswerEvidenceBonus(profile recallQueryProfile, content, tempor... function stripRecallTemporalHeader (line 1463) | func stripRecallTemporalHeader(content string) (string, bool) { function recallSpokenBodyForScoring (line 1474) | func recallSpokenBodyForScoring(content string) (string, bool) { function temporalConstraintMatchBonus (line 1483) | func temporalConstraintMatchBonus(tokens []string, lowerContent string) ... function recallEntitySignalCount (line 1503) | func recallEntitySignalCount(content string) int { function classifyRecallQueryShape (line 1517) | func classifyRecallQueryShape(query string) recallQueryShape { function isEnumerationRecallQuery (line 1554) | func isEnumerationRecallQuery(trimmed, lower string) bool { function isRepeatCountRecallQuestion (line 1573) | func isRepeatCountRecallQuestion(trimmed, lower string) bool { function isDurationRecallQuestion (line 1584) | func isDurationRecallQuestion(trimmed, lower string) bool { function isFrequencyRecallQuestion (line 1595) | func isFrequencyRecallQuestion(trimmed, lower string) bool { function hasRecallBodyEventCue (line 1606) | func hasRecallBodyEventCue(content, temporalDisplay string) bool { function recallQueryShapeLabel (line 1625) | func recallQueryShapeLabel(shape recallQueryShape) string { function isExactRecallShape (line 1644) | func isExactRecallShape(shape recallQueryShape) bool { function recencyBonus (line 1653) | func recencyBonus(updatedAt time.Time) float64 { function recallAnswerUnitCount (line 1664) | func recallAnswerUnitCount(content string) int { function hasStandaloneCJKNamedAnswer (line 1704) | func hasStandaloneCJKNamedAnswer(content string) bool { function containsRecallListCue (line 1736) | func containsRecallListCue(lower, content string) bool { function containsRecallLocationCue (line 1749) | func containsRecallLocationCue(content string) bool { function containsMonthName (line 1762) | func containsMonthName(lower string) bool { function trimRecallAnswer (line 1766) | func trimRecallAnswer(content string) string { function hasAnyPrefix (line 1770) | func hasAnyPrefix(s string, prefixes ...string) bool { function clampFloat64 (line 1779) | func clampFloat64(v, min, max float64) float64 { function recallMemoryKey (line 1789) | func recallMemoryKey(mem domain.Memory) string { function recallConfidenceValue (line 1796) | func recallConfidenceValue(mem domain.Memory) int { function minInt (line 1803) | func minInt(a, b int) int { FILE: server/internal/handler/recall_test.go function TestClassifyRecallQueryShape_Bilingual (line 11) | func TestClassifyRecallQueryShape_Bilingual(t *testing.T) { function TestRecallAnswerUnitCount_CJKAware (line 52) | func TestRecallAnswerUnitCount_CJKAware(t *testing.T) { function TestAnswerEvidenceBonus_BilingualSignals (line 58) | func TestAnswerEvidenceBonus_BilingualSignals(t *testing.T) { function TestAnswerEvidenceBonus_TimePrefersNaturalDatesOverMetadataProjection (line 121) | func TestAnswerEvidenceBonus_TimePrefersNaturalDatesOverMetadataProjecti... function TestAnswerEvidenceBonus_IgnoresLegacyInjectedDateWhenBodyAlreadyExplicit (line 136) | func TestAnswerEvidenceBonus_IgnoresLegacyInjectedDateWhenBodyAlreadyExp... function TestBuildRecallConfidence_TimePrefersRelativeCueOverHeaderOnlyTimestamp (line 150) | func TestBuildRecallConfidence_TimePrefersRelativeCueOverHeaderOnlyTimes... function TestBuildRecallConfidence_TimeFutureIntentPrefersPlannedFutureEvidence (line 180) | func TestBuildRecallConfidence_TimeFutureIntentPrefersPlannedFutureEvide... function TestRecallCandidateOptions_EnumerationExpandsAdjacentTurns (line 210) | func TestRecallCandidateOptions_EnumerationExpandsAdjacentTurns(t *testi... FILE: server/internal/handler/runtime_usage.go constant runtimeUsagePostSuccessTimeout (line 15) | runtimeUsagePostSuccessTimeout = 10 * time.Second method runtimeUsageEnabled (line 17) | func (s *Server) runtimeUsageEnabled() bool { function memoryIDs (line 21) | func memoryIDs(memories []domain.Memory) []string { function withRuntimeUsagePostSuccessContext (line 31) | func withRuntimeUsagePostSuccessContext(run func(context.Context) error)... function subjectFromAuth (line 38) | func subjectFromAuth(auth *domain.AuthInfo) runtimeusage.Subject { method handleRuntimeUsageError (line 57) | func (s *Server) handleRuntimeUsageError(w http.ResponseWriter, err erro... function isRuntimeUsageError (line 78) | func isRuntimeUsageError(err error) bool { function ensureMem9QuotaDeniedCode (line 85) | func ensureMem9QuotaDeniedCode(body []byte) []byte { FILE: server/internal/handler/space_chain.go type deleteSpaceChainRequest (line 24) | type deleteSpaceChainRequest struct type disableSpaceChainBindingRequest (line 28) | type disableSpaceChainBindingRequest struct method createSpaceChain (line 33) | func (s *Server) createSpaceChain(w http.ResponseWriter, r *http.Request) { method getSpaceChain (line 51) | func (s *Server) getSpaceChain(w http.ResponseWriter, r *http.Request) { method getSpaceChainByKey (line 59) | func (s *Server) getSpaceChainByKey(w http.ResponseWriter, r *http.Reque... method updateSpaceChain (line 77) | func (s *Server) updateSpaceChain(w http.ResponseWriter, r *http.Request) { method deleteSpaceChain (line 94) | func (s *Server) deleteSpaceChain(w http.ResponseWriter, r *http.Request) { method listSpaceChainNodes (line 109) | func (s *Server) listSpaceChainNodes(w http.ResponseWriter, r *http.Requ... method replaceSpaceChainNodes (line 117) | func (s *Server) replaceSpaceChainNodes(w http.ResponseWriter, r *http.R... method listSpaceChainBindings (line 134) | func (s *Server) listSpaceChainBindings(w http.ResponseWriter, r *http.R... method createSpaceChainBinding (line 142) | func (s *Server) createSpaceChainBinding(w http.ResponseWriter, r *http.... method disableSpaceChainBinding (line 159) | func (s *Server) disableSpaceChainBinding(w http.ResponseWriter, r *http... method authorizeSpaceChainManagement (line 179) | func (s *Server) authorizeSpaceChainManagement(w http.ResponseWriter, r ... FILE: server/internal/handler/task.go constant maxUploadSize (line 20) | maxUploadSize = 50 << 20 constant maxAgentIDLength (line 23) | maxAgentIDLength = 100 type taskResponse (line 27) | type taskResponse struct type taskDetail (line 32) | type taskDetail struct type taskListResponse (line 41) | type taskListResponse struct method createTask (line 50) | func (s *Server) createTask(w http.ResponseWriter, r *http.Request) { method listTasks (line 192) | func (s *Server) listTasks(w http.ResponseWriter, r *http.Request) { method getTask (line 242) | func (s *Server) getTask(w http.ResponseWriter, r *http.Request) { function randomSuffix (line 281) | func randomSuffix(n int) string { function sanitizeFilename (line 287) | func sanitizeFilename(name string) (string, error) { FILE: server/internal/handler/tenant.go type provisionResponse (line 22) | type provisionResponse struct type keyStatusResponse (line 26) | type keyStatusResponse struct method provisionMem9s (line 30) | func (s *Server) provisionMem9s(w http.ResponseWriter, r *http.Request) { function normalizeUTMParams (line 44) | func normalizeUTMParams(values url.Values) map[string]string { method getKeyStatus (line 72) | func (s *Server) getKeyStatus(w http.ResponseWriter, r *http.Request) { method getTenantInfo (line 126) | func (s *Server) getTenantInfo(w http.ResponseWriter, r *http.Request) { FILE: server/internal/handler/tenant_test.go type handlerTenantRepo (line 23) | type handlerTenantRepo struct method Create (line 28) | func (r *handlerTenantRepo) Create(ctx context.Context, t *domain.Tena... method GetByID (line 32) | func (r *handlerTenantRepo) GetByID(ctx context.Context, id string) (*... method GetByName (line 42) | func (r *handlerTenantRepo) GetByName(ctx context.Context, name string... method UpdateStatus (line 46) | func (r *handlerTenantRepo) UpdateStatus(ctx context.Context, id strin... method UpdateSchemaVersion (line 50) | func (r *handlerTenantRepo) UpdateSchemaVersion(ctx context.Context, i... method TouchActivity (line 54) | func (r *handlerTenantRepo) TouchActivity(ctx context.Context, tenantI... method UpsertMemoryStats (line 58) | func (r *handlerTenantRepo) UpsertMemoryStats(ctx context.Context, ten... method CountActiveTenantsSince (line 62) | func (r *handlerTenantRepo) CountActiveTenantsSince(ctx context.Contex... method SumActiveMemoryStats (line 66) | func (r *handlerTenantRepo) SumActiveMemoryStats(ctx context.Context) ... type handlerProvisioner (line 70) | type handlerProvisioner struct method Provision (line 74) | func (p *handlerProvisioner) Provision(ctx context.Context) (*tenant.C... method InitSchema (line 78) | func (p *handlerProvisioner) InitSchema(ctx context.Context, db *sql.D... method ProviderType (line 82) | func (p *handlerProvisioner) ProviderType() string { type handlerPool (line 86) | type handlerPool struct method Backend (line 91) | func (p *handlerPool) Backend() string { method Get (line 95) | func (p *handlerPool) Get(ctx context.Context, tenantID, dsn string) (... function decodeHandlerLogs (line 99) | func decodeHandlerLogs(t *testing.T, buf *bytes.Buffer) []map[string]any { function findHandlerLogEntry (line 120) | func findHandlerLogEntry(t *testing.T, entries []map[string]any, message... function TestProvisionMem9s_FiltersUTMParamsAndKeepsResponseShape (line 133) | func TestProvisionMem9s_FiltersUTMParamsAndKeepsResponseShape(t *testing... function TestGetKeyStatus (line 203) | func TestGetKeyStatus(t *testing.T) { function TestNormalizeUTMParams_WithoutUTMReturnsNil (line 318) | func TestNormalizeUTMParams_WithoutUTMReturnsNil(t *testing.T) { FILE: server/internal/handler/version_test.go function TestVersionz_ReturnsStartedAt (line 10) | func TestVersionz_ReturnsStartedAt(t *testing.T) { FILE: server/internal/llm/client.go type Client (line 19) | type Client struct method Complete (line 169) | func (c *Client) Complete(ctx context.Context, system, user string) (s... method CompleteWithScope (line 173) | func (c *Client) CompleteWithScope(ctx context.Context, system, user s... method CompleteJSON (line 181) | func (c *Client) CompleteJSON(ctx context.Context, system, user string... method CompleteJSONWithScope (line 193) | func (c *Client) CompleteJSONWithScope(ctx context.Context, system, us... method complete (line 206) | func (c *Client) complete(ctx context.Context, system, user string, re... method doRequest (line 265) | func (c *Client) doRequest(ctx context.Context, cr chatRequest, scope ... method DebugLLM (line 369) | func (c *Client) DebugLLM() bool { type CallScope (line 28) | type CallScope struct method enabled (line 365) | func (s CallScope) enabled() bool { type Config (line 32) | type Config struct function New (line 40) | func New(cfg Config) *Client { type Message (line 65) | type Message struct type messageContent (line 74) | type messageContent struct method MarshalJSON (line 79) | func (m messageContent) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 86) | func (m *messageContent) UnmarshalJSON(data []byte) error { type contentBlock (line 98) | type contentBlock struct type cacheControl (line 104) | type cacheControl struct function plainContent (line 108) | func plainContent(s string) messageContent { function cachedContent (line 112) | func cachedContent(s string) messageContent { type responseFormat (line 122) | type responseFormat struct type chatRequest (line 126) | type chatRequest struct type chatResponse (line 135) | type chatResponse struct type HTTPStatusError (line 159) | type HTTPStatusError struct method Error (line 164) | func (e *HTTPStatusError) Error() string { function recordRetryMetric (line 258) | func recordRetryMetric(scope CallScope, reason string) { function disableThinkingOptions (line 373) | func disableThinkingOptions(model string) *bool { function supportsReasoningSplit (line 381) | func supportsReasoningSplit(model string) *bool { function supportsExplicitCache (line 392) | func supportsExplicitCache(model string) bool { function StripMarkdownFences (line 396) | func StripMarkdownFences(s string) string { function ParseJSON (line 404) | func ParseJSON[T any](raw string) (T, error) { FILE: server/internal/llm/client_test.go function TestNew (line 14) | func TestNew(t *testing.T) { function TestStripMarkdownFences (line 48) | func TestStripMarkdownFences(t *testing.T) { function TestParseJSON (line 71) | func TestParseJSON(t *testing.T) { function TestComplete (line 116) | func TestComplete(t *testing.T) { type roundTripFunc (line 509) | type roundTripFunc method RoundTrip (line 511) | func (f roundTripFunc) RoundTrip(r *http.Request) (*http.Response, err... FILE: server/internal/metering/config.go type Config (line 23) | type Config struct method withDefaults (line 39) | func (c Config) withDefaults() Config { constant defaultFlushInterval (line 33) | defaultFlushInterval = 10 * time.Second constant defaultChannelSize (line 34) | defaultChannelSize = 1024 FILE: server/internal/metering/console_writer.go type ConsoleRuntimeConfig (line 22) | type ConsoleRuntimeConfig struct type ConsoleEventStore (line 30) | type ConsoleEventStore interface constant consoleOutboxTimeout (line 37) | consoleOutboxTimeout = 2 * time.Second type consoleMeteringPayload (line 39) | type consoleMeteringPayload struct type consoleMeteringHashPayload (line 49) | type consoleMeteringHashPayload struct type consoleQueuedEvent (line 54) | type consoleQueuedEvent struct type consoleRuntimeWriter (line 60) | type consoleRuntimeWriter struct method Record (line 119) | func (w *consoleRuntimeWriter) Record(evt Event) { method Close (line 151) | func (w *consoleRuntimeWriter) Close(ctx context.Context) error { method makeQueuedEvent (line 182) | func (w *consoleRuntimeWriter) makeQueuedEvent(evt Event) (consoleQueu... method run (line 343) | func (w *consoleRuntimeWriter) run() { method deliver (line 357) | func (w *consoleRuntimeWriter) deliver(item consoleQueuedEvent) { method drainAndDeliver (line 373) | func (w *consoleRuntimeWriter) drainAndDeliver(ctx context.Context) { method shutdownContext (line 389) | func (w *consoleRuntimeWriter) shutdownContext() context.Context { method putEvent (line 398) | func (w *consoleRuntimeWriter) putEvent(ctx context.Context, item cons... method markDone (line 426) | func (w *consoleRuntimeWriter) markDone(item consoleQueuedEvent) { method markTerminalFailed (line 440) | func (w *consoleRuntimeWriter) markTerminalFailed(item consoleQueuedEv... method markRetryableFailure (line 462) | func (w *consoleRuntimeWriter) markRetryableFailure(item consoleQueued... method logInvalidEvent (line 477) | func (w *consoleRuntimeWriter) logInvalidEvent(evt Event, err error) { method maybeWarnFull (line 496) | func (w *consoleRuntimeWriter) maybeWarnFull() { function NewConsoleRuntime (line 81) | func NewConsoleRuntime(cfg ConsoleRuntimeConfig, logger *slog.Logger) (W... function newConsoleRuntimeWriter (line 102) | func newConsoleRuntimeWriter(cfg ConsoleRuntimeConfig, client httpDoer, ... function consoleAgentName (line 237) | func consoleAgentName(agentName string) string { function consoleMemoryIDs (line 244) | func consoleMemoryIDs(ids []string) []string { function consoleMetadata (line 269) | func consoleMetadata(metadata map[string]any) map[string]any { function sensitiveMetadataKey (line 321) | func sensitiveMetadataKey(key string) bool { function looksSensitive (line 332) | func looksSensitive(value string) bool { function consoleOutboxContext (line 492) | func consoleOutboxContext() (context.Context, context.CancelFunc) { FILE: server/internal/metering/gzip.go type gzipPool (line 17) | type gzipPool struct method compress (line 35) | func (p *gzipPool) compress(data []byte) ([]byte, error) { function newGzipPool (line 24) | func newGzipPool() *gzipPool { FILE: server/internal/metering/gzip_test.go function TestGzipPool_RoundTrip (line 10) | func TestGzipPool_RoundTrip(t *testing.T) { function TestGzipPool_Reuse (line 37) | func TestGzipPool_Reuse(t *testing.T) { FILE: server/internal/metering/path.go function minuteAlign (line 13) | func minuteAlign(ts int64) int64 { function buildKey (line 33) | func buildKey(prefix, category, tenantID, clusterID string, tsMinute int... function sprintfKey (line 51) | func sprintfKey(tsMinute int64, category, tenantID, cluster string, part... FILE: server/internal/metering/path_test.go function TestMinuteAlign (line 5) | func TestMinuteAlign(t *testing.T) { function TestBuildKey (line 26) | func TestBuildKey(t *testing.T) { FILE: server/internal/metering/s3_client.go type s3PutObjecter (line 14) | type s3PutObjecter interface function newS3Client (line 21) | func newS3Client(ctx context.Context) (*s3.Client, error) { FILE: server/internal/metering/s3_writer.go type s3Transport (line 13) | type s3Transport struct method Write (line 33) | func (w *s3Transport) Write(ctx context.Context, payload batchPayload)... function newS3Transport (line 20) | func newS3Transport(bucket, prefix string, client s3PutObjecter) *s3Tran... function newS3Writer (line 29) | func newS3Writer(cfg Config, client s3PutObjecter, logger *slog.Logger) ... FILE: server/internal/metering/transport_writer.go type batchTransport (line 12) | type batchTransport interface type batchKey (line 16) | type batchKey struct type batchPayload (line 23) | type batchPayload struct type queuedEvent (line 32) | type queuedEvent struct type transportWriter (line 39) | type transportWriter struct method Record (line 85) | func (w *transportWriter) Record(evt Event) { method makeQueuedEvent (line 99) | func (w *transportWriter) makeQueuedEvent(evt Event) queuedEvent { method maybeWarnFull (line 170) | func (w *transportWriter) maybeWarnFull() { method Close (line 182) | func (w *transportWriter) Close(ctx context.Context) error { method run (line 213) | func (w *transportWriter) run() { method shutdownContext (line 232) | func (w *transportWriter) shutdownContext() context.Context { method drainAndFlush (line 241) | func (w *transportWriter) drainAndFlush(ctx context.Context) { method enqueue (line 253) | func (w *transportWriter) enqueue(evt Event) { method enqueueQueued (line 257) | func (w *transportWriter) enqueueQueued(item queuedEvent) { method flushAll (line 274) | func (w *transportWriter) flushAll(ctx context.Context) { method pruneStaleParts (line 309) | func (w *transportWriter) pruneStaleParts(currentMinute int64) { method markPending (line 325) | func (w *transportWriter) markPending(key batchKey) { method releasePending (line 334) | func (w *transportWriter) releasePending(key batchKey) { function newTransportWriter (line 65) | func newTransportWriter(cfg Config, transport batchTransport, logger *sl... function deepCopyAny (line 123) | func deepCopyAny(v any) any { function deepCopyValue (line 130) | func deepCopyValue(v reflect.Value) reflect.Value { FILE: server/internal/metering/webhook_writer.go type httpDoer (line 19) | type httpDoer interface type webhookEvent (line 23) | type webhookEvent struct type webhookMetadata (line 31) | type webhookMetadata struct type webhookWriter (line 36) | type webhookWriter struct method Record (line 82) | func (w *webhookWriter) Record(evt Event) { method Close (line 94) | func (w *webhookWriter) Close(ctx context.Context) error { method run (line 125) | func (w *webhookWriter) run() { method deliver (line 139) | func (w *webhookWriter) deliver(item queuedEvent) { method drainAndDeliver (line 155) | func (w *webhookWriter) drainAndDeliver(ctx context.Context) { method shutdownContext (line 171) | func (w *webhookWriter) shutdownContext() context.Context { method makeQueuedEvent (line 180) | func (w *webhookWriter) makeQueuedEvent(evt Event) queuedEvent { method maybeWarnFull (line 204) | func (w *webhookWriter) maybeWarnFull() { method postEvent (line 216) | func (w *webhookWriter) postEvent(ctx context.Context, item queuedEven... method buildWebhookEvent (line 241) | func (w *webhookWriter) buildWebhookEvent(item queuedEvent) webhookEve... method logDeliveryError (line 273) | func (w *webhookWriter) logDeliveryError(item queuedEvent, err error) { function newWebhookWriter (line 59) | func newWebhookWriter(cfg Config, url string, client httpDoer, logger *s... function newWebhookEventID (line 78) | func newWebhookEventID() string { function splitWebhookEventData (line 255) | func splitWebhookEventData(fallbackType string, data map[string]any) (st... FILE: server/internal/metering/writer.go type Event (line 23) | type Event struct type Writer (line 44) | type Writer interface function New (line 64) | func New(ctx context.Context, cfg Config, logger *slog.Logger) (Writer, ... type noopWriter (line 100) | type noopWriter struct method Record (line 102) | func (noopWriter) Record(Event) {} method Close (line 103) | func (noopWriter) Close(context.Context) error { return nil } FILE: server/internal/metering/writer_test.go type fakePut (line 23) | type fakePut struct type fakeS3 (line 29) | type fakeS3 struct method PutObject (line 35) | func (f *fakeS3) PutObject(ctx context.Context, in *s3.PutObjectInput,... method snapshot (line 64) | func (f *fakeS3) snapshot() []fakePut { type s3Payload (line 72) | type s3Payload struct type webhookPayload (line 81) | type webhookPayload struct type fakeConsoleStore (line 89) | type fakeConsoleStore struct method UpsertMeteringPending (line 98) | func (s *fakeConsoleStore) UpsertMeteringPending(ctx context.Context, ... method MarkMeteringDone (line 106) | func (s *fakeConsoleStore) MarkMeteringDone(ctx context.Context, opera... method MarkMeteringTerminalFailed (line 114) | func (s *fakeConsoleStore) MarkMeteringTerminalFailed(ctx context.Cont... method MarkMeteringRetryableFailure (line 122) | func (s *fakeConsoleStore) MarkMeteringRetryableFailure(ctx context.Co... method recordDeadlineLocked (line 130) | func (s *fakeConsoleStore) recordDeadlineLocked(ctx context.Context) { method counts (line 136) | func (s *fakeConsoleStore) counts() (upserted, done, terminal, retry i... method noDeadlineCount (line 142) | func (s *fakeConsoleStore) noDeadlineCount() int { function newTestLogger (line 148) | func newTestLogger() (*slog.Logger, *bytes.Buffer) { function waitForConsoleStore (line 154) | func waitForConsoleStore(t *testing.T, store *fakeConsoleStore, wantDone... function waitForConsoleTerminal (line 168) | func waitForConsoleTerminal(t *testing.T, store *fakeConsoleStore, wantT... function decodePayload (line 182) | func decodePayload(t *testing.T, body []byte) s3Payload { function waitForOps (line 202) | func waitForOps(t *testing.T, f *fakeS3, want int, timeout time.Duration... function newManualTransportWriter (line 217) | func newManualTransportWriter(cfg Config, transport batchTransport, logg... function newManualWriter (line 231) | func newManualWriter(cfg Config, client s3PutObjecter, logger *slog.Logg... type blockingTransport (line 235) | type blockingTransport struct method Write (line 250) | func (t *blockingTransport) Write(ctx context.Context, payload batchPa... type noopTransport (line 242) | type noopTransport struct method Write (line 257) | func (noopTransport) Write(ctx context.Context, payload batchPayload) ... type retryAfterCancelTransport (line 244) | type retryAfterCancelTransport struct method Write (line 261) | func (t *retryAfterCancelTransport) Write(ctx context.Context, payload... method Attempts (line 275) | func (t *retryAfterCancelTransport) Attempts() int { function setConfigStringField (line 281) | func setConfigStringField(t *testing.T, cfg *Config, field, value string) { function TestNew_Disabled_ReturnsNoop (line 290) | func TestNew_Disabled_ReturnsNoop(t *testing.T) { function TestNew_EmptyURL_ReturnsNoop (line 304) | func TestNew_EmptyURL_ReturnsNoop(t *testing.T) { function TestNew_HTTPURL_PostsWebhookJSON (line 318) | func TestNew_HTTPURL_PostsWebhookJSON(t *testing.T) { function TestRecord_SingleEvent_Flushes (line 406) | func TestRecord_SingleEvent_Flushes(t *testing.T) { function TestRecord_Batches_MultipleEvents (line 440) | func TestRecord_Batches_MultipleEvents(t *testing.T) { function TestRecord_GroupsByKey_ProducesMultipleObjects (line 461) | func TestRecord_GroupsByKey_ProducesMultipleObjects(t *testing.T) { function TestFlush_IncrementsPart_WithinSameMinute (line 491) | func TestFlush_IncrementsPart_WithinSameMinute(t *testing.T) { function TestFlush_PrunesStalePartCounters (line 524) | func TestFlush_PrunesStalePartCounters(t *testing.T) { function TestPruneStaleParts_PreservesPendingOldMinuteBacklog (line 551) | func TestPruneStaleParts_PreservesPendingOldMinuteBacklog(t *testing.T) { function TestFlush_LossyOnError_LogsAndContinues (line 586) | func TestFlush_LossyOnError_LogsAndContinues(t *testing.T) { function TestRecord_ChannelFull_DoesNotBlock (line 607) | func TestRecord_ChannelFull_DoesNotBlock(t *testing.T) { function TestClose_CancelsPeriodicTransportWrite (line 631) | func TestClose_CancelsPeriodicTransportWrite(t *testing.T) { function TestClose_RetriesCanceledPeriodicBatchWithShutdownContext (line 660) | func TestClose_RetriesCanceledPeriodicBatchWithShutdownContext(t *testin... function TestRecord_CapturesTimestampBeforeDequeue (line 687) | func TestRecord_CapturesTimestampBeforeDequeue(t *testing.T) { function TestRecord_CopiesPayloadBeforeQueueingAsyncWrite (line 717) | func TestRecord_CopiesPayloadBeforeQueueingAsyncWrite(t *testing.T) { function TestRecord_DeepCopiesNestedPayloadBeforeQueueing (line 752) | func TestRecord_DeepCopiesNestedPayloadBeforeQueueing(t *testing.T) { function TestPruneStaleParts_PreservesBufferedOldMinuteBatch (line 807) | func TestPruneStaleParts_PreservesBufferedOldMinuteBatch(t *testing.T) { function TestClose_FlushesPending (line 836) | func TestClose_FlushesPending(t *testing.T) { function TestClose_Idempotent (line 856) | func TestClose_Idempotent(t *testing.T) { function TestClose_PropagatesDeadlineToTransportWrites (line 876) | func TestClose_PropagatesDeadlineToTransportWrites(t *testing.T) { function TestRecord_MalformedEvent_DroppedSilently (line 917) | func TestRecord_MalformedEvent_DroppedSilently(t *testing.T) { function TestConsoleRuntimeWriter_SendsConsoleShapeAndMarksDone (line 937) | func TestConsoleRuntimeWriter_SendsConsoleShapeAndMarksDone(t *testing.T) { function TestConsoleRuntimeWriter_ConflictMarksTerminalEvenWithDedupedBody (line 1020) | func TestConsoleRuntimeWriter_ConflictMarksTerminalEvenWithDedupedBody(t... function TestConsoleRuntimeWriter_PayloadHashIncludesAPIKeySubject (line 1059) | func TestConsoleRuntimeWriter_PayloadHashIncludesAPIKeySubject(t *testin... function TestConsoleRuntimeWriter_OmitsInvalidAgentNameAndCapsMemoryIDs (line 1090) | func TestConsoleRuntimeWriter_OmitsInvalidAgentNameAndCapsMemoryIDs(t *t... function TestGzipRoundTrip (line 1135) | func TestGzipRoundTrip(t *testing.T) { FILE: server/internal/metrics/metrics.go constant unmatchedRouteLabel (line 14) | unmatchedRouteLabel = "unmatched" function Middleware (line 220) | func Middleware(next http.Handler) http.Handler { function routeLabel (line 236) | func routeLabel(r *http.Request) string { FILE: server/internal/metrics/metrics_test.go function TestMiddlewareUsesRoutePatternForMatchedRoute (line 12) | func TestMiddlewareUsesRoutePatternForMatchedRoute(t *testing.T) { function TestMiddlewareUsesSingleLabelForUnmatchedRoutes (line 30) | func TestMiddlewareUsesSingleLabelForUnmatchedRoutes(t *testing.T) { function resetMetrics (line 59) | func resetMetrics() { function counterValue (line 64) | func counterValue(t *testing.T, method, route, status string) float64 { FILE: server/internal/middleware/auth.go type contextKey (line 21) | type contextKey constant authInfoKey (line 23) | authInfoKey contextKey = "authInfo" constant AgentIDHeader (line 25) | AgentIDHeader = "X-Mnemo-Agent-Id" constant APIKeyHeader (line 26) | APIKeyHeader = "X-API-Key" type tenantDBGetter (line 28) | type tenantDBGetter interface type authOption (line 33) | type authOption type authConfig (line 35) | type authConfig struct type AutoSpendLimitConfig (line 43) | type AutoSpendLimitConfig struct function WithSpendLimitAdjuster (line 50) | func WithSpendLimitAdjuster(adjuster tenant.SpendLimitAdjuster, cooldown... function WithSpaceChainRepo (line 58) | func WithSpaceChainRepo(chains repository.SpaceChainRepo) authOption { function isSpendLimitError (line 64) | func isSpendLimitError(err error) bool { function classifyConnError (line 68) | func classifyConnError(blacklist map[string]struct{}, clusterID string, ... function ResolveTenant (line 78) | func ResolveTenant( function ResolveApiKey (line 210) | func ResolveApiKey( function AuthFromContext (line 429) | func AuthFromContext(ctx context.Context) *domain.AuthInfo { function WithAuthContext (line 436) | func WithAuthContext(ctx context.Context, info *domain.AuthInfo) context... function writeError (line 440) | func writeError(w http.ResponseWriter, status int, msg string) { FILE: server/internal/middleware/auth_test.go type stubTenantRepo (line 25) | type stubTenantRepo struct method Create (line 29) | func (r stubTenantRepo) Create(context.Context, *domain.Tenant) error { method GetByID (line 33) | func (r stubTenantRepo) GetByID(_ context.Context, id string) (*domain... method GetByName (line 41) | func (r stubTenantRepo) GetByName(context.Context, string) (*domain.Te... method UpdateStatus (line 45) | func (r stubTenantRepo) UpdateStatus(context.Context, string, domain.T... method UpdateSchemaVersion (line 49) | func (r stubTenantRepo) UpdateSchemaVersion(context.Context, string, i... method TouchActivity (line 53) | func (r stubTenantRepo) TouchActivity(context.Context, string, time.Ti... method UpsertMemoryStats (line 57) | func (r stubTenantRepo) UpsertMemoryStats(context.Context, string, tim... method CountActiveTenantsSince (line 61) | func (r stubTenantRepo) CountActiveTenantsSince(context.Context, time.... method SumActiveMemoryStats (line 65) | func (r stubTenantRepo) SumActiveMemoryStats(context.Context) (int64, ... type pingOKConnector (line 69) | type pingOKConnector struct method Connect (line 71) | func (pingOKConnector) Connect(context.Context) (driver.Conn, error) { method Driver (line 75) | func (pingOKConnector) Driver() driver.Driver { type pingOKDriver (line 79) | type pingOKDriver struct method Open (line 81) | func (pingOKDriver) Open(string) (driver.Conn, error) { type pingOKConn (line 85) | type pingOKConn struct method Prepare (line 87) | func (pingOKConn) Prepare(string) (driver.Stmt, error) { method Close (line 91) | func (pingOKConn) Close() error { method Begin (line 95) | func (pingOKConn) Begin() (driver.Tx, error) { method Ping (line 99) | func (pingOKConn) Ping(context.Context) error { function TestResolveApiKey_MissingHeader (line 103) | func TestResolveApiKey_MissingHeader(t *testing.T) { function TestResolveApiKey_WhitespaceOnlyHeader (line 125) | func TestResolveApiKey_WhitespaceOnlyHeader(t *testing.T) { function TestResolveApiKey_InvalidKey (line 148) | func TestResolveApiKey_InvalidKey(t *testing.T) { function TestResolveApiKey_TrimsHeaderValue (line 171) | func TestResolveApiKey_TrimsHeaderValue(t *testing.T) { function TestResolveApiKey_InactiveTenant (line 216) | func TestResolveApiKey_InactiveTenant(t *testing.T) { function TestResolveApiKey_DeletedAtRejectsKey (line 248) | func TestResolveApiKey_DeletedAtRejectsKey(t *testing.T) { function TestResolveApiKey_PopulatesAuthInfo (line 282) | func TestResolveApiKey_PopulatesAuthInfo(t *testing.T) { function TestResolveApiKey_PreservesAPIKeySubject (line 334) | func TestResolveApiKey_PreservesAPIKeySubject(t *testing.T) { function TestResolveApiKey_MD5Encryptor_DecryptsPassword (line 382) | func TestResolveApiKey_MD5Encryptor_DecryptsPassword(t *testing.T) { function TestResolveTenant_Success (line 434) | func TestResolveTenant_Success(t *testing.T) { function TestResolveTenant_DecryptFailure_Returns500 (line 496) | func TestResolveTenant_DecryptFailure_Returns500(t *testing.T) { function TestResolveApiKey_MD5DecryptFailure_Returns500 (line 541) | func TestResolveApiKey_MD5DecryptFailure_Returns500(t *testing.T) { function cacheTenantDB (line 580) | func cacheTenantDB(t *testing.T, pool *tenant.TenantPool, tenantID strin... function setUnexportedField (line 596) | func setUnexportedField(field reflect.Value, value reflect.Value) { type stubPool (line 600) | type stubPool struct method Get (line 605) | func (s stubPool) Get(_ context.Context, _ string, _ string) (*sql.DB,... method Backend (line 609) | func (s stubPool) Backend() string { return "tidb" } function TestIsSpendLimitError (line 613) | func TestIsSpendLimitError(t *testing.T) { function TestResolveApiKey_BlacklistedCluster_SpendLimit_Returns429 (line 630) | func TestResolveApiKey_BlacklistedCluster_SpendLimit_Returns429(t *testi... function TestResolveApiKey_BlacklistedCluster_OtherError_Returns503 (line 664) | func TestResolveApiKey_BlacklistedCluster_OtherError_Returns503(t *testi... function TestResolveApiKey_BlacklistedCluster_Success (line 695) | func TestResolveApiKey_BlacklistedCluster_Success(t *testing.T) { function TestResolveTenant_BlacklistedCluster_SpendLimit_Returns429 (line 733) | func TestResolveTenant_BlacklistedCluster_SpendLimit_Returns429(t *testi... type mockSpendLimitAdjuster (line 772) | type mockSpendLimitAdjuster struct method GetSpendLimit (line 777) | func (m *mockSpendLimitAdjuster) GetSpendLimit(ctx context.Context, cl... method IncreaseSpendLimit (line 781) | func (m *mockSpendLimitAdjuster) IncreaseSpendLimit(ctx context.Contex... type autoSpendLimitTracker (line 785) | type autoSpendLimitTracker struct method markGet (line 801) | func (t *autoSpendLimitTracker) markGet() { method markIncrease (line 811) | func (t *autoSpendLimitTracker) markIncrease(monthlyCents int) { method snapshot (line 822) | func (t *autoSpendLimitTracker) snapshot() (int, int, int) { function newAutoSpendLimitTracker (line 794) | func newAutoSpendLimitTracker() *autoSpendLimitTracker { function autoSpendLimitCfg (line 828) | func autoSpendLimitCfg(enabled bool) AutoSpendLimitConfig { function autoSpendLimitStarterTenant (line 832) | func autoSpendLimitStarterTenant(id, clusterID string) *domain.Tenant { function autoSpendLimitZeroTenant (line 841) | func autoSpendLimitZeroTenant(id, clusterID string) *domain.Tenant { function autoSpendLimitResolveTenantRequest (line 850) | func autoSpendLimitResolveTenantRequest(tenantID string) *http.Request { function autoSpendLimitResolveApiKeyRequest (line 860) | func autoSpendLimitResolveApiKeyRequest(tenantID string) *http.Request { function autoSpendLimitRequestHandler (line 866) | func autoSpendLimitRequestHandler(t *testing.T) http.Handler { function autoSpendLimitServe (line 873) | func autoSpendLimitServe( function autoSpendLimitCases (line 890) | func autoSpendLimitCases() []struct { function runAutoSpendLimitCases (line 1021) | func runAutoSpendLimitCases( function TestResolveTenant_AutoSpendLimit (line 1081) | func TestResolveTenant_AutoSpendLimit(t *testing.T) { function TestResolveApiKey_AutoSpendLimit (line 1087) | func TestResolveApiKey_AutoSpendLimit(t *testing.T) { FILE: server/internal/middleware/cooldown.go type SpendLimitCooldown (line 8) | type SpendLimitCooldown struct method TryStartRaise (line 23) | func (c *SpendLimitCooldown) TryStartRaise(clusterID string) bool { method RecordSuccess (line 39) | func (c *SpendLimitCooldown) RecordSuccess(clusterID string) { method RecordFailure (line 47) | func (c *SpendLimitCooldown) RecordFailure(clusterID string) { function NewSpendLimitCooldown (line 15) | func NewSpendLimitCooldown(interval time.Duration) *SpendLimitCooldown { FILE: server/internal/middleware/ratelimit.go type visitor (line 13) | type visitor struct type RateLimiter (line 22) | type RateLimiter struct method Stop (line 43) | func (rl *RateLimiter) Stop() { method Middleware (line 48) | func (rl *RateLimiter) Middleware() func(http.Handler) http.Handler { method getLimiter (line 77) | func (rl *RateLimiter) getLimiter(key string) *rate.Limiter { method cleanup (line 92) | func (rl *RateLimiter) cleanup() { function NewRateLimiter (line 31) | func NewRateLimiter(rps float64, burst int) *RateLimiter { FILE: server/internal/middleware/ratelimit_test.go function TestRateLimiterUsesAPIKeyHeaderForV1Alpha2 (line 11) | func TestRateLimiterUsesAPIKeyHeaderForV1Alpha2(t *testing.T) { FILE: server/internal/repository/db9/db9.go function NewDB (line 11) | func NewDB(dsn string) (*sql.DB, error) { FILE: server/internal/repository/db9/memory.go type DB9MemoryRepo (line 19) | type DB9MemoryRepo struct method Create (line 46) | func (r *DB9MemoryRepo) Create(ctx context.Context, m *domain.Memory) ... method UpdateOptimistic (line 73) | func (r *DB9MemoryRepo) UpdateOptimistic(ctx context.Context, m *domai... method BulkCreate (line 102) | func (r *DB9MemoryRepo) BulkCreate(ctx context.Context, memories []*do... method ArchiveAndCreate (line 139) | func (r *DB9MemoryRepo) ArchiveAndCreate(ctx context.Context, archiveI... method AutoVectorSearch (line 185) | func (r *DB9MemoryRepo) AutoVectorSearch(ctx context.Context, queryTex... method FTSSearch (line 237) | func (r *DB9MemoryRepo) FTSSearch(ctx context.Context, query string, f... method NearDupSearch (line 417) | func (r *DB9MemoryRepo) NearDupSearch(ctx context.Context, queryText s... function NewMemoryRepo (line 30) | func NewMemoryRepo(db *sql.DB, autoModel string, ftsEnabled bool, cluste... constant allColumns (line 42) | allColumns = `id, content, source, tags, metadata, embedding, memory_typ... function scanMemoryRowsWithDistance (line 297) | func scanMemoryRowsWithDistance(rows *sql.Rows) (*domain.Memory, error) { function scanMemoryRowsWithFTSScore (line 333) | func scanMemoryRowsWithFTSScore(rows *sql.Rows) (*domain.Memory, error) { function marshalTags (line 367) | func marshalTags(tags []string) []byte { function unmarshalTags (line 378) | func unmarshalTags(data []byte) []string { function unmarshalRawJSON (line 389) | func unmarshalRawJSON(data []byte) json.RawMessage { function nullString (line 396) | func nullString(s string) sql.NullString { function nullJSON (line 403) | func nullJSON(data json.RawMessage) any { function isDuplicateKey (line 410) | func isDuplicateKey(err error) bool { FILE: server/internal/repository/db9/space_chain.go function NewSpaceChainRepo (line 11) | func NewSpaceChainRepo(db *sql.DB) *postgres.SpaceChainRepoImpl { FILE: server/internal/repository/db9/tenant.go function NewTenantRepo (line 11) | func NewTenantRepo(db *sql.DB) *postgres.TenantRepoImpl { FILE: server/internal/repository/db9/upload_task.go type UploadTaskRepoImpl (line 12) | type UploadTaskRepoImpl struct method Create (line 41) | func (r *UploadTaskRepoImpl) Create(ctx context.Context, task *domain.... method GetByID (line 55) | func (r *UploadTaskRepoImpl) GetByID(ctx context.Context, taskID strin... method ListByTenant (line 62) | func (r *UploadTaskRepoImpl) ListByTenant(ctx context.Context, tenantI... method UpdateStatus (line 85) | func (r *UploadTaskRepoImpl) UpdateStatus(ctx context.Context, taskID ... method UpdateProgress (line 96) | func (r *UploadTaskRepoImpl) UpdateProgress(ctx context.Context, taskI... method UpdateTotalChunks (line 107) | func (r *UploadTaskRepoImpl) UpdateTotalChunks(ctx context.Context, ta... method FetchPending (line 118) | func (r *UploadTaskRepoImpl) FetchPending(ctx context.Context, limit i... method ResetProcessing (line 170) | func (r *UploadTaskRepoImpl) ResetProcessing(ctx context.Context, stal... function NewUploadTaskRepo (line 16) | func NewUploadTaskRepo(db *sql.DB) *UploadTaskRepoImpl { constant uploadTaskColumns (line 20) | uploadTaskColumns = `task_id, tenant_id, file_name, file_path, agent_id,... constant defaultFetchPendingLimit (line 23) | defaultFetchPendingLimit = 10 constant maxFetchPendingLimit (line 24) | maxFetchPendingLimit = 100 function clampFetchPendingLimit (line 27) | func clampFetchPendingLimit(limit int) int { function buildFetchPendingQuery (line 37) | func buildFetchPendingQuery(limit int) string { function scanUploadTask (line 182) | func scanUploadTask(row *sql.Row) (*domain.UploadTask, error) { function scanUploadTaskRow (line 202) | func scanUploadTaskRow(rows *sql.Rows) (*domain.UploadTask, error) { function toNullString (line 219) | func toNullString(value string) sql.NullString { FILE: server/internal/repository/db9/upload_task_test.go function TestBuildFetchPendingQueryUsesClampedInlineLimit (line 9) | func TestBuildFetchPendingQueryUsesClampedInlineLimit(t *testing.T) { FILE: server/internal/repository/factory.go function NewDB (line 15) | func NewDB(backend, dsn string) (*sql.DB, error) { function NewTenantRepo (line 29) | func NewTenantRepo(backend string, db *sql.DB) TenantRepo { function NewSpaceChainRepo (line 41) | func NewSpaceChainRepo(backend string, db *sql.DB) SpaceChainRepo { function NewUploadTaskRepo (line 53) | func NewUploadTaskRepo(backend string, db *sql.DB) UploadTaskRepo { function NewUTMRepo (line 66) | func NewUTMRepo(backend string, db *sql.DB) UTMRepo { type stubUTMRepo (line 76) | type stubUTMRepo struct method Create (line 78) | func (stubUTMRepo) Create(_ context.Context, _ *domain.TenantUTM) erro... function NewMemoryRepo (line 81) | func NewMemoryRepo(backend string, db *sql.DB, autoModel string, ftsEnab... function NewSessionRepo (line 95) | func NewSessionRepo(backend string, db *sql.DB, autoModel string, ftsEna... type stubSessionRepo (line 108) | type stubSessionRepo struct method BulkCreate (line 110) | func (stubSessionRepo) BulkCreate(_ context.Context, _ []*domain.Sessi... method PatchTags (line 111) | func (stubSessionRepo) PatchTags(_ context.Context, _, _ string, _ []s... method AutoVectorSearch (line 114) | func (stubSessionRepo) AutoVectorSearch(_ context.Context, _ string, _... method VectorSearch (line 117) | func (stubSessionRepo) VectorSearch(_ context.Context, _ []float32, _ ... method FTSSearch (line 120) | func (stubSessionRepo) FTSSearch(_ context.Context, _ string, _ domain... method KeywordSearch (line 123) | func (stubSessionRepo) KeywordSearch(_ context.Context, _ string, _ do... method FTSAvailable (line 126) | func (stubSessionRepo) FTSAvailable() bool { return false } method ListBySessionIDs (line 127) | func (stubSessionRepo) ListBySessionIDs(_ context.Context, _ []string,... FILE: server/internal/repository/postgres/memory.go type MemoryRepo (line 17) | type MemoryRepo struct method FTSAvailable (line 32) | func (r *MemoryRepo) FTSAvailable() bool { return r.ftsAvailable.Load() } method Create (line 36) | func (r *MemoryRepo) Create(ctx context.Context, m *domain.Memory) err... method GetByID (line 55) | func (r *MemoryRepo) GetByID(ctx context.Context, id string) (*domain.... method UpdateOptimistic (line 62) | func (r *MemoryRepo) UpdateOptimistic(ctx context.Context, m *domain.M... method SoftDelete (line 85) | func (r *MemoryRepo) SoftDelete(ctx context.Context, id, agentName str... method BulkSoftDelete (line 121) | func (r *MemoryRepo) BulkSoftDelete(ctx context.Context, ids []string,... method ArchiveMemory (line 145) | func (r *MemoryRepo) ArchiveMemory(ctx context.Context, id, superseded... method ArchiveAndCreate (line 160) | func (r *MemoryRepo) ArchiveAndCreate(ctx context.Context, archiveID, ... method SetState (line 199) | func (r *MemoryRepo) SetState(ctx context.Context, id string, state do... method List (line 213) | func (r *MemoryRepo) List(ctx context.Context, f domain.MemoryFilter) ... method Count (line 259) | func (r *MemoryRepo) Count(ctx context.Context) (int, error) { method ListBootstrap (line 271) | func (r *MemoryRepo) ListBootstrap(ctx context.Context, limit int) ([]... method BulkCreate (line 296) | func (r *MemoryRepo) BulkCreate(ctx context.Context, memories []*domai... method VectorSearch (line 327) | func (r *MemoryRepo) VectorSearch(ctx context.Context, queryVec []floa... method AutoVectorSearch (line 371) | func (r *MemoryRepo) AutoVectorSearch(ctx context.Context, queryText s... method KeywordSearch (line 376) | func (r *MemoryRepo) KeywordSearch(ctx context.Context, query string, ... method FTSSearch (line 408) | func (r *MemoryRepo) FTSSearch(ctx context.Context, query string, f do... method buildWhere (line 444) | func (r *MemoryRepo) buildWhere(f domain.MemoryFilter) (string, []any) { method BuildFilterConds (line 454) | func (r *MemoryRepo) BuildFilterConds(f domain.MemoryFilter) ([]string... method NearDupSearch (line 707) | func (r *MemoryRepo) NearDupSearch(_ context.Context, _ string) (strin... method CountStats (line 711) | func (r *MemoryRepo) CountStats(ctx context.Context) (total int64, las... function NewMemoryRepo (line 23) | func NewMemoryRepo(db *sql.DB, ftsEnabled bool, clusterID string) *Memor... constant allColumns (line 34) | allColumns = `id, content, source, tags, metadata, embedding, memory_typ... function scanMemory (line 518) | func scanMemory(row *sql.Row) (*domain.Memory, error) { function scanMemoryRows (line 551) | func scanMemoryRows(rows *sql.Rows) (*domain.Memory, error) { function scanMemoryRowsWithDistance (line 581) | func scanMemoryRowsWithDistance(rows *sql.Rows) (*domain.Memory, error) { function scanMemoryRowsWithFTSScore (line 615) | func scanMemoryRowsWithFTSScore(rows *sql.Rows) (*domain.Memory, error) { function marshalTags (line 648) | func marshalTags(tags []string) []byte { function unmarshalTags (line 659) | func unmarshalTags(data []byte) []string { function unmarshalRawJSON (line 670) | func unmarshalRawJSON(data []byte) json.RawMessage { function nullString (line 677) | func nullString(s string) sql.NullString { function nullJSON (line 684) | func nullJSON(data json.RawMessage) any { function vecToParam (line 692) | func vecToParam(embedding []float32) any { function isDuplicateKey (line 700) | func isDuplicateKey(err error) bool { FILE: server/internal/repository/postgres/postgres.go function NewDB (line 12) | func NewDB(dsn string) (*sql.DB, error) { FILE: server/internal/repository/postgres/space_chain.go type SpaceChainRepoImpl (line 11) | type SpaceChainRepoImpl struct method Create (line 19) | func (r *SpaceChainRepoImpl) Create(ctx context.Context, chain *domain... method GetByID (line 48) | func (r *SpaceChainRepoImpl) GetByID(ctx context.Context, id string) (... method GetByKey (line 64) | func (r *SpaceChainRepoImpl) GetByKey(ctx context.Context, key string)... method GetByKeyIncludingDisabled (line 82) | func (r *SpaceChainRepoImpl) GetByKeyIncludingDisabled(ctx context.Con... method Update (line 100) | func (r *SpaceChainRepoImpl) Update(ctx context.Context, chain *domain... method SoftDelete (line 120) | func (r *SpaceChainRepoImpl) SoftDelete(ctx context.Context, id, delet... method CreateBinding (line 140) | func (r *SpaceChainRepoImpl) CreateBinding(ctx context.Context, bindin... method ListBindings (line 152) | func (r *SpaceChainRepoImpl) ListBindings(ctx context.Context, chainID... method DisableBinding (line 167) | func (r *SpaceChainRepoImpl) DisableBinding(ctx context.Context, chain... method ListNodes (line 187) | func (r *SpaceChainRepoImpl) ListNodes(ctx context.Context, chainID st... method ReplaceNodes (line 202) | func (r *SpaceChainRepoImpl) ReplaceNodes(ctx context.Context, chainID... method RemoveNodeByExternalSpaceID (line 227) | func (r *SpaceChainRepoImpl) RemoveNodeByExternalSpaceID(ctx context.C... method KeyStatus (line 241) | func (r *SpaceChainRepoImpl) KeyStatus(ctx context.Context, key string... method hydrate (line 263) | func (r *SpaceChainRepoImpl) hydrate(ctx context.Context, chain *domai... function NewSpaceChainRepo (line 15) | func NewSpaceChainRepo(db *sql.DB) *SpaceChainRepoImpl { function scanSpaceChain (line 277) | func scanSpaceChain(row *sql.Row) (*domain.SpaceChain, error) { function scanSpaceChainBindings (line 297) | func scanSpaceChainBindings(rows *sql.Rows) ([]domain.SpaceChainBinding,... function scanSpaceChainNodes (line 319) | func scanSpaceChainNodes(rows *sql.Rows) ([]domain.SpaceChainNode, error) { FILE: server/internal/repository/postgres/tenant.go type TenantRepoImpl (line 12) | type TenantRepoImpl struct method Create (line 20) | func (r *TenantRepoImpl) Create(ctx context.Context, t *domain.Tenant)... method GetByID (line 33) | func (r *TenantRepoImpl) GetByID(ctx context.Context, id string) (*dom... method GetByName (line 42) | func (r *TenantRepoImpl) GetByName(ctx context.Context, name string) (... method UpdateStatus (line 51) | func (r *TenantRepoImpl) UpdateStatus(ctx context.Context, id string, ... method UpdateSchemaVersion (line 62) | func (r *TenantRepoImpl) UpdateSchemaVersion(ctx context.Context, id s... method TouchActivity (line 73) | func (r *TenantRepoImpl) TouchActivity(ctx context.Context, tenantID s... method UpsertMemoryStats (line 87) | func (r *TenantRepoImpl) UpsertMemoryStats(ctx context.Context, tenant... method CountActiveTenantsSince (line 113) | func (r *TenantRepoImpl) CountActiveTenantsSince(ctx context.Context, ... method SumActiveMemoryStats (line 131) | func (r *TenantRepoImpl) SumActiveMemoryStats(ctx context.Context) (to... function NewTenantRepo (line 16) | func NewTenantRepo(db *sql.DB) *TenantRepoImpl { function scanTenant (line 147) | func scanTenant(row *sql.Row) (*domain.Tenant, error) { function nullTime (line 172) | func nullTime(t *time.Time) sql.NullTime { FILE: server/internal/repository/postgres/upload_task.go type UploadTaskRepoImpl (line 12) | type UploadTaskRepoImpl struct method Create (line 22) | func (r *UploadTaskRepoImpl) Create(ctx context.Context, task *domain.... method GetByID (line 36) | func (r *UploadTaskRepoImpl) GetByID(ctx context.Context, taskID strin... method ListByTenant (line 43) | func (r *UploadTaskRepoImpl) ListByTenant(ctx context.Context, tenantI... method UpdateStatus (line 66) | func (r *UploadTaskRepoImpl) UpdateStatus(ctx context.Context, taskID ... method UpdateProgress (line 77) | func (r *UploadTaskRepoImpl) UpdateProgress(ctx context.Context, taskI... method UpdateTotalChunks (line 88) | func (r *UploadTaskRepoImpl) UpdateTotalChunks(ctx context.Context, ta... method FetchPending (line 99) | func (r *UploadTaskRepoImpl) FetchPending(ctx context.Context, limit i... method ResetProcessing (line 147) | func (r *UploadTaskRepoImpl) ResetProcessing(ctx context.Context, stal... function NewUploadTaskRepo (line 16) | func NewUploadTaskRepo(db *sql.DB) *UploadTaskRepoImpl { constant uploadTaskColumns (line 20) | uploadTaskColumns = `task_id, tenant_id, file_name, file_path, agent_id,... function scanUploadTask (line 159) | func scanUploadTask(row *sql.Row) (*domain.UploadTask, error) { function scanUploadTaskRow (line 179) | func scanUploadTaskRow(rows *sql.Rows) (*domain.UploadTask, error) { function toNullString (line 196) | func toNullString(value string) sql.NullString { FILE: server/internal/repository/repository.go type MemoryRepo (line 11) | type MemoryRepo interface type TenantRepo (line 51) | type TenantRepo interface type SpaceChainRepo (line 64) | type SpaceChainRepo interface type UploadTaskRepo (line 84) | type UploadTaskRepo interface type UTMRepo (line 96) | type UTMRepo interface type SessionRepo (line 104) | type SessionRepo interface FILE: server/internal/repository/tidb/fts_test.go function TestMemoryFTSSearch_PostFiltersAfterFTSTopK (line 19) | func TestMemoryFTSSearch_PostFiltersAfterFTSTopK(t *testing.T) { function TestSessionFTSSearch_PostFiltersAfterFTSTopK (line 99) | func TestSessionFTSSearch_PostFiltersAfterFTSTopK(t *testing.T) { type queryExpectation (line 185) | type queryExpectation struct type scriptedDriver (line 193) | type scriptedDriver struct method Open (line 208) | func (d *scriptedDriver) Open(string) (driver.Conn, error) { type scriptedConn (line 197) | type scriptedConn struct method Prepare (line 212) | func (c *scriptedConn) Prepare(string) (driver.Stmt, error) { method Close (line 216) | func (c *scriptedConn) Close() error { return nil } method Begin (line 218) | func (c *scriptedConn) Begin() (driver.Tx, error) { method QueryContext (line 222) | func (c *scriptedConn) QueryContext(_ context.Context, query string, a... type queryScript (line 201) | type queryScript struct method query (line 264) | func (s *queryScript) query(query string, args []driver.NamedValue) (d... method assertDone (line 303) | func (s *queryScript) assertDone() { type scriptedRows (line 226) | type scriptedRows struct method Columns (line 232) | func (r *scriptedRows) Columns() []string { return r.columns } method Close (line 234) | func (r *scriptedRows) Close() error { return nil } method Next (line 236) | func (r *scriptedRows) Next(dest []driver.Value) error { function newScriptedTestDB (line 245) | func newScriptedTestDB(t *testing.T, expectations []*queryExpectation) *... function normalizeDriverValue (line 312) | func normalizeDriverValue(v any) any { function memoryColumns (line 339) | func memoryColumns() []string { function memoryColumnsWithFTSScore (line 346) | func memoryColumnsWithFTSScore() []string { function memoryRow (line 351) | func memoryRow(id, content, agentID, sessionID, state string, tags []byt... function memoryRowWithFTSScore (line 371) | func memoryRowWithFTSScore(id, content, agentID, sessionID, state string... function sessionColumns (line 376) | func sessionColumns() []string { function sessionColumnsWithFTSScore (line 382) | func sessionColumnsWithFTSScore() []string { function sessionRow (line 387) | func sessionRow(id, sessionID, agentID, source string, seq int64, role, ... function sessionRowWithFTSScore (line 403) | func sessionRowWithFTSScore(id, sessionID, agentID, source string, seq i... FILE: server/internal/repository/tidb/memory.go type MemoryRepo (line 19) | type MemoryRepo struct method FTSAvailable (line 35) | func (r *MemoryRepo) FTSAvailable() bool { return r.ftsAvailable.Load() } method Create (line 39) | func (r *MemoryRepo) Create(ctx context.Context, m *domain.Memory) err... method GetByID (line 71) | func (r *MemoryRepo) GetByID(ctx context.Context, id string) (*domain.... method UpdateOptimistic (line 78) | func (r *MemoryRepo) UpdateOptimistic(ctx context.Context, m *domain.M... method SoftDelete (line 108) | func (r *MemoryRepo) SoftDelete(ctx context.Context, id, agentName str... method BulkSoftDelete (line 148) | func (r *MemoryRepo) BulkSoftDelete(ctx context.Context, ids []string,... method ArchiveMemory (line 172) | func (r *MemoryRepo) ArchiveMemory(ctx context.Context, id, superseded... method ArchiveAndCreate (line 187) | func (r *MemoryRepo) ArchiveAndCreate(ctx context.Context, archiveID, ... method SetState (line 236) | func (r *MemoryRepo) SetState(ctx context.Context, id string, state do... method List (line 250) | func (r *MemoryRepo) List(ctx context.Context, f domain.MemoryFilter) ... method Count (line 296) | func (r *MemoryRepo) Count(ctx context.Context) (int, error) { method ListBootstrap (line 308) | func (r *MemoryRepo) ListBootstrap(ctx context.Context, limit int) ([]... method BulkCreate (line 333) | func (r *MemoryRepo) BulkCreate(ctx context.Context, memories []*domai... method VectorSearch (line 388) | func (r *MemoryRepo) VectorSearch(ctx context.Context, queryVec []floa... method AutoVectorSearch (line 434) | func (r *MemoryRepo) AutoVectorSearch(ctx context.Context, queryText s... method KeywordSearch (line 475) | func (r *MemoryRepo) KeywordSearch(ctx context.Context, query string, ... method FTSSearch (line 526) | func (r *MemoryRepo) FTSSearch(ctx context.Context, query string, f do... method ftsSearchWithPostFilter (line 542) | func (r *MemoryRepo) ftsSearchWithPostFilter(ctx context.Context, quer... method fetchMemoryFTSCandidates (line 575) | func (r *MemoryRepo) fetchMemoryFTSCandidates(ctx context.Context, saf... method fetchFilteredFTSMemories (line 602) | func (r *MemoryRepo) fetchFilteredFTSMemories(ctx context.Context, can... method filteredFTSSearch (line 653) | func (r *MemoryRepo) filteredFTSSearch(ctx context.Context, safeQ, whe... method buildWhere (line 684) | func (r *MemoryRepo) buildWhere(f domain.MemoryFilter) (string, []any) { method buildFilterConds (line 694) | func (r *MemoryRepo) buildFilterConds(f domain.MemoryFilter) ([]string... method NearDupSearch (line 963) | func (r *MemoryRepo) NearDupSearch(ctx context.Context, queryText stri... method CountStats (line 988) | func (r *MemoryRepo) CountStats(ctx context.Context) (total int64, las... function NewMemoryRepo (line 26) | func NewMemoryRepo(db *sql.DB, autoModel string, ftsEnabled bool, cluste... constant allColumns (line 37) | allColumns = `id, content, source, tags, metadata, embedding, memory_typ... function ftsSafeLiteral (line 514) | func ftsSafeLiteral(s string) string { type memoryFTSCandidate (line 537) | type memoryFTSCandidate struct function scanMemory (line 749) | func scanMemory(row *sql.Row) (*domain.Memory, error) { function scanMemoryRows (line 782) | func scanMemoryRows(rows *sql.Rows) (*domain.Memory, error) { function scanMemoryRowsWithDistance (line 812) | func scanMemoryRowsWithDistance(rows *sql.Rows) (*domain.Memory, error) { function scanMemoryRowsWithFTSScore (line 847) | func scanMemoryRowsWithFTSScore(rows *sql.Rows) (*domain.Memory, error) { function marshalTags (line 879) | func marshalTags(tags []string) []byte { function unmarshalTags (line 890) | func unmarshalTags(data []byte) []string { function unmarshalRawJSON (line 901) | func unmarshalRawJSON(data []byte) json.RawMessage { function nullString (line 908) | func nullString(s string) sql.NullString { function nullJSON (line 916) | func nullJSON(data json.RawMessage) any { function parseVecString (line 926) | func parseVecString(b []byte) []float32 { function vecToString (line 947) | func vecToString(embedding []float32) any { FILE: server/internal/repository/tidb/memory_integration_test.go function TestCreate (line 15) | func TestCreate(t *testing.T) { function TestCreateDuplicateID (line 46) | func TestCreateDuplicateID(t *testing.T) { function TestGetByID (line 62) | func TestGetByID(t *testing.T) { function TestGetByIDDeletedState (line 87) | func TestGetByIDDeletedState(t *testing.T) { function TestUpdateOptimistic (line 107) | func TestUpdateOptimistic(t *testing.T) { function TestSoftDelete (line 143) | func TestSoftDelete(t *testing.T) { function TestArchiveMemory (line 179) | func TestArchiveMemory(t *testing.T) { function TestSetState (line 210) | func TestSetState(t *testing.T) { function TestList (line 251) | func TestList(t *testing.T) { function TestCount (line 418) | func TestCount(t *testing.T) { function TestBulkCreate (line 454) | func TestBulkCreate(t *testing.T) { function TestKeywordSearch (line 491) | func TestKeywordSearch(t *testing.T) { function TestListBootstrap (line 547) | func TestListBootstrap(t *testing.T) { FILE: server/internal/repository/tidb/sessions.go type SessionRepo (line 19) | type SessionRepo struct method FTSAvailable (line 32) | func (r *SessionRepo) FTSAvailable() bool { return r.ftsAvailable.Load... method BulkCreate (line 34) | func (r *SessionRepo) BulkCreate(ctx context.Context, sessions []*doma... method PatchTags (line 93) | func (r *SessionRepo) PatchTags(ctx context.Context, sessionID, conten... method buildSessionFilterConds (line 105) | func (r *SessionRepo) buildSessionFilterConds(f domain.MemoryFilter) (... method AutoVectorSearch (line 144) | func (r *SessionRepo) AutoVectorSearch(ctx context.Context, query stri... method VectorSearch (line 179) | func (r *SessionRepo) VectorSearch(ctx context.Context, queryVec []flo... method FTSSearch (line 219) | func (r *SessionRepo) FTSSearch(ctx context.Context, query string, f d... method ftsSearchWithPostFilter (line 238) | func (r *SessionRepo) ftsSearchWithPostFilter(ctx context.Context, que... method fetchSessionFTSCandidates (line 271) | func (r *SessionRepo) fetchSessionFTSCandidates(ctx context.Context, s... method fetchFilteredFTSSessions (line 298) | func (r *SessionRepo) fetchFilteredFTSSessions(ctx context.Context, ca... method filteredFTSSearch (line 348) | func (r *SessionRepo) filteredFTSSearch(ctx context.Context, safeQ, wh... method KeywordSearch (line 369) | func (r *SessionRepo) KeywordSearch(ctx context.Context, query string,... method ListBySessionIDs (line 504) | func (r *SessionRepo) ListBySessionIDs(ctx context.Context, sessionIDs... function NewSessionRepo (line 26) | func NewSessionRepo(db *sql.DB, autoModel string, ftsEnabled bool, clust... type sessionFTSCandidate (line 233) | type sessionFTSCandidate struct function scanSessionRows (line 402) | func scanSessionRows(rows *sql.Rows) ([]domain.Memory, error) { function scanSessionRowsWithDistance (line 414) | func scanSessionRowsWithDistance(rows *sql.Rows) ([]domain.Memory, error) { function scanSessionRowsWithFTSScore (line 426) | func scanSessionRowsWithFTSScore(rows *sql.Rows) ([]domain.Memory, error) { function scanSessionRowNoScore (line 438) | func scanSessionRowNoScore(rows *sql.Rows) (*domain.Memory, error) { function scanSessionRowWithDistance (line 457) | func scanSessionRowWithDistance(rows *sql.Rows) (*domain.Memory, error) { function scanSessionRowWithFTSScore (line 481) | func scanSessionRowWithFTSScore(rows *sql.Rows) (*domain.Memory, error) { function scanSessionDomainRows (line 543) | func scanSessionDomainRows(rows *sql.Rows) ([]*domain.Session, error) { function scanSessionDomainRow (line 555) | func scanSessionDomainRow(rows *sql.Rows) (*domain.Session, error) { function fillSessionMemory (line 583) | func fillSessionMemory(m *domain.Memory, sessionID, agentID, source, rol... FILE: server/internal/repository/tidb/sessions_test.go function TestFillSessionMemory_SetsMemoryType (line 11) | func TestFillSessionMemory_SetsMemoryType(t *testing.T) { function TestFillSessionMemory_PopulatesFields (line 30) | func TestFillSessionMemory_PopulatesFields(t *testing.T) { FILE: server/internal/repository/tidb/space_chain.go type SpaceChainRepoImpl (line 11) | type SpaceChainRepoImpl struct method Create (line 19) | func (r *SpaceChainRepoImpl) Create(ctx context.Context, chain *domain... method GetByID (line 48) | func (r *SpaceChainRepoImpl) GetByID(ctx context.Context, id string) (... method GetByKey (line 64) | func (r *SpaceChainRepoImpl) GetByKey(ctx context.Context, key string)... method GetByKeyIncludingDisabled (line 82) | func (r *SpaceChainRepoImpl) GetByKeyIncludingDisabled(ctx context.Con... method Update (line 100) | func (r *SpaceChainRepoImpl) Update(ctx context.Context, chain *domain... method SoftDelete (line 120) | func (r *SpaceChainRepoImpl) SoftDelete(ctx context.Context, id, delet... method CreateBinding (line 140) | func (r *SpaceChainRepoImpl) CreateBinding(ctx context.Context, bindin... method ListBindings (line 152) | func (r *SpaceChainRepoImpl) ListBindings(ctx context.Context, chainID... method DisableBinding (line 167) | func (r *SpaceChainRepoImpl) DisableBinding(ctx context.Context, chain... method ListNodes (line 187) | func (r *SpaceChainRepoImpl) ListNodes(ctx context.Context, chainID st... method ReplaceNodes (line 202) | func (r *SpaceChainRepoImpl) ReplaceNodes(ctx context.Context, chainID... method RemoveNodeByExternalSpaceID (line 229) | func (r *SpaceChainRepoImpl) RemoveNodeByExternalSpaceID(ctx context.C... method KeyStatus (line 243) | func (r *SpaceChainRepoImpl) KeyStatus(ctx context.Context, key string... method hydrate (line 265) | func (r *SpaceChainRepoImpl) hydrate(ctx context.Context, chain *domai... function NewSpaceChainRepo (line 15) | func NewSpaceChainRepo(db *sql.DB) *SpaceChainRepoImpl { function scanSpaceChain (line 279) | func scanSpaceChain(row *sql.Row) (*domain.SpaceChain, error) { function scanSpaceChainBindings (line 299) | func scanSpaceChainBindings(rows *sql.Rows) ([]domain.SpaceChainBinding,... function scanSpaceChainNodes (line 321) | func scanSpaceChainNodes(rows *sql.Rows) ([]domain.SpaceChainNode, error) { FILE: server/internal/repository/tidb/tenant.go type TenantRepoImpl (line 12) | type TenantRepoImpl struct method Create (line 20) | func (r *TenantRepoImpl) Create(ctx context.Context, t *domain.Tenant)... method GetByID (line 33) | func (r *TenantRepoImpl) GetByID(ctx context.Context, id string) (*dom... method GetByName (line 42) | func (r *TenantRepoImpl) GetByName(ctx context.Context, name string) (... method UpdateStatus (line 51) | func (r *TenantRepoImpl) UpdateStatus(ctx context.Context, id string, ... method UpdateSchemaVersion (line 62) | func (r *TenantRepoImpl) UpdateSchemaVersion(ctx context.Context, id s... method TouchActivity (line 73) | func (r *TenantRepoImpl) TouchActivity(ctx context.Context, tenantID s... method UpsertMemoryStats (line 87) | func (r *TenantRepoImpl) UpsertMemoryStats(ctx context.Context, tenant... method CountActiveTenantsSince (line 104) | func (r *TenantRepoImpl) CountActiveTenantsSince(ctx context.Context, ... method SumActiveMemoryStats (line 122) | func (r *TenantRepoImpl) SumActiveMemoryStats(ctx context.Context) (to... function NewTenantRepo (line 16) | func NewTenantRepo(db *sql.DB) *TenantRepoImpl { function scanTenant (line 138) | func scanTenant(row *sql.Row) (*domain.Tenant, error) { function nullTime (line 163) | func nullTime(t *time.Time) sql.NullTime { FILE: server/internal/repository/tidb/tenant_integration_test.go function TestTenantCreate (line 15) | func TestTenantCreate(t *testing.T) { function TestTenantCreateDuplicateName (line 46) | func TestTenantCreateDuplicateName(t *testing.T) { function TestTenantGetByName (line 63) | func TestTenantGetByName(t *testing.T) { function TestTenantGetByNameDeleted (line 82) | func TestTenantGetByNameDeleted(t *testing.T) { function TestTenantGetByIDNotFound (line 104) | func TestTenantGetByIDNotFound(t *testing.T) { function TestTenantUpdateStatus (line 115) | func TestTenantUpdateStatus(t *testing.T) { function TestTenantUpdateSchemaVersion (line 144) | func TestTenantUpdateSchemaVersion(t *testing.T) { function TestTenantTouchActivityKeepsGreatestTimestamp (line 167) | func TestTenantTouchActivityKeepsGreatestTimestamp(t *testing.T) { function TestTenantCountActiveTenantsSince (line 200) | func TestTenantCountActiveTenantsSince(t *testing.T) { function TestTenantUpsertMemoryStatsKeepsNewestObservedCounts (line 247) | func TestTenantUpsertMemoryStatsKeepsNewestObservedCounts(t *testing.T) { function TestTenantSumActiveMemoryStats (line 292) | func TestTenantSumActiveMemoryStats(t *testing.T) { FILE: server/internal/repository/tidb/testutil_test.go function TestMain (line 22) | func TestMain(m *testing.M) { function createTables (line 61) | func createTables(db *sql.DB) error { function truncateAll (line 137) | func truncateAll(db *sql.DB) error { function truncateMemories (line 148) | func truncateMemories(t *testing.T) { function truncateTenants (line 157) | func truncateTenants(t *testing.T) { function newTestMemory (line 169) | func newTestMemory(overrides ...func(*domain.Memory)) *domain.Memory { function newTestTenant (line 192) | func newTestTenant(overrides ...func(*domain.Tenant)) *domain.Tenant { function newMemoryRepo (line 213) | func newMemoryRepo() *MemoryRepo { FILE: server/internal/repository/tidb/tidb.go function NewDB (line 12) | func NewDB(dsn string) (*sql.DB, error) { FILE: server/internal/repository/tidb/upload_task.go type UploadTaskRepoImpl (line 11) | type UploadTaskRepoImpl struct method Create (line 21) | func (r *UploadTaskRepoImpl) Create(ctx context.Context, task *domain.... method GetByID (line 35) | func (r *UploadTaskRepoImpl) GetByID(ctx context.Context, taskID strin... method ListByTenant (line 42) | func (r *UploadTaskRepoImpl) ListByTenant(ctx context.Context, tenantI... method UpdateStatus (line 65) | func (r *UploadTaskRepoImpl) UpdateStatus(ctx context.Context, taskID ... method UpdateProgress (line 76) | func (r *UploadTaskRepoImpl) UpdateProgress(ctx context.Context, taskI... method UpdateTotalChunks (line 87) | func (r *UploadTaskRepoImpl) UpdateTotalChunks(ctx context.Context, ta... method FetchPending (line 98) | func (r *UploadTaskRepoImpl) FetchPending(ctx context.Context, limit i... method ResetProcessing (line 150) | func (r *UploadTaskRepoImpl) ResetProcessing(ctx context.Context, stal... function NewUploadTaskRepo (line 15) | func NewUploadTaskRepo(db *sql.DB) *UploadTaskRepoImpl { constant uploadTaskColumns (line 19) | uploadTaskColumns = `task_id, tenant_id, file_name, file_path, agent_id,... function scanUploadTask (line 162) | func scanUploadTask(row *sql.Row) (*domain.UploadTask, error) { function scanUploadTaskRow (line 182) | func scanUploadTaskRow(rows *sql.Rows) (*domain.UploadTask, error) { function toNullString (line 199) | func toNullString(value string) sql.NullString { FILE: server/internal/repository/tidb/utm.go type UTMRepoImpl (line 11) | type UTMRepoImpl struct method Create (line 19) | func (r *UTMRepoImpl) Create(ctx context.Context, utm *domain.TenantUT... function NewUTMRepo (line 15) | func NewUTMRepo(db *sql.DB) *UTMRepoImpl { FILE: server/internal/reqid/reqid.go type contextKey (line 11) | type contextKey struct function FromContext (line 13) | func FromContext(ctx context.Context) string { function NewContext (line 18) | func NewContext(ctx context.Context, id string) context.Context { function NewContextMiddleware (line 22) | func NewContextMiddleware(next http.Handler) http.Handler { type Handler (line 29) | type Handler struct method Enabled (line 37) | func (h *Handler) Enabled(ctx context.Context, level slog.Level) bool { method Handle (line 41) | func (h *Handler) Handle(ctx context.Context, r slog.Record) error { method WithAttrs (line 48) | func (h *Handler) WithAttrs(attrs []slog.Attr) slog.Handler { method WithGroup (line 52) | func (h *Handler) WithGroup(name string) slog.Handler { function NewHandler (line 33) | func NewHandler(inner slog.Handler) *Handler { FILE: server/internal/runtimeusage/client.go type HTTPClient (line 14) | type HTTPClient struct method Reserve (line 31) | func (c *HTTPClient) Reserve(ctx context.Context, subject Subject, ope... method FinalizeReservation (line 43) | func (c *HTTPClient) FinalizeReservation(ctx context.Context, subject ... method doJSON (line 53) | func (c *HTTPClient) doJSON(ctx context.Context, method, path string, ... function NewHTTPClient (line 20) | func NewHTTPClient(baseURL, internalSecret string, timeout time.Duration... FILE: server/internal/runtimeusage/client_test.go type roundTripFunc (line 13) | type roundTripFunc method RoundTrip (line 15) | func (f roundTripFunc) RoundTrip(req *http.Request) (*http.Response, e... function TestHTTPClientReserveAllowsNullRemainingIncludedUnits (line 19) | func TestHTTPClientReserveAllowsNullRemainingIncludedUnits(t *testing.T) { function TestHTTPClientReserveDecodesRemainingIncludedUnits (line 55) | func TestHTTPClientReserveDecodesRemainingIncludedUnits(t *testing.T) { function jsonResponse (line 86) | func jsonResponse(body string) *http.Response { FILE: server/internal/runtimeusage/manager.go type manager (line 15) | type manager struct method Enabled (line 73) | func (m *manager) Enabled() bool { return true } method BeforeRecall (line 75) | func (m *manager) BeforeRecall(ctx context.Context, subject Subject) (... method AfterRecallSuccess (line 79) | func (m *manager) AfterRecallSuccess(ctx context.Context, lease *Opera... method AfterRecallFailure (line 98) | func (m *manager) AfterRecallFailure(ctx context.Context, lease *Opera... method BeforeMemoryCreate (line 102) | func (m *manager) BeforeMemoryCreate(ctx context.Context, subject Subj... method AfterMemoryCreateSuccess (line 106) | func (m *manager) AfterMemoryCreateSuccess(ctx context.Context, lease ... method AfterMemoryCreateFailure (line 125) | func (m *manager) AfterMemoryCreateFailure(ctx context.Context, lease ... method BeforeMemoryUpdate (line 129) | func (m *manager) BeforeMemoryUpdate(ctx context.Context, subject Subj... method AfterMemoryUpdateSuccess (line 133) | func (m *manager) AfterMemoryUpdateSuccess(ctx context.Context, lease ... method AfterMemoryUpdateFailure (line 152) | func (m *manager) AfterMemoryUpdateFailure(ctx context.Context, lease ... method BeforeMemoryDelete (line 156) | func (m *manager) BeforeMemoryDelete(ctx context.Context, subject Subj... method AfterMemoryDeleteSuccess (line 160) | func (m *manager) AfterMemoryDeleteSuccess(ctx context.Context, lease ... method AfterMemoryDeleteFailure (line 179) | func (m *manager) AfterMemoryDeleteFailure(ctx context.Context, lease ... method reserve (line 183) | func (m *manager) reserve(ctx context.Context, subject Subject, meter ... method release (line 222) | func (m *manager) release(ctx context.Context, lease *OperationLease, ... method consoleMeteringEvent (line 261) | func (m *manager) consoleMeteringEvent(lease *OperationLease, eventTyp... method recordConsoleMetering (line 274) | func (m *manager) recordConsoleMetering(lease *OperationLease, event M... method commitReservationWithoutOutbox (line 294) | func (m *manager) commitReservationWithoutOutbox(ctx context.Context, ... method markDoneBestEffort (line 311) | func (m *manager) markDoneBestEffort(ctx context.Context, lease *Opera... method storeCommitPending (line 325) | func (m *manager) storeCommitPending(ctx context.Context, lease *Opera... method markRetryable (line 342) | func (m *manager) markRetryable(ctx context.Context, operationID strin... function NewManager (line 24) | func NewManager(cfg Config, client QuotaClient, writer metering.Writer, ... type noopManager (line 41) | type noopManager struct method Enabled (line 43) | func (noopManager) Enabled() bool { return false } method BeforeRecall (line 44) | func (noopManager) BeforeRecall(context.Context, Subject) (*OperationL... method AfterRecallSuccess (line 47) | func (noopManager) AfterRecallSuccess(context.Context, *OperationLease... method AfterRecallFailure (line 50) | func (noopManager) AfterRecallFailure(context.Context, *OperationLease... method BeforeMemoryCreate (line 51) | func (noopManager) BeforeMemoryCreate(context.Context, Subject, int64)... method AfterMemoryCreateSuccess (line 54) | func (noopManager) AfterMemoryCreateSuccess(context.Context, *Operatio... method AfterMemoryCreateFailure (line 57) | func (noopManager) AfterMemoryCreateFailure(context.Context, *Operatio... method BeforeMemoryUpdate (line 58) | func (noopManager) BeforeMemoryUpdate(context.Context, Subject) (*Oper... method AfterMemoryUpdateSuccess (line 61) | func (noopManager) AfterMemoryUpdateSuccess(context.Context, *Operatio... method AfterMemoryUpdateFailure (line 64) | func (noopManager) AfterMemoryUpdateFailure(context.Context, *Operatio... method BeforeMemoryDelete (line 65) | func (noopManager) BeforeMemoryDelete(context.Context, Subject) (*Oper... method AfterMemoryDeleteSuccess (line 68) | func (noopManager) AfterMemoryDeleteSuccess(context.Context, *Operatio... method AfterMemoryDeleteFailure (line 71) | func (noopManager) AfterMemoryDeleteFailure(context.Context, *Operatio... function reservationReleaseReason (line 354) | func reservationReleaseReason(cause error) string { function releaseDetail (line 367) | func releaseDetail(prefix string, cause error) string { function objectsAffectedMetadata (line 374) | func objectsAffectedMetadata(objectsAffected int64) map[string]any { function cloneMetadata (line 381) | func cloneMetadata(metadata map[string]any) map[string]any { function newOperationID (line 392) | func newOperationID() (string, error) { FILE: server/internal/runtimeusage/manager_test.go type fakeQuotaClient (line 10) | type fakeQuotaClient struct method Reserve (line 19) | func (c *fakeQuotaClient) Reserve(_ context.Context, _ Subject, operat... method FinalizeReservation (line 30) | func (c *fakeQuotaClient) FinalizeReservation(_ context.Context, subje... type captureWriter (line 42) | type captureWriter struct method Record (line 46) | func (w *captureWriter) Record(evt metering.Event) { method Close (line 50) | func (w *captureWriter) Close(context.Context) error { return nil } type fakeOutboxStore (line 52) | type fakeOutboxStore struct method StoreCommitPending (line 63) | func (s *fakeOutboxStore) StoreCommitPending(context.Context, *Operati... method StoreReleasePending (line 68) | func (s *fakeOutboxStore) StoreReleasePending(_ context.Context, _ *Op... method MarkOperationDone (line 74) | func (s *fakeOutboxStore) MarkOperationDone(context.Context, string, s... method MarkOperationRetryableFailure (line 79) | func (s *fakeOutboxStore) MarkOperationRetryableFailure(_ context.Cont... method MarkUnknownAfterCrash (line 85) | func (s *fakeOutboxStore) MarkUnknownAfterCrash(context.Context, strin... function TestManagerRecallCommitsBeforeMetering (line 90) | func TestManagerRecallCommitsBeforeMetering(t *testing.T) { function TestManagerMemoryDeleteUsesWriteRequestMeter (line 123) | func TestManagerMemoryDeleteUsesWriteRequestMeter(t *testing.T) { function TestManagerMemoryUpdateUsesWriteRequestMeter (line 159) | func TestManagerMemoryUpdateUsesWriteRequestMeter(t *testing.T) { function TestManagerMemoryDeleteFailureReleasesReservation (line 195) | func TestManagerMemoryDeleteFailureReleasesReservation(t *testing.T) { function TestManagerFailOpenDoesNotBypassQuotaDenied (line 216) | func TestManagerFailOpenDoesNotBypassQuotaDenied(t *testing.T) { function TestManagerCommitFailureWithOutboxQueuesRetryAndReturnsSuccess (line 229) | func TestManagerCommitFailureWithOutboxQueuesRetryAndReturnsSuccess(t *t... function TestManagerMemoryCreateCommitFailureWithOutboxQueuesRetryAndReturnsSuccess (line 253) | func TestManagerMemoryCreateCommitFailureWithOutboxQueuesRetryAndReturns... function TestManagerCommitFailureWithoutOutboxReturnsError (line 277) | func TestManagerCommitFailureWithoutOutboxReturnsError(t *testing.T) { function TestManagerMemoryDeleteCommitFailureWithOutboxQueuesRetryAndReturnsSuccess (line 296) | func TestManagerMemoryDeleteCommitFailureWithOutboxQueuesRetryAndReturns... function TestManagerMemoryDeleteCommitFailureWithoutOutboxReturnsError (line 324) | func TestManagerMemoryDeleteCommitFailureWithoutOutboxReturnsError(t *te... function TestManagerRecallCommitPendingFailureCommitsDirectly (line 347) | func TestManagerRecallCommitPendingFailureCommitsDirectly(t *testing.T) { function TestManagerMemoryCreateCommitPendingFailureCommitsDirectly (line 375) | func TestManagerMemoryCreateCommitPendingFailureCommitsDirectly(t *testi... function TestManagerCommitPendingFailureAndCommitFailureReturnsErrorWithoutRelease (line 403) | func TestManagerCommitPendingFailureAndCommitFailureReturnsErrorWithoutR... function TestManagerReleaseUsesConsoleSpecReason (line 426) | func TestManagerReleaseUsesConsoleSpecReason(t *testing.T) { FILE: server/internal/runtimeusage/outbox.go constant subjectVersionTenantIDV1 (line 16) | subjectVersionTenantIDV1 = "tenant_id_v1" constant outboxStepCommitReservation (line 18) | outboxStepCommitReservation = "commit_reservation" constant outboxStepReleaseReservation (line 19) | outboxStepReleaseReservation = "release_reservation" constant outboxStepSubmitMetering (line 20) | outboxStepSubmitMetering = "submit_metering_event" constant outboxPhaseCommitPending (line 22) | outboxPhaseCommitPending = "commit_pending" constant outboxPhaseReleasePending (line 23) | outboxPhaseReleasePending = "release_pending" constant outboxPhaseMeteringPending (line 24) | outboxPhaseMeteringPending = "metering_pending" constant outboxPhaseDone (line 25) | outboxPhaseDone = "done" constant outboxPhaseUnknown (line 26) | outboxPhaseUnknown = "unknown_after_crash" constant outboxPhaseTerminalFailed (line 27) | outboxPhaseTerminalFailed = "terminal_failed" constant outboxStatusPending (line 29) | outboxStatusPending = "pending" constant outboxStatusDone (line 30) | outboxStatusDone = "done" constant outboxStatusTerminalFailed (line 31) | outboxStatusTerminalFailed = "terminal_failed" type outboxPayload (line 34) | type outboxPayload struct type outboxMeteringPayload (line 43) | type outboxMeteringPayload struct type outboxRow (line 54) | type outboxRow struct type SQLStore (line 67) | type SQLStore struct method EnsureSchema (line 81) | func (s *SQLStore) EnsureSchema(ctx context.Context) error { method StoreCommitPending (line 133) | func (s *SQLStore) StoreCommitPending(ctx context.Context, lease *Oper... method StoreReleasePending (line 148) | func (s *SQLStore) StoreReleasePending(ctx context.Context, lease *Ope... method MarkOperationDone (line 162) | func (s *SQLStore) MarkOperationDone(ctx context.Context, operationID ... method MarkOperationRetryableFailure (line 166) | func (s *SQLStore) MarkOperationRetryableFailure(ctx context.Context, ... method MarkOperationTerminalFailed (line 170) | func (s *SQLStore) MarkOperationTerminalFailed(ctx context.Context, op... method PendingRows (line 174) | func (s *SQLStore) PendingRows(ctx context.Context, limit int) ([]outb... method MarkUnknownAfterCrash (line 224) | func (s *SQLStore) MarkUnknownAfterCrash(ctx context.Context, operatio... method DeferPending (line 228) | func (s *SQLStore) DeferPending(ctx context.Context, operationID strin... method UpsertMeteringPending (line 232) | func (s *SQLStore) UpsertMeteringPending(ctx context.Context, evt mete... method MarkMeteringDone (line 262) | func (s *SQLStore) MarkMeteringDone(ctx context.Context, operationID s... method MarkMeteringTerminalFailed (line 266) | func (s *SQLStore) MarkMeteringTerminalFailed(ctx context.Context, ope... method MarkMeteringRetryableFailure (line 270) | func (s *SQLStore) MarkMeteringRetryableFailure(ctx context.Context, o... method storeOperation (line 274) | func (s *SQLStore) storeOperation(ctx context.Context, lease *Operatio... method operationUpsertSQL (line 304) | func (s *SQLStore) operationUpsertSQL() string { method meteringPendingUpsertSQL (line 341) | func (s *SQLStore) meteringPendingUpsertSQL() string { method rejectMeteringPayloadConflict (line 406) | func (s *SQLStore) rejectMeteringPayloadConflict(ctx context.Context, ... method markRetryableFailure (line 419) | func (s *SQLStore) markRetryableFailure(ctx context.Context, operation... method updateStatus (line 437) | func (s *SQLStore) updateStatus(ctx context.Context, operationID, stat... method placeholder (line 454) | func (s *SQLStore) placeholder(query string) string { function NewSQLStore (line 73) | func NewSQLStore(db *sql.DB, backend string) *SQLStore { function nullableString (line 472) | func nullableString(value string) sql.NullString { function nullableTime (line 479) | func nullableTime(value time.Time) sql.NullTime { function marshalOutboxPayload (line 486) | func marshalOutboxPayload(payload outboxPayload) ([]byte, string, error) { function outboxEventFromMetering (line 495) | func outboxEventFromMetering(event MeteringEvent, apiKeySubject string) ... function marshalMeteringPendingPayload (line 508) | func marshalMeteringPendingPayload(evt metering.Event) ([]byte, error) { function cloneAnyMap (line 528) | func cloneAnyMap(in map[string]any) map[string]any { function retryBackoff (line 539) | func retryBackoff(attempts int, minDelay, maxDelay time.Duration) time.D... FILE: server/internal/runtimeusage/outbox_test.go type recordedExec (line 22) | type recordedExec struct type recordingStore (line 27) | type recordingStore struct type recordingDriver (line 34) | type recordingDriver struct method Open (line 36) | func (recordingDriver) Open(name string) (driver.Conn, error) { type recordingConn (line 41) | type recordingConn struct method Prepare (line 45) | func (c *recordingConn) Prepare(string) (driver.Stmt, error) { return ... method Close (line 46) | func (c *recordingConn) Close() error { return ... method Begin (line 47) | func (c *recordingConn) Begin() (driver.Tx, error) { return ... method ExecContext (line 49) | func (c *recordingConn) ExecContext(_ context.Context, query string, a... method QueryContext (line 56) | func (c *recordingConn) QueryContext(_ context.Context, query string, ... type recordingRows (line 68) | type recordingRows struct method Columns (line 74) | func (r *recordingRows) Columns() []string { return r.cols } method Close (line 75) | func (r *recordingRows) Close() error { return nil } method Next (line 76) | func (r *recordingRows) Next(dest []driver.Value) error { function newRecordingDB (line 85) | func newRecordingDB(t *testing.T, store *recordingStore) *sql.DB { function TestSQLStoreStoreOperationUsesAtomicUpsert (line 105) | func TestSQLStoreStoreOperationUsesAtomicUpsert(t *testing.T) { function TestSQLStoreStoreCommitPendingPersistsAPIKeySubject (line 139) | func TestSQLStoreStoreCommitPendingPersistsAPIKeySubject(t *testing.T) { function TestSQLStoreUpsertMeteringPendingUsesAtomicUpsertAndDetectsConflict (line 170) | func TestSQLStoreUpsertMeteringPendingUsesAtomicUpsertAndDetectsConflict... function TestSQLStoreDoneStatusClearsLastError (line 192) | func TestSQLStoreDoneStatusClearsLastError(t *testing.T) { FILE: server/internal/runtimeusage/types.go constant MeterMemoryRecallRequests (line 13) | MeterMemoryRecallRequests = "memory_recall_requests" constant MeterMemoryWriteRequests (line 14) | MeterMemoryWriteRequests = "memory_write_requests" constant EventTypeMemoryRecall (line 16) | EventTypeMemoryRecall = "memoryRecall" constant EventTypeMemoryCreated (line 18) | EventTypeMemoryCreated = "memoryCreated" constant EventTypeMemoryUpdated (line 19) | EventTypeMemoryUpdated = "memoryUpdated" constant EventTypeMemoryDeleted (line 20) | EventTypeMemoryDeleted = "memoryDeleted" constant ReservationStatusCommitted (line 22) | ReservationStatusCommitted = "committed" constant ReservationStatusReleased (line 23) | ReservationStatusReleased = "released" constant reservationCommitReason (line 25) | reservationCommitReason = "operationSucceeded" constant reservationReleaseOperationFailed (line 26) | reservationReleaseOperationFailed = "operationFailed" constant reservationReleaseOperationAbandoned (line 27) | reservationReleaseOperationAbandoned = "operationAbandoned" constant reservationReleaseClientCancelled (line 28) | reservationReleaseClientCancelled = "clientCancelled" constant reservationReleaseTimeout (line 29) | reservationReleaseTimeout = "timeout" type Config (line 32) | type Config struct type Subject (line 45) | type Subject struct type OperationLease (line 52) | type OperationLease struct type Operation (line 60) | type Operation struct type Reservation (line 65) | type Reservation struct type RecallResult (line 76) | type RecallResult struct type MemoryCreateResult (line 81) | type MemoryCreateResult struct type MemoryUpdateResult (line 87) | type MemoryUpdateResult struct type MemoryDeleteResult (line 93) | type MemoryDeleteResult struct type MeteringEvent (line 99) | type MeteringEvent struct type OutboxStore (line 109) | type OutboxStore interface type Manager (line 117) | type Manager interface type QuotaClient (line 133) | type QuotaClient interface type QuotaDeniedError (line 138) | type QuotaDeniedError struct method Error (line 143) | func (e *QuotaDeniedError) Error() string { method ResponseBody (line 147) | func (e *QuotaDeniedError) ResponseBody() []byte { type UnavailableError (line 159) | type UnavailableError struct method Error (line 163) | func (e *UnavailableError) Error() string { method Unwrap (line 170) | func (e *UnavailableError) Unwrap() error { type ConflictError (line 174) | type ConflictError struct method Error (line 179) | func (e *ConflictError) Error() string { function HTTPStatus (line 183) | func HTTPStatus(err error) int { FILE: server/internal/runtimeusage/worker.go type Worker (line 14) | type Worker struct method Run (line 50) | func (w *Worker) Run(ctx context.Context) error { method runOnce (line 69) | func (w *Worker) runOnce(ctx context.Context) error { method processRow (line 83) | func (w *Worker) processRow(ctx context.Context, row outboxRow) { method processCommit (line 106) | func (w *Worker) processCommit(ctx context.Context, row outboxRow, pay... method processRelease (line 119) | func (w *Worker) processRelease(ctx context.Context, row outboxRow, pa... method requeueMetering (line 134) | func (w *Worker) requeueMetering(ctx context.Context, row outboxRow, p... method recordPayloadEvent (line 149) | func (w *Worker) recordPayloadEvent(ctx context.Context, row outboxRow... method markUnknown (line 163) | func (w *Worker) markUnknown(ctx context.Context, row outboxRow, reaso... method markRetryable (line 178) | func (w *Worker) markRetryable(ctx context.Context, row outboxRow, err... method markQuotaFailure (line 184) | func (w *Worker) markQuotaFailure(ctx context.Context, row outboxRow, ... method markTerminal (line 193) | func (w *Worker) markTerminal(ctx context.Context, row outboxRow, err ... type workerStore (line 23) | type workerStore interface function NewWorker (line 32) | func NewWorker(store *SQLStore, client QuotaClient, writer metering.Writ... function newWorker (line 36) | func newWorker(store workerStore, client QuotaClient, writer metering.Wr... function rowSubject (line 208) | func rowSubject(row outboxRow, payload outboxPayload) Subject { function apiKeySubjectFromOutbox (line 216) | func apiKeySubjectFromOutbox(row outboxRow, payload outboxPayload) string { function eventFromOutbox (line 226) | func eventFromOutbox(row outboxRow, payload outboxPayload) metering.Event { type errString (line 244) | type errString method Error (line 246) | func (e errString) Error() string { FILE: server/internal/runtimeusage/worker_test.go type fakeWorkerStore (line 8) | type fakeWorkerStore struct method PendingRows (line 17) | func (s *fakeWorkerStore) PendingRows(context.Context, int) ([]outboxR... method MarkOperationDone (line 21) | func (s *fakeWorkerStore) MarkOperationDone(_ context.Context, operati... method MarkOperationRetryableFailure (line 26) | func (s *fakeWorkerStore) MarkOperationRetryableFailure(_ context.Cont... method MarkOperationTerminalFailed (line 31) | func (s *fakeWorkerStore) MarkOperationTerminalFailed(_ context.Contex... method MarkUnknownAfterCrash (line 36) | func (s *fakeWorkerStore) MarkUnknownAfterCrash(_ context.Context, ope... method DeferPending (line 41) | func (s *fakeWorkerStore) DeferPending(_ context.Context, operationID ... function TestWorkerCommitPendingFinalizesQuotaBeforeMetering (line 46) | func TestWorkerCommitPendingFinalizesQuotaBeforeMetering(t *testing.T) { function TestWorkerCommitPendingReplaysStoredAPIKeySubject (line 91) | func TestWorkerCommitPendingReplaysStoredAPIKeySubject(t *testing.T) { function TestWorkerCommitConflictMarksTerminalFailed (line 132) | func TestWorkerCommitConflictMarksTerminalFailed(t *testing.T) { FILE: server/internal/service/activity.go constant activityTrackerTimeout (line 14) | activityTrackerTimeout = 10 * time.Second constant activityGaugeTTL (line 15) | activityGaugeTTL = 30 * time.Second constant activeTenantWindow (line 16) | activeTenantWindow = 7 * 24 * time.Hour type ActivityTracker (line 21) | type ActivityTracker struct method RecordMemoryActivity (line 41) | func (t *ActivityTracker) RecordMemoryActivity(tenantID string, at tim... method RecordMemoryActivityOnly (line 45) | func (t *ActivityTracker) RecordMemoryActivityOnly(tenantID string, at... method recordMemoryActivity (line 49) | func (t *ActivityTracker) recordMemoryActivity(tenantID string, at tim... method RecordMemoryStats (line 71) | func (t *ActivityTracker) RecordMemoryStats(_ context.Context, tenantI... method refreshAggregateMetrics (line 93) | func (t *ActivityTracker) refreshAggregateMetrics(ctx context.Context,... method shouldRefresh (line 122) | func (t *ActivityTracker) shouldRefresh(now time.Time) bool { method clearRefreshClaim (line 137) | func (t *ActivityTracker) clearRefreshClaim(claimedAt time.Time) { function NewActivityTracker (line 30) | func NewActivityTracker(tenants repository.TenantRepo, logger *slog.Logg... FILE: server/internal/service/activity_test.go type activityTenantRepo (line 16) | type activityTenantRepo struct method Create (line 33) | func (r *activityTenantRepo) Create(context.Context, *domain.Tenant) e... method GetByID (line 34) | func (r *activityTenantRepo) GetByID(context.Context, string) (*domain... method GetByName (line 37) | func (r *activityTenantRepo) GetByName(context.Context, string) (*doma... method UpdateStatus (line 40) | func (r *activityTenantRepo) UpdateStatus(context.Context, string, dom... method UpdateSchemaVersion (line 43) | func (r *activityTenantRepo) UpdateSchemaVersion(context.Context, stri... method TouchActivity (line 47) | func (r *activityTenantRepo) TouchActivity(context.Context, string, ti... method UpsertMemoryStats (line 54) | func (r *activityTenantRepo) UpsertMemoryStats(_ context.Context, _ st... method CountActiveTenantsSince (line 63) | func (r *activityTenantRepo) CountActiveTenantsSince(context.Context, ... method SumActiveMemoryStats (line 70) | func (r *activityTenantRepo) SumActiveMemoryStats(context.Context) (in... function TestActivityTrackerRefreshesActiveTenantGauge (line 77) | func TestActivityTrackerRefreshesActiveTenantGauge(t *testing.T) { function TestActivityTrackerSuppressesTouchFailure (line 103) | func TestActivityTrackerSuppressesTouchFailure(t *testing.T) { function TestActivityTrackerRetriesMetricRefreshAfterCountFailure (line 121) | func TestActivityTrackerRetriesMetricRefreshAfterCountFailure(t *testing... function TestActivityTrackerDebouncesMetricRefresh (line 155) | func TestActivityTrackerDebouncesMetricRefresh(t *testing.T) { function TestActivityTrackerRecordMemoryActivityOnlyDoesNotRefresh (line 182) | func TestActivityTrackerRecordMemoryActivityOnlyDoesNotRefresh(t *testin... function TestActivityTrackerRecordsMemoryStatsAndRefreshesGauges (line 205) | func TestActivityTrackerRecordsMemoryStatsAndRefreshesGauges(t *testing.... function TestActivityTrackerRecordMemoryStatsUsesIndependentContext (line 231) | func TestActivityTrackerRecordMemoryStatsUsesIndependentContext(t *testi... function TestActivityTrackerDebouncesAggregateRefreshButNotStatsUpsert (line 250) | func TestActivityTrackerDebouncesAggregateRefreshButNotStatsUpsert(t *te... function TestActivityTrackerLeavesGaugesUnchangedOnAggregateSumFailure (line 273) | func TestActivityTrackerLeavesGaugesUnchangedOnAggregateSumFailure(t *te... function resetActivityGauges (line 309) | func resetActivityGauges() { function activeTenantGaugeValue (line 315) | func activeTenantGaugeValue(t *testing.T) float64 { function activeMemoryGaugeValue (line 328) | func activeMemoryGaugeValue(t *testing.T) float64 { function activeMemory7dGaugeValue (line 341) | func activeMemory7dGaugeValue(t *testing.T) float64 { FILE: server/internal/service/ingest.go type IngestMode (line 25) | type IngestMode constant ModeSmart (line 28) | ModeSmart IngestMode = "smart" constant ModeRaw (line 29) | ModeRaw IngestMode = "raw" constant maxExtractionConversationRunes (line 33) | maxExtractionConversationRunes = 1000000 constant factTypeQueryIntent (line 34) | factTypeQueryIntent = "query_intent" constant factTypeRawFallback (line 35) | factTypeRawFallback = "raw_fallback" constant rawFallbackTag (line 36) | rawFallbackTag = "raw-fallback" type IngestRequest (line 42) | type IngestRequest struct type IngestMessage (line 50) | type IngestMessage struct type IngestResult (line 57) | type IngestResult struct type IngestService (line 66) | type IngestService struct method Ingest (line 95) | func (s *IngestService) Ingest(ctx context.Context, agentName string, ... method HasLLM (line 147) | func (s *IngestService) HasLLM() bool { method ExtractPhase1 (line 300) | func (s *IngestService) ExtractPhase1(ctx context.Context, messages []... method ReconcilePhase2 (line 322) | func (s *IngestService) ReconcilePhase2(ctx context.Context, agentName... method ReconcileContent (line 351) | func (s *IngestService) ReconcileContent(ctx context.Context, agentNam... method ingestRaw (line 429) | func (s *IngestService) ingestRaw(ctx context.Context, agentName strin... method extractAndReconcile (line 478) | func (s *IngestService) extractAndReconcile(ctx context.Context, agent... method extractFacts (line 571) | func (s *IngestService) extractFacts(ctx context.Context, conversation... method extractFactsAndTags (line 719) | func (s *IngestService) extractFactsAndTags(ctx context.Context, conve... method reconcile (line 904) | func (s *IngestService) reconcile(ctx context.Context, agentName, agen... method gatherExistingMemories (line 1251) | func (s *IngestService) gatherExistingMemories(ctx context.Context, ag... method searchExistingMemoriesForFact (line 1329) | func (s *IngestService) searchExistingMemoriesForFact( method addAllFacts (line 1429) | func (s *IngestService) addAllFacts(ctx context.Context, agentName, ag... method addInsight (line 1445) | func (s *IngestService) addInsight(ctx context.Context, agentName, age... method updateInsight (line 1487) | func (s *IngestService) updateInsight(ctx context.Context, agentName, ... function NewIngestService (line 75) | func NewIngestService( type Phase1Result (line 152) | type Phase1Result struct type ExtractedFact (line 158) | type ExtractedFact struct function dropQueryIntentFacts (line 173) | func dropQueryIntentFacts(facts []ExtractedFact) []ExtractedFact { type preparedExtractionInput (line 185) | type preparedExtractionInput struct function prepareExtractionInput (line 191) | func prepareExtractionInput(messages []IngestMessage, maxConversationRun... function prepareExtractionInputFromConversation (line 212) | func prepareExtractionInputFromConversation(conversation string, maxConv... function parseConversationMessages (line 216) | func parseConversationMessages(conversation string) []IngestMessage { function finalizeExtractedFacts (line 248) | func finalizeExtractedFacts(input preparedExtractionInput, parsed []Extr... function normalizeMessageTags (line 261) | func normalizeMessageTags(tags [][]string, messageCount int) [][]string { function expandMessageTags (line 273) | func expandMessageTags(cleanedTags [][]string, input preparedExtractionI... function projectReconcileFactText (line 289) | func projectReconcileFactText(fact ExtractedFact) string { function normalizeReconciledTemporalContent (line 293) | func normalizeReconciledTemporalContent(content string) (string, *Tempor... function normalizeParsedFacts (line 510) | func normalizeParsedFacts(raw string, parsed []ExtractedFact) []Extracte... constant gatherExistingMemoriesConcurrency (line 1233) | gatherExistingMemoriesConcurrency = 4 type existingMemoryCandidate (line 1235) | type existingMemoryCandidate struct type factSearchResult (line 1240) | type factSearchResult struct function StripInjectedContext (line 1532) | func StripInjectedContext(messages []IngestMessage) []IngestMessage { function stripInjectedContext (line 1536) | func stripInjectedContext(messages []IngestMessage) []IngestMessage { function stripMemoryTags (line 1549) | func stripMemoryTags(s string) string { function formatConversation (line 1567) | func formatConversation(messages []IngestMessage) string { function parseIntID (line 1583) | func parseIntID(s string) int { function truncateRunes (line 1593) | func truncateRunes(s string, maxRunes int) string { function metricStatus (line 1601) | func metricStatus(err error) string { FILE: server/internal/service/ingest_test.go type memoryRepoMock (line 21) | type memoryRepoMock struct method Create (line 55) | func (m *memoryRepoMock) Create(ctx context.Context, mem *domain.Memor... method GetByID (line 62) | func (m *memoryRepoMock) GetByID(ctx context.Context, id string) (*dom... method UpdateOptimistic (line 1167) | func (m *memoryRepoMock) UpdateOptimistic(ctx context.Context, mem *do... method SoftDelete (line 1171) | func (m *memoryRepoMock) SoftDelete(ctx context.Context, id, agentName... method BulkSoftDelete (line 1175) | func (m *memoryRepoMock) BulkSoftDelete(ctx context.Context, ids []str... method ArchiveMemory (line 1186) | func (m *memoryRepoMock) ArchiveMemory(ctx context.Context, id, supers... method ArchiveAndCreate (line 1190) | func (m *memoryRepoMock) ArchiveAndCreate(ctx context.Context, archive... method SetState (line 1195) | func (m *memoryRepoMock) SetState(ctx context.Context, id string, stat... method List (line 1200) | func (m *memoryRepoMock) List(ctx context.Context, f domain.MemoryFilt... method Count (line 1207) | func (m *memoryRepoMock) Count(ctx context.Context) (int, error) { method BulkCreate (line 1211) | func (m *memoryRepoMock) BulkCreate(ctx context.Context, memories []*d... method VectorSearch (line 1215) | func (m *memoryRepoMock) VectorSearch(ctx context.Context, queryVec []... method AutoVectorSearch (line 1230) | func (m *memoryRepoMock) AutoVectorSearch(ctx context.Context, queryTe... method KeywordSearch (line 1249) | func (m *memoryRepoMock) KeywordSearch(ctx context.Context, query stri... method FTSSearch (line 1268) | func (m *memoryRepoMock) FTSSearch(ctx context.Context, query string, ... method FTSAvailable (line 1287) | func (m *memoryRepoMock) FTSAvailable() bool { method ListBootstrap (line 1293) | func (m *memoryRepoMock) ListBootstrap(ctx context.Context, limit int)... method NearDupSearch (line 1297) | func (m *memoryRepoMock) NearDupSearch(_ context.Context, _ string) (s... method CountStats (line 1385) | func (m *memoryRepoMock) CountStats(ctx context.Context) (int64, int64... type setStateCall (line 50) | type setStateCall struct function TestExtractFactsReturnsTags (line 81) | func TestExtractFactsReturnsTags(t *testing.T) { function TestNormalizeTemporalFacts_ResolvesNextMonthAgainstTimestamp (line 112) | func TestNormalizeTemporalFacts_ResolvesNextMonthAgainstTimestamp(t *tes... function TestNormalizeTemporalFacts_ResolvesLastYearAgainstTimestamp (line 131) | func TestNormalizeTemporalFacts_ResolvesLastYearAgainstTimestamp(t *test... function TestNormalizeTemporalFacts_ResolvesLastWeekToAnchoredPeriod (line 147) | func TestNormalizeTemporalFacts_ResolvesLastWeekToAnchoredPeriod(t *test... function TestNormalizeTemporalFacts_UsesCurrentDateForChineseRelativeDayWithoutTimestamp (line 163) | func TestNormalizeTemporalFacts_UsesCurrentDateForChineseRelativeDayWith... function TestNormalizeTemporalFacts_UsesTimestampForChineseRelativeDay (line 182) | func TestNormalizeTemporalFacts_UsesTimestampForChineseRelativeDay(t *te... function TestNormalizeTemporalFacts_StoresChineseRawFallbackInTemporalMetadata (line 201) | func TestNormalizeTemporalFacts_StoresChineseRawFallbackInTemporalMetada... function TestNormalizeTemporalFacts_LeavesRawFallbackUntouched (line 220) | func TestNormalizeTemporalFacts_LeavesRawFallbackUntouched(t *testing.T) { function TestNormalizeTemporalFacts_LeavesExplicitAbsoluteDatesUntouched (line 238) | func TestNormalizeTemporalFacts_LeavesExplicitAbsoluteDatesUntouched(t *... function TestNormalizeTemporalFacts_ResolvesChineseLocalAnchorWithoutInventingYear (line 256) | func TestNormalizeTemporalFacts_ResolvesChineseLocalAnchorWithoutInventi... function TestNormalizeTemporalFacts_ResolvesChineseHeaderAnchoredMonthNaturally (line 274) | func TestNormalizeTemporalFacts_ResolvesChineseHeaderAnchoredMonthNatura... function TestNormalizeStandaloneTemporalContent_PureDeicticUsesMetadataOnly (line 292) | func TestNormalizeStandaloneTemporalContent_PureDeicticUsesMetadataOnly(... function TestExtractFactsTagsOmitted (line 305) | func TestExtractFactsTagsOmitted(t *testing.T) { function TestExtractPhase1FactTagsPopulated (line 333) | func TestExtractPhase1FactTagsPopulated(t *testing.T) { function TestExtractPhase1AnnotatesSourceSeqs (line 371) | func TestExtractPhase1AnnotatesSourceSeqs(t *testing.T) { function TestReconcilePhase2PersistsSourceSeqMetadata (line 406) | func TestReconcilePhase2PersistsSourceSeqMetadata(t *testing.T) { function TestReconcilePhase2AddPersistsSourceTurnMetadata (line 436) | func TestReconcilePhase2AddPersistsSourceTurnMetadata(t *testing.T) { function TestSetSourceSeqMetadataClearsStaleSourceSeqs (line 474) | func TestSetSourceSeqMetadataClearsStaleSourceSeqs(t *testing.T) { function TestExtractFactsSingleMessageUsesLLMExtraction (line 490) | func TestExtractFactsSingleMessageUsesLLMExtraction(t *testing.T) { function TestExtractPhase1SingleMessageUsesLLMExtraction (line 526) | func TestExtractPhase1SingleMessageUsesLLMExtraction(t *testing.T) { function TestExtractFactsEmptyResultReturnsNoFacts (line 564) | func TestExtractFactsEmptyResultReturnsNoFacts(t *testing.T) { function TestExtractFactsSingleMessageEmptyResultReturnsNoFacts (line 589) | func TestExtractFactsSingleMessageEmptyResultReturnsNoFacts(t *testing.T) { function TestIngestExtractionLLMFailureReturnsFailedStatus (line 619) | func TestIngestExtractionLLMFailureReturnsFailedStatus(t *testing.T) { function TestExtractPhase1ExtractionLLMFailureReturnsError (line 651) | func TestExtractPhase1ExtractionLLMFailureReturnsError(t *testing.T) { function TestExtractPhase1SingleMessageEmptyResultReturnsNoFacts (line 673) | func TestExtractPhase1SingleMessageEmptyResultReturnsNoFacts(t *testing.... function TestExtractFactsRetryRecoveryDropsFlattenedQueryIntent (line 708) | func TestExtractFactsRetryRecoveryDropsFlattenedQueryIntent(t *testing.T) { function TestExtractFactsAndTagsRetryRecoveryDropsFlattenedQueryIntent (line 744) | func TestExtractFactsAndTagsRetryRecoveryDropsFlattenedQueryIntent(t *te... function TestColdStartAddAllFactsSetsTags (line 789) | func TestColdStartAddAllFactsSetsTags(t *testing.T) { function TestReconcileAddSetsTagsOnMemory (line 830) | func TestReconcileAddSetsTagsOnMemory(t *testing.T) { function TestReconcileUpdateSetsTagsOnMemory (line 878) | func TestReconcileUpdateSetsTagsOnMemory(t *testing.T) { function TestReconcileUpdateTagsOmitted (line 926) | func TestReconcileUpdateTagsOmitted(t *testing.T) { function TestReconcileTagsOmittedGracefully (line 976) | func TestReconcileTagsOmittedGracefully(t *testing.T) { function TestReconcileTagsClamped (line 1026) | func TestReconcileTagsClamped(t *testing.T) { function TestReconcilePinnedFallbackCarriesTags (line 1079) | func TestReconcilePinnedFallbackCarriesTags(t *testing.T) { function TestIngestDoesNotReconcileWhenExtractionReturnsNoFacts (line 1127) | func TestIngestDoesNotReconcileWhenExtractionReturnsNoFacts(t *testing.T) { function TestDropQueryIntentFacts (line 1301) | func TestDropQueryIntentFacts(t *testing.T) { function TestStripInjectedContext (line 1387) | func TestStripInjectedContext(t *testing.T) { function TestStripMemoryTags (line 1463) | func TestStripMemoryTags(t *testing.T) { function TestFormatConversation (line 1510) | func TestFormatConversation(t *testing.T) { function TestParseIntID (line 1564) | func TestParseIntID(t *testing.T) { function TestIngestEmptyMessages (line 1591) | func TestIngestEmptyMessages(t *testing.T) { function TestIngestModeRawStoresInsight (line 1608) | func TestIngestModeRawStoresInsight(t *testing.T) { function TestIngestNilLLMFallsBackToRaw (line 1648) | func TestIngestNilLLMFallsBackToRaw(t *testing.T) { function TestIngestRawStripsInjectedContextWithoutLLM (line 1679) | func TestIngestRawStripsInjectedContextWithoutLLM(t *testing.T) { function TestIngestStripsInjectedContextAcrossModes (line 1707) | func TestIngestStripsInjectedContextAcrossModes(t *testing.T) { function TestReconcileDeleteErrNotFoundIsNotWarning (line 1802) | func TestReconcileDeleteErrNotFoundIsNotWarning(t *testing.T) { function TestReconcileDeleteRealErrorCountsAsWarning (line 1878) | func TestReconcileDeleteRealErrorCountsAsWarning(t *testing.T) { function TestIngestInvalidModeReturnsValidationError (line 1936) | func TestIngestInvalidModeReturnsValidationError(t *testing.T) { function TestTruncateRunes (line 1956) | func TestTruncateRunes(t *testing.T) { function TestReconcileFallbackWritesNothing (line 1990) | func TestReconcileFallbackWritesNothing(t *testing.T) { function TestGatherExistingMemoriesFiltersLowScoreVectorResults (line 2065) | func TestGatherExistingMemoriesFiltersLowScoreVectorResults(t *testing.T) { function TestGatherExistingMemoriesFTSOnlyMode (line 2098) | func TestGatherExistingMemoriesFTSOnlyMode(t *testing.T) { function TestGatherExistingMemoriesHybridDedup (line 2133) | func TestGatherExistingMemoriesHybridDedup(t *testing.T) { function TestGatherExistingMemoriesParallelMergeKeepsFactOrder (line 2169) | func TestGatherExistingMemoriesParallelMergeKeepsFactOrder(t *testing.T) { function TestGatherExistingMemoriesSearchesFactsInParallel (line 2208) | func TestGatherExistingMemoriesSearchesFactsInParallel(t *testing.T) { function TestGatherExistingMemoriesTotalOutageReturnsError (line 2265) | func TestGatherExistingMemoriesTotalOutageReturnsError(t *testing.T) { function TestGatherExistingMemoriesPartialLegFailureContinues (line 2288) | func TestGatherExistingMemoriesPartialLegFailureContinues(t *testing.T) { function TestGatherExistingMemoriesFTSOnlyTotalOutage (line 2316) | func TestGatherExistingMemoriesFTSOnlyTotalOutage(t *testing.T) { function TestReconcileContentRequiresLLM (line 2334) | func TestReconcileContentRequiresLLM(t *testing.T) { function TestReconcileContentValidatesInput (line 2351) | func TestReconcileContentValidatesInput(t *testing.T) { function TestReconcileIncludesMemoryAge (line 2371) | func TestReconcileIncludesMemoryAge(t *testing.T) { function TestReconcileOmitsAgeForZeroTimestamp (line 2450) | func TestReconcileOmitsAgeForZeroTimestamp(t *testing.T) { function TestReconcileAcceptsEmptyChangeList (line 2525) | func TestReconcileAcceptsEmptyChangeList(t *testing.T) { function TestReconcileUpdatePreservesExistingTagsWhenLLMOmits (line 2580) | func TestReconcileUpdatePreservesExistingTagsWhenLLMOmits(t *testing.T) { function TestReconcilePinnedFallbackPreservesExistingTagsWhenLLMOmits (line 2634) | func TestReconcilePinnedFallbackPreservesExistingTagsWhenLLMOmits(t *tes... function TestExtractFactsLegacyStringArrayFallback (line 2688) | func TestExtractFactsLegacyStringArrayFallback(t *testing.T) { function TestExtractPhase1LegacyStringArrayFallback (line 2722) | func TestExtractPhase1LegacyStringArrayFallback(t *testing.T) { function TestExtractFactsFencedLegacyStringArrayFallback (line 2760) | func TestExtractFactsFencedLegacyStringArrayFallback(t *testing.T) { function TestExtractPhase1FencedLegacyStringArrayFallback (line 2792) | func TestExtractPhase1FencedLegacyStringArrayFallback(t *testing.T) { function TestExtractFactsAlternativeKeyReturnsNoFacts (line 2830) | func TestExtractFactsAlternativeKeyReturnsNoFacts(t *testing.T) { function makeFlattenedFactServer (line 2855) | func makeFlattenedFactServer(raw string) *httptest.Server { function TestExtractFactsFlattenedFactNoTextNoTags (line 2866) | func TestExtractFactsFlattenedFactNoTextNoTags(t *testing.T) { function TestExtractFactsFlattenedFactTagsOnly (line 2885) | func TestExtractFactsFlattenedFactTagsOnly(t *testing.T) { function TestExtractFactsFlattenedFactWithText (line 2904) | func TestExtractFactsFlattenedFactWithText(t *testing.T) { function TestExtractPhase1FlattenedFactWithText (line 2930) | func TestExtractPhase1FlattenedFactWithText(t *testing.T) { function TestReconcileTagsClampedViaReconcilePath (line 2956) | func TestReconcileTagsClampedViaReconcilePath(t *testing.T) { FILE: server/internal/service/memory.go constant maxContentLen (line 22) | maxContentLen = 50000 constant maxTags (line 23) | maxTags = 20 constant maxBulkSize (line 24) | maxBulkSize = 100 constant maxBulkDeleteSize (line 25) | maxBulkDeleteSize = 1000 constant defaultMinScore (line 26) | defaultMinScore = 0.3 constant secondHopWeight (line 30) | secondHopWeight = 0.3 constant secondHopTopN (line 32) | secondHopTopN = 3 constant secondHopGateScore (line 37) | secondHopGateScore = 0.5 type MemoryService (line 40) | type MemoryService struct method Create (line 56) | func (s *MemoryService) Create(ctx context.Context, agentID, content s... method CreatePinned (line 144) | func (s *MemoryService) CreatePinned(ctx context.Context, agentID, con... method Get (line 164) | func (s *MemoryService) Get(ctx context.Context, id string) (*domain.M... method Search (line 168) | func (s *MemoryService) Search(ctx context.Context, filter domain.Memo... method SearchCandidates (line 195) | func (s *MemoryService) SearchCandidates( method paginate (line 234) | func (s *MemoryService) paginate(results []domain.Memory, offset, limi... method ftsOnlySearch (line 250) | func (s *MemoryService) ftsOnlySearch(ctx context.Context, filter doma... method keywordOnlySearch (line 298) | func (s *MemoryService) keywordOnlySearch(ctx context.Context, filter ... method ftsOnlyCandidates (line 319) | func (s *MemoryService) ftsOnlyCandidates(ctx context.Context, filter ... method keywordOnlyCandidates (line 330) | func (s *MemoryService) keywordOnlyCandidates(ctx context.Context, fil... method hybridSearch (line 341) | func (s *MemoryService) hybridSearch(ctx context.Context, filter domai... method hybridCandidates (line 403) | func (s *MemoryService) hybridCandidates(ctx context.Context, filter d... method autoHybridSearch (line 435) | func (s *MemoryService) autoHybridSearch(ctx context.Context, filter d... method autoHybridCandidates (line 512) | func (s *MemoryService) autoHybridCandidates( method secondHopAutoSearch (line 586) | func (s *MemoryService) secondHopAutoSearch( method Update (line 782) | func (s *MemoryService) Update(ctx context.Context, agentName, id, con... method Delete (line 839) | func (s *MemoryService) Delete(ctx context.Context, id, agentName stri... method BulkDelete (line 845) | func (s *MemoryService) BulkDelete(ctx context.Context, ids []string, ... method Bootstrap (line 879) | func (s *MemoryService) Bootstrap(ctx context.Context, limit int) ([]d... method BulkCreate (line 890) | func (s *MemoryService) BulkCreate(ctx context.Context, agentName stri... method CountStats (line 977) | func (s *MemoryService) CountStats(ctx context.Context) (total int64, ... function NewMemoryService (line 47) | func NewMemoryService(memories repository.MemoryRepo, llmClient *llm.Cli... constant rrfK (line 221) | rrfK = 60.0 function rrfMerge (line 223) | func rrfMerge(ftsResults, vecResults []domain.Memory) map[string]float64 { function paginateResults (line 238) | func paginateResults(results []domain.Memory, offset, limit int) ([]doma... function observeRecallEmbeddingRequest (line 271) | func observeRecallEmbeddingRequest(embedder *embed.Embedder, err error) { function observeRecallAutoEmbeddingRequest (line 279) | func observeRecallAutoEmbeddingRequest(autoModel string, err error, skip... function observeRecallEmbeddingRequestByModel (line 286) | func observeRecallEmbeddingRequestByModel(model string, err error) { function collectMems (line 674) | func collectMems(kwResults, vecResults []domain.Memory) map[string]domai... function sortByScore (line 687) | func sortByScore(mems map[string]domain.Memory, scores map[string]float6... function setScores (line 702) | func setScores(page []domain.Memory, scores map[string]float64) []domain... function applyTypeWeights (line 714) | func applyTypeWeights(mems map[string]domain.Memory, scores map[string]f... function relativeAge (line 724) | func relativeAge(t time.Time) string { function populateRelativeAge (line 774) | func populateRelativeAge(memories []domain.Memory) []domain.Memory { function ValidateBulkDeleteIDs (line 854) | func ValidateBulkDeleteIDs(ids []string) ([]string, error) { function ValidateBulkMemoryInputs (line 937) | func ValidateBulkMemoryInputs(items []BulkMemoryInput) error { type BulkMemoryInput (line 958) | type BulkMemoryInput struct function validateMemoryInput (line 964) | func validateMemoryInput(content string, tags []string) error { FILE: server/internal/service/memory_bulk_delete_test.go function TestBulkDelete_EmptyIDs_ReturnsValidationError (line 14) | func TestBulkDelete_EmptyIDs_ReturnsValidationError(t *testing.T) { function TestBulkDelete_AllEmptyStrings_ReturnsValidationError (line 34) | func TestBulkDelete_AllEmptyStrings_ReturnsValidationError(t *testing.T) { function TestBulkDelete_TooManyIDs_ReturnsValidationError (line 54) | func TestBulkDelete_TooManyIDs_ReturnsValidationError(t *testing.T) { function TestBulkDelete_DeduplicatesAndSkipsEmpty (line 79) | func TestBulkDelete_DeduplicatesAndSkipsEmpty(t *testing.T) { function TestBulkDelete_DeletedCountFromRepoIsReturned (line 105) | func TestBulkDelete_DeletedCountFromRepoIsReturned(t *testing.T) { FILE: server/internal/service/memory_test.go function floatEqual (line 18) | func floatEqual(a, b float64) bool { type bulkCreateCaptureRepo (line 22) | type bulkCreateCaptureRepo struct method BulkCreate (line 27) | func (m *bulkCreateCaptureRepo) BulkCreate(_ context.Context, memories... function TestApplyTypeWeights (line 36) | func TestApplyTypeWeights(t *testing.T) { function TestRrfMerge (line 85) | func TestRrfMerge(t *testing.T) { function TestValidateMemoryInput (line 166) | func TestValidateMemoryInput(t *testing.T) { function TestCollectMems (line 242) | func TestCollectMems(t *testing.T) { function TestSortByScore (line 295) | func TestSortByScore(t *testing.T) { function TestSearchColdStartFallbackToKeyword (line 332) | func TestSearchColdStartFallbackToKeyword(t *testing.T) { function TestSearchFTSOnlyWhenAvailable (line 362) | func TestSearchFTSOnlyWhenAvailable(t *testing.T) { function TestSearchEmptyQueryReturnsList (line 394) | func TestSearchEmptyQueryReturnsList(t *testing.T) { function TestSearchEmptyQueryPopulatesRelativeAge (line 413) | func TestSearchEmptyQueryPopulatesRelativeAge(t *testing.T) { function TestSearchIgnoresSessionAndSourceFilters (line 439) | func TestSearchIgnoresSessionAndSourceFilters(t *testing.T) { function TestCreateFallsBackToRawWhenLLMUnavailable (line 472) | func TestCreateFallsBackToRawWhenLLMUnavailable(t *testing.T) { function TestCreatePinnedUsesBulkCreateSemantics (line 496) | func TestCreatePinnedUsesBulkCreateSemantics(t *testing.T) { function TestCreateRunsReconcilePipeline (line 549) | func TestCreateRunsReconcilePipeline(t *testing.T) { function TestRelativeAge (line 585) | func TestRelativeAge(t *testing.T) { FILE: server/internal/service/recall.go type RecallSourcePool (line 5) | type RecallSourcePool constant RecallSourcePinned (line 8) | RecallSourcePinned RecallSourcePool = "pinned" constant RecallSourceInsight (line 9) | RecallSourceInsight RecallSourcePool = "insight" constant RecallSourceSession (line 10) | RecallSourceSession RecallSourcePool = "session" type RecallCandidate (line 13) | type RecallCandidate struct type RecallCandidateOptions (line 23) | type RecallCandidateOptions struct function normalizeRecallLimit (line 32) | func normalizeRecallLimit(limit, fallback int) int { function normalizeRecallFetchMultiplier (line 39) | func normalizeRecallFetchMultiplier(multiplier, fallback int) int { function mergeRecallCandidates (line 46) | func mergeRecallCandidates( function mergeRecallCandidatesWithExtraWeight (line 53) | func mergeRecallCandidatesWithExtraWeight( function dedupRecallCandidatesByContent (line 106) | func dedupRecallCandidatesByContent(candidates []RecallCandidate) []Reca... FILE: server/internal/service/search_source_turns.go constant defaultSearchSourceTurnMinScore (line 14) | defaultSearchSourceTurnMinScore = 2 constant defaultSearchSourceTurnPerMemoryCap (line 15) | defaultSearchSourceTurnPerMemoryCap = 2 constant defaultSearchSourceTurnTotalCap (line 16) | defaultSearchSourceTurnTotalCap = 12 type searchSourceTurnCandidate (line 21) | type searchSourceTurnCandidate struct function finalizeSearchResults (line 28) | func finalizeSearchResults(memories []domain.Memory, query string) []dom... function decorateSearchResultsWithSourceTurns (line 32) | func decorateSearchResultsWithSourceTurns(memories []domain.Memory, quer... function selectSearchSourceTurns (line 54) | func selectSearchSourceTurns(memories []domain.Memory, query string) map... function shouldDecorateSearchMemory (line 119) | func shouldDecorateSearchMemory(memory domain.Memory) bool { function hasSearchDirectSeq (line 132) | func hasSearchDirectSeq(metadata json.RawMessage) bool { function parseSourceTurnsFromMetadata (line 144) | func parseSourceTurnsFromMetadata(metadata json.RawMessage) []sourceTurn... function parseJSONInt (line 163) | func parseJSONInt(raw json.RawMessage) (int, bool) { function sourceTurnSeqs (line 175) | func sourceTurnSeqs(turns []sourceTurnMetadata) []int { function formatSearchMemoryWithSourceTurns (line 183) | func formatSearchMemoryWithSourceTurns(content string, turns []sourceTur... function scoreSearchSourceTurn (line 194) | func scoreSearchSourceTurn(question, memoryContent, sourceContent string... function extractSearchSpeakerLabel (line 235) | func extractSearchSpeakerLabel(content string) string { function extractSearchTargetSpeakerTokens (line 243) | func extractSearchTargetSpeakerTokens(question string) []string { function tokenizeForSourceTurnScoring (line 251) | func tokenizeForSourceTurnScoring(text string) []string { function tokenSet (line 267) | func tokenSet(tokens []string) map[string]struct{} { function readPositiveEnvInt (line 275) | func readPositiveEnvInt(name string, fallback int) int { function minInt (line 287) | func minInt(left, right int) int { FILE: server/internal/service/search_source_turns_test.go function withSearchEnv (line 12) | func withSearchEnv(t *testing.T, values map[string]string, fn func()) { function TestDecorateSearchResultsWithSourceTurnsSelectsSpeakerAwareTurn (line 38) | func TestDecorateSearchResultsWithSourceTurnsSelectsSpeakerAwareTurn(t *... function TestDecorateSearchResultsWithSourceTurnsClearsUnselectedProvenance (line 79) | func TestDecorateSearchResultsWithSourceTurnsClearsUnselectedProvenance(... FILE: server/internal/service/session.go constant defaultSessionFetchMultiplier (line 21) | defaultSessionFetchMultiplier = 3 constant DefaultSessionLimit (line 22) | DefaultSessionLimit = 10 constant sessionAdjacentTurnWeight (line 23) | sessionAdjacentTurnWeight = 0.8 constant defaultAdjacentTurnRadius (line 24) | defaultAdjacentTurnRadius = 1 constant defaultAdjacentTurnTopN (line 25) | defaultAdjacentTurnTopN = 4 constant minAdjacentTurnFetchLimit (line 26) | minAdjacentTurnFetchLimit = 16 constant maxAdjacentTurnFetchLimit (line 27) | maxAdjacentTurnFetchLimit = 64 type SessionService (line 30) | type SessionService struct method ListBySessionIDs (line 44) | func (s *SessionService) ListBySessionIDs(ctx context.Context, session... method PatchTags (line 48) | func (s *SessionService) PatchTags(ctx context.Context, sessionID, con... method BulkCreate (line 52) | func (s *SessionService) BulkCreate(ctx context.Context, agentName str... method CreateRawTurn (line 67) | func (s *SessionService) CreateRawTurn(ctx context.Context, sessionID,... method Search (line 75) | func (s *SessionService) Search(ctx context.Context, f domain.MemoryFi... method SearchCandidates (line 105) | func (s *SessionService) SearchCandidates( method autoHybridSearch (line 135) | func (s *SessionService) autoHybridSearch(ctx context.Context, f domai... method autoHybridCandidates (line 158) | func (s *SessionService) autoHybridCandidates( method hybridSearch (line 202) | func (s *SessionService) hybridSearch(ctx context.Context, f domain.Me... method hybridCandidates (line 229) | func (s *SessionService) hybridCandidates( method ftsSearch (line 261) | func (s *SessionService) ftsSearch(ctx context.Context, f domain.Memor... method ftsCandidates (line 270) | func (s *SessionService) ftsCandidates(ctx context.Context, f domain.M... method keywordSearch (line 282) | func (s *SessionService) keywordSearch(ctx context.Context, f domain.M... method keywordCandidates (line 291) | func (s *SessionService) keywordCandidates(ctx context.Context, f doma... method ftsOrKeyword (line 303) | func (s *SessionService) ftsOrKeyword(ctx context.Context, f domain.Me... method adjacentTurnResults (line 318) | func (s *SessionService) adjacentTurnResults( function NewSessionService (line 36) | func NewSessionService(sessions repository.SessionRepo, embedder *embed.... function topAdjacentTurnSeeds (line 370) | func topAdjacentTurnSeeds(candidates []RecallCandidate, topN int) []Reca... function adjacentTurnFetchLimit (line 396) | func adjacentTurnFetchLimit(seeds []RecallCandidate, radius int) int { function adjacentTurnMemories (line 417) | func adjacentTurnMemories(seeds []RecallCandidate, sessions []*domain.Se... function adjacentTurnIndexes (line 466) | func adjacentTurnIndexes(seedIndex, total, radius int) []int { function sessionSeqFromMemory (line 481) | func sessionSeqFromMemory(memory domain.Memory) (int, bool) { function sessionToMemory (line 494) | func sessionToMemory(session *domain.Session) domain.Memory { function applyMinScore (line 515) | func applyMinScore(results []domain.Memory, minScore float64) []domain.M... function dedupByContent (line 531) | func dedupByContent(mems []domain.Memory) []domain.Memory { function sessionContentHash (line 555) | func sessionContentHash(sessionID, role, content string, seq *int) string { function SessionContentHash (line 565) | func SessionContentHash(sessionID, role, content string, seq *int) string { function effectiveMessageSeq (line 569) | func effectiveMessageSeq(msg IngestMessage, fallback int) int { function newSessionFromIngestMessage (line 576) | func newSessionFromIngestMessage(sessionID, agentID, source string, fall... function newSession (line 581) | func newSession(sessionID, agentID, source string, seq int, role, conten... function detectSessionContentType (line 597) | func detectSessionContentType(content string) string { FILE: server/internal/service/session_test.go type stubSessionRepo (line 13) | type stubSessionRepo struct method BulkCreate (line 42) | func (s *stubSessionRepo) BulkCreate(_ context.Context, sessions []*do... method PatchTags (line 48) | func (s *stubSessionRepo) PatchTags(_ context.Context, sessionID, cont... method AutoVectorSearch (line 56) | func (s *stubSessionRepo) AutoVectorSearch(_ context.Context, _ string... method VectorSearch (line 60) | func (s *stubSessionRepo) VectorSearch(_ context.Context, _ []float32,... method FTSSearch (line 64) | func (s *stubSessionRepo) FTSSearch(_ context.Context, _ string, _ dom... method KeywordSearch (line 68) | func (s *stubSessionRepo) KeywordSearch(_ context.Context, _ string, _... method FTSAvailable (line 72) | func (s *stubSessionRepo) FTSAvailable() bool { return s.ftsAvail } method ListBySessionIDs (line 74) | func (s *stubSessionRepo) ListBySessionIDs(_ context.Context, ids []st... function intPtr (line 38) | func intPtr(v int) *int { function newTestSessionService (line 80) | func newTestSessionService(repo *stubSessionRepo) *SessionService { function TestSessionService_BulkCreate_buildsCorrectSessions (line 84) | func TestSessionService_BulkCreate_buildsCorrectSessions(t *testing.T) { function TestSessionService_BulkCreate_usesExplicitSeqWhenProvided (line 141) | func TestSessionService_BulkCreate_usesExplicitSeqWhenProvided(t *testin... function TestSessionService_BulkCreate_emptyMessages (line 168) | func TestSessionService_BulkCreate_emptyMessages(t *testing.T) { function TestSessionService_BulkCreate_propagatesRepoError (line 181) | func TestSessionService_BulkCreate_propagatesRepoError(t *testing.T) { function TestSessionService_PatchTags_delegates (line 196) | func TestSessionService_PatchTags_delegates(t *testing.T) { function TestSessionService_PatchTags_propagatesError (line 219) | func TestSessionService_PatchTags_propagatesError(t *testing.T) { function TestSessionService_Search_keywordPath_returnsSessionType (line 230) | func TestSessionService_Search_keywordPath_returnsSessionType(t *testing... function TestSessionService_Search_offsetZeroedBeforeRepo (line 256) | func TestSessionService_Search_offsetZeroedBeforeRepo(t *testing.T) { function TestSessionService_Search_defaultLimit (line 277) | func TestSessionService_Search_defaultLimit(t *testing.T) { function TestSessionService_SearchCandidates_ExpandsAdjacentTurns (line 287) | func TestSessionService_SearchCandidates_ExpandsAdjacentTurns(t *testing... function TestSessionContentHash_differentInputsProduceDifferentHashes (line 330) | func TestSessionContentHash_differentInputsProduceDifferentHashes(t *tes... function TestSessionContentHash_sameInputProducesSameHash (line 345) | func TestSessionContentHash_sameInputProducesSameHash(t *testing.T) { function TestSessionContentHash_explicitSeqProducesDistinctHashes (line 353) | func TestSessionContentHash_explicitSeqProducesDistinctHashes(t *testing... type capturingSessionRepo (line 361) | type capturingSessionRepo struct method BulkCreate (line 366) | func (c *capturingSessionRepo) BulkCreate(ctx context.Context, s []*do... method PatchTags (line 369) | func (c *capturingSessionRepo) PatchTags(ctx context.Context, sid, has... method AutoVectorSearch (line 372) | func (c *capturingSessionRepo) AutoVectorSearch(ctx context.Context, q... method VectorSearch (line 376) | func (c *capturingSessionRepo) VectorSearch(ctx context.Context, v []f... method FTSSearch (line 380) | func (c *capturingSessionRepo) FTSSearch(ctx context.Context, q string... method KeywordSearch (line 384) | func (c *capturingSessionRepo) KeywordSearch(ctx context.Context, q st... method FTSAvailable (line 388) | func (c *capturingSessionRepo) FTSAvailable() bool { return c.stub.FTS... method ListBySessionIDs (line 390) | func (c *capturingSessionRepo) ListBySessionIDs(ctx context.Context, i... FILE: server/internal/service/source_provenance.go constant sourceSeqsMetadataKey (line 12) | sourceSeqsMetadataKey = "source_seqs" constant sourceTurnsMetadataKey (line 13) | sourceTurnsMetadataKey = "source_turns" constant maxSourceSeqsPerFact (line 14) | maxSourceSeqsPerFact = 6 type sourceTurnMetadata (line 30) | type sourceTurnMetadata struct function annotateFactsWithSourceSeqs (line 35) | func annotateFactsWithSourceSeqs(input preparedExtractionInput, facts []... function metadataForExtractedFact (line 54) | func metadataForExtractedFact(fact ExtractedFact) json.RawMessage { function SetSourceProvenanceMetadata (line 58) | func SetSourceProvenanceMetadata(existing json.RawMessage, seqs []int, t... function MergeSourceSeqMetadata (line 106) | func MergeSourceSeqMetadata(existing json.RawMessage, seqs []int) json.R... function SetSourceSeqMetadata (line 110) | func SetSourceSeqMetadata(existing json.RawMessage, seqs []int) json.Raw... function sourceSeqMetadata (line 114) | func sourceSeqMetadata(existing json.RawMessage, seqs []int, mergeExisti... function setSourceSeqMetadata (line 145) | func setSourceSeqMetadata(existing json.RawMessage, seqs []int) json.Raw... function sourceSeqsForReconcileText (line 182) | func sourceSeqsForReconcileText(text string, facts []ExtractedFact) []int { function sourceTurnsForReconcileText (line 236) | func sourceTurnsForReconcileText(text string, facts []ExtractedFact) []s... function inferSourceSeqs (line 290) | func inferSourceSeqs(text string, messages []IngestMessage) []int { function sourceMinHits (line 345) | func sourceMinHits(tokenCount int) int { function sourceTokenSet (line 356) | func sourceTokenSet(text string) map[string]struct{} { function countTokenOverlap (line 372) | func countTokenOverlap(left, right map[string]struct{}) int { function messageSourceSeqs (line 385) | func messageSourceSeqs(messages []IngestMessage) []int { function sourceTurnsFromMessages (line 399) | func sourceTurnsFromMessages(messages []IngestMessage, seqs []int) []sou... function parseSourceSeqsRaw (line 430) | func parseSourceSeqsRaw(raw json.RawMessage) []int { function parsePositiveInt (line 455) | func parsePositiveInt(value string) (int, bool) { function normalizeSourceSeqs (line 470) | func normalizeSourceSeqs(seqs []int) []int { function normalizeSourceTurns (line 493) | func normalizeSourceTurns(seqs []int, turns []sourceTurnMetadata) []sour... FILE: server/internal/service/space_chain.go type SpaceChainService (line 17) | type SpaceChainService struct method Create (line 60) | func (s *SpaceChainService) Create(ctx context.Context, req CreateSpac... method Get (line 99) | func (s *SpaceChainService) Get(ctx context.Context, id string) (*doma... method GetByKey (line 107) | func (s *SpaceChainService) GetByKey(ctx context.Context, key string) ... method Authorize (line 118) | func (s *SpaceChainService) Authorize(ctx context.Context, chainID, ke... method AuthorizeManagement (line 129) | func (s *SpaceChainService) AuthorizeManagement(ctx context.Context, c... method Update (line 147) | func (s *SpaceChainService) Update(ctx context.Context, chainID string... method Delete (line 166) | func (s *SpaceChainService) Delete(ctx context.Context, chainID, delet... method CreateBinding (line 174) | func (s *SpaceChainService) CreateBinding(ctx context.Context, chainID... method ListBindings (line 197) | func (s *SpaceChainService) ListBindings(ctx context.Context, chainID ... method DisableBinding (line 201) | func (s *SpaceChainService) DisableBinding(ctx context.Context, chainI... method ReplaceNodes (line 234) | func (s *SpaceChainService) ReplaceNodes(ctx context.Context, chainID ... method ListNodes (line 277) | func (s *SpaceChainService) ListNodes(ctx context.Context, chainID str... method RemoveNodeByExternalSpaceID (line 281) | func (s *SpaceChainService) RemoveNodeByExternalSpaceID(ctx context.Co... method KeyStatus (line 285) | func (s *SpaceChainService) KeyStatus(ctx context.Context, apiKey stri... function NewSpaceChainService (line 21) | func NewSpaceChainService(chains repository.SpaceChainRepo) *SpaceChainS... type CreateSpaceChainRequest (line 25) | type CreateSpaceChainRequest struct type CreateSpaceChainResult (line 32) | type CreateSpaceChainResult struct type UpdateSpaceChainRequest (line 40) | type UpdateSpaceChainRequest struct type ReplaceSpaceChainNodesRequest (line 45) | type ReplaceSpaceChainNodesRequest struct type SpaceChainNodeInput (line 49) | type SpaceChainNodeInput struct type CreateSpaceChainBindingRequest (line 55) | type CreateSpaceChainBindingRequest struct function generateChainKey (line 303) | func generateChainKey() string { function keyPreview (line 311) | func keyPreview(key string) string { FILE: server/internal/service/space_chain_test.go function TestSpaceChainCreateGeneratesChainKeyPrefix (line 12) | func TestSpaceChainCreateGeneratesChainKeyPrefix(t *testing.T) { function TestSpaceChainReplaceNodesUsesZeroBasedPositions (line 28) | func TestSpaceChainReplaceNodesUsesZeroBasedPositions(t *testing.T) { function TestSpaceChainReplaceNodesRejectsDuplicates (line 49) | func TestSpaceChainReplaceNodesRejectsDuplicates(t *testing.T) { function TestSpaceChainReplaceNodesRejectsChainKeyNode (line 75) | func TestSpaceChainReplaceNodesRejectsChainKeyNode(t *testing.T) { function TestSpaceChainDisableBindingRejectsLastActiveKey (line 88) | func TestSpaceChainDisableBindingRejectsLastActiveKey(t *testing.T) { type fakeSpaceChainRepo (line 109) | type fakeSpaceChainRepo struct method Create (line 115) | func (r *fakeSpaceChainRepo) Create(_ context.Context, chain *domain.S... method GetByID (line 124) | func (r *fakeSpaceChainRepo) GetByID(_ context.Context, id string) (*d... method GetByKey (line 133) | func (r *fakeSpaceChainRepo) GetByKey(_ context.Context, _ string) (*d... method GetByKeyIncludingDisabled (line 140) | func (r *fakeSpaceChainRepo) GetByKeyIncludingDisabled(_ context.Conte... method Update (line 147) | func (r *fakeSpaceChainRepo) Update(_ context.Context, chain *domain.S... method SoftDelete (line 152) | func (r *fakeSpaceChainRepo) SoftDelete(_ context.Context, _, _ string... method CreateBinding (line 154) | func (r *fakeSpaceChainRepo) CreateBinding(_ context.Context, binding ... method ListBindings (line 161) | func (r *fakeSpaceChainRepo) ListBindings(_ context.Context, _ string)... method DisableBinding (line 168) | func (r *fakeSpaceChainRepo) DisableBinding(_ context.Context, _, bind... method ListNodes (line 173) | func (r *fakeSpaceChainRepo) ListNodes(_ context.Context, _ string) ([... method ReplaceNodes (line 177) | func (r *fakeSpaceChainRepo) ReplaceNodes(_ context.Context, _ string,... method RemoveNodeByExternalSpaceID (line 182) | func (r *fakeSpaceChainRepo) RemoveNodeByExternalSpaceID(_ context.Con... method KeyStatus (line 186) | func (r *fakeSpaceChainRepo) KeyStatus(_ context.Context, _ string) (d... FILE: server/internal/service/temporal_fact.go constant temporalKindExplicitAbsolute (line 13) | temporalKindExplicitAbsolute = "explicit_absolute" constant temporalKindLocalAnchorRelative (line 14) | temporalKindLocalAnchorRelative = "local_anchor_relative" constant temporalKindHeaderAnchorRelative (line 15) | temporalKindHeaderAnchorRelative = "header_anchor_relative" constant temporalKindDeicticRelative (line 16) | temporalKindDeicticRelative = "deictic_relative" constant temporalAnchorSourceLocal (line 20) | temporalAnchorSourceLocal = "local" constant temporalAnchorSourceHeader (line 21) | temporalAnchorSourceHeader = "header" constant temporalAnchorSourceNow (line 22) | temporalAnchorSourceNow = "now" constant temporalGranularityDay (line 26) | temporalGranularityDay = "day" constant temporalGranularityWeek (line 27) | temporalGranularityWeek = "week" constant temporalGranularityMonth (line 28) | temporalGranularityMonth = "month" constant temporalGranularityYear (line 29) | temporalGranularityYear = "year" constant temporalGranularitySeason (line 30) | temporalGranularitySeason = "season" type TemporalMetadata (line 33) | type TemporalMetadata struct type temporalMetadataEnvelope (line 42) | type temporalMetadataEnvelope struct type temporalAnchorCandidate (line 46) | type temporalAnchorCandidate struct type temporalAnchorDate (line 51) | type temporalAnchorDate struct function MergeTemporalMetadata (line 122) | func MergeTemporalMetadata(existing json.RawMessage, temporal *TemporalM... function ParseTemporalMetadata (line 156) | func ParseTemporalMetadata(raw json.RawMessage) (*TemporalMetadata, bool) { function TemporalRecallProjection (line 168) | func TemporalRecallProjection(content string, metadata json.RawMessage) ... function ProjectTemporalFactText (line 183) | func ProjectTemporalFactText(content string, temporal *TemporalMetadata)... function CleanTemporalContent (line 187) | func CleanTemporalContent(content string) (string, string) { function StripTemporalProjection (line 191) | func StripTemporalProjection(content string) string { function NormalizeTemporalRecallQuery (line 199) | func NormalizeTemporalRecallQuery(query string, now time.Time) string { function normalizeTemporalFacts (line 219) | func normalizeTemporalFacts(input preparedExtractionInput, facts []Extra... function normalizeTemporalFactsAt (line 223) | func normalizeTemporalFactsAt(input preparedExtractionInput, facts []Ext... function normalizeRawFallbackFacts (line 241) | func normalizeRawFallbackFacts(input preparedExtractionInput, facts []Ex... function normalizeRawFallbackFactsAt (line 245) | func normalizeRawFallbackFactsAt(input preparedExtractionInput, facts []... function NormalizeStandaloneTemporalContent (line 254) | func NormalizeStandaloneTemporalContent(content string, now time.Time) (... function normalizeRawFallbackFact (line 258) | func normalizeRawFallbackFact(fact ExtractedFact, anchors []temporalAnch... function normalizeTemporalFactContent (line 273) | func normalizeTemporalFactContent(text string, anchors []temporalAnchorC... function buildTemporalAnchorCandidates (line 301) | func buildTemporalAnchorCandidates(messages []IngestMessage) []temporalA... function extractTemporalAnchor (line 319) | func extractTemporalAnchor(content string) (time.Time, string, bool) { function parseTemporalAnchorDate (line 344) | func parseTemporalAnchorDate(value string) (time.Time, bool) { function sanitizeLegacyTemporalContent (line 354) | func sanitizeLegacyTemporalContent(content string) (string, string) { function hasExplicitAbsoluteTime (line 375) | func hasExplicitAbsoluteTime(text string) bool { function resolveLocalAnchorRelative (line 396) | func resolveLocalAnchorRelative(text string) (string, *TemporalMetadata,... function resolveLocalAnchorDisplay (line 434) | func resolveLocalAnchorDisplay(text string) (string, bool) { function parseChineseAnchorDate (line 450) | func parseChineseAnchorDate(raw string) (temporalAnchorDate, bool) { function formatAnchorDisplay (line 471) | func formatAnchorDisplay(hasYear bool, value time.Time) string { function resolveHeaderAnchoredRelative (line 478) | func resolveHeaderAnchoredRelative(text string, anchor time.Time) (strin... function resolveChineseHeaderAnchoredRelative (line 499) | func resolveChineseHeaderAnchoredRelative(text string, anchor time.Time)... function selectTemporalAnchor (line 555) | func selectTemporalAnchor(text string, anchors []temporalAnchorCandidate... function temporalMatchTokens (line 589) | func temporalMatchTokens(text string) map[string]struct{} { function overlapTemporalTokens (line 609) | func overlapTemporalTokens(left, right map[string]struct{}) int { function buildDeicticTemporalMetadata (line 622) | func buildDeicticTemporalMetadata(text string, anchor time.Time, anchorS... function buildRangeTemporalMetadata (line 711) | func buildRangeTemporalMetadata(kind, anchorSource, granularity string, ... function buildMonthTemporalMetadata (line 729) | func buildMonthTemporalMetadata(kind, anchorSource string, month time.Ti... function buildYearTemporalMetadata (line 740) | func buildYearTemporalMetadata(kind, anchorSource string, year int) *Tem... function buildSeasonTemporalMetadata (line 751) | func buildSeasonTemporalMetadata(kind, anchorSource, season string, year... function buildDisplayTemporalMetadata (line 762) | func buildDisplayTemporalMetadata(kind, anchorSource, granularity, displ... function shouldProjectTemporalDisplay (line 788) | func shouldProjectTemporalDisplay(content, display string) bool { function appendTemporalQueryTokens (line 792) | func appendTemporalQueryTokens(query, display string, aliases []string) ... function temporalDisplayAliases (line 811) | func temporalDisplayAliases(display string) []string { function inferDisplayGranularity (line 832) | func inferDisplayGranularity(display string) string { function inferResolvedGranularity (line 849) | func inferResolvedGranularity(text string) string { function inferDisplayFromRewrittenText (line 872) | func inferDisplayFromRewrittenText(text string) string { function parseFlexibleLongDate (line 892) | func parseFlexibleLongDate(raw string) (time.Time, bool) { function parseChineseFullDate (line 901) | func parseChineseFullDate(raw string) (time.Time, bool) { function resolveRelativeTemporalText (line 909) | func resolveRelativeTemporalText(text string, anchor time.Time) (string,... function temporalWeekdayPatterns (line 965) | func temporalWeekdayPatterns() map[time.Weekday]*regexp.Regexp { function temporalNextWeekdayPatterns (line 977) | func temporalNextWeekdayPatterns() map[time.Weekday]*regexp.Regexp { function previousWeekday (line 989) | func previousWeekday(anchor time.Time, weekday time.Weekday) time.Time { function nextWeekday (line 997) | func nextWeekday(anchor time.Time, weekday time.Weekday) time.Time { function temporalHanBigrams (line 1005) | func temporalHanBigrams(text string) []string { function startOfDay (line 1031) | func startOfDay(value time.Time) time.Time { function startOfMonth (line 1035) | func startOfMonth(value time.Time) time.Time { function startOfChineseWeek (line 1040) | func startOfChineseWeek(value time.Time) time.Time { function formatISODate (line 1049) | func formatISODate(value time.Time) string { function formatLongDate (line 1053) | func formatLongDate(value time.Time) string { function formatMonthYear (line 1057) | func formatMonthYear(value time.Time) string { function formatChineseDate (line 1061) | func formatChineseDate(value time.Time) string { function formatChineseMonth (line 1065) | func formatChineseMonth(value time.Time) string { function formatChineseWeekRange (line 1069) | func formatChineseWeekRange(start, end time.Time) string { function formatChineseYear (line 1073) | func formatChineseYear(year int) string { type chineseRelativeWeekdayToken (line 1077) | type chineseRelativeWeekdayToken struct function chineseRelativeWeekdayTokens (line 1083) | func chineseRelativeWeekdayTokens() []chineseRelativeWeekdayToken { function anchoredChineseWeekday (line 1120) | func anchoredChineseWeekday(anchor time.Time, weekOffset int, weekday ti... function hasRelativeChineseWeekday (line 1129) | func hasRelativeChineseWeekday(text string) bool { function resolveRelativeChineseWeekday (line 1138) | func resolveRelativeChineseWeekday(anchor time.Time, text string) (time.... function hasRelativeEnglishWeekday (line 1147) | func hasRelativeEnglishWeekday(text string) bool { function resolveRelativeEnglishWeekday (line 1161) | func resolveRelativeEnglishWeekday(anchor time.Time, text string) (time.... FILE: server/internal/service/tenant.go type utmRepo (line 20) | type utmRepo interface type tenantDBPool (line 24) | type tenantDBPool interface type TenantService (line 29) | type TenantService struct method WithUTMRepo (line 66) | func (s *TenantService) WithUTMRepo(r utmRepo) *TenantService { method KeyStatus (line 72) | func (s *TenantService) KeyStatus(ctx context.Context, apiKey string) ... method logProvisionStart (line 124) | func (s *TenantService) logProvisionStart(ctx context.Context, req Pro... method logProvisionComplete (line 135) | func (s *TenantService) logProvisionComplete(ctx context.Context, tena... method logProvisionFailure (line 147) | func (s *TenantService) logProvisionFailure(ctx context.Context, tenan... method Provision (line 165) | func (s *TenantService) Provision(ctx context.Context, req ProvisionRe... method GetInfo (line 305) | func (s *TenantService) GetInfo(ctx context.Context, tenantID string) ... method EnsureSessionsTable (line 341) | func (s *TenantService) EnsureSessionsTable(ctx context.Context, db *s... function NewTenantService (line 42) | func NewTenantService( type ProvisionResult (line 116) | type ProvisionResult struct type ProvisionRequest (line 120) | type ProvisionRequest struct function utmFromRequest (line 372) | func utmFromRequest(tenantID string, raw map[string]string) *domain.Tena... FILE: server/internal/service/tenant_test.go function TestBuildMemorySchema (line 21) | func TestBuildMemorySchema(t *testing.T) { function TestProvisionRejectsNonTiDBBackend (line 87) | func TestProvisionRejectsNonTiDBBackend(t *testing.T) { function TestKeyStatus (line 109) | func TestKeyStatus(t *testing.T) { function TestKeyStatusLogsUnknownStatusWithoutAPIKey (line 200) | func TestKeyStatusLogsUnknownStatusWithoutAPIKey(t *testing.T) { function TestKeyStatusLogsDeletedAtMismatchWithoutAPIKey (line 235) | func TestKeyStatusLogsDeletedAtMismatchWithoutAPIKey(t *testing.T) { function TestProvision_WithEncryptor (line 270) | func TestProvision_WithEncryptor(t *testing.T) { type mockProvisioner (line 331) | type mockProvisioner struct method Provision (line 336) | func (m *mockProvisioner) Provision(ctx context.Context) (*tenant.Clus... method InitSchema (line 343) | func (m *mockProvisioner) InitSchema(ctx context.Context, db *sql.DB) ... method ProviderType (line 347) | func (m *mockProvisioner) ProviderType() string { type mockTenantRepo (line 352) | type mockTenantRepo struct method Create (line 358) | func (m *mockTenantRepo) Create(ctx context.Context, t *domain.Tenant)... method GetByID (line 363) | func (m *mockTenantRepo) GetByID(ctx context.Context, id string) (*dom... method GetByName (line 373) | func (m *mockTenantRepo) GetByName(ctx context.Context, name string) (... method UpdateStatus (line 377) | func (m *mockTenantRepo) UpdateStatus(ctx context.Context, id string, ... method UpdateSchemaVersion (line 381) | func (m *mockTenantRepo) UpdateSchemaVersion(ctx context.Context, id s... method TouchActivity (line 385) | func (m *mockTenantRepo) TouchActivity(ctx context.Context, tenantID s... method UpsertMemoryStats (line 389) | func (m *mockTenantRepo) UpsertMemoryStats(ctx context.Context, tenant... method CountActiveTenantsSince (line 393) | func (m *mockTenantRepo) CountActiveTenantsSince(ctx context.Context, ... method SumActiveMemoryStats (line 397) | func (m *mockTenantRepo) SumActiveMemoryStats(ctx context.Context) (in... type mockPool (line 401) | type mockPool struct method Backend (line 407) | func (m *mockPool) Backend() string { method Get (line 411) | func (m *mockPool) Get(ctx context.Context, tenantID, dsn string) (*sq... function decodeJSONLogs (line 418) | func decodeJSONLogs(t *testing.T, buf *bytes.Buffer) []map[string]any { function findLogEntry (line 439) | func findLogEntry(t *testing.T, entries []map[string]any, message string... function TestProvision_LogsUTMOnSuccess (line 452) | func TestProvision_LogsUTMOnSuccess(t *testing.T) { function TestProvision_LogsUTMOnFailure (line 522) | func TestProvision_LogsUTMOnFailure(t *testing.T) { function TestBuildDB9MemorySchema (line 576) | func TestBuildDB9MemorySchema(t *testing.T) { function TestBuildMemorySchema_DimensionsArg (line 653) | func TestBuildMemorySchema_DimensionsArg(t *testing.T) { FILE: server/internal/service/upload.go constant uploadChunkSize (line 25) | uploadChunkSize = 50 constant uploadMemoryBatchSize (line 26) | uploadMemoryBatchSize = 100 constant defaultTaskTimeout (line 27) | defaultTaskTimeout = 30 * time.Minute type SessionFile (line 30) | type SessionFile struct type MemoryFile (line 37) | type MemoryFile struct type MemoryFileEntry (line 43) | type MemoryFileEntry struct type UploadWorker (line 52) | type UploadWorker struct method Run (line 107) | func (w *UploadWorker) Run(ctx context.Context) error { method processTask (line 155) | func (w *UploadWorker) processTask(ctx context.Context, task domain.Up... method recordActivity (line 365) | func (w *UploadWorker) recordActivity(tenantID string) { method recordActivityOnly (line 372) | func (w *UploadWorker) recordActivityOnly(tenantID string) { method recordMemoryStats (line 379) | func (w *UploadWorker) recordMemoryStats(ctx context.Context, tenantID... method failTask (line 400) | func (w *UploadWorker) failTask(ctx context.Context, task domain.Uploa... method cleanupFile (line 417) | func (w *UploadWorker) cleanupFile(task domain.UploadTask, logger *slo... function NewUploadWorker (line 69) | func NewUploadWorker( function marshalMetadata (line 429) | func marshalMetadata(metadata map[string]any) (json.RawMessage, error) { function parseMemoryFile (line 444) | func parseMemoryFile(data []byte, fallbackAgentID string) (MemoryFile, e... function parseSessionFile (line 470) | func parseSessionFile(data []byte) (SessionFile, error) { function parseOpenClawLine (line 515) | func parseOpenClawLine(line []byte) *IngestMessage { function flattenContentBlocks (line 541) | func flattenContentBlocks(raw json.RawMessage) string { function chunkMessages (line 573) | func chunkMessages(msgs []IngestMessage, size int) [][]IngestMessage { FILE: server/internal/service/upload_test.go function TestChunkMessages (line 9) | func TestChunkMessages(t *testing.T) { function TestMarshalMetadata (line 81) | func TestMarshalMetadata(t *testing.T) { function TestParseSessionFile (line 109) | func TestParseSessionFile(t *testing.T) { function TestParseMemoryFile (line 188) | func TestParseMemoryFile(t *testing.T) { function TestUploadWorkerRecordActivity (line 256) | func TestUploadWorkerRecordActivity(t *testing.T) { function TestUploadWorkerRecordActivityOnlyDoesNotRefresh (line 271) | func TestUploadWorkerRecordActivityOnlyDoesNotRefresh(t *testing.T) { type uploadMemoryStatsRepo (line 287) | type uploadMemoryStatsRepo struct method CountStats (line 294) | func (r *uploadMemoryStatsRepo) CountStats(context.Context) (int64, in... function TestUploadWorkerRecordMemoryStats (line 298) | func TestUploadWorkerRecordMemoryStats(t *testing.T) { function TestUploadWorkerRecordMemoryStatsFallsBackToActivity (line 316) | func TestUploadWorkerRecordMemoryStatsFallsBackToActivity(t *testing.T) { function makeMessages (line 332) | func makeMessages(n int) []IngestMessage { FILE: server/internal/tenant/pool.go type TenantPool (line 16) | type TenantPool struct method Get (line 90) | func (p *TenantPool) Get(ctx context.Context, tenantID string, dsn str... method openTenantDB (line 148) | func (p *TenantPool) openTenantDB(tenantID string, dsn string) (*sql.D... method Close (line 220) | func (p *TenantPool) Close() { method Remove (line 233) | func (p *TenantPool) Remove(tenantID string) { method removeIfMatch (line 246) | func (p *TenantPool) removeIfMatch(tenantID string, expected *tenantCo... method Stats (line 264) | func (p *TenantPool) Stats() map[string]time.Time { method Backend (line 276) | func (p *TenantPool) Backend() string { method evictLoop (line 280) | func (p *TenantPool) evictLoop() { method evictIdle (line 294) | func (p *TenantPool) evictIdle() { type tenantConn (line 32) | type tenantConn struct type PoolConfig (line 38) | type PoolConfig struct function NewPool (line 49) | func NewPool(cfg PoolConfig) *TenantPool { FILE: server/internal/tenant/pool_test.go type testDriver (line 18) | type testDriver struct method Open (line 20) | func (testDriver) Open(name string) (driver.Conn, error) { type testConnector (line 24) | type testConnector struct method Connect (line 42) | func (c *testConnector) Connect(context.Context) (driver.Conn, error) { method Driver (line 50) | func (c *testConnector) Driver() driver.Driver { type schemaTestRow (line 36) | type schemaTestRow struct type testConn (line 54) | type testConn struct method Prepare (line 56) | func (c *testConn) Prepare(query string) (driver.Stmt, error) { method Close (line 60) | func (c *testConn) Close() error { return nil } method Begin (line 62) | func (c *testConn) Begin() (driver.Tx, error) { method QueryContext (line 66) | func (c *testConn) QueryContext(ctx context.Context, query string, _ [... method Ping (line 81) | func (c *testConn) Ping(ctx context.Context) error { type schemaRows (line 105) | type schemaRows struct method Columns (line 110) | func (*schemaRows) Columns() []string { method Close (line 114) | func (*schemaRows) Close() error { return nil } method Next (line 116) | func (r *schemaRows) Next(dest []driver.Value) error { type getResult (line 128) | type getResult struct function withSQLOpen (line 133) | func withSQLOpen(t *testing.T, opener func(driverName, dsn string) (*sql... function cacheTenantConn (line 143) | func cacheTenantConn(pool *TenantPool, tenantID string, db *sql.DB) { function startGet (line 153) | func startGet(pool *TenantPool, tenantID string, dsn string) (<-chan get... function TestNewPool_Defaults (line 163) | func TestNewPool_Defaults(t *testing.T) { function TestNewPool_CustomConfig (line 187) | func TestNewPool_CustomConfig(t *testing.T) { function TestPool_Get_OpenError (line 219) | func TestPool_Get_OpenError(t *testing.T) { function TestPool_Remove_NonExistent (line 236) | func TestPool_Remove_NonExistent(t *testing.T) { function TestPool_RemoveIfMatch_DoesNotRemoveReplacement (line 243) | func TestPool_RemoveIfMatch_DoesNotRemoveReplacement(t *testing.T) { function TestPool_Stats_Empty (line 280) | func TestPool_Stats_Empty(t *testing.T) { function TestPool_Close_Idempotent (line 290) | func TestPool_Close_Idempotent(t *testing.T) { function TestPool_TotalLimit (line 301) | func TestPool_TotalLimit(t *testing.T) { function TestPool_Get_SameTenantOpenUsesSingleflight (line 317) | func TestPool_Get_SameTenantOpenUsesSingleflight(t *testing.T) { function TestPool_Get_CachedPingFailureReopensConnection (line 367) | func TestPool_Get_CachedPingFailureReopensConnection(t *testing.T) { function TestPool_Get_SlowOpenDoesNotBlockOtherCachedTenant (line 399) | func TestPool_Get_SlowOpenDoesNotBlockOtherCachedTenant(t *testing.T) { function TestPool_Get_InFlightOpenCountsTowardTotalLimit (line 444) | func TestPool_Get_InFlightOpenCountsTowardTotalLimit(t *testing.T) { function TestPool_Get_EmbeddingSchemaMismatchFailsBeforeCaching (line 491) | func TestPool_Get_EmbeddingSchemaMismatchFailsBeforeCaching(t *testing.T) { function TestPool_Get_EmbeddingSchemaCheckUsesFreshTimeoutAfterPing (line 522) | func TestPool_Get_EmbeddingSchemaCheckUsesFreshTimeoutAfterPing(t *testi... function TestPool_Get_EmbeddingSchemaCheckRunsOnlyOnFirstOpen (line 549) | func TestPool_Get_EmbeddingSchemaCheckRunsOnlyOnFirstOpen(t *testing.T) { FILE: server/internal/tenant/provisioner.go type Provisioner (line 10) | type Provisioner interface type SpendLimitAdjuster (line 17) | type SpendLimitAdjuster interface type ClusterInfo (line 23) | type ClusterInfo struct FILE: server/internal/tenant/provisioner_test.go function setupTiDBCloudEnv (line 21) | func setupTiDBCloudEnv(t *testing.T) func() { type schemaInitConnector (line 33) | type schemaInitConnector struct method Connect (line 39) | func (c *schemaInitConnector) Connect(context.Context) (driver.Conn, e... method Driver (line 43) | func (c *schemaInitConnector) Driver() driver.Driver { type schemaInitDriver (line 47) | type schemaInitDriver struct method Open (line 49) | func (schemaInitDriver) Open(string) (driver.Conn, error) { type schemaInitConn (line 53) | type schemaInitConn struct method Prepare (line 57) | func (c *schemaInitConn) Prepare(string) (driver.Stmt, error) { method Close (line 61) | func (c *schemaInitConn) Close() error { return nil } method Begin (line 63) | func (c *schemaInitConn) Begin() (driver.Tx, error) { method ExecContext (line 67) | func (c *schemaInitConn) ExecContext(_ context.Context, query string, ... method QueryContext (line 72) | func (c *schemaInitConn) QueryContext(_ context.Context, query string,... type schemaInitRows (line 91) | type schemaInitRows struct method Columns (line 96) | func (*schemaInitRows) Columns() []string { return []string{"COUNT(*)"} } method Close (line 98) | func (*schemaInitRows) Close() error { return nil } method Next (line 100) | func (r *schemaInitRows) Next(dest []driver.Value) error { function TestTiDBCloudProvisioner_Provision_Success (line 110) | func TestTiDBCloudProvisioner_Provision_Success(t *testing.T) { function TestTiDBCloudProvisioner_Provision_APIError (line 211) | func TestTiDBCloudProvisioner_Provision_APIError(t *testing.T) { function TestTiDBCloudProvisioner_ProviderType (line 242) | func TestTiDBCloudProvisioner_ProviderType(t *testing.T) { function TestTiDBCloudProvisioner_InitSchema_NilDB (line 250) | func TestTiDBCloudProvisioner_InitSchema_NilDB(t *testing.T) { function TestTiDBCloudProvisioner_InitSchema_AutoEmbedding (line 265) | func TestTiDBCloudProvisioner_InitSchema_AutoEmbedding(t *testing.T) { function TestTiDBCloudProvisioner_InitSchema_ClientEmbedding (line 293) | func TestTiDBCloudProvisioner_InitSchema_ClientEmbedding(t *testing.T) { function TestTiDBCloudProvisioner_InitSchema_ExistingTablesSkipsCreate (line 324) | func TestTiDBCloudProvisioner_InitSchema_ExistingTablesSkipsCreate(t *te... function TestTiDBCloudProvisioner_InitSchema_EmbeddingSchemaMismatch (line 354) | func TestTiDBCloudProvisioner_InitSchema_EmbeddingSchemaMismatch(t *test... function TestZeroProvisioner_Provision_Success (line 403) | func TestZeroProvisioner_Provision_Success(t *testing.T) { function TestZeroProvisioner_Provision_APIError (line 482) | func TestZeroProvisioner_Provision_APIError(t *testing.T) { function TestZeroProvisioner_ProviderType (line 499) | func TestZeroProvisioner_ProviderType(t *testing.T) { function TestZeroProvisioner_InitSchema_InvalidBackend (line 507) | func TestZeroProvisioner_InitSchema_InvalidBackend(t *testing.T) { function TestZeroProvisioner_InitSchema_Success (line 520) | func TestZeroProvisioner_InitSchema_Success(t *testing.T) { function TestParseDigestChallenge (line 528) | func TestParseDigestChallenge(t *testing.T) { function TestBuildDigestAuth (line 598) | func TestBuildDigestAuth(t *testing.T) { function TestBuildDigestAuth_NoQop (line 652) | func TestBuildDigestAuth_NoQop(t *testing.T) { function TestBuildDigestAuth_CnonceError (line 671) | func TestBuildDigestAuth_CnonceError(t *testing.T) { function TestTokenizeDigestHeader (line 684) | func TestTokenizeDigestHeader(t *testing.T) { function TestUnquote (line 739) | func TestUnquote(t *testing.T) { function TestGenerateRandomPassword (line 763) | func TestGenerateRandomPassword(t *testing.T) { function TestMD5Hash (line 795) | func TestMD5Hash(t *testing.T) { function TestGenerateNonce (line 816) | func TestGenerateNonce(t *testing.T) { function TestDigestAuthRoundTrip (line 842) | func TestDigestAuthRoundTrip(t *testing.T) { FILE: server/internal/tenant/schema.go constant TenantMemorySchemaBase (line 11) | TenantMemorySchemaBase = `CREATE TABLE IF NOT EXISTS memories ( constant TenantMemorySchemaPostgres (line 36) | TenantMemorySchemaPostgres = `CREATE TABLE IF NOT EXISTS memories ( constant TenantMemorySchemaDB9Base (line 65) | TenantMemorySchemaDB9Base = `CREATE TABLE IF NOT EXISTS memories ( function BuildMemorySchema (line 94) | func BuildMemorySchema(autoModel string, autoDims int, clientDims int) s... function BuildDB9MemorySchema (line 113) | func BuildDB9MemorySchema(autoModel string, autoDims int, clientDims int... constant TenantSessionsSchemaBase (line 131) | TenantSessionsSchemaBase = `CREATE TABLE IF NOT EXISTS sessions ( function BuildSessionsSchema (line 154) | func BuildSessionsSchema(autoModel string, autoDims int, clientDims int)... function InitTiDBTenantSchema (line 173) | func InitTiDBTenantSchema(ctx context.Context, db *sql.DB, autoModel str... function ensureTable (line 208) | func ensureTable(ctx context.Context, db *sql.DB, table, createSQL strin... function ensureVectorIndex (line 222) | func ensureVectorIndex(ctx context.Context, db *sql.DB, table, indexName... function ensureFullTextIndex (line 240) | func ensureFullTextIndex(ctx context.Context, db *sql.DB, table, indexNa... FILE: server/internal/tenant/schema_compat.go type embeddingColumnInfo (line 12) | type embeddingColumnInfo struct function CheckEmbeddingSchemaCompatibility (line 20) | func CheckEmbeddingSchemaCompatibility(ctx context.Context, db *sql.DB, ... function isGeneratedColumn (line 50) | func isGeneratedColumn(extra, generationExpression string) bool { function validateEmbeddingSchemaCompatibility (line 54) | func validateEmbeddingSchemaCompatibility(autoModelEnabled bool, columns... function newEmbeddingSchemaMismatchError (line 64) | func newEmbeddingSchemaMismatchError(table string, autoModelEnabled bool... FILE: server/internal/tenant/schema_compat_test.go function TestValidateEmbeddingSchemaCompatibility (line 11) | func TestValidateEmbeddingSchemaCompatibility(t *testing.T) { function TestIsGeneratedColumn (line 78) | func TestIsGeneratedColumn(t *testing.T) { FILE: server/internal/tenant/starter.go type TiDBCloudProvisioner (line 24) | type TiDBCloudProvisioner struct method Provision (line 52) | func (p *TiDBCloudProvisioner) Provision(ctx context.Context) (*Cluste... method ProviderType (line 108) | func (p *TiDBCloudProvisioner) ProviderType() string { method InitSchema (line 117) | func (p *TiDBCloudProvisioner) InitSchema(ctx context.Context, db *sql... method GetSpendLimit (line 122) | func (p *TiDBCloudProvisioner) GetSpendLimit(ctx context.Context, clus... method IncreaseSpendLimit (line 149) | func (p *TiDBCloudProvisioner) IncreaseSpendLimit(ctx context.Context,... method doDigestAuthRequest (line 179) | func (p *TiDBCloudProvisioner) doDigestAuthRequest(ctx context.Context... function NewTiDBCloudProvisioner (line 37) | func NewTiDBCloudProvisioner(apiURL, poolID, autoModel string, autoDims ... constant StarterProvisionerType (line 105) | StarterProvisionerType = "tidb_cloud_starter" function parseDigestChallenge (line 227) | func parseDigestChallenge(header string) (nonce, realm, qop string) { function tokenizeDigestHeader (line 249) | func tokenizeDigestHeader(header string) []string { function unquote (line 278) | func unquote(s string) string { function buildDigestAuth (line 283) | func buildDigestAuth(username, password, method, uri, nonce, realm, qop ... function md5Hash (line 320) | func md5Hash(s string) string { function generateNonce (line 324) | func generateNonce() (string, error) { function generateRandomPassword (line 332) | func generateRandomPassword(length int) (string, error) { FILE: server/internal/tenant/starter_test.go constant testDigestChallenge (line 14) | testDigestChallenge = `Digest realm="tidbcloud", nonce="abc123", qop="au... function setTiDBCloudCreds (line 16) | func setTiDBCloudCreds(t *testing.T) { type spendLimitMockConfig (line 22) | type spendLimitMockConfig struct function newSpendLimitDigestServer (line 29) | func newSpendLimitDigestServer(t *testing.T, cfg spendLimitMockConfig) *... function TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_Success (line 90) | func TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_Success(t *testin... function TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_InvalidJSON (line 110) | func TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_InvalidJSON(t *te... function TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_APIError (line 130) | func TestTiDBCloudProvisioner_SpendLimit_GetSpendLimit_APIError(t *testi... function TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_Success (line 150) | func TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_Success(t *t... function TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_403 (line 167) | func TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_403(t *testi... function TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_404 (line 189) | func TestTiDBCloudProvisioner_SpendLimit_IncreaseSpendLimit_404(t *testi... FILE: server/internal/tenant/util.go function IsIndexExistsError (line 13) | func IsIndexExistsError(err error) bool { function IsTableNotFoundError (line 22) | func IsTableNotFoundError(err error) bool { function IndexExists (line 31) | func IndexExists(ctx context.Context, db *sql.DB, table, indexName strin... function TableExists (line 47) | func TableExists(ctx context.Context, db *sql.DB, table string) (bool, e... FILE: server/internal/tenant/zero.go type ZeroClient (line 15) | type ZeroClient struct method CreateInstance (line 59) | func (c *ZeroClient) CreateInstance(ctx context.Context, tag string) (... type ZeroInstance (line 20) | type ZeroInstance struct function NewZeroClient (line 30) | func NewZeroClient(baseURL string) *ZeroClient { type zeroCreateRequest (line 39) | type zeroCreateRequest struct type zeroCreateResponse (line 43) | type zeroCreateResponse struct type ZeroProvisioner (line 113) | type ZeroProvisioner struct method Provision (line 136) | func (p *ZeroProvisioner) Provision(ctx context.Context) (*ClusterInfo... method ProviderType (line 158) | func (p *ZeroProvisioner) ProviderType() string { method InitSchema (line 164) | func (p *ZeroProvisioner) InitSchema(ctx context.Context, db *sql.DB) ... function NewZeroProvisioner (line 124) | func NewZeroProvisioner(baseURL, backend, autoModel string, autoDims int... constant ZeroProvisionerType (line 155) | ZeroProvisionerType = "tidb_zero" FILE: server/internal/tenant/zero_test.go function TestZeroClient_CreateInstance_Success (line 14) | func TestZeroClient_CreateInstance_Success(t *testing.T) { function TestZeroClient_CreateInstance_HTTPError (line 88) | func TestZeroClient_CreateInstance_HTTPError(t *testing.T) { function TestZeroClient_CreateInstance_InvalidJSON (line 105) | func TestZeroClient_CreateInstance_InvalidJSON(t *testing.T) { function TestZeroClient_CreateInstance_ContextCancel (line 122) | func TestZeroClient_CreateInstance_ContextCancel(t *testing.T) { FILE: server/schema.sql type tenants (line 3) | CREATE TABLE IF NOT EXISTS tenants ( type tenant_activity (line 27) | CREATE TABLE IF NOT EXISTS tenant_activity ( type space_chains (line 37) | CREATE TABLE IF NOT EXISTS space_chains ( type space_chain_bindings (line 51) | CREATE TABLE IF NOT EXISTS space_chain_bindings ( type space_chain_nodes (line 65) | CREATE TABLE IF NOT EXISTS space_chain_nodes ( type memories (line 83) | CREATE TABLE IF NOT EXISTS memories ( type tenant_utm (line 160) | CREATE TABLE IF NOT EXISTS tenant_utm ( type upload_tasks (line 171) | CREATE TABLE IF NOT EXISTS upload_tasks ( type runtime_usage_outbox (line 190) | CREATE TABLE IF NOT EXISTS runtime_usage_outbox ( FILE: server/schema_db9.sql type tenants (line 24) | CREATE TABLE IF NOT EXISTS tenants ( type idx_tenant_name (line 43) | CREATE UNIQUE INDEX IF NOT EXISTS idx_tenant_name ON tenants(name) type idx_tenant_status (line 44) | CREATE INDEX IF NOT EXISTS idx_tenant_status ON tenants(status) type idx_tenant_provider (line 45) | CREATE INDEX IF NOT EXISTS idx_tenant_provider ON tenants(provider) type tenant_activity (line 47) | CREATE TABLE IF NOT EXISTS tenant_activity ( type idx_tenant_activity_last_activity (line 55) | CREATE INDEX IF NOT EXISTS idx_tenant_activity_last_activity ON tenant_a... type space_chains (line 57) | CREATE TABLE IF NOT EXISTS space_chains ( type idx_space_chains_project (line 68) | CREATE INDEX IF NOT EXISTS idx_space_chains_project ON space_chains(proj... type idx_space_chains_deleted (line 69) | CREATE INDEX IF NOT EXISTS idx_space_chains_deleted ON space_chains(dele... type space_chain_bindings (line 71) | CREATE TABLE IF NOT EXISTS space_chain_bindings ( type idx_space_chain_bindings_chain (line 81) | CREATE INDEX IF NOT EXISTS idx_space_chain_bindings_chain ON space_chain... type space_chain_nodes (line 83) | CREATE TABLE IF NOT EXISTS space_chain_nodes ( type idx_space_chain_nodes_external_space (line 95) | CREATE UNIQUE INDEX IF NOT EXISTS idx_space_chain_nodes_external_space type idx_space_chain_nodes_external_lookup (line 98) | CREATE INDEX IF NOT EXISTS idx_space_chain_nodes_external_lookup ON spac... type memories (line 104) | CREATE TABLE IF NOT EXISTS memories ( type idx_memory_type (line 127) | CREATE INDEX IF NOT EXISTS idx_memory_type ON memories(memory_type) type idx_memory_source (line 128) | CREATE INDEX IF NOT EXISTS idx_memory_source ON memories(source) type idx_memory_state (line 129) | CREATE INDEX IF NOT EXISTS idx_memory_state ON memories(state) type idx_memory_agent (line 130) | CREATE INDEX IF NOT EXISTS idx_memory_agent ON memories(agent_id) type idx_memory_session (line 131) | CREATE INDEX IF NOT EXISTS idx_memory_session ON memories(session_id) type idx_memory_updated (line 132) | CREATE INDEX IF NOT EXISTS idx_memory_updated ON memories(updated_at) type idx_memory_embedding (line 135) | CREATE INDEX IF NOT EXISTS idx_memory_embedding ON memories USING hnsw (... type upload_tasks (line 137) | CREATE TABLE IF NOT EXISTS upload_tasks ( type idx_upload_tenant (line 152) | CREATE INDEX IF NOT EXISTS idx_upload_tenant ON upload_tasks(tenant_id) type idx_upload_poll (line 153) | CREATE INDEX IF NOT EXISTS idx_upload_poll ON upload_tasks(status, creat... function update_updated_at (line 155) | CREATE OR REPLACE FUNCTION update_updated_at() FILE: server/schema_pg.sql type tenants (line 6) | CREATE TABLE IF NOT EXISTS tenants ( type idx_tenant_name (line 25) | CREATE UNIQUE INDEX IF NOT EXISTS idx_tenant_name ON tenants(name) type idx_tenant_status (line 26) | CREATE INDEX IF NOT EXISTS idx_tenant_status ON tenants(status) type idx_tenant_provider (line 27) | CREATE INDEX IF NOT EXISTS idx_tenant_provider ON tenants(provider) type tenant_activity (line 29) | CREATE TABLE IF NOT EXISTS tenant_activity ( type idx_tenant_activity_last_activity (line 37) | CREATE INDEX IF NOT EXISTS idx_tenant_activity_last_activity ON tenant_a... type space_chains (line 39) | CREATE TABLE IF NOT EXISTS space_chains ( type idx_space_chains_project (line 50) | CREATE INDEX IF NOT EXISTS idx_space_chains_project ON space_chains(proj... type idx_space_chains_deleted (line 51) | CREATE INDEX IF NOT EXISTS idx_space_chains_deleted ON space_chains(dele... type space_chain_bindings (line 53) | CREATE TABLE IF NOT EXISTS space_chain_bindings ( type idx_space_chain_bindings_chain (line 63) | CREATE INDEX IF NOT EXISTS idx_space_chain_bindings_chain ON space_chain... type space_chain_nodes (line 65) | CREATE TABLE IF NOT EXISTS space_chain_nodes ( type idx_space_chain_nodes_external_space (line 77) | CREATE UNIQUE INDEX IF NOT EXISTS idx_space_chain_nodes_external_space type idx_space_chain_nodes_external_lookup (line 80) | CREATE INDEX IF NOT EXISTS idx_space_chain_nodes_external_lookup ON spac... type memories (line 82) | CREATE TABLE IF NOT EXISTS memories ( type idx_memory_type (line 99) | CREATE INDEX IF NOT EXISTS idx_memory_type ON memories(memory_type) type idx_memory_source (line 100) | CREATE INDEX IF NOT EXISTS idx_memory_source ON memories(source) type idx_memory_state (line 101) | CREATE INDEX IF NOT EXISTS idx_memory_state ON memories(state) type idx_memory_agent (line 102) | CREATE INDEX IF NOT EXISTS idx_memory_agent ON memories(agent_id) type idx_memory_session (line 103) | CREATE INDEX IF NOT EXISTS idx_memory_session ON memories(session_id) type idx_memory_updated (line 104) | CREATE INDEX IF NOT EXISTS idx_memory_updated ON memories(updated_at) type upload_tasks (line 106) | CREATE TABLE IF NOT EXISTS upload_tasks ( type idx_upload_tenant (line 121) | CREATE INDEX IF NOT EXISTS idx_upload_tenant ON upload_tasks(tenant_id) type idx_upload_poll (line 122) | CREATE INDEX IF NOT EXISTS idx_upload_poll ON upload_tasks(status, creat... function update_updated_at (line 124) | CREATE OR REPLACE FUNCTION update_updated_at() FILE: site/src/content/docs.ts type DocsLocale (line 3) | type DocsLocale = 'en' | 'zh' | 'ja' | 'ko' | 'id' | 'th'; type DocsLink (line 5) | interface DocsLink { type DocsSubsection (line 11) | interface DocsSubsection { type DocsSection (line 18) | interface DocsSection { type DocsSectionGroup (line 29) | interface DocsSectionGroup { type DocsHeroCopy (line 34) | interface DocsHeroCopy { type DocsPageCopy (line 43) | interface DocsPageCopy { function resolveDocsLocale (line 2610) | function resolveDocsLocale(locale: SiteLocale): DocsLocale { FILE: site/src/content/site.ts type SiteLocale (line 1) | type SiteLocale = 'en' | 'zh' | 'zh-Hant' | 'ja' | 'ko' | 'id' | 'th'; type SiteThemePreference (line 2) | type SiteThemePreference = 'light' | 'dark' | 'system'; type SiteResolvedTheme (line 3) | type SiteResolvedTheme = 'light' | 'dark'; type SiteAgentGuideId (line 32) | type SiteAgentGuideId = keyof typeof agentGuideTargets; type SiteMeta (line 34) | interface SiteMeta { type SiteNavCopy (line 39) | interface SiteNavCopy { type SiteHeroHighlight (line 55) | interface SiteHeroHighlight { type SiteHeroFeature (line 60) | interface SiteHeroFeature { type SiteGuideLinkCopy (line 65) | interface SiteGuideLinkCopy { type SiteHeroGuideSelectorCopy (line 70) | interface SiteHeroGuideSelectorCopy { type SiteHeroCopy (line 75) | interface SiteHeroCopy { type SiteTrustCopy (line 92) | interface SiteTrustCopy { type SiteLinkCopy (line 100) | interface SiteLinkCopy { type SiteCodeSampleCopy (line 106) | interface SiteCodeSampleCopy { type SiteFaqGroupCopy (line 111) | interface SiteFaqGroupCopy { type SiteFaqItemCopy (line 118) | interface SiteFaqItemCopy { type SiteFaqCopy (line 127) | interface SiteFaqCopy { type SiteFeatureItem (line 134) | interface SiteFeatureItem { type SiteFeaturesCopy (line 140) | interface SiteFeaturesCopy { type SitePlatformItem (line 147) | interface SitePlatformItem { type SitePlatformsCopy (line 157) | interface SitePlatformsCopy { type SiteSecurityProtectionCopy (line 167) | interface SiteSecurityProtectionCopy { type SiteSecurityPageCopy (line 172) | interface SiteSecurityPageCopy { type SiteBillingTier (line 189) | interface SiteBillingTier { type SiteBillingPageCopy (line 200) | interface SiteBillingPageCopy { type SiteApiFieldCopy (line 216) | interface SiteApiFieldCopy { type SiteApiEndpointCopy (line 222) | interface SiteApiEndpointCopy { type SiteApiEndpointGroupCopy (line 235) | interface SiteApiEndpointGroupCopy { type SiteApiPageCopy (line 242) | interface SiteApiPageCopy { type SiteBenchmarkCategoryScore (line 275) | interface SiteBenchmarkCategoryScore { type SiteBenchmarkCopy (line 282) | interface SiteBenchmarkCopy { type SiteFooterCopy (line 299) | interface SiteFooterCopy { type SiteAriaCopy (line 309) | interface SiteAriaCopy { type SiteThemeOptionsCopy (line 319) | interface SiteThemeOptionsCopy { type SiteCopyFeedback (line 325) | interface SiteCopyFeedback { type SiteDictionary (line 330) | interface SiteDictionary { constant DEFAULT_LOCALE (line 349) | const DEFAULT_LOCALE: SiteLocale = 'en'; constant DEFAULT_THEME_PREFERENCE (line 350) | const DEFAULT_THEME_PREFERENCE: SiteThemePreference = 'system'; constant LOCALE_STORAGE_KEY (line 351) | const LOCALE_STORAGE_KEY = 'mem9.locale'; constant THEME_STORAGE_KEY (line 352) | const THEME_STORAGE_KEY = 'mem9.theme'; function isSiteLocale (line 4794) | function isSiteLocale(value: string | null | undefined): value is SiteLo... function isSiteThemePreference (line 4806) | function isSiteThemePreference( function isSiteResolvedTheme (line 4812) | function isSiteResolvedTheme( FILE: site/src/scripts/site-ui.ts type MenuName (line 17) | type MenuName = 'language' | 'theme'; type OnboardingVersion (line 18) | type OnboardingVersion = 'stable' | 'beta'; type OnboardingCommandParts (line 19) | type OnboardingCommandParts = { constant ONBOARDING_COMMAND_URL_PATTERN (line 25) | const ONBOARDING_COMMAND_URL_PATTERN = /https:\/\/\S+/u; constant PUBLIC_SKILL_ORIGIN (line 26) | const PUBLIC_SKILL_ORIGIN = 'https://mem9.ai'; constant PUBLIC_SKILL_URLS (line 27) | const PUBLIC_SKILL_URLS = [ constant TRACKED_SKILL_PATHS (line 31) | const TRACKED_SKILL_PATHS = new Set(['/SKILL.md', '/beta/SKILL.md']); function getValue (line 33) | function getValue(dictionary: SiteDictionary, path: string): unknown { function textFor (line 52) | function textFor(dictionary: SiteDictionary, path: string): string { function resolveBrowserLocale (line 57) | function resolveBrowserLocale(): SiteLocale { function localeToLang (line 102) | function localeToLang(locale: SiteLocale): string { function readPreferredLocale (line 114) | function readPreferredLocale(): SiteLocale { function readStoredThemePreference (line 123) | function readStoredThemePreference(): SiteThemePreference { function getSystemTheme (line 132) | function getSystemTheme(): SiteResolvedTheme { function resolveTheme (line 136) | function resolveTheme(preference: SiteThemePreference): SiteResolvedTheme { function themeModeLabel (line 140) | function themeModeLabel(dictionary: SiteDictionary, preference: SiteThem... function currentLocale (line 152) | function currentLocale(): SiteLocale { function currentThemePreference (line 158) | function currentThemePreference(): SiteThemePreference { function isOnboardingVersion (line 164) | function isOnboardingVersion(value: string | null | undefined): value is... function currentOnboardingVersion (line 168) | function currentOnboardingVersion(): OnboardingVersion { function splitOnboardingCommand (line 175) | function splitOnboardingCommand(text: string): OnboardingCommandParts { function currentUTMParams (line 193) | function currentUTMParams(): URLSearchParams { function resolveTrackableSkillUrl (line 208) | function resolveTrackableSkillUrl(rawHref: string): URL | null { function isAbsoluteUrl (line 223) | function isAbsoluteUrl(rawHref: string): boolean { function rewriteSkillHref (line 227) | function rewriteSkillHref(rawHref: string): string { function baseSkillHref (line 243) | function baseSkillHref(rawHref: string): string { function rewriteSkillUrlsInText (line 258) | function rewriteSkillUrlsInText(text: string): string { function applyTrackedSkillLinks (line 268) | function applyTrackedSkillLinks(): void { function renderOnboardingCommand (line 287) | function renderOnboardingCommand(element: HTMLElement, text: string): vo... function syncControlLabels (line 310) | function syncControlLabels(locale: SiteLocale, preference: SiteThemePref... function applyTheme (line 327) | function applyTheme( function setDocumentLang (line 343) | function setDocumentLang(locale: SiteLocale): void { function updateMetaElements (line 347) | function updateMetaElements(title: string, descriptionText: string): void { function updateMeta (line 367) | function updateMeta(locale: SiteLocale, dictionary: SiteDictionary): void { function updateTranslations (line 381) | function updateTranslations(dictionary: SiteDictionary): void { function applyOnboardingVersion (line 428) | function applyOnboardingVersion(version: OnboardingVersion): void { function setOpenMenu (line 466) | function setOpenMenu(nextOpenMenu: MenuName | null): void { function isDocsPage (line 489) | function isDocsPage(): boolean { function isApiPage (line 493) | function isApiPage(): boolean { function updateDocsPage (line 497) | function updateDocsPage(locale: SiteLocale): void { function updateApiPage (line 530) | function updateApiPage(locale: SiteLocale): void { function updateFaqSection (line 562) | function updateFaqSection(locale: SiteLocale): void { function applyLocale (line 575) | function applyLocale(locale: SiteLocale): void { function copyText (line 608) | async function copyText(text: string): Promise { function initMenuControls (line 633) | function initMenuControls(): void { function initLocaleControls (line 671) | function initLocaleControls(): void { function initThemeControls (line 691) | function initThemeControls(): void { function initSystemThemeListener (line 711) | function initSystemThemeListener(): void { function initCopyButton (line 729) | function initCopyButton(): void { function initOnboardingVersionControls (line 758) | function initOnboardingVersionControls(): void { function initDocsScrollSpy (line 773) | function initDocsScrollSpy(): void { function initDocsProgressBar (line 854) | function initDocsProgressBar(): void { function initDocsBackToTop (line 882) | function initDocsBackToTop(): void { function initDocsMobileToc (line 931) | function initDocsMobileToc(): void { function initApiScrollSpy (line 958) | function initApiScrollSpy(): void { function initApiMobileToc (line 1039) | function initApiMobileToc(): void { function initSiteUI (line 1066) | function initSiteUI(): void {