"use strict";(globalThis.webpackChunkproject_public_docs=globalThis.webpackChunkproject_public_docs||[]).push([[413],{6785(e,s,n){n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"overview","title":"Orchestrated Discussions Overview","description":"Multi-agent AI discussion orchestration system with voting and phase-based workflows. Conducts structured discussions between multiple AI personas with distinct perspectives, expertise, and voting behavior.","source":"@site/docs/overview.md","sourceDirName":".","slug":"/","permalink":"/rob/orchestrated-discussions/","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"slug":"/","sidebar_position":1},"sidebar":"docs","next":{"title":"Orchestrated Discussions Architecture","permalink":"/rob/orchestrated-discussions/architecture"}}');var r=n(4848),i=n(8453);const d={slug:"/",sidebar_position:1},o="Orchestrated Discussions Overview",c={},l=[{value:"Project Links",id:"project-links",level:2},{value:"Core Concept",id:"core-concept",level:2},{value:"Components",id:"components",level:2},{value:"AI Personas",id:"ai-personas",level:2},{value:"Key Features",id:"key-features",level:2},{value:"Bundled CmdForge Tools",id:"bundled-cmdforge-tools",level:2},{value:"Utility Tools",id:"utility-tools",level:3},{value:"Orchestration Tools",id:"orchestration-tools",level:3},{value:"Participant Tools",id:"participant-tools",level:3},{value:"Quick Start",id:"quick-start",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"orchestrated-discussions-overview",children:"Orchestrated Discussions Overview"})}),"\n",(0,r.jsx)(s.p,{children:"Multi-agent AI discussion orchestration system with voting and phase-based workflows. Conducts structured discussions between multiple AI personas with distinct perspectives, expertise, and voting behavior."}),"\n",(0,r.jsx)(s.h2,{id:"project-links",children:"Project Links"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Resource"}),(0,r.jsx)(s.th,{children:"URL"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Git Repository"})}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.a,{href:"https://gitea.brrd.tech/rob/orchestrated-discussions",children:"https://gitea.brrd.tech/rob/orchestrated-discussions"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Local Path"})}),(0,r.jsx)(s.td,{children:(0,r.jsx)(s.code,{children:"~/PycharmProjects/orchestrated-discussions"})})]})]})]}),"\n",(0,r.jsx)(s.h2,{id:"core-concept",children:"Core Concept"}),"\n",(0,r.jsx)(s.p,{children:"Orchestrated Discussions provides a structured format for AI agents to collaborate on complex problems. Each agent has a unique perspective (security, pragmatism, architecture) and discussions follow phases with voting to reach consensus."}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Orchestrated Discussion \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 DISCUSSION FILE \u2502 \u2502\n\u2502 \u2502 # FEAT-001: Add Export Feature \u2502 \u2502\n\u2502 \u2502 Status: DESIGN \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 ## @architect \u2502 \u2502\n\u2502 \u2502 We should use a plugin architecture for exporters... \u2502 \u2502\n\u2502 \u2502 VOTE: +1 (proceed) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 ## @security \u2502 \u2502\n\u2502 \u2502 Consider data sanitization before export... \u2502 \u2502\n\u2502 \u2502 VOTE: 0 (neutral, needs more info) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 ## @pragmatist \u2502 \u2502\n\u2502 \u2502 Start with CSV only, add others later... \u2502 \u2502\n\u2502 \u2502 VOTE: +1 (proceed) \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u25bc \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 Vote Counter \u2502 Status Update \u2502 Mention Route \u2502 Summarizer \u2502 \u2502\n\u2502 \u2502 +2 proceed \u2502 DESIGN\u2192IMPL \u2502 @security \u2502 Generate \u2502 \u2502\n\u2502 \u2502 1 neutral \u2502 if threshold \u2502 follow-up \u2502 summary.md \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,r.jsx)(s.h2,{id:"components",children:"Components"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Orchestrated Discussions \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Discussion \u2502 AI \u2502 GUI/TUI \u2502 CmdForge \u2502\n\u2502 Files \u2502 Personas \u2502 Interface \u2502 Integration \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Append-only \u2502 Architect \u2502 Dear PyGui \u2502 All logic in \u2502\n\u2502 Markdown \u2502 Security \u2502 urwid TUI \u2502 CmdForge tools \u2502\n\u2502 Structured \u2502 Pragmatist \u2502 \u2502 \u2502\n\u2502 format \u2502 Moderator \u2502 \u2502 Unix philosophy \u2502\n\u2502 \u2502 + more \u2502 \u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,r.jsx)(s.h2,{id:"ai-personas",children:"AI Personas"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Persona"}),(0,r.jsx)(s.th,{children:"Role"}),(0,r.jsx)(s.th,{children:"Voting Tendency"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Moderator"})}),(0,r.jsx)(s.td,{children:"Facilitates, summarizes, keeps on track"}),(0,r.jsx)(s.td,{children:"Usually neutral"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Architect"})}),(0,r.jsx)(s.td,{children:"System design, scalability, patterns"}),(0,r.jsx)(s.td,{children:"Cautious on design"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Security"})}),(0,r.jsx)(s.td,{children:"Risk assessment, vulnerabilities"}),(0,r.jsx)(s.td,{children:"Conservative"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Pragmatist"})}),(0,r.jsx)(s.td,{children:"What works now, shipping"}),(0,r.jsx)(s.td,{children:"Aggressive on shipping"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Perfectionist"})}),(0,r.jsx)(s.td,{children:"Code quality, best practices"}),(0,r.jsx)(s.td,{children:"Conservative on quality"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Researcher"})}),(0,r.jsx)(s.td,{children:"Prior art, documentation"}),(0,r.jsx)(s.td,{children:"Usually neutral"})]})]})]}),"\n",(0,r.jsx)(s.h2,{id:"key-features",children:"Key Features"}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Feature"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Append-only Files"})}),(0,r.jsx)(s.td,{children:"Discussions grow, never edited (audit trail)"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Phase Workflow"})}),(0,r.jsx)(s.td,{children:"feature \u2192 design \u2192 implementation \u2192 testing \u2192 review"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Voting System"})}),(0,r.jsx)(s.td,{children:"+1 proceed, 0 neutral, -1 block"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Status Promotion"})}),(0,r.jsx)(s.td,{children:"Auto-advance when consensus reached"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Mention Routing"})}),(0,r.jsx)(s.td,{children:"@persona triggers response from that agent"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Diagram Support"})}),(0,r.jsx)(s.td,{children:"PlantUML, Mermaid embedded in discussions"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:(0,r.jsx)(s.strong,{children:"Text-to-Speech"})}),(0,r.jsx)(s.td,{children:"Read comments aloud for accessibility"})]})]})]}),"\n",(0,r.jsx)(s.h2,{id:"bundled-cmdforge-tools",children:"Bundled CmdForge Tools"}),"\n",(0,r.jsx)(s.h3,{id:"utility-tools",children:"Utility Tools"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-parser"})," - Parse discussion files to JSON"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-validator"})," - Validate discussion format"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-summarizer"})," - Generate summaries"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"orchestration-tools",children:"Orchestration Tools"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-vote-counter"})," - Count votes, calculate consensus"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-mention-router"})," - Route @mentions to agents"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-status-promoter"})," - Update status based on votes"]}),"\n"]}),"\n",(0,r.jsx)(s.h3,{id:"participant-tools",children:"Participant Tools"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-architect"})," - Architect perspective responses"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-security"})," - Security perspective responses"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-pragmatist"})," - Pragmatist perspective responses"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.code,{children:"discussion-moderator"})," - Moderation and facilitation"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-bash",children:'# Install\ncd ~/PycharmProjects/orchestrated-discussions\npip install -e .\n\n# GUI mode\ndiscussion-gui\n\n# TUI mode\ndiscussion-tui\n\n# CLI: Create new discussion\ndiscussion new "Add export feature" --type feature\n\n# CLI: Add agent response\ndiscussion respond FEAT-001 --agent architect\n'})})]})}function h(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453(e,s,n){n.d(s,{R:()=>d,x:()=>o});var t=n(6540);const r={},i=t.createContext(r);function d(e){const s=t.useContext(i);return t.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:s},e.children)}}}]);