From fb415ea04a71f25b3919cee06318bbf5e66bcdf0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 May 2025 12:46:28 +0000 Subject: [PATCH 1/6] Initial plan for issue From fde88edcd4ad64cc9aae618f7e30b5fe6c289c98 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 May 2025 12:51:48 +0000 Subject: [PATCH 2/6] Added svmai-tokenomics to docs page with book styling and diagrams Co-authored-by: 0xrinegade <101195284+0xrinegade@users.noreply.github.com> --- docs.html | 487 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 487 insertions(+) diff --git a/docs.html b/docs.html index e26457e..cca03f4 100644 --- a/docs.html +++ b/docs.html @@ -11,6 +11,7 @@ + @@ -173,6 +275,7 @@

Documentation

{ id: 'readme', name: 'Overview', path: 'docs/README.md' }, { id: 'protocol', name: 'Protocol Specification', path: 'docs/protocol-specification.md' }, { id: 'svmai', name: '$SVMAI Token', path: 'docs/svmai-token.md' }, + { id: 'tokenomics', name: 'SVMAI Tokenomics', path: 'docs/svmai-tokenomics.md' }, { id: 'usecases', name: 'Use Cases', path: 'docs/use-cases.md' }, { id: 'developer', name: 'Developer Guide', path: 'docs/developer-guide.md' } ]; @@ -212,6 +315,13 @@

Documentation

} const markdown = await response.text(); document.getElementById('markdown-content').innerHTML = marked.parse(markdown); + + // Check if this is the tokenomics document + if (path === 'docs/svmai-tokenomics.md') { + setTimeout(() => { + enhanceTokenomicsDocument(); + }, 100); + } } catch (error) { console.error('Error loading markdown:', error); document.getElementById('markdown-content').innerHTML = ` @@ -245,6 +355,383 @@

Error Loading Document

navItem.classList.add('font-bold', 'bg-neutral-200'); } }); + + // Function to enhance tokenomics document with diagrams and infographics + function enhanceTokenomicsDocument() { + console.log('Enhancing tokenomics document with diagrams...'); + + // Apply book-like styling + const content = document.getElementById('markdown-content'); + content.classList.add('book-layout'); + + // Organize content into chapters + const headings = content.querySelectorAll('h2'); + if (headings.length > 0) { + // Wrap sections between h2s in chapter divs + let currentHeading = headings[0]; + let chapterContent = document.createElement('div'); + chapterContent.className = 'book-chapter'; + + currentHeading.parentNode.insertBefore(chapterContent, currentHeading); + chapterContent.appendChild(currentHeading); + + let element = currentHeading.nextElementSibling; + while (element) { + let nextElement = element.nextElementSibling; + + // If we hit another h2, create a new chapter + if (element.tagName === 'H2') { + chapterContent = document.createElement('div'); + chapterContent.className = 'book-chapter'; + element.parentNode.insertBefore(chapterContent, element); + chapterContent.appendChild(element); + } else if (chapterContent) { + chapterContent.appendChild(element); + } + + element = nextElement; + } + } + + // Add diagrams based on section content + addServiceEscrowDiagram(); + addDisputeResolutionDiagram(); + addTokenDistributionChart(); + addTokenUtilityDiagram(); + + // Add navigation between chapters + addChapterNavigation(); + } + + // Check if the loaded content is tokenomics and enhance if needed + function checkAndEnhanceContent() { + const contentElem = document.getElementById('markdown-content'); + const h1 = contentElem.querySelector('h1'); + + if (h1 && h1.innerText.includes('Service Escrow Tokenomic Model for the SVMAI Token')) { + enhanceTokenomicsDocument(); + } + } + + // Override the original loadMarkdown function to add our enhancement logic + const originalLoadMarkdown = loadMarkdown; + loadMarkdown = async function(path) { + await originalLoadMarkdown(path); + // Wait a bit for the markdown to render + setTimeout(() => { + checkAndEnhanceContent(); + }, 100); + }; + + // Functions to add specific diagrams + function addServiceEscrowDiagram() { + // Find the section about Service Escrow + const escrowSection = findSection('Core Tokenomic Design: The SVMAI Service Escrow'); + if (!escrowSection) return; + + // Create diagram container + const diagramContainer = document.createElement('div'); + diagramContainer.className = 'diagram-container'; + diagramContainer.innerHTML = ` +
Service Escrow Process
+
Flow of tokens and interactions in the SVMAI service escrow model
+
+ +
+ `; + + // Insert after the first paragraph in the section + const firstPara = escrowSection.querySelector('p'); + if (firstPara) { + firstPara.parentNode.insertBefore(diagramContainer, firstPara.nextSibling); + + // Create the flowchart + const ctx = document.getElementById('serviceEscrowFlow').getContext('2d'); + new Chart(ctx, { + type: 'bar', + data: { + labels: ['Initial State', 'Service Agreed', 'In Progress', 'Approved', 'Disputed'], + datasets: [ + { + label: 'Client Stake (Locked)', + data: [0, 100, 100, 0, 0], + backgroundColor: '#737373', + stack: 'client' + }, + { + label: 'Client Stake (Available)', + data: [100, 0, 0, 100, 0], + backgroundColor: '#A3A3A3', + stack: 'client' + }, + { + label: 'Agent Fee (Locked)', + data: [0, 100, 100, 0, 0], + backgroundColor: '#404040', + stack: 'agent' + }, + { + label: 'Agent Fee (Available)', + data: [100, 0, 0, 100, 0], + backgroundColor: '#525252', + stack: 'agent' + }, + { + label: 'Dispute Resolution', + data: [0, 0, 0, 0, 100], + backgroundColor: '#D4D4D4', + stack: 'dispute' + } + ] + }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + x: { + stacked: true, + grid: { + display: false + } + }, + y: { + stacked: true, + title: { + display: true, + text: 'Token Allocation %' + }, + max: 200 + } + }, + plugins: { + legend: { + position: 'bottom', + labels: { + font: { + family: "'Courier New', Courier, monospace" + } + } + }, + tooltip: { + callbacks: { + title: function(context) { + return context[0].label + ' Phase'; + } + } + } + } + } + }); + } + } + + function addDisputeResolutionDiagram() { + // Find the section about Dispute Resolution + const disputeSection = findSection('Dispute Resolution Framework for SVMAI'); + if (!disputeSection) return; + + // Create diagram container + const diagramContainer = document.createElement('div'); + diagramContainer.className = 'diagram-container'; + diagramContainer.innerHTML = ` +
Decentralized Dispute Resolution Process
+
Flow of a dispute through the DDR system
+
+
+
1. Dispute Initiation
+

Client signals dissatisfaction and stakes SVMAI tokens to initiate dispute process

+
+
+
2. Evidence Submission
+

Both client and agent submit evidence and arguments to support their positions

+
+
+
3. Juror Selection
+

Random selection of jurors from the pool of SVMAI stakers based on stake size

+
+
+
4. Deliberation
+

Jurors review evidence and vote on an outcome based on merit

+
+
+
5. Resolution
+

Smart contract executes the outcome based on juror decision - payment, refund, or split

+
+
+
6. Appeal (Optional)
+

Dissatisfied party can appeal with additional stake for review by larger juror panel

+
+
+ `; + + // Insert after the first paragraph + const firstPara = disputeSection.querySelector('p'); + if (firstPara) { + firstPara.parentNode.insertBefore(diagramContainer, firstPara.nextSibling); + } + } + + function addTokenDistributionChart() { + // Find section about Economic Model + const economicSection = findSection('Economic and Behavioral Impact Analysis'); + if (!economicSection) return; + + // Create diagram container + const diagramContainer = document.createElement('div'); + diagramContainer.className = 'diagram-container'; + diagramContainer.innerHTML = ` +
Value Flow in the SVMAI Ecosystem
+
How value and tokens circulate in the service escrow model
+
+ +
+ `; + + // Insert after the first paragraph + const firstPara = economicSection.querySelector('p'); + if (firstPara) { + firstPara.parentNode.insertBefore(diagramContainer, firstPara.nextSibling); + + // Create the chart + const ctx = document.getElementById('tokenEconomicsChart').getContext('2d'); + new Chart(ctx, { + type: 'doughnut', + data: { + labels: [ + 'Active Escrow Locks', + 'DDR Juror Staking', + 'Governance Staking', + 'Platform Treasury', + 'Circulating Supply' + ], + datasets: [{ + data: [25, 20, 15, 10, 30], + backgroundColor: [ + '#737373', + '#525252', + '#404040', + '#262626', + '#A3A3A3' + ], + borderColor: '#FFFFFF', + borderWidth: 1 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { + position: 'bottom', + labels: { + font: { + family: "'Courier New', Courier, monospace" + } + } + }, + tooltip: { + callbacks: { + label: function(context) { + return context.label + ': ' + context.raw + '%'; + } + } + } + } + } + }); + } + } + + function addTokenUtilityDiagram() { + // Find section about token utility + const utilitySection = findSection('SVMAI Token Utility and Ecosystem Value'); + if (!utilitySection) return; + + // Create diagram container + const diagramContainer = document.createElement('div'); + diagramContainer.className = 'diagram-container'; + diagramContainer.innerHTML = ` +
SVMAI Token Utility Map
+
Core utilities and use cases for the SVMAI token
+
+
+
Service Escrow
+

Primary medium for client stake and agent fee payments in the platform's escrow system

+
+
+
Dispute Resolution
+

Required for juror staking, dispute initiation fees, and appeal processes

+
+
+
Governance
+

Staking for voting rights on platform parameters and protocol updates

+
+
+
Platform Benefits
+

Access to premium features, reduced fees, or enhanced visibility for token holders

+
+
+ `; + + // Insert after the first paragraph + const firstPara = utilitySection.querySelector('p'); + if (firstPara) { + firstPara.parentNode.insertBefore(diagramContainer, firstPara.nextSibling); + } + } + + // Helper function to find sections by heading text + function findSection(headingText) { + const headings = document.querySelectorAll('#markdown-content h2'); + for (let heading of headings) { + if (heading.textContent.includes(headingText)) { + // Find the chapter div this heading is in + let section = heading.closest('.book-chapter'); + if (!section) section = heading.parentNode; + return section; + } + } + return null; + } + + // Add chapter navigation links + function addChapterNavigation() { + const chapters = document.querySelectorAll('.book-chapter'); + if (chapters.length < 2) return; + + chapters.forEach((chapter, index) => { + const navigation = document.createElement('div'); + navigation.className = 'book-nav'; + + if (index > 0) { + const prevLink = document.createElement('a'); + prevLink.href = '#'; + prevLink.textContent = '← Previous Chapter'; + prevLink.onclick = (e) => { + e.preventDefault(); + chapters[index - 1].scrollIntoView({ behavior: 'smooth' }); + }; + navigation.appendChild(prevLink); + } else { + // Add an empty element to maintain flex spacing + const spacer = document.createElement('div'); + navigation.appendChild(spacer); + } + + if (index < chapters.length - 1) { + const nextLink = document.createElement('a'); + nextLink.href = '#'; + nextLink.textContent = 'Next Chapter →'; + nextLink.onclick = (e) => { + e.preventDefault(); + chapters[index + 1].scrollIntoView({ behavior: 'smooth' }); + }; + navigation.appendChild(nextLink); + } + + chapter.appendChild(navigation); + }); + } \ No newline at end of file From 910a4f08cbc18cb2a08244476724a387b9b030a2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 May 2025 12:53:14 +0000 Subject: [PATCH 3/6] Added mobile responsiveness and print styles for book-like experience Co-authored-by: 0xrinegade <101195284+0xrinegade@users.noreply.github.com> --- docs.html | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs.html b/docs.html index cca03f4..f0edeb3 100644 --- a/docs.html +++ b/docs.html @@ -218,6 +218,22 @@ margin: 0 auto; } + @media (max-width: 768px) { + .chart-container { + height: 250px; + } + + .infographic-grid { + grid-template-columns: 1fr; + } + + .book-nav { + flex-direction: column; + gap: 1rem; + align-items: center; + } + } + .infographic-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); @@ -239,6 +255,47 @@ border-bottom: 1px solid #D4D4D4; padding-bottom: 0.25rem; } + + /* Print styles for book-like printing */ + @media print { + body { + font-size: 12pt; + } + + .header, .footer, #sidebar, .book-nav { + display: none !important; + } + + #content { + width: 100% !important; + margin: 0 !important; + padding: 0 !important; + } + + #markdown-content { + box-shadow: none !important; + padding: 0 !important; + background-color: white !important; + } + + .book-chapter { + page-break-after: always; + border-bottom: none; + } + + .chart-container { + height: 400px !important; + page-break-inside: avoid; + } + + .diagram-container { + page-break-inside: avoid; + } + + .infographic-grid { + page-break-inside: avoid; + } + } @@ -414,6 +471,8 @@

Error Loading Document

} // Override the original loadMarkdown function to add our enhancement logic + // We no longer need this since we modified the original loadMarkdown function + /* const originalLoadMarkdown = loadMarkdown; loadMarkdown = async function(path) { await originalLoadMarkdown(path); @@ -422,6 +481,7 @@

Error Loading Document

checkAndEnhanceContent(); }, 100); }; + */ // Functions to add specific diagrams function addServiceEscrowDiagram() { From 7b2d8efeb342ff5239ac429ff9154eeb8620e7e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 May 2025 23:32:32 +0000 Subject: [PATCH 4/6] Updated styling and improved responsiveness in docs.html Co-authored-by: 0xrinegade <101195284+0xrinegade@users.noreply.github.com> --- docs.html | 904 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 633 insertions(+), 271 deletions(-) diff --git a/docs.html b/docs.html index f0edeb3..6821cc2 100644 --- a/docs.html +++ b/docs.html @@ -14,130 +14,209 @@ -
+