@magnusekdahl/parallix 1.5.125 → 1.5.126
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.
- package/NOTICES +1 -1
- package/build/manifest.sha256 +4 -4
- package/build/package.json +1 -1
- package/build/px.mjs +1 -1
- package/build/px.mjs.map +1 -1
- package/build/sbom.json +2 -2
- package/package.json +1 -1
package/NOTICES
CHANGED
package/build/manifest.sha256
CHANGED
|
@@ -21,7 +21,7 @@ a08063b188a91e901d462f73f4f154c98d85068324cef45eb144250e5000051a migrations/001
|
|
|
21
21
|
f46823014782c22a9e40b486958770d2b5f7e7180fc9fe6be961a791cca97b50 migrations/0017-retire-mission-import-provenance.sql
|
|
22
22
|
3560376d8e31e0b8fc527509211378a839ba24ef5e5e5fac9ee6dadc06c172c2 migrations/0018-adhoc-mission-counter.sql
|
|
23
23
|
07559cd5363f01a309d028673e6dcb9e222a848fae79c57d2fee9001589da19d migrations/0019-custom-agent-leases.sql
|
|
24
|
-
|
|
24
|
+
0b5d1cd2c31f63f18d543abd23de8efae08ed0692bd1335c9664329e73743d56 package.json
|
|
25
25
|
c7931a2b30343eb509e6d06c8c71d6f0591fbe9bca9029ae8f88781858c8e26c prompts/act-on-review-core.md
|
|
26
26
|
8f06b68b92c8cfc6f3ee0ff7a1e258258c1a1c2220bdfe5b1a3d5fbaab6befeb prompts/act-on-review.md
|
|
27
27
|
f5565ff259a2c830e8853573f7a774fb2ce21e1631d457a025d63ebcf9f4ea6a prompts/draft-core.md
|
|
@@ -30,9 +30,9 @@ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/draft.
|
|
|
30
30
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/execute.md
|
|
31
31
|
7be9123246e77e669d0bbd7c1f6c6f436f58af0c216cb4ee43fd82824b344bbf prompts/review-core.md
|
|
32
32
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 prompts/review.md
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
73d251f710121157b0e0cdabe1919551359f3b3658d8bf59ba6111e9272dfb7d px.mjs
|
|
34
|
+
f3f642e1a3ac8c624ca8894e9eac29a1eed18073a91b1cd871615263dc364631 px.mjs.map
|
|
35
|
+
fbf9b7bd1d7cf095d0533f064b6aa0bac6b1606268765915a61ae3a7c918089e sbom.json
|
|
36
36
|
ce7f4aa6eb9e684434f243a64018d4dfa9962348bfdb5d59881783326cc0ec90 templates/mission-scaffold.md
|
|
37
37
|
99784eaf9444cd3b2531bc71976751ffe78f8305f6affe78b8a258e4c9509dd2 web/assets/index-B8Hv3ORh.js
|
|
38
38
|
807f92b40d54c1112d284e7c491702aa90e25edfc32ff5af9f4889beec5583a8 web/assets/index-DYY4ROtr.css
|
package/build/package.json
CHANGED
package/build/px.mjs
CHANGED
|
@@ -1197,7 +1197,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
1197
1197
|
React keys must be passed directly to JSX without using spread:
|
|
1198
1198
|
let props = %s;
|
|
1199
1199
|
<%s key={someKey} {...props} />`,xe,ee,pe,ee),Ye[ee+xe]=!0)}if(ee=null,re!==void 0&&(n(re),ee=""+re),s(je)&&(n(je.key),ee=""+je.key),"key"in je){re={};for(var ye in je)ye!=="key"&&(re[ye]=je[ye])}else re=je;return ee&&l(re,typeof he=="function"?he.displayName||he.name||"Unknown":he),f(he,ee,re,i(),We,He)}function h(he){y(he)?he._store&&(he._store.validated=1):typeof he=="object"&&he!==null&&he.$$typeof===j&&(he._payload.status==="fulfilled"?y(he._payload.value)&&he._payload.value._store&&(he._payload.value._store.validated=1):he._store&&(he._store.validated=1))}function y(he){return typeof he=="object"&&he!==null&&he.$$typeof===v}var A=Cr(),v=Symbol.for("react.transitional.element"),S=Symbol.for("react.portal"),b=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),B=Symbol.for("react.consumer"),D=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),$=Symbol.for("react.suspense"),Q=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),G=Symbol.for("react.activity"),Z=Symbol.for("react.client.reference"),te=A.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,z=Object.prototype.hasOwnProperty,Y=Array.isArray,K=console.createTask?console.createTask:function(){return null};A={react_stack_bottom_frame:function(he){return he()}};var oe,Ae={},ge=A.react_stack_bottom_frame.bind(A,o)(),Re=K(r(o)),Ye={};$G.Fragment=b,$G.jsx=function(he,je,re){var xe=1e4>te.recentlyCreatedOwnerStacks++;return m(he,je,re,!1,xe?Error("react-stack-top-frame"):ge,xe?K(r(he)):Re)},$G.jsxs=function(he,je,re){var xe=1e4>te.recentlyCreatedOwnerStacks++;return m(he,je,re,!0,xe?Error("react-stack-top-frame"):ge,xe?K(r(he)):Re)}})()});var qs=U((yln,Vre)=>{"use strict";process.env.NODE_ENV==="production"?Vre.exports=u2e():Vre.exports=c2e()});function vMt(e){return e==null||e===">- "||e===">-"||e.trim()===""}function Vy(e,t){return t<=0?"":e.length<=t?e:t===1?"\u2026":`${e.slice(0,t-1)}\u2026`}function EMt(e){switch(e){case"passed":return"gate \u2713";case"failed":return"gate \u2717 FAIL";case"running":return"gate \xB7 running";case"unknown":return"gate \xB7 no-op";default:return"gate \xB7 no-op"}}function wMt(e){switch(e){case"passed":return"green";case"failed":return"red";case"running":return"yellow";default:return"gray"}}function SMt(e){return e==null||e===""?k_:e.replace(/\.md$/,"")}function d2e(e){switch(e){case"codex":return"blue";case"claude":return"yellow";case"mistral":return"magenta";case"custom":return"green";default:return"blue"}}function bMt(e){return e.blockingReason?"red":e.gate==="failed"?"yellow":e.gate==="passed"?"green":e.agent?d2e(e.agent):"gray"}function f2e(e,t,n){if(n.includes("gate:failed")||n.includes("agent:stuck"))return t==="active"?"repair \u25B6":"handoff";switch(e){case"backlog":return t==="refine"?"refine \u25B6":t;case"refined":return t==="active"?"start \u25B6":t;case"active":return t==="active"?"ckpt":"handoff";case"review":return t==="review"?"review \u25B6":"handoff";case"integration":return t==="integrate"?"integrate \u25B6":"handoff";default:return t}}function CMt(e){for(let t of e){let n=t.match(/^review:round-(\d+)$/);if(n)return parseInt(n[1],10)}return null}function RMt(e){for(let t of e){let n=t.match(/^review:blocking-(\d+)$/);if(n)return parseInt(n[1],10)}return null}function m2e({card:e,width:t=Kre,selected:n=!1}){let r=Math.max(1,t-1),i=e.agent??k_,o=vMt(e.title)?k_:e.title,s=SMt(e.checkpoint),l=e.nextActionText===null||e.nextActionText===void 0||e.nextActionText===""?k_:e.nextActionText,c=e.pullRequest?.id??null,f=e.reviewApproved?"approved":"pending",m=e.labels[0],h=m?Math.max(8,r-(m.length+4)):r,y=e.commands.filter(T=>T.enabled),A=CMt(e.flags),v=RMt(e.flags),S=[A!==null?`R${A}`:null,v!==null&&v>0?`${v} blocking`:null].filter(Boolean).join(" \xB7 "),b=yMt.includes(e.lane),C=b?i:y.length>0?f2e(e.lane,y[0].command,e.flags):null,k=[c!==null?`PR #${c}`:`PR ${k_}`,S||`review ${f}`],B=n?"\u25B6":"\u2503",D=_B(e)?`${hMt}${B}${AMt}`:B;return(0,Jo.jsxs)(St,{flexDirection:"column",width:t,marginBottom:1,children:[(0,Jo.jsxs)(St,{flexDirection:"row",children:[(0,Jo.jsx)(Je,{bold:n,color:n?"cyan":bMt(e),children:D}),(0,Jo.jsx)(St,{flexGrow:1,children:(0,Jo.jsx)(Je,{wrap:"truncate-end",bold:!0,color:"blue",children:Vy(e.id,h)})}),m&&(0,Jo.jsx)(Je,{color:"gray",wrap:"truncate-end",children:` [${Vy(m,Math.max(1,r-h-4))}]`}),C&&(0,Jo.jsx)(Je,{color:b?d2e(i):"green",children:Vy(C,12)})]}),(0,Jo.jsx)(Je,{wrap:"truncate-end",dimColor:o===k_,children:Vy(o,t)}),b&&(0,Jo.jsxs)(Jo.Fragment,{children:[(0,Jo.jsxs)(St,{flexDirection:"row",children:[(0,Jo.jsx)(Je,{wrap:"truncate-end",color:"gray",children:Vy(s,Math.max(6,t-14))}),(0,Jo.jsxs)(Je,{wrap:"truncate-end",color:wMt(e.gate),bold:e.gate==="failed",children:[" ",EMt(e.gate)]})]}),(0,Jo.jsx)(Je,{wrap:"truncate-end",dimColor:!0,children:Vy(`next: ${l}`,t)}),(0,Jo.jsx)(Je,{wrap:"truncate-end",color:e.reviewApproved?"green":"gray",children:Vy(k.join(" \xB7 "),t)})]}),y.length>0&&(0,Jo.jsx)(St,{flexDirection:"row",children:y.map(T=>{let $=f2e(e.lane,T.command,e.flags);return(0,Jo.jsx)(St,{marginRight:1,children:(0,Jo.jsx)(Je,{bold:!0,color:"cyan",children:$})},T.command)})}),e.blockingReason!==null&&e.blockingReason!==""&&(0,Jo.jsx)(Je,{wrap:"truncate-end",bold:!0,color:"red",children:Vy(`\u25B2 ${e.blockingReason}`,t)})]})}var Jo,hMt,AMt,k_,Kre,yMt,p2e=J(async()=>{"use strict";await Xd();C$();Jo=Ct(qs(),1),hMt="\x1B[5m",AMt="\x1B[25m",k_="unavailable",Kre=26,yMt=["active","review","integration"]});function _Mt(e){return`nothing in ${e}`}function g2e({stage:e,count:t,wipLimit:n,medianCycleTime:r,medianSampleSize:i,width:o=Kre,maxVisibleCards:s=Jre,visibleStart:l=0,selectedMissionId:c=null}){let f=e.cards,m=Math.max(0,Math.min(l,Math.max(0,f.length-s))),h=f.slice(m,m+Math.max(0,s)),y=f.length-m-h.length,A=n!==void 0&&t>n,v=n!==void 0?`${t}/${n}`:String(t);return(0,Kf.jsxs)(St,{flexDirection:"column",children:[(0,Kf.jsxs)(St,{flexDirection:"row",children:[(0,Kf.jsx)(Je,{color:"gray",children:"\u2500\u2500 "}),(0,Kf.jsx)(Je,{bold:!0,children:IMt[e.lane]}),(0,Kf.jsx)(Je,{color:A?"yellow":"gray",bold:A,children:` ${v}`}),r!=null&&(0,Kf.jsx)(Je,{color:"gray",children:` med ${r}m (n=${i??0})`})]}),(0,Kf.jsxs)(St,{flexDirection:"column",paddingTop:1,children:[f.length===0?(0,Kf.jsx)(Je,{dimColor:!0,children:_Mt(e.lane)}):h.map(S=>(0,Kf.jsx)(m2e,{card:S,width:o,selected:S.id===c},S.id)),y>0&&(0,Kf.jsx)(Je,{dimColor:!0,children:`${m>0?`\u2191${m} \xB7 `:""}+${y} more`})]})]})}var Kf,Yu,IMt,Jre,QG=J(async()=>{"use strict";await Xd();await p2e();Kf=Ct(qs(),1),Yu=["backlog","refined","active","review","integration","done"],IMt={backlog:"BACKLOG",refined:"REFINED",active:"ACTIVE",review:"REVIEW",integration:"INTEGRATION",done:"DONE"},Jre=8});function Xre(e){return e>=kMt?"wide":"narrow"}function h2e(e){return{columns:e?.columns??DMt,rows:e?.rows??BMt}}function dO(e=!0){let{stdout:t}=zre(),[n,r]=Yre.default.useState(()=>h2e(t));return Yre.default.useEffect(()=>{if(!e||!t||typeof t.on!="function")return;let i=()=>{r(o=>{let s=h2e(t);return s.columns===o.columns&&s.rows===o.rows?o:s})};return t.on("resize",i),i(),()=>{t.off("resize",i)}},[t,e]),n}function OMt(e,t){return e==="narrow"?Math.max(LG,t-2):Math.max(LG,Math.floor(t/Yu.length)-2)}function Zre(e,t){let r=Math.floor((t-(e==="wide"?TMt:xMt))/FMt);return Math.min(Jre,Math.max(1,r))}function NMt(e,t){return e.stages.find(n=>n.lane===t)??{lane:t,cards:[],count:0}}function A2e(e,t){return e.wipCounts.find(n=>n.lane===t)?.count??0}function MMt(e,t){return e.wipCounts.find(n=>n.lane===t)?.wipLimit}function PMt(e,t){return e.metrics.medianCycleTimeByState.series.find(r=>r.lane===t)?.value}function y2e({projection:e,columns:t,rows:n,mode:r,selectedMissionId:i,visibleStarts:o,doneCollapsed:s=!1}){let l=dO(t===void 0||n===void 0),c=t??l.columns,f=n??l.rows,m=r??Xre(c),h=OMt(m,c),y=Zre(m,f);return(0,Ky.jsx)(St,{flexDirection:m==="wide"?"row":"column",flexGrow:1,children:Yu.map(A=>{if(A==="done"&&s){let v=A2e(e,"done");return(0,Ky.jsxs)(St,{flexDirection:"column",width:8,justifyContent:"center",borderColor:"gray",borderStyle:"single",children:[(0,Ky.jsx)(Je,{bold:!0,color:"gray",children:"DONE"}),(0,Ky.jsx)(Je,{color:"gray",children:` \xB7 ${v}`})]},A)}return(0,Ky.jsx)(St,{flexDirection:"column",flexBasis:m==="wide"?0:void 0,flexGrow:m==="wide"?1:0,marginRight:m==="wide"?1:0,marginBottom:m==="wide"?0:1,children:(0,Ky.jsx)(g2e,{stage:NMt(e,A),count:A2e(e,A),wipLimit:MMt(e,A),medianCycleTime:PMt(e,A),medianSampleSize:e.metrics.provenance?.sampleSize??0,width:h,maxVisibleCards:y,selectedMissionId:i,visibleStart:o?.[A]??0})},A)})})}var Yre,Ky,kMt,DMt,BMt,LG,FMt,TMt,xMt,jG=J(async()=>{"use strict";Yre=Ct(Cr(),1);await Xd();await QG();Ky=Ct(qs(),1),kMt=100,DMt=80,BMt=24,LG=12,FMt=6,TMt=12,xMt=8});function $Mt(){return{backlog:0,refined:0,active:0,review:0,integration:0,done:0}}function D_(e,t){return e.stages.find(n=>n.lane===t)?.cards??[]}function v2e(e,t){for(let n of Yu){let r=D_(e,n).findIndex(i=>i.id===t);if(r>=0)return{lane:n,index:r}}return null}function QMt(e,t,n,r){let i=Math.max(1,r),o=Math.max(0,n-i);return t<e?t:t>=e+i?Math.min(o,t-i+1):Math.min(o,e)}function eie(e,t,n,r,i){let o=D_(t,n),s=o[r];return s?{selectedMissionId:s.id,visibleStarts:{...e.visibleStarts,[n]:QMt(e.visibleStarts[n],r,o.length,i)}}:e}function UG(e){let t=Yu.find(n=>D_(e,n).length>0);return{selectedMissionId:t?D_(e,t)[0]?.id??null:null,visibleStarts:$Mt()}}function E2e(e,t,n,r){let i=v2e(t,e.selectedMissionId)??v2e(t,UG(t).selectedMissionId);if(!i)return UG(t);if(n==="up")return eie(e,t,i.lane,Math.max(0,i.index-1),r);if(n==="down"){let l=D_(t,i.lane).length-1;return eie(e,t,i.lane,Math.min(l,i.index+1),r)}let o=n==="left"?-1:1,s=Yu.indexOf(i.lane);for(let l=1;l<Yu.length;l+=1){let c=Yu[(s+o*l+Yu.length)%Yu.length],f=D_(t,c);if(f.length>0)return eie(e,t,c,Math.min(i.index,f.length-1),r)}return e}var w2e=J(async()=>{"use strict";await QG()});function HG(e,t,n){return e==="active:execute"?!!n?.canExecute(e)&&!!t?.commands.some(r=>r.command==="active"&&r.enabled):e==="draft:create"?!!n?.canExecute(e)&&!!t?.commands.some(r=>r.command==="draft"&&r.enabled):e==="mission:cancel"?!!n?.canExecute(e)&&!!t?.commands.some(r=>r.command==="cancel"&&r.enabled):!1}var S2e,b2e=J(async()=>{"use strict";await Xd();y1();S2e=Ct(qs(),1)});function C2e(e,t){return e==="review:submit"?`px review ${t}`:e==="integrate:merge"?`px integrate ${t}`:e==="mission:cancel"?`px cancel ${t} --yes`:`px active ${t}`}function R2e({kind:e,missionId:t}){return e==="mission:cancel"?(0,Zd.jsxs)(St,{flexDirection:"column",borderStyle:"double",borderColor:"red",paddingX:1,children:[(0,Zd.jsx)(Je,{bold:!0,color:"red",children:"CONFIRM DESTRUCTIVE CANCELLATION"}),(0,Zd.jsx)(Je,{children:C2e(e,t)}),(0,Zd.jsx)(Je,{color:"gray",children:`Deletes ${t} lifecycle rows for good. Usage statistics are kept; the branch and worktree stay for you to remove.`}),(0,Zd.jsx)(Je,{color:"gray",children:"Shift+X again: delete \xB7 Escape: dismiss (Enter does nothing)"})]}):(0,Zd.jsxs)(St,{flexDirection:"column",borderStyle:"double",borderColor:"yellow",paddingX:1,children:[(0,Zd.jsx)(Je,{bold:!0,color:"yellow",children:"CONFIRM CONSEQUENTIAL ACTION"}),(0,Zd.jsx)(Je,{children:C2e(e,t)}),(0,Zd.jsx)(Je,{color:"gray",children:"Enter: confirm \xB7 Escape: cancel"})]})}var Zd,I2e=J(async()=>{"use strict";await Xd();Zd=Ct(qs(),1)});function jMt(e){if(e.status==="completed"){let n=e.value;return typeof n?.cleanupCommand=="string"?`Mission cancelled; usage statistics kept. Remove the git side yourself: ${n.cleanupCommand}`:"Command completed; re-query the board for durable state."}let t=e.durableEvidence.length>0?" Durable partial state exists; re-query the board.":"";return`${e.error?.message??"Command did not complete."}${t}`}function _2e({outcome:e}){let t=LMt[e.status];return(0,mO.jsxs)(St,{borderStyle:"single",borderColor:t.color,paddingX:1,children:[(0,mO.jsx)(Je,{color:t.color,bold:!0,children:`${t.icon} ${t.label}: `}),(0,mO.jsx)(Je,{color:t.color,children:jMt(e)})]})}var mO,LMt,k2e=J(async()=>{"use strict";await Xd();mO=Ct(qs(),1),LMt={completed:{icon:"\u2713",color:"green",label:"COMPLETED"},rejected:{icon:"!",color:"yellow",label:"REJECTED"},failed:{icon:"\u2715",color:"red",label:"FAILED"},cancelled:{icon:"\u25CB",color:"yellow",label:"CANCELLED"}}});function Oc(e,t=""){return e==null?"unavailable":`${e}${t}`}function tie(e,t){return`${e} history: ${t}`}function qG(e){return` (n=${e?.observationCount??0})`}function Dp(e,t=""){return`${Oc(e?.value,t)}${qG(e)}`}function D2e(e){let t=e?.value;return`${t==null?"unavailable":t.toFixed(2)}${qG(e)}`}function HMt(e){return e?`Legend: ${Object.keys(e.counts).map(t=>`${t} \u25A0`).join(" \xB7 ")}`:"Legend: unavailable"}function B2e({label:e,metric:t,suffix:n=""}){return(0,vn.jsxs)(St,{flexDirection:"column",children:[(0,vn.jsx)(Je,{bold:!0,children:e}),t.series.map(r=>(0,vn.jsx)(Je,{children:`${r.lane}: ${Oc(r.value,n)}${qG(r)}`},r.lane)),(0,vn.jsx)(Je,{dimColor:!0,children:tie(e,t.missingHistoryFallback)})]})}function qMt({metrics:e,narrow:t}){let n=e.decisionWindow;if(!n)return(0,vn.jsxs)(St,{flexDirection:"column",children:[(0,vn.jsx)(Je,{bold:!0,children:"DECISION WINDOW \xB7 completed missions"}),(0,vn.jsx)(Je,{dimColor:!0,children:"Decision window unavailable: this projection predates rolling-window statistics."})]});let r=[["Completed missions",`n=${n.current.completedMissions}`,`n=${n.previous.completedMissions}`],["Lifecycle cycle median",Dp(n.current.cycleTime," min"),Dp(n.previous.cycleTime," min")],["Agent runtime median",Dp(n.current.agentRuntime," min"),Dp(n.previous.agentRuntime," min")],["Active dwell median",Dp(n.current.activeDwell," min"),Dp(n.previous.activeDwell," min")],["Review dwell median",Dp(n.current.reviewDwell," min"),Dp(n.previous.reviewDwell," min")],["Integration dwell median",Dp(n.current.integrationDwell," min"),Dp(n.previous.integrationDwell," min")],["Review bounce rate",D2e(n.current.reviewBounce),D2e(n.previous.reviewBounce)]];return(0,vn.jsxs)(St,{flexDirection:"column",children:[(0,vn.jsx)(Je,{bold:!0,children:"DECISION WINDOW \xB7 completed missions"}),(0,vn.jsx)(Je,{children:`current ${n.current.label}`}),(0,vn.jsx)(Je,{dimColor:!0,children:`previous ${n.previous.label}`}),r.map(([i,o,s])=>(0,vn.jsx)(Je,{children:t?`${i}: ${o} \xB7 previous ${s}`:`${i.padEnd(25)}${o.padEnd(20)}${s}`},i))]})}function GMt({metrics:e}){let t=e.cohorts;if(!t||t.cohorts.length===0)return null;let n=e.decisionWindow?.current;return(0,vn.jsxs)(St,{flexDirection:"column",marginTop:1,children:[(0,vn.jsx)(Je,{bold:!0,children:`EXPERIMENT COHORTS \xB7 ${t.dimension}${n?` \xB7 ${n.label}`:""}`}),t.cohorts.map(r=>(0,vn.jsxs)(St,{flexDirection:"column",children:[(0,vn.jsx)(Je,{children:`${r.key}${r.lowSample?" \xB7 low-sample":""} \xB7 population n=${r.n}`}),(0,vn.jsx)(Je,{dimColor:!0,children:`cycle median ${Oc(r.medianCycleTimeMinutes," min")} (n=${r.observationCounts.cycleTime}) \xB7 p75 ${Oc(r.p75CycleTimeMinutes," min")} (n=${r.observationCounts.cycleTime})`}),(0,vn.jsx)(Je,{dimColor:!0,children:`active ${Oc(r.medianActiveDwellMinutes," min")} (n=${r.observationCounts.activeDwell}) \xB7 review ${Oc(r.medianReviewDwellMinutes," min")} (n=${r.observationCounts.reviewDwell}) \xB7 bounces ${Oc(r.reviewBounceRate)} (n=${r.observationCounts.reviewBounce})`}),(0,vn.jsx)(Je,{dimColor:!0,children:`fix rounds ${Oc(r.medianReviewFixRounds)} (n=${r.observationCounts.reviewFixRounds}) \xB7 runtime ${Oc(r.agentRuntimeMinutesPerMission," min")} (n=${r.observationCounts.runtime}) \xB7 tokens ${Oc(r.tokensPerMission)} (n=${r.observationCounts.tokens})`}),(0,vn.jsx)(Je,{dimColor:!0,children:`cost ${Oc(r.costUsdPerMission," USD")} (n=${r.observationCounts.cost}) \xB7 NEL ${Oc(r.netEngineeringLinesPerMission)} (n=${r.observationCounts.netEngineeringLines})`})]},r.key))]})}function F2e({metrics:e,columns:t}){let n=dO(),i=(t??n.columns)<UMt,o=e.cumulativeFlowByState.series.at(-1),s=e.reviewBounceRate.series.at(-1),l=e.provenance?.sampleSize??0,c=e.health?.state??"no-telemetry",f=e.decisionWindow?.current.label;return(0,vn.jsxs)(St,{flexDirection:"column",marginTop:1,children:[(0,vn.jsx)(Je,{bold:!0,color:"cyan",children:`FLOW${i?" \xB7 textual":""}${f?` \xB7 decision window ${f}`:""}`}),(0,vn.jsx)(Je,{color:c==="unavailable"?"red":c==="partial"?"yellow":"gray",children:`Statistics: ${c} \xB7 population n=${l} (all recorded history, not the decision sample)`}),(0,vn.jsxs)(St,{flexDirection:i?"column":"row",children:[(0,vn.jsxs)(St,{flexDirection:"column",marginRight:i?0:4,children:[(0,vn.jsx)(qMt,{metrics:e,narrow:i}),(0,vn.jsx)(Je,{children:`Lifecycle review-bounce rate: ${Oc(s?.value)}${qG(s)}`}),(0,vn.jsx)(Je,{dimColor:!0,children:tie("Lifecycle review-bounce rate",e.reviewBounceRate.missingHistoryFallback)})]}),(0,vn.jsxs)(St,{flexDirection:"column",marginRight:i?0:4,children:[(0,vn.jsx)(B2e,{label:"Median cycle time",metric:e.medianCycleTimeByState,suffix:" min"}),(0,vn.jsx)(Je,{bold:!0,color:"cyan",children:"CURRENT FLOW \xB7 state now"}),(0,vn.jsx)(B2e,{label:"Median lane age",metric:e.medianAgeByLane,suffix:" min"})]}),(0,vn.jsxs)(St,{flexDirection:"column",children:[(0,vn.jsx)(Je,{bold:!0,children:"CUMULATIVE FLOW"}),(0,vn.jsx)(Je,{children:o?Object.entries(o.counts).map(([m,h])=>`${m} ${h}`).join(" \xB7 "):"unavailable"}),(0,vn.jsx)(Je,{dimColor:!0,children:tie("Cumulative flow",e.cumulativeFlowByState.missingHistoryFallback)}),(0,vn.jsx)(Je,{dimColor:!0,children:HMt(o)}),(0,vn.jsx)(Je,{bold:!0,children:"READ"}),(0,vn.jsx)(Je,{color:"yellow",children:e.bottleneck.sentence}),(0,vn.jsx)(Je,{bold:!0,children:"Agents"}),e.agentAvailability.length===0?(0,vn.jsx)(Je,{children:"unavailable"}):e.agentAvailability.map(m=>(0,vn.jsx)(Je,{children:`${m.family} ${m.available?"available":"unavailable"}`},m.family))]})]}),(0,vn.jsx)(GMt,{metrics:e})]})}var vn,UMt,T2e=J(async()=>{"use strict";await Xd();await jG();vn=Ct(qs(),1),UMt=80});function zMt(e){return e?e.startsWith("parsed: ")?"usage limit reached":e:null}function x2e({agentAvailability:e,unattributedRunningSessions:t,missionActivity:n}){let r=n===void 0?null:Wme(zme(n));return e.length===0?(0,iu.jsx)(St,{marginBottom:1,children:(0,iu.jsx)(Je,{color:"gray",children:"agents: unavailable"})}):(0,iu.jsxs)(St,{flexDirection:"row",justifyContent:"flex-start",marginBottom:1,children:[r!==null&&(0,iu.jsx)(St,{marginRight:3,children:(0,iu.jsx)(Je,{dimColor:!0,children:r})}),e.map(i=>{let o=i.available?"green":"red",s=!i.available&&i.blockedForMs>0?OH(i.blockedForMs):"",l=i.available?"":zMt(i.reason);return(0,iu.jsxs)(St,{marginRight:3,children:[(0,iu.jsx)(Je,{color:o,children:"\u25CF"}),(0,iu.jsx)(Je,{color:"gray",children:` ${i.family}`}),s&&(0,iu.jsx)(Je,{dimColor:!0,color:"yellow",children:` ${s} \xB7`}),(0,iu.jsx)(Je,{dimColor:!0,children:` ${b6(i.runningSessions)}`}),l&&(0,iu.jsx)(Je,{dimColor:!0,color:"red",children:` ${l}`})]},i.family)}),typeof t=="number"&&t>0&&(0,iu.jsx)(St,{children:(0,iu.jsx)(Je,{dimColor:!0,children:`${b6(t)} \xB7 family unknown`})})]})}var iu,O2e=J(async()=>{"use strict";await Xd();sR();Mee();iu=Ct(qs(),1)});function WMt(e){switch(e.kind){case"blocking":return e.detail||"mission is blocked";case"gate-failed":return e.detail||"verification gate failed";case"review-lane":return e.detail||"awaiting review decision";case"integrate-lane":return e.detail||"awaiting integration";case"orphaned-active":return e.detail||"active mission has no live work";default:return e.detail||""}}function VMt(e,t,n){if(n)return n.display;switch(t.kind){case"integrate-lane":return`px integrate ${e.id}`;case"review-lane":return`px review ${e.id}`;case"gate-failed":case"blocking":return`px active ${e.id}`;default:return`px ${e.lane} ${e.id}`}}function iie({projection:e,columns:t,rows:n,initialSelectedMissionId:r,commandControllerFactory:i,refreshProjection:o,subscribeProjection:s,initialFlowOpen:l=!1}){let{exit:c}=Gre(),f=e,m=Yo.default.useRef(f),[,h]=Yo.default.useReducer(Ee=>Ee+1,0);Yo.default.useEffect(()=>{m.current=f,h()},[f]),Yo.default.useEffect(()=>s?.(Ee=>{m.current=Ee,h()}),[s]),e=m.current;let y=dO(),A=t??y.columns,v=n??y.rows,S=Xre(A),b=Yu.length*LG+(Yu.length-1)+2,C=A>=nie+b,k=C?Math.max(1,A-nie-2):A,B=e.sourceFacts.some(Ee=>Ee.status==="stale"),D=e.sourceFacts.some(Ee=>Ee.status==="unavailable"),T=e.inFlightWip,$=e.attentionQueue.filter(Ee=>Ee.reason.kind!=="none").length,Q=Zre(S,v),[M,j]=Yo.default.useState(()=>{let Ee=UG(e);return r&&e.stages.some($e=>$e.cards.some(Pe=>Pe.id===r))?{...Ee,selectedMissionId:r}:Ee}),[G,Z]=Yo.default.useState(!1),[te,z]=Yo.default.useState(l),[Y,K]=Yo.default.useState(0),[oe,Ae]=Yo.default.useState(null),[ge,Re]=Yo.default.useState(null),[Ye,he]=Yo.default.useState([]),je=Yo.default.useRef(null),[re,xe]=Yo.default.useState("board"),[We,He]=Yo.default.useState(!1),ee=Yo.default.useMemo(()=>i?.(Ee=>{he($e=>[...$e,Ee].sort((Pe,xt)=>Pe.sequence-xt.sequence))}),[i]),pe=(Ee,$e)=>{if(Re(null),!ee?.canExecute(Ee))return Re(ca(Ee,My(Ee)??"no Mission authority is configured for this interface")),!1;if(!HG(Ee,$e,ee))return Re(ca(Ee,"Mission cannot be activated from its current state")),!1;let Pe={kind:Ee,mission:$e};return je.current=Pe,Ae(Pe),!0},ye=Ee=>{let $e=e.stages.flatMap(Pe=>Pe.cards).find(Pe=>Pe.id===Ee)??null;return $e?pe("active:execute",$e):!1},Se=Ee=>{if(!M.selectedMissionId)return!1;let $e=e.stages.flatMap(Pe=>Pe.cards).find(Pe=>Pe.id===M.selectedMissionId)??null;if(!$e)return!1;if(ee?.canExecute(Ee))return pe(Ee,$e);{let Pe=My(Ee)??`${Ee} is not yet available`;return Re(ca(Ee,Pe)),!1}},Le=async()=>{let Ee=je.current;if(!Ee||!ee)return;let $e=Ee.kind,Pe={operationId:`board-${Date.now()}`,kind:$e,missionId:Ee.mission.id,missionStatusAtRequest:Ee.mission.status,agent:Ee.mission.agent,capabilities:new Set([$e]),cancellation:{requested:!1}};je.current=null,Ae(null);let xt=await ee.dispatch(Pe);if(Re(xt),$e==="mission:cancel"&&xt.status==="completed"&&o){m.current=await o(),h();return}if(xt.error?.kind==="conflict"&&o){let tt=(await o()).stages.flatMap(Ot=>Ot.cards).find(Ot=>Ot.id===Ee.mission.id)??Ee.mission,Wt={kind:$e,mission:tt};je.current=Wt,Ae(Wt)}},Oe=e.attentionQueue.filter(Ee=>Ee.reason.kind!=="none");Yo.default.useEffect(()=>{if(!M.selectedMissionId||Oe.length===0)return;let Ee=Oe.findIndex($e=>$e.missionId===M.selectedMissionId);Ee>=0&&K(Ee)},[M.selectedMissionId]);let Ve=Yo.default.useMemo(()=>{let Ee=new Map;for(let $e of e.sourceFacts)Ee.set($e.source,$e.status);return Ee},[e.sourceFacts]);return(0,qt.jsxs)(St,{flexDirection:"column",flexGrow:1,children:[(0,qt.jsxs)(St,{flexDirection:"row",borderBottomColor:"gray",paddingBottom:0,paddingRight:0,paddingLeft:0,justifyContent:"space-between",children:[(0,qt.jsxs)(St,{children:[(0,qt.jsx)(Je,{bold:!0,color:"green",children:"px board"}),(0,qt.jsx)(Je,{color:"gray",children:` ${e.repositoryId}`}),(0,qt.jsx)(Je,{color:"gray",children:` wip ${T}`}),(0,qt.jsx)(Je,{color:"gray",children:" \xB7 attention "}),(0,qt.jsx)(Je,{color:"yellow",children:String($)})]}),(0,qt.jsxs)(St,{children:[(B||D)&&(0,qt.jsxs)(Je,{color:"yellow",children:[B?"\u26A0 stale":"",B&&D?" \xB7 ":"",D?"\u26A0 unavailable":""," "]}),(0,qt.jsx)(Je,{color:te?"cyan":"gray",children:te?"\u25A4 FLOW":"\u25A5 FLOW"})]})]}),te&&(0,qt.jsx)(F2e,{metrics:e.metrics,columns:A}),(0,qt.jsx)(x2e,{agentAvailability:e.metrics.agentAvailability,unattributedRunningSessions:e.metrics.unattributedRunningSessions,missionActivity:e.stages.flatMap(Ee=>Ee.cards).map(oR)}),(0,qt.jsxs)(St,{flexDirection:C?"row":"column",flexGrow:1,minHeight:15,children:[(0,qt.jsxs)(St,{flexDirection:"column",width:C?nie:void 0,borderStyle:"single",borderColor:"gray",paddingX:1,children:[(0,qt.jsxs)(St,{flexDirection:"row",paddingTop:1,children:[(0,qt.jsx)(Je,{bold:!0,color:"yellow",children:"\u25B2 NEEDS YOU NEXT"}),(0,qt.jsxs)(Je,{color:"gray",children:[" ",$]})]}),(0,qt.jsx)(St,{flexDirection:"column",flexGrow:1,paddingTop:1,children:(0,qt.jsx)(KMt,{queue:e.attentionQueue,selectedMissionId:M.selectedMissionId,focusedIndex:re==="rail"?Y:-1,sourceStatusMap:Ve,commandController:ee})}),(0,qt.jsx)(St,{paddingTop:1,children:(0,qt.jsx)(Je,{wrap:"end",dimColor:!0,children:"ranked: integrate>review>active"})})]}),(0,qt.jsx)(St,{flexDirection:"column",flexGrow:1,paddingX:1,children:(0,qt.jsx)(y2e,{projection:e,mode:S,columns:k,rows:v,selectedMissionId:M.selectedMissionId,visibleStarts:M.visibleStarts,doneCollapsed:We})})]}),oe&&(0,qt.jsx)(R2e,{kind:oe.kind,missionId:oe.mission.id}),ge&&(0,qt.jsx)(_2e,{outcome:ge}),(0,qt.jsxs)(St,{flexDirection:"column",borderTopColor:"gray",paddingTop:1,minHeight:3,children:[[...e.operationLog,...Ye].length>0?[...e.operationLog,...Ye].slice(-4).map((Ee,$e)=>(0,qt.jsx)(St,{children:(0,qt.jsx)(Je,{dimColor:!0,children:XMt(Ee)})},$e)):(0,qt.jsx)(Je,{dimColor:!0,children:"no recent operations"}),(0,qt.jsxs)(St,{children:[(0,qt.jsx)(Je,{color:"gray",children:"$ "}),(0,qt.jsx)(Je,{bold:!0,color:"green",children:"\u258C"})]}),(0,qt.jsx)(Je,{color:"gray",children:G?"arrows/WASD: move \xB7 Enter: execute \xB7 Ctrl+D/A/R: lifecycle \xB7 Shift+X: cancel \xB7 Shift+S: done \xB7 f: FLOW \xB7 ?: hide help \xB7 q/Ctrl+C: quit":"arrows/WASD: move \xB7 Enter: execute \xB7 Ctrl+D/A/R: lifecycle \xB7 Shift+X: cancel \xB7 Shift+S: done \xB7 f: FLOW \xB7 ?: help \xB7 q: quit"})]}),(0,qt.jsx)(ePt,{onExit:()=>c(0),onNavigate:Ee=>{Ee!=="self"&&j($e=>E2e($e,e,Ee,Q))},onToggleHelp:()=>Z(Ee=>!Ee),onToggleFlow:()=>z(Ee=>!Ee),onToggleDone:()=>He(Ee=>!Ee),onEnterAttention:Ee=>{j($e=>({...$e,selectedMissionId:Ee.missionId})),pe(Ee.action.kind,Ee.card)},onStartAction:ye,selectedMissionId:M.selectedMissionId,onConfirm:()=>{Le()},onCancel:()=>{je.current=null,Ae(null),Re(MH("cancelled before dispatch"))},onLifecycle:Se,queueItems:Oe,focusedAttentionIndex:Y,setFocusedIdx:K,focusedArea:re,setFocusedArea:xe})]})}function KMt({queue:e,selectedMissionId:t,focusedIndex:n,sourceStatusMap:r,commandController:i}){let o=e.filter(s=>s.reason.kind!=="none");return o.length===0?(0,qt.jsx)(Je,{dimColor:!0,children:"nothing needs attention"}):(0,qt.jsxs)(St,{flexDirection:"column",children:[o.slice(0,5).map((s,l)=>{let c=s.missionId===t,f=l===n,m=JMt(s,r);return(0,qt.jsxs)(St,{flexDirection:"column",marginBottom:1,children:[(0,qt.jsxs)(St,{children:[(0,qt.jsx)(Je,{color:f&&!c||c?"cyan":"gray",children:f&&!c?"\u258C ":c?"\u25B6 ":" "}),(0,qt.jsx)(Je,{color:"gray",children:String(l+1).padStart(2,"0")}),(0,qt.jsx)(Je,{bold:!0,color:"blue",children:` ${s.card.id}`})]}),(0,qt.jsxs)(St,{children:[(0,qt.jsx)(Je,{color:YMt(s.reason.kind),children:` [${s.reason.kind}]`}),m&&(0,qt.jsx)(Je,{color:"yellow",children:" "+m})]}),(0,qt.jsx)(St,{children:(0,qt.jsx)(Je,{wrap:"end",dimColor:!0,children:WMt(s.reason)})}),(0,qt.jsx)(St,{children:(0,qt.jsx)(Je,{wrap:"end",color:"gray",children:`$ ${VMt(s.card,s.reason,s.action)}`})}),(0,qt.jsx)(St,{children:(0,qt.jsx)(Je,{color:HG(s.action.kind,s.card,i)?"green":"gray",children:HG(s.action.kind,s.card,i)?" run \u25B6":" unavailable"})})]},s.missionId)}),o.length>5&&(0,qt.jsx)(Je,{dimColor:!0,children:`+${o.length-5} more`})]})}function JMt(e,t){for(let n of e.dependsOnSources){let r=t.get(n);if(r==="unavailable")return`\u26A0 ${n} unavailable`;if(r==="stale")return`\u26A0 ${n} stale`}return null}function YMt(e){switch(e){case"blocking":return"red";case"gate-failed":return"yellow";case"review-lane":return"blue";case"integrate-lane":return"green";case"orphaned-active":return"yellow";default:return"yellow"}}function XMt(e){let t=e.agent?` [${e.agent}]`:"";return`${e.timestamp} ${e.phase}${t} ${e.message}`}function ZMt(e,t){if(t.upArrow)return"up";if(t.downArrow)return"down";if(t.leftArrow)return"left";if(t.rightArrow)return"right";if(!(t.ctrl||t.meta))return{w:"up",a:"left",s:"down",d:"right"}[e]}function rie(e,t){return(e==="\r"||e===`
|
|
1200
|
-
`||t.return)&&!t.ctrl&&!t.meta}function ePt({onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItems:h,focusedAttentionIndex:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S}){let b=Yo.default.useRef({onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItemsList:h,focusedIdx:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S});b.current={onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItemsList:h,focusedIdx:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S};let C=Yo.default.useRef(!1),k=Yo.default.useRef(!1);return qre(Yo.default.useCallback((B,D)=>{let{onExit:T,onNavigate:$,onToggleHelp:Q,onToggleFlow:M,onToggleDone:j,onEnterAttention:G,onStartAction:Z,selectedMissionId:te,onConfirm:z,onCancel:Y,onLifecycle:K,queueItemsList:oe,focusedIdx:Ae,setFocusedIdx:ge,focusedArea:Re,setFocusedArea:Ye}=b.current;if(B==="q"&&!D.ctrl&&!D.meta||B==="c"&&D.ctrl){T();return}if(k.current){B==="X"&&!D.ctrl&&!D.meta&&(k.current=!1,z()),D.escape&&(k.current=!1,Y());return}if(C.current){rie(B,D)&&(C.current=!1,z()),D.escape&&(C.current=!1,Y());return}let he=ZMt(B,D);if(he){if(Re==="rail"&&oe.length>0){if(D.upArrow||B==="w"){ge(je=>Math.max(0,je-1));return}if(D.downArrow||B==="s"){ge(je=>Math.min(oe.length-1,je+1));return}}if(Re==="board"){$(he);return}if(D.leftArrow||D.rightArrow||B==="a"||B==="d"){$(he);return}return}if(B==="?"&&!D.ctrl&&!D.meta){Q();return}if((B==="f"||B==="F")&&!D.ctrl&&!D.meta){M();return}if((D.ctrl||["","",""].includes(B))&&!D.meta&&te){let re={d:"draft:create",a:"active:execute",r:"review:submit"}[{"":"d","":"a","":"r"}[B]??B];if(re){C.current=K(re);return}}if(B==="X"&&!D.ctrl&&!D.meta&&te){k.current=K("mission:cancel");return}if(B==="S"&&!D.ctrl&&!D.meta){j();return}if(D.tab&&!D.ctrl&&!D.meta){Ye(je=>je==="rail"?"board":"rail");return}if(rie(B,D)&&Re==="rail"){let je=oe[Ae];je&&($("self"),G(je));return}rie(B,D)&&Re==="board"&&te&&(C.current=Z(te))},[])),(0,qt.jsx)(qt.Fragment,{})}var Yo,qt,nie,N2e=J(async()=>{"use strict";Yo=Ct(Cr(),1);await Xd();y1();sR();await jG();await QG();await w2e();await jG();await b2e();await I2e();await k2e();await T2e();await O2e();qt=Ct(qs(),1),nie=34});var M2e={};ni(M2e,{runUiCommand:()=>tPt});async function tPt(e,t=[]){let n=null,r=!1,i=()=>{},o=()=>{r||process.on("SIGINT",i),r=!0,n?.unmount()};process.on("SIGINT",o);try{let s=await e.boardProjection.build(),l=()=>e.boardProjection.build();if(!process.stdin.isTTY&&!process.stdout.isTTY)return process.stdout.write(jre(oie.default.createElement(iie,{projection:s,commandControllerFactory:e.commandControllerFactory,refreshProjection:l}))),0;if(r)return 0;n=Lre(oie.default.createElement(iie,{projection:s,commandControllerFactory:e.commandControllerFactory,refreshProjection:l,subscribeProjection:f=>NH(()=>e.boardProjection.build(),f,{displayedCountdown:!0})}),{exitOnCtrlC:!0}),r&&n.unmount();let c=await n.waitUntilExit();return typeof c=="number"?c:0}finally{process.removeListener("SIGINT",o)}}var oie,P2e=J(async()=>{"use strict";oie=Ct(Cr(),1);await Xd();await N2e();Pee()});Ft();AD();import $2e from"node:fs";import pO from"node:path";import{fileURLToPath as nPt}from"node:url";var yD={name:"@magnusekdahl/parallix",version:"1.5.125",description:"Trust ladder for AI coding work \u2014 separate review, configured verification, conditional Linux confinement, and human-owned merges",license:"AGPL-3.0-or-later",private:!1,type:"module",bin:{px:"build/px.mjs"},engines:{node:">=22.23.1"},publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/oxtan-maker/parallix.git"},keywords:["parallix","workflow","ai","coding-agents","multi-agent","mission","cli"],bugs:{url:"https://github.com/oxtan-maker/parallix/issues"},homepage:"https://github.com/oxtan-maker/parallix#readme",files:["NOTICES","build/","!build/sea","LICENSE","README.md"],scripts:{build:"npm run bundle","build:web":"vite build --config web/vite.config.ts",bundle:"tsx scripts/build-canonical-bundle.ts",dev:"tsx src/entry/px.ts","dev:web":"vite --config web/vite.config.ts",prepack:"npm run build",prepublishOnly:"npm run test:package-content && npm audit --omit=dev",test:"FORCE_COLOR=0 tsx test/run-default-tests.ts","test:integration":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration","test:integration:ci":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration-ci","test:integration:local":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration-local","test:agent-e2e":"node --import tsx test/e2e-real-agent-smoke.test.ts","test:lifecycle-e2e":"node --import tsx test/e2e-mission-lifecycle.test.ts","test:ci":"npm run typecheck && npm run build && npm test && npm run test:integration:ci && npm run test:bundle && npm run test:package-content","test:package-content":"tsx scripts/package-content-audit.ts","test:codeql":"bash scripts/codeql-sast.sh","test:reproducible-output":"tsx scripts/verify-reproducible-build.ts","test:coverage":"FORCE_COLOR=0 tsx src/adapters/verification/coverage-gate.ts --lcov",typecheck:"tsc --noEmit && tsc --noEmit --project tsconfig.scripts.json","test:bundle":"node --enable-source-maps build/px.mjs --version","release:publish":"tsx scripts/release-publish.ts","benchmark:runtime":"tsx scripts/benchmark-runtime.ts"},peerDependencies:{"@earendil-works/pi-coding-agent":"^0.80.6"},peerDependenciesMeta:{"@earendil-works/pi-coding-agent":{optional:!0}},devDependencies:{"@earendil-works/pi-coding-agent":"^0.80.6","@types/node":"^26.0.1","@types/react":"^19.2.14","@typescript-eslint/eslint-plugin":"^8.62.1","@typescript-eslint/parser":"^8.62.1",esbuild:"^0.25.12",eslint:"^9.39.4","fast-uri":"^3.1.6",fastify:"^5.12.1","happy-dom":"^20.14.5",ink:"^6.8.0",postject:"^1.0.0-alpha.6",react:"^19.2.3","react-dom":"^19.2.8","sonarqube-scanner":"^5.0.0",tsx:"4.20.6",typescript:"^5.9.3",vite:"^7.3.6"}};Fr();gE();kQ();function Qze(e){let t=e.filter(i=>!i.startsWith("--")),n=e.indexOf("--implementer"),r=n===-1?void 0:e[n+1];return{args:[...e],explicitSlug:t[0],implementer:r}}function yme(e){return async(t,n={})=>{await e(Qze(t),n)}}Jr();Dc();pF();sw();async function vme(e){let t=await e.store.load(e.missionId);if(t.kind!=="found")return Rt("unavailable",`Mission ${e.missionId} is unavailable for lifecycle recovery`);let n=e.taskStatus??"unavailable",r=t.mission.status;if(n==="active"&&r==="active"&&e.alreadyMerged&&await e.alreadyMerged())return Hi({taskStatus:n,aggregateStatus:r,action:"refused-integrated",recovered:null});if(n!=="active"||r!=="done")return Hi({taskStatus:n,aggregateStatus:r,action:"none",recovered:null});if(!e.store.findTransitions)return Rt("unavailable",`Lifecycle conflict: task ${n}, aggregate ${r}. Recovery history is unavailable.`);if((await e.store.findTransitions(e.missionId)).some(({trigger:s})=>s==="integrate"))return Hi({taskStatus:n,aggregateStatus:r,action:"refused-integrated",recovered:null});let o={...t.mission,status:"active",closedAt:null};try{await e.store.saveWithTransition(o,t.version,ow({mission:o,from:"done",trigger:"recover-active",agent:e.actor,occurredAt:e.occurredAt}))}catch(s){return Vl(s)}return Hi({taskStatus:n,aggregateStatus:r,action:"recover-to-active",recovered:o})}Ft();async function Eme(e,t){let n=e[0];if(!n)return(t.error??P.fail)("Usage: px recover <slug>"),!1;let r=await vme({missionId:pt(n.toLowerCase()),taskStatus:t.taskStatus(n),actor:"operator",occurredAt:new Date().toISOString(),store:t.store,alreadyMerged:t.alreadyMerged?()=>t.alreadyMerged(n):void 0});if(r.status!=="completed"||!r.value)return(t.error??P.fail)(r.error?.message??"Lifecycle recovery failed."),!1;let{taskStatus:i,aggregateStatus:o,action:s}=r.value;return(t.log??P.info)(`Lifecycle states: task ${i}; aggregate ${o}.`),s==="recover-to-active"?((t.log??P.info)("Recovery action: resumed active mission lifecycle."),!0):s==="refused-integrated"?t.cleanup&&!t.cleanup(n)?((t.error??P.fail)(`Recovery halted: landed mission cleanup failed; retry px recover ${n} after resolving the worktree.`),!1):((t.error??P.fail)("Recovery refused: durable integration history keeps this mission closed."),!1):((t.log??P.info)("Recovery action: none required."),!0)}vE();SA();Sg();qM();import jze from"node:fs";import Uze from"node:path";var a6=Object.freeze(["draft","active","review"]);function Hze(){let e=vg.readText(Go),t=JSON.parse(e);return t&&typeof t=="object"?t:{steps:{}}}function qze(e){let t={},n=wd.filter(r=>{try{return rs(r,e).supported}catch{return!1}});for(let r of a6)t[r]=n.slice();return t}function Gze(e){let t=Hze(),n=t.steps&&typeof t.steps=="object"?t.steps:{},r={};for(let[i,o]of Object.entries(t))i!=="steps"&&(r[i]=o);r.steps={};for(let i of a6){let o=n[i]&&typeof n[i]=="object"?n[i]:{};r.steps[i]={...o,eligible:e[i]||[]}}return r}function BQ(e={}){let t=e.rootDir??process.cwd(),n=e.worktree,r=Uze.join(t,Go),i=jze.existsSync(r),o=qze(n),s=a6.some(c=>(o[c]||[]).length>0);if(i&&!e.force)return{written:!1,configPath:r,eligibleByStep:o};if(!s)return{written:!1,configPath:r,eligibleByStep:o,emptyDetection:!0};let l=Gze(o);return IA(r,l),{written:!0,configPath:r,eligibleByStep:o}}lo();oF();SQ();Ft();Fr();Sg();function zze(e){return e.includes("--write")}async function Wze(e=[],t={}){let n=t.logFn||P.plain,r=t.errorFn||P.plainError,i=t.exitFn||(l=>{process.exitCode=l}),o=t.rootDir||process.cwd();if(zze(e)){if(!qb(o)){r(x("FAIL","px config --write requires a repository root. Run it from a git checkout.")),i(1);return}let l=BQ({rootDir:o,worktree:o,force:!0});l.written?n(x("INFO",`Wrote ${l.configPath} with availability-filtered eligible agents.`)):l.emptyDetection?n(x("WARN",`No agent families are available on this host; left ${Go} unchanged and falling back to the shipped default. Install a launcher or set WORKFLOW_AGENT=<name>.`)):n(x("INFO",`Working-tree ${Go} already exists \u2014 left unchanged (user edits win).`)),n(`Integration mode: ${Hb(o)}`),n(JSON.stringify(Xa(o),null,2));return}let s=Ag(o);if(!s.found)n(x("INFO","No workflow.config.json found \u2014 showing built-in defaults.")),n(`Integration mode: ${Hb(o)}`);else if(s.parseError){r(x("FAIL",`workflow.config.json is invalid JSON (${s.parseError.message}); showing fallback built-in defaults.`)),n(JSON.stringify(Xa(o),null,2)),i(1);return}else{let l=ED(s.config);if(l.length>0){r(x("FAIL",`workflow.config.json is structurally invalid: ${l.join("; ")}; showing fallback built-in defaults.`)),n(JSON.stringify(Xa(o),null,2)),i(1);return}n(x("INFO",`Effective config (built-in defaults + ${s.configPath}):`)),n(`Integration mode: ${Hb(o)}`)}n(JSON.stringify(Xa(o),null,2))}var wme=Wze;function Vze(e){return{args:[...e]}}function Sme(e){return async(t=[],n={})=>{await e(Vze(t),n)}}ir();Vn();Ft();import Kze from"node:child_process";import Jze from"node:path";async function Yze(e,{gitFn:t=Ne,spawnSyncFn:n=Kze.spawnSync,getPrimaryBranchFn:r=In,missionBranchNameFn:i=Rn,inferSlugFn:o=ks,resolveWorktreeFn:s=Nt,exitFn:l=process.exit,failFn:c=P.fail}={}){let f=e.filter(T=>!T.startsWith("--"))[0],m=o(f);if(!m){c("Usage: node parallix diff [<slug>]"),l(1);return}let h=s(m);if(!h){c(`Mission worktree not found for ${vt(m)}. Run this from the mission worktree or create it first.`),l(1);return}let y;try{y=r(h)}catch(T){c(T.message),l(1);return}let A=i(m),v=`${y}..HEAD`,S=T=>{let $=t(["-C",h,"config","--get",T]);return $.status===0?$.stdout.trim():null},b=T=>{if(!T)return!1;let Q=T.split(/\s+/).find(j=>!j.includes("="));if(!Q)return!1;let M=Jze.basename(Q).toLowerCase();return["less","cat","more"].includes(M)?!1:(["delta","difft","diff-so-fancy"].includes(M),!0)},C=(T,$)=>{if(T.error){c(`Failed to launch ${$}: ${T.error.message}`),l(1);return}if(T.signal){c(`${$} terminated by signal: ${T.signal}`),l(1);return}if(T.status===null){c(`${$} exited with unknown status.`),l(1);return}l(T.status)},k=S("diff.tool");if(k){P.info(`Launching ${Vt("git difftool")} for ${Zt(A)} (tool: ${Cn(k)})...`);let T=n("git",["difftool","-d","--no-prompt",v],{cwd:h,stdio:"inherit"});C(T,"git difftool");return}let B=S("pager.diff");if(b(B||"")){P.info(`Launching ${Vt("git diff")} for ${Zt(A)} (pager: ${Cn(B||"")})...`);let T=n("git",["diff",v],{cwd:h,stdio:"inherit"});C(T,"git diff");return}let D=S("core.pager");if(b(D||"")){P.info(`Launching ${Vt("git diff")} for ${Zt(A)} (core.pager: ${Cn(D||"")})...`);let T=n("git",["diff",v],{cwd:h,stdio:"inherit"});C(T,"git diff");return}c("No specialized local diff tool (e.g., delta, difftastic) is configured in Git."),P.info("The workflow diff command requires an explicitly configured diff.tool or a non-default core.pager."),P.info(`Refer to ${st("docs/developer-setup/review-tooling.md")} for setup guidance.`),l(1)}var bme=Yze;function Xze(e){return{args:[...e],explicitSlug:e.find(t=>!t.startsWith("--"))}}function Cme(e){return async(t,n={})=>{await e(Xze(t),n)}}E6();JC();cF();xQ();Jr();zA();import{randomUUID as pWe}from"node:crypto";var iR=class{constructor(t,n=Sf,r=()=>null){this._workflow=t;this._currentWork=n;this._inferSlug=r}async execute(t,n={}){let r=t.find(o=>!o.startsWith("-"))??this._inferSlug();if(!r)return this._workflow.execute(t,n);let i={missionId:pt(r),operationId:`integrate:${r}:${pWe()}`,phase:"integrate",summary:`px integrate ${r}`,agent:null};await Nme(()=>this._currentWork.running(i));try{return await this._workflow.execute(t,n)}finally{await Nme(()=>this._currentWork.ended(i))}}executeForSlug(t){return this.execute([t],{})}};async function Nme(e){try{await e()}catch(t){}}Jr();zA();import{randomUUID as gWe}from"node:crypto";var hWe={start:"review",continue:"review",submit:"review",submitReview:"review",consumeArtifacts:"review-response"},YQ=class{constructor(t,n=Sf){this._workflow=t;this._currentWork=n}async execute(t,n={}){let r=await this._workflow.preflight(t,n);r&&await this.dispatch(r)}async dispatch(t){let n=new Set(t.args.filter(r=>r.startsWith("--")).map(r=>r.split("=",1)[0]));return n.has("--status")?this.run(t,"status"):n.has("--verify")?this.run(t,"verify"):n.has("--submit")?this.run(t,"submit"):n.has("--consume-artifacts")?this.run(t,"consumeArtifacts"):n.has("--push")?this.run(t,"push"):n.has("--comments")?this.run(t,"readComments"):n.has("--comment")||n.has("--comment-file")?this.run(t,"comment"):n.has("--submit-review")?this.run(t,"submitReview"):n.has("--close")?this.run(t,"close"):n.has("--create-event")?this.run(t,"createEvent"):n.has("--import-legacy")?this.run(t,"importLegacy"):n.has("--backfill-review")?this.run(t,"backfillReview"):n.has("--reconcile-review")?this.run(t,"reconcileReview"):n.has("--start")?this.run(t,"start"):n.has("--continue")?this.run(t,"continue"):n.has("--resume")?this.run(t,"resume"):this.run(t,"status")}async run(t,n){let r=hWe[n];if(!r)return void await this._workflow[n](t);let i={missionId:pt(t.slug),operationId:`review:${t.slug}:${gWe()}`,phase:r,summary:`px review --${n==="consumeArtifacts"?"consume-artifacts":n} ${t.slug}`,agent:null};await w6(()=>this._currentWork.running(i));let o={...t.options,...TQ(this._currentWork,{slug:t.slug,operationId:i.operationId})};try{await this._workflow[n]({...t,options:o})}catch(s){let l=s instanceof Error?s.message:"review operation cannot continue autonomously";throw await w6(()=>this._currentWork.blocked(i,l)),s}await w6(()=>this._currentWork.ended(i))}};async function w6(e){try{await e()}catch(t){}}BB();kB();function AWe(e,t){return{start:new Date(`${e||"0000-01-01"}T00:00:00Z`),end:new Date(`${t||"9999-12-31"}T00:00:00Z`)}}var XQ=class{constructor(t){this._workflow=t}execute(t){let n=t.options||{};t.backfill&&this._workflow.backfill&&this._workflow.backfill(n);let r=this._workflow.loadMeasurements(n),i;if(t.lookupForgejo&&t.mission&&this._workflow.lookupForgejo)try{this._workflow.lookupForgejo(t.mission,n)}catch(l){i=l instanceof Error?l.message:String(l)}if(t.mode==="mission"){let l=t.mission||"";return{mode:"mission",rows:r.filter(c=>la(c)===la({repo:c.repo,mission:l})),missionKey:la({repo:"",mission:l}),backfilled:!!t.backfill,forgejoWarning:i}}let o=t.mode==="range"?AWe(t.from,t.to):UC(t.today??new Date).current,s=O$(r,o);return{mode:t.mode,rows:r,windowedRows:r.filter(l=>qE(l,o)),completedMissions:s.missions,backfilled:!!t.backfill,forgejoWarning:i}}};YW();var ZQ=class{constructor(t,n,r,i,o){this._board=t;this._git=n;this._pr=r;this._agent=i;this._staleWorktrees=o}async execute(t,n=null){let r=n,i=n||this._board.inferSlug(n??void 0),o=this._git.getCurrentBranch(),s=this._git.getRebaseInfo(t),l=this._git.getLastThreeCommits(),c=this._git.getUncommittedCount(),f=null,m=null;i&&(f=await this._board.getMissionData(i,t),m=this._pr.getPrInfo(this._git.missionBranchName(i,t)));let h=this._staleWorktrees.findStaleWorktrees(r,t),y=this._staleWorktrees.getStaleWorktreeRebase(h),A=this._agent.getAgentMatrix(),v=this._agent.getAgentOverride();return{branch:o,worktree:t,rebaseInfo:s,slug:i,missionData:f,prInfo:m,staleWorktrees:h,staleWorktreeRebase:y,agentMatrix:A,agentOverride:v,lastThreeCommits:l,uncommittedCount:c}}};ir();ir();var eL=class{constructor(t,n=Ne){this._rootDir=t;this._git=n}run(t){return this._git(["-C",this._rootDir,...t])}revParse(t){let n=this.run(["rev-parse","--verify","--quiet",`${t}^{commit}`]),r=n.stdout.trim();return n.status===0&&/^[0-9a-f]{40}$/i.test(r)?r.toLowerCase():null}aheadCommits(t,n){let r=this.run(["log","--format=%H",`${t}..${n}`]);return r.status!==0?[]:r.stdout.split(`
|
|
1200
|
+
`||t.return)&&!t.ctrl&&!t.meta}function ePt({onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItems:h,focusedAttentionIndex:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S}){let b=Yo.default.useRef({onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItemsList:h,focusedIdx:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S});b.current={onExit:e,onNavigate:t,onToggleHelp:n,onToggleFlow:r,onToggleDone:i,onEnterAttention:o,onStartAction:s,selectedMissionId:l,onConfirm:c,onCancel:f,onLifecycle:m,queueItemsList:h,focusedIdx:y,setFocusedIdx:A,focusedArea:v,setFocusedArea:S};let C=Yo.default.useRef(!1),k=Yo.default.useRef(!1);return qre(Yo.default.useCallback((B,D)=>{let{onExit:T,onNavigate:$,onToggleHelp:Q,onToggleFlow:M,onToggleDone:j,onEnterAttention:G,onStartAction:Z,selectedMissionId:te,onConfirm:z,onCancel:Y,onLifecycle:K,queueItemsList:oe,focusedIdx:Ae,setFocusedIdx:ge,focusedArea:Re,setFocusedArea:Ye}=b.current;if(B==="q"&&!D.ctrl&&!D.meta||B==="c"&&D.ctrl){T();return}if(k.current){B==="X"&&!D.ctrl&&!D.meta&&(k.current=!1,z()),D.escape&&(k.current=!1,Y());return}if(C.current){rie(B,D)&&(C.current=!1,z()),D.escape&&(C.current=!1,Y());return}let he=ZMt(B,D);if(he){if(Re==="rail"&&oe.length>0){if(D.upArrow||B==="w"){ge(je=>Math.max(0,je-1));return}if(D.downArrow||B==="s"){ge(je=>Math.min(oe.length-1,je+1));return}}if(Re==="board"){$(he);return}if(D.leftArrow||D.rightArrow||B==="a"||B==="d"){$(he);return}return}if(B==="?"&&!D.ctrl&&!D.meta){Q();return}if((B==="f"||B==="F")&&!D.ctrl&&!D.meta){M();return}if((D.ctrl||["","",""].includes(B))&&!D.meta&&te){let re={d:"draft:create",a:"active:execute",r:"review:submit"}[{"":"d","":"a","":"r"}[B]??B];if(re){C.current=K(re);return}}if(B==="X"&&!D.ctrl&&!D.meta&&te){k.current=K("mission:cancel");return}if(B==="S"&&!D.ctrl&&!D.meta){j();return}if(D.tab&&!D.ctrl&&!D.meta){Ye(je=>je==="rail"?"board":"rail");return}if(rie(B,D)&&Re==="rail"){let je=oe[Ae];je&&($("self"),G(je));return}rie(B,D)&&Re==="board"&&te&&(C.current=Z(te))},[])),(0,qt.jsx)(qt.Fragment,{})}var Yo,qt,nie,N2e=J(async()=>{"use strict";Yo=Ct(Cr(),1);await Xd();y1();sR();await jG();await QG();await w2e();await jG();await b2e();await I2e();await k2e();await T2e();await O2e();qt=Ct(qs(),1),nie=34});var M2e={};ni(M2e,{runUiCommand:()=>tPt});async function tPt(e,t=[]){let n=null,r=!1,i=()=>{},o=()=>{r||process.on("SIGINT",i),r=!0,n?.unmount()};process.on("SIGINT",o);try{let s=await e.boardProjection.build(),l=()=>e.boardProjection.build();if(!process.stdin.isTTY&&!process.stdout.isTTY)return process.stdout.write(jre(oie.default.createElement(iie,{projection:s,commandControllerFactory:e.commandControllerFactory,refreshProjection:l}))),0;if(r)return 0;n=Lre(oie.default.createElement(iie,{projection:s,commandControllerFactory:e.commandControllerFactory,refreshProjection:l,subscribeProjection:f=>NH(()=>e.boardProjection.build(),f,{displayedCountdown:!0})}),{exitOnCtrlC:!0}),r&&n.unmount();let c=await n.waitUntilExit();return typeof c=="number"?c:0}finally{process.removeListener("SIGINT",o)}}var oie,P2e=J(async()=>{"use strict";oie=Ct(Cr(),1);await Xd();await N2e();Pee()});Ft();AD();import $2e from"node:fs";import pO from"node:path";import{fileURLToPath as nPt}from"node:url";var yD={name:"@magnusekdahl/parallix",version:"1.5.126",description:"Trust ladder for AI coding work \u2014 separate review, configured verification, conditional Linux confinement, and human-owned merges",license:"AGPL-3.0-or-later",private:!1,type:"module",bin:{px:"build/px.mjs"},engines:{node:">=22.23.1"},publishConfig:{access:"public"},repository:{type:"git",url:"git+https://github.com/oxtan-maker/parallix.git"},keywords:["parallix","workflow","ai","coding-agents","multi-agent","mission","cli"],bugs:{url:"https://github.com/oxtan-maker/parallix/issues"},homepage:"https://github.com/oxtan-maker/parallix#readme",files:["NOTICES","build/","!build/sea","LICENSE","README.md"],scripts:{build:"npm run bundle","build:web":"vite build --config web/vite.config.ts",bundle:"tsx scripts/build-canonical-bundle.ts",dev:"tsx src/entry/px.ts","dev:web":"vite --config web/vite.config.ts",prepack:"npm run build",prepublishOnly:"npm run test:package-content && npm audit --omit=dev",test:"FORCE_COLOR=0 tsx test/run-default-tests.ts","test:integration":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration","test:integration:ci":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration-ci","test:integration:local":"FORCE_COLOR=0 tsx test/run-default-tests.ts --integration-local","test:agent-e2e":"node --import tsx test/e2e-real-agent-smoke.test.ts","test:lifecycle-e2e":"node --import tsx test/e2e-mission-lifecycle.test.ts","test:ci":"npm run typecheck && npm run build && npm test && npm run test:integration:ci && npm run test:bundle && npm run test:package-content","test:package-content":"tsx scripts/package-content-audit.ts","test:codeql":"bash scripts/codeql-sast.sh","test:reproducible-output":"tsx scripts/verify-reproducible-build.ts","test:coverage":"FORCE_COLOR=0 tsx src/adapters/verification/coverage-gate.ts --lcov",typecheck:"tsc --noEmit && tsc --noEmit --project tsconfig.scripts.json","test:bundle":"node --enable-source-maps build/px.mjs --version","release:publish":"tsx scripts/release-publish.ts","benchmark:runtime":"tsx scripts/benchmark-runtime.ts"},peerDependencies:{"@earendil-works/pi-coding-agent":"^0.80.6"},peerDependenciesMeta:{"@earendil-works/pi-coding-agent":{optional:!0}},devDependencies:{"@earendil-works/pi-coding-agent":"^0.80.6","@types/node":"^26.0.1","@types/react":"^19.2.14","@typescript-eslint/eslint-plugin":"^8.62.1","@typescript-eslint/parser":"^8.62.1",esbuild:"^0.25.12",eslint:"^9.39.4","fast-uri":"^3.1.6",fastify:"^5.12.1","happy-dom":"^20.14.5",ink:"^6.8.0",postject:"^1.0.0-alpha.6",react:"^19.2.3","react-dom":"^19.2.8","sonarqube-scanner":"^5.0.0",tsx:"4.20.6",typescript:"^5.9.3",vite:"^7.3.6"}};Fr();gE();kQ();function Qze(e){let t=e.filter(i=>!i.startsWith("--")),n=e.indexOf("--implementer"),r=n===-1?void 0:e[n+1];return{args:[...e],explicitSlug:t[0],implementer:r}}function yme(e){return async(t,n={})=>{await e(Qze(t),n)}}Jr();Dc();pF();sw();async function vme(e){let t=await e.store.load(e.missionId);if(t.kind!=="found")return Rt("unavailable",`Mission ${e.missionId} is unavailable for lifecycle recovery`);let n=e.taskStatus??"unavailable",r=t.mission.status;if(n==="active"&&r==="active"&&e.alreadyMerged&&await e.alreadyMerged())return Hi({taskStatus:n,aggregateStatus:r,action:"refused-integrated",recovered:null});if(n!=="active"||r!=="done")return Hi({taskStatus:n,aggregateStatus:r,action:"none",recovered:null});if(!e.store.findTransitions)return Rt("unavailable",`Lifecycle conflict: task ${n}, aggregate ${r}. Recovery history is unavailable.`);if((await e.store.findTransitions(e.missionId)).some(({trigger:s})=>s==="integrate"))return Hi({taskStatus:n,aggregateStatus:r,action:"refused-integrated",recovered:null});let o={...t.mission,status:"active",closedAt:null};try{await e.store.saveWithTransition(o,t.version,ow({mission:o,from:"done",trigger:"recover-active",agent:e.actor,occurredAt:e.occurredAt}))}catch(s){return Vl(s)}return Hi({taskStatus:n,aggregateStatus:r,action:"recover-to-active",recovered:o})}Ft();async function Eme(e,t){let n=e[0];if(!n)return(t.error??P.fail)("Usage: px recover <slug>"),!1;let r=await vme({missionId:pt(n.toLowerCase()),taskStatus:t.taskStatus(n),actor:"operator",occurredAt:new Date().toISOString(),store:t.store,alreadyMerged:t.alreadyMerged?()=>t.alreadyMerged(n):void 0});if(r.status!=="completed"||!r.value)return(t.error??P.fail)(r.error?.message??"Lifecycle recovery failed."),!1;let{taskStatus:i,aggregateStatus:o,action:s}=r.value;return(t.log??P.info)(`Lifecycle states: task ${i}; aggregate ${o}.`),s==="recover-to-active"?((t.log??P.info)("Recovery action: resumed active mission lifecycle."),!0):s==="refused-integrated"?t.cleanup&&!t.cleanup(n)?((t.error??P.fail)(`Recovery halted: landed mission cleanup failed; retry px recover ${n} after resolving the worktree.`),!1):((t.error??P.fail)("Recovery refused: durable integration history keeps this mission closed."),!1):((t.log??P.info)("Recovery action: none required."),!0)}vE();SA();Sg();qM();import jze from"node:fs";import Uze from"node:path";var a6=Object.freeze(["draft","active","review"]);function Hze(){let e=vg.readText(Go),t=JSON.parse(e);return t&&typeof t=="object"?t:{steps:{}}}function qze(e){let t={},n=wd.filter(r=>{try{return rs(r,e).supported}catch{return!1}});for(let r of a6)t[r]=n.slice();return t}function Gze(e){let t=Hze(),n=t.steps&&typeof t.steps=="object"?t.steps:{},r={};for(let[i,o]of Object.entries(t))i!=="steps"&&(r[i]=o);r.steps={};for(let i of a6){let o=n[i]&&typeof n[i]=="object"?n[i]:{};r.steps[i]={...o,eligible:e[i]||[]}}return r}function BQ(e={}){let t=e.rootDir??process.cwd(),n=e.worktree,r=Uze.join(t,Go),i=jze.existsSync(r),o=qze(n),s=a6.some(c=>(o[c]||[]).length>0);if(i&&!e.force)return{written:!1,configPath:r,eligibleByStep:o};if(!s)return{written:!1,configPath:r,eligibleByStep:o,emptyDetection:!0};let l=Gze(o);return IA(r,l),{written:!0,configPath:r,eligibleByStep:o}}lo();oF();SQ();Ft();Fr();Sg();function zze(e){return e.includes("--write")}async function Wze(e=[],t={}){let n=t.logFn||P.plain,r=t.errorFn||P.plainError,i=t.exitFn||(l=>{process.exitCode=l}),o=t.rootDir||process.cwd();if(zze(e)){if(!qb(o)){r(x("FAIL","px config --write requires a repository root. Run it from a git checkout.")),i(1);return}let l=BQ({rootDir:o,worktree:o,force:!0});l.written?n(x("INFO",`Wrote ${l.configPath} with availability-filtered eligible agents.`)):l.emptyDetection?n(x("WARN",`No agent families are available on this host; left ${Go} unchanged and falling back to the shipped default. Install a launcher or set WORKFLOW_AGENT=<name>.`)):n(x("INFO",`Working-tree ${Go} already exists \u2014 left unchanged (user edits win).`)),n(`Integration mode: ${Hb(o)}`),n(JSON.stringify(Xa(o),null,2));return}let s=Ag(o);if(!s.found)n(x("INFO","No workflow.config.json found \u2014 showing built-in defaults.")),n(`Integration mode: ${Hb(o)}`);else if(s.parseError){r(x("FAIL",`workflow.config.json is invalid JSON (${s.parseError.message}); showing fallback built-in defaults.`)),n(JSON.stringify(Xa(o),null,2)),i(1);return}else{let l=ED(s.config);if(l.length>0){r(x("FAIL",`workflow.config.json is structurally invalid: ${l.join("; ")}; showing fallback built-in defaults.`)),n(JSON.stringify(Xa(o),null,2)),i(1);return}n(x("INFO",`Effective config (built-in defaults + ${s.configPath}):`)),n(`Integration mode: ${Hb(o)}`)}n(JSON.stringify(Xa(o),null,2))}var wme=Wze;function Vze(e){return{args:[...e]}}function Sme(e){return async(t=[],n={})=>{await e(Vze(t),n)}}ir();Vn();Ft();import Kze from"node:child_process";import Jze from"node:path";async function Yze(e,{gitFn:t=Ne,spawnSyncFn:n=Kze.spawnSync,getPrimaryBranchFn:r=In,missionBranchNameFn:i=Rn,inferSlugFn:o=ks,resolveWorktreeFn:s=Nt,exitFn:l=process.exit,failFn:c=P.fail}={}){let f=e.filter(T=>!T.startsWith("--"))[0],m=o(f);if(!m){c("Usage: node parallix diff [<slug>]"),l(1);return}let h=s(m);if(!h){c(`Mission worktree not found for ${vt(m)}. Run this from the mission worktree or create it first.`),l(1);return}let y;try{y=r(h)}catch(T){c(T.message),l(1);return}let A=i(m),v=`${y}..HEAD`,S=T=>{let $=t(["-C",h,"config","--get",T]);return $.status===0?$.stdout.trim():null},b=T=>{if(!T)return!1;let Q=T.split(/\s+/).find(j=>!j.includes("="));if(!Q)return!1;let M=Jze.basename(Q).toLowerCase();return["less","cat","more"].includes(M)?!1:(["delta","difft","diff-so-fancy"].includes(M),!0)},C=(T,$)=>{if(T.error){c(`Failed to launch ${$}: ${T.error.message}`),l(1);return}if(T.signal){c(`${$} terminated by signal: ${T.signal}`),l(1);return}if(T.status===null){c(`${$} exited with unknown status.`),l(1);return}l(T.status)},k=S("diff.tool");if(k){P.info(`Launching ${Vt("git difftool")} for ${Zt(A)} (tool: ${Cn(k)})...`);let T=n("git",["difftool","-d","--no-prompt",v],{cwd:h,stdio:"inherit"});C(T,"git difftool");return}let B=S("pager.diff");if(b(B||"")){P.info(`Launching ${Vt("git diff")} for ${Zt(A)} (pager: ${Cn(B||"")})...`);let T=n("git",["diff",v],{cwd:h,stdio:"inherit"});C(T,"git diff");return}let D=S("core.pager");if(b(D||"")){P.info(`Launching ${Vt("git diff")} for ${Zt(A)} (core.pager: ${Cn(D||"")})...`);let T=n("git",["diff",v],{cwd:h,stdio:"inherit"});C(T,"git diff");return}c("No specialized local diff tool (e.g., delta, difftastic) is configured in Git."),P.info("The workflow diff command requires an explicitly configured diff.tool or a non-default core.pager."),P.info(`Refer to ${st("docs/developer-setup/review-tooling.md")} for setup guidance.`),l(1)}var bme=Yze;function Xze(e){return{args:[...e],explicitSlug:e.find(t=>!t.startsWith("--"))}}function Cme(e){return async(t,n={})=>{await e(Xze(t),n)}}E6();JC();cF();xQ();Jr();zA();import{randomUUID as pWe}from"node:crypto";var iR=class{constructor(t,n=Sf,r=()=>null){this._workflow=t;this._currentWork=n;this._inferSlug=r}async execute(t,n={}){let r=t.find(o=>!o.startsWith("-"))??this._inferSlug();if(!r)return this._workflow.execute(t,n);let i={missionId:pt(r),operationId:`integrate:${r}:${pWe()}`,phase:"integrate",summary:`px integrate ${r}`,agent:null};await Nme(()=>this._currentWork.running(i));try{return await this._workflow.execute(t,n)}finally{await Nme(()=>this._currentWork.ended(i))}}executeForSlug(t){return this.execute([t],{})}};async function Nme(e){try{await e()}catch(t){}}Jr();zA();import{randomUUID as gWe}from"node:crypto";var hWe={start:"review",continue:"review",submit:"review",submitReview:"review",consumeArtifacts:"review-response"},YQ=class{constructor(t,n=Sf){this._workflow=t;this._currentWork=n}async execute(t,n={}){let r=await this._workflow.preflight(t,n);r&&await this.dispatch(r)}async dispatch(t){let n=new Set(t.args.filter(r=>r.startsWith("--")).map(r=>r.split("=",1)[0]));return n.has("--status")?this.run(t,"status"):n.has("--verify")?this.run(t,"verify"):n.has("--submit")?this.run(t,"submit"):n.has("--consume-artifacts")?this.run(t,"consumeArtifacts"):n.has("--push")?this.run(t,"push"):n.has("--comments")?this.run(t,"readComments"):n.has("--comment")||n.has("--comment-file")?this.run(t,"comment"):n.has("--submit-review")?this.run(t,"submitReview"):n.has("--close")?this.run(t,"close"):n.has("--create-event")?this.run(t,"createEvent"):n.has("--import-legacy")?this.run(t,"importLegacy"):n.has("--backfill-review")?this.run(t,"backfillReview"):n.has("--reconcile-review")?this.run(t,"reconcileReview"):n.has("--start")?this.run(t,"start"):n.has("--continue")?this.run(t,"continue"):n.has("--resume")?this.run(t,"resume"):this.run(t,"status")}async run(t,n){let r=hWe[n];if(!r)return void await this._workflow[n](t);let i={missionId:pt(t.slug),operationId:`review:${t.slug}:${gWe()}`,phase:r,summary:`px review --${n==="consumeArtifacts"?"consume-artifacts":n} ${t.slug}`,agent:null};await w6(()=>this._currentWork.running(i));let o={...t.options,...TQ(this._currentWork,{slug:t.slug,operationId:i.operationId})};try{await this._workflow[n]({...t,options:o})}catch(s){let l=s instanceof Error?s.message:"review operation cannot continue autonomously";throw await w6(()=>this._currentWork.blocked(i,l)),s}await w6(()=>this._currentWork.ended(i))}};async function w6(e){try{await e()}catch(t){}}BB();kB();function AWe(e,t){return{start:new Date(`${e||"0000-01-01"}T00:00:00Z`),end:new Date(`${t||"9999-12-31"}T00:00:00Z`)}}var XQ=class{constructor(t){this._workflow=t}execute(t){let n=t.options||{};t.backfill&&this._workflow.backfill&&this._workflow.backfill(n);let r=this._workflow.loadMeasurements(n),i;if(t.lookupForgejo&&t.mission&&this._workflow.lookupForgejo)try{this._workflow.lookupForgejo(t.mission,n)}catch(l){i=l instanceof Error?l.message:String(l)}if(t.mode==="mission"){let l=t.mission||"";return{mode:"mission",rows:r.filter(c=>la(c)===la({repo:c.repo,mission:l})),missionKey:la({repo:"",mission:l}),backfilled:!!t.backfill,forgejoWarning:i}}let o=t.mode==="range"?AWe(t.from,t.to):UC(t.today??new Date).current,s=O$(r,o);return{mode:t.mode,rows:r,windowedRows:r.filter(l=>qE(l,o)),completedMissions:s.missions,backfilled:!!t.backfill,forgejoWarning:i}}};YW();var ZQ=class{constructor(t,n,r,i,o){this._board=t;this._git=n;this._pr=r;this._agent=i;this._staleWorktrees=o}async execute(t,n=null){let r=n,i=n||this._board.inferSlug(n??void 0),o=this._git.getCurrentBranch(),s=this._git.getRebaseInfo(t),l=this._git.getLastThreeCommits(),c=this._git.getUncommittedCount(),f=null,m=null;i&&(f=await this._board.getMissionData(i,t),m=this._pr.getPrInfo(this._git.missionBranchName(i,t)));let h=this._staleWorktrees.findStaleWorktrees(r,t),y=this._staleWorktrees.getStaleWorktreeRebase(h),A=this._agent.getAgentMatrix(),v=this._agent.getAgentOverride();return{branch:o,worktree:t,rebaseInfo:s,slug:i,missionData:f,prInfo:m,staleWorktrees:h,staleWorktreeRebase:y,agentMatrix:A,agentOverride:v,lastThreeCommits:l,uncommittedCount:c}}};ir();ir();var eL=class{constructor(t,n=Ne){this._rootDir=t;this._git=n}run(t){return this._git(["-C",this._rootDir,...t])}revParse(t){let n=this.run(["rev-parse","--verify","--quiet",`${t}^{commit}`]),r=n.stdout.trim();return n.status===0&&/^[0-9a-f]{40}$/i.test(r)?r.toLowerCase():null}aheadCommits(t,n){let r=this.run(["log","--format=%H",`${t}..${n}`]);return r.status!==0?[]:r.stdout.split(`
|
|
1201
1201
|
`).map(i=>i.trim()).filter(Boolean).reverse().map(i=>i.toLowerCase())}push(t,n,r){let i=this.run(["push",t,`${n}:${r}`]);return i.status===0?{ok:!0}:{ok:!1,error:(i.stderr||i.stdout||"push failed").trim()}}isDescendant(t,n){return this.run(["merge-base","--is-ancestor",t,n]).status===0}fastForward(t,n){let r=this.run(["update-ref",`refs/heads/${t}`,n]);return r.status===0?{ok:!0}:{ok:!1,error:(r.stderr||r.stdout||"update-ref failed").trim()}}updateRemoteTrackingRef(t,n,r){let i=this.run(["update-ref",`refs/remotes/${t}/${n}`,r]);return i.status===0?{ok:!0}:{ok:!1,error:(i.stderr||i.stdout||"update remote ref failed").trim()}}fetch(t){let n=this.run(["fetch",t]);return n.status===0?{ok:!0}:{ok:!1,error:(n.stderr||n.stdout||"fetch failed").trim()}}resolveRemoteRef(t,n){let r=this.run(["ls-remote","--exit-code","--refs",t,n]),i=r.stdout.match(/^[0-9a-f]{40}\s+refs\//);return r.status===0&&i?i[0].slice(0,40).toLowerCase():null}};Fr();function Mme(e,t,n,r){let i=[],o=[],s=[],l=!1;for(let m of e){if(m.state==="external verification failed"){s.push(m),l=!0;continue}if(l){m.state==="externally verified"?o.push(m):i.push(m);continue}m.published||(m.state==="externally verified"?o.push(m):i.push(m))}let c=[],f=!1;for(let m of e)if(!m.published)if(f=!0,m.state==="externally verified")c.push(m.sha);else break;return f||(c.length=0),{localHead:t,publishedHead:n,awaitingVerification:i,verifiedBlocked:o,failed:s,publishableRun:c}}var tL=class{constructor(t){this._ports=t}async execute(t=new nL){let{gitPort:n,config:r}=this._ports;if(!r.enabled)return{enabled:!1,localHead:null,publishedHead:null,awaitingVerification:[],verifiedBlocked:[],failed:[],publishableRun:[]};let i=r.mainBranch??"main",o=n.revParse(`origin/${i}`),s=n.revParse(i);if(!o||!s)return{enabled:!0,localHead:s,publishedHead:o,awaitingVerification:[],verifiedBlocked:[],failed:[],publishableRun:[]};let l=n.aheadCommits(o,i),c=Mme(l.map(f=>({sha:f,state:t.query(f)==="verified"?"externally verified":"external verification pending",published:!1})),s,o,t);return{enabled:!0,localHead:s,publishedHead:o,awaitingVerification:c.awaitingVerification.map(f=>f.sha),verifiedBlocked:c.verifiedBlocked.map(f=>f.sha),failed:c.failed.map(f=>f.sha),publishableRun:c.publishableRun}}},nL=class{query(t){return"pending"}};function Pme(e=process.cwd()){return new tL({gitPort:new eL(e,Ne),config:cse(e)})}Ft();function yWe(e){let t=[],n;for(let r=0;r<e.length;r+=1){let i=e[r];if(i==="--agent"){let o=e[++r];if(!o||o.startsWith("--"))throw new Error("--agent requires a value.");if(n)throw new Error("--agent may be supplied only once.");n=o}else{if(i.startsWith("--"))throw new Error(`Unknown draft option: ${i}`);t.push(i)}}return{explicitInput:t[0],agent:n}}function vWe(e){let t=e.message;return t==="--agent requires a value."?x("FAIL","Missing value for --agent. Usage: px draft <slug> --agent <family>"):t==="--agent may be supplied only once."?x("FAIL","--agent may be supplied only once."):x("FAIL",t)}function $me(e){return(t,n={})=>{let r=n.errorFn||P.plainError,i=n.exitFn||process.exit;try{yWe(t)}catch(o){r(vWe(o)),i(1);return}return e.execute(t,n)}}function EWe(e,t=process.env){let n=[],r=!1,i=!1,o=!1,s=null,l=null;for(let c=0;c<e.length;c+=1){let f=e[c];if(f==="--real-agent"||f==="--real-agent-model"){let m=e[++c];if(!m||m.startsWith("--"))throw new Error(`${f} requires a value.`);if(f==="--real-agent"){if(s)throw new Error("--real-agent may be supplied only once.");s=m}else{if(l)throw new Error("--real-agent-model may be supplied only once.");l=m}}else if(f==="--dry-run")r=!0;else if(f==="--no-integration-gates")i=!0;else if(f==="--no-gate")o=!0;else{if(f.startsWith("--"))throw new Error(`Unknown integrate option: ${f}`);n.push(f)}}if(s===null!=(l===null))throw new Error("--real-agent and --real-agent-model must be supplied together.");if(s!==null&&s!=="codex")throw new Error(`Unsupported real agent "${s}". Supported value: codex.`);if(l!==null&&l!=="gpt-5.6-luna")throw new Error(`Unsupported Codex real-agent model "${l}". Supported value: gpt-5.6-luna.`);if(i&&t.PARALLIX_TEST_ALLOW_INTEGRATION_GATE_BYPASS!=="1")throw new Error("--no-integration-gates is rejected: final integration gates are mandatory.");return{explicitSlug:n[0],dryRun:r,noIntegrationGates:i,noGate:o,realAgent:s,realAgentModel:l}}function Qme(e){return(t,n={})=>(EWe(t),e.execute(t,n))}Ft();function wWe(e){let t=[],n=!1;for(let r of e)if(r==="--yes")n=!0;else{if(r.startsWith("--"))throw new Error(`Unknown cancel option: ${r}`);t.push(r)}if(t.length!==1)throw new Error("px cancel requires exactly one mission slug: px cancel <slug> --yes");return{slug:t[0].toLowerCase(),confirmed:n}}function Lme(e,t=P.plain,n=r=>{process.exitCode=r}){return async r=>{let i=wWe(r);if(!i.confirmed)return t(x("FAIL",`Refusing to cancel ${vt(i.slug)} without confirmation.`)),t("Cancelling deletes this mission's lifecycle rows \u2014 lanes, checkpoints, review rounds, findings and session markers \u2014 and cannot be undone."),t("Recorded usage statistics are kept, and the git branch and worktree stay for you to remove."),t(`Re-run with: px cancel ${i.slug} --yes`),n(1),1;let o=await e.dispatch({operationId:`cancel-${Date.now()}`,kind:"mission:cancel",missionId:i.slug,capabilities:new Set(["mission:cancel"])});return o.status!=="completed"||o.value===void 0?(t(x("FAIL",o.error?.message??`mission:cancel for ${i.slug} did not complete.`)),n(1),1):(t(x("PASS",`Cancelled ${vt(i.slug)}: its lifecycle rows are gone.`)),t(o.value.taskArchived?"Its task file is archived, so the card has left the board.":`No task file resolved for ${i.slug}; nothing was archived.`),t(`Usage statistics for ${i.slug} are preserved.`),t("Remove the git side yourself when you are ready:"),t(` ${o.value.cleanupCommand}`),n(0),0)}}Ft();S6();var Ume=new Set(["--actor","--backfill-review","--branch","--close","--comment","--comment-file","--comments","--consume-artifacts","--continue","--create-event","--disposition","--dry-run","--eligible-reviewer","--focus","--force","--implementer","--import-legacy","--input-file","--max-attempts","--message","--message-file","--mission","--no-gate","--phase","--poll-timeout-seconds","--push","--reconcile-review","--resume","--reset","--reviewer","--round","--revision","--start","--status","--submit","--submit-review","--target","--tmp-dir","--type","--verbose","--verdict","--verify"]),SWe=new Set(["--actor","--branch","--comment","--comment-file","--disposition","--eligible-reviewer","--focus","--implementer","--input-file","--max-attempts","--message","--message-file","--mission","--phase","--poll-timeout-seconds","--reviewer","--round","--revision","--submit-review","--target","--tmp-dir","--type","--verdict"]);function bWe(e){let t=[],n=[];for(let r=0;r<e.length;r+=1){let i=e[r];if(!i.startsWith("--")){n.push(i);continue}let o=i.indexOf("="),s=o===-1?i:i.slice(0,o);if(!Ume.has(s)){let l=jme(s,Ume);throw new Error(`Unknown flag for px review: ${s}${l?` \u2014 did you mean ${l}?`:""}`)}t.push(s),o===-1&&SWe.has(s)&&e[r+1]!==void 0&&(r+=1)}return{explicitSlug:n[0],flags:t}}function Hme(e){return(t,n={})=>{let r=n.error||n.errorFn||P.plainError,i=n.exit||n.exitFn||process.exit;try{bWe(t)}catch(o){r(x("FAIL",o.message)),i(1);return}return e.execute(t,n)}}Ft();sR();function _We(e){let t=[];for(let n of e){if(n.startsWith("--"))throw new Error(`Unknown status option: ${n}`);t.push(n)}return{explicitSlug:t[0]}}function kWe(e,t){if(t(Cn("--- Mission Status ---")),t(`Branch: ${Zt(e.branch)}`),t(`Worktree: ${st(e.worktree)}`),e.rebaseInfo&&e.rebaseInfo.inProgress&&e.rebaseInfo.detached){t(`Detached HEAD: rebase in progress: detached HEAD, ${e.rebaseInfo.unmergedFiles.length} unmerged file(s)`);for(let r of e.rebaseInfo.unmergedFiles)t(` - ${r}`)}if(e.slug){if(e.missionData){let n=e.missionData;if(t(`Backlog status: ${n.backlogStatus}`),n.activity&&(t(`Mission work: ${qme(n.activity.work)}`),t(`Coordinator evidence: ${Gme(n.activity.coordinator)}`)),n.checkpoint?t(`Last checkpoint: ${n.checkpoint} - ${n.checkpointDescription||""}`):t("Last checkpoint: none"),n.reviewPhase){let r=n.reviewDisposition??"none";t(`Review: round ${n.reviewRound??1}, phase ${n.reviewPhase}, disposition ${r}`),n.approvalOwed&&t("Formal approval owed: external provider approval is still required after the local self-review.");for(let i of n.reviewHistory){t(` Round ${i.number} [${i.reviewer} -> ${i.implementer}]: ${i.disposition??"pending"}`),i.comment&&t(` comment: ${i.comment}`);for(let o of i.findingSummaries)t(` finding: ${o}`);for(let o of i.fixes)t(` fixed: ${o}`);for(let o of i.pushbacks)t(` pushback: ${o}`)}}else t("Review: not started")}else t("Backlog status: unknown (projection unavailable)"),t("Last checkpoint: none");e.prInfo&&(e.prInfo.exists&&e.prInfo.number!==void 0&&e.prInfo.state?t(`Forgejo PR: #${e.prInfo.number} (${e.prInfo.state})`):e.prInfo.raw?t(`Forgejo PR: unavailable (${e.prInfo.raw})`):t("Forgejo PR: none"))}for(let n of e.staleWorktrees){t(`Stale worktree: ${st(n.path)} (task: ${n.taskStatus})`);let r=e.staleWorktreeRebase[n.path];if(r&&r.inProgress){let i=n.branch?n.branch.replace(/^refs\/heads\//,""):"(detached HEAD)",o=r.detached?"detached HEAD, ":"";t(`Rebase in progress on ${i}: ${o}${r.unmergedFiles.length} unmerged file(s)`);for(let s of r.unmergedFiles)t(` - ${s}`)}t(` Cleanup: ${Vt(n.cleanupCommand)}`)}t("Agent launcher matrix:");for(let n of e.agentMatrix){let r=n.supported?"supported":"blocked",i=n.draftEligible?"draft":"-",o=n.activeEligible?"active":"-";t(` ${lt(n.agent)}: ${r} | eligible: ${i},${o}`)}e.agentOverride&&t(` (WORKFLOW_AGENT override: ${lt(e.agentOverride)})`),t("Last 3 commits:");for(let n of e.lastThreeCommits)t(` - ${n}`);t(`Uncommitted files: ${e.uncommittedCount}`),t(Cn("----------------------"))}function DWe(e){return x("FAIL",e.message)}function Vme(e){return async(t,n={})=>{let r=n.errorFn||P.plainError,i=n.exitFn||process.exit,o=n.logFn||P.plain,s;try{s=_We(t).explicitSlug}catch(c){r(DWe(c)),i(1);return}let l=await e.execute(process.cwd(),s??null);kWe(l,o),i(0)}}Ft();function iL(e){return e.slice(0,12)}function BWe(e,t){if(!e.enabled){t("github-publish: disabled (default squash-merge integration)");return}t(Cn("--- GitHub Publish Status ---")),t(`Local integration head: ${st(e.localHead??"none")}`),t(`Published head (origin/main): ${st(e.publishedHead??"none")}`),t(`Awaiting verification: ${e.awaitingVerification.length}`);for(let n of e.awaitingVerification)t(` - ${iL(n)}`);t(`Verified, blocked behind earlier mission: ${e.verifiedBlocked.length}`);for(let n of e.verifiedBlocked)t(` - ${iL(n)}`);t(`Failed verification: ${e.failed.length}`);for(let n of e.failed)t(` - ${iL(n)}`);e.publishableRun.length>0&&t(`Ready to advance origin/main through: ${e.publishableRun.map(iL).join(", ")}`)}function Kme(e){return async(t,n={})=>{let r=n.logFn||P.plain,i=n.errorFn||P.plainError,o=n.exitFn||process.exit;try{let s=await e.execute();BWe(s,r),o(0)}catch(s){i(x("FAIL",`github-publish status: ${s.message}`)),o(1)}}}sL();ZW();Ft();var FWe="Usage: px rebase [<slug>] [--push]";function TWe(e){let t=[],n=[],r=!1;for(let i of e)i==="--push"?r=!0:i.startsWith("--")?n.push(i):t.push(i);return{explicitSlug:t[0],push:r,unknownFlags:n}}function xWe(e){return e.unknownFlags.length===0?null:`Ignoring unrecognized rebase option(s): ${e.unknownFlags.join(", ")}. ${FWe}`}function Xme(e){return async(t,n={})=>{let r=TWe(t),i=xWe(r);i&&P.debug(i);let o=0,s=typeof n.exitFn=="function"?n.exitFn:l=>{o=l,process.exit(l)};return await e(t,{...n,exitFn:l=>{o=l,s(l)}}),o}}cF();Vn();el();lo();Ft();zl();r$();function OWe(e){return`"${String(e).replace(/(["\\$`])/g,"\\$1")}"`}function Zme({slug:e,area:t,worktreePath:n,missionSpecificFiles:r}){let i=r.map(s=>` git checkout --theirs "${s}" && git add "${s}"`).join(`
|
|
1202
1202
|
`),o=OWe(n);return["Mode: conflict-resolution.","",`Mission: ${e}`,`Mission worktree: ${n}`,"",`Conflicts detected between the mission branch and ${In()}.`,"All conflicts are in mission-specific files that can be resolved by keeping","the mission branch version (--theirs). Execute these steps in order:","",` cd ${o}`,` git rebase ${In()}`," # When the rebase pauses on conflicts, run for each file:",i," git rebase --continue",` ${sl(t,n)}`,` px integrate ${e} --dry-run`,"","Rules:",xC,"- Take --theirs for every file listed above. Do not inspect or edit conflict content.","- If the rebase pauses on a file NOT in the list above, stop immediately and"," report the unexpected file. Do not guess the resolution."].join(`
|
|
1203
1203
|
`)}async function epe(e,{resolveConflictsFn:t=GA.resolveConflictsForMission,startAgentFn:n=ia,exitFn:r=(l=>process.exit(l)),resolveTaskFileFn:i=Kt,getTaskImplementerFn:o=Hs,rootDir:s=process.cwd()}={}){let l=e[0],c=ks(l);if(!c){P.fail("Usage: px resolve-conflict [<slug>]"),r(1);return}let f=mn(c),m=f?df(f):"docs",h=t(c,m);if(h.ok&&h.conflictFiles.length===0){r(0);return}if(!h.ok&&h.error==="shared-file-conflicts"){P.fail("Shared-file conflicts require human resolution. Agent cannot guess the correct merge outcome."),P.info(`Shared files: ${h.sharedFiles.map(C=>st(C)).join(", ")}`),P.info(`Resolve manually, then re-run: ${Vt(`px integrate ${c} --dry-run`)}`),r(1);return}if(!h.ok){r(1);return}let y=i(c,s),A=y&&y.ok&&y.taskFile?o(y.taskFile):null;if(!A){P.fail(`No recorded implementer for ${vt(c)}; cannot launch conflict resolution.`),P.info("Conflict resolution runs as the mission implementer. Set the task assignee to a supported agent family, then re-run."),P.info(`Recovery: ${Vt(`px resolve-conflict ${c}`)}`),r(1);return}let v=Zme({slug:c,area:m,worktreePath:h.worktreePath,missionSpecificFiles:h.missionSpecificFiles});P.info(`Launching implementer (${lt(A)}) to execute mission-specific conflict resolution...`);let S,b;try{({agent:S,result:b}=await n("conflict-resolution",{prompt:v,worktree:h.worktreePath,agent:A,slug:c,role:"implementer",pinnedAgent:!0}))}catch(C){P.fail(`Implementer (${lt(A)}) cannot run conflict resolution: ${C.message||String(C)}`),P.info("Parallix does not substitute another agent family for the mission implementer."),P.info(`Recovery: clear the blocker for ${lt(A)}, then re-run ${Vt(`px resolve-conflict ${c}`)}`),r(1);return}if(b.status!==0){P.fail(`Agent (${lt(S)}) exited with status ${b.status}.`),r(b.status||1);return}P.pass(`Agent (${lt(S)}) completed conflict resolution.`),r(0)}epe.buildAgentResolutionPrompt=Zme;var tpe=epe;function NWe(e){return{args:[...e],explicitSlug:e[0]}}function npe(e){return async(t,n={})=>{await e(NWe(t),n)}}rQ();BC();function MWe(e){return{args:[...e],nonInteractive:e.includes("--non-interactive")}}function rpe(e){return async(t,n={})=>{await e(MWe(t),n)}}BC();async function PWe(e,t){await ace(e,t)}var ipe=PWe;yf();ir();lo();Vn();el();ku();sR();function $We(e){let t=[],n=null;for(let r of e.split(`
|