-
Notifications
You must be signed in to change notification settings - Fork 100
Description
This feature proposal introduces scoped conversation contexts and expanded metadata tagging to enhance data integrity, traceability, and user experience in Simple Chat. It addresses the risk of cross-contaminating context from different workspaces (e.g., Person A, B, and C each having unique workspaces such as legal cases or projects) when users interact within the same conversation thread.
Problem
Currently, Simple Chat allows conversations to switch active group context dynamically, which can result in unintentional mixing of data from unrelated projects or investigations. For users managing sensitive or compartmentalized data (e.g., legal cases), this creates risk and confusion when conversations span multiple group IDs.
Proposed Features
1. Conversation Context Locking
- Add a
contextfield to the conversation parent record to explicitly tag the initiating scope (personal, group, public). - Example structure:
"context": [
{ "type": "primary", "scope": "group", "id": "group-id" },
{ "type": "secondary", "scope": "public", "id": "public-id" },
{ "type": "secondary", "scope": "group", "id": "group-id" }
],
"strict": truestrict: truewill enforce that the conversation cannot access data outside of the primary group unless the user explicitly opts in via UI confirmation.
2. Automatic Group Switching Based on Context
- When a user opens a conversation from history, the system should automatically update the active group ID based on the
primarycontext of that conversation. - This ensures workspace-bound access to documents, agents, and models.
3. Scoped Access Warnings
- Introduce a UI mechanism (e.g., modal or banner) that informs users when they attempt to cross group boundaries in a single conversation.
- Example: “You are currently in Group A. Are you sure you want to search across Group B in this conversation?”
4. Expanded Metadata for Messages
-
Each message should store the configuration settings at time of execution, including:
- Active group ID
- Selected documents and their scopes
- Enabled models and agents
- Any filters or tags applied
-
This metadata should be queryable for review/debugging purposes and shown in a side panel or audit log UI.
5. Conversation Tags
Introduce flexible tagging on the conversation parent document to capture:
- Agents used
- Models selected
- Participants
- Semantic intent (e.g., “case-a”, “evidence-summary”)
- Documents referenced (with scope and classification)
- External sources (e.g., links to web evidence)
Example tag schema:
{
"id": "9c6ef42a-e1a9-47d4-b725-ca79e50ca3e2",
"user_id": "07e61033-ea1a-4472-a1e7-6b9ac874984a",
"last_updated": "2025-07-30T15:16:21.551225",
"title": "summarize",
"context": [
{ "type": "primary", "scope": "group", "id": "group-id" },
{ "type": "secondary", "scope": "public", "id": "public-id" },
{ "type": "secondary", "scope": "group", "id": "group-id" }
],
"strict": true,
"tags": [
{ "category": "agent", "value": "agent-litigator" },
{ "category": "model", "value": "gpt-4o" },
{ "category": "participant", "value": "user-a" },
{ "category": "semantic", "value": "case-a" },
{ "category": "semantic", "value": "evidence-summary" },
{
"category": "document",
"value": "doc-id",
"scope": "group",
"id": "group-id",
"classification": "CUI"
},
{
"category": "document",
"value": "doc-id",
"scope": "personal",
"id": "user-id",
"classification": "Public"
},
{
"category": "document",
"value": "doc-id",
"scope": "public",
"id": "public-workspace-id",
"classification": "None"
},
{
"category": "web",
"value": "https://court.example.com/case-abc"
}
]
}Benefits
- Prevents accidental information leakage across contexts.
- Improves auditability and reproducibility of message outcomes.
- Supports richer insights into historical interactions.
- Lays foundation for features like scoped analytics and access reviews.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status