@a-company/paradigm 7.1.0 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/{accept-orchestration-WMGFGYDK.js → accept-orchestration-JA3A3TSU.js} +1 -1
  2. package/dist/add-CBDU23S2.js +12 -0
  3. package/dist/{aggregate-KZICPVT3.js → aggregate-H7SB2UYT.js} +1 -1
  4. package/dist/{ambient-HAXPDIWK.js → ambient-TFLZFV5Y.js} +1 -1
  5. package/dist/ambient-VCTUHHIG.js +2 -0
  6. package/dist/arch-loader-YVOS3QRY.js +2 -0
  7. package/dist/{beacon-52EWNZPK.js → beacon-WVN264OT.js} +1 -1
  8. package/dist/calibrate-SH6PRZFD.js +2 -0
  9. package/dist/calibration-aggregate-5IVXSBDP.js +2 -0
  10. package/dist/calibration-aggregate-DUEE3LL2.js +4 -0
  11. package/dist/captain-ILBN2IKJ.js +2 -0
  12. package/dist/captain-J4FZ5PRU.js +2 -0
  13. package/dist/{chunk-QDP4G53M.js → chunk-27EK3OQZ.js} +4 -4
  14. package/dist/{chunk-KP5VOYAH.js → chunk-3F4QP2Z5.js} +1 -1
  15. package/dist/{chunk-VPNJL4LS.js → chunk-5VR7FKS5.js} +1 -1
  16. package/dist/{chunk-S3UVQ5RV.js → chunk-6VZSOQ7Y.js} +1 -1
  17. package/dist/chunk-7BZPDOOQ.js +25 -0
  18. package/dist/{chunk-YQK3XU63.js → chunk-7HUPVOAY.js} +12 -12
  19. package/dist/chunk-A5EEY6NO.js +3 -0
  20. package/dist/{chunk-4GC35IFF.js → chunk-D6BSCELB.js} +1 -1
  21. package/dist/{chunk-G6DK3ND3.js → chunk-DH7QVZDI.js} +9 -0
  22. package/dist/chunk-FG3M6VVO.js +30 -0
  23. package/dist/chunk-FNYYQNJY.js +2 -0
  24. package/dist/{chunk-RDWWSQGH.js → chunk-IBKCMLOW.js} +14 -14
  25. package/dist/chunk-K6TLYNRQ.js +7 -0
  26. package/dist/{chunk-W4BW7GXA.js → chunk-KA6QEI3C.js} +1 -1
  27. package/dist/chunk-L3AOKDMU.js +93 -0
  28. package/dist/chunk-M7JHVVDW.js +6 -0
  29. package/dist/chunk-MBKTVQS2.js +2 -0
  30. package/dist/chunk-NFN5UUJB.js +2 -0
  31. package/dist/chunk-O4ADSTSY.js +504 -0
  32. package/dist/chunk-RPGSQQTS.js +2 -0
  33. package/dist/chunk-RQHZUPLO.js +4 -0
  34. package/dist/chunk-SD3KVW5Q.js +2 -0
  35. package/dist/chunk-VKVVIN6J.js +25 -0
  36. package/dist/chunk-VOPJ47QY.js +2 -0
  37. package/dist/chunk-VR2LLUYE.js +17 -0
  38. package/dist/chunk-WMTES556.js +2 -0
  39. package/dist/chunk-XBK244QR.js +6 -0
  40. package/dist/{chunk-MBSY57RN.js → chunk-Y76OIMDO.js} +1 -1
  41. package/dist/{chunk-EG22HDXI.js → chunk-YNFF7XHV.js} +12 -12
  42. package/dist/chunk-YYRP7FLC.js +2 -0
  43. package/dist/{compliance-4P3EE5OA.js → compliance-3M6COUCO.js} +3 -3
  44. package/dist/{constellation-RHZAEFV7.js → constellation-TIKNCZWR.js} +1 -1
  45. package/dist/{cost-24UZSS2P.js → cost-VTHZQKO4.js} +2 -2
  46. package/dist/{diff-VBVIUNL5.js → diff-NZSJW3V3.js} +1 -1
  47. package/dist/dist-6TDAY6TQ-HMSTBL57.js +39 -0
  48. package/dist/{dist-TNE4GFT7.js → dist-PW5YPGFF.js} +1 -1
  49. package/dist/{docs-NTP6UENF.js → docs-DWU3T2BV.js} +1 -1
  50. package/dist/github-GI3HX3N5.js +4 -0
  51. package/dist/{habits-BX2IRSUI.js → habits-UA7YT3CG.js} +3 -3
  52. package/dist/{hooks-AXBWYJ5V.js → hooks-XXJ7CSGJ.js} +1 -1
  53. package/dist/index.js +9 -9
  54. package/dist/{init-F4MSKZIW.js → init-QPMLEQWQ.js} +1 -1
  55. package/dist/{integrity-7TKX3DZ4.js → integrity-FRGF5BFS.js} +1 -1
  56. package/dist/lint-Y4P3MHBV.js +26 -0
  57. package/dist/list-5XRLWD7K.js +12 -0
  58. package/dist/mcp.js +1 -1
  59. package/dist/{migrate-5M4KUQ2L.js → migrate-LIVXILOO.js} +1 -1
  60. package/dist/nomination-engine-EFXDEPZN.js +2 -0
  61. package/dist/{orchestrate-MLUGQOEJ.js → orchestrate-C7SI4J7C.js} +1 -1
  62. package/dist/orchestration-4MJKBSGM.js +2 -0
  63. package/dist/orchestration-S2ESNKSA.js +2 -0
  64. package/dist/platform-server-IOWHNS7Q.js +25 -0
  65. package/dist/{probe-27ARJKRO.js → probe-G3TKOJYW.js} +1 -1
  66. package/dist/quiz-QKIKAVL7.js +10 -0
  67. package/dist/registry-NEW4OJ44.js +2 -0
  68. package/dist/{reindex-ZLDQBFUR.js → reindex-G2JLIGOQ.js} +1 -1
  69. package/dist/reindex-JR3PXYQE.js +2 -0
  70. package/dist/remember-KZYAY77S.js +14 -0
  71. package/dist/{review-BRO2UP4M.js → review-WHRNLW2W.js} +1 -1
  72. package/dist/{ripple-KCVDS3WE.js → ripple-B6U7263T.js} +1 -1
  73. package/dist/{sentinel-EFPEX246.js → sentinel-RIEQWALQ.js} +1 -1
  74. package/dist/{sentinel-bridge-UR2MKARY.js → sentinel-bridge-D4LFDFCH.js} +1 -1
  75. package/dist/{serve-2PKJP65E.js → serve-6RNZYK2I.js} +2 -2
  76. package/dist/serve-PWAFVYYC.js +9 -0
  77. package/dist/{server-4D77LCST.js → server-K7G3IHR3.js} +1 -1
  78. package/dist/{setup-5V2AGLQ6.js → setup-L5OP24US.js} +3 -3
  79. package/dist/{shift-PM4GI736.js → shift-HGXZ5THV.js} +3 -3
  80. package/dist/{show-N5LGB5B2.js → show-VXNGIJE4.js} +3 -3
  81. package/dist/{snapshot-YMX5QRBM.js → snapshot-MT5L6XE4.js} +1 -1
  82. package/dist/status-45KIG32R.js +6 -0
  83. package/dist/{status-3GJXI4IK.js → status-4QGKLOP6.js} +4 -4
  84. package/dist/{summary-RPU2BS3Q.js → summary-6QNVQZJV.js} +1 -1
  85. package/dist/symphony-KQJ6HIXB.js +53 -0
  86. package/dist/symphony-VDNDFK7H.js +2 -0
  87. package/dist/symphony-relay-ASMKPDEE.js +3 -0
  88. package/dist/sync-layer-C2PF273N.js +2 -0
  89. package/dist/task-PRLQ4VPK.js +3 -0
  90. package/dist/task-loader-EIXPKHA3.js +2 -0
  91. package/dist/task-loader-LFEE6OU7.js +2 -0
  92. package/dist/task-settlement-A2T6EACG.js +3 -0
  93. package/dist/task-settlement-ZXOY4YGX.js +3 -0
  94. package/dist/team-KP4HMUB5.js +2 -0
  95. package/dist/thread-2A7QKU72.js +41 -0
  96. package/dist/tools-NOMEIBS7.js +2 -0
  97. package/dist/tools-YW3Q27UI.js +142 -0
  98. package/dist/validate-OZTX3FYX.js +13 -0
  99. package/dist/validate-RIMSY3RP.js +9 -0
  100. package/dist/{workspace-6POCBPDY.js → workspace-4D4TQ637.js} +1 -1
  101. package/package.json +2 -6
  102. package/platform-ui/dist/assets/{AmbientSection-CwatqcBD.js → AmbientSection-xoxr3DQg.js} +1 -1
  103. package/platform-ui/dist/assets/{DocsSection-BZ2SFJBZ.js → DocsSection-Us2qksna.js} +1 -1
  104. package/platform-ui/dist/assets/{GitSection-MNNYU1tO.js → GitSection-DIHZyadf.js} +1 -1
  105. package/platform-ui/dist/assets/{GraphSection-COYjb4Pt.js → GraphSection-9TO0L1IO.js} +1 -1
  106. package/platform-ui/dist/assets/{LoreSection-B0hUbfsJ.js → LoreSection-DVDit8Aw.js} +1 -1
  107. package/platform-ui/dist/assets/{SentinelSection-BCxW1DCp.js → SentinelSection-a5_VNYcx.js} +1 -1
  108. package/platform-ui/dist/assets/{SymphonySection-BsucZRqy.js → SymphonySection-cRHEoJ9t.js} +1 -1
  109. package/platform-ui/dist/assets/TasksSection-44_gDO3L.css +1 -0
  110. package/platform-ui/dist/assets/TasksSection-h8x3qRIj.js +1 -0
  111. package/platform-ui/dist/assets/{TeamSection-C0QNTudW.js → TeamSection-mFoDyNic.js} +1 -1
  112. package/platform-ui/dist/assets/{UniversitySection-DN1-g9pw.js → UniversitySection-D99YRjmC.js} +1 -1
  113. package/platform-ui/dist/assets/{index-DwUT8pju.js → index-D_wB2S_2.js} +11 -11
  114. package/platform-ui/dist/index.html +1 -1
  115. package/dist/add-V6XR7DU5.js +0 -12
  116. package/dist/agent-loader-Z753DQWH.js +0 -2
  117. package/dist/ambient-QB7V4TBR.js +0 -6
  118. package/dist/calibrate-PHVP7RPH.js +0 -4
  119. package/dist/captain-3COP6YTD.js +0 -2
  120. package/dist/chunk-4CGPLLWQ.js +0 -30
  121. package/dist/chunk-7SWEOPWF.js +0 -2
  122. package/dist/chunk-CHSU6LTR.js +0 -2
  123. package/dist/chunk-EKNLG73M.js +0 -6
  124. package/dist/chunk-H55W26AR.js +0 -3
  125. package/dist/chunk-HE2NA5QF.js +0 -8
  126. package/dist/chunk-JIXHEBGK.js +0 -7
  127. package/dist/chunk-MBPLJKE5.js +0 -3
  128. package/dist/chunk-OIYJUU6T.js +0 -25
  129. package/dist/chunk-QO7YPQXC.js +0 -2
  130. package/dist/chunk-XMAV5AG6.js +0 -2
  131. package/dist/chunk-XPPFILCM.js +0 -2
  132. package/dist/chunk-YCDOA5IQ.js +0 -18
  133. package/dist/dist-GQ42YS5N-4HIJZVBB.js +0 -39
  134. package/dist/lint-IGKE6UPS.js +0 -26
  135. package/dist/list-NC3QGT75.js +0 -12
  136. package/dist/lore-loader-HAZ5FRLP.js +0 -2
  137. package/dist/lore-server-FC2GMDLT.js +0 -14
  138. package/dist/nomination-engine-ORHH4L2W.js +0 -2
  139. package/dist/orchestration-O2OVPTIZ.js +0 -2
  140. package/dist/platform-server-Y6TLEXR2.js +0 -25
  141. package/dist/quiz-TNV6APBM.js +0 -10
  142. package/dist/remember-MJRNTXYS.js +0 -14
  143. package/dist/serve-L52ZUTU6.js +0 -10
  144. package/dist/serve-XZ6GBUS3.js +0 -8
  145. package/dist/session-work-log-FF7CKMWP.js +0 -2
  146. package/dist/status-ENAI35NL.js +0 -6
  147. package/dist/symphony-CFAYJGLF.js +0 -2
  148. package/dist/symphony-L56O5ZG3.js +0 -53
  149. package/dist/symphony-relay-Y2UR3YNR.js +0 -3
  150. package/dist/task-loader-H7HQAYGL.js +0 -2
  151. package/dist/task-loader-YZME4RKE.js +0 -2
  152. package/dist/task-settlement-HINBVZBE.js +0 -3
  153. package/dist/task-settlement-XC6E6JNT.js +0 -3
  154. package/dist/team-25LK6CWM.js +0 -2
  155. package/dist/thread-HFXK65D4.js +0 -41
  156. package/dist/tools-GAU5WOEI.js +0 -2
  157. package/dist/validate-IQG7DBFC.js +0 -9
  158. package/dist/validate-LSCDOLBO.js +0 -13
  159. package/dist/work-log-loader-CRVTOMVB.js +0 -2
  160. package/graph-ui/dist/assets/index-BlgXTl53.css +0 -1
  161. package/graph-ui/dist/assets/index-Bq5nXK8p.js +0 -63
  162. package/graph-ui/dist/index.html +0 -13
  163. package/lore-ui/dist/assets/index-C3EixkjW.css +0 -1
  164. package/lore-ui/dist/assets/index-DKhNxgtW.js +0 -56
  165. package/lore-ui/dist/index.html +0 -13
  166. package/platform-ui/dist/assets/CanvasSection-dFAthehN.js +0 -9
  167. package/platform-ui/dist/assets/CanvasSection-flMXU19z.css +0 -1
@@ -0,0 +1 @@
1
+ import{c as os,j as e,d as G,r as y,R as ss,b as ds}from"./index-D_wB2S_2.js";const es="paradigm.tasks.boardTab";function hs(){try{const s=localStorage.getItem(es);if(s==="state"||s==="claimant"||s==="symbol"||s==="calibration")return s}catch{}return"state"}let T=null,S=null,$=null,I=null;const P=new Set,u=os((s,t)=>({tasks:[],loading:!1,error:null,view:"board",board:null,boardLoading:!1,boardError:null,calibration:null,calibrationLoading:!1,whoami:null,inboxClaimant:null,inboxTasks:[],inboxLoading:!1,inboxError:null,selectedTaskId:null,actionError:null,depCache:{},syncing:!1,lastSyncSummary:null,boardTab:hs(),filter:{status:"",priority:"",search:""},calibrationFilter:null,setView:a=>s({view:a}),setBoardTab:a=>{try{localStorage.setItem(es,a)}catch{}s({boardTab:a})},setFilter:a=>s(n=>({filter:{...n.filter,...a}})),clearFilters:()=>s({filter:{status:"",priority:"",search:""},calibrationFilter:null}),setCalibrationFilter:a=>s({calibrationFilter:a}),fetchTasks:async()=>{T==null||T.abort(),T=new AbortController;const{signal:a}=T;s({loading:!0,error:null});try{const n=await fetch("/api/tasks?status=active&limit=100",{signal:a});if(!n.ok){s({loading:!1,error:`HTTP ${n.status}`});return}const r=await n.json();s({tasks:r.tasks||[],loading:!1})}catch(n){if(n instanceof Error&&n.name==="AbortError")return;s({loading:!1,error:n instanceof Error?n.message:"fetch failed"})}},fetchBoard:async()=>{S==null||S.abort(),S=new AbortController;const{signal:a}=S;s({boardLoading:!0,boardError:null});try{const n=await fetch("/api/tasks/board",{signal:a});if(!n.ok){s({boardLoading:!1,boardError:`HTTP ${n.status}`});return}const r=await n.json();s({board:{runs:r.runs||[],unclaimed:r.unclaimed||[],loose:r.loose||[],summary:r.summary||{runs:0,open:0,inFlight:0,unclaimed:0,loose:0},integrity:r.integrity,settlementDebt:r.settlementDebt,staleClaims:r.staleClaims},boardLoading:!1})}catch(n){if(n instanceof Error&&n.name==="AbortError")return;s({boardLoading:!1,boardError:n instanceof Error?n.message:"fetch failed"})}},fetchCalibration:async()=>{$==null||$.abort(),$=new AbortController;const{signal:a}=$;s({calibrationLoading:!0});try{const n=await fetch("/api/tasks/calibration",{signal:a});if(!n.ok){s({calibrationLoading:!1});return}const r=await n.json();s({calibration:{archetypes:r.archetypes||[],taskTypes:r.taskTypes||[],cells:r.cells||{},coverage:r.coverage||{graduated:0,total:0,pct:0}},calibrationLoading:!1})}catch(n){if(n instanceof Error&&n.name==="AbortError")return;s({calibrationLoading:!1})}},fetchWhoami:async()=>{const a=t().whoami;if(a)return a;try{const n=await fetch("/api/tasks/whoami");if(!n.ok)return null;const r=await n.json(),i={kind:r.kind||"human",ref:r.ref||""};return s({whoami:i}),i}catch{return null}},fetchInbox:async(a,n)=>{I==null||I.abort(),I=new AbortController;const{signal:r}=I;s({inboxLoading:!0,inboxError:null,inboxClaimant:{kind:a,ref:n}});try{const i=new URLSearchParams({kind:a,ref:n}),l=await fetch(`/api/tasks/inbox?${i.toString()}`,{signal:r});if(!l.ok){s({inboxLoading:!1,inboxError:`HTTP ${l.status}`,inboxTasks:[]});return}const m=await l.json();s({inboxTasks:m.tasks||[],inboxClaimant:m.claimant||{kind:a,ref:n},inboxLoading:!1})}catch(i){if(i instanceof Error&&i.name==="AbortError")return;s({inboxLoading:!1,inboxError:i instanceof Error?i.message:"fetch failed",inboxTasks:[]})}},setInboxClaimant:a=>s({inboxClaimant:a}),openDetail:a=>s({selectedTaskId:a}),closeDetail:()=>s({selectedTaskId:null}),resolveDep:async a=>{if(a&&!(a in t().depCache)&&!P.has(a)){P.add(a);try{const n=await fetch(`/api/tasks/${encodeURIComponent(a)}`);if(n.status===404){s(l=>({depCache:{...l.depCache,[a]:null}}));return}if(!n.ok)return;const r=await n.json(),i=r&&r.task?r.task:r;i&&i.id&&s(l=>({depCache:{...l.depCache,[a]:i}}))}catch{}finally{P.delete(a)}}},clearActionError:()=>s({actionError:null}),claimTask:async(a,n,r,i)=>{await E(s,t,`/api/tasks/${a}/claim`,{ref:n,...r?{kind:r}:{},...i?{force:i}:{}})},startTask:async a=>{await E(s,t,`/api/tasks/${a}/start`)},doneTask:async a=>{await E(s,t,`/api/tasks/${a}/done`)},blockTask:async(a,n)=>{await E(s,t,`/api/tasks/${a}/block`,{reason:n})},unblockTask:async a=>{await E(s,t,`/api/tasks/${a}/unblock`)},clearSyncSummary:()=>s({lastSyncSummary:null}),syncGitHub:async a=>{var n,r,i,l;if(t().syncing)return t().lastSyncSummary;s({syncing:!0});try{const m=a&&a.length?{ids:a}:{},b=await fetch("/api/tasks/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)});if(!b.ok){const h={summary:{synced:0,conflict:0,agree:0,skipped:0},verdicts:[],offline:!0,conflictIds:[]};return s({syncing:!1,lastSyncSummary:h}),h}const d=await b.json(),o={synced:((n=d.summary)==null?void 0:n.synced)??0,conflict:((r=d.summary)==null?void 0:r.conflict)??0,agree:((i=d.summary)==null?void 0:i.agree)??0,skipped:((l=d.summary)==null?void 0:l.skipped)??0},f=d.verdicts??[],c=f.some(h=>h.status!=="offline"&&h.status!=="skipped"),_=f.length>0&&!c,k=f.filter(h=>h.status==="conflict").map(h=>h.taskId),v={summary:o,verdicts:f,offline:_,conflictIds:k};if(s({syncing:!1,lastSyncSummary:v}),o.synced>0||o.conflict>0||o.agree>0){const{fetchBoard:h,fetchTasks:p,fetchInbox:x,inboxClaimant:g}=t(),N=[h(),p()];g&&N.push(x(g.kind,g.ref)),await Promise.all(N)}return v}catch{const m={summary:{synced:0,conflict:0,agree:0,skipped:0},verdicts:[],offline:!0,conflictIds:[]};return s({syncing:!1,lastSyncSummary:m}),m}}}));async function E(s,t,a,n){var r;s({actionError:null});try{const i=await fetch(a,{method:"POST",headers:n?{"Content-Type":"application/json"}:void 0,body:n?JSON.stringify(n):void 0});if(!i.ok){let f=`HTTP ${i.status}`;try{const c=await i.json();c&&typeof c.error=="string"&&(f=(r=c.claimant)!=null&&r.ref?`${c.error} (held by ${c.claimant.ref})`:c.error)}catch{}s({actionError:f});return}const{fetchBoard:l,fetchTasks:m,fetchInbox:b,inboxClaimant:d}=t(),o=[l(),m()];d&&o.push(b(d.kind,d.ref)),await Promise.all(o)}catch(i){s({actionError:i instanceof Error?i.message:"action failed"})}}const us=[{maxTokens:3e3,points:1},{maxTokens:6e3,points:2},{maxTokens:12e3,points:3},{maxTokens:25e3,points:5},{maxTokens:5e4,points:8},{maxTokens:9e4,points:13}],ms=21;function M(s){if(!s||typeof s.min!="number"||typeof s.max!="number")return 0;const t=(s.min+s.max)/2;for(const{maxTokens:a,points:n}of us)if(t<a)return n;return ms}const as={architect:"var(--p-accent-purple)",builder:"var(--p-accent-blue)",tester:"var(--p-accent-green)",reviewer:"var(--p-accent-orange)",security:"var(--p-accent-red)"},ts={cid:"architect",forge:"builder",compliance:"security"};function ps(s){let t=0;for(let a=0;a<s.length;a++)t=(t<<5)-t+s.charCodeAt(a),t|=0;return t}function bs(s){const t=Math.abs(ps(s)),a=t%360,n=45+t%25,r=42+Math.floor(t/360)%18;return`hsl(${a}, ${n}%, ${r}%)`}function F(s){const t=ts[s.toLowerCase()]??s;return as[t]||bs(s)}function ns(s){return ts[s.toLowerCase()]??s.toLowerCase()}const H={high:0,medium:1,low:2},fs=/[#$^!~][a-z0-9][a-z0-9-]*/gi;function O(s){var n;const t=new Set;for(const r of s.tags||[])/^[#$^!~]/.test(r)&&t.add(r);const a=(n=s.blurb)==null?void 0:n.match(fs);if(a)for(const r of a)t.add(r);return[...t]}function _s(s){const t=O(s);return t.length>0?t[0]:null}function w(s){return{id:s.taskId,blurb:s.blurb,priority:s.priority||"medium",status:s.status,tags:s.tags||[],created:"",claimant:s.claimant,dependsOn:s.dependsOn,estimate:s.estimate,taskType:s.taskType}}function B(s){return{id:s.taskId,blurb:s.blurb,priority:s.priority,status:"open",tags:s.tags||[],created:"",proposedClaimant:s.proposedClaimant,estimate:s.estimate,taskType:s.taskType}}function xs(s,t){const a=s.status==="in-progress"?0:1,n=t.status==="in-progress"?0:1;return a!==n?a-n:H[s.priority]-H[t.priority]}function gs(s,t){var a,n;if(t.status&&s.status!==t.status||t.priority&&s.priority!==t.priority)return!1;if(t.search){const r=t.search.toLowerCase();if(!`${s.blurb} ${s.tags.join(" ")} ${((a=s.claimant)==null?void 0:a.ref)??""} ${((n=s.proposedClaimant)==null?void 0:n.ref)??""}`.toLowerCase().includes(r))return!1}return!0}function ys(s){return s.reduce((t,a)=>t+M(a.estimate),0)}function V(s){if(s>=1e3){const t=s/1e3;return Number.isInteger(t)?`${t}k`:`${t.toFixed(1)}k`}return String(s)}function W(s,t){return`${V(s)}–${V(t)}`}function ks(s,t){return!t||!s||s.kind!=="archetype"?null:`${ns(s.ref)}×${t.toLowerCase()}`}function js({estimate:s,claimant:t,taskType:a}){if(!s||typeof s.min!="number")return e.jsx("div",{className:"task-calibration prior",children:e.jsx("div",{className:"task-calibration__meta task-calibration__meta--prior",children:e.jsx("span",{className:"task-calibration__prior-label",children:"no estimate"})})});const n=M(s),r=s.source==="learned",i=ks(t,a);return e.jsx("div",{className:`task-calibration ${r?"learned":"prior"}`,children:r?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"task-calibration__points",children:n}),e.jsxs("div",{className:"task-calibration__meta",children:[e.jsxs("span",{className:"task-calibration__badge",children:["◆"," LEARNED ",e.jsxs("span",{className:"task-calibration__n",children:["n",s.n]})]}),e.jsx("span",{className:"task-calibration__band",children:W(s.min,s.max)}),i&&e.jsx("span",{className:"task-calibration__cell",children:i})]})]}):e.jsxs("div",{className:"task-calibration__meta task-calibration__meta--prior",children:[e.jsx("span",{className:"task-calibration__prior-label",children:"~prior~"}),e.jsxs("span",{className:"task-calibration__prior-row",children:[e.jsx("span",{className:"task-calibration__points task-calibration__points--prior",children:n}),e.jsx("span",{className:"task-calibration__band",children:W(s.min,s.max)})]}),i&&e.jsx("span",{className:"task-calibration__cell",children:i})]})})}function Ns(s){const t=G(r=>r.highlights),a=G(r=>r.annotations),n=y.useMemo(()=>new Set(O(s)),[s]);return y.useMemo(()=>{let r=!1,i,l=!1,m;for(const d of t)if(d.symbols.some(o=>n.has(o))){r=!0,i=d.color,l=d.pulse,m=d.label;break}const b=a.filter(d=>d.type==="badge"&&d.symbol&&n.has(d.symbol)).map(d=>({id:d.id,message:d.message,severity:d.severity}));return{highlighted:r,color:i,pulse:l,label:m,badges:b}},[t,a,n])}const vs={architect:"var(--p-accent-purple)",builder:"var(--p-accent-blue)",tester:"var(--p-accent-green)",reviewer:"var(--p-accent-orange)",security:"var(--p-accent-red)"};function Cs(s){let t=0;for(let a=0;a<s.length;a++)t=(t<<5)-t+s.charCodeAt(a),t|=0;return t}function K(s){return vs[s]||`hsl(${Math.abs(Cs(s))%360}, 60%, 50%)`}function ws(s){return s==="human"?"👤":s==="peer"?"⚡":"🤖"}function A({task:s,elevated:t}){var m;const a=((m=s.external_ref)==null?void 0:m.provider)==="github",n=u(b=>b.openDetail),r=Ns(s),i=["task-card",t?"task-card--hero":"",r.highlighted?"task-card--agent":"",r.highlighted&&r.pulse?"task-card--agent-pulse":""].filter(Boolean).join(" "),l=r.highlighted&&r.color?{"--agent-color":r.color}:void 0;return e.jsxs("div",{className:i,style:l,role:"button",tabIndex:0,onClick:()=>n(s.id),onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),n(s.id))},children:[r.badges.length>0&&e.jsx("div",{className:"task-card__agent-badges",children:r.badges.map(b=>e.jsx("span",{className:`task-agent-badge task-agent-badge--${b.severity}`,title:b.message,children:b.message},b.id))}),r.highlighted&&r.label&&e.jsx("div",{className:"task-card__agent-label",children:r.label}),e.jsxs("div",{className:"task-card__header",children:[e.jsx("span",{className:`task-chip task-chip--prio task-chip--prio-${s.priority}`,children:s.priority}),e.jsx("span",{className:`task-chip task-chip--status task-chip--status-${s.status}`,children:s.status})]}),e.jsx("div",{className:"task-card__title",children:s.blurb}),e.jsx(js,{estimate:s.estimate,claimant:s.claimant,taskType:s.taskType}),e.jsxs("div",{className:"task-card__footer",children:[s.claimant&&e.jsxs("span",{className:"task-claimant",style:{color:K(s.claimant.ref)},children:[ws(s.claimant.kind)," ",s.claimant.ref]}),!s.claimant&&s.proposedClaimant&&e.jsxs("span",{className:"task-proposed-claimant",style:{color:K(s.proposedClaimant.ref)},title:`suggested owner — ${s.proposedClaimant.kind} · ${s.proposedClaimant.ref}`,children:["→ ",s.proposedClaimant.ref]}),a&&s.external_ref&&e.jsxs("span",{className:"task-github",children:["⬢"," ",s.external_ref.ref]})]}),s.tags.length>0&&e.jsx("div",{className:"task-card__tags",children:s.tags.map(b=>e.jsx("span",{className:`task-tag ${b==="fragile"?"task-tag--fragile":""}`,children:b},b))})]})}const Y={high:0,medium:1,low:2};function Ts(){const s=u(r=>r.tasks),t=u(r=>r.loading),a=u(r=>r.error);if(t&&s.length===0)return e.jsx("p",{className:"tasks__empty",children:"Loading tasks…"});if(a&&s.length===0)return e.jsxs("p",{className:"tasks__empty",children:["Could not load tasks: ",a]});if(s.length===0)return e.jsx("p",{className:"tasks__empty",children:"No active tasks"});const n=[...s].sort((r,i)=>Y[r.priority]-Y[i.priority]);return e.jsx("div",{className:"tasks__list",children:n.map(r=>e.jsx(A,{task:r},r.id))})}const rs="paradigm.tasks.lane.collapsed.";function Ss(s,t){try{const a=localStorage.getItem(rs+s);if(a==="1")return!0;if(a==="0")return!1}catch{}return t}function $s({laneKey:s,label:t,color:a,present:n,cards:r,defaultCollapsed:i=!1}){const[l,m]=y.useState(()=>Ss(s,i)),b=y.useCallback(()=>{m(f=>{const c=!f;try{localStorage.setItem(rs+s,c?"1":"0")}catch{}return c})},[s]),d=[...r].sort(xs),o=ys(r);return e.jsxs("section",{className:`swim-lane ${l?"swim-lane--collapsed":""}`,style:{"--lane-color":a},children:[e.jsxs("header",{className:"swim-lane__header",onClick:b,children:[e.jsx("button",{className:"swim-lane__chevron","aria-label":l?"Expand lane":"Collapse lane",children:l?"›":"⌄"}),n!==void 0&&e.jsx("span",{className:`swim-lane__dot ${n?"is-present":""}`,title:n?"present":"idle"}),e.jsx("span",{className:"swim-lane__label",children:t}),e.jsx("span",{className:"swim-lane__count",children:r.length}),e.jsxs("span",{className:"swim-lane__points",title:"summed story points",children:[o," pt"]})]}),!l&&e.jsx("div",{className:"swim-lane__cards",children:d.length===0?e.jsx("div",{className:"swim-lane__empty",children:"no tasks"}):d.map(f=>e.jsx(A,{task:f},f.id))})]})}const is="paradigm.tasks.boardHealth.collapsed";function Is(){try{return localStorage.getItem(is)!=="0"}catch{return!0}}function Es(){const s=u(o=>o.board),t=u(o=>o.openDetail),[a,n]=y.useState(Is),r=y.useCallback(()=>{n(o=>{const f=!o;try{localStorage.setItem(is,f?"1":"0")}catch{}return f})},[]),i=(s==null?void 0:s.integrity)??[],l=(s==null?void 0:s.settlementDebt)??[],m=(s==null?void 0:s.staleClaims)??[];if(i.length+l.length+m.length===0)return null;const d=[];return i.length&&d.push(`${i.length} DAG issue${i.length===1?"":"s"}`),l.length&&d.push(`${l.length} settlement-debt`),m.length&&d.push(`${m.length} stale claim${m.length===1?"":"s"}`),e.jsxs("section",{className:"board-health",children:[e.jsxs("header",{className:"board-health__bar",onClick:r,role:"button",tabIndex:0,"aria-expanded":!a,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),r())},children:[e.jsx("span",{className:"board-health__chevron","aria-hidden":!0,children:a?"›":"⌄"}),e.jsx("span",{className:"board-health__icon","aria-hidden":!0,children:"⚠"}),e.jsx("span",{className:"board-health__title",children:"Board health"}),e.jsx("span",{className:"board-health__summary",children:d.join(" · ")})]}),!a&&e.jsxs("div",{className:"board-health__detail",children:[i.length>0&&e.jsxs("div",{className:"board-health__group",children:[e.jsx("div",{className:"board-health__group-label",children:"DAG integrity"}),i.map((o,f)=>e.jsxs("button",{className:"board-health__row",onClick:()=>o.taskId&&t(o.taskId),disabled:!o.taskId,children:[e.jsx("span",{className:"board-health__kind",children:o.kind}),e.jsx("span",{className:"board-health__row-detail",children:o.detail})]},`integ:${o.kind}:${o.taskId}:${f}`))]}),l.length>0&&e.jsxs("div",{className:"board-health__group",children:[e.jsx("div",{className:"board-health__group-label",children:"Settlement debt"}),l.map((o,f)=>e.jsxs("button",{className:"board-health__row",onClick:()=>o.epicTaskId&&t(o.epicTaskId),disabled:!o.epicTaskId,children:[e.jsx("span",{className:"board-health__row-blurb",children:o.blurb}),e.jsx("span",{className:"board-health__row-detail",children:o.reason})]},`debt:${o.epicTaskId}:${f}`))]}),m.length>0&&e.jsxs("div",{className:"board-health__group",children:[e.jsx("div",{className:"board-health__group-label",children:"Stale claims"}),m.map((o,f)=>{var c;return e.jsxs("button",{className:"board-health__row",onClick:()=>o.taskId&&t(o.taskId),disabled:!o.taskId,children:[e.jsx("span",{className:"board-health__row-blurb",children:o.blurb}),e.jsxs("span",{className:"board-health__row-detail",children:["claimed by ",((c=o.claimant)==null?void 0:c.ref)??"unknown",", ",o.ageDays,"d"]})]},`stale:${o.taskId}:${f}`)})]})]})]})}const Ls=[{status:"open",label:"Open",color:"var(--p-accent-blue)"},{status:"in-progress",label:"In Progress",color:"var(--p-accent-purple)"},{status:"done",label:"Done",color:"var(--p-accent-green)"},{status:"shelved",label:"Shelved",color:"var(--p-text-muted)"}];function As(s){return s.claimant&&s.claimant.kind==="archetype"?ns(s.claimant.ref):null}function Ds(){const s=u(c=>c.board),t=u(c=>c.boardLoading),a=u(c=>c.boardError),n=u(c=>c.boardTab),r=n==="calibration"?"state":n,i=u(c=>c.filter),l=u(c=>c.calibrationFilter),{runCards:m,unclaimedCards:b}=y.useMemo(()=>{const c=[],_=[];if(s){for(const k of s.runs)for(const v of k.nodes)c.push(w(v));for(const k of s.loose??[])c.push(w(k));for(const k of s.unclaimed)_.push(B(k))}return{runCards:c,unclaimedCards:_}},[s]),d=y.useMemo(()=>c=>!(!gs(c,i)||l&&(As(c)!==l.archetype||(c.taskType||"").toLowerCase()!==l.taskType.toLowerCase())),[i,l]),o=y.useMemo(()=>{var x;const c=[...m,...b].filter(d),_=m.filter(d),k=b.filter(d);if(r==="state")return Ls.map(g=>({key:`state:${g.status}`,label:g.label,color:g.color,cards:c.filter(N=>N.status===g.status),defaultCollapsed:g.status==="done"||g.status==="shelved"}));if(r==="symbol"){const g=new Map;for(const N of c){const C=_s(N)??"(no symbol)";g.has(C)||g.set(C,[]),g.get(C).push(N)}return[...g.entries()].sort((N,C)=>C[1].length-N[1].length).map(([N,C])=>({key:`symbol:${N}`,label:N,color:N==="(no symbol)"?"var(--p-text-muted)":"var(--p-symbol-component)",cards:C}))}const v=new Map,h=[];for(const g of _){if(g.status==="done"){h.push(g);continue}const N=((x=g.claimant)==null?void 0:x.ref)??"(unassigned)";v.has(N)||v.set(N,[]),v.get(N).push(g)}const p=[...v.entries()].sort((g,N)=>N[1].length-g[1].length).map(([g,N])=>({key:`claimant:${g}`,label:g,color:F(g),present:N.some(C=>C.status==="in-progress"),cards:N}));return k.length>0&&p.push({key:"claimant:__unclaimed__",label:"Unclaimed",color:"var(--p-accent-orange)",cards:k}),p.push({key:"claimant:__done__",label:"Done",color:"var(--p-accent-green)",cards:h,defaultCollapsed:!0}),p},[r,m,b,d]),f=o.reduce((c,_)=>c+_.cards.length,0);return e.jsxs("div",{className:"board",children:[e.jsx(Es,{}),t&&!s&&e.jsx("p",{className:"tasks__empty",children:"Loading board…"}),a&&!s&&e.jsxs("p",{className:"tasks__empty",children:["Could not load board: ",a]}),s&&f===0&&e.jsx("p",{className:"tasks__empty",children:l?`No ${l.taskType} tasks claimed by ${l.archetype} yet`:"No tasks match the current filters"}),s&&e.jsx("div",{className:"board__lanes",children:o.map(c=>e.jsx($s,{laneKey:c.key,label:c.label,color:c.color,present:c.present,cards:c.cards,defaultCollapsed:c.defaultCollapsed},c.key))})]})}const Fs=[{tab:"state",label:"State"},{tab:"claimant",label:"Claimant"},{tab:"symbol",label:"Symbol/Flow"},{tab:"calibration",label:"Calibration"}];function Bs(){const s=u(a=>a.boardTab),t=u(a=>a.setBoardTab);return e.jsx("div",{className:"board-tabs view-switcher",role:"tablist","aria-label":"Board view",children:Fs.map(a=>e.jsx("button",{role:"tab","aria-selected":s===a.tab,className:`view-tab ${s===a.tab?"active":""}`,onClick:()=>t(a.tab),children:a.label},a.tab))})}const L=8;function z(s){if(s>=1e3){const t=s/1e3;return Number.isInteger(t)?`${t}k`:`${t.toFixed(1)}k`}return String(s)}function Ps({archetype:s,taskType:t,cell:a,onSelect:n}){const r=u(c=>c.calibrationFilter),i=u(c=>c.setCalibrationFilter),l=(r==null?void 0:r.archetype)===s&&(r==null?void 0:r.taskType)===t,m=(a==null?void 0:a.source)==="learned",b=F(s),d=()=>{l?i(null):(i({archetype:s,taskType:t}),n==null||n())};if(!a)return e.jsx("td",{className:"cell-grid__cell cell-grid__cell--empty",children:"·"});const o=Math.min(a.n,L)/L,f=m?void 0:{"--cell-color":b,"--cell-progress":String(o),opacity:.35+o*.45};return e.jsx("td",{className:`cell-grid__cell ${m?"is-learned":"is-prior"} ${l?"is-active":""}`,style:m?{"--cell-color":b}:f,onClick:d,title:`${s} × ${t} — ${a.source} (n${a.n}${m?"":` / ${L} to graduate`})`,children:m?e.jsxs("span",{className:"cell-grid__band",children:[e.jsx("span",{className:"cell-grid__learned-dot",children:"●"}),z(a.min),"–",z(a.max),e.jsxs("span",{className:"cell-grid__n",children:["n",a.n]})]}):e.jsxs("span",{className:"cell-grid__prior",children:[e.jsx("span",{className:"cell-grid__prior-ramp","aria-hidden":"true",style:{width:`${Math.round(o*100)}%`}}),e.jsxs("span",{className:"cell-grid__prior-tick",children:[a.n,"/",L]})]})})}function U({onCellSelect:s}={}){const t=u(i=>i.calibration);if(!t)return e.jsx("div",{className:"cell-grid__loading",children:"Loading calibration…"});const{archetypes:a,taskTypes:n,cells:r}=t;return a.length===0||n.length===0?e.jsx("div",{className:"cell-grid__loading",children:"No calibration cells yet — estimates will graduate as the team logs actuals."}):e.jsx("div",{className:"cell-grid__scroll",children:e.jsxs("table",{className:"cell-grid",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"cell-grid__corner"}),n.map(i=>e.jsx("th",{className:"cell-grid__col-head",children:i},i))]})}),e.jsx("tbody",{children:a.map(i=>e.jsxs("tr",{children:[e.jsx("th",{className:"cell-grid__row-head",style:{color:F(i)},children:i}),n.map(l=>{var m;return e.jsx(Ps,{archetype:i,taskType:l,cell:(m=r[i])==null?void 0:m[l],onSelect:s},l)})]},i))})]})})}const ls="paradigm.tasks.calibrationStrip.collapsed";function Ms(){try{return localStorage.getItem(ls)==="1"}catch{return!1}}function Os({variant:s="strip"}){const t=u(d=>d.calibration),a=u(d=>d.setBoardTab),[n,r]=y.useState(Ms),i=y.useCallback(()=>{r(d=>{const o=!d;try{localStorage.setItem(ls,o?"1":"0")}catch{}return o})},[]),l=(t==null?void 0:t.coverage)??{graduated:0,total:0,pct:0},m=l.graduated===0;if(s==="tab")return e.jsxs("section",{className:`calib-tab ${m?"calib-tab--cold":""}`,children:[e.jsxs("header",{className:"calib-tab__header",children:[e.jsxs("div",{className:"calib-tab__stat",children:[e.jsxs("span",{className:"calib-tab__pct",children:[l.pct,"%"]}),e.jsxs("span",{className:"calib-tab__stat-label",children:["calibrated cells · ",l.graduated," of ",l.total," graduated"]})]}),m&&e.jsx("span",{className:"calib-strip__badge",children:"learning in progress"})]}),m&&e.jsxs("p",{className:"calib-strip__cta",children:["Run ",e.jsx("code",{children:"paradigm calibrate"})," after orchestration runs to graduate cells from estimates to learned bands."]}),e.jsx("div",{className:"calib-tab__grid",children:e.jsx(U,{onCellSelect:()=>a("state")})})]});const b=m?!1:n;return e.jsxs("section",{className:`calib-strip ${m?"calib-strip--cold":""}`,children:[e.jsxs("header",{className:"calib-strip__header",onClick:i,children:[e.jsx("button",{className:"calib-strip__chevron","aria-label":b?"Expand calibration":"Collapse calibration",children:b?"›":"⌄"}),e.jsx("span",{className:"calib-strip__title",children:"Calibration"}),b?e.jsxs("span",{className:"calib-strip__summary",children:[e.jsxs("span",{className:"calib-strip__summary-pct",children:[l.pct,"%"]})," ·"," ",l.graduated,"/",l.total," cells learned"]}):e.jsxs("div",{className:"calib-strip__stat",children:[e.jsxs("span",{className:"calib-strip__pct",children:[l.pct,"%"]}),e.jsxs("span",{className:"calib-strip__stat-label",children:["calibrated cells · ",l.graduated," of ",l.total," graduated"]})]}),m&&e.jsx("span",{className:"calib-strip__badge",children:"learning in progress"})]}),!b&&e.jsxs("div",{className:"calib-strip__body",children:[m&&e.jsxs("p",{className:"calib-strip__cta",children:["Run ",e.jsx("code",{children:"paradigm calibrate"})," after orchestration runs to graduate cells from estimates to learned bands."]}),e.jsx(U,{})]})]})}const Rs=["open","in-progress","done","shelved"],Gs=["high","medium","low"];function Hs(){const s=u(l=>l.filter),t=u(l=>l.setFilter),a=u(l=>l.clearFilters),n=u(l=>l.calibrationFilter),r=u(l=>l.setCalibrationFilter),i=!!s.status||!!s.priority||!!s.search||!!n;return e.jsxs("div",{className:"filter-bar tasks-filter-bar",children:[e.jsxs("select",{value:s.status||"",onChange:l=>t({status:l.target.value||""}),children:[e.jsx("option",{value:"",children:"All statuses"}),Rs.map(l=>e.jsx("option",{value:l,children:l},l))]}),e.jsxs("select",{value:s.priority||"",onChange:l=>t({priority:l.target.value||""}),children:[e.jsx("option",{value:"",children:"All priorities"}),Gs.map(l=>e.jsx("option",{value:l,children:l},l))]}),e.jsx("input",{type:"text",placeholder:"Search blurb…",value:s.search||"",onChange:l=>t({search:l.target.value||""}),style:{width:180}}),n&&e.jsxs("span",{className:"calib-chip",title:"Calibration cell filter",children:[e.jsxs("span",{className:"calib-chip__label",children:[n.archetype," × ",n.taskType]}),e.jsx("button",{className:"calib-chip__clear","aria-label":"Clear calibration filter",onClick:()=>r(null),children:"×"})]}),i&&e.jsx("button",{className:"filter-clear",onClick:a,children:"Clear filters"})]})}function Vs(s,t){return!!s&&!!t&&s.kind===t.kind&&s.ref===t.ref}function cs({task:s}){const t=u(j=>j.claimTask),a=u(j=>j.startTask),n=u(j=>j.doneTask),r=u(j=>j.blockTask),i=u(j=>j.unblockTask),l=u(j=>j.whoami),m=u(j=>j.fetchWhoami),b=u(j=>j.actionError),d=u(j=>j.clearActionError),[o,f]=y.useState(!1),c=!!(s.blocked_on&&s.blocked_on.length>0),_=s.status==="done"||s.status==="shelved",k=Vs(s.claimant,l),v=!s.claimant||k,h=s.status==="open",p=s.status==="open"&&v,x=s.status==="open"||s.status==="in-progress",g=async j=>{f(!0);try{await j()}finally{f(!1)}},N=async()=>{const j=l??await m();if(!j||!j.ref){u.setState({actionError:"Could not resolve your identity (whoami)."});return}await g(()=>t(s.id,j.ref,"human"))},C=async()=>{const j=window.prompt("Block reason:");j==null||j.trim()===""||await g(()=>r(s.id,j.trim()))},R=!_&&(h||p||x);return!R&&!c&&!b?null:e.jsxs("div",{className:"task-actions",children:[c&&e.jsxs("div",{className:"task-actions__blocked",children:[e.jsx("span",{className:"task-actions__blocked-glyph",children:"⛔"}),e.jsx("span",{className:"task-actions__blocked-reason",children:s.blocked_on}),e.jsx("button",{className:"task-action task-action--unblock",disabled:o,onClick:()=>g(()=>i(s.id)),children:"Unblock"})]}),R&&e.jsxs("div",{className:"task-actions__row",children:[h&&e.jsx("button",{className:"task-action task-action--start",disabled:o,onClick:()=>g(()=>a(s.id)),children:"Start"}),p&&e.jsx("button",{className:"task-action task-action--claim",disabled:o,onClick:N,children:"Claim to me"}),x&&e.jsxs(e.Fragment,{children:[e.jsx("button",{className:"task-action task-action--done",disabled:o,onClick:()=>g(()=>n(s.id)),children:"Done"}),!c&&e.jsx("button",{className:"task-action task-action--block",disabled:o,onClick:C,children:"Block"})]})]}),b&&e.jsxs("div",{className:"task-actions__error",role:"alert",children:[e.jsx("span",{className:"task-actions__error-msg",children:b}),e.jsx("button",{className:"task-actions__error-dismiss",onClick:d,"aria-label":"Dismiss error",children:"✕"})]})]})}const D={high:0,medium:1,low:2};function q(s){return s==="human"?"👤":s==="peer"?"⚡":"🤖"}function J(s,t){return!!s&&!!t&&s.kind===t.kind&&s.ref===t.ref}function Ws(){const s=u(t=>t.board);return y.useMemo(()=>{const t=new Map;if(s){for(const a of s.runs)for(const n of a.nodes)n.claimant&&n.claimant.kind!=="human"&&t.set(`${n.claimant.kind}:${n.claimant.ref}`,n.claimant);for(const a of s.unclaimed)a.proposedClaimant&&a.proposedClaimant.kind!=="human"&&t.set(`${a.proposedClaimant.kind}:${a.proposedClaimant.ref}`,a.proposedClaimant)}return[...t.values()].sort((a,n)=>a.ref.localeCompare(n.ref))},[s])}function Ks(s){const t=s.length;if(t===0)return{pct:0,total:0};const a=s.filter(n=>{var r;return((r=n.estimate)==null?void 0:r.source)==="learned"}).length;return{pct:Math.round(a/t*100),total:t}}function Ys(s){return s.filter(a=>(a.status==="in-progress"||a.status==="open")&&!(a.blocked_on&&a.blocked_on.length>0)).sort((a,n)=>{const r=a.status==="in-progress"?0:1,i=n.status==="in-progress"?0:1;return r!==i?r-i:D[a.priority]-D[n.priority]})[0]??null}function zs({hero:s,pool:t}){const a=s.dependsOn??[],n=u(l=>l.depCache),r=u(l=>l.resolveDep);if(y.useEffect(()=>{for(const l of a)t.has(l)||r(l)},[a,t,n]),a.length===0)return null;const i=(l,m)=>`depends-chain__dot depends-chain__dot--${l} ${m?"is-filled":""}`;return e.jsxs("div",{className:"depends-chain",title:"dependency chain",children:[a.map((l,m)=>{const b=l in n?n[l]:void 0,d=t.get(l)??b??void 0,o=b===null&&!t.has(l),f=d?d.status:o?"unknown":"open",c=(d==null?void 0:d.status)==="done",_=X(d?d.id:l);return e.jsxs(ss.Fragment,{children:[m>0&&e.jsx("span",{className:"depends-chain__arrow",children:"→"}),e.jsx("span",{className:i(o?"unknown":f,c),title:d?d.blurb:o?"not found":"resolving…"}),e.jsx("span",{className:"depends-chain__id",children:_}),e.jsx("span",{className:"depends-chain__arrow",children:"→"})]},l)}),e.jsx("span",{className:"depends-chain__dot depends-chain__dot--this is-filled"}),e.jsx("span",{className:"depends-chain__id depends-chain__id--this",children:"this"})]})}function X(s){const t=s.split("-");return t.length>2?t.slice(-2).join("-"):s}function Us(){const s=u(h=>h.whoami),t=u(h=>h.fetchWhoami),a=u(h=>h.fetchInbox),n=u(h=>h.inboxClaimant),r=u(h=>h.inboxTasks),i=u(h=>h.inboxLoading),l=u(h=>h.inboxError),m=u(h=>h.board),b=Ws();y.useEffect(()=>{t().then(h=>{h&&h.ref&&!u.getState().inboxClaimant&&a(h.kind,h.ref)})},[]);const d=h=>{h.ref&&a(h.kind,h.ref)},o=y.useMemo(()=>{const h=new Map;for(const p of r)h.set(p.id,p);if(m){for(const p of m.runs)for(const x of p.nodes)h.set(x.taskId,w(x));for(const p of m.loose??[])h.set(p.taskId,w(p));for(const p of m.unclaimed)h.set(p.taskId,B(p))}return h},[r,m]),f=y.useMemo(()=>r.filter(h=>h.status!=="done"&&h.status!=="shelved"),[r]),c=y.useMemo(()=>Ys(f),[f]),_=y.useMemo(()=>f.filter(h=>h.id!==(c==null?void 0:c.id)),[f,c]),{pct:k,total:v}=Ks(r);return e.jsxs("div",{className:"inbox",children:[e.jsxs("div",{className:"inbox__pill-row",children:[s&&e.jsxs("button",{className:`inbox-pill inbox-pill--me ${J(n,s)?"active":""}`,style:{"--pill-color":"var(--p-accent-blue)"},onClick:()=>d(s),title:s.ref,children:[e.jsx("span",{className:"inbox-pill__glyph",children:"👤"})," Me"]}),b.map(h=>{const p=as[h.ref.toLowerCase()]||F(h.ref);return e.jsxs("button",{className:`inbox-pill ${J(n,h)?"active":""}`,style:{"--pill-color":p},onClick:()=>d(h),title:`${h.kind} · ${h.ref}`,children:[e.jsx("span",{className:"inbox-pill__glyph",children:q(h.kind)})," ",h.ref]},`${h.kind}:${h.ref}`)})]}),!n&&e.jsx("p",{className:"tasks__empty",children:"Pick a claimant to focus their inbox."}),n&&e.jsxs("div",{className:"inbox__column",children:[e.jsxs("div",{className:"inbox__calib-header",children:[e.jsxs("span",{className:"inbox__calib-who",children:[q(n.kind)," ",n.ref]}),e.jsxs("span",{className:"inbox__calib-stat",children:["calibration"," ",e.jsx("strong",{children:n.kind==="human"?"—":`${k}%`})," ","· n=",v]})]}),i&&r.length===0&&e.jsx("p",{className:"tasks__empty",children:"Loading inbox…"}),l&&!i&&e.jsxs("p",{className:"tasks__empty",children:["Could not load inbox: ",l]}),!i&&!l&&f.length===0&&e.jsxs("div",{className:"inbox__zero",children:[e.jsx("span",{className:"inbox__zero-glyph",children:"✦"}),e.jsx("span",{className:"inbox__zero-title",children:"inbox zero"}),e.jsx("span",{className:"inbox__zero-sub",children:"no active tasks for this claimant"})]}),c&&e.jsxs("div",{className:"inbox__hero",children:[e.jsx("div",{className:"inbox__hero-label",children:"Next up"}),e.jsx(A,{task:c,elevated:!0}),e.jsx(cs,{task:c}),e.jsx(zs,{hero:c,pool:o})]}),_.length>0&&e.jsxs("div",{className:"inbox__queue",children:[e.jsxs("div",{className:"inbox__queue-label",children:["Queue (",_.length,")"]}),_.slice().sort((h,p)=>D[h.priority]-D[p.priority]).map(h=>e.jsx(A,{task:h},h.id))]})]})]})}const Q="paradigm task sync";function qs(s){var n;let t=0,a=0;for(const r of s)((n=r.external_ref)==null?void 0:n.provider)==="github"&&(r.external_ref.url?t+=1:a+=1);return{synced:t,pushPending:a}}function Js(){const s=u(_=>_.board),t=u(_=>_.syncing),a=u(_=>_.lastSyncSummary),n=u(_=>_.syncGitHub),r=u(_=>_.clearSyncSummary),i=u(_=>_.openDetail),[l,m]=y.useState(!1),[b,d]=y.useState(!1),o=y.useMemo(()=>{const _=[];if(s){for(const k of s.runs)for(const v of k.nodes)_.push(w(v));for(const k of s.unclaimed)_.push(B(k))}return qs(_)},[s]),f=async()=>{try{await navigator.clipboard.writeText(Q),d(!0),setTimeout(()=>d(!1),1500)}catch{d(!1)}},c=async()=>{r(),await n()};return e.jsxs("div",{className:"sync-strip",children:[e.jsxs("div",{className:"sync-strip__counts",children:[e.jsx("span",{className:"sync-strip__provider",children:"⬢ GitHub"}),e.jsxs("span",{className:"sync-strip__stat sync-strip__stat--synced",children:[o.synced," synced"]}),e.jsx("span",{className:"sync-strip__sep",children:"·"}),e.jsxs("span",{className:"sync-strip__stat sync-strip__stat--pending",children:[o.pushPending," push-pending"]}),a&&e.jsx(Xs,{onOpen:i})]}),e.jsxs("div",{className:"sync-strip__action",children:[e.jsx("button",{className:"sync-strip__sync",onClick:c,disabled:t,"aria-busy":t,children:t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sync-strip__spinner","aria-hidden":"true"}),"Syncing…"]}):"Sync"}),e.jsx("button",{className:"sync-strip__cli-toggle",onClick:()=>m(_=>!_),title:"Sync via CLI",children:"via CLI"}),l&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"sync-strip__backdrop",onClick:()=>m(!1)}),e.jsxs("div",{className:"sync-strip__popover",role:"dialog","aria-label":"GitHub sync via CLI",children:[e.jsx("div",{className:"sync-strip__popover-title",children:"Sync via CLI"}),e.jsx("p",{className:"sync-strip__popover-note",children:"No server running? Run this in your project to pull and push task state from the command line."}),e.jsxs("div",{className:"sync-strip__cmd",children:[e.jsx("code",{children:Q}),e.jsx("button",{className:"sync-strip__copy",onClick:f,children:b?"Copied":"Copy"})]})]})]})]})]})}function Xs({onOpen:s}){const t=u(d=>d.lastSyncSummary);if(!t)return null;if(t.offline)return e.jsxs("span",{className:"sync-strip__result sync-strip__result--offline",children:["GitHub not available — ",e.jsx("code",{children:"gh auth login"})," to enable sync"]});const{synced:a,conflict:n,agree:r}=t.summary,i=r,l=n>0;if(a===0&&n===0)return e.jsx("span",{className:"sync-strip__result sync-strip__result--quiet",children:"Up to date"});const b=[];return a>0&&b.push(`Synced ${a}`),n>0&&b.push(`${n} conflict`),i>0&&b.push(`${i} unchanged`),e.jsxs("span",{className:`sync-strip__result ${l?"sync-strip__result--conflict":"sync-strip__result--ok"}`,children:[!l&&e.jsx("span",{"aria-hidden":"true",children:"✓ "}),b.join(" · "),l&&e.jsx("span",{className:"sync-strip__conflict-ids",children:t.conflictIds.map((d,o)=>e.jsxs(ss.Fragment,{children:[o>0&&", ",e.jsx("button",{className:"sync-strip__conflict-id",onClick:()=>s(d),title:"A human should reconcile this — local won",children:d})]},d))})]})}function Z(s){if(s>=1e3){const t=s/1e3;return Number.isInteger(t)?`${t}k`:`${t.toFixed(1)}k`}return String(s)}function Qs(s){return`tdp-dep__state tdp-dep__state--${s??"unknown"}`}function Zs(){var h;const s=u(p=>p.selectedTaskId),t=u(p=>p.closeDetail),a=u(p=>p.board),n=u(p=>p.inboxTasks),r=u(p=>p.tasks),[i,l]=y.useState(null),[m,b]=y.useState(!1),d=y.useMemo(()=>{const p=new Map;for(const x of r)p.set(x.id,x);for(const x of n)p.set(x.id,x);if(a){for(const x of a.runs)for(const g of x.nodes)p.set(g.taskId,w(g));for(const x of a.unclaimed)p.set(x.taskId,B(x))}return p},[r,n,a]);if(y.useEffect(()=>{if(!s)return;const p=x=>{x.key==="Escape"&&t()};return window.addEventListener("keydown",p),()=>window.removeEventListener("keydown",p)},[s,t]),y.useEffect(()=>{if(!s){l(null);return}const p=d.get(s);p&&l(p),b(!0),fetch(`/api/tasks/${s}`).then(x=>x.ok?x.json():null).then(x=>{x&&l(x)}).catch(()=>{}).finally(()=>b(!1))},[s]),y.useEffect(()=>{if(!s)return;const p=d.get(s);p&&l(x=>({...x??{},...p}))},[d,s]),!s||!i)return null;const o=i.dependsOn??[],f=i.fragileSymbols&&i.fragileSymbols.length>0?i.fragileSymbols:O(i),c=M(i.estimate),_=i.estimate.source==="learned",k=((h=i.external_ref)==null?void 0:h.provider)==="github"?i.external_ref:null,v=i.related_lore??[];return e.jsxs("div",{className:"detail-overlay",children:[e.jsx("div",{className:"detail-backdrop",onClick:t}),e.jsxs("div",{className:"detail-panel tdp",children:[e.jsxs("div",{className:"detail-header",children:[e.jsx("div",{children:e.jsxs("div",{className:"tdp__id-row",children:[e.jsx("span",{className:`task-chip task-chip--prio task-chip--prio-${i.priority}`,children:i.priority}),e.jsx("span",{className:`task-chip task-chip--status task-chip--status-${i.status}`,children:i.status}),e.jsx("span",{className:"tdp__id",children:i.id})]})}),e.jsx("button",{className:"detail-close",onClick:t,children:"✕"})]}),e.jsx("div",{className:"tdp__actions",children:e.jsx(cs,{task:i})}),e.jsxs("div",{className:"detail-body",children:[e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Blurb"}),e.jsx("p",{className:"tdp__blurb",children:i.blurb})]}),e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Estimate"}),e.jsxs("div",{className:`tdp-estimate ${_?"learned":"prior"}`,children:[e.jsxs("span",{className:"tdp-estimate__points",children:[c," pt"]}),e.jsxs("span",{className:"tdp-estimate__band",children:[Z(i.estimate.min),"–",Z(i.estimate.max)," tokens"]}),_?e.jsxs("span",{className:"tdp-estimate__prov tdp-estimate__prov--learned",children:["◆ LEARNED · n",i.estimate.n]}):e.jsxs("span",{className:"tdp-estimate__prov tdp-estimate__prov--prior",children:["~prior~ (cold-start, n",i.estimate.n,")"]})]})]}),o.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Depends on (DAG)"}),e.jsx("ul",{className:"tdp-deps",children:o.map(p=>{const x=d.get(p);return e.jsxs("li",{className:"tdp-dep",children:[e.jsx("span",{className:Qs(x==null?void 0:x.status),children:(x==null?void 0:x.status)??"unknown"}),e.jsx("span",{className:"tdp-dep__id",children:p})]},p)})})]}),f.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Symbols"}),e.jsx("div",{className:"tdp-chips",children:f.map(p=>e.jsx("span",{className:"tdp-chip tdp-chip--symbol",children:p},p))})]}),i.tags.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Tags"}),e.jsx("div",{className:"tdp-chips",children:i.tags.map(p=>e.jsx("span",{className:`tdp-chip ${p==="fragile"?"tdp-chip--fragile":""}`,children:p},p))})]}),k&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"GitHub"}),e.jsxs("div",{className:"tdp-github",children:[e.jsxs("span",{className:"tdp-github__ref",children:["⬢ ",k.ref]}),k.url?e.jsx("a",{className:"tdp-github__link",href:k.url,target:"_blank",rel:"noreferrer",children:"open ↗"}):e.jsx("span",{className:"tdp-github__pending",children:"push-pending"})]})]}),v.length>0&&e.jsxs("div",{className:"detail-section",children:[e.jsx("h3",{children:"Related lore"}),e.jsx("div",{className:"tdp-chips",children:v.map(p=>e.jsx("span",{className:"tdp-chip tdp-chip--lore",children:p},p))})]}),m&&e.jsx("div",{className:"tdp__loading",children:"refreshing…"})]})]})]})}const se=[{mode:"board",label:"Board"},{mode:"list",label:"List"},{mode:"inbox",label:"Inbox"}];function ae(){const s=u(c=>c.view),t=u(c=>c.setView),a=u(c=>c.boardTab),n=u(c=>c.board),r=u(c=>c.fetchTasks),i=u(c=>c.fetchBoard),l=u(c=>c.fetchCalibration),m=u(c=>c.fetchWhoami);y.useEffect(()=>{r(),i(),l(),m();const c=setInterval(()=>{ds.getState().activeSection==="tasks"&&(r(),i(),l())},1e4);return()=>clearInterval(c)},[]),y.useEffect(()=>{function c(_){const k=_.detail;if(k&&(k.type==="tasks:synced"||k.type==="tasks:sync-conflict")){i(),r();const{inboxClaimant:v,fetchInbox:h}=u.getState();v&&h(v.kind,v.ref)}}return window.addEventListener("tasks-ws",c),()=>window.removeEventListener("tasks-ws",c)},[i,r]);const b=u(c=>c.tasks),d=(n==null?void 0:n.summary.open)??b.filter(c=>c.status==="open").length,o=(n==null?void 0:n.summary.inFlight)??b.filter(c=>c.status==="in-progress").length,f=(n==null?void 0:n.summary.unclaimed)??0;return e.jsxs("div",{className:"tasks",children:[e.jsxs("div",{className:"tasks__header",children:[e.jsxs("div",{children:[e.jsx("span",{className:"tasks__title",children:"Tasks"}),e.jsxs("span",{className:"tasks__stat",children:[d," open · ",o," in-flight · ",f," unclaimed"]})]}),e.jsx("div",{className:"view-switcher",children:se.map(c=>e.jsx("button",{className:`view-tab ${s===c.mode?"active":""}`,onClick:()=>t(c.mode),children:c.label},c.mode))})]}),s==="board"&&e.jsx("div",{className:"tasks__board-tabs",children:e.jsx(Bs,{})}),s==="board"&&a!=="calibration"&&e.jsx(Hs,{}),e.jsxs("main",{className:`tasks__main ${s==="board"?"tasks__main--board":""}`,children:[s==="list"&&e.jsx(Ts,{}),s==="board"&&a==="calibration"&&e.jsx(Os,{variant:"tab"}),s==="board"&&a!=="calibration"&&e.jsx(Ds,{}),s==="inbox"&&e.jsx(Us,{})]}),s==="board"&&e.jsx(Js,{}),e.jsx(Zs,{})]})}export{ae as default};
@@ -1 +1 @@
1
- import{c as f,r as j,e as u,j as a}from"./index-DwUT8pju.js";let l=null,o=null;const v=f((e,t)=>({activeAgents:[],benchedAgents:[],rosterLoading:!1,threads:[],threadsLoading:!1,selectedThread:null,fetchRoster:async()=>{l==null||l.abort(),l=new AbortController;const{signal:r}=l;e({rosterLoading:!0});try{const s=await fetch("/api/team/roster",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({activeAgents:c.active||[],benchedAgents:c.benched||[],rosterLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({rosterLoading:!1})}},fetchThreads:async()=>{o==null||o.abort(),o=new AbortController;const{signal:r}=o;e({threadsLoading:!0});try{const s=await fetch("/api/team/threads",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({threads:c.threads||[],threadsLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({threadsLoading:!1})}},toggleBench:async(r,s)=>{try{const c=await fetch(`/api/team/agents/${r}/bench`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({benched:s})});if(!c.ok)throw new Error(`HTTP ${c.status}`);t().fetchRoster()}catch{}},selectThread:r=>e({selectedThread:r})})),N={architect:"var(--p-accent-purple)",builder:"var(--p-accent-blue)",tester:"var(--p-accent-green)",reviewer:"var(--p-accent-orange)",security:"var(--p-accent-red)"};function x(e){return N[e]||`hsl(${Math.abs(b(e))%360}, 60%, 50%)`}function b(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t}const y={question:"var(--p-accent-blue)",context:"var(--p-accent-cyan)",clarification:"var(--p-accent-cyan)",proposal:"var(--p-accent-orange)",verification:"var(--p-accent-purple)",action:"var(--p-accent-green)",decision:"var(--p-accent-yellow)",alert:"var(--p-accent-red)",approval:"var(--p-accent-green)",rejection:"var(--p-accent-red)",reference:"var(--p-text-muted)",progress:"var(--p-accent-emerald)"};function T(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}function w(e){if(e.startsWith("[")){const t=e.indexOf("]");if(t>0){const r=e.slice(t+1);return r.startsWith(" ")?r.slice(1):r}}return e}function C(){const{activeAgents:e,benchedAgents:t,rosterLoading:r,threads:s,threadsLoading:c,selectedThread:d,fetchRoster:h,fetchThreads:m,toggleBench:_,selectThread:g}=v();j.useEffect(()=>{h(),m();const n=setInterval(()=>{u.getState().activeSection==="team"&&(h(),m())},1e4);return()=>clearInterval(n)},[]);const i=d?s.find(n=>n.id===d):s[0];return a.jsxs("div",{className:"team",children:[a.jsx("h1",{className:"team__title",children:"Team"}),a.jsxs("div",{className:"team__roster",children:[a.jsxs("div",{className:"team__roster-header",children:[a.jsx("span",{className:"team__roster-label",children:"Agent Roster"}),a.jsxs("span",{className:"team__roster-count",children:[e.length," active",t.length>0&&` · ${t.length} benched`]})]}),r&&e.length===0?a.jsx("p",{className:"team__empty",children:"Loading roster..."}):e.length===0&&t.length===0?a.jsx("p",{className:"team__empty",children:"No agents registered"}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"team__agent-grid",children:e.map(n=>a.jsx(p,{agent:n,onBench:()=>_(n.id,!0)},n.id))}),t.length>0&&a.jsxs("div",{className:"team__benched",children:[a.jsx("div",{className:"team__benched-label",children:"Benched"}),a.jsx("div",{className:"team__agent-grid",children:t.map(n=>a.jsx(p,{agent:n,benched:!0,onActivate:()=>_(n.id,!1)},n.id))})]})]})]}),a.jsxs("div",{className:"team__threads",children:[a.jsxs("div",{className:"team__threads-header",children:[a.jsx("span",{className:"team__roster-label",children:"Team Threads"}),a.jsxs("span",{className:"team__roster-count",children:[s.length," threads"]})]}),c&&s.length===0?a.jsx("p",{className:"team__empty",children:"Loading threads..."}):s.length===0?a.jsx("p",{className:"team__empty",children:"No orchestration threads yet"}):a.jsxs(a.Fragment,{children:[s.length>1&&a.jsx("div",{className:"team__thread-tabs",children:s.map(n=>a.jsxs("button",{className:`team__thread-tab ${(i==null?void 0:i.id)===n.id?"team__thread-tab--active":""}`,onClick:()=>g(n.id),children:[n.displayName," (",n.messages.length,")"]},n.id))}),i&&a.jsx("div",{className:"team__messages",children:i.messages.map(n=>a.jsx(A,{message:n},n.id))})]})]})]})}function p({agent:e,benched:t,onBench:r,onActivate:s}){const c=x(e.id);return a.jsxs("div",{className:`team__agent-card ${t?"team__agent-card--benched":""}`,children:[a.jsxs("div",{className:"team__agent-header",children:[a.jsxs("div",{children:[a.jsx("span",{className:"team__agent-name",style:{color:c},children:e.nickname||e.id}),e.nickname&&a.jsxs("span",{className:"team__agent-nickname",children:["(",e.id,")"]}),a.jsx("div",{className:"team__agent-role",children:e.role})]}),t?a.jsx("button",{className:"team__bench-btn",onClick:s,children:"Activate"}):a.jsx("button",{className:"team__bench-btn",onClick:r,children:"Bench"})]}),a.jsxs("div",{className:"team__agent-stats",children:[a.jsxs("span",{children:[e.expertiseCount," symbols"]}),e.threshold!=null&&a.jsxs("span",{children:["thr: ",e.threshold.toFixed(2)]}),e.topExpertise.length>0&&a.jsxs("span",{className:"team__agent-stat--good",children:["top: ",e.topExpertise[0].symbol," (",Math.round(e.topExpertise[0].confidence*100),"%)"]})]})]})}function A({message:e}){const t=e.sender.role||e.sender.name,r=x(t),s=y[e.intent]||"var(--p-text-muted)";return a.jsxs("div",{className:"team__message",children:[a.jsxs("div",{className:"team__message-header",children:[a.jsxs("span",{className:"team__message-sender",style:{color:r},children:["[",t,"]"]}),a.jsx("span",{className:"team__message-time",children:T(e.timestamp)})]}),a.jsxs("div",{children:[a.jsx("span",{className:"team__message-intent",style:{color:s,backgroundColor:`color-mix(in srgb, ${s} 12%, transparent)`},children:e.intent}),e.symbols.length>0&&a.jsx("span",{className:"team__message-symbols",children:e.symbols.join(" ")})]}),a.jsx("div",{className:"team__message-text",children:w(e.text)}),e.diff&&a.jsx("div",{className:"team__message-diff",children:e.diff}),e.decision&&a.jsxs("div",{className:"team__message-decision",children:["✓ ",e.decision]})]})}export{C as default};
1
+ import{c as f,r as j,b as u,j as a}from"./index-D_wB2S_2.js";let l=null,o=null;const v=f((e,t)=>({activeAgents:[],benchedAgents:[],rosterLoading:!1,threads:[],threadsLoading:!1,selectedThread:null,fetchRoster:async()=>{l==null||l.abort(),l=new AbortController;const{signal:r}=l;e({rosterLoading:!0});try{const s=await fetch("/api/team/roster",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({activeAgents:c.active||[],benchedAgents:c.benched||[],rosterLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({rosterLoading:!1})}},fetchThreads:async()=>{o==null||o.abort(),o=new AbortController;const{signal:r}=o;e({threadsLoading:!0});try{const s=await fetch("/api/team/threads",{signal:r});if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();e({threads:c.threads||[],threadsLoading:!1})}catch(s){if(s instanceof Error&&s.name==="AbortError")return;e({threadsLoading:!1})}},toggleBench:async(r,s)=>{try{const c=await fetch(`/api/team/agents/${r}/bench`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({benched:s})});if(!c.ok)throw new Error(`HTTP ${c.status}`);t().fetchRoster()}catch{}},selectThread:r=>e({selectedThread:r})})),N={architect:"var(--p-accent-purple)",builder:"var(--p-accent-blue)",tester:"var(--p-accent-green)",reviewer:"var(--p-accent-orange)",security:"var(--p-accent-red)"};function x(e){return N[e]||`hsl(${Math.abs(b(e))%360}, 60%, 50%)`}function b(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t}const y={question:"var(--p-accent-blue)",context:"var(--p-accent-cyan)",clarification:"var(--p-accent-cyan)",proposal:"var(--p-accent-orange)",verification:"var(--p-accent-purple)",action:"var(--p-accent-green)",decision:"var(--p-accent-yellow)",alert:"var(--p-accent-red)",approval:"var(--p-accent-green)",rejection:"var(--p-accent-red)",reference:"var(--p-text-muted)",progress:"var(--p-accent-emerald)"};function T(e){const t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}function w(e){if(e.startsWith("[")){const t=e.indexOf("]");if(t>0){const r=e.slice(t+1);return r.startsWith(" ")?r.slice(1):r}}return e}function C(){const{activeAgents:e,benchedAgents:t,rosterLoading:r,threads:s,threadsLoading:c,selectedThread:d,fetchRoster:h,fetchThreads:m,toggleBench:_,selectThread:g}=v();j.useEffect(()=>{h(),m();const n=setInterval(()=>{u.getState().activeSection==="team"&&(h(),m())},1e4);return()=>clearInterval(n)},[]);const i=d?s.find(n=>n.id===d):s[0];return a.jsxs("div",{className:"team",children:[a.jsx("h1",{className:"team__title",children:"Team"}),a.jsxs("div",{className:"team__roster",children:[a.jsxs("div",{className:"team__roster-header",children:[a.jsx("span",{className:"team__roster-label",children:"Agent Roster"}),a.jsxs("span",{className:"team__roster-count",children:[e.length," active",t.length>0&&` · ${t.length} benched`]})]}),r&&e.length===0?a.jsx("p",{className:"team__empty",children:"Loading roster..."}):e.length===0&&t.length===0?a.jsx("p",{className:"team__empty",children:"No agents registered"}):a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"team__agent-grid",children:e.map(n=>a.jsx(p,{agent:n,onBench:()=>_(n.id,!0)},n.id))}),t.length>0&&a.jsxs("div",{className:"team__benched",children:[a.jsx("div",{className:"team__benched-label",children:"Benched"}),a.jsx("div",{className:"team__agent-grid",children:t.map(n=>a.jsx(p,{agent:n,benched:!0,onActivate:()=>_(n.id,!1)},n.id))})]})]})]}),a.jsxs("div",{className:"team__threads",children:[a.jsxs("div",{className:"team__threads-header",children:[a.jsx("span",{className:"team__roster-label",children:"Team Threads"}),a.jsxs("span",{className:"team__roster-count",children:[s.length," threads"]})]}),c&&s.length===0?a.jsx("p",{className:"team__empty",children:"Loading threads..."}):s.length===0?a.jsx("p",{className:"team__empty",children:"No orchestration threads yet"}):a.jsxs(a.Fragment,{children:[s.length>1&&a.jsx("div",{className:"team__thread-tabs",children:s.map(n=>a.jsxs("button",{className:`team__thread-tab ${(i==null?void 0:i.id)===n.id?"team__thread-tab--active":""}`,onClick:()=>g(n.id),children:[n.displayName," (",n.messages.length,")"]},n.id))}),i&&a.jsx("div",{className:"team__messages",children:i.messages.map(n=>a.jsx(A,{message:n},n.id))})]})]})]})}function p({agent:e,benched:t,onBench:r,onActivate:s}){const c=x(e.id);return a.jsxs("div",{className:`team__agent-card ${t?"team__agent-card--benched":""}`,children:[a.jsxs("div",{className:"team__agent-header",children:[a.jsxs("div",{children:[a.jsx("span",{className:"team__agent-name",style:{color:c},children:e.nickname||e.id}),e.nickname&&a.jsxs("span",{className:"team__agent-nickname",children:["(",e.id,")"]}),a.jsx("div",{className:"team__agent-role",children:e.role})]}),t?a.jsx("button",{className:"team__bench-btn",onClick:s,children:"Activate"}):a.jsx("button",{className:"team__bench-btn",onClick:r,children:"Bench"})]}),a.jsxs("div",{className:"team__agent-stats",children:[a.jsxs("span",{children:[e.expertiseCount," symbols"]}),e.threshold!=null&&a.jsxs("span",{children:["thr: ",e.threshold.toFixed(2)]}),e.topExpertise.length>0&&a.jsxs("span",{className:"team__agent-stat--good",children:["top: ",e.topExpertise[0].symbol," (",Math.round(e.topExpertise[0].confidence*100),"%)"]})]})]})}function A({message:e}){const t=e.sender.role||e.sender.name,r=x(t),s=y[e.intent]||"var(--p-text-muted)";return a.jsxs("div",{className:"team__message",children:[a.jsxs("div",{className:"team__message-header",children:[a.jsxs("span",{className:"team__message-sender",style:{color:r},children:["[",t,"]"]}),a.jsx("span",{className:"team__message-time",children:T(e.timestamp)})]}),a.jsxs("div",{children:[a.jsx("span",{className:"team__message-intent",style:{color:s,backgroundColor:`color-mix(in srgb, ${s} 12%, transparent)`},children:e.intent}),e.symbols.length>0&&a.jsx("span",{className:"team__message-symbols",children:e.symbols.join(" ")})]}),a.jsx("div",{className:"team__message-text",children:w(e.text)}),e.diff&&a.jsx("div",{className:"team__message-diff",children:e.diff}),e.decision&&a.jsxs("div",{className:"team__message-decision",children:["✓ ",e.decision]})]})}export{C as default};
@@ -1 +1 @@
1
- import{c as h,r as m,e as p,j as s}from"./index-DwUT8pju.js";let n=null;const x=h((e,t)=>({courses:[],plsatVersions:[],diplomas:[],coursesLoading:!1,selectedCourse:null,fetchCourses:async()=>{n==null||n.abort(),n=new AbortController,e({coursesLoading:!0});try{const a=await fetch("/api/university/courses",{signal:n.signal});if(!a.ok)throw new Error(`HTTP ${a.status}`);const i=await a.json();e({courses:i.courses||[],coursesLoading:!1})}catch(a){a instanceof Error&&a.name==="AbortError"||e({coursesLoading:!1})}},fetchPlsat:async()=>{try{const a=await fetch("/api/university/plsat");if(!a.ok)return;const i=await a.json();e({plsatVersions:i.versions||[]})}catch{}},fetchDiplomas:async()=>{try{const a=await fetch("/api/university/diplomas");if(!a.ok)return;const i=await a.json();e({diplomas:i.diplomas||[]})}catch{}},selectCourse:a=>e({selectedCourse:a})}));function j({course:e,onSelect:t}){return s.jsxs("div",{className:"u-course-card",onClick:t,role:"button",tabIndex:0,onKeyDown:a=>a.key==="Enter"&&t(),children:[s.jsxs("div",{className:"u-course-header",children:[s.jsx("span",{className:"u-course-id",children:e.id}),s.jsxs("span",{className:"u-course-meta",children:[e.lessonCount," lessons",e.quizCount>0?` · ${e.quizCount} quizzes`:""]})]}),s.jsx("h3",{className:"u-course-title",children:e.title}),s.jsx("p",{className:"u-course-desc",children:e.description})]})}function f({version:e}){return s.jsxs("div",{className:"u-plsat-card",children:[s.jsxs("div",{className:"u-plsat-header",children:[s.jsxs("span",{className:"u-plsat-version",children:["PLSAT ",e.version]}),e.passThreshold&&s.jsxs("span",{className:"u-plsat-threshold",children:["Pass: ",e.passThreshold,"%"]})]}),s.jsxs("div",{className:"u-plsat-meta",children:[e.questionCount," questions",e.timeLimit?` · ${e.timeLimit} min`:"",e.frameworkVersion?` · Framework ${e.frameworkVersion}`:""]})]})}function N({diploma:e}){return s.jsxs("div",{className:`u-diploma-card ${e.passed?"u-diploma-passed":"u-diploma-failed"}`,children:[s.jsxs("div",{className:"u-diploma-header",children:[s.jsx("span",{className:"u-diploma-type",children:e.type.toUpperCase()}),s.jsx("span",{className:"u-diploma-date",children:new Date(e.earnedAt).toLocaleDateString()})]}),s.jsxs("div",{className:"u-diploma-score",children:[e.score,"/",e.total," (",e.percentage,"%)",e.passed?" — Passed":" — Not passed"]})]})}function C(){const{courses:e,plsatVersions:t,diplomas:a,coursesLoading:i,selectedCourse:v,fetchCourses:l,fetchPlsat:o,fetchDiplomas:c,selectCourse:d}=x();return m.useEffect(()=>{l(),o(),c();const r=setInterval(()=>{p.getState().activeSection==="university"&&c()},3e4);return()=>clearInterval(r)},[]),s.jsxs("div",{className:"u-section",children:[s.jsxs("div",{className:"u-header",children:[s.jsx("h1",{children:"University"}),s.jsx("span",{className:"u-subtitle",children:"Courses, certifications, and learning paths"})]}),a.length>0&&s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"Earned Diplomas"}),s.jsx("div",{className:"u-grid",children:a.map((r,u)=>s.jsx(N,{diploma:r},r.id||u))})]}),s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"Courses"}),i&&s.jsx("p",{className:"u-loading",children:"Loading courses..."}),!i&&e.length===0&&s.jsxs("p",{className:"u-empty",children:["No courses available. Run ",s.jsx("code",{children:"paradigm university"})," to set up content."]}),s.jsx("div",{className:"u-grid",children:e.map(r=>s.jsx(j,{course:r,onSelect:()=>d(r.id)},r.id))})]}),t.length>0&&s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"PLSAT Certification Exams"}),s.jsx("div",{className:"u-grid",children:t.map(r=>s.jsx(f,{version:r},r.version))})]})]})}export{C as default};
1
+ import{c as h,r as m,b as p,j as s}from"./index-D_wB2S_2.js";let n=null;const x=h((e,t)=>({courses:[],plsatVersions:[],diplomas:[],coursesLoading:!1,selectedCourse:null,fetchCourses:async()=>{n==null||n.abort(),n=new AbortController,e({coursesLoading:!0});try{const a=await fetch("/api/university/courses",{signal:n.signal});if(!a.ok)throw new Error(`HTTP ${a.status}`);const i=await a.json();e({courses:i.courses||[],coursesLoading:!1})}catch(a){a instanceof Error&&a.name==="AbortError"||e({coursesLoading:!1})}},fetchPlsat:async()=>{try{const a=await fetch("/api/university/plsat");if(!a.ok)return;const i=await a.json();e({plsatVersions:i.versions||[]})}catch{}},fetchDiplomas:async()=>{try{const a=await fetch("/api/university/diplomas");if(!a.ok)return;const i=await a.json();e({diplomas:i.diplomas||[]})}catch{}},selectCourse:a=>e({selectedCourse:a})}));function j({course:e,onSelect:t}){return s.jsxs("div",{className:"u-course-card",onClick:t,role:"button",tabIndex:0,onKeyDown:a=>a.key==="Enter"&&t(),children:[s.jsxs("div",{className:"u-course-header",children:[s.jsx("span",{className:"u-course-id",children:e.id}),s.jsxs("span",{className:"u-course-meta",children:[e.lessonCount," lessons",e.quizCount>0?` · ${e.quizCount} quizzes`:""]})]}),s.jsx("h3",{className:"u-course-title",children:e.title}),s.jsx("p",{className:"u-course-desc",children:e.description})]})}function f({version:e}){return s.jsxs("div",{className:"u-plsat-card",children:[s.jsxs("div",{className:"u-plsat-header",children:[s.jsxs("span",{className:"u-plsat-version",children:["PLSAT ",e.version]}),e.passThreshold&&s.jsxs("span",{className:"u-plsat-threshold",children:["Pass: ",e.passThreshold,"%"]})]}),s.jsxs("div",{className:"u-plsat-meta",children:[e.questionCount," questions",e.timeLimit?` · ${e.timeLimit} min`:"",e.frameworkVersion?` · Framework ${e.frameworkVersion}`:""]})]})}function N({diploma:e}){return s.jsxs("div",{className:`u-diploma-card ${e.passed?"u-diploma-passed":"u-diploma-failed"}`,children:[s.jsxs("div",{className:"u-diploma-header",children:[s.jsx("span",{className:"u-diploma-type",children:e.type.toUpperCase()}),s.jsx("span",{className:"u-diploma-date",children:new Date(e.earnedAt).toLocaleDateString()})]}),s.jsxs("div",{className:"u-diploma-score",children:[e.score,"/",e.total," (",e.percentage,"%)",e.passed?" — Passed":" — Not passed"]})]})}function C(){const{courses:e,plsatVersions:t,diplomas:a,coursesLoading:i,selectedCourse:v,fetchCourses:l,fetchPlsat:o,fetchDiplomas:c,selectCourse:d}=x();return m.useEffect(()=>{l(),o(),c();const r=setInterval(()=>{p.getState().activeSection==="university"&&c()},3e4);return()=>clearInterval(r)},[]),s.jsxs("div",{className:"u-section",children:[s.jsxs("div",{className:"u-header",children:[s.jsx("h1",{children:"University"}),s.jsx("span",{className:"u-subtitle",children:"Courses, certifications, and learning paths"})]}),a.length>0&&s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"Earned Diplomas"}),s.jsx("div",{className:"u-grid",children:a.map((r,u)=>s.jsx(N,{diploma:r},r.id||u))})]}),s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"Courses"}),i&&s.jsx("p",{className:"u-loading",children:"Loading courses..."}),!i&&e.length===0&&s.jsxs("p",{className:"u-empty",children:["No courses available. Run ",s.jsx("code",{children:"paradigm university"})," to set up content."]}),s.jsx("div",{className:"u-grid",children:e.map(r=>s.jsx(j,{course:r,onSelect:()=>d(r.id)},r.id))})]}),t.length>0&&s.jsxs("div",{className:"u-block",children:[s.jsx("h2",{children:"PLSAT Certification Exams"}),s.jsx("div",{className:"u-grid",children:t.map(r=>s.jsx(f,{version:r},r.version))})]})]})}export{C as default};