Tool · Conversations & archives / Games & interaction
Conversation Archive for Discord
Turn a local conversation collection into an ordered Discord archive, previewing changes before sending.
Repository: CinvanaAI/cinvana-discord-engine
Recorded synthetic example. Source with a complete offline example.
See the idea in action.
A year/category, month/channel and two dated threads are planned with real source bindings. Publication remains paused and Discord receives zero calls.
Two synthetic Conversation Engine chunks on consecutive days.
{
"mode": "Synthetic CE chunks; actual archive projection",
"source_messages": [
"First, review the fixture.",
"Then, record the result."
],
"projection": {
"guild_key": "demo",
"source_system": "synthetic-ce",
"start": "2026-01-01",
"end": "2026-01-02",
"chunks_projected": 2,
"days_with_content": 2,
"placeholders_removed": 0,
"categories": 1,
"channels": 1,
"threads": 2,
"messages": 4,
"projection_states": {
"unpublished": 2
}
},
"publication_paused": true,
"remaining_actions": {
"categories": 1,
"channels": 1,
"threads": 2,
"messages": 4
},
"sample": [
{
"day_date": "2026-01-01",
"category_name": "2026",
"channel_name": "2026-01",
"thread_name": "2026-01-01",
"intended_messages": 2,
"created_messages": 0
},
{
"day_date": "2026-01-02",
"category_name": "2026",
"channel_name": "2026-01",
"thread_name": "2026-01-02",
"intended_messages": 2,
"created_messages": 0
}
],
"queue_plan": {
"guild_key": "demo",
"generation_id": 1,
"canceled_stale_operations": 0,
"enqueued_operations": 8,
"relinked_slots": 0,
"containers_checked": 2,
"operations_by_type": {
"CREATE_CATEGORY": 1,
"CREATE_CHANNEL": 1,
"CREATE_THREAD_STARTER": 2,
"CREATE_THREAD": 2,
"CREATE_MESSAGE": 2
}
},
"queue_summary": {
"pending": 8
},
"operations": [
{
"type": "CREATE_CATEGORY",
"priority": 10,
"payload": {
"category_key": "demo:category:year:2026"
}
},
{
"type": "CREATE_CHANNEL",
"priority": 20,
"payload": {
"category_key": "demo:category:year:2026",
"channel_key": "demo:channel:month:2026-01"
}
},
{
"type": "CREATE_THREAD_STARTER",
"priority": 30,
"payload": {
"channel_key": "demo:channel:month:2026-01",
"message_key": "demo:message:day:2026-01-01:starter",
"thread_key": "demo:thread:day:2026-01-01"
}
},
{
"type": "CREATE_THREAD_STARTER",
"priority": 30,
"payload": {
"channel_key": "demo:channel:month:2026-01",
"message_key": "demo:message:day:2026-01-02:starter",
"thread_key": "demo:thread:day:2026-01-02"
}
},
{
"type": "CREATE_THREAD",
"priority": 31,
"payload": {
"channel_key": "demo:channel:month:2026-01",
"starter_message_key": "demo:message:day:2026-01-01:starter",
"thread_key": "demo:thread:day:2026-01-01"
}
},
{
"type": "CREATE_THREAD",
"priority": 31,
"payload": {
"channel_key": "demo:channel:month:2026-01",
"starter_message_key": "demo:message:day:2026-01-02:starter",
"thread_key": "demo:thread:day:2026-01-02"
}
},
{
"type": "CREATE_MESSAGE",
"priority": 51,
"payload": {
"container_key": "demo:thread:day:2026-01-01",
"message_key": "demo:message:ce:message-1:private:1",
"slot_index": 1
}
},
{
"type": "CREATE_MESSAGE",
"priority": 51,
"payload": {
"container_key": "demo:thread:day:2026-01-02",
"message_key": "demo:message:ce:message-2:private:1",
"slot_index": 1
}
}
],
"discord_calls": 0
}Try the example.
From the repository root, follow the dependency requirements in the README. This example uses supplied synthetic material.
python -m pip install -e . python -m examples.offline_demo
A year/category, month/channel and two dated threads are planned with real source bindings. Publication remains paused and Discord receives zero calls.
Complete setup and instructions ↗The interesting part.
Desired archive order and physical Discord message slots are distinct; stable slots can be edited instead of rebuilding the whole archive.
Where it came from.
Reviewed source snapshot of CinvanaAI Discord Engine.
Retains source, tests and configuration with private runtime state and machine paths excluded.
It consumes configured Conversation Engine data; live publication also requires a visitor-owned Discord setup.
Follow the family: Conversation source, migration and Discord archives
- Focused extractionDiscord Topology Reconciler
Inspect or reuse this boundary without navigating the whole application. The smaller package re-expresses the retained planning mechanics through a new in-memory contract.
Source ↗ - Reads its source fromConversation Engine
Understand the archive source that live projection reads. A configured source integration, not a shared-code ancestry claim.
Source ↗