@kubitnodes/stellaris 0.1.0 → 0.2.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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -2
  3. package/dist/cli/index.js +167 -12
  4. package/dist/server/index.js +543 -32
  5. package/package.json +2 -1
  6. package/web/dist/assets/ChannelView-O1FQ_Cbf.js +1 -0
  7. package/web/dist/assets/CitizenView-D0rSRBnj.js +2 -0
  8. package/web/dist/assets/CitizensView-BPx5ChvL.js +1 -0
  9. package/web/dist/assets/KnowledgeView-Cjf5Axu5.js +1 -0
  10. package/web/dist/assets/Markdown-Dkiv3bKi.js +29 -0
  11. package/web/dist/assets/MessageItem-sep2BGUh.js +1 -0
  12. package/web/dist/assets/MetricsView-BIH8FLob.js +1 -0
  13. package/web/dist/assets/NeedsYouView-CuB7daZ0.js +1 -0
  14. package/web/dist/assets/Overview-C6Ae0n9b.js +1 -0
  15. package/web/dist/assets/Pane-BXpuXst6.js +1 -0
  16. package/web/dist/assets/ProjectView-CpTcrvFa.js +1 -0
  17. package/web/dist/assets/ProposalView-BXisoFis.js +1 -0
  18. package/web/dist/assets/ProposalsView-BjPeXIxG.js +1 -0
  19. package/web/dist/assets/RunnersView-0ou0ekMc.js +1 -0
  20. package/web/dist/assets/SocietyView-C8lU_XY4.js +1 -0
  21. package/web/dist/assets/SubjectThread-BWbOV_wk.js +1 -0
  22. package/web/dist/assets/TaskView-CDLRRfS6.js +1 -0
  23. package/web/dist/assets/TasksView-p6PdvdWY.js +1 -0
  24. package/web/dist/assets/ThreadCard-BisvLnYg.js +1 -0
  25. package/web/dist/assets/ThreadForms-DZ1yLsjU.js +1 -0
  26. package/web/dist/assets/ThreadView-CQUPQ5oR.js +1 -0
  27. package/web/dist/assets/{citizen-BXVebeiP.js → citizen-BwK8Ciw3.js} +1 -1
  28. package/web/dist/assets/format-DZLzLk7S.js +55 -0
  29. package/web/dist/assets/index-CbJnPhSw.js +21 -0
  30. package/web/dist/assets/index-DJ30ENcc.css +2 -0
  31. package/web/dist/assets/{tasks-rltmWd5a.js → tasks-DZgkXWwu.js} +1 -1
  32. package/web/dist/assets/{useStickyScroll-DDS3s21P.js → useStickyScroll-CVTdIoKj.js} +1 -1
  33. package/web/dist/index.html +4 -4
  34. package/web/dist/assets/ChannelView-B8BZLsf1.js +0 -1
  35. package/web/dist/assets/CitizenView-GomLDcrr.js +0 -2
  36. package/web/dist/assets/CitizensView-yNv8WtND.js +0 -1
  37. package/web/dist/assets/KnowledgeView--jxofSSN.js +0 -1
  38. package/web/dist/assets/Markdown-BpYzeV5r.js +0 -28
  39. package/web/dist/assets/MessageItem-BGPpqgpq.js +0 -1
  40. package/web/dist/assets/MetricsView-CcqLr6S1.js +0 -1
  41. package/web/dist/assets/NeedsYouView-r7gJGgVG.js +0 -1
  42. package/web/dist/assets/Overview-Cmz4_gfI.js +0 -1
  43. package/web/dist/assets/Pane-DRpHmeJ9.js +0 -1
  44. package/web/dist/assets/ProjectView-CuACZj4L.js +0 -1
  45. package/web/dist/assets/ProposalView-BiVcNEDL.js +0 -1
  46. package/web/dist/assets/ProposalsView-BIdkOfZO.js +0 -1
  47. package/web/dist/assets/SocietyView-Dya97szC.js +0 -1
  48. package/web/dist/assets/SubjectThread-2j_msY38.js +0 -1
  49. package/web/dist/assets/TaskView-CcJr7xnH.js +0 -1
  50. package/web/dist/assets/TasksView-BUvHntvK.js +0 -1
  51. package/web/dist/assets/ThreadCard-tzMGvn9j.js +0 -1
  52. package/web/dist/assets/ThreadForms-DE2yJEhz.js +0 -1
  53. package/web/dist/assets/ThreadView-FsNOTyVC.js +0 -1
  54. package/web/dist/assets/format-Ca2VAvEx.js +0 -77
  55. package/web/dist/assets/index-CtuchAFa.css +0 -2
  56. package/web/dist/assets/index-D4GJkeKU.js +0 -237
@@ -1 +0,0 @@
1
- import{A as e,At as t,D as n,Dt as r,Et as i,J as a,Mt as o,Ot as s,P as c,Pn as l,Pt as u,S as d,T as f,_ as p,ct as m,dt as h,et as g,j as _,jn as v,kn as y,p as b,q as x,st as ee,t as S,v as C,y as w}from"./format-Ca2VAvEx.js";import{a as T}from"./tasks-rltmWd5a.js";import{A as te,D as ne,L as re,N as ie,O as ae,R as oe,T as E,a as D,c as O,j as k,k as A,s as j,t as M,w as N,x as P}from"./index-D4GJkeKU.js";import{t as F}from"./Markdown-BpYzeV5r.js";import{n as I,t as L}from"./Pane-DRpHmeJ9.js";import{n as R,r as z}from"./ThreadForms-DE2yJEhz.js";import{StatusChip as B}from"./ProposalsView-BIdkOfZO.js";import{t as V}from"./SubjectThread-2j_msY38.js";var H=l(v(),1),U=c(),W=`/home/climage/projects/stellaris/apps/web/src/board/DecisionBar.tsx`;function G({proposal:e,consequence:t}){let{api:n}=f(),r=y(),i=b(),[a,o]=(0,H.useState)(null),[s,c]=(0,H.useState)(``),l=(0,H.useRef)(null);(0,H.useEffect)(()=>{a!==null&&l.current?.focus()},[a]);let u=oe({mutationFn:()=>{let t=s.trim();return a===`reject`?n.reject({proposal_id:e.id,reason:t}):n.approve({proposal_id:e.id,...t===``?{}:{reason:t}})},onSuccess:()=>{let t=[[`proposals`],[`proposal`,e.id],[`threads`],[`thread`,e.id]];for(let e of t)r.invalidateQueries({queryKey:e});o(null),c(``)}}),d=(i.data??[]).find(t=>t.name===e.proposedBy&&t.status===`active`&&t.cli!==null),p=d===void 0?`Your decision is posted in the proposal's thread, which closes.`:`Your decision is posted in the proposal's thread, which closes, and wakes ${d.name}, who proposed it.`;if(a===null)return(0,U.jsxDEV)(`div`,{className:`flex items-center gap-2 border-t border-line px-4 py-3`,children:[(0,U.jsxDEV)(`p`,{className:`min-w-0 flex-1 truncate text-meta`,children:`This proposal waits on you.`},void 0,!1,{fileName:W,lineNumber:67,columnNumber:9},this),(0,U.jsxDEV)(D,{onClick:()=>o(`reject`),children:`Reject`},void 0,!1,{fileName:W,lineNumber:68,columnNumber:9},this),(0,U.jsxDEV)(D,{variant:`primary`,onClick:()=>o(`approve`),children:`Approve`},void 0,!1,{fileName:W,lineNumber:69,columnNumber:9},this)]},void 0,!0,{fileName:W,lineNumber:66,columnNumber:7},this);let m=a===`approve`;return(0,U.jsxDEV)(`form`,{"aria-label":m?`Approve the proposal`:`Reject the proposal`,className:`space-y-2 border-t border-line bg-surface-2/20 p-3`,onSubmit:e=>{e.preventDefault(),u.mutate()},children:[(0,U.jsxDEV)(`textarea`,{ref:l,value:s,rows:2,placeholder:m?`Why approve? Optional.`:`Why not? It is posted with the decision.`,"aria-label":m?`Reason for approving`:`Reason for rejecting`,onChange:e=>c(e.target.value),className:`${R} resize-none`},void 0,!1,{fileName:W,lineNumber:85,columnNumber:7},this),(0,U.jsxDEV)(`p`,{className:`text-[11px] leading-relaxed text-fg-muted`,children:[m?t:`Nothing is created, and the proposal's thread closes.`,` `,p]},void 0,!0,{fileName:W,lineNumber:96,columnNumber:7},this),(0,U.jsxDEV)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,U.jsxDEV)(D,{onClick:()=>{o(null),u.reset()},children:`Cancel`},void 0,!1,{fileName:W,lineNumber:100,columnNumber:9},this),(0,U.jsxDEV)(D,{variant:`primary`,type:`submit`,disabled:u.isPending||!m&&s.trim()===``,children:u.isPending?`Deciding…`:m?`Confirm approval`:`Confirm rejection`},void 0,!1,{fileName:W,lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:W,lineNumber:99,columnNumber:7},this),(0,U.jsxDEV)(z,{error:u.error},void 0,!1,{fileName:W,lineNumber:116,columnNumber:7},this)]},void 0,!0,{fileName:W,lineNumber:77,columnNumber:5},this)}var K=`/home/climage/projects/stellaris/apps/web/src/board/ProposalCharter.tsx`;function q({children:e}){return(0,U.jsxDEV)(`dl`,{className:`mt-2 space-y-1.5`,children:e},void 0,!1,{fileName:K,lineNumber:23,columnNumber:10},this)}function J({label:e,children:t}){return(0,U.jsxDEV)(`div`,{className:`grid grid-cols-[9rem_1fr] gap-3 text-sm`,children:[(0,U.jsxDEV)(`dt`,{className:`text-meta`,children:e},void 0,!1,{fileName:K,lineNumber:29,columnNumber:7},this),(0,U.jsxDEV)(`dd`,{className:`min-w-0 break-words text-fg-secondary`,children:t},void 0,!1,{fileName:K,lineNumber:30,columnNumber:7},this)]},void 0,!0,{fileName:K,lineNumber:28,columnNumber:5},this)}function Y(e){return e.length===0?`none`:e.join(`, `)}function X({name:e,change:t}){return(0,U.jsxDEV)(`span`,{className:`inline-block rounded-md px-1.5 py-px font-mono text-[11px] ${t===`added`?`bg-emerald-500/15 text-emerald-300`:t===`removed`?`bg-red-500/15 text-red-300 line-through`:`bg-surface-2/70 text-fg-tertiary`}`,children:[t===`added`?`+ `:t===`removed`?`− `:``,e]},void 0,!0,{fileName:K,lineNumber:47,columnNumber:5},this)}function Z({children:e}){return(0,U.jsxDEV)(`div`,{className:`mt-2 rounded-xl bg-surface-2/30 px-3.5 py-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]`,children:e},void 0,!1,{fileName:K,lineNumber:56,columnNumber:5},this)}function se({next:e,current:t,compare:n}){let r=t===void 0?null:A(t,e),i=r!==null&&r.verbsAdded.length===0&&r.verbsRemoved.length===0&&r.changes.length===0&&!r.purposeChanged;return(0,U.jsxDEV)(U.Fragment,{children:[n?r===null?(0,U.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:`A new role: no charter by this name exists yet.`},void 0,!1,{fileName:K,lineNumber:82,columnNumber:9},this):i?(0,U.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:`The same as the charter the role has now.`},void 0,!1,{fileName:K,lineNumber:84,columnNumber:9},this):(0,U.jsxDEV)(Z,{children:[(0,U.jsxDEV)(`p`,{className:`text-caps`,children:`Against the charter it has now`},void 0,!1,{fileName:K,lineNumber:87,columnNumber:11},this),r.verbsAdded.length+r.verbsRemoved.length===0?null:(0,U.jsxDEV)(`p`,{className:`mt-2 flex flex-wrap gap-1`,children:[r.verbsAdded.map(e=>(0,U.jsxDEV)(X,{name:e,change:`added`},e,!1,{fileName:K,lineNumber:91,columnNumber:17},this)),r.verbsRemoved.map(e=>(0,U.jsxDEV)(X,{name:e,change:`removed`},e,!1,{fileName:K,lineNumber:94,columnNumber:17},this))]},void 0,!0,{fileName:K,lineNumber:89,columnNumber:13},this),r.changes.length===0?null:(0,U.jsxDEV)(q,{children:r.changes.map(e=>(0,U.jsxDEV)(J,{label:e.field,children:[e.from,` → `,(0,U.jsxDEV)(`span`,{className:`text-fg-primary`,children:e.to},void 0,!1,{fileName:K,lineNumber:102,columnNumber:35},this)]},e.field,!0,{fileName:K,lineNumber:101,columnNumber:17},this))},void 0,!1,{fileName:K,lineNumber:99,columnNumber:13},this),r.purposeChanged?(0,U.jsxDEV)(`p`,{className:`mt-2 text-xs text-fg-secondary`,children:`The purpose is rewritten.`},void 0,!1,{fileName:K,lineNumber:108,columnNumber:13},this):null]},void 0,!0,{fileName:K,lineNumber:86,columnNumber:9},this):null,(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Role`,children:e.name},void 0,!1,{fileName:K,lineNumber:113,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Purpose`,children:e.purpose},void 0,!1,{fileName:K,lineNumber:114,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Verbs`,children:(0,U.jsxDEV)(`span`,{className:`flex flex-wrap gap-1`,children:e.verbs.map(e=>(0,U.jsxDEV)(X,{name:e},e,!1,{fileName:K,lineNumber:118,columnNumber:15},this))},void 0,!1,{fileName:K,lineNumber:116,columnNumber:11},this)},void 0,!1,{fileName:K,lineNumber:115,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Wake triggers`,children:Y(e.wakeTriggers)},void 0,!1,{fileName:K,lineNumber:122,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Replicas per project`,children:e.maxReplicas},void 0,!1,{fileName:K,lineNumber:123,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Warm session`,children:e.resident?`yes`:`no`},void 0,!1,{fileName:K,lineNumber:124,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Society role`,children:e.societyScope?`yes, in no project`:`no`},void 0,!1,{fileName:K,lineNumber:125,columnNumber:9},this),(0,U.jsxDEV)(J,{label:`Reflects`,children:e.reflects?`yes`:`no`},void 0,!1,{fileName:K,lineNumber:126,columnNumber:9},this)]},void 0,!0,{fileName:K,lineNumber:112,columnNumber:7},this)]},void 0,!0,{fileName:K,lineNumber:80,columnNumber:5},this)}function ce({proposal:t,slug:n,reason:r,members:i}){let a=C(),o=e(n),s=a.data?.find(e=>e.slug===n),c=t.status===`proposed`,l=c?(i??[]).filter(e=>e.status===`active`&&e.memberships.includes(n)).map(e=>e.name):t.provision?.members??[],d=(o.data??[]).filter(T).length;return(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Project`,children:[(0,U.jsxDEV)(u,{to:`/p/$slug`,params:{slug:n},className:`hover:text-fg-primary`,children:s?.name??n},void 0,!1,{fileName:K,lineNumber:160,columnNumber:9},this),s?.name===void 0||s.name===n?null:` · ${n}`]},void 0,!0,{fileName:K,lineNumber:159,columnNumber:7},this),(0,U.jsxDEV)(J,{label:c?`Members who leave`:`Members who left`,children:Array.isArray(l)?Y(l.filter(e=>typeof e==`string`)):`none`},void 0,!1,{fileName:K,lineNumber:165,columnNumber:7},this),c?(0,U.jsxDEV)(J,{label:`Tasks in play`,children:o.data===void 0?`reading…`:d===0?`none`:`${d}: approval is refused until they are done, abandoned, or filed elsewhere`},void 0,!1,{fileName:K,lineNumber:171,columnNumber:9},this):null,(0,U.jsxDEV)(J,{label:`Reason`,children:r},void 0,!1,{fileName:K,lineNumber:179,columnNumber:7},this),(0,U.jsxDEV)(J,{label:`After`,children:`Its open threads close and nothing more is posted, filed, or joined there; its channels, tasks, repository, and history stay readable.`},void 0,!1,{fileName:K,lineNumber:180,columnNumber:7},this)]},void 0,!0,{fileName:K,lineNumber:158,columnNumber:5},this)}function le({proposal:e,roles:t,members:n}){let r=e.status===`proposed`,{charter:o}=e;switch(e.kind){case`member`:{let e=g.safeParse(o);if(!e.success)break;let t=e.data;return(0,U.jsxDEV)(U.Fragment,{children:[(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Citizen`,children:(0,U.jsxDEV)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,U.jsxDEV)(P,{cli:t.cli,size:13},void 0,!1,{fileName:K,lineNumber:211,columnNumber:17},this),t.name]},void 0,!0,{fileName:K,lineNumber:210,columnNumber:15},this)},void 0,!1,{fileName:K,lineNumber:209,columnNumber:13},this),(0,U.jsxDEV)(J,{label:`Role`,children:t.role},void 0,!1,{fileName:K,lineNumber:215,columnNumber:13},this),(0,U.jsxDEV)(J,{label:`CLI and model`,children:[t.cli,` · `,t.model??`cli default`]},void 0,!0,{fileName:K,lineNumber:216,columnNumber:13},this),(0,U.jsxDEV)(J,{label:`Projects`,children:Y(t.memberships)},void 0,!1,{fileName:K,lineNumber:219,columnNumber:13},this),(0,U.jsxDEV)(J,{label:`Also follows`,children:Y(t.subscriptions)},void 0,!1,{fileName:K,lineNumber:220,columnNumber:13},this),t.homeRunner===void 0?null:(0,U.jsxDEV)(J,{label:`Runs on`,children:t.homeRunner},void 0,!1,{fileName:K,lineNumber:222,columnNumber:15},this)]},void 0,!0,{fileName:K,lineNumber:208,columnNumber:11},this),t.seedInstructions===void 0?null:(0,U.jsxDEV)(Z,{children:[(0,U.jsxDEV)(`p`,{className:`text-caps`,children:`Seed instructions`},void 0,!1,{fileName:K,lineNumber:227,columnNumber:15},this),(0,U.jsxDEV)(`div`,{className:`mt-1.5`,children:(0,U.jsxDEV)(F,{text:t.seedInstructions},void 0,!1,{fileName:K,lineNumber:229,columnNumber:17},this)},void 0,!1,{fileName:K,lineNumber:228,columnNumber:15},this)]},void 0,!0,{fileName:K,lineNumber:226,columnNumber:13},this)]},void 0,!0,{fileName:K,lineNumber:207,columnNumber:9},this)}case`role`:{let n=ae(e);if(n===null)break;return(0,U.jsxDEV)(se,{next:n,current:t?.find(e=>e.name===n.name),compare:r},void 0,!1,{fileName:K,lineNumber:240,columnNumber:9},this)}case`skill`:{let e=h.safeParse(o);if(!e.success)break;return(0,U.jsxDEV)(U.Fragment,{children:[(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Skill`,children:e.data.name},void 0,!1,{fileName:K,lineNumber:253,columnNumber:13},this),(0,U.jsxDEV)(J,{label:`Summary`,children:e.data.summary},void 0,!1,{fileName:K,lineNumber:254,columnNumber:13},this)]},void 0,!0,{fileName:K,lineNumber:252,columnNumber:11},this),(0,U.jsxDEV)(Z,{children:(0,U.jsxDEV)(F,{text:te(e.data.body)},void 0,!1,{fileName:K,lineNumber:257,columnNumber:13},this)},void 0,!1,{fileName:K,lineNumber:256,columnNumber:11},this)]},void 0,!0,{fileName:K,lineNumber:251,columnNumber:9},this)}case`channel`:{let e=a.safeParse(o);if(!e.success)break;return(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Channel`,children:[`#`,i(e.data.project,e.data.name)]},void 0,!0,{fileName:K,lineNumber:267,columnNumber:11},this),(0,U.jsxDEV)(J,{label:`Purpose`,children:e.data.purpose},void 0,!1,{fileName:K,lineNumber:268,columnNumber:11},this)]},void 0,!0,{fileName:K,lineNumber:266,columnNumber:9},this)}case`retirement`:{let e=m.safeParse(o);if(!e.success)break;let t=n?.find(t=>t.name===e.data.agent);return(0,U.jsxDEV)(q,{children:[(0,U.jsxDEV)(J,{label:`Citizen`,children:[(0,U.jsxDEV)(j,{name:e.data.agent,members:n},void 0,!1,{fileName:K,lineNumber:279,columnNumber:13},this),t===void 0?null:` · ${t.role}`]},void 0,!0,{fileName:K,lineNumber:278,columnNumber:11},this),(0,U.jsxDEV)(J,{label:`Holds now`,children:t===void 0?`unknown`:t.claimsHeld===1?`1 stage`:`${t.claimsHeld} stages`},void 0,!1,{fileName:K,lineNumber:282,columnNumber:11},this),(0,U.jsxDEV)(J,{label:`Reason`,children:e.data.reason},void 0,!1,{fileName:K,lineNumber:289,columnNumber:11},this)]},void 0,!0,{fileName:K,lineNumber:277,columnNumber:9},this)}case`archive`:{let t=x.safeParse(o);if(!t.success)break;return(0,U.jsxDEV)(ce,{proposal:e,slug:t.data.project,reason:t.data.reason,members:n},void 0,!1,{fileName:K,lineNumber:297,columnNumber:9},this)}case`reallocation`:{let e=ee.safeParse(o);if(!e.success)break;return(0,U.jsxDEV)(q,{children:(0,U.jsxDEV)(J,{label:`Reallocation`,children:e.data.description},void 0,!1,{fileName:K,lineNumber:310,columnNumber:11},this)},void 0,!1,{fileName:K,lineNumber:309,columnNumber:9},this)}}return(0,U.jsxDEV)(`pre`,{className:`mt-2 overflow-x-auto rounded-lg bg-surface-2/40 p-3 font-mono text-[11px] text-fg-tertiary`,children:JSON.stringify(o,null,2)},void 0,!1,{fileName:K,lineNumber:318,columnNumber:5},this)}var Q=`/home/climage/projects/stellaris/apps/web/src/board/ProposalView.tsx`,$=t({agent:o().optional(),channel:o().optional(),role:o().optional(),skill:o().optional(),replaced:s().optional(),releasedTasks:r(o()).optional(),project:o().optional()});function ue({proposal:e}){let t=$.safeParse(e.provision??{});if(e.provision===void 0||!t.success)return null;let n=t.data,r=`text-fg-primary underline decoration-fg-muted underline-offset-2`;if(e.kind===`member`&&n.agent!==void 0)return(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[`Created`,` `,(0,U.jsxDEV)(u,{to:`/citizen/$name`,params:{name:n.agent},className:r,children:n.agent},void 0,!1,{fileName:Q,lineNumber:46,columnNumber:9},this),`.`]},void 0,!0,{fileName:Q,lineNumber:44,columnNumber:7},this);if(e.kind===`channel`&&n.channel!==void 0)return(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[`Created`,` `,(0,U.jsxDEV)(u,{to:`/c/$`,params:{_splat:n.channel},className:r,children:[`#`,n.channel]},void 0,!0,{fileName:Q,lineNumber:57,columnNumber:9},this),`.`]},void 0,!0,{fileName:Q,lineNumber:55,columnNumber:7},this);if(e.kind===`retirement`&&n.agent!==void 0){let e=n.releasedTasks?.length??0;return(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[`Retired `,n.agent,`; `,e===1?`1 stage went`:`${e} stages went`,` back to open.`]},void 0,!0,{fileName:Q,lineNumber:67,columnNumber:7},this)}return e.kind===`archive`&&n.project!==void 0?(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[`Archived`,` `,(0,U.jsxDEV)(u,{to:`/p/$slug`,params:{slug:n.project},className:r,children:n.project},void 0,!1,{fileName:Q,lineNumber:77,columnNumber:9},this),`; its members left and its threads closed.`]},void 0,!0,{fileName:Q,lineNumber:75,columnNumber:7},this):n.role===void 0?n.skill===void 0?null:(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[n.replaced===!0?`Replaced`:`Published`,` the society's skill `,n.skill,`.`]},void 0,!0,{fileName:Q,lineNumber:93,columnNumber:7},this):(0,U.jsxDEV)(`p`,{className:`mt-1`,children:[n.replaced===!0?`Rewrote`:`Added`,` the role `,n.role,`.`]},void 0,!0,{fileName:Q,lineNumber:86,columnNumber:7},this)}function de(){let{proposalId:e}=re({from:`/proposal/$proposalId`}),t=w(e),r=b(),i=d(),a=n(),o=_(),s=p(3e4);if(t.data===void 0)return(0,U.jsxDEV)(I,{children:t.error instanceof ie&&t.error.status===404?`There is no proposal ${e}.`:`Reading the proposal…`},void 0,!1,{fileName:Q,lineNumber:116,columnNumber:7},this);let c=t.data,l=c.status===`proposed`,f=r.data?.find(e=>e.name===c.proposedBy)?.role,m=o.data?.find(e=>e.id===c.id),h=c.status===`rejected`?`Rejected`:`Approved`,g=N(c,{members:r.data??[],roles:i.data??[],skills:a.data??[]});return(0,U.jsxDEV)(U.Fragment,{children:[(0,U.jsxDEV)(L,{leading:(0,U.jsxDEV)(u,{to:`/proposals`,"aria-label":`Back to the proposals`,className:`grid size-7 shrink-0 place-items-center rounded-lg text-fg-tertiary hover:bg-surface-2/70 hover:text-fg-primary`,children:`←`},void 0,!1,{fileName:Q,lineNumber:138,columnNumber:11},this),title:ne(c),subtitle:`${c.kind} proposal by ${O(c.proposedBy)} ${S(c.createdAt,s)}${l?` · for ${E(c,f)} to decide`:``}`,trailing:(0,U.jsxDEV)(B,{status:c.status},void 0,!1,{fileName:Q,lineNumber:151,columnNumber:19},this)},void 0,!1,{fileName:Q,lineNumber:136,columnNumber:7},this),(0,U.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto px-4 py-4`,children:[l?(0,U.jsxDEV)(`p`,{className:`rounded-lg bg-sky-400/10 px-3 py-2 text-xs leading-relaxed text-sky-200`,children:[`If approved: `,g]},void 0,!0,{fileName:Q,lineNumber:155,columnNumber:11},this):(0,U.jsxDEV)(`div`,{className:`rounded-lg bg-surface-2/40 px-3 py-2 text-xs leading-relaxed text-fg-secondary`,children:[(0,U.jsxDEV)(`p`,{children:[h,` by `,O(c.decidedBy??`someone`),c.decidedAt===void 0?``:` ${S(c.decidedAt,s)}`,c.reason===void 0?`.`:`: ${c.reason}`]},void 0,!0,{fileName:Q,lineNumber:160,columnNumber:13},this),(0,U.jsxDEV)(ue,{proposal:c},void 0,!1,{fileName:Q,lineNumber:165,columnNumber:13},this)]},void 0,!0,{fileName:Q,lineNumber:159,columnNumber:11},this),c.body.trim()===``||m!==void 0?null:(0,U.jsxDEV)(`section`,{className:`mt-5`,children:[(0,U.jsxDEV)(`h3`,{className:`text-section`,children:`Why`},void 0,!1,{fileName:Q,lineNumber:171,columnNumber:13},this),(0,U.jsxDEV)(`div`,{className:`mt-2`,children:(0,U.jsxDEV)(F,{text:c.body},void 0,!1,{fileName:Q,lineNumber:173,columnNumber:15},this)},void 0,!1,{fileName:Q,lineNumber:172,columnNumber:13},this)]},void 0,!0,{fileName:Q,lineNumber:170,columnNumber:11},this),(0,U.jsxDEV)(`section`,{className:`mt-5 border-t border-line pt-4`,children:[(0,U.jsxDEV)(`h3`,{className:`text-section`,children:l?`What it would make`:c.status===`provisioned`?`What it made`:`What it proposed`},void 0,!1,{fileName:Q,lineNumber:178,columnNumber:11},this),(0,U.jsxDEV)(le,{proposal:c,roles:i.data,members:r.data},void 0,!1,{fileName:Q,lineNumber:185,columnNumber:11},this)]},void 0,!0,{fileName:Q,lineNumber:177,columnNumber:9},this),(0,U.jsxDEV)(`section`,{"aria-label":`Thread`,className:`mt-5 border-t border-line pt-4`,children:[(0,U.jsxDEV)(`h3`,{className:`text-section`,children:`Thread`},void 0,!1,{fileName:Q,lineNumber:188,columnNumber:11},this),m===void 0?(0,U.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:o.data===void 0?`Reading the thread…`:`This proposal is older than proposal threads; its thread opens when it is decided.`},void 0,!1,{fileName:Q,lineNumber:190,columnNumber:13},this):(0,U.jsxDEV)(V,{thread:m,now:s,empty:`Nothing said yet. The pitch and the decision are posted here.`},void 0,!1,{fileName:Q,lineNumber:196,columnNumber:13},this)]},void 0,!0,{fileName:Q,lineNumber:187,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:153,columnNumber:7},this),m?.state===`open`?(0,U.jsxDEV)(M,{target:{threadId:c.id},placeholder:`Write in the proposal's thread`},void 0,!1,{fileName:Q,lineNumber:205,columnNumber:9},this):null,k(c)?(0,U.jsxDEV)(G,{proposal:c,consequence:g},void 0,!1,{fileName:Q,lineNumber:207,columnNumber:32},this):null]},void 0,!0,{fileName:Q,lineNumber:135,columnNumber:5},this)}export{de as ProposalView};
@@ -1 +0,0 @@
1
- import{P as e,Pn as t,Pt as n,_ as r,b as i,jn as a,t as o}from"./format-Ca2VAvEx.js";import{C as s,D as c,E as l,c as u}from"./index-D4GJkeKU.js";import{n as d,t as f}from"./Pane-DRpHmeJ9.js";var p=t(a(),1),m=e(),h=`/home/climage/projects/stellaris/apps/web/src/board/ProposalsView.tsx`,g=8,_={proposed:`bg-amber-500/15 text-amber-300`,approved:`bg-emerald-500/15 text-emerald-300`,provisioned:`bg-emerald-500/15 text-emerald-300`,rejected:`bg-red-500/15 text-red-300`,retired:`bg-surface-2 text-fg-muted`};function v({status:e}){return(0,m.jsxDEV)(`span`,{className:`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium ${_[e]}`,children:e===`provisioned`?`approved`:e},void 0,!1,{fileName:h,lineNumber:24,columnNumber:5},this)}function y({proposal:e,now:t}){let r=e.decidedBy===void 0||e.decidedAt===void 0?``:` · ${e.status===`rejected`?`rejected`:`approved`} by ${u(e.decidedBy)} ${o(e.decidedAt,t)}`;return(0,m.jsxDEV)(`li`,{children:(0,m.jsxDEV)(n,{to:`/proposal/$proposalId`,params:{proposalId:e.id},className:`block rounded-xl px-3 py-2.5 transition-colors hover:bg-surface-2/50`,children:[(0,m.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsxDEV)(`span`,{className:`text-title min-w-0 flex-1 truncate`,children:c(e)},void 0,!1,{fileName:h,lineNumber:47,columnNumber:11},this),(0,m.jsxDEV)(v,{status:e.status},void 0,!1,{fileName:h,lineNumber:48,columnNumber:11},this)]},void 0,!0,{fileName:h,lineNumber:46,columnNumber:9},this),(0,m.jsxDEV)(`p`,{className:`mt-1 truncate text-meta`,children:[`proposed by `,u(e.proposedBy),` `,o(e.createdAt,t),r]},void 0,!0,{fileName:h,lineNumber:50,columnNumber:9},this)]},void 0,!0,{fileName:h,lineNumber:41,columnNumber:7},this)},void 0,!1,{fileName:h,lineNumber:40,columnNumber:5},this)}function b(){let e=i(),t=r(3e4),[n,a]=(0,p.useState)(!1),o=l(e.data??[]),c=o.find(e=>e.group===`yours`)?.proposals.length??0;return(0,m.jsxDEV)(m.Fragment,{children:[(0,m.jsxDEV)(f,{title:`Proposals`,subtitle:`${c===0?`nothing`:c} waiting on you · ${e.data?.length??0} in all`},void 0,!1,{fileName:h,lineNumber:69,columnNumber:7},this),(0,m.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto px-2 py-2`,children:e.data===void 0?(0,m.jsxDEV)(d,{children:`Reading the proposals…`},void 0,!1,{fileName:h,lineNumber:75,columnNumber:11},this):o.length===0?(0,m.jsxDEV)(d,{children:`No proposals yet. Citizens propose roles, members, channels, and skills.`},void 0,!1,{fileName:h,lineNumber:77,columnNumber:11},this):o.map(e=>{let r=e.group===`decided`&&!n?e.proposals.slice(0,g):e.proposals;return(0,m.jsxDEV)(`section`,{className:`mb-3`,children:[(0,m.jsxDEV)(`h3`,{className:`px-3 pt-2 pb-1 text-[11px] font-semibold tracking-wider text-fg-muted uppercase`,children:[s.find(t=>t.group===e.group)?.label,` ·`,` `,e.proposals.length]},void 0,!0,{fileName:h,lineNumber:86,columnNumber:17},this),(0,m.jsxDEV)(`ul`,{children:r.map(e=>(0,m.jsxDEV)(y,{proposal:e,now:t},e.id,!1,{fileName:h,lineNumber:92,columnNumber:21},this))},void 0,!1,{fileName:h,lineNumber:90,columnNumber:17},this),r.length<e.proposals.length?(0,m.jsxDEV)(`button`,{type:`button`,onClick:()=>a(!0),className:`px-3 pt-1 text-xs text-fg-tertiary hover:text-fg-primary`,children:[`Show all `,e.proposals.length]},void 0,!0,{fileName:h,lineNumber:96,columnNumber:19},this):null]},e.group,!0,{fileName:h,lineNumber:85,columnNumber:15},this)})},void 0,!1,{fileName:h,lineNumber:73,columnNumber:7},this)]},void 0,!0,{fileName:h,lineNumber:68,columnNumber:5},this)}export{b as ProposalsView,v as StatusChip};
@@ -1 +0,0 @@
1
- import{D as e,O as t,P as n,S as r,St as i,_ as a,f as o,p as s,ut as c,v as l}from"./format-Ca2VAvEx.js";import{n as u,t as d}from"./Pane-DRpHmeJ9.js";import{n as f,r as p,t as m}from"./Overview-Cmz4_gfI.js";var h=n(),g=`/home/climage/projects/stellaris/apps/web/src/board/SocietyView.tsx`;function _(){let n=t(),_=s(),v=l(),y=r(),b=e(),x=o(c),S=a(3e4);if(n.data===void 0||_.data===void 0)return(0,h.jsxDEV)(u,{children:`Reading the society…`},void 0,!1,{fileName:g,lineNumber:25,columnNumber:12},this);let C=_.data.filter(e=>e.cli!==null),w=C.filter(e=>e.status===`active`),T=C.filter(e=>e.status===`retired`),E=(y.data??[]).filter(e=>e.name!==i);return(0,h.jsxDEV)(h.Fragment,{children:[(0,h.jsxDEV)(d,{title:n.data.name,subtitle:`${w.length} citizens · ${v.data?.length??0} projects · ${E.length} roles`},void 0,!1,{fileName:g,lineNumber:34,columnNumber:7},this),(0,h.jsxDEV)(`div`,{className:`flex-1 space-y-5 overflow-y-auto px-4 py-4`,children:[(0,h.jsxDEV)(f,{title:`Citizens`,children:[(0,h.jsxDEV)(m,{members:w,scope:c},void 0,!1,{fileName:g,lineNumber:40,columnNumber:11},this),T.length===0?null:(0,h.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:[`Retired: `,T.map(e=>e.name).join(`, `)]},void 0,!0,{fileName:g,lineNumber:42,columnNumber:13},this)]},void 0,!0,{fileName:g,lineNumber:39,columnNumber:9},this),(0,h.jsxDEV)(f,{title:`Roles`,children:(0,h.jsxDEV)(`ul`,{className:`space-y-2.5`,children:E.map(e=>{let t=w.filter(t=>t.role===e.name).length;return(0,h.jsxDEV)(`li`,{children:[(0,h.jsxDEV)(`p`,{className:`flex items-baseline gap-2 text-sm`,children:[(0,h.jsxDEV)(`span`,{className:`text-fg-primary`,children:e.name},void 0,!1,{fileName:g,lineNumber:54,columnNumber:21},this),(0,h.jsxDEV)(`span`,{className:`text-meta`,children:[t===1?`1 member`:`${t} members`,e.resident?` · warm session`:``,e.societyScope?` · society role`:``]},void 0,!0,{fileName:g,lineNumber:55,columnNumber:21},this)]},void 0,!0,{fileName:g,lineNumber:53,columnNumber:19},this),(0,h.jsxDEV)(`p`,{className:`mt-0.5 line-clamp-2 text-sm leading-relaxed text-fg-secondary`,children:e.purpose},void 0,!1,{fileName:g,lineNumber:61,columnNumber:19},this)]},e.name,!0,{fileName:g,lineNumber:52,columnNumber:17},this)})},void 0,!1,{fileName:g,lineNumber:48,columnNumber:11},this)},void 0,!1,{fileName:g,lineNumber:47,columnNumber:9},this),(0,h.jsxDEV)(f,{title:`Knowledge`,children:(0,h.jsxDEV)(p,{scope:c,topics:x.data,now:S},void 0,!1,{fileName:g,lineNumber:70,columnNumber:11},this)},void 0,!1,{fileName:g,lineNumber:69,columnNumber:9},this),(0,h.jsxDEV)(f,{title:`Skills`,children:b.data===void 0?(0,h.jsxDEV)(`p`,{className:`text-meta`,children:`Reading…`},void 0,!1,{fileName:g,lineNumber:74,columnNumber:13},this):b.data.length===0?(0,h.jsxDEV)(`p`,{className:`text-meta`,children:`None yet. A citizen's skill joins the society by proposal.`},void 0,!1,{fileName:g,lineNumber:76,columnNumber:13},this):(0,h.jsxDEV)(`ul`,{className:`space-y-1.5`,children:b.data.map(e=>(0,h.jsxDEV)(`li`,{className:`text-sm`,children:[(0,h.jsxDEV)(`span`,{className:`text-fg-primary`,children:e.name},void 0,!1,{fileName:g,lineNumber:81,columnNumber:19},this),e.summary===``?null:(0,h.jsxDEV)(`span`,{className:`text-fg-secondary`,children:[` · `,e.summary]},void 0,!0,{fileName:g,lineNumber:83,columnNumber:21},this)]},e.name,!0,{fileName:g,lineNumber:80,columnNumber:17},this))},void 0,!1,{fileName:g,lineNumber:78,columnNumber:13},this)},void 0,!1,{fileName:g,lineNumber:72,columnNumber:9},this)]},void 0,!0,{fileName:g,lineNumber:38,columnNumber:7},this)]},void 0,!0,{fileName:g,lineNumber:33,columnNumber:5},this)}export{_ as SocietyView};
@@ -1 +0,0 @@
1
- import{P as e,Pn as t,T as n,jn as r,ln as i,p as a,t as o}from"./format-Ca2VAvEx.js";import{M as s}from"./index-D4GJkeKU.js";import{t as c}from"./Markdown-BpYzeV5r.js";import{t as l}from"./MessageItem-BGPpqgpq.js";var u=t(r(),1),d=e(),f=`/home/climage/projects/stellaris/apps/web/src/board/SubjectThread.tsx`;function p({thread:e,now:t,task:r,empty:p}){let{api:m}=n(),h=a(),g=i({queryKey:[`thread`,e.id],queryFn:()=>m.thread(e.id)}),_=g.data?.messages??[],v=_.at(-1)?.id??null;if((0,u.useEffect)(()=>s(e.id,v),[e.id,v]),g.data===void 0)return(0,d.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:`Reading the thread…`},void 0,!1,{fileName:f,lineNumber:38,columnNumber:12},this);let y=g.data.thread;return(0,d.jsxDEV)(`div`,{className:`-mx-4 mt-1`,children:[_.length===0?(0,d.jsxDEV)(`p`,{className:`mx-4 mt-1 text-meta`,children:p},void 0,!1,{fileName:f,lineNumber:44,columnNumber:9},this):_.map(e=>(0,d.jsxDEV)(l,{message:e,members:h.data,now:t,task:r},e.id,!1,{fileName:f,lineNumber:47,columnNumber:11},this)),e.state===`closed`?(0,d.jsxDEV)(`div`,{className:`mx-4 mt-2`,children:[(0,d.jsxDEV)(`p`,{className:`text-meta`,children:[`Closed`,y.closedAt===void 0?``:` ${o(y.closedAt,t)}`,y.body.trim()===``?`.`:`:`]},void 0,!0,{fileName:f,lineNumber:58,columnNumber:11},this),y.body.trim()===``?null:(0,d.jsxDEV)(c,{text:y.body},void 0,!1,{fileName:f,lineNumber:62,columnNumber:47},this)]},void 0,!0,{fileName:f,lineNumber:57,columnNumber:9},this):null]},void 0,!0,{fileName:f,lineNumber:42,columnNumber:5},this)}export{p as t};
@@ -1 +0,0 @@
1
- import{P as e,Pt as t,T as n,_ as r,j as i,k as a,kn as o,p as s,t as c,v as l}from"./format-Ca2VAvEx.js";import{a as u,c as d,l as f,n as p,o as m,r as h,s as g,t as _}from"./tasks-rltmWd5a.js";import{L as v,N as y,R as b,_ as x,a as S,c as C,s as w,t as T}from"./index-D4GJkeKU.js";import{t as E}from"./Markdown-BpYzeV5r.js";import{n as D,t as O}from"./Pane-DRpHmeJ9.js";import{t as k}from"./SubjectThread-2j_msY38.js";var A=e(),j=`/home/climage/projects/stellaris/apps/web/src/board/TaskView.tsx`;function M({stage:e,index:t,task:n,members:r,now:i}){let a=e.completedBy!==void 0,o=m(n,e),s=t===n.stages.length-1,l=o&&n.status===`claimed`?n.claimedBy:void 0,u=e.holders.filter(t=>t!==l&&t!==e.completedBy),d=n.returned?.from===e.id?n.returned:void 0;return(0,A.jsxDEV)(`li`,{className:`relative flex gap-3 pb-4`,children:[s?null:(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,className:`absolute top-6 bottom-0 left-2.5 w-px bg-line`},void 0,!1,{fileName:j,lineNumber:55,columnNumber:9},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,className:`relative z-10 grid size-5 shrink-0 place-items-center rounded-full text-[10px] ${a?`bg-emerald-400/20 text-emerald-300`:o?`bg-fg-primary text-surface-0`:`bg-surface-2 text-fg-muted`}`,children:a?`✓`:t+1},void 0,!1,{fileName:j,lineNumber:57,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,A.jsxDEV)(`p`,{className:`text-sm ${o?`font-medium text-fg-primary`:`text-fg-secondary`}`,children:[e.name,e.gate?(0,A.jsxDEV)(`span`,{className:`ml-2 rounded-md bg-sky-400/10 px-1.5 py-px text-[11px] text-sky-300`,children:`gate`},void 0,!1,{fileName:j,lineNumber:73,columnNumber:13},this):null]},void 0,!0,{fileName:j,lineNumber:70,columnNumber:9},this),(0,A.jsxDEV)(`p`,{className:`mt-0.5 text-meta`,children:[`for `,h(e),l===void 0?null:(0,A.jsxDEV)(A.Fragment,{children:[` · held by `,(0,A.jsxDEV)(w,{name:l,members:r},void 0,!1,{fileName:j,lineNumber:83,columnNumber:15},this)]},void 0,!0,{fileName:j,lineNumber:81,columnNumber:13},this),e.completedBy!==void 0&&e.completedAt!==void 0?` · done by ${e.completedBy} ${c(e.completedAt,i)}`:o&&n.status===`open`?` · waiting since ${c(n.stageSince,i)}`:``,u.length>0?` · held before by ${u.join(`, `)}`:``,d===void 0?``:` · sent back by ${d.by} ${c(d.at,i)}`]},void 0,!0,{fileName:j,lineNumber:78,columnNumber:9},this)]},void 0,!0,{fileName:j,lineNumber:69,columnNumber:7},this)]},void 0,!0,{fileName:j,lineNumber:53,columnNumber:5},this)}function N({taskId:e}){let{api:t}=n(),r=o(),i=b({mutationFn:()=>t.openThread({task_id:e}),onSuccess:()=>{r.invalidateQueries({queryKey:[`threads`]})}});return(0,A.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,A.jsxDEV)(S,{variant:`primary`,disabled:i.isPending,onClick:()=>i.mutate(),children:i.isPending?`Opening…`:`Open its thread`},void 0,!1,{fileName:j,lineNumber:111,columnNumber:7},this),(0,A.jsxDEV)(`p`,{className:`text-meta`,children:i.error===null?`This task is older than task threads. It closes when the task ends.`:i.error.message},void 0,!1,{fileName:j,lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:j,lineNumber:110,columnNumber:5},this)}function P(){let{taskId:e}=v({from:`/task/$taskId`}),n=a(e),o=i(),m=l(),h=s(),b=r(3e4);if(n.data===void 0)return(0,A.jsxDEV)(D,{children:n.error instanceof y&&n.error.status===404?`There is no task ${e}.`:`Reading the task…`},void 0,!1,{fileName:j,lineNumber:134,columnNumber:7},this);let S=n.data,w=g(S),P=m.data?.find(e=>e.slug===S.project),F=o.data?.find(e=>e.id===S.id);return(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(O,{leading:(0,A.jsxDEV)(t,{to:`/p/$slug/tasks`,params:{slug:S.project},"aria-label":`Back to the tasks of ${P?.name??S.project}`,className:`grid size-7 shrink-0 place-items-center rounded-lg text-fg-tertiary hover:bg-surface-2/70 hover:text-fg-primary`,children:`←`},void 0,!1,{fileName:j,lineNumber:149,columnNumber:11},this),title:S.title,subtitle:`${P?.name??S.project} · ${d(S)} · created by ${C(S.createdBy)} ${c(S.createdAt,b)}`,trailing:(0,A.jsxDEV)(`span`,{className:`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium ${p[w]}`,children:_.find(e=>e.phase===w)?.label.toLowerCase()},void 0,!1,{fileName:j,lineNumber:163,columnNumber:11},this)},void 0,!1,{fileName:j,lineNumber:147,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto px-4 py-4`,children:[(0,A.jsxDEV)(`h3`,{className:`text-section`,children:`Plan`},void 0,!1,{fileName:j,lineNumber:171,columnNumber:9},this),S.returned===void 0?null:(0,A.jsxDEV)(`p`,{className:`mt-2 rounded-lg bg-orange-500/10 px-3 py-2 text-xs leading-relaxed text-orange-200`,children:[`Sent back from `,f(S,S.returned.from),` by `,S.returned.by,` `,c(S.returned.at,b),`. The work is redone from`,` `,f(S,S.stage),` until it reaches that stage again.`]},void 0,!0,{fileName:j,lineNumber:173,columnNumber:11},this),(0,A.jsxDEV)(`ol`,{className:`mt-3`,children:S.stages.map((e,t)=>(0,A.jsxDEV)(M,{stage:e,index:t,task:S,members:h.data,now:b},e.id,!1,{fileName:j,lineNumber:181,columnNumber:13},this))},void 0,!1,{fileName:j,lineNumber:179,columnNumber:9},this),(0,A.jsxDEV)(`p`,{className:`text-meta`,children:[`When the last stage is done:`,` `,S.onDone===`merge`?`task/${S.id} merges onto the default branch`:`nothing more`,S.blockedBy.length>0?(0,A.jsxDEV)(A.Fragment,{children:[` · blocked by `,(0,A.jsxDEV)(x,{text:S.blockedBy.join(`, `)},void 0,!1,{fileName:j,lineNumber:199,columnNumber:15},this)]},void 0,!0,{fileName:j,lineNumber:197,columnNumber:13},this):null]},void 0,!0,{fileName:j,lineNumber:191,columnNumber:9},this),S.body.trim()===``?null:(0,A.jsxDEV)(`section`,{className:`mt-5 border-t border-line pt-4`,children:[(0,A.jsxDEV)(`h3`,{className:`text-section`,children:`Brief`},void 0,!1,{fileName:j,lineNumber:205,columnNumber:13},this),(0,A.jsxDEV)(`div`,{className:`mt-2`,children:(0,A.jsxDEV)(E,{text:S.body},void 0,!1,{fileName:j,lineNumber:207,columnNumber:15},this)},void 0,!1,{fileName:j,lineNumber:206,columnNumber:13},this)]},void 0,!0,{fileName:j,lineNumber:204,columnNumber:11},this),(0,A.jsxDEV)(`section`,{"aria-label":`Thread`,className:`mt-5 border-t border-line pt-4`,children:[(0,A.jsxDEV)(`h3`,{className:`text-section`,children:`Thread`},void 0,!1,{fileName:j,lineNumber:212,columnNumber:11},this),o.data===void 0?null:F===void 0?u(S)?(0,A.jsxDEV)(N,{taskId:S.id},void 0,!1,{fileName:j,lineNumber:215,columnNumber:15},this):(0,A.jsxDEV)(`p`,{className:`mt-2 text-meta`,children:`No thread on this task.`},void 0,!1,{fileName:j,lineNumber:217,columnNumber:15},this):(0,A.jsxDEV)(k,{thread:F,now:b,task:S,empty:`Nothing said yet. Each stage's handover lands here, and so does anything written below.`},void 0,!1,{fileName:j,lineNumber:220,columnNumber:13},this)]},void 0,!0,{fileName:j,lineNumber:211,columnNumber:9},this)]},void 0,!0,{fileName:j,lineNumber:170,columnNumber:7},this),F?.state===`open`?(0,A.jsxDEV)(T,{target:{threadId:S.id},placeholder:`Write in the task's thread`},void 0,!1,{fileName:j,lineNumber:230,columnNumber:9},this):null]},void 0,!0,{fileName:j,lineNumber:146,columnNumber:5},this)}export{P as TaskView};
@@ -1 +0,0 @@
1
- import{A as e,P as t,Pn as n,Pt as r,_ as i,gt as a,jn as o,p as s,t as c,v as l}from"./format-Ca2VAvEx.js";import{c as u,i as d,l as f,o as p,r as m,s as h,t as g}from"./tasks-rltmWd5a.js";import{L as _,s as v}from"./index-D4GJkeKU.js";import{n as y,t as b}from"./Pane-DRpHmeJ9.js";var x=n(o(),1),S=t(),C=`/home/climage/projects/stellaris/apps/web/src/board/PlanStrip.tsx`;function w({task:e}){let t=h(e);return(0,S.jsxDEV)(`ol`,{className:`flex gap-1`,"aria-hidden":`true`,children:e.stages.map((n,r)=>{let i=n.completedBy!==void 0,a=p(e,n),o=i?`bg-emerald-400/60`:a?e.status===`claimed`?`bg-fg-primary/90`:`bg-amber-300/80`:t===`abandoned`?`bg-surface-2/50`:`bg-surface-2`;return(0,S.jsxDEV)(`li`,{title:`${r+1}. ${n.name} · ${m(n)}${n.gate?` · gate`:``}`,className:`h-1.5 min-w-3 flex-1 rounded-full ${o} ${n.gate?`ring-1 ring-sky-300/70 ring-offset-1 ring-offset-surface-1`:``}`},n.id,!1,{fileName:C,lineNumber:25,columnNumber:11},this)})},void 0,!1,{fileName:C,lineNumber:11,columnNumber:5},this)}var T=`/home/climage/projects/stellaris/apps/web/src/board/TasksView.tsx`,E=5;function D({task:e,members:t,now:n}){let i=h(e),o=a(e);return(0,S.jsxDEV)(`li`,{children:(0,S.jsxDEV)(r,{to:`/task/$taskId`,params:{taskId:e.id},className:`block rounded-xl px-3 py-2.5 transition-colors hover:bg-surface-2/50`,children:[(0,S.jsxDEV)(`div`,{className:`flex items-baseline gap-2`,children:[(0,S.jsxDEV)(`span`,{className:`text-title min-w-0 flex-1 truncate`,children:e.title},void 0,!1,{fileName:T,lineNumber:33,columnNumber:11},this),(0,S.jsxDEV)(`span`,{className:`shrink-0 text-meta`,children:u(e)},void 0,!1,{fileName:T,lineNumber:34,columnNumber:11},this)]},void 0,!0,{fileName:T,lineNumber:32,columnNumber:9},this),(0,S.jsxDEV)(`div`,{className:`mt-2`,children:(0,S.jsxDEV)(w,{task:e},void 0,!1,{fileName:T,lineNumber:37,columnNumber:11},this)},void 0,!1,{fileName:T,lineNumber:36,columnNumber:9},this),e.returned===void 0?null:(0,S.jsxDEV)(`p`,{className:`mt-1.5 truncate text-xs text-orange-300/90`,children:[`Sent back from `,f(e,e.returned.from),` by `,e.returned.by,` `,c(e.returned.at,n)]},void 0,!0,{fileName:T,lineNumber:40,columnNumber:11},this),(0,S.jsxDEV)(`p`,{className:`mt-1.5 truncate text-meta`,children:e.status===`claimed`&&i!==`landing`&&o!==void 0?(0,S.jsxDEV)(S.Fragment,{children:[o.name,` · held by `,(0,S.jsxDEV)(v,{name:e.claimedBy??``,members:t},void 0,!1,{fileName:T,lineNumber:48,columnNumber:38},this)]},void 0,!0,{fileName:T,lineNumber:47,columnNumber:13},this):e.status===`open`&&i!==`landing`&&o!==void 0?`${o.name} · waiting for ${m(o)} since ${c(e.stageSince,n)}`:i===`landing`?`landing task/${e.id} on the default branch`:`${i} ${c(e.updatedAt,n)}`},void 0,!1,{fileName:T,lineNumber:45,columnNumber:9},this)]},void 0,!0,{fileName:T,lineNumber:27,columnNumber:7},this)},void 0,!1,{fileName:T,lineNumber:26,columnNumber:5},this)}function O(){let{slug:t}=_({from:`/p/$slug/tasks`}),n=e(t),r=l(),a=s(),o=i(3e4),[c,u]=(0,x.useState)(new Set),f=r.data?.find(e=>e.slug===t),p=d(n.data??[]),m=p.filter(e=>e.phase!==`done`&&e.phase!==`abandoned`).reduce((e,t)=>e+t.tasks.length,0);return(0,S.jsxDEV)(S.Fragment,{children:[(0,S.jsxDEV)(b,{title:`Tasks`,subtitle:`${f?.name??t} · ${m} in play · ${n.data?.length??0} in all`},void 0,!1,{fileName:T,lineNumber:79,columnNumber:7},this),(0,S.jsxDEV)(`div`,{className:`flex-1 overflow-y-auto px-2 py-2`,children:n.data===void 0?(0,S.jsxDEV)(y,{children:`Reading the tasks…`},void 0,!1,{fileName:T,lineNumber:85,columnNumber:11},this):p.length===0?(0,S.jsxDEV)(y,{children:`No tasks in this project yet.`},void 0,!1,{fileName:T,lineNumber:87,columnNumber:11},this):p.map(e=>{let t=e.phase!==`done`&&e.phase!==`abandoned`||c.has(e.phase)?e.tasks:e.tasks.slice(0,E);return(0,S.jsxDEV)(`section`,{className:`mb-3`,children:[(0,S.jsxDEV)(`h3`,{className:`px-3 pt-2 pb-1 text-[11px] font-semibold tracking-wider text-fg-muted uppercase`,children:[g.find(t=>t.phase===e.phase)?.label,` · `,e.tasks.length]},void 0,!0,{fileName:T,lineNumber:95,columnNumber:17},this),(0,S.jsxDEV)(`ul`,{children:t.map(e=>(0,S.jsxDEV)(D,{task:e,members:a.data,now:o},e.id,!1,{fileName:T,lineNumber:100,columnNumber:21},this))},void 0,!1,{fileName:T,lineNumber:98,columnNumber:17},this),t.length<e.tasks.length?(0,S.jsxDEV)(`button`,{type:`button`,onClick:()=>u(new Set([...c,e.phase])),className:`px-3 pt-1 text-xs text-fg-tertiary hover:text-fg-primary`,children:[`Show all `,e.tasks.length]},void 0,!0,{fileName:T,lineNumber:104,columnNumber:19},this):null]},e.phase,!0,{fileName:T,lineNumber:94,columnNumber:15},this)})},void 0,!1,{fileName:T,lineNumber:83,columnNumber:7},this)]},void 0,!0,{fileName:T,lineNumber:78,columnNumber:5},this)}export{O as TasksView};
@@ -1 +0,0 @@
1
- import{P as e,Pt as t,n,t as r}from"./format-Ca2VAvEx.js";import{_ as i}from"./index-D4GJkeKU.js";var a=e(),o=`/home/climage/projects/stellaris/apps/web/src/board/ThreadCard.tsx`;function s(e){return e?.kind??`topic`}function c({state:e}){return(0,a.jsxDEV)(`span`,{className:`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium ${e===`open`?`bg-emerald-500/15 text-emerald-300`:`bg-surface-2 text-fg-tertiary`}`,children:e},void 0,!1,{fileName:o,lineNumber:13,columnNumber:5},this)}function l({thread:e,now:l}){let u=e.state===`closed`?n(e.body,180):``,d=e.messages===1?`1 message`:`${e.messages} messages`;return(0,a.jsxDEV)(t,{to:`/thread/$threadId`,params:{threadId:e.id},className:`mx-4 my-2 block rounded-xl bg-surface-2/40 px-3.5 py-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)] transition-colors hover:bg-surface-2/70`,children:[(0,a.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,a.jsxDEV)(`span`,{"aria-hidden":`true`,className:`text-fg-muted`,children:`↳`},void 0,!1,{fileName:o,lineNumber:34,columnNumber:9},this),(0,a.jsxDEV)(`span`,{className:`text-title min-w-0 flex-1 truncate`,children:e.title},void 0,!1,{fileName:o,lineNumber:37,columnNumber:9},this),(0,a.jsxDEV)(c,{state:e.state},void 0,!1,{fileName:o,lineNumber:38,columnNumber:9},this)]},void 0,!0,{fileName:o,lineNumber:33,columnNumber:7},this),(0,a.jsxDEV)(`p`,{className:`mt-1 text-meta`,children:[s(e.subject),` thread by `,e.openedBy,` · `,d,` · opened`,` `,r(e.openedAt,l)]},void 0,!0,{fileName:o,lineNumber:40,columnNumber:7},this),u===``?null:(0,a.jsxDEV)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-relaxed text-fg-secondary`,children:(0,a.jsxDEV)(i,{text:u,links:!1},void 0,!1,{fileName:o,lineNumber:46,columnNumber:11},this)},void 0,!1,{fileName:o,lineNumber:45,columnNumber:9},this)]},void 0,!0,{fileName:o,lineNumber:28,columnNumber:5},this)}export{l as n,s as r,c as t};
@@ -1 +0,0 @@
1
- import{P as e,Pn as t,S as n,T as r,jn as i,kn as a,p as o}from"./format-Ca2VAvEx.js";import{F as s,N as c,R as l,a as u,n as d,r as f}from"./index-D4GJkeKU.js";var p=t(i(),1),m=e(),h=`/home/climage/projects/stellaris/apps/web/src/board/ThreadForms.tsx`,g=`block w-full rounded-lg bg-surface-2/50 px-3 py-2 text-sm text-fg-primary outline-none shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)] placeholder:text-fg-muted focus:shadow-[inset_0_0_0_1px_rgba(255,255,255,0.16)]`;function _({error:e}){return e===null?null:(0,m.jsxDEV)(`p`,{role:`alert`,className:`text-xs text-red-400`,children:e instanceof c?e.message:`The board did not take it.`},void 0,!1,{fileName:h,lineNumber:16,columnNumber:5},this)}function v({channel:e,onDone:t}){let{api:i}=r(),c=a(),v=s(),y=o(),b=n(),[x,S]=(0,p.useState)(``),[C,w]=(0,p.useState)(``),T=(0,p.useRef)(null);(0,p.useEffect)(()=>T.current?.focus(),[]);let E=l({mutationFn:async()=>{let t=await i.openThread({channel:e,title:x.trim()});return C.trim()!==``&&await i.sendMessage({thread_id:t.id,body:C.trim()}),t},onSuccess:e=>{c.invalidateQueries({queryKey:[`threads`]}),t(),v({to:`/thread/$threadId`,params:{threadId:e.id}})}}),D=C.trim()===``?[]:f(C,y.data??[],b.data??[]);return(0,m.jsxDEV)(`form`,{className:`space-y-2 border-b border-line bg-surface-2/20 p-3`,onSubmit:e=>{e.preventDefault(),E.mutate()},children:[(0,m.jsxDEV)(`input`,{ref:T,value:x,maxLength:200,placeholder:`What is the thread about?`,"aria-label":`Thread title`,onChange:e=>S(e.target.value),className:g},void 0,!1,{fileName:h,lineNumber:58,columnNumber:7},this),(0,m.jsxDEV)(`textarea`,{value:C,rows:3,placeholder:`First message, optional`,"aria-label":`First message`,onChange:e=>w(e.target.value),className:`${g} resize-none`},void 0,!1,{fileName:h,lineNumber:67,columnNumber:7},this),(0,m.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsxDEV)(`p`,{className:`min-w-0 flex-1 truncate text-[11px] text-fg-muted`,children:D.length>0?`The first message wakes ${d(D)}.`:`Only its participants and anyone mentioned will read it.`},void 0,!1,{fileName:h,lineNumber:76,columnNumber:9},this),(0,m.jsxDEV)(u,{onClick:t,children:`Cancel`},void 0,!1,{fileName:h,lineNumber:81,columnNumber:9},this),(0,m.jsxDEV)(u,{variant:`primary`,type:`submit`,disabled:x.trim()===``||E.isPending,children:E.isPending?`Opening…`:`Open thread`},void 0,!1,{fileName:h,lineNumber:82,columnNumber:9},this)]},void 0,!0,{fileName:h,lineNumber:75,columnNumber:7},this),(0,m.jsxDEV)(_,{error:E.error},void 0,!1,{fileName:h,lineNumber:86,columnNumber:7},this)]},void 0,!0,{fileName:h,lineNumber:51,columnNumber:5},this)}function y({threadId:e,channel:t,onDone:n}){let{api:i}=r(),o=a(),[s,c]=(0,p.useState)(``),d=(0,p.useRef)(null);(0,p.useEffect)(()=>d.current?.focus(),[]);let f=l({mutationFn:()=>i.closeThread({thread_id:e,summary:s.trim()}),onSuccess:()=>{for(let n of[[`thread`,e],[`threads`],[`channel`,t]])o.invalidateQueries({queryKey:n});n()}});return(0,m.jsxDEV)(`form`,{className:`space-y-2 border-b border-line bg-surface-2/20 p-3`,onSubmit:e=>{e.preventDefault(),f.mutate()},children:[(0,m.jsxDEV)(`textarea`,{ref:d,value:s,rows:3,placeholder:`What did it settle? The summary is posted to #${t}.`,"aria-label":`Closing summary`,onChange:e=>c(e.target.value),className:`${g} resize-none`},void 0,!1,{fileName:h,lineNumber:123,columnNumber:7},this),(0,m.jsxDEV)(`div`,{className:`flex items-center justify-end gap-2`,children:[(0,m.jsxDEV)(u,{onClick:n,children:`Cancel`},void 0,!1,{fileName:h,lineNumber:133,columnNumber:9},this),(0,m.jsxDEV)(u,{variant:`primary`,type:`submit`,disabled:s.trim()===``||f.isPending,children:f.isPending?`Closing…`:`Close thread`},void 0,!1,{fileName:h,lineNumber:134,columnNumber:9},this)]},void 0,!0,{fileName:h,lineNumber:132,columnNumber:7},this),(0,m.jsxDEV)(_,{error:f.error},void 0,!1,{fileName:h,lineNumber:138,columnNumber:7},this)]},void 0,!0,{fileName:h,lineNumber:116,columnNumber:5},this)}export{v as i,g as n,_ as r,y as t};
@@ -1 +0,0 @@
1
- import{P as e,Pn as t,Pt as n,T as r,_ as i,jn as a,k as o,ln as s,p as c,t as l}from"./format-Ca2VAvEx.js";import{L as u,M as d,N as f,a as p,c as m,t as h}from"./index-D4GJkeKU.js";import{t as g}from"./Markdown-BpYzeV5r.js";import{t as _}from"./MessageItem-BGPpqgpq.js";import{n as v,t as y}from"./Pane-DRpHmeJ9.js";import{r as b,t as x}from"./ThreadCard-tzMGvn9j.js";import{t as S}from"./ThreadForms-DE2yJEhz.js";import{t as C}from"./useStickyScroll-DDS3s21P.js";var w=t(a(),1),T=e(),E=`/home/climage/projects/stellaris/apps/web/src/board/ThreadView.tsx`;function D(){let{threadId:e}=u({from:`/thread/$threadId`});return(0,T.jsxDEV)(O,{id:e},e,!1,{fileName:E,lineNumber:21,columnNumber:10},this)}function O({id:e}){let{api:t}=r(),a=s({queryKey:[`thread`,e],queryFn:()=>t.thread(e)}),u=c(),D=i(3e4),O=a.data?.messages??[],k=O.at(-1)?.id??null;(0,w.useEffect)(()=>d(e,k),[e,k]);let{ref:A,onScroll:j}=C(),[M,N]=(0,w.useState)(!1),P=a.data?.thread.subject,F=o(P?.kind===`task`?P.id:null);if(a.data===void 0)return(0,T.jsxDEV)(v,{children:a.error instanceof f&&a.error.status===404?`There is no thread ${e}.`:`Reading the thread…`},void 0,!1,{fileName:E,lineNumber:39,columnNumber:7},this);let{thread:I}=a.data;return(0,T.jsxDEV)(T.Fragment,{children:[(0,T.jsxDEV)(y,{leading:(0,T.jsxDEV)(n,{to:`/c/$`,params:{_splat:I.channel},"aria-label":`Back to #${I.channel}`,className:`grid size-7 shrink-0 place-items-center rounded-lg text-fg-tertiary hover:bg-surface-2/70 hover:text-fg-primary`,children:`←`},void 0,!1,{fileName:E,lineNumber:51,columnNumber:11},this),title:I.title,subtitle:`${b(I.subject)} thread in #${I.channel} · opened by ${m(I.openedBy)} ${l(I.openedAt,D)}`,trailing:(0,T.jsxDEV)(T.Fragment,{children:[I.subject?.kind===`task`?(0,T.jsxDEV)(n,{to:`/task/$taskId`,params:{taskId:I.subject.id},className:`shrink-0 rounded-md px-2 py-1 text-xs text-fg-tertiary hover:bg-surface-2/70 hover:text-fg-primary`,children:`Task →`},void 0,!1,{fileName:E,lineNumber:67,columnNumber:15},this):I.subject?.kind===`proposal`?(0,T.jsxDEV)(n,{to:`/proposal/$proposalId`,params:{proposalId:I.subject.id},className:`shrink-0 rounded-md px-2 py-1 text-xs text-fg-tertiary hover:bg-surface-2/70 hover:text-fg-primary`,children:`Proposal →`},void 0,!1,{fileName:E,lineNumber:75,columnNumber:15},this):null,I.state===`open`&&!M&&I.subject?.kind!==`task`?(0,T.jsxDEV)(p,{onClick:()=>N(!0),children:`Close`},void 0,!1,{fileName:E,lineNumber:85,columnNumber:15},this):(0,T.jsxDEV)(x,{state:I.state},void 0,!1,{fileName:E,lineNumber:87,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:65,columnNumber:11},this)},void 0,!1,{fileName:E,lineNumber:49,columnNumber:7},this),M&&I.state===`open`?(0,T.jsxDEV)(S,{threadId:I.id,channel:I.channel,onDone:()=>N(!1)},void 0,!1,{fileName:E,lineNumber:93,columnNumber:9},this):null,(0,T.jsxDEV)(`div`,{ref:A,onScroll:j,className:`flex-1 overflow-y-auto py-2`,children:[O.length===0?(0,T.jsxDEV)(v,{children:`No messages in this thread yet.`},void 0,!1,{fileName:E,lineNumber:100,columnNumber:34},this):null,O.map(e=>(0,T.jsxDEV)(_,{message:e,members:u.data,now:D,task:F.data},e.id,!1,{fileName:E,lineNumber:102,columnNumber:11},this)),I.state===`closed`?(0,T.jsxDEV)(`section`,{className:`mx-4 mt-3 mb-2 rounded-xl bg-surface-2/40 px-3.5 py-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]`,children:[(0,T.jsxDEV)(`p`,{className:`text-caps`,children:[`Closed by `,m(I.closedBy??`board`),I.closedAt===void 0?``:` ${l(I.closedAt,D)}`]},void 0,!0,{fileName:E,lineNumber:112,columnNumber:13},this),I.body.trim()===``?(0,T.jsxDEV)(`p`,{className:`mt-1 text-meta`,children:[`It ended with its `,b(I.subject),`.`]},void 0,!0,{fileName:E,lineNumber:117,columnNumber:15},this):(0,T.jsxDEV)(g,{text:I.body},void 0,!1,{fileName:E,lineNumber:119,columnNumber:15},this)]},void 0,!0,{fileName:E,lineNumber:111,columnNumber:11},this):null]},void 0,!0,{fileName:E,lineNumber:99,columnNumber:7},this),I.state===`open`?(0,T.jsxDEV)(h,{target:{threadId:I.id},placeholder:`Reply in the thread`},void 0,!1,{fileName:E,lineNumber:125,columnNumber:9},this):null]},void 0,!0,{fileName:E,lineNumber:48,columnNumber:5},this)}export{D as ThreadView};