Insights Database Schema Reference

AI Fusion stores session-level Observation data in the insights database — a relational database that dashboards, BI tools, reporting systems and data pipelines can query directly. This article describes its tables and their relationships, and gives example queries for common reports.

The insights database holds one row per session plus aggregates. The detailed per-turn data (messages, executions, tool calls, token usage per call) is stored in the aifusion Data Product (LU), one instance per session; it is described at the end of this article.

Connecting to the Insights Database

The database is set by three shared globals:

Global Default Description
INSIGHTS_INTERFACE assurance The DB interface. The default assurance interface is a SQLite file in the Fabric workspace.
INSIGHTS_INTERFACE_TYPE sqlite The dialect: sqlite or postgres. It also decides which SQL variant the dashboard widgets run.
INSIGHTS_SCHEMA main The schema holding the tables, for example public on PostgreSQL.

Use SQLite for development in Studio and PostgreSQL for QA and production, where concurrent writes and large volumes matter and where BI tools can connect directly. See Installation and Setup.

The tables are created by the deploy flow of the aifusion LU on every deploy (CREATE TABLE IF NOT EXISTS), so a new table reaches existing environments automatically. Column changes to ACTVSESSION on environments that predate them (see below) are applied by the same flow.

Observation Tables

ACTVSESSION

The central monitoring table: one row per conversation session.

Column Type Description
session_id TEXT (PK) Unique session identifier; also the IID of the session's aifusion LU instance. Join key for INSIGHTS and INSTANCES.
creation_date TIMESTAMP When the session started.
last_modified_date TIMESTAMP The session's last activity. The dashboard widgets, the analysis and the cleanup select sessions by this column.
agent_name TEXT The agent that handled the session. Replaces the 2.x app_id column; on environments upgraded from 2.x, app_id is renamed so the history is kept.
data_product TEXT The agent's LU, so that agents with the same name in different LUs are kept apart. NULL on sessions recorded before this column was added.
chat_name TEXT The automatically generated chat title.
chat_summary TEXT The LLM-generated conversation summary. Written by the analysis.
suggestion TEXT Reserved; not populated.
input_tokens, output_tokens INTEGER Input and output tokens across all LLM calls of the session. input_tokens includes cache-read tokens. Written by the analysis.
cache_read_tokens, cache_write_tokens INTEGER Tokens read from and written to the provider's prompt cache. Written by the analysis.
total_tokens INTEGER Total tokens of the session. Written by the analysis.
conversation_pairs INTEGER Number of user–assistant turns. Written by the analysis.
avg_response_time INTEGER Average turn duration, in seconds. Written by the analysis.
feedback TEXT Feedback indicator written by the analysis. For reporting, use the feedback counters in INSIGHTS.
snap_mode TEXT The agent's data snapshot mode for the session (from its snap_session_mode setting).
submitted_by TEXT The user who ran the session.
status TEXT IN_PROGRESS, OPEN, ANALYZING, CLOSED, ABORTED or FAILED. See Session lifecycle.
process_id, node_id TEXT Internal: the Fabric process and node running the current turn, used to stop a running turn.

Notes:

  • The token, turn, response-time and summary columns are NULL until the session is analyzed. They reflect the conversation as of its last analysis.
  • The 2.x customer_id column is no longer created or used. A session's LU instances are in the INSTANCES table.

INSTANCES

The LU instances a session ran against. A session can have zero, one or several rows.

Column Type Description
session_id TEXT (PK) Foreign key to ACTVSESSION.session_id.
lu_name TEXT (PK) The LU of the instance.
iid TEXT (PK) The instance ID. An IID is unique only within its LU, so always filter on lu_name and iid together.
created_at TIMESTAMP When the row was recorded.

INSIGHTS

One row per tag per session. Each analyzed session has several rows: one per single-value signal, one per selected value of a multi-select signal (such as Topic), and the feedback counters.

Column Type Description
session_id TEXT Foreign key to ACTVSESSION.session_id.
tag_name TEXT The signal name, or a feedback counter name.
tag_value TEXT The selected value, or the count for a feedback counter.

Tags present for every analyzed session:

tag_name tag_value
Resolution Status Resolved, Pending, Escalated
Sentiment Frustration, Satisfaction, Neutral, Urgency, Happiness, Anger, Concern, Appreciation, Discontent, Disappointment
Topic The agent's Topic values (one row per selected topic), or the generic values when the agent does not define them
Positive Feedback, Negative Feedback, Feedback Notes Counts of thumbs up, thumbs down and notes in the session

Additional tag_name values come from each agent's Observation/signals.yaml — for example Urgency Level, Follow-up or Customer Lifetime Value Risk for the banking sample agent. See Configuring Observation.

Note: tag_name / tag_value is a key-value structure. To produce one row per session for a BI tool, pivot it (see the example queries below).

invoke_observation

Telemetry for every LLM and embedding call — from agents as well as from the LLM actors in Broadway flows. Use it for performance profiling and cost attribution at the flow level. It has no agent or session column, so it cannot be filtered by agent.

Column Type Description
flow TEXT The flow (or agent component) that made the call.
actor TEXT The actor within the flow.
interface TEXT The LLM interface used.
timestamp TIMESTAMP When the call started.
duration INTEGER Duration in milliseconds.
total_tokens, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens INTEGER Token usage of the call.
status TEXT IN_PROGRESS, then the final status of the call.

model_token_usage

Cumulative token consumption per LLM interface and model, updated after each call. Use it for cost reporting by model.

Column Type Description
interface TEXT (PK) The LLM interface name.
model TEXT (PK) The model identifier.
total_tokens, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens INTEGER Cumulative token counts.
last_update TIMESTAMP When the row was last updated.

Other Tables in the Insights Database

The same database also holds tables used by other AI Fusion processes. You normally do not query them for Observation reporting.

Table Used by Contents
evaluation_chat Evaluation One row per evaluated conversation: sessionid, initParams, createtime, result, threshold, overallrating
evaluation_details Evaluation Per-step evaluation results: sessionid, step, question, expected, answer, rating, performance_stats
evaluation_job Evaluation Evaluation jobs: type, name, uid, status, start_time, end_time, evaluation_result, sessionid, conversation_link
BATCH Batch analysis LLM batch jobs submitted by BatchObservationAnalyzer: batch_id_aifusion, batch_id_llm, creation_time, completion_time, input_file_id, output_file_id, status, note, interface, response_handler

Table Relationships

ACTVSESSION (session_id)
    ├── INSIGHTS (session_id)            signals and feedback counters, one row per tag
    ├── INSTANCES (session_id)           LU instances the session ran against
    └── aifusion LU instance (IID = session_id)
                                         turns, messages, executions, tool calls, usage, feedback

invoke_observation                       per-call LLM telemetry (correlate by timestamp)
model_token_usage                        cumulative totals per interface + model

Example Queries

The queries below are written for SQLite (the default). For PostgreSQL, replace date expressions such as DATE('now', '-30 days') with (now() - INTERVAL '30 days')::date, and GROUP_CONCAT with string_agg. Prefix table names with your schema when it is not the default one. The overall dashboard widgets in the widgets MTable of the aifusion LU are further examples.

Daily resolution rate per agent (last 30 days)

SELECT
    DATE(a.last_modified_date)   AS day,
    a.agent_name,
    COUNT(DISTINCT a.session_id) AS analyzed_sessions,
    ROUND(
        100.0
        * COUNT(DISTINCT CASE WHEN i.tag_value = 'Resolved' THEN a.session_id END)
        / NULLIF(COUNT(DISTINCT a.session_id), 0)
    , 1)                         AS resolution_rate_pct
FROM ACTVSESSION a
JOIN INSIGHTS i
  ON i.session_id = a.session_id
 AND i.tag_name   = 'Resolution Status'
WHERE a.last_modified_date >= DATE('now', '-30 days')
GROUP BY DATE(a.last_modified_date), a.agent_name
ORDER BY day, a.agent_name;

Sentiment breakdown by agent

SELECT
    a.agent_name,
    a.data_product,
    i.tag_value  AS sentiment,
    COUNT(*)     AS session_count
FROM ACTVSESSION a
JOIN INSIGHTS i
  ON i.session_id = a.session_id
 AND i.tag_name   = 'Sentiment'
WHERE a.status = 'CLOSED'
GROUP BY a.agent_name, a.data_product, i.tag_value
ORDER BY a.agent_name, session_count DESC;

All conversations of one customer

Find every session that ran against a given LU instance, across all agents:

SELECT
    a.session_id,
    a.agent_name,
    a.creation_date,
    a.submitted_by,
    a.chat_summary
FROM ACTVSESSION a
JOIN INSTANCES n
  ON n.session_id = a.session_id
WHERE n.lu_name = 'customer_bank'
  AND n.iid     = '1001'
ORDER BY a.creation_date DESC;

Session detail with key signals (pivot)

One row per session, with the main tags as columns:

SELECT
    a.session_id,
    a.agent_name,
    a.data_product,
    (SELECT GROUP_CONCAT(n.lu_name || '/' || n.iid, ', ')
       FROM INSTANCES n WHERE n.session_id = a.session_id)                      AS instances,
    a.creation_date,
    a.conversation_pairs,
    a.avg_response_time,
    a.total_tokens,
    a.submitted_by,
    MAX(CASE WHEN i.tag_name = 'Resolution Status' THEN i.tag_value END)       AS resolution_status,
    MAX(CASE WHEN i.tag_name = 'Sentiment'         THEN i.tag_value END)       AS sentiment,
    GROUP_CONCAT(CASE WHEN i.tag_name = 'Topic'    THEN i.tag_value END, ', ') AS topics,
    MAX(CASE WHEN i.tag_name = 'Positive Feedback' THEN i.tag_value END)       AS positive_feedback,
    MAX(CASE WHEN i.tag_name = 'Negative Feedback' THEN i.tag_value END)       AS negative_feedback
FROM ACTVSESSION a
LEFT JOIN INSIGHTS i ON i.session_id = a.session_id
WHERE a.status = 'CLOSED'
GROUP BY a.session_id, a.agent_name, a.data_product, a.creation_date,
         a.conversation_pairs, a.avg_response_time, a.total_tokens, a.submitted_by
ORDER BY a.creation_date DESC;

Token cost by model

SELECT
    interface,
    model,
    total_tokens,
    input_tokens,
    output_tokens,
    cache_read_tokens,
    last_update
FROM model_token_usage
ORDER BY total_tokens DESC;

Response time and token usage by agent (last 30 days)

SELECT
    agent_name,
    COUNT(session_id)                AS sessions,
    ROUND(AVG(avg_response_time), 1) AS avg_response_sec,
    ROUND(AVG(total_tokens), 0)      AS avg_tokens_per_session,
    SUM(total_tokens)                AS total_tokens
FROM ACTVSESSION
WHERE last_modified_date >= DATE('now', '-30 days')
  AND status = 'CLOSED'
GROUP BY agent_name
ORDER BY total_tokens DESC;

Per-Session Tables in the aifusion LU

The detailed record of each session is stored in the aifusion LU, in one instance per session (IID = session_id). These tables are not in the insights database and are not queried by direct SQL against it; they are read through Fabric — by the conversation review, the trace panel and the analysis process.

Table Key columns Contents
CHAT sessionid, createtime, synopsis The session record
STEP step_id, user, assistant, timestamp, duration, time_to_first_token Each user–assistant turn: the question, the answer and its latency
EXECUTIONS execution_id, step_id, name, status, duration, tool_call_id The agent and sub-agent executions in each turn
MESSAGES message_id, execution_id, role, content, tool_calls The full message sequence sent to and received from the LLM, including tool messages
TOOL_CALLS tool_call_id, function, arguments, response, duration Each tool invocation with its input, output and latency
USAGE execution_id, interface, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, total_tokens, duration Token usage of each LLM call
FEEDBACK id, step_id, reaction, note, submitted_by User ratings (1 = thumbs up, -1 = thumbs down) and notes per turn
SNAPS lu_name, iid, step_id, snap_file, mode Data snapshots of the LU instances taken during the session
COMPACTION, SUMMARY execution_id, summary Context-compaction and history summaries used to keep long sessions within the model's context
PLANS, TASKS execution_id, plan_id / task_id, status Plans and to-do items of agents that use planning
MEMORY_BLOCKS, AGENT_MEMORY execution_id, label / uuid Memory blocks and saved memories of agents with memory enabled

The cleanup process deletes the session's aifusion LU instance together with its insights rows when the session passes the retention period. See Configuring Observation.

Next article: Observation Best Practices

Insights Database Schema Reference

AI Fusion stores session-level Observation data in the insights database — a relational database that dashboards, BI tools, reporting systems and data pipelines can query directly. This article describes its tables and their relationships, and gives example queries for common reports.

The insights database holds one row per session plus aggregates. The detailed per-turn data (messages, executions, tool calls, token usage per call) is stored in the aifusion Data Product (LU), one instance per session; it is described at the end of this article.

Connecting to the Insights Database

The database is set by three shared globals:

Global Default Description
INSIGHTS_INTERFACE assurance The DB interface. The default assurance interface is a SQLite file in the Fabric workspace.
INSIGHTS_INTERFACE_TYPE sqlite The dialect: sqlite or postgres. It also decides which SQL variant the dashboard widgets run.
INSIGHTS_SCHEMA main The schema holding the tables, for example public on PostgreSQL.

Use SQLite for development in Studio and PostgreSQL for QA and production, where concurrent writes and large volumes matter and where BI tools can connect directly. See Installation and Setup.

The tables are created by the deploy flow of the aifusion LU on every deploy (CREATE TABLE IF NOT EXISTS), so a new table reaches existing environments automatically. Column changes to ACTVSESSION on environments that predate them (see below) are applied by the same flow.

Observation Tables

ACTVSESSION

The central monitoring table: one row per conversation session.

Column Type Description
session_id TEXT (PK) Unique session identifier; also the IID of the session's aifusion LU instance. Join key for INSIGHTS and INSTANCES.
creation_date TIMESTAMP When the session started.
last_modified_date TIMESTAMP The session's last activity. The dashboard widgets, the analysis and the cleanup select sessions by this column.
agent_name TEXT The agent that handled the session. Replaces the 2.x app_id column; on environments upgraded from 2.x, app_id is renamed so the history is kept.
data_product TEXT The agent's LU, so that agents with the same name in different LUs are kept apart. NULL on sessions recorded before this column was added.
chat_name TEXT The automatically generated chat title.
chat_summary TEXT The LLM-generated conversation summary. Written by the analysis.
suggestion TEXT Reserved; not populated.
input_tokens, output_tokens INTEGER Input and output tokens across all LLM calls of the session. input_tokens includes cache-read tokens. Written by the analysis.
cache_read_tokens, cache_write_tokens INTEGER Tokens read from and written to the provider's prompt cache. Written by the analysis.
total_tokens INTEGER Total tokens of the session. Written by the analysis.
conversation_pairs INTEGER Number of user–assistant turns. Written by the analysis.
avg_response_time INTEGER Average turn duration, in seconds. Written by the analysis.
feedback TEXT Feedback indicator written by the analysis. For reporting, use the feedback counters in INSIGHTS.
snap_mode TEXT The agent's data snapshot mode for the session (from its snap_session_mode setting).
submitted_by TEXT The user who ran the session.
status TEXT IN_PROGRESS, OPEN, ANALYZING, CLOSED, ABORTED or FAILED. See Session lifecycle.
process_id, node_id TEXT Internal: the Fabric process and node running the current turn, used to stop a running turn.

Notes:

  • The token, turn, response-time and summary columns are NULL until the session is analyzed. They reflect the conversation as of its last analysis.
  • The 2.x customer_id column is no longer created or used. A session's LU instances are in the INSTANCES table.

INSTANCES

The LU instances a session ran against. A session can have zero, one or several rows.

Column Type Description
session_id TEXT (PK) Foreign key to ACTVSESSION.session_id.
lu_name TEXT (PK) The LU of the instance.
iid TEXT (PK) The instance ID. An IID is unique only within its LU, so always filter on lu_name and iid together.
created_at TIMESTAMP When the row was recorded.

INSIGHTS

One row per tag per session. Each analyzed session has several rows: one per single-value signal, one per selected value of a multi-select signal (such as Topic), and the feedback counters.

Column Type Description
session_id TEXT Foreign key to ACTVSESSION.session_id.
tag_name TEXT The signal name, or a feedback counter name.
tag_value TEXT The selected value, or the count for a feedback counter.

Tags present for every analyzed session:

tag_name tag_value
Resolution Status Resolved, Pending, Escalated
Sentiment Frustration, Satisfaction, Neutral, Urgency, Happiness, Anger, Concern, Appreciation, Discontent, Disappointment
Topic The agent's Topic values (one row per selected topic), or the generic values when the agent does not define them
Positive Feedback, Negative Feedback, Feedback Notes Counts of thumbs up, thumbs down and notes in the session

Additional tag_name values come from each agent's Observation/signals.yaml — for example Urgency Level, Follow-up or Customer Lifetime Value Risk for the banking sample agent. See Configuring Observation.

Note: tag_name / tag_value is a key-value structure. To produce one row per session for a BI tool, pivot it (see the example queries below).

invoke_observation

Telemetry for every LLM and embedding call — from agents as well as from the LLM actors in Broadway flows. Use it for performance profiling and cost attribution at the flow level. It has no agent or session column, so it cannot be filtered by agent.

Column Type Description
flow TEXT The flow (or agent component) that made the call.
actor TEXT The actor within the flow.
interface TEXT The LLM interface used.
timestamp TIMESTAMP When the call started.
duration INTEGER Duration in milliseconds.
total_tokens, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens INTEGER Token usage of the call.
status TEXT IN_PROGRESS, then the final status of the call.

model_token_usage

Cumulative token consumption per LLM interface and model, updated after each call. Use it for cost reporting by model.

Column Type Description
interface TEXT (PK) The LLM interface name.
model TEXT (PK) The model identifier.
total_tokens, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens INTEGER Cumulative token counts.
last_update TIMESTAMP When the row was last updated.

Other Tables in the Insights Database

The same database also holds tables used by other AI Fusion processes. You normally do not query them for Observation reporting.

Table Used by Contents
evaluation_chat Evaluation One row per evaluated conversation: sessionid, initParams, createtime, result, threshold, overallrating
evaluation_details Evaluation Per-step evaluation results: sessionid, step, question, expected, answer, rating, performance_stats
evaluation_job Evaluation Evaluation jobs: type, name, uid, status, start_time, end_time, evaluation_result, sessionid, conversation_link
BATCH Batch analysis LLM batch jobs submitted by BatchObservationAnalyzer: batch_id_aifusion, batch_id_llm, creation_time, completion_time, input_file_id, output_file_id, status, note, interface, response_handler

Table Relationships

ACTVSESSION (session_id)
    ├── INSIGHTS (session_id)            signals and feedback counters, one row per tag
    ├── INSTANCES (session_id)           LU instances the session ran against
    └── aifusion LU instance (IID = session_id)
                                         turns, messages, executions, tool calls, usage, feedback

invoke_observation                       per-call LLM telemetry (correlate by timestamp)
model_token_usage                        cumulative totals per interface + model

Example Queries

The queries below are written for SQLite (the default). For PostgreSQL, replace date expressions such as DATE('now', '-30 days') with (now() - INTERVAL '30 days')::date, and GROUP_CONCAT with string_agg. Prefix table names with your schema when it is not the default one. The overall dashboard widgets in the widgets MTable of the aifusion LU are further examples.

Daily resolution rate per agent (last 30 days)

SELECT
    DATE(a.last_modified_date)   AS day,
    a.agent_name,
    COUNT(DISTINCT a.session_id) AS analyzed_sessions,
    ROUND(
        100.0
        * COUNT(DISTINCT CASE WHEN i.tag_value = 'Resolved' THEN a.session_id END)
        / NULLIF(COUNT(DISTINCT a.session_id), 0)
    , 1)                         AS resolution_rate_pct
FROM ACTVSESSION a
JOIN INSIGHTS i
  ON i.session_id = a.session_id
 AND i.tag_name   = 'Resolution Status'
WHERE a.last_modified_date >= DATE('now', '-30 days')
GROUP BY DATE(a.last_modified_date), a.agent_name
ORDER BY day, a.agent_name;

Sentiment breakdown by agent

SELECT
    a.agent_name,
    a.data_product,
    i.tag_value  AS sentiment,
    COUNT(*)     AS session_count
FROM ACTVSESSION a
JOIN INSIGHTS i
  ON i.session_id = a.session_id
 AND i.tag_name   = 'Sentiment'
WHERE a.status = 'CLOSED'
GROUP BY a.agent_name, a.data_product, i.tag_value
ORDER BY a.agent_name, session_count DESC;

All conversations of one customer

Find every session that ran against a given LU instance, across all agents:

SELECT
    a.session_id,
    a.agent_name,
    a.creation_date,
    a.submitted_by,
    a.chat_summary
FROM ACTVSESSION a
JOIN INSTANCES n
  ON n.session_id = a.session_id
WHERE n.lu_name = 'customer_bank'
  AND n.iid     = '1001'
ORDER BY a.creation_date DESC;

Session detail with key signals (pivot)

One row per session, with the main tags as columns:

SELECT
    a.session_id,
    a.agent_name,
    a.data_product,
    (SELECT GROUP_CONCAT(n.lu_name || '/' || n.iid, ', ')
       FROM INSTANCES n WHERE n.session_id = a.session_id)                      AS instances,
    a.creation_date,
    a.conversation_pairs,
    a.avg_response_time,
    a.total_tokens,
    a.submitted_by,
    MAX(CASE WHEN i.tag_name = 'Resolution Status' THEN i.tag_value END)       AS resolution_status,
    MAX(CASE WHEN i.tag_name = 'Sentiment'         THEN i.tag_value END)       AS sentiment,
    GROUP_CONCAT(CASE WHEN i.tag_name = 'Topic'    THEN i.tag_value END, ', ') AS topics,
    MAX(CASE WHEN i.tag_name = 'Positive Feedback' THEN i.tag_value END)       AS positive_feedback,
    MAX(CASE WHEN i.tag_name = 'Negative Feedback' THEN i.tag_value END)       AS negative_feedback
FROM ACTVSESSION a
LEFT JOIN INSIGHTS i ON i.session_id = a.session_id
WHERE a.status = 'CLOSED'
GROUP BY a.session_id, a.agent_name, a.data_product, a.creation_date,
         a.conversation_pairs, a.avg_response_time, a.total_tokens, a.submitted_by
ORDER BY a.creation_date DESC;

Token cost by model

SELECT
    interface,
    model,
    total_tokens,
    input_tokens,
    output_tokens,
    cache_read_tokens,
    last_update
FROM model_token_usage
ORDER BY total_tokens DESC;

Response time and token usage by agent (last 30 days)

SELECT
    agent_name,
    COUNT(session_id)                AS sessions,
    ROUND(AVG(avg_response_time), 1) AS avg_response_sec,
    ROUND(AVG(total_tokens), 0)      AS avg_tokens_per_session,
    SUM(total_tokens)                AS total_tokens
FROM ACTVSESSION
WHERE last_modified_date >= DATE('now', '-30 days')
  AND status = 'CLOSED'
GROUP BY agent_name
ORDER BY total_tokens DESC;

Per-Session Tables in the aifusion LU

The detailed record of each session is stored in the aifusion LU, in one instance per session (IID = session_id). These tables are not in the insights database and are not queried by direct SQL against it; they are read through Fabric — by the conversation review, the trace panel and the analysis process.

Table Key columns Contents
CHAT sessionid, createtime, synopsis The session record
STEP step_id, user, assistant, timestamp, duration, time_to_first_token Each user–assistant turn: the question, the answer and its latency
EXECUTIONS execution_id, step_id, name, status, duration, tool_call_id The agent and sub-agent executions in each turn
MESSAGES message_id, execution_id, role, content, tool_calls The full message sequence sent to and received from the LLM, including tool messages
TOOL_CALLS tool_call_id, function, arguments, response, duration Each tool invocation with its input, output and latency
USAGE execution_id, interface, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, total_tokens, duration Token usage of each LLM call
FEEDBACK id, step_id, reaction, note, submitted_by User ratings (1 = thumbs up, -1 = thumbs down) and notes per turn
SNAPS lu_name, iid, step_id, snap_file, mode Data snapshots of the LU instances taken during the session
COMPACTION, SUMMARY execution_id, summary Context-compaction and history summaries used to keep long sessions within the model's context
PLANS, TASKS execution_id, plan_id / task_id, status Plans and to-do items of agents that use planning
MEMORY_BLOCKS, AGENT_MEMORY execution_id, label / uuid Memory blocks and saved memories of agents with memory enabled

The cleanup process deletes the session's aifusion LU instance together with its insights rows when the session passes the retention period. See Configuring Observation.

Next article: Observation Best Practices