@testmuai/kane-cli 0.6.1 → 0.6.2
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/dist/{ChatSurface-R55VO3VW.js → ChatSurface-HGP5EHZM.js} +1 -1
- package/dist/{ChromeProfilePicker-BZKLIO2T.js → ChromeProfilePicker-XXNZLSCC.js} +1 -1
- package/dist/{CliFeedbackPrompt-3HYRBMXS.js → CliFeedbackPrompt-FJF5INQO.js} +1 -1
- package/dist/{CliUploadProgress-OAPMO5I3.js → CliUploadProgress-5E3CCYPZ.js} +1 -1
- package/dist/{ConfigView-YIAAISLE.js → ConfigView-TGVOKOUZ.js} +1 -1
- package/dist/EvidenceViewOffer-7O3RNBEE.js +2 -0
- package/dist/FolderPicker-T4JB4NNW.js +2 -0
- package/dist/{HelpView-HBQX64VR.js → HelpView-PSHKI7DD.js} +1 -1
- package/dist/{InfoBox-DKJO73HM.js → InfoBox-PXWJ6BIX.js} +1 -1
- package/dist/{LinksBox-44WCVBT4.js → LinksBox-IUOYRXYO.js} +1 -1
- package/dist/{ProfilesView-NVEDYU3H.js → ProfilesView-UK5XX5WP.js} +1 -1
- package/dist/{ProjectPicker-COBY7TCY.js → ProjectPicker-3FE7UFXL.js} +1 -1
- package/dist/{SaveSessionPrompt-O4ENMYHP.js → SaveSessionPrompt-P7NF5FDA.js} +1 -1
- package/dist/SingleShotApp-UIDA54GB.js +2 -0
- package/dist/{SummaryBox-ROV7TNK4.js → SummaryBox-WVR4U3NN.js} +1 -1
- package/dist/TestMdRunView-OH4Y6YD6.js +2 -0
- package/dist/{WhoamiView-4QV3DPN2.js → WhoamiView-QVXJAVTC.js} +1 -1
- package/dist/{bind-RDTZZ6ZI.js → bind-SRZYTS4Q.js} +2 -2
- package/dist/{bridge-VY2Q3HQU.js → bridge-I6N3YPXI.js} +1 -1
- package/dist/{changelog-JMFGVNEU.js → changelog-HPSX3L7T.js} +1 -1
- package/dist/{chat-committer-RTJCKQMM.js → chat-committer-GHDZY5XF.js} +1 -1
- package/dist/{chat-controller-OTBYHB4Y.js → chat-controller-VKGECDTU.js} +1 -1
- package/dist/{chunk-2PDWMY2B.js → chunk-2U5DZUC7.js} +1 -1
- package/dist/{chunk-ISAE457F.js → chunk-35SRW4KA.js} +1 -1
- package/dist/{chunk-O4O4KL6Z.js → chunk-44QUA6GV.js} +1 -1
- package/dist/{chunk-RH2OAIJI.js → chunk-4G4HPMR2.js} +1 -1
- package/dist/{chunk-Q4PUOA46.js → chunk-4PIMEZJW.js} +2 -2
- package/dist/{chunk-MZ2PXBKK.js → chunk-52VLJKIN.js} +1 -1
- package/dist/{chunk-WAGJLR5X.js → chunk-5ON7QQZO.js} +6 -6
- package/dist/{chunk-2T4JPBB5.js → chunk-6UNTIXFW.js} +1 -1
- package/dist/{chunk-IRDMEYJB.js → chunk-6XKJH5ZE.js} +2 -2
- package/dist/{chunk-5FD6ZXB5.js → chunk-B2CIHKXG.js} +1 -1
- package/dist/{chunk-ROPXE7TF.js → chunk-BKGJGPDN.js} +1 -1
- package/dist/{chunk-VXD5667K.js → chunk-D5DEWIAU.js} +2 -2
- package/dist/{chunk-J5BUMF3G.js → chunk-DCYTRYR2.js} +1 -1
- package/dist/{chunk-BMSWIYYK.js → chunk-DEYHK6ZC.js} +1 -1
- package/dist/{chunk-HGL3RM7P.js → chunk-EK2B2LZK.js} +1 -1
- package/dist/{chunk-7SUKUJO2.js → chunk-FOZVXYVG.js} +1 -1
- package/dist/chunk-FTD3B7QA.js +2 -0
- package/dist/{chunk-SQJWMOJQ.js → chunk-FU3OQXFH.js} +1 -1
- package/dist/{chunk-5UXL6RNG.js → chunk-GN3SZXZ5.js} +1 -1
- package/dist/{chunk-OBBXDBEE.js → chunk-HR7AGYV2.js} +1 -1
- package/dist/{chunk-N2ZW5635.js → chunk-HUD7SPUF.js} +3 -3
- package/dist/{chunk-RY4OOGSC.js → chunk-HW7Z5S2M.js} +2 -2
- package/dist/{chunk-XDW2RGIL.js → chunk-IDDVO4UV.js} +1 -1
- package/dist/{chunk-WRHZCHZY.js → chunk-K2MKBBI4.js} +1 -1
- package/dist/{chunk-MMI3VSCA.js → chunk-KGFISJFM.js} +1 -1
- package/dist/{chunk-CB3TEWZJ.js → chunk-KRFGAVYU.js} +1 -1
- package/dist/{chunk-4CRKK5WV.js → chunk-L4AUCQVO.js} +1 -1
- package/dist/{chunk-QZWQCHXK.js → chunk-LV5VRSPI.js} +1 -1
- package/dist/{chunk-ZA67EBYF.js → chunk-LZKUF23A.js} +1 -1
- package/dist/{chunk-FS4YJM22.js → chunk-M6DX4ENH.js} +1 -1
- package/dist/{chunk-KFAYCOTB.js → chunk-MHQ6A2QZ.js} +1 -1
- package/dist/{chunk-YJ6AQ2KP.js → chunk-N62EM6JX.js} +1 -1
- package/dist/chunk-NEZ4G7XR.js +2 -0
- package/dist/{chunk-NSSKSXCT.js → chunk-OZM4UU5F.js} +1 -1
- package/dist/{chunk-ZNANAARA.js → chunk-OZODSY6H.js} +1 -1
- package/dist/{chunk-SB6MBQKR.js → chunk-PJSCM6JX.js} +1 -1
- package/dist/{chunk-AAWRKFE4.js → chunk-Q6TVDG3X.js} +1 -1
- package/dist/{chunk-HMGNPFXP.js → chunk-QIE62H3J.js} +1 -1
- package/dist/{chunk-SUDAFBVD.js → chunk-S6GRW5ZA.js} +2 -2
- package/dist/{chunk-47RNFG2V.js → chunk-TJRBV2V2.js} +3 -3
- package/dist/{chunk-37CI4EJX.js → chunk-U3JB76QP.js} +1 -1
- package/dist/{chunk-S74MQRDN.js → chunk-VL2UA23Z.js} +1 -1
- package/dist/{chunk-7DBQEOFL.js → chunk-WM5QHLAP.js} +1 -1
- package/dist/{chunk-CP4XCWAJ.js → chunk-X4QL2DAD.js} +1 -1
- package/dist/{chunk-R2K2SGGE.js → chunk-XN7PPLFS.js} +1 -1
- package/dist/{chunk-KGP7NSXH.js → chunk-YIOWO6WS.js} +1 -1
- package/dist/chunk-YKTYVJBN.js +3 -0
- package/dist/{chunk-WGG5XURS.js → chunk-YSK535OI.js} +3 -3
- package/dist/{chunk-FAIH2K2U.js → chunk-Z4K4AYEI.js} +1 -1
- package/dist/{chunk-Q4P2L7DY.js → chunk-ZGH7T32S.js} +1 -1
- package/dist/config-KD62VH3R.js +2 -0
- package/dist/{credentials-L63BBW2S.js → credentials-NQNJR4E4.js} +1 -1
- package/dist/{evidence-UAFPTHQX.js → evidence-FFOI2H3N.js} +1 -1
- package/dist/{evolve-cmd-2SPNVTT4.js → evolve-cmd-PHQ6FHRI.js} +1 -1
- package/dist/{extract-bind-DS4UP23P.js → extract-bind-6UMILP4U.js} +2 -2
- package/dist/{extract-cmd-PMZHMMU7.js → extract-cmd-MZR7PHGA.js} +1 -1
- package/dist/{generate-headless-C3UZKDS5.js → generate-headless-XOBQS6RU.js} +2 -2
- package/dist/index.js +12 -12
- package/dist/{ingest-cmd-FJ3SLTT4.js → ingest-cmd-X7BWGIN7.js} +1 -1
- package/dist/{interactive-bind-SJLDJULN.js → interactive-bind-5FWW3S53.js} +2 -2
- package/dist/{lifecycle-cmd-56OZT4LY.js → lifecycle-cmd-55NZL3UO.js} +1 -1
- package/dist/{list-commands-PGAX5HRB.js → list-commands-PDTISP6T.js} +1 -1
- package/dist/{logical-ids-QRRUXV5E.js → logical-ids-ATVR6PF2.js} +1 -1
- package/dist/login-flow-IXPJHTL2.js +2 -0
- package/dist/{persist-recorded-session-WFU4M4SQ.js → persist-recorded-session-5UNUINWF.js} +1 -1
- package/dist/{pipeline-EYQUM27P.js → pipeline-F4WTOZ3Y.js} +1 -1
- package/dist/{reconcile-cmd-TFFYCTCY.js → reconcile-cmd-MNMWAZF3.js} +2 -2
- package/dist/{recording-banner-PH2NND2X.js → recording-banner-IWY3GS6N.js} +1 -1
- package/dist/{require-project-folder-RD2UAB7E.js → require-project-folder-PFIDA5ZH.js} +1 -1
- package/dist/{review-cmd-SL52N4TM.js → review-cmd-RXPPC5GK.js} +1 -1
- package/dist/run-V2WMNHFK.js +2 -0
- package/dist/{run-test-md-I6O4H7B2.js → run-test-md-7GONSVAM.js} +2 -2
- package/dist/{skill-installer-BJLHH3DW.js → skill-installer-YZP5DWWZ.js} +1 -1
- package/dist/{spawner-UDCF35OA.js → spawner-YDYCSTZD.js} +1 -1
- package/dist/tcg-generate-ZRKSX2KC.js +2 -0
- package/dist/testmd-actions-7RNW76DN.js +2 -0
- package/dist/token-refresh-DH2L2IPP.js +2 -0
- package/dist/{turn-preflight-I5SM4UIZ.js → turn-preflight-JGYT7LXP.js} +1 -1
- package/dist/{validate-basic-WILRWRRP.js → validate-basic-IQY5CRLP.js} +1 -1
- package/dist/{version-check-TXTCVX2N.js → version-check-U5UBPVX4.js} +1 -1
- package/package.json +6 -6
- package/dist/EvidenceViewOffer-DBMZQ34Z.js +0 -2
- package/dist/FolderPicker-ILK4AIKL.js +0 -2
- package/dist/SingleShotApp-NA6A2S6I.js +0 -2
- package/dist/TestMdRunView-U5YTNLY6.js +0 -2
- package/dist/chunk-5446YVGQ.js +0 -4
- package/dist/chunk-5ILXUQIX.js +0 -2
- package/dist/chunk-MJFYMMX2.js +0 -2
- package/dist/login-flow-4OJ34VDP.js +0 -2
- package/dist/run-NODOSQUL.js +0 -2
- package/dist/tcg-generate-E7H4LF7Y.js +0 -2
- package/dist/testmd-actions-FMVUXZGX.js +0 -2
- package/dist/token-refresh-OGBTJGZ2.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as H,b as $e}from"./chunk-6PS65QFF.js";import{a as xe,b as ye}from"./chunk-MMI3VSCA.js";import{b as de,d as he}from"./chunk-QZWQCHXK.js";import{a as pe}from"./chunk-5Y2G4NC7.js";import{a as fe}from"./chunk-NSSKSXCT.js";import{b as ge}from"./chunk-DFS4RMVP.js";import"./chunk-CB3TEWZJ.js";import{x as l}from"./chunk-HMGNPFXP.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as x,b as o,i as me,k as U}from"./chunk-C44QQJR4.js";import{a as Y}from"./chunk-6YGTRKDT.js";import{e as I}from"./chunk-UR6MHSHU.js";var L=I(Y(),1);var B=I(R(),1),Te=3,Ze=60;function et(e){let n=e.cursor>=0?e.questions[e.cursor]:void 0;if(n?.risk==="high")return"high-risk \u2014 answer explicitly, or type 'defer' to leave the rest with the agent";let t=e.resolution.findIndex(Boolean);if(t>=0){let a=e.questions[t],r=a.options.find((i,p)=>p!==e.resolution[t].selected_index)?.label??a.options[0]?.label??"\u2026";return`changed your mind? \`${t+1}: ${r}\` re-answers q${t+1}`}let s=n??e.questions[0],u=s.options[0]?.label??"\u2026",c=s.allow_free_text?" \xB7 or your own words":"";return`e.g. \`1\` or \`${u}\`${c} \xB7 Enter takes recommended defaults`}function tt(e){return`[${e}]`}function nt({batch:e,i:n}){let t=e.resolution[n],s=t.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${t.form}: ${t.choice}${t.form==="assumed"?" (flagged)":" (you)"}`;return(0,B.jsx)(o,{color:l.dim,children:` ${s}`})}function rt({batch:e,i:n}){let t=e.questions[n],s=e.cursor===n&&!e.resolution[n],u=s?"\u203A":" ";return(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:s,children:` ${n+1} ${u} ${t.text} ${tt(t.risk)}`}),(0,B.jsx)(o,{color:l.dim,children:` why: ${t.rationale}`}),e.resolution[n]?(0,B.jsx)(nt,{batch:e,i:n}):(0,B.jsxs)(x,{flexDirection:"column",children:[t.multi_select?(0,B.jsx)(o,{color:l.dim,children:" note: multi-select not yet supported \u2014 pick the best single option"}):null,t.options.map((c,a)=>(0,B.jsx)(o,{children:` ${a+1}. ${c.label}${a===t.recommended_index?" \u2605 recommended":""}`},`o-${a}`)),t.allow_free_text?(0,B.jsx)(o,{color:l.dim,children:" (free text allowed \u2014 just type your own words)"}):null]})]})}function we({batch:e}){let{stdout:n}=U(),t=n?.columns??80,s=t<Ze,u=e.resolution.filter(y=>!y).length,c=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-Te)),a=e.questions.slice(c,c+Te),r=c,i=e.questions.length-c-a.length,p=et(e);s&&p.length>t-2&&(p=`${p.slice(0,Math.max(0,t-3))}\u2026`);let f=e.cursor>=0?`answering ${e.cursor+1} of ${e.questions.length}`:"all placed",g=(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:!0,children:`questions \xB7 ${u} pending \xB7 ${f}`}),r>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${r} above`}):null,a.map((y,C)=>(0,B.jsx)(rt,{batch:e,i:c+C},y.id)),i>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${i} more`}):null,(0,B.jsx)(o,{color:l.dim,children:p})]});return s?g:(0,B.jsx)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:g})}var A=I(R(),1),be=60,ot=e=>e.length<=be?e:`${e.slice(0,be-1)}\u2026`;function Z({item:e}){return(0,A.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((n,t)=>(0,A.jsx)(o,{dimColor:!0,children:`cite ${n.anchor??"conv"} \u2014 "${n.quote??""}"`},`cite-${t}`)),(e.depends_on_hint??[]).length>0&&(0,A.jsx)(o,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([n,t])=>(0,A.jsx)(o,{dimColor:!0,children:`${n}: ${t}`},`extra-${n}`))]})}function Q({heading:e,turn:n,items:t,expandedRef:s,total:u,compact:c,numbers:a,marks:r}){return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{bold:!0,children:`${e} \xB7 turn ${n} \xB7 ${u??t.length} proposed`}),t.map((i,p)=>{let f=i.matches_existing,g=f?f.cid?f.archived?` \u2248 matches ARCHIVED ${f.cid.slice(0,19)} \u2014 previously rejected${f.reason?`: "${f.reason}"`:""}`:` \u2248 matches ${f.cid.slice(0,19)}`:" \u2248overlap":"",y=r?.[p]?" \xB7 updated":"",C=c?` ${a?.[p]??p+1} \xB7 ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why?` \u2014 ${ot(i.why)}`:""}${g}${y}`:` ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why!==void 0?` \xB7 ${i.why}`:""}${g}`;return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{children:C}),s===i.temp_ref&&(0,A.jsx)(Z,{item:i})]},i.temp_ref)})]})}var Ce=I(R(),1),st=e=>e.summary??e.description??"";function it(e){return{temp_ref:e.temp_ref,title:e.title,badge:e.risk,why:st(e),matches_existing:e.matches_existing?e.matches_existing:null,cite:e.cite??[],depends_on_hint:e.depends_on_hint??[]}}function ve({turn:e,items:n,expandedRef:t,total:s,compact:u,numbers:c,marks:a}){return(0,Ce.jsx)(Q,{heading:"use-cases",turn:e,items:n.map(it),expandedRef:t,total:s,compact:u,numbers:c,marks:a})}var at={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},P=e=>at[e]??`${e}s`,ke=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,ee=e=>e.kind??"use-case",Se=e=>`${ee(e)}:${e.temp_ref}`;function Ie(e){let n=e,t=n.badge??e.risk??null,s=n.why??e.summary??e.description??null;return JSON.stringify([e.title,t,s,n.extra??null,e.depends_on_hint??null])}function Be(e){return e.filter(n=>n.role==="agent"&&typeof n.turnIndex=="number"&&Array.isArray(n.items)&&n.items.length>0)}function F(e){let n=new Map,t=1;for(let c of Be(e)){let a=new Set;for(let r of c.items){let i=Se(r);if(a.has(i))continue;a.add(i);let p=n.get(i);n.set(i,{num:p?.num??t++,ref:r.temp_ref,kind:ee(r),item:r,turnIndex:c.turnIndex,fingerprint:Ie(r)})}}let s=[...n.values()].sort((c,a)=>c.num-a.num),u=[];for(let c of s){let a=u.find(r=>r.kind===c.kind);a?a.count++:u.push({kind:c.kind,label:P(c.kind),count:1})}return{entries:s,byRef:n,counts:u}}function Re(e,n){let s=Be(e).find(m=>m.turnIndex===n);if(!s)return null;let u=e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<=n),c=F(u),a=F(e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<n)),r=[],i=new Map,p=new Map,f=new Map,g=new Set;for(let m of s.items){let w=Se(m);if(g.has(w))continue;g.add(w);let q=a.byRef.get(w),O=m.changed===!0,S=c.byRef.get(w).num,D=ee(m);if(q&&!O&&q.fingerprint===Ie(m)){i.set(D,(i.get(D)??0)+1);continue}let b=!!q||O,M=b?f:p;M.set(D,(M.get(D)??0)+1),r.push({item:m,num:S,updated:b})}let y=[...i.entries()].map(([m,w])=>({label:P(m),count:w})),C=[...[...p.entries()].map(([m,w])=>`${w} new ${w===1?ke(m):P(m)}`),...[...f.entries()].map(([m,w])=>`${w} updated ${w===1?ke(m):P(m)}`)].join(" \xB7 ");return{fresh:r,unchanged:y,headerStats:C}}var E=I(R(),1);function De({turnIndex:e,fresh:n,headerStats:t,unchangedTotal:s}){let u=[];for(let a of n){let r=a.item.kind??"use-case",i=u.find(p=>p.kind===r);i?i.rows.push(a):u.push({kind:r,rows:[a]})}let c=`design \xB7 turn ${e} \u2014 ${t||"no new items"}${s>0?` (${s} unchanged)`:""}`;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{bold:!0,children:c}),u.map(({kind:a,rows:r})=>{let i=r.filter(g=>!g.updated).length,p=r.length-i,f=[...i>0?[`${i} new`]:[],...p>0?[`${p} updated`]:[]].join(" \xB7 ");return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{color:l.dim,children:`${P(a).toLowerCase()} \xB7 ${f}`}),r.map(({item:g,num:y,updated:C})=>{let m=g;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsxs)(o,{children:[(0,E.jsx)(o,{children:` ${y} \xB7 ${g.title}`}),m.badge?(0,E.jsx)(o,{color:l.dim,children:` \xB7 ${m.badge}`}):null,C?(0,E.jsx)(o,{color:l.dim,children:" \xB7 updated"}):null]}),m.why?(0,E.jsx)(o,{color:l.dim,children:` ${m.why}`}):null]},`${a}:${g.temp_ref}`)})]},a)})]})}var d=I(R(),1);function ct(e){let n=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",t=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${t}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${n}${t}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${n}${t}`}function Ee({block:e,annotations:n}){switch(e.kind){case"banner":return(0,d.jsx)(o,{color:l.dim,children:`\u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,d.jsxs)(x,{children:[(0,d.jsx)(o,{color:l.orange,children:"\u276F "}),(0,d.jsx)(o,{children:e.text})]});case"note":return(0,d.jsx)(o,{color:l.dim,children:e.text});case"agent":return(0,d.jsx)(xe,{text:e.text});case"thinking":return(0,d.jsx)(o,{color:l.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,d.jsx)(o,{color:l.dim,children:` ${H({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,d.jsx)(o,{color:l.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let t=n??null,s=t?t.fresh.map(r=>r.item):e.items,u=t?t.fresh.map(r=>r.num):void 0,c=t?t.fresh.map(r=>r.updated):void 0,a=s.some(r=>!!r.kind);return(0,d.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[a?(0,d.jsx)(De,{turnIndex:e.turnIndex,fresh:t?t.fresh:s.map((r,i)=>({item:r,num:i+1,updated:!1})),headerStats:t?.headerStats??"",unchangedTotal:(t?.unchanged??[]).reduce((r,i)=>r+i.count,0)}):e.heading==="use-cases"?(0,d.jsx)(ve,{turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}):(0,d.jsx)(Q,{heading:e.heading,turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}),t&&t.unchanged.length>0&&(0,d.jsx)(o,{color:l.dim,children:` \u22EE unchanged: ${t.unchanged.map(r=>`${r.count} ${r.label}`).join(" \xB7 ")} \u2014 /view to browse`})]})}case"answer":return(0,d.jsx)(o,{color:l.dim,children:ct(e.receipt)});case"commit":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:e.ok?l.green:l.red,children:`${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:` \u26A0 ${t}`},`w-${s}`))]});case"error":return(0,d.jsxs)(fe,{variant:"error",paddingX:1,children:[(0,d.jsx)(o,{color:l.red,children:e.title}),e.detail.map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:t},`d-${s}`))]});case"interrupted":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:l.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,d.jsx)(o,{color:l.dim,children:e.detail}):null]});case"pause":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,d.jsx)(o,{color:l.dim,children:`expires: ${e.expires_at}`}):null,(0,d.jsx)(o,{children:`resume: ${e.resume}`}),e.messageForm?(0,d.jsx)(o,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{bold:!0,children:"session summary"}),e.lines.map((t,s)=>(0,d.jsx)(o,{children:` ${t}`},`s-${s}`))]})}}var W=I(Y(),1);var Oe=I(R(),1),Le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],te="ctrl+t thinking \xB7 ctrl+c pause";function Ae(e,n){if(e.length<=n)return e;if(n<=1)return"\u2026";let t=Math.ceil((n-1)/2),s=Math.floor((n-1)/2);return`${e.slice(0,t)}\u2026${s>0?e.slice(-s):""}`}function _e({streaming:e,verb:n,subject:t,turn:s,pendingCount:u,lastActivity:c,workingLabel:a,creditsTotal:r}){let{stdout:i}=U(),p=i?.columns??80,[f,g]=(0,W.useState)(0),y=(0,W.useRef)(null);(0,W.useEffect)(()=>{e&&y.current===null&&(y.current=Date.now()),e||(y.current=null)},[e]),pe(()=>g(b=>b+1),e?1e3:null);let C=[];if(e){let b=y.current?Math.floor((Date.now()-y.current)/1e3):0;C.push(`${Le[f%Le.length]} ${b}s ${a??c??"waiting for model"}`)}C.push(n),s&&C.push(`turn ${s}`),r!==void 0&&C.push(`${r.toFixed(1)} cr`);let m=u?`[${u} pending]`:null,w=" \xB7 ",O=[...C,...m?[m]:[]].join(w).length,S,D=[...C,...t?[t]:[],...m?[m]:[],te].join(w);if(D.length<=p)S=D;else{let b=p-O-(t?w.length:0)-w.length-te.length;if(t&&b>=8)S=[...C,Ae(t,b),...m?[m]:[],te].join(w);else{let M=p-O-(t?w.length:0);S=[...C,...t&&M>=4?[Ae(t,M)]:[],...m?[m]:[]].join(w)}}return(0,Oe.jsx)(o,{color:l.dim,children:S})}var V=I(Y(),1);function ne({onToggleThinking:e,onCtrlC:n,explorer:t}){let u=(0,V.useRef)(null),c=(0,V.useRef)(""),a=()=>{u.current&&clearTimeout(u.current),u.current=null,c.current=""};return(0,V.useEffect)(()=>a,[]),me((r,i)=>{if(i.ctrl&&r==="t"){e();return}if(i.ctrl&&r==="c"){n();return}if(!i.ctrl&&r.includes("")){n();return}if(!i.ctrl&&r.includes("")){e();return}if(t&&t.isOpen()){let p=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{a(),t.onBack()},150)};if(u.current){if(i.upArrow||i.downArrow||i.return){a(),i.return?t.onEnter():t.onMove(i.upArrow?-1:1);return}if(c.current+=r,c.current==="["){p();return}let f=c.current;a();let g=/^\[([AB])/.exec(f);if(g){t.onMove(g[1]==="A"?-1:1);return}t.onBack();return}if(i.upArrow){t.onMove(-1);return}if(i.downArrow){t.onMove(1);return}if(i.return){t.onEnter();return}if(i.escape){c.current="",p();return}if(r.length>=2&&!i.ctrl&&!i.meta){t.onClose();return}return}}),null}var v=I(R(),1),re=(e,n)=>Math.max(0,Math.min(n,e));function X(e,n,t){switch(n.type){case"move":return{...e,cursor:re(e.cursor+n.delta,Math.max(0,t-1))};case"enter":return e.level==="list"?{...e,level:"detail"}:e;case"back":return e.level==="detail"?{...e,level:"list"}:null}}var Pe={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function qe(e,n){if(e.level==="detail")return{level:"detail",cursor:re(e.num-1,Math.max(0,n.entries.length-1))};if(e.section){let t=n.entries.findIndex(s=>Pe[s.kind]===e.section);if(t>=0)return{level:"list",cursor:t}}return{level:"list",cursor:0}}function lt(e){let n=[];for(let t of e.entries){let s=n.find(u=>u.kind===t.kind);s?s.entries.push(t):n.push({kind:t.kind,entries:[t]})}return n}var Me=3;function ut({items:e,cursor:n,verb:t}){let s=`view \xB7 ${t} so far \xB7 ${e.counts.map(c=>`${c.count} ${c.count===1?c.label.replace(/s$/,""):c.label}`).join(" \xB7 ")}`,u=e.entries[n];return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:s}),lt(e).map(({kind:c,entries:a})=>{let r=u?.kind===c,i=r?a.findIndex(y=>y.ref===u.ref):-1,p=r?re(i-1,Math.max(0,a.length-Me)):0,f=a.slice(p,p+(r?Me:1)),g=a.length-f.length;return(0,v.jsxs)(x,{flexDirection:"column",children:[(0,v.jsx)(o,{color:l.dim,children:`${Pe[c]??P(c)} \xB7 ${a.length}`}),f.map(y=>{let C=r&&y.ref===u.ref,m=y.item.badge;return(0,v.jsxs)(o,{children:[(0,v.jsx)(o,{color:l.generateAccent,children:C?"\u203A ":" "}),(0,v.jsx)(o,{children:`${y.num} \xB7 ${y.item.title}`}),m?(0,v.jsx)(o,{color:l.dim,children:` \xB7 ${m}`}):null]},`${y.kind}:${y.ref}`)}),g>0&&(0,v.jsx)(o,{color:l.dim,children:` \u22EE ${g} more`})]},c)}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back to chat"})]})}function mt({items:e,cursor:n}){let t=e.entries[n];if(!t)return(0,v.jsx)(o,{color:l.dim,children:"nothing to show"});let s=t.item;return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:`view \xB7 ${t.kind} ${t.num} of ${e.entries.length}`}),(0,v.jsx)(o,{children:t.item.title}),s.badge?(0,v.jsx)(o,{color:l.dim,children:`kind: ${s.badge}`}):null,s.why?(0,v.jsx)(o,{color:l.dim,children:s.why}):null,(0,v.jsx)(Z,{item:t.item}),(0,v.jsx)(o,{color:l.dim,children:"view-only \u2014 approvals happen in chat"}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Ne({items:e,state:n,verb:t}){return n.level==="list"?(0,v.jsx)(ut,{items:e,cursor:n.cursor,verb:t}):(0,v.jsx)(mt,{items:e,cursor:n.cursor})}var Ue=[{name:"view",description:"browse the proposal set"},{name:"explain",description:"why a committed item exists"},{name:"pause",description:"save + exit (resumable)"},{name:"done",description:"finish the session"}],dt={"use-cases":"use-cases",usecases:"use-cases","use-case":"use-cases",acs:"acs",ac:"acs",scenarios:"scenarios",scenario:"scenarios",tests:"tests",test:"tests",gaps:"gaps",gap:"gaps"};function We(e){let n=(e??"").trim().toLowerCase();if(!n)return{level:"list"};if(/^\d+$/.test(n)){let s=parseInt(n,10);return s>=1?{level:"detail",num:s}:{error:"items are numbered from 1 \u2014 /view 1"}}let t=dt[n];return t?{level:"list",section:t}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var k=I(R(),1),pt=6,Ke=12;function Fe(e,n,t){let s=Math.max(20,n),u=[];for(let a of e.split(`
|
|
2
|
+
import{a as H,b as $e}from"./chunk-6PS65QFF.js";import{a as xe,b as ye}from"./chunk-KGFISJFM.js";import{b as de,d as he}from"./chunk-LV5VRSPI.js";import{a as pe}from"./chunk-5Y2G4NC7.js";import{a as fe}from"./chunk-OZM4UU5F.js";import{b as ge}from"./chunk-DFS4RMVP.js";import"./chunk-KRFGAVYU.js";import{x as l}from"./chunk-QIE62H3J.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as x,b as o,i as me,k as U}from"./chunk-C44QQJR4.js";import{a as Y}from"./chunk-6YGTRKDT.js";import{e as I}from"./chunk-UR6MHSHU.js";var L=I(Y(),1);var B=I(R(),1),Te=3,Ze=60;function et(e){let n=e.cursor>=0?e.questions[e.cursor]:void 0;if(n?.risk==="high")return"high-risk \u2014 answer explicitly, or type 'defer' to leave the rest with the agent";let t=e.resolution.findIndex(Boolean);if(t>=0){let a=e.questions[t],r=a.options.find((i,p)=>p!==e.resolution[t].selected_index)?.label??a.options[0]?.label??"\u2026";return`changed your mind? \`${t+1}: ${r}\` re-answers q${t+1}`}let s=n??e.questions[0],u=s.options[0]?.label??"\u2026",c=s.allow_free_text?" \xB7 or your own words":"";return`e.g. \`1\` or \`${u}\`${c} \xB7 Enter takes recommended defaults`}function tt(e){return`[${e}]`}function nt({batch:e,i:n}){let t=e.resolution[n],s=t.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${t.form}: ${t.choice}${t.form==="assumed"?" (flagged)":" (you)"}`;return(0,B.jsx)(o,{color:l.dim,children:` ${s}`})}function rt({batch:e,i:n}){let t=e.questions[n],s=e.cursor===n&&!e.resolution[n],u=s?"\u203A":" ";return(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:s,children:` ${n+1} ${u} ${t.text} ${tt(t.risk)}`}),(0,B.jsx)(o,{color:l.dim,children:` why: ${t.rationale}`}),e.resolution[n]?(0,B.jsx)(nt,{batch:e,i:n}):(0,B.jsxs)(x,{flexDirection:"column",children:[t.multi_select?(0,B.jsx)(o,{color:l.dim,children:" note: multi-select not yet supported \u2014 pick the best single option"}):null,t.options.map((c,a)=>(0,B.jsx)(o,{children:` ${a+1}. ${c.label}${a===t.recommended_index?" \u2605 recommended":""}`},`o-${a}`)),t.allow_free_text?(0,B.jsx)(o,{color:l.dim,children:" (free text allowed \u2014 just type your own words)"}):null]})]})}function we({batch:e}){let{stdout:n}=U(),t=n?.columns??80,s=t<Ze,u=e.resolution.filter(y=>!y).length,c=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-Te)),a=e.questions.slice(c,c+Te),r=c,i=e.questions.length-c-a.length,p=et(e);s&&p.length>t-2&&(p=`${p.slice(0,Math.max(0,t-3))}\u2026`);let f=e.cursor>=0?`answering ${e.cursor+1} of ${e.questions.length}`:"all placed",g=(0,B.jsxs)(x,{flexDirection:"column",children:[(0,B.jsx)(o,{bold:!0,children:`questions \xB7 ${u} pending \xB7 ${f}`}),r>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${r} above`}):null,a.map((y,C)=>(0,B.jsx)(rt,{batch:e,i:c+C},y.id)),i>0?(0,B.jsx)(o,{color:l.muted,children:` \u22EE ${i} more`}):null,(0,B.jsx)(o,{color:l.dim,children:p})]});return s?g:(0,B.jsx)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:g})}var A=I(R(),1),be=60,ot=e=>e.length<=be?e:`${e.slice(0,be-1)}\u2026`;function Z({item:e}){return(0,A.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((n,t)=>(0,A.jsx)(o,{dimColor:!0,children:`cite ${n.anchor??"conv"} \u2014 "${n.quote??""}"`},`cite-${t}`)),(e.depends_on_hint??[]).length>0&&(0,A.jsx)(o,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([n,t])=>(0,A.jsx)(o,{dimColor:!0,children:`${n}: ${t}`},`extra-${n}`))]})}function Q({heading:e,turn:n,items:t,expandedRef:s,total:u,compact:c,numbers:a,marks:r}){return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{bold:!0,children:`${e} \xB7 turn ${n} \xB7 ${u??t.length} proposed`}),t.map((i,p)=>{let f=i.matches_existing,g=f?f.cid?f.archived?` \u2248 matches ARCHIVED ${f.cid.slice(0,19)} \u2014 previously rejected${f.reason?`: "${f.reason}"`:""}`:` \u2248 matches ${f.cid.slice(0,19)}`:" \u2248overlap":"",y=r?.[p]?" \xB7 updated":"",C=c?` ${a?.[p]??p+1} \xB7 ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why?` \u2014 ${ot(i.why)}`:""}${g}${y}`:` ${i.title}${i.badge!==void 0?` \xB7 ${i.badge}`:""}${i.why!==void 0?` \xB7 ${i.why}`:""}${g}`;return(0,A.jsxs)(x,{flexDirection:"column",children:[(0,A.jsx)(o,{children:C}),s===i.temp_ref&&(0,A.jsx)(Z,{item:i})]},i.temp_ref)})]})}var Ce=I(R(),1),st=e=>e.summary??e.description??"";function it(e){return{temp_ref:e.temp_ref,title:e.title,badge:e.risk,why:st(e),matches_existing:e.matches_existing?e.matches_existing:null,cite:e.cite??[],depends_on_hint:e.depends_on_hint??[]}}function ve({turn:e,items:n,expandedRef:t,total:s,compact:u,numbers:c,marks:a}){return(0,Ce.jsx)(Q,{heading:"use-cases",turn:e,items:n.map(it),expandedRef:t,total:s,compact:u,numbers:c,marks:a})}var at={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},P=e=>at[e]??`${e}s`,ke=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,ee=e=>e.kind??"use-case",Se=e=>`${ee(e)}:${e.temp_ref}`;function Ie(e){let n=e,t=n.badge??e.risk??null,s=n.why??e.summary??e.description??null;return JSON.stringify([e.title,t,s,n.extra??null,e.depends_on_hint??null])}function Be(e){return e.filter(n=>n.role==="agent"&&typeof n.turnIndex=="number"&&Array.isArray(n.items)&&n.items.length>0)}function F(e){let n=new Map,t=1;for(let c of Be(e)){let a=new Set;for(let r of c.items){let i=Se(r);if(a.has(i))continue;a.add(i);let p=n.get(i);n.set(i,{num:p?.num??t++,ref:r.temp_ref,kind:ee(r),item:r,turnIndex:c.turnIndex,fingerprint:Ie(r)})}}let s=[...n.values()].sort((c,a)=>c.num-a.num),u=[];for(let c of s){let a=u.find(r=>r.kind===c.kind);a?a.count++:u.push({kind:c.kind,label:P(c.kind),count:1})}return{entries:s,byRef:n,counts:u}}function Re(e,n){let s=Be(e).find(m=>m.turnIndex===n);if(!s)return null;let u=e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<=n),c=F(u),a=F(e.filter(m=>m.role!=="agent"||typeof m.turnIndex!="number"||m.turnIndex<n)),r=[],i=new Map,p=new Map,f=new Map,g=new Set;for(let m of s.items){let w=Se(m);if(g.has(w))continue;g.add(w);let q=a.byRef.get(w),O=m.changed===!0,S=c.byRef.get(w).num,D=ee(m);if(q&&!O&&q.fingerprint===Ie(m)){i.set(D,(i.get(D)??0)+1);continue}let b=!!q||O,M=b?f:p;M.set(D,(M.get(D)??0)+1),r.push({item:m,num:S,updated:b})}let y=[...i.entries()].map(([m,w])=>({label:P(m),count:w})),C=[...[...p.entries()].map(([m,w])=>`${w} new ${w===1?ke(m):P(m)}`),...[...f.entries()].map(([m,w])=>`${w} updated ${w===1?ke(m):P(m)}`)].join(" \xB7 ");return{fresh:r,unchanged:y,headerStats:C}}var E=I(R(),1);function De({turnIndex:e,fresh:n,headerStats:t,unchangedTotal:s}){let u=[];for(let a of n){let r=a.item.kind??"use-case",i=u.find(p=>p.kind===r);i?i.rows.push(a):u.push({kind:r,rows:[a]})}let c=`design \xB7 turn ${e} \u2014 ${t||"no new items"}${s>0?` (${s} unchanged)`:""}`;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{bold:!0,children:c}),u.map(({kind:a,rows:r})=>{let i=r.filter(g=>!g.updated).length,p=r.length-i,f=[...i>0?[`${i} new`]:[],...p>0?[`${p} updated`]:[]].join(" \xB7 ");return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsx)(o,{color:l.dim,children:`${P(a).toLowerCase()} \xB7 ${f}`}),r.map(({item:g,num:y,updated:C})=>{let m=g;return(0,E.jsxs)(x,{flexDirection:"column",children:[(0,E.jsxs)(o,{children:[(0,E.jsx)(o,{children:` ${y} \xB7 ${g.title}`}),m.badge?(0,E.jsx)(o,{color:l.dim,children:` \xB7 ${m.badge}`}):null,C?(0,E.jsx)(o,{color:l.dim,children:" \xB7 updated"}):null]}),m.why?(0,E.jsx)(o,{color:l.dim,children:` ${m.why}`}):null]},`${a}:${g.temp_ref}`)})]},a)})]})}var d=I(R(),1);function ct(e){let n=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",t=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${t}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${n}${t}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${n}${t}`}function Ee({block:e,annotations:n}){switch(e.kind){case"banner":return(0,d.jsx)(o,{color:l.dim,children:`\u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,d.jsxs)(x,{children:[(0,d.jsx)(o,{color:l.orange,children:"\u276F "}),(0,d.jsx)(o,{children:e.text})]});case"note":return(0,d.jsx)(o,{color:l.dim,children:e.text});case"agent":return(0,d.jsx)(xe,{text:e.text});case"thinking":return(0,d.jsx)(o,{color:l.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,d.jsx)(o,{color:l.dim,children:` ${H({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,d.jsx)(o,{color:l.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let t=n??null,s=t?t.fresh.map(r=>r.item):e.items,u=t?t.fresh.map(r=>r.num):void 0,c=t?t.fresh.map(r=>r.updated):void 0,a=s.some(r=>!!r.kind);return(0,d.jsxs)(x,{flexDirection:"column",marginLeft:2,children:[a?(0,d.jsx)(De,{turnIndex:e.turnIndex,fresh:t?t.fresh:s.map((r,i)=>({item:r,num:i+1,updated:!1})),headerStats:t?.headerStats??"",unchangedTotal:(t?.unchanged??[]).reduce((r,i)=>r+i.count,0)}):e.heading==="use-cases"?(0,d.jsx)(ve,{turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}):(0,d.jsx)(Q,{heading:e.heading,turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:u,marks:c}),t&&t.unchanged.length>0&&(0,d.jsx)(o,{color:l.dim,children:` \u22EE unchanged: ${t.unchanged.map(r=>`${r.count} ${r.label}`).join(" \xB7 ")} \u2014 /view to browse`})]})}case"answer":return(0,d.jsx)(o,{color:l.dim,children:ct(e.receipt)});case"commit":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:e.ok?l.green:l.red,children:`${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:` \u26A0 ${t}`},`w-${s}`))]});case"error":return(0,d.jsxs)(fe,{variant:"error",paddingX:1,children:[(0,d.jsx)(o,{color:l.red,children:e.title}),e.detail.map((t,s)=>(0,d.jsx)(o,{color:l.dim,children:t},`d-${s}`))]});case"interrupted":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{color:l.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,d.jsx)(o,{color:l.dim,children:e.detail}):null]});case"pause":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,d.jsx)(o,{color:l.dim,children:`expires: ${e.expires_at}`}):null,(0,d.jsx)(o,{children:`resume: ${e.resume}`}),e.messageForm?(0,d.jsx)(o,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,d.jsxs)(x,{flexDirection:"column",children:[(0,d.jsx)(o,{bold:!0,children:"session summary"}),e.lines.map((t,s)=>(0,d.jsx)(o,{children:` ${t}`},`s-${s}`))]})}}var W=I(Y(),1);var Oe=I(R(),1),Le=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],te="ctrl+t thinking \xB7 ctrl+c pause";function Ae(e,n){if(e.length<=n)return e;if(n<=1)return"\u2026";let t=Math.ceil((n-1)/2),s=Math.floor((n-1)/2);return`${e.slice(0,t)}\u2026${s>0?e.slice(-s):""}`}function _e({streaming:e,verb:n,subject:t,turn:s,pendingCount:u,lastActivity:c,workingLabel:a,creditsTotal:r}){let{stdout:i}=U(),p=i?.columns??80,[f,g]=(0,W.useState)(0),y=(0,W.useRef)(null);(0,W.useEffect)(()=>{e&&y.current===null&&(y.current=Date.now()),e||(y.current=null)},[e]),pe(()=>g(b=>b+1),e?1e3:null);let C=[];if(e){let b=y.current?Math.floor((Date.now()-y.current)/1e3):0;C.push(`${Le[f%Le.length]} ${b}s ${a??c??"waiting for model"}`)}C.push(n),s&&C.push(`turn ${s}`),r!==void 0&&C.push(`${r.toFixed(1)} cr`);let m=u?`[${u} pending]`:null,w=" \xB7 ",O=[...C,...m?[m]:[]].join(w).length,S,D=[...C,...t?[t]:[],...m?[m]:[],te].join(w);if(D.length<=p)S=D;else{let b=p-O-(t?w.length:0)-w.length-te.length;if(t&&b>=8)S=[...C,Ae(t,b),...m?[m]:[],te].join(w);else{let M=p-O-(t?w.length:0);S=[...C,...t&&M>=4?[Ae(t,M)]:[],...m?[m]:[]].join(w)}}return(0,Oe.jsx)(o,{color:l.dim,children:S})}var V=I(Y(),1);function ne({onToggleThinking:e,onCtrlC:n,explorer:t}){let u=(0,V.useRef)(null),c=(0,V.useRef)(""),a=()=>{u.current&&clearTimeout(u.current),u.current=null,c.current=""};return(0,V.useEffect)(()=>a,[]),me((r,i)=>{if(i.ctrl&&r==="t"){e();return}if(i.ctrl&&r==="c"){n();return}if(!i.ctrl&&r.includes("")){n();return}if(!i.ctrl&&r.includes("")){e();return}if(t&&t.isOpen()){let p=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{a(),t.onBack()},150)};if(u.current){if(i.upArrow||i.downArrow||i.return){a(),i.return?t.onEnter():t.onMove(i.upArrow?-1:1);return}if(c.current+=r,c.current==="["){p();return}let f=c.current;a();let g=/^\[([AB])/.exec(f);if(g){t.onMove(g[1]==="A"?-1:1);return}t.onBack();return}if(i.upArrow){t.onMove(-1);return}if(i.downArrow){t.onMove(1);return}if(i.return){t.onEnter();return}if(i.escape){c.current="",p();return}if(r.length>=2&&!i.ctrl&&!i.meta){t.onClose();return}return}}),null}var v=I(R(),1),re=(e,n)=>Math.max(0,Math.min(n,e));function X(e,n,t){switch(n.type){case"move":return{...e,cursor:re(e.cursor+n.delta,Math.max(0,t-1))};case"enter":return e.level==="list"?{...e,level:"detail"}:e;case"back":return e.level==="detail"?{...e,level:"list"}:null}}var Pe={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function qe(e,n){if(e.level==="detail")return{level:"detail",cursor:re(e.num-1,Math.max(0,n.entries.length-1))};if(e.section){let t=n.entries.findIndex(s=>Pe[s.kind]===e.section);if(t>=0)return{level:"list",cursor:t}}return{level:"list",cursor:0}}function lt(e){let n=[];for(let t of e.entries){let s=n.find(u=>u.kind===t.kind);s?s.entries.push(t):n.push({kind:t.kind,entries:[t]})}return n}var Me=3;function ut({items:e,cursor:n,verb:t}){let s=`view \xB7 ${t} so far \xB7 ${e.counts.map(c=>`${c.count} ${c.count===1?c.label.replace(/s$/,""):c.label}`).join(" \xB7 ")}`,u=e.entries[n];return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:s}),lt(e).map(({kind:c,entries:a})=>{let r=u?.kind===c,i=r?a.findIndex(y=>y.ref===u.ref):-1,p=r?re(i-1,Math.max(0,a.length-Me)):0,f=a.slice(p,p+(r?Me:1)),g=a.length-f.length;return(0,v.jsxs)(x,{flexDirection:"column",children:[(0,v.jsx)(o,{color:l.dim,children:`${Pe[c]??P(c)} \xB7 ${a.length}`}),f.map(y=>{let C=r&&y.ref===u.ref,m=y.item.badge;return(0,v.jsxs)(o,{children:[(0,v.jsx)(o,{color:l.generateAccent,children:C?"\u203A ":" "}),(0,v.jsx)(o,{children:`${y.num} \xB7 ${y.item.title}`}),m?(0,v.jsx)(o,{color:l.dim,children:` \xB7 ${m}`}):null]},`${y.kind}:${y.ref}`)}),g>0&&(0,v.jsx)(o,{color:l.dim,children:` \u22EE ${g} more`})]},c)}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back to chat"})]})}function mt({items:e,cursor:n}){let t=e.entries[n];if(!t)return(0,v.jsx)(o,{color:l.dim,children:"nothing to show"});let s=t.item;return(0,v.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,v.jsx)(o,{bold:!0,children:`view \xB7 ${t.kind} ${t.num} of ${e.entries.length}`}),(0,v.jsx)(o,{children:t.item.title}),s.badge?(0,v.jsx)(o,{color:l.dim,children:`kind: ${s.badge}`}):null,s.why?(0,v.jsx)(o,{color:l.dim,children:s.why}):null,(0,v.jsx)(Z,{item:t.item}),(0,v.jsx)(o,{color:l.dim,children:"view-only \u2014 approvals happen in chat"}),(0,v.jsx)(o,{color:l.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Ne({items:e,state:n,verb:t}){return n.level==="list"?(0,v.jsx)(ut,{items:e,cursor:n.cursor,verb:t}):(0,v.jsx)(mt,{items:e,cursor:n.cursor})}var Ue=[{name:"view",description:"browse the proposal set"},{name:"explain",description:"why a committed item exists"},{name:"pause",description:"save + exit (resumable)"},{name:"done",description:"finish the session"}],dt={"use-cases":"use-cases",usecases:"use-cases","use-case":"use-cases",acs:"acs",ac:"acs",scenarios:"scenarios",scenario:"scenarios",tests:"tests",test:"tests",gaps:"gaps",gap:"gaps"};function We(e){let n=(e??"").trim().toLowerCase();if(!n)return{level:"list"};if(/^\d+$/.test(n)){let s=parseInt(n,10);return s>=1?{level:"detail",num:s}:{error:"items are numbered from 1 \u2014 /view 1"}}let t=dt[n];return t?{level:"list",section:t}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var k=I(R(),1),pt=6,Ke=12;function Fe(e,n,t){let s=Math.max(20,n),u=[];for(let a of e.split(`
|
|
3
3
|
`)){if(a.length<=s){u.push(a);continue}let r="";for(let i of a.split(" "))r&&r.length+1+i.length>s?(u.push(r),r=i):r=r?`${r} ${i}`:i;u.push(r)}let c=Math.max(0,u.length-t);return{body:u.slice(-t).join(`
|
|
4
4
|
`),hidden:c}}var ft='chat with the agent \u2014 "/" for commands';function un({controller:e,verb:n="extract",onCtrlC:t}){let[,s]=(0,L.useState)(0),[u,c]=(0,L.useState)(!1),[a,r]=(0,L.useState)(null),[i,p]=(0,L.useState)(null),f=(0,L.useRef)(null),g=$=>{f.current=$,p($)},y=ge(),{stdout:C}=U(),m=C?.columns??80,w=(0,L.useRef)(0),q=(0,L.useRef)(0),O=(0,L.useRef)(null);O.current||(O.current=new de(null)),(0,L.useEffect)(()=>{let $=()=>{let h=e.state.ledger;for(let _=w.current;_<h.length;_++){let N=h[_],Ye=N.kind==="turn"?Re(e.state.turns,N.turnIndex):void 0;y.append((0,k.jsx)(Ee,{block:N,annotations:Ye},`lg-${_}`))}w.current=h.length};$();let T=e.subscribe(()=>{$();let h=e.state;f.current&&(h.pending||h.status==="pausing")&&(g(null),h.pending&&r("questions arrived \u2014 back to chat")),s(_=>_+1)});return s(h=>h+1),T},[e,y]);let{thinking:S,status:D,pending:b,confirm:M,ledger:oe,activeTurn:se,stream:z,notice:j}=e.state,G=S.activity[S.activity.length-1],ie=G&&G.status==="started"?G:null,ae=z!=null&&z.text.length>0,Ve=ae?`\u2237 thinking \xB7 ${S.thinkingLog.length} block${S.thinkingLog.length===1?"":"s"} \xB7 ctrl+t to inspect`:S.liveThinking.length>0?`\u273B ${Fe(S.liveThinking,m-4,1).body}`:D==="streaming"?"\u2237 thinking\u2026 (ctrl+t to show)":"\u2237 thinking complete (ctrl+t to view)",je=S.liveThinking.length>0||u&&S.thinkingLog.length>0,He=Fe(S.liveThinking||S.thinkingLog.map($=>$.text).join(`
|
|
5
5
|
`),m-6,Ke),ce=ae?z.text.split(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-BKGJGPDN.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{c as ChromeProfilePicker,b as formatChromeProfileLine,a as listChromeProfiles};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as r}from"./chunk-
|
|
2
|
+
import{a as r}from"./chunk-LZKUF23A.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import{c as e}from"./chunk-C44QQJR4.js";import{a as i}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var t=m(i(),1);async function d(){return new Promise(o=>{let c=e(t.default.createElement(r,{onSubmit:n=>{c.unmount(),o(n)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{d as renderFeedbackPrompt};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as P,b as g,c as f}from"./chunk-
|
|
2
|
+
import{a as P,b as g,c as f}from"./chunk-N62EM6JX.js";import"./chunk-M6DX4ENH.js";import"./chunk-5Y2G4NC7.js";import"./chunk-QIE62H3J.js";import{a as c}from"./chunk-HCBYKLMW.js";import{c as d}from"./chunk-C44QQJR4.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as p}from"./chunk-UR6MHSHU.js";var e=p(h(),1);var m=p(c(),1);function w({pipeline:t,buildShareUrl:r,onDone:o}){let[n,i]=(0,e.useState)(P()),[S,l]=(0,e.useState)("uploading"),[U,R]=(0,e.useState)(),[C,E]=(0,e.useState)();return(0,e.useEffect)(()=>{let x=t.config.onProgress;t.config.onProgress=(s,u,a)=>{x(s,u,a),i(y=>g(y,s,u,a))},t.execute().then(s=>{s.success?(R(r?.(s)),l("success")):(E(s.error),l("failed")),setTimeout(()=>o(s),1500)})},[]),(0,m.jsx)(f,{steps:n,status:S,testUrl:U,error:C})}async function O(t,r){return new Promise(o=>{let n=d(e.default.createElement(w,{pipeline:t,buildShareUrl:r,onDone:i=>{n.unmount(),o(i)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{O as renderUploadProgress};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as p,b as l,c as n}from"./chunk-
|
|
2
|
+
import{a as p,b as l,c as n}from"./chunk-OZM4UU5F.js";import{x as o}from"./chunk-QIE62H3J.js";import{a as g}from"./chunk-HCBYKLMW.js";import{a,j as c}from"./chunk-C44QQJR4.js";import{a as R}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var b=t(R(),1);var e=t(g(),1);function A({model:d,authLabel:v,profile:x,env:w,defaultUrl:u,projectId:r,projectName:s,folderId:i,folderName:f,windowSize:B,chromeProfile:C}){let h=r?s?`${s} (${r})`:r:"(none)",D=i?f?`${f} (${i})`:i:"(none)",{exit:m}=c();return(0,b.useEffect)(()=>{let P=setTimeout(()=>m(),50);return()=>clearTimeout(P)},[m]),(0,e.jsx)(a,{flexDirection:"column",children:(0,e.jsx)(p,{title:"Configuration",children:(0,e.jsxs)(a,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(n,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:v}),(0,e.jsx)(l,{label:" profile",value:x}),(0,e.jsx)(l,{label:" env",value:w}),(0,e.jsx)(n,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:u??"(none)",valueColor:u?o.orange:o.dim}),(0,e.jsx)(l,{label:" model",value:d}),(0,e.jsx)(l,{label:" window",value:B}),(0,e.jsx)(l,{label:" project",value:h}),(0,e.jsx)(l,{label:" folder",value:D}),(0,e.jsx)(n,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dim})]})})})}export{A as ConfigView};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-K2MKBBI4.js";import"./chunk-RFHMDQXZ.js";import"./chunk-YSK535OI.js";import"./chunk-FYOCF7DY.js";import"./chunk-RGEAEAZB.js";import"./chunk-BC7UVJJB.js";import"./chunk-KHDUQ33H.js";import"./chunk-NFOBDHZK.js";import"./chunk-L5LI2JF4.js";import"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-M5JQXOCE.js";import"./chunk-YIOWO6WS.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b}from"./chunk-FU3OQXFH.js";import"./chunk-YCCUBQY4.js";import"./chunk-U3JB76QP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as f,b as r,x as t}from"./chunk-
|
|
2
|
+
import{a as f,b as r,x as t}from"./chunk-QIE62H3J.js";import{a as T}from"./chunk-HCBYKLMW.js";import{a as s,b as o,j as x,k as p}from"./chunk-C44QQJR4.js";import{a as v}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var w=h(v(),1);var e=h(T(),1),b="https://www.testmuai.com/support/docs/kane-cli-introduction",S="https://github.com/LambdaTest/kane-cli/issues";function L(){let{exit:c}=x(),{stdout:a}=p(),l=a?.columns??80;return(0,w.useEffect)(()=>{let m=setTimeout(()=>c(),50);return()=>clearTimeout(m)},[c]),(0,e.jsxs)(s,{flexDirection:"column",children:[(0,e.jsxs)(s,{paddingX:1,paddingTop:1,flexDirection:"column",children:[(0,e.jsx)(o,{color:t.orange,bold:!0,children:r}),(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",f]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsxs)(d,{title:"USAGE",children:[(0,e.jsx)(g,{cmd:`${r}`,desc:"Single-shot prompt (no args, TTY)"}),(0,e.jsx)(g,{cmd:`${r} --tui`,desc:"Full interactive TUI",highlight:!0}),(0,e.jsx)(g,{cmd:`${r} run "<objective>"`,desc:"Inline objective"}),(0,e.jsx)(g,{cmd:`${r} testmd run <path>.md`,desc:"Replay a saved *_test.md file"})]}),(0,e.jsxs)(d,{title:"HELP",children:[(0,e.jsx)(g,{cmd:`${r} --help`,desc:"Show this help (long form)"}),(0,e.jsx)(g,{cmd:`${r} -h`,desc:"Show this help (short form)"}),(0,e.jsx)(g,{cmd:`${r} help`,desc:"Show this help (subcommand form)"}),(0,e.jsxs)(s,{marginLeft:2,marginTop:0,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["These are the only supported help invocations. Anything else (e.g. ",(0,e.jsx)(o,{color:t.orange,children:"-help"}),") is an unknown flag."]}),(0,e.jsxs)(o,{color:t.dim,children:["Terminal tab-completion is a shell feature; ",r," does not ship shell-completion scripts, so any flag your shell suggests is a generic guess \u2014 not from ",r,"."]})]})]}),(0,e.jsxs)(d,{title:"COMMANDS",children:[(0,e.jsx)(i,{cmd:"run",args:"<objective>",desc:"Run an objective (inline string)",highlight:!0}),(0,e.jsx)(i,{cmd:"testmd",args:"run|list|status|delete|export",desc:"Manage *_test.md files"}),(0,e.jsx)(i,{cmd:"testrun",args:"run",desc:"Run M *_test.md files as one sealed execution"}),(0,e.jsx)(i,{cmd:"login",desc:"Auth setup (interactive, --oauth, or --username)"}),(0,e.jsx)(i,{cmd:"logout",desc:"Revoke tokens + delete profile"}),(0,e.jsx)(i,{cmd:"whoami",desc:"Show authenticated identity"}),(0,e.jsx)(i,{cmd:"config",args:"show|set-mode|set-assertion-mode|\u2026",desc:"Chrome, run & generate settings"}),(0,e.jsx)(i,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"}),(0,e.jsx)(i,{cmd:"evidence",args:"validate|serve|merge",desc:"Validate, serve (viewer) or merge evidence packs"}),(0,e.jsx)(i,{cmd:"changelog",args:"[--all]",desc:"Show recent release notes"}),(0,e.jsx)(i,{cmd:"context",args:"ingest|extract|list|review|sessions|\u2026",desc:"Build & manage the assurance context store"}),(0,e.jsx)(i,{cmd:"design",args:"tests --use-case <ref>",desc:"Design tests from the context store"})]}),(0,e.jsxs)(d,{title:"TESTMD ACTIONS",children:[(0,e.jsx)(i,{cmd:"testmd run",args:"<path>",desc:"Replay a saved *_test.md file",highlight:!0}),(0,e.jsx)(i,{cmd:"testmd list",desc:"List *_test.md files in cwd (recursive)"}),(0,e.jsx)(i,{cmd:"testmd status",args:"<path>",desc:"Print local meta.json for a test"}),(0,e.jsx)(i,{cmd:"testmd delete",args:"<path>",desc:"Remove output-<stem>/ and the source file"}),(0,e.jsx)(i,{cmd:"testmd export",args:"<path> --language <py|js>",desc:"Generate standalone Playwright code"})]}),(0,e.jsxs)(d,{title:"RUN FLAGS",children:[(0,e.jsx)(n,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(n,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(n,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(n,{long:"--mode",arg:"<action|testing>",desc:"Run mode (default: testing)"}),(0,e.jsx)(n,{long:"--name",arg:"<name>",desc:"Persist session under this name"}),(0,e.jsx)(n,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(n,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(n,{long:"--session-context",arg:"<json>",desc:"Prior runs context JSON"}),(0,e.jsx)(n,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(n,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(n,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(n,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(n,{long:"--task-skills",desc:"Domain-specific task skills (experimental)"}),(0,e.jsx)(n,{long:"--code-export",desc:"Generate code export after upload"}),(0,e.jsx)(n,{long:"--code-language",arg:"<lang>",desc:"Code export language: python | javascript"}),(0,e.jsx)(n,{long:"--skip-code-validation",desc:"Skip post-codegen validation"}),(0,e.jsx)(n,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(n,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(n,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(n,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(d,{title:"EXAMPLES",children:[(0,e.jsx)(u,{label:"Inline objective",cmd:`${r} run "Search for laptop"`}),(0,e.jsx)(u,{label:"Replay a saved test",cmd:`${r} testmd run smoke_test.md`}),(0,e.jsx)(u,{label:"Variables",cmd:`${r} run "Login as {{user}}" --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(u,{label:"Agent mode (NDJSON)",cmd:`${r} run "Add to cart" --agent | jq .status`})]}),(0,e.jsx)(d,{title:"TEST FILES",children:(0,e.jsxs)(s,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:[(0,e.jsx)(o,{color:t.orange,children:"*_test.md"})," \u2014 markdown test files with YAML frontmatter and ",(0,e.jsx)(o,{color:t.orange,children:"## "}),"step headings."]}),(0,e.jsxs)(o,{color:t.dim,children:["Run with ",(0,e.jsxs)(o,{color:t.orange,children:[r," testmd run path/to/foo_test.md"]}),". (`.md` paths are not accepted by `",r," run`.)"]}),(0,e.jsxs)(o,{color:t.dim,children:["Sessions you run in TUI auto-save to ",(0,e.jsx)(o,{color:t.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," (testing mode prompts on exit)."]})]})}),(0,e.jsxs)(s,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(l-2,70))}),(0,e.jsxs)(s,{gap:3,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Docs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:b})]}),(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Bugs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:S})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function d({title:c,children:a}){return(0,e.jsxs)(s,{flexDirection:"column",marginBottom:1,children:[(0,e.jsx)(s,{marginLeft:1,children:(0,e.jsx)(o,{bold:!0,color:t.dim,children:c})}),a]})}function g({cmd:c,desc:a,highlight:l}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsxs)(s,{width:40,children:[(0,e.jsx)(o,{color:t.dim,children:"$ "}),(0,e.jsx)(o,{color:l?t.orange:t.orange,children:c})]}),(0,e.jsx)(o,{color:t.dim,children:a})]})}function i({cmd:c,args:a,desc:l,highlight:m}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsx)(s,{width:16,children:(0,e.jsx)(o,{color:m?t.orange:t.green,bold:!0,children:c})}),(0,e.jsx)(s,{width:32,children:a?(0,e.jsx)(o,{color:t.dim,children:a}):null}),(0,e.jsx)(o,{color:t.dim,children:l})]})}function n({long:c,arg:a,desc:l,highlight:m}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsxs)(s,{width:30,children:[(0,e.jsx)(o,{color:m?t.orange:t.orange,children:c}),a&&(0,e.jsxs)(o,{color:t.dim,children:[" ",a]})]}),(0,e.jsx)(o,{color:t.dim,children:l})]})}function u({label:c,cmd:a}){return(0,e.jsxs)(s,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["# ",c]}),(0,e.jsxs)(o,{color:t.orange,children:["$ ",a]})]})}export{L as HelpView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as InfoBox};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-52VLJKIN.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as LinksBox};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-Z4K4AYEI.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProfilesView,a as formatProfileLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-MHQ6A2QZ.js";import"./chunk-YCCUBQY4.js";import"./chunk-U3JB76QP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProjectPicker,a as formatProjectLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-Q6TVDG3X.js";import"./chunk-S3DAAAE5.js";import"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SaveSessionPrompt,b as defaultSessionTimestamp,c as renderSavePrompt};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-ZGH7T32S.js";import"./chunk-VL2UA23Z.js";import"./chunk-LV5VRSPI.js";import"./chunk-2U5DZUC7.js";import"./chunk-EK2B2LZK.js";import"./chunk-4G4HPMR2.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-MHQ6A2QZ.js";import"./chunk-FU3OQXFH.js";import"./chunk-YCCUBQY4.js";import"./chunk-U3JB76QP.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-YIOWO6WS.js";import"./chunk-VE3SUJMA.js";import"./chunk-L4AUCQVO.js";import"./chunk-KRFGAVYU.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-GN3SZXZ5.js";import"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{d as AutoExitSummaryBox,c as SummaryBox,b as buildSummaryEvent,a as buildSummaryRendered};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{g as a}from"./chunk-DCYTRYR2.js";import"./chunk-44QUA6GV.js";import"./chunk-IDDVO4UV.js";import"./chunk-EK2B2LZK.js";import"./chunk-M6DX4ENH.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-YIOWO6WS.js";import"./chunk-PJSCM6JX.js";import"./chunk-OZM4UU5F.js";import"./chunk-DFS4RMVP.js";import"./chunk-QIE62H3J.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b,b as r}from"./chunk-
|
|
2
|
+
import{a as b,b as r}from"./chunk-OZM4UU5F.js";import{x as o}from"./chunk-QIE62H3J.js";import{a as p}from"./chunk-HCBYKLMW.js";import{a as i,b as l,j as s}from"./chunk-C44QQJR4.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as a}from"./chunk-UR6MHSHU.js";var f=a(T(),1);var e=a(p(),1);function V({profile:g,env:v,authenticated:n,authMethod:h,username:c,tokenStatus:t,expiresAt:d,serverStatus:u,detail:m}){let{exit:x}=s();return(0,f.useEffect)(()=>{let B=setTimeout(()=>x(),50);return()=>clearTimeout(B)},[x]),(0,e.jsx)(i,{flexDirection:"column",children:(0,e.jsx)(b,{title:"Identity",variant:n?"success":"warning",children:(0,e.jsxs)(i,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(i,{children:u==="rejected"?(0,e.jsx)(l,{color:o.red,bold:!0,children:"\u2717 Not authenticated"}):u==="unreachable"?(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Couldn't verify"}):n?(0,e.jsx)(l,{color:o.green,bold:!0,children:"\u2713 Authenticated"}):(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Not logged in"})}),(0,e.jsxs)(i,{flexDirection:"column",marginTop:1,children:[(0,e.jsx)(r,{label:"Profile",value:g}),(0,e.jsx)(r,{label:"Environment",value:v}),(0,e.jsx)(r,{label:"Method",value:h}),c&&(0,e.jsx)(r,{label:"User",value:c}),t&&(0,e.jsx)(r,{label:"Token",value:t,valueColor:t==="valid"?o.green:t==="expired"?o.red:o.dim}),d&&(0,e.jsx)(r,{label:"Expires",value:d}),m&&(0,e.jsx)(r,{label:"Detail",value:m})]})]})})})}export{V as WhoamiView};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as p}from"./chunk-
|
|
2
|
+
import{a as p}from"./chunk-5ON7QQZO.js";import"./chunk-KHU7C6EE.js";import"./chunk-NNZV5RCE.js";import"./chunk-WM5QHLAP.js";import"./chunk-I2S6KNZW.js";import"./chunk-FXPPQL4D.js";import"./chunk-DM2GL24Z.js";import"./chunk-6PS65QFF.js";import"./chunk-JFAFKHDX.js";import"./chunk-FTD3B7QA.js";import"./chunk-QPZRHAYK.js";import"./chunk-VJUIW2ES.js";import"./chunk-YKTYVJBN.js";import"./chunk-Z56AWGVY.js";import"./chunk-427OQS2N.js";import"./chunk-RGEAEAZB.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-KHDUQ33H.js";import"./chunk-L5LI2JF4.js";import"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";import{existsSync as D}from"fs";var b=new Set(["interactive","agent","ci","override"]);function E(e){return e.mode!=null&&!b.has(e.mode)?{error:`design: --mode must be interactive | agent | ci | override, got '${e.mode}'`}:e.strength!=null&&e.strength!=="pairwise"&&e.strength!=="3-wise"?{error:`design: --strength must be pairwise | 3-wise, got '${e.strength}'`}:e.max!=null&&(!Number.isInteger(e.max)||e.max<1)?{error:"design: --max must be a positive integer"}:!e.useCase&&!e.resume?{error:"design: --use-case is required (or --resume <sid> \u2014 the session remembers its use-case)"}:{useCase:e.useCase,max:e.max,strength:e.strength,mode:e.mode,force:e.force,resume:e.resume,plan:e.plan,message:e.message,because:e.because,changeDelta:e.changeDelta,priorDesign:e.priorDesign}}async function A(e){let c=async(r,s)=>{if(process.stderr.write(r+`
|
|
3
3
|
`),e.mode!=="agent")return 2;let{makeHeadlessIO:t,agentRefusal:i}=await import("./headless-io-GXHKDPHB.js");return i(t("ndjson","design"),r,s)},d=E(e);if("error"in d)return c(d.error);let a=d;{let{validateResumeMessage:r}=await import("./headless-io-GXHKDPHB.js"),s=r(a,"design");if(s)return c(s)}if(!D(u(process.cwd())))return c("error: no context store here (run `kane-cli context ingest` + `kane-cli context extract` first)","NO_STORE");let n=null;try{if(!a.mode&&!process.stdin.isTTY)return process.stderr.write(`design: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
|
|
4
4
|
`),2;let r=a.mode??"interactive";if(r==="interactive"){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stderr.write(`design: --mode interactive needs a TTY on stdin and stdout (use --mode agent|ci|override headless)
|
|
5
|
-
`),2;let{bindDesignInteractive:o}=await import("./interactive-bind-
|
|
5
|
+
`),2;let{bindDesignInteractive:o}=await import("./interactive-bind-5FWW3S53.js");return await o(a)}let{resolveAgentAuthEnv:s}=await import("./spawner-YDYCSTZD.js"),{runAgent:t}=await import("./bridge-I6N3YPXI.js"),{preflightTurn:i}=await import("./turn-preflight-JGYT7LXP.js"),{makeInterruptGuard:h}=await import("./interrupt-guard-UREUWNRL.js"),{baseUrlAdvisory:w}=await import("./turn-preflight-JGYT7LXP.js"),{makeHeadlessIO:T,resolveEncoding:v,guardedChannels:x}=await import("./headless-io-GXHKDPHB.js");n=T(v(r),"design");let m=await s(),l=w();l&&n.out(l);let g=h(t,o=>n.out(o)),f=x(n,()=>g.interrupted(),/^error: (design agent failed|the design agent ended)/);try{let o=await p({...a,mode:r},{contextDir:u(process.cwd()),agent:g.agent,preflightTurn:()=>i(m),ask:async()=>[],out:f.out,emit:f.emit,progress:n.progress,isTTY:!1,auth:m});return g.interrupted()&&o!==3?(n.out("interrupted \u2014 no session saved"),n.done(130)):n.done(o)}finally{g.dispose()}}catch(r){let s=r instanceof Error?r.message:String(r);n?.event({type:"error",message:`error: design failed: ${s}`});let t=n?i=>n.out(i):i=>process.stderr.write(i+`
|
|
6
6
|
`);return t(`error: design failed: ${s}`),(process.env.ASSURANCE_LOG_LEVEL??"").toLowerCase()==="debug"&&r instanceof Error&&r.stack&&t(r.stack),t("hint: per-run trace logs live under .context/logs/ (design-*.log)"),n?n.done(1):1}}export{A as designTestsCommand};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-HUD7SPUF.js";import"./chunk-NEZ4G7XR.js";import"./chunk-UR6MHSHU.js";export{a as runAgent};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,f as c}from"./chunk-
|
|
2
|
+
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,f as c}from"./chunk-QIE62H3J.js";import"./chunk-UR6MHSHU.js";import{readFileSync as u,writeFileSync as g,mkdirSync as d}from"fs";import{join as f}from"path";var h=f(i,"changelog-cache.json"),p=3600*1e3;function y(){try{let e=JSON.parse(u(h,"utf-8"));if(Date.now()-e.cachedAt<p)return e}catch{}return null}function m(e){try{d(i,{recursive:!0}),g(h,JSON.stringify({entries:e,cachedAt:Date.now()}))}catch{}}async function A(e){try{let t=y();if(t){let r=t.entries;return e?.all?r:r.slice(0,5)}let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),a=await l(`${c}?per_page=30`,{headers:{Accept:"application/vnd.github+json"},signal:n.signal});if(clearTimeout(o),!a.ok)return[];let s=(await a.json()).map(r=>({version:r.tag_name.replace(/^v/,""),date:r.published_at?r.published_at.slice(0,10):"",body:r.body??""}));return m(s),e?.all?s:s.slice(0,5)}catch{return[]}}function v(e){if(e.length===0)return"Could not fetch changelog. Visit https://github.com/LambdaTest/kane-cli/releases";let t=["kane-cli Changelog","\u2500".repeat(40),""];for(let n of e){if(t.push(`v${n.version} (${n.date})`),n.body){let o=n.body.split(`
|
|
3
3
|
`).filter(a=>a.trim());for(let a of o)t.push(` ${a}`)}t.push("")}return t.join(`
|
|
4
4
|
`)}export{A as fetchChangelog,v as formatChangelog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as V,c as ne}from"./chunk-JFAFKHDX.js";import{b as X,c as Z,d as ee}from"./chunk-
|
|
2
|
+
import{a as V,c as ne}from"./chunk-JFAFKHDX.js";import{b as X,c as Z,d as ee}from"./chunk-FTD3B7QA.js";import"./chunk-QPZRHAYK.js";import{a as w,b as te}from"./chunk-VJUIW2ES.js";import{a as oe}from"./chunk-427OQS2N.js";import{d as Q}from"./chunk-KHDUQ33H.js";import{a as z}from"./chunk-D5T4ARTB.js";import"./chunk-AE6SS34N.js";import{a as j,b as F}from"./chunk-GIRXJOJI.js";import{e as W,g as Y}from"./chunk-B2PZAB7J.js";import{e as L,f as A,g as J,h as x}from"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";var ce=new Set(["approve","edit","reject"]);function Ie(k){let{contextDir:f,graph:o,ops:se,by:l}=k,N=k.mintable??oe(),T=W(f);if(o.latestHash!==T)return{record:null,errors:[{code:"STALE_BASIS",detail:`graph opened at ${String(o.latestHash)} but chain head is ${String(T)} \u2014 re-open and retry`}]};let C=[],h=[],M=new Set;for(let e of se){if(o.appliedEvents.has(e.eventId)||M.has(e.eventId)){C.push(e.eventId);continue}M.add(e.eventId),h.push(e)}if(h.length===0)return{record:null,errors:null,applied:[],skipped:C,minted:[],staleDelta:[]};let s=[],$=[],y=[],m=[],I=[],O=[],_=[...k.judgements??[]],D=[],q=new Map,B=new Set,G=[],b=new Set,ie=new Set(N),H=new Set;for(let e of h){if(!ce.has(e.kind))continue;let n=e.target,t=o.resolve(n)?.cid??n;H.has(t)&&s.push({code:"MULTIPLE_TERMINAL_OPS",detail:`${n} has more than one terminal op in this turn \u2014 normalize latest-wins first`}),H.add(t)}let S=(e,n,t)=>{let d=o.resolve(n);if(!d)return s.push({code:"UNKNOWN_NODE",detail:`${e}: ${n} names nothing in the graph`}),null;let p=o.tipOf(d.cid);return p!==t||o.superseded.has(t)?(s.push({code:"EXPECTED_CID_MOVED",detail:`${e}: ${n} moved or was archived since it was displayed`,data:{tip:p}}),null):t};for(let e of h)if(e.kind==="approve"){let n=S("approve",e.target,e.expectedCid);n&&m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l})}else if(e.kind==="reject"){let n=S("reject",e.target,e.expectedCid);if(!n)continue;if(m.push({id:n,kind:"review-item",resolution:"rejected",edit:null,reason:e.reason,by:l}),e.redirectTo!==void 0){let t=o.resolve(e.redirectTo);if(!t||t.superseded){s.push({code:"UNKNOWN_NODE",detail:`reject.redirectTo: ${e.redirectTo} is not a live node`});continue}I.push({kind:"node",old:n,new:t.cid,reason:e.reason,by:l})}}else if(e.kind==="edit"){let n=S("edit",e.target,e.expectedCid);if(!n)continue;let t=o.getNode(n);if(!t){s.push({code:"UNKNOWN_NODE",detail:`edit: ${e.target} node file unreadable`});continue}let d={...t.content};for(let[r,g]of Object.entries(e.edit))g!==void 0&&(d[r]=g);if(typeof d.title=="string"&&!d.title.trim()){s.push({code:"EMPTY_TITLE",detail:`edit: ${e.target} edited title is empty`});continue}let p=A(t.label,d);if(p.length>0){for(let r of p)s.push({code:r.code,detail:`edit ${e.target}: ${r.detail}`});continue}let c=j(t.label,d);if(c===n){m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l});continue}$.push({cid:c,label:t.label,content:d}),I.push({kind:"node",old:n,new:c,reason:e.reason??"edited in chat",by:l}),m.push({id:c,kind:"review-item",resolution:"edited",edit:{...e.edit},reason:null,by:l})}else if(e.kind==="enhance"){if(!S("enhance",e.target,e.expectedCid))continue;for(let t of e.edges){let d=o.nodeLabel.get(t.src)??"(unknown)",p=o.nodeLabel.get(t.dst)??"(unknown)";for(let i of x(t.type,d,p,t.props))s.push({code:i.code,detail:`enhance ${e.target}: ${i.detail}`});let c=F(t.type,t.src,t.dst,t.props);if(o.edgesFrom(t.src).some(i=>i.ecid===c)||y.some(i=>i.ecid===c))continue;let r=Z(o,t.type,t.src,t.dst,G);r&&s.push(r);let g=ee(o,t.type,t.src,t.dst);g&&s.push(g);let a=J(t.type)?.cardinality;if(a==="one-live-per-src"||a==="one-live-per-src-and-dst"){let i=`${t.type}|${t.src}`;b.has(i)&&s.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} from ${t.src}: two one-live edges in one turn`}),b.add(i)}if(a==="one-live-per-src-and-dst"){let i=`${t.type}|dst|${t.dst}`;b.has(i)&&s.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} onto ${t.dst}: two one-live edges in one turn (strict 1:1)`}),b.add(i)}y.push({ecid:c,type:t.type,src:t.src,dst:t.dst,props:t.props}),G.push({src:t.src,dst:t.dst,type:t.type})}}else if(e.kind==="add"){if(!ie.has(e.label)){s.push({code:"GATED_LABEL",detail:`add: ${e.label} is not mintable in v1 (gate: ${N.join("|")})`,data:{gate:[...N]}});continue}let n=o.heads.get(e.convSourceId),t=o.convChains.get(e.convSourceId);if(typeof n!="string"||!t){s.push({code:"CONV_SOURCE_MISSING",detail:`add: ${e.convSourceId} is not a live conversation source`});continue}let d=o.getNode(n)?.content?.blob,p=typeof d=="string"?Q(f,d)?.toString("utf8")??"":"",c=te(p,e.cite.turn);if(c===null){s.push({code:"BAD_ANCHOR",detail:`add: ${w(e.cite.turn)} does not resolve in ${e.convSourceId}`});continue}if(!c.includes(e.cite.quote)){s.push({code:"QUOTE_MISMATCH",detail:`add: quote is not verbatim within ${w(e.cite.turn)}`});continue}let r={...e.content,derived:!0},g=A(e.label,r);if(g.length>0){for(let u of g)s.push({code:u.code,detail:`add: ${u.detail}`});continue}let a=j(e.label,r),i={source_id:e.convSourceId,source_cid:n,anchor:w(e.cite.turn),quote:e.cite.quote};for(let u of x(L.DERIVES,"source",e.label,i))s.push({code:u.code,detail:`add: ${u.detail}`});$.push({cid:a,label:e.label,content:r}),y.push({ecid:F("DERIVES",n,a,i),type:L.DERIVES,src:n,dst:a,props:i}),e.rationale&&_.push({about:a,rationale:e.rationale,by:l});let P=typeof r.title=="string"?r.title:typeof r.intent=="string"?r.intent:"",v=P?X(e.label,P,u=>B.has(u)||o.names.has(u)&&!o.superseded.has(o.names.get(u))):null;v!==null&&(B.add(v),O.push({cid:a,slug:v,by:l})),D.push({cid:a,...v!==null?{slug:v}:{}}),q.set(e.eventId,a)}if(s.length)return{record:null,errors:s};let U=new Date().toISOString();for(let e of h){if(e.kind==="add"){let n=q.get(e.eventId);n&&V(f,{ts:U,command:"extract-chat",id:n,verdict:"add",polarity:"preference",tag:e.label,by:l,event_id:e.eventId,target:n});continue}for(let n of ne(e,{ts:U,command:"extract-chat",by:l}))V(f,n)}let K=h.map(e=>e.eventId).sort(),re=Y(f,{ts:new Date().toISOString(),proposal_id:null,nodes:$,edges:y,review:m,supersessions:I,...O.length>0?{names:O}:{},..._.length>0?{judgements:_}:{},event_ids:K,source_head_moves:{}},{expectPrev:T}),R=z(f),E=new Set;for(let e of I)if(e.kind==="node"){E.add(e.old);for(let n of R.edgesInto(e.old))E.add(n.src)}for(let e of D)E.add(e.cid);let de=[...E].map(e=>({cid:e,state:R.stale(R.tipOf(e))})).filter(e=>e.state!=="fresh");return{record:re.record,errors:null,applied:K,skipped:C,minted:D,staleDelta:de}}export{Ie as commitChatTurn};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as H,b as V,c as J,d as K}from"./chunk-DM2GL24Z.js";import{b as L,d as F}from"./chunk-VJUIW2ES.js";import
|
|
2
|
+
import{a as H,b as V,c as J,d as K}from"./chunk-DM2GL24Z.js";import"./chunk-6PS65QFF.js";import{b as L,d as F}from"./chunk-VJUIW2ES.js";import{d as z}from"./chunk-KHDUQ33H.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";var ee=new Set(["approve","edit","reject"]);function te(i,t){return`chatop:${t}:${i.target??"new"}:${i.op}:${i.seq}`}function ne(i,t,k,c){let a=te(i,t),m=i.payload;switch(i.op){case"approve":return{kind:"approve",target:i.target,expectedCid:i.expected_cid,eventId:a};case"edit":{let{reason:r,...h}=m;return{kind:"edit",target:i.target,expectedCid:i.expected_cid,edit:h,reason:r,eventId:a}}case"enhance":return{kind:"enhance",target:i.target,expectedCid:i.expected_cid,edges:m.edges??[],eventId:a};case"reject":return{kind:"reject",target:i.target,expectedCid:i.expected_cid,reason:m.reason??"",redirectTo:m.redirect_to,eventId:a};case"add":{let r=m.proposal_item??{},h=String(r.label??"");if(!k.mint_gate.includes(h))throw new Error(`GATED_LABEL: cannot mint "${h}" (gate: ${k.mint_gate.join(", ")})`);let d=r.cite??{},u=r.conv_source_id??c;if(!u||typeof d.turn!="number"||!d.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:h,content:r.content??{},cite:{turn:d.turn,quote:d.quote},convSourceId:u,rationale:r.rationale,eventId:a}}}}function X(i,t,k={}){let c=k.turn??0,a=[],m=[];for(let d of i)(d.op==="add"||d.op==="enhance")&&m.push(d);let r=new Map;for(let d of i){if(!ee.has(d.op)||!d.target)continue;let u=r.get(d.target)??[];u.push(d),r.set(d.target,u)}for(let[d,u]of r){let _=Math.max(...u.map(y=>y.seq)),C=u.filter(y=>y.seq===_);if(C.length>1){a.push({target:d,seq:_,kinds:C.map(y=>y.op)});continue}m.push(C[0])}return{chatOps:m.sort((d,u)=>d.seq-u.seq).map(d=>ne(d,c,t,k.convSourceId)),ambiguous:a}}function re(i,t){let k=i.trim();if(k==="")return{kind:"defaults"};if(/^defer$/i.test(k))return{kind:"defer-all"};let c=t.cursor,a=k,m=/^(\d+):\s*(.*)$/.exec(k);if(m){let u=Number(m[1]);if(u<1||u>t.questions.length)return{kind:"invalid",target:null,message:`no question ${u} \u2014 this batch has ${t.questions.length}`};if(c=u-1,a=m[2].trim(),!a)return{kind:"invalid",target:c,message:`say what to answer \u2014 e.g. \`${u}: yes\``}}if(c<0||c>=t.questions.length)return{kind:"invalid",target:null,message:"no pending question to answer"};let r=t.questions[c],h=/^"(.*)"$/.exec(a);if(h)return r.allow_free_text?{kind:"free",target:c,text:h[1]}:{kind:"invalid",target:c,message:`question ${c+1} takes an option (1-${r.options.length}) \u2014 free text isn't allowed here`};if(r.multi_select&&/^\d+(\s+\d+)+$/.test(a)){let u=a.split(/\s+/).map(Number);if(u.every(_=>_>=1&&_<=r.options.length))return{kind:"multi",target:c,indices:u.map(_=>_-1)}}if(/^\d+$/.test(a)){let u=Number(a);if(u>=1&&u<=r.options.length)return{kind:"option",target:c,index:u-1}}let d=r.options.findIndex(u=>u.label.toLowerCase()===a.toLowerCase());return d>=0?{kind:"option",target:c,index:d}:r.allow_free_text?{kind:"free",target:c,text:a}:{kind:"invalid",target:c,message:`question ${c+1} takes an option \u2014 type 1-${r.options.length} or an option name`}}function Y(i){let t=i.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function ie(i){return i.use_cases??[]}function se(i){let t=[],k=[],c=(r,h)=>{h.length!==0&&(k.push(r),t.push(...h))},a=r=>typeof r=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(r)?r:null,m=r=>{let h=a(r.automates)??"1 scenario",d=r.verifies??[],u=d.map(a).filter(y=>y!==null).slice(0,2),_=d.length-u.length,C=u.length?`${u.join(" ")}${_>0?` +${_}`:""}`:`${d.length} ACs`;return`covers ${h} \xB7 verifies ${C}`};return c("acs",(i.acs??[]).map(r=>({temp_ref:r.temp_ref,title:r.text,kind:"ac",badge:String(r.kind),extra:{...r.expected_answer?{expects:`${String(r.expected_answer.operator??"")} \xB7 ${String(r.expected_answer.operand??"")}`}:{},"scoped to":r.scoped_to??"(use-case)"}}))),c("scenarios",(i.scenarios??[]).map(r=>({temp_ref:r.temp_ref,title:r.title,kind:"scenario",badge:r.case_type,why:r.intent,depends_on_hint:r.depends_on??[],extra:{technique:r.technique_notes}}))),c("tests",(i.tests??[]).map(r=>({temp_ref:r.temp_ref,title:r.title,kind:"test",why:m(r),depends_on_hint:r.reuses??[],extra:{automates:String(r.automates??"?"),verifies:(r.verifies??[]).join(", "),check:r.check?`${String(r.check.kind)} vs ${String(r.check.verified_against)}`:"?"}}))),c("gaps",(i.gaps??[]).map(r=>({temp_ref:r.temp_ref??r.ref??"?",title:String(r.question?.header??r.kind),kind:"gap",badge:r.kind,why:r.risk_rationale}))),{items:t,heading:k.join(" + ")||"design"}}function ge(i={}){let t={turns:[],thinking:V(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null},k=e=>{let n=[],o=e.minted.map(p=>p.slug).filter(Boolean);o.length&&n.push(`added ${o.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},c=[];i.onRender&&c.push(i.onRender);let a=0,m=0,r=null,h=null,d=null,u=[],_=0,C=e=>{if(!(!d||!i.contextDir||!e.trim()))try{let n=i.refreshGraph?.()??i.graph;if(!n)return;F({contextDir:i.contextDir,graph:n,sourceId:d,text:e,by:i.by??{kind:"human",id:"owner"}})}catch{}},y=e=>{if(!d||!i.contextDir)return;let n=i.refreshGraph?.()??i.graph,o=n?.heads.get(d),s=n?.convChains.get(d);if(!n||typeof o!="string"||!s)return;let p=n.getNode(o)?.content?.blob,f=typeof p=="string"?z(i.contextDir,p)?.toString("utf8")??"":"";if(f)for(let v of e){if(v.kind!=="add"||v.convSourceId!==d)continue;let T=L(f,v.cite.turn);if(!(T!==null&&T.includes(v.cite.quote)))for(let $=s.turns;$>=1;$--){let D=L(f,$);if(D!==null&&D.includes(v.cite.quote)){v.cite={...v.cite,turn:$};break}}}},M=null,j=new Map,P=new Map,E=null,x=()=>{R&&(clearTimeout(R),R=null);for(let e of c)e()},R=null,N=()=>{R||(R=setTimeout(()=>{R=null;for(let e of c)e()},80))},l=e=>{t.ledger.push(e)},I=()=>{t.activeTurn&&(t.activeTurn=null)},Q=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),B=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,p)=>{let f=e.resolution[p];return f.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:f.free_text!=null?{id:s.id,selected_index:null,free_text:f.free_text}:{id:s.id,selected_index:f.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let o=M;M=null,o?.(n)},A=(e,n)=>{let o=t.pending,s=o.questions[e],p=o.resolution[e];o.resolution[e]=n;let f=Y(s);p?l({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:f,choice:Q(s,n),prev:p.choice}}):n.form==="deferred"?l({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:f}}):l({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:f,choice:Q(s,n)}})},O=()=>{let e=t.pending;e&&(e.questions.forEach((n,o)=>{e.resolution[o]||A(o,{form:"deferred",selected_index:null,free_text:null,choice:""})}),B())},G=e=>({questions:e,cursor:0,resolution:e.map(()=>null)}),Z=e=>{let n=t.pending;t.notice=void 0;let o=re(e,n);switch(o.kind){case"invalid":t.notice=o.message;return;case"defaults":{let s=!1;if(n.questions.forEach((p,f)=>{if(!n.resolution[f]){if(p.risk==="high"){s=!0;return}A(f,{form:"assumed",selected_index:p.recommended_index,free_text:null,choice:p.options[p.recommended_index]?.label??"?"})}}),s){n.cursor=n.questions.findIndex((p,f)=>!n.resolution[f]),t.notice="high-risk questions need an explicit answer (or type 'defer' to leave them with the agent)";return}break}case"defer-all":O();return;case"option":{let s=n.questions[o.target];A(o.target,{form:"answered",selected_index:o.index,free_text:null,choice:s.options[o.index]?.label??String(o.index+1)});break}case"free":A(o.target,{form:"answered",selected_index:null,free_text:o.text,choice:o.text});break;case"multi":{let s=n.questions[o.target],p=o.indices[0];A(o.target,{form:"answered",selected_index:p,free_text:null,choice:s.options[p]?.label??String(p+1)}),t.notice="multi-select not yet supported end-to-end \u2014 sent your first choice";break}}B()};return{state:t,explainRef(e){if(!i.explain||!i.graph||i.contextDir===void 0){l({kind:"note",text:"explain isn't available here"}),x();return}let n=i.explain(i.contextDir,i.graph,e),o=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
|
|
3
3
|
`):`unknown ref: ${e}`;l({kind:"note",text:o}),x()},subscribe(e){return c.push(e),()=>{let n=c.indexOf(e);n>=0&&c.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),t.pending){Z(e),x();return}if(!r){t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",x();return}for(t.notice=void 0,t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),C(e),t.status="streaming",t.error=void 0,m+=1;u.length>0;)m+=1,r({type:"user_message",message_id:`u${m}-receipt`,text:u.shift()});r({type:"user_message",message_id:`u${m}`,text:e}),x()},attachSender(e){r=e},attachOnCommitted(e){h=e},attachConversationSource(e){d=e},holdReceipt(e){u.push(e),l({kind:"note",text:e}),x()},drainHeldReceipts(){return u.splice(0,u.length)},note(e){l({kind:"note",text:e}),x()},registerAliases(e){for(let n of e)P.set(n.ref,n.cid)},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}x()},ledger(e){(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&I(),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),l(e),x()},completeSession(){O(),r?.({type:"session_complete"}),t.status="idle",x()},requestPause(){O(),t.status="pausing";let e=r;Promise.resolve().then(()=>e?.({type:"pause"})),x()},ask(e){return t.pending=G(e),j=new Map(e.map((n,o)=>[n.id,o+1])),t.status="awaiting-input",x(),new Promise(n=>{M=n})},noteCoercion(e,n){l({kind:"answer",receipt:{form:"assumed",qNum:j.get(e.id)??0,stub:Y(e),choice:n,note:"your typed answer couldn't be used here"}}),x()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=K(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)l({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")l({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let o=`\xB7 ${J(e)}`,s=t.ledger[t.ledger.length-1];s&&s.kind==="note"&&s.text===o||l({kind:"note",text:o})}}if(e.type==="reasoning_delta"){N();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits},l({kind:"usage",credits:e.credits,total:e.total_credits});break;case"text_delta":{let n=E;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(E={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},N();return}case"progress":break;case"proposal":{a+=1,I(),t.stream=null;let n=ie(e.proposal),o=i.dedupFlags?.(e.proposal);if(o)for(let s of n){let p=o.get(s.temp_ref);p&&(s.matches_existing=p)}t.turns.push({role:"agent",turnIndex:a,items:n,text:e.narrative}),e.narrative&&l({kind:"agent",text:e.narrative}),t.activeTurn={turnIndex:a,heading:"use-cases",items:n},l({kind:"turn",turnIndex:a,heading:"use-cases",items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{a+=1,I(),t.stream=null;let{items:n,heading:o}=se(e.design);l({kind:"banner",text:`phase: ${o}`}),t.turns.push({role:"agent",turnIndex:a,items:n,itemsHeading:o,text:e.narrative}),e.narrative&&l({kind:"agent",text:e.narrative}),t.activeTurn={turnIndex:a,heading:o,items:n},l({kind:"turn",turnIndex:a,heading:o,items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=G(e.questions),t.status="awaiting-input";break;case"chat_ops":{a+=1,I(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,o=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",p=i.refreshGraph?.()??i.graph,f=g=>P.get(g)??g,v=o.map(g=>{if(!g.target)return g;let b=f(g.target),w=g.expected_cid;if(w==null&&p){let U=p.resolve(b);U&&(w=p.tipOf(U.cid))}let q=g.payload?.redirect_to,S=q&&f(q);return b===g.target&&w===g.expected_cid&&S===q?g:{...g,target:b,expected_cid:w,...S!==q?{payload:{...g.payload,redirect_to:S}}:{}}}),T;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");T=X(v,i.descriptor??{mint_gate:[]},{turn:a,...d?{convSourceId:d}:{}})}catch(g){t.error=g instanceof Error?g.message:String(g),t.turns.push({role:"agent",turnIndex:a,text:s,narration:t.error}),s&&l({kind:"agent",text:s}),l({kind:"error",title:t.error,detail:[]});break}let{chatOps:$,ambiguous:D}=T;if(D.length>0){let g=D[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${g.kinds.filter(b=>b!=="edit").join("/")} on ${g.target}?`},t.turns.push({role:"agent",turnIndex:a,text:s}),s&&l({kind:"agent",text:s});break}if(s&&l({kind:"agent",text:s}),y($),i.commitChatTurn&&$.length>0){let g=i.commitChatTurn({contextDir:i.contextDir??"",graph:i.refreshGraph?.()??i.graph,ops:$,by:i.by??{kind:"human",id:"owner"},...i.descriptor?.mint_gate?{mintable:i.descriptor.mint_gate}:{}});if(g.errors)t.error=g.errors.map(b=>b.detail).join("; "),t.turns.push({role:"agent",turnIndex:a,text:s}),l({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:g.errors.map(b=>`${b.code}: ${b.detail}`)});else{g.applied.length>0&&i.session?.markApplied(g.applied);let b=k(g);t.turns.push({role:"agent",turnIndex:a,text:s,narration:b}),l({kind:"commit",ok:!0,line:`committed: ${b}`});let w=i.refreshGraph?.();if(w&&h&&h(w),w)try{_+=1;let W=i.descriptor?.mint_gate?.includes("usecase")?"extract":"design",q=H({verb:W,commitN:_,phase:"chat",committed:g.minted.map(S=>({cid:S.cid,...S.slug?{logical_id:S.slug}:{}}))},w);u.push(q.text),l({kind:"note",text:q.text})}catch{}}}else t.turns.push({role:"agent",turnIndex:a,text:s});C(s);break}case"done":case"session_complete":I(),t.status="idle",r=null;break;case"error":I(),t.stream=null,t.status="idle",t.error=e.message,r=null,l({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}x()}}}export{ge as makeChatController,re as parseAnswerInput,Y as questionStub};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as m}from"./chunk-L5LI2JF4.js";import{c as p}from"./chunk-
|
|
2
|
+
import{b as m}from"./chunk-L5LI2JF4.js";import{c as p}from"./chunk-QIE62H3J.js";import{randomUUID as E}from"crypto";import{mkdirSync as F,writeFileSync as f,appendFileSync as O,existsSync as v}from"fs";import{join as u}from"path";import{writeFileSync as w,mkdirSync as x,existsSync as I}from"fs";import{join as h,relative as j}from"path";function _(n){let t=Object.keys(n.frontmatter).length>0?m(n.frontmatter).trimEnd():"",s=["---"];return t&&s.push(t),s.push("---",""),s.push(`# ${n.heading}`,""),n.steps.forEach((i,r)=>{s.push(`## Step ${r+1}`,i,"")}),s.join(`
|
|
3
3
|
`)}function C(n,e){let t={},s={},i=e;for(let[r,l]of Object.entries(n)){if(r.startsWith("global.")||r.startsWith("secrets.user.")||r.startsWith("environment.")){let o=r.startsWith("secrets.user.");t[r]={value:l.value,secret:o,syntax:`{{${r}}}`,type:o?"secret":r.startsWith("environment.")?"environment":"global"},s[r]=r;continue}if(l.secret){let o=`secrets.user.${r}`;t[o]={value:l.value,secret:!0,syntax:`{{secrets.user.${r}}}`,type:"secret"},s[r]=o,i=i.replaceAll(`{{${r}}}`,`{{secrets.user.${r}}}`)}else{let o=`global.${r}`;t[o]={value:l.value,secret:!1,syntax:`{{global.${r}}}`,type:"global"},s[r]=o,i=i.replaceAll(`{{${r}}}`,`{{global.${r}}}`)}}return{variables:t,objective:i,keyMap:s}}var y=/\{\{\s*(?:global|secrets\.user|environment)\.([^{}]+?)\s*\}\}/g;function c(n){return typeof n!="string"||!n.includes("{{")?n:n.replace(y,"{{$1}}")}function d(n){if(typeof n=="string")return c(n);if(Array.isArray(n))return n.map(e=>d(e));if(n&&typeof n=="object"){let e={};for(let[t,s]of Object.entries(n))e[t]=d(s);return e}return n}var L=new Set(["username","access_key","oauth","profile","project_id","folder_id"]),N=new Set(["model","env"]),g=class{constructor(e){this.opts=e}objectives=[];flushed=!1;lastWrittenPath=null;lastCollisionSuffixed=!1;appendObjective(e){this.objectives.push(e)}flush(){if(this.flushed||(this.flushed=!0,this.objectives.length===0))return;let e=this.opts.getName();if(!e)return;let t=h(this.opts.cwd,".testmuai","tests");try{x(t,{recursive:!0})}catch(a){process.stderr.write(`
|
|
4
4
|
\u26A0 Failed to create ${j(this.opts.cwd,t)}/
|
|
5
5
|
${a.message}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as t}from"./chunk-
|
|
2
|
+
import{a as t}from"./chunk-4G4HPMR2.js";async function l(e){let o=e.credentials.expires_at,i=e.thresholdSeconds??300;if(o-Date.now()/1e3>=i)return null;let r=e.creds.loadClient(e.profile,e.env);if(!r)return null;let n=await new t(e.env).refreshToken(e.credentials.refresh_token,r.client_id),s=Math.floor(Date.now()/1e3)+n.expires_in;return e.creds.saveCredentials(e.profile,e.env,{access_token:n.access_token,refresh_token:n.refresh_token,expires_at:s,scope:n.scope}),{accessToken:n.access_token,refreshToken:n.refresh_token,expiresAt:s,scope:n.scope}}export{l as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as J}from"./chunk-
|
|
2
|
+
import{b as J}from"./chunk-IDDVO4UV.js";import{e as H,g as P}from"./chunk-M5JQXOCE.js";import{a as ce}from"./chunk-6YGTRKDT.js";import{e as ue}from"./chunk-UR6MHSHU.js";var u=ue(ce(),1);function $(p,r){let f=null,R=(b,j)=>{for(let S=0;S<b.length;S++){let y=b[S],l=[...j,S];r(y)&&(f===null||l.length>f.length)&&(f=l),y.children&&y.children.length>0&&R(y.children,l)}};return R(p,[]),f}function T(p,r,f){if(r.length===0)return[...p];let R=r[0],b=[...p],j=b[R];if(r.length===1)b[R]=f(j);else{let S=r.slice(1),y=T(j.children??[],S,f);b[R]={...j,children:y}}return b}function K(){return{steps:[],maxOrdinal:0}}function le(p,r){if(r.type==="run_start"&&r.environment?.resolution)return{...p,resolution:r.environment.resolution};if(r.type==="step_end"&&typeof r.ordinal=="number"&&r.id){let f={id:r.id,ordinal:r.ordinal,status:r.status,...r.kind?{kind:r.kind}:{},...typeof r.duration=="number"?{duration_ms:Math.round(r.duration*1e3)}:{},...typeof r.action_id=="string"&&r.action_id?{action_id:r.action_id}:{}};return{...p,steps:[...p.steps,f],maxOrdinal:Math.max(p.maxOrdinal,r.ordinal)}}return p}function D(p){let r=p.indexOf(": ");return r>0&&r<15?p.slice(r+2):p}function W(p){return p.map(r=>{let f=r.children?W(r.children):r.children;return r.status==="running"?{...r,status:"stopped",phase:void 0,children:f}:f!==r.children?{...r,children:f}:r})}function Se(p,r,f,R,b){let[j,S]=(0,u.useState)(!1),[y,l]=(0,u.useState)([]),[Q,B]=(0,u.useState)(null),[X,F]=(0,u.useState)(null),[Y,w]=(0,u.useState)(null),[Z,L]=(0,u.useState)(null),[ee,q]=(0,u.useState)([]),[ne,G]=(0,u.useState)(null),[te,ie]=(0,u.useState)(void 0),m=(0,u.useRef)(null),x=(0,u.useRef)(null),_=(0,u.useRef)(0),A=(0,u.useRef)(!1),O=(0,u.useRef)(K()),re=(0,u.useCallback)(async(I,V)=>{let z=m.current;if(z){try{await z.exited}catch{}m.current=null}l([]),B(null),F(null),w(null),L(null),q([]),G(null),ie(I.max_steps),S(!0),x.current=null,_.current=0,O.current=K();let h;try{h=J(I,V)}catch(E){w(E instanceof Error?E.message:String(E)),S(!1);return}m.current=h,H("runner",()=>h.cancel()),(async()=>{A.current=!1;let E=!1;for await(let e of h.events){if(A.current)break;switch(O.current=le(O.current,e),e.type){case"run_start":if(e.child_id)break;if(x.current&&!x.current.isSingleFlow){let o=_.current;_.current++,l(d=>d.map((i,s)=>s===o?{...i,status:"running"}:i.status==="running"&&!i.children?.some(n=>n.status==="running")?{...i,status:i.children?.some(n=>n.status==="failed")?"failed":"passed"}:i))}break;case"bifurcation":{let o=e.flows??[],d=e.count??o.length,i={flows:o,isSingleFlow:e.is_single_flow??d<=1};L(i),x.current=i,_.current=0,l(o.map((s,n)=>({index:n+1,objective:s??`Flow ${n+1}`,status:"pending"})));break}case"step_start":{r?.("STEP_START",`Step ${e.index} started`,{index:e.index,objective:e.objective,child_id:e.child_id});let o=e.index,d=e.objective??`Step ${o}`,i=e.child_id,s=x.current&&!x.current.isSingleFlow;if(i)l(n=>{let t=$(n,a=>a.branchChildId===i)??$(n,a=>a.status==="running");return t?T(n,t,a=>{let c=(a.children??[]).map(g=>g.status==="running"&&g.childId===i?{...g,status:"stopped",phase:void 0}:g);return c.push({index:o,objective:d,status:"running",childId:i}),{...a,children:c}}):n});else if(s){let n=Math.max(0,_.current-1);l(t=>{let a=[...t];if(n>=a.length)return t;let c={...a[n]},k=[...c.children??[]].map(U=>U.status==="running"&&U.childId===void 0?{...U,status:"stopped",phase:void 0}:U);return k.push({index:o,objective:d,status:"running"}),c.children=k,c.status="running",a[n]=c,a})}else l(n=>{let t=W(n);return t.some(c=>c.index===o)?t.map(c=>c.index===o?{...c,status:"running",objective:d}:c):[...t,{index:o,objective:d,status:"running"}]});break}case"step_event":{r?.("STEP_EVENT",`Step ${e.index} ${e.event}`,{index:e.index,phase:e.event,action_type:e.action_type,detail:e.detail,child_id:e.child_id});let o=e.child_id,d=x.current&&!x.current.isSingleFlow;if(e.event==="cm_init"&&e.checkpoint_count!=null){q(i=>[...i,e.checkpoint_count]);break}if(e.event==="replay_started"){G({recordingLength:e.recording_length??0});break}if(e.event==="reasoning"&&e.detail&&e.detail!=="reasoning"&&f?.(e.detail),o){let i=n=>{if(n.index!==e.index||n.childId!==o)return n;let t={phase:e.event};return e.event==="reasoning"&&e.detail&&e.detail!=="reasoning"&&(t.objective=e.detail),e.action_type&&(t.actionType=e.action_type),{...n,...t}},s=n=>n.map(t=>{let a=i(t);return a!==t?a:t.children&&t.children.length>0?{...t,children:s(t.children)}:t});l(n=>n.map(t=>t.children?{...t,children:s(t.children)}:t))}else if(d){let i=Math.max(0,_.current-1);l(s=>{let n=[...s];if(i>=n.length)return s;let t={...n[i]},a=[...t.children??[]];if(!a.some(g=>g.index===e.index&&g.childId===void 0))a.push({index:e.index,objective:`Step ${e.index}`,status:"running",phase:e.event,actionType:e.action_type});else for(let g=0;g<a.length;g++){if(a[g].index!==e.index||a[g].childId!==void 0)continue;let k={phase:e.event};e.event==="reasoning"&&e.detail&&e.detail!=="reasoning"&&(k.objective=e.detail),e.action_type&&(k.actionType=e.action_type),a[g]={...a[g],...k}}return t.children=a,n[i]=t,n})}else l(i=>i.some(n=>n.index===e.index)?i.map(n=>{if(n.index!==e.index)return n;let t={phase:e.event};return e.event==="reasoning"&&e.detail&&e.detail!=="reasoning"&&(t.objective=e.detail),e.action_type&&(t.actionType=e.action_type),{...n,...t}}):[...W(i),{index:e.index,objective:`Step ${e.index}`,status:"running",phase:e.event,actionType:e.action_type}]);break}case"step_end":{r?.("STEP_END",`Step ${e.index} ${e.status}`,{index:e.index,status:e.status,duration:e.duration,summary:e.summary,child_id:e.child_id}),R?.();let o=e.child_id,d=x.current&&!x.current.isSingleFlow;if(o){let i=n=>n.index===e.index&&n.childId===o?{...n,status:e.status,duration:e.duration,phase:void 0,objective:n.objective.startsWith("Step ")?D(e.summary||n.objective):n.objective}:n,s=n=>n.map(t=>{let a=i(t);return a!==t?a:t.children&&t.children.length>0?{...t,children:s(t.children)}:t});l(n=>n.map(t=>t.children?{...t,children:s(t.children)}:t))}else if(d){let i=Math.max(0,_.current-1);l(s=>{let n=[...s];if(i>=n.length)return s;let t={...n[i]},a=(t.children??[]).map(c=>c.index===e.index&&c.childId===void 0?{...c,status:e.status,duration:e.duration,phase:void 0,objective:c.objective.startsWith("Step ")?D(e.summary||c.objective):c.objective}:c);return t.children=a,n[i]=t,n})}else l(i=>i.map(s=>s.index===e.index?{...s,status:e.status,duration:e.duration,phase:void 0,objective:s.objective.startsWith("Step ")?D(e.summary||s.objective):s.objective}:s));{let s=x.current&&!x.current.isSingleFlow?Math.max(0,_.current-1):0,n=typeof e.ordinal=="number"&&e.id?{ordinal:e.ordinal,id:e.id}:void 0;p?.(e.index,s,e.child_id,n)}break}case"child_agent_start":{let o=e.objective??"",d=e.child_id;l(i=>{let s=$(i,n=>n.status==="running");return s?T(i,s,n=>({...n,objective:`${o} (branch)`,phase:`child: ${o.slice(0,50)}`,branchObjective:o,branchChildId:d})):i});break}case"child_agent_end":{let o=e.child_id,d=`child ${e.success?"done":"failed"}`;l(i=>{let s=$(i,n=>n.branchChildId===o);return s?T(i,s,n=>({...n,phase:d})):i.map(n=>n.phase?.startsWith("child:")?{...n,phase:d}:n)});break}case"describe_trigger":b?.(e);break;case"ask_user":B(e.question??"");break;case"run_end":l(o=>o.map(d=>d.status==="running"?{...d,status:e.status,phase:void 0}:d)),S(!1),F(e),E=!0;break;case"error":S(!1),w(e.message??"Runner error"),l(o=>o.map(d=>d.status==="running"?{...d,status:"failed",phase:void 0}:d));break}}let{code:v,signal:M}=await h.exited,N=h.stderr,de=v===0&&!M,C=[];v!==null&&v!==0&&C.push(`Runner exited with code ${v}`),M&&C.push(`Runner killed by signal ${M}`),N&&(!de||!E?C.push(N):V?.log?.("debug","RUNNER_STDERR_BENIGN","Runner stderr on clean exit",{stderr:N})),m.current===h&&(C.length>0&&w(C.join(`
|
|
3
3
|
`)),S(!1),P("runner","Event stream ended"),m.current=null)})().catch(E=>{let v=[`Runner event loop error: ${E}`];h.exitCode!==null&&h.exitCode!==0&&v.push(`Exit code: ${h.exitCode}`),h.exitSignal&&v.push(`Signal: ${h.exitSignal}`),h.stderr&&v.push(h.stderr),m.current===h&&(w(v.join(`
|
|
4
4
|
`)),S(!1),P("runner","Event loop error"),m.current=null)})},[p,r,f,R,b]),se=(0,u.useCallback)(I=>{m.current?.sendUserResponse(I),B(null)},[]),ae=(0,u.useCallback)(()=>{let I=m.current;I&&(I.sendCancel("user"),S(!1),B(null),setTimeout(()=>{m.current===I&&(P("runner","User cancelled run"),m.current=null)},5e3))},[]),oe=(0,u.useCallback)(()=>{l([]),F(null),w(null)},[]);return(0,u.useEffect)(()=>()=>{A.current=!0,P("runner","Component unmounted"),m.current=null},[]),{isRunning:j,steps:y,askingUser:Q,lastRunEnd:X,runError:Y,bifurcationInfo:Z,cmInitCounts:ee,replayInfo:ne,maxSteps:te,startRun:re,sendAnswer:se,cancelRun:ae,clearLastRun:oe,getEvidenceState:()=>O.current}}export{K as a,le as b,Se as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as
|
|
2
|
+
import{a as n}from"./chunk-RZ4F3BHX.js";import{a as c}from"./chunk-YIOWO6WS.js";import{u as s,v as a}from"./chunk-QIE62H3J.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as Tt,d as Qr}from"./chunk-
|
|
2
|
+
import{c as sn}from"./chunk-GIGD4M7V.js";import{c as Tt,d as Qr}from"./chunk-D5DEWIAU.js";import{d as Wr}from"./chunk-2YQ6TW77.js";import{a as Lt,b as Zr,c as et,d as tt,e as Xr,f as Dt,g as rn,h as nn}from"./chunk-LMJTY32X.js";import{a as Te,b as ne,e as _e,f as xt,k as Yr,p as he,q as Pt,t as Jr}from"./chunk-RKWJG3WW.js";import{b as Se}from"./chunk-2U5DZUC7.js";import{a as Ze,b as At}from"./chunk-44QUA6GV.js";import{a as Or,b as Et}from"./chunk-IDDVO4UV.js";import{a as Le,b as en}from"./chunk-C5UNZ6ZY.js";import{c as tn}from"./chunk-S3DAAAE5.js";import{a as we}from"./chunk-WAOCHXJ5.js";import{B as jr,C as Fr,D as Nr,F as $r,G as Mr,I as Vr,J as Kr,K as Hr,X as qr,aa as Gr,ba as zr,j as Xe,x as Ur}from"./chunk-YSK535OI.js";import{a as Br}from"./chunk-BC7UVJJB.js";import{a as xr,c as kt,d as Ct,e as Qe,f as Pr,g as Tr}from"./chunk-M5JQXOCE.js";import{g as Lr,h as Dr}from"./chunk-HR7AGYV2.js";import{a as Je}from"./chunk-2WVKOZ6W.js";import{a as We,b as Ar}from"./chunk-NLCCBXXV.js";import{a as M}from"./chunk-RZ4F3BHX.js";import{a as re}from"./chunk-YIOWO6WS.js";import{a as Cr}from"./chunk-E47GFYXA.js";import{a as ze,c as _t,i as Er,j as Ye,k as It,l as Rt}from"./chunk-QIE62H3J.js";import{join as le,basename as as}from"path";import{existsSync as Ro,readFileSync as cs}from"fs";function on(e,t){if(process.env.KANE_REPLAY_TRACE==="1")for(let r=0;r<e.steps.length;r++){let n=e.steps[r],s=t[r],o=" ".repeat(n.trace.length-1),i=`step ${n.flatIndex}`;s.kind==="replay"?process.stderr.write(`[replay-trace] ${o}${i}: REPLAY (would skip; v1 always authors)
|
|
3
3
|
`):process.stderr.write(`[replay-trace] ${o}${i}: AUTHOR (${s.reason})
|
|
4
4
|
`)}}function Ie(e){process.env.KANE_REPLAY_TRACE==="1"&&process.stderr.write(e)}function an(e,t){let r=e===0?"(none)":`0..${e-1}`,n=e>=t?"(none)":`${e}..${t-1}`;Ie(`[replay-trace] phase: replay ${r}, author ${n}
|
|
5
5
|
`)}function ln(e,t){Ie(`[replay-trace] step ${e}: REPLAY ${t==="ok"?"OK":"FAILED"}
|
|
@@ -44,7 +44,7 @@ import{c as Tt,d as Qr}from"./chunk-VXD5667K.js";import{a as Lt,b as Zr,c as et,
|
|
|
44
44
|
`);else if(_r&&(_||m.isFirstRun))process.stderr.write(`note: --no-evidence-publish has no effect on author/commit runs
|
|
45
45
|
`);else if(Ir){let d=c.basicAuth,u=L,g=F,b=await ss({controller:new we(A.controllerBaseUrl,{username:d.username,accessKey:d.access_key}),tms:new Je(A.tmsBaseUrl,c.resolvedCreds?.username??d.username,c.resolvedCreds?.access_key??d.access_key),testId:m.testId,sessionId:l.sessionId,executionId:u.executionId,sealedPackPath:Z.pack,projectId:g});b.ok?l.log("info","EVIDENCE_INGESTED","Replay evidence uploaded and ingested",{execution_id:u.executionId,project_id:g}):(l.log("warn","EVIDENCE_PUBLISH_FAILED","Replay evidence publish failed",{execution_id:u.executionId,stage:b.stage,error:b.error}),process.stderr.write(` \u26A0 evidence publish failed (${b.stage}): ${b.error}
|
|
46
46
|
`)),t.onAgentEvent({type:"test_md_evidence_ingest",status:b.ok?"ok":"failed",evidence_id:u.executionId,...b.ok?{}:{stage:b.stage}})}await Lo(n,m,l,z.outcomes,z.overallStatus,Ve,ge,oe.uploadResult,j,o,{resolvedAuth:c,tmsBaseUrl:A.tmsBaseUrl},_,J);try{let d=he(n);if(Qr({shouldUploadPipeline:He,uploadSucceeded:!!oe.uploadResult?.success,metaCommitId:d?.commit_id,metaTestId:d?.test_id})){let u=await Tt({sourcePath:n,testId:d.test_id,sessionId:l.sessionId,commitId:d.commit_id,controller:new we(A.controllerBaseUrl,{username:c.basicAuth.username,accessKey:c.basicAuth.access_key})});u.ok?l.log("info","BUNDLE_SYNC_OK","testmd bundle pushed",{commit_id:d.commit_id,bytes:u.bytes}):(l.log("warn","BUNDLE_SYNC_FAILED","testmd bundle sync failed",{commit_id:d.commit_id,stage:u.stage,error:u.error}),process.stderr.write(` \u26A0 bundle sync failed (${u.stage}): ${u.error}
|
|
47
|
-
`)),t.onAgentEvent({type:"test_md_bundle_sync",status:u.ok?"ok":"failed",commit_id:d.commit_id,path:n,...u.ok?{bytes:u.bytes}:{stage:u.stage}})}}catch(d){l.log("warn","BUNDLE_SYNC_FAILED","testmd bundle sync threw",{error:d instanceof Error?d.message:String(d)})}if(He&&oe.uploadResult?.success)for(let d of m.unitLocks)try{let u=he(d.file);if(u?.commit_id!==l.sessionId||!u?.test_id)continue;let g=await Tt({sourcePath:d.file,testId:String(u.test_id),sessionId:l.sessionId,commitId:String(u.commit_id),controller:new we(A.controllerBaseUrl,{username:c.basicAuth.username,accessKey:c.basicAuth.access_key})});g.ok?l.log("info","BUNDLE_SYNC_OK","unit bundle pushed",{commit_id:u.commit_id,path:d.file,bytes:g.bytes}):l.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync failed",{commit_id:u.commit_id,path:d.file,stage:g.stage,error:g.error}),t.onAgentEvent({type:"test_md_bundle_sync",status:g.ok?"ok":"failed",commit_id:u.commit_id,path:d.file,...g.ok?{bytes:g.bytes}:{stage:g.stage}})}catch(u){l.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync threw",{path:d.file,error:u instanceof Error?u.message:String(u)})}let Rr=re(w),qe=oe.uploadResult?.testcaseId,Ge=qe&&oe.uploadResult?.shareId&&F?ot(Rr.testManagerUiUrl,F,qe,oe.uploadResult.shareId):void 0,Ss=a.unitFiles.filter(d=>d.file!==a.rootPath).map(d=>{let u=a.steps.filter(p=>p.owningFile===d.file),g=u.filter(p=>ce.has(p.flatIndex)).length,h=(d.kind==="test"?he(d.file):null)?.commit_id===l.sessionId;return{path:d.file,kind:d.kind,replayed:u.length-g,authored:g,committed:h,...h?{commit_id:l.sessionId}:{}}}),kr={overallStatus:z.overallStatus,durationS:ge,decisions:m.decisions,outcomes:z.outcomes,cancelled:J,retryTriggered:X,lockHeld:_,anyAuthorStepRan:D,isFirstRun:m.isFirstRun,wantsPush:o.push===!0,uploadResult:oe.uploadResult,shouldUploadArtifacts:ve,shouldReplaceLocalOutput:D&&!J,shouldCommit:(_||m.isFirstRun)&&!J&&z.overallStatus==="passed"&&!m.degradedReadonly,shareUrl:Ge,imports:Ss},{buildSummaryEvent:ws}=await import("./SummaryBox-
|
|
47
|
+
`)),t.onAgentEvent({type:"test_md_bundle_sync",status:u.ok?"ok":"failed",commit_id:d.commit_id,path:n,...u.ok?{bytes:u.bytes}:{stage:u.stage}})}}catch(d){l.log("warn","BUNDLE_SYNC_FAILED","testmd bundle sync threw",{error:d instanceof Error?d.message:String(d)})}if(He&&oe.uploadResult?.success)for(let d of m.unitLocks)try{let u=he(d.file);if(u?.commit_id!==l.sessionId||!u?.test_id)continue;let g=await Tt({sourcePath:d.file,testId:String(u.test_id),sessionId:l.sessionId,commitId:String(u.commit_id),controller:new we(A.controllerBaseUrl,{username:c.basicAuth.username,accessKey:c.basicAuth.access_key})});g.ok?l.log("info","BUNDLE_SYNC_OK","unit bundle pushed",{commit_id:u.commit_id,path:d.file,bytes:g.bytes}):l.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync failed",{commit_id:u.commit_id,path:d.file,stage:g.stage,error:g.error}),t.onAgentEvent({type:"test_md_bundle_sync",status:g.ok?"ok":"failed",commit_id:u.commit_id,path:d.file,...g.ok?{bytes:g.bytes}:{stage:g.stage}})}catch(u){l.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync threw",{path:d.file,error:u instanceof Error?u.message:String(u)})}let Rr=re(w),qe=oe.uploadResult?.testcaseId,Ge=qe&&oe.uploadResult?.shareId&&F?ot(Rr.testManagerUiUrl,F,qe,oe.uploadResult.shareId):void 0,Ss=a.unitFiles.filter(d=>d.file!==a.rootPath).map(d=>{let u=a.steps.filter(p=>p.owningFile===d.file),g=u.filter(p=>ce.has(p.flatIndex)).length,h=(d.kind==="test"?he(d.file):null)?.commit_id===l.sessionId;return{path:d.file,kind:d.kind,replayed:u.length-g,authored:g,committed:h,...h?{commit_id:l.sessionId}:{}}}),kr={overallStatus:z.overallStatus,durationS:ge,decisions:m.decisions,outcomes:z.outcomes,cancelled:J,retryTriggered:X,lockHeld:_,anyAuthorStepRan:D,isFirstRun:m.isFirstRun,wantsPush:o.push===!0,uploadResult:oe.uploadResult,shouldUploadArtifacts:ve,shouldReplaceLocalOutput:D&&!J,shouldCommit:(_||m.isFirstRun)&&!J&&z.overallStatus==="passed"&&!m.degradedReadonly,shareUrl:Ge,imports:Ss},{buildSummaryEvent:ws}=await import("./SummaryBox-WVR4U3NN.js");if(i?t.onAgentEvent(ws(kr)):await t.onSummary(kr),!i){let d=qe&&F?Ln(Rr.testManagerUiUrl,F,qe):void 0;await t.onLinks({recordedTestPath:n,outputDir:ne(n),shareableLink:Ge,testCaseLink:d,codeExportDir:oe.uploadResult?.codeExportDir})}if(ae.ownsLifecycle&&Z&&wr){let{offerEvidenceView:d}=await import("./evidence-FFOI2H3N.js");await d({packPath:Z.pack,env:w,isTTY:!i&&!J&&!!process.stdin.isTTY&&!!process.stderr.isTTY,log:u=>process.stderr.write(u+`
|
|
48
48
|
`)})}return t.onAgentEvent({type:"test_md_done",overall_status:z.overallStatus,duration_s:ge,session_id:l.sessionId,...Ge?{share_url:Ge}:{}}),{overallStatus:z.overallStatus,exitCode:z.overallStatus==="passed"?0:1,outputDir:ne(n),durationS:ge,uploadResult:oe.uploadResult,anyAuthorStepRan:D,resultCode:Ur(Ke),...St.length?{pendingInvestigations:St}:{}}}function Ao(e,t){let r={...e,...t},n=Object.keys(r).length>0?Se(r,""):{variables:{},objective:"",keyMap:{}};return{raw:r,auteur:n.variables,auteurObjective:"",secretEntries:Object.entries(r).filter(([,s])=>s.secret),nonSecretEntries:Object.entries(r).filter(([,s])=>!s.secret)}}function Ce(e,t,r){let n={...e,...t??{}};if(Object.keys(n).length===0)return{raw:n,variables:{},objective:r};let s=Se(n,r);return{raw:n,variables:qn(s.variables,s.objective),objective:s.objective}}function xo(e,t,r){let n=Ce(e,t,r).variables;return Object.keys(n).length>0?n:void 0}function ls(e,t){let r=new Set(dt),n={...e};for(let[s,o]of Object.entries(t))r.has(s)||s!=="variables"&&o!==void 0&&e[s]===void 0&&(n[s]=o);return n}function Po(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}async function To(e,t,r,n,s,o){let i=Zr(t);on(t,i);let f=_e(e),a=Ro(f)?JSON.parse(cs(f,"utf8")):null,c=a?.testcase_id,y=a?.test_id,w=a?.commit_id,A=r.push===!0,R=r.retry===!0||r.retryCount!==void 0,x=r.author===!0;A&&!c&&process.stderr.write(`[--push] no meta.json yet \u2014 flag is a no-op on first run
|
|
49
49
|
`),x&&(c=void 0,y=void 0,w=void 0);let k=n.resolvedAuth.basicAuth;if(!k){let N=await n.resolvedAuth.resolver.resolve(!0);N?.username&&N?.access_key&&(k={username:N.username,access_key:N.access_key},n.resolvedAuth.basicAuth=k)}let C=!!k,l=!r.local&&C&&y!=null&&w!=null&&c!=null,H=l&&(et(i)||A);if(A&&!l)return process.stderr.write(`error: --push requires authenticated credentials for the lock API. Run 'kane-cli login' (OAuth) or pass --username/--access-key inline.
|
|
50
50
|
`),{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:!1,hasAuth:C,canLock:l,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};if(R&&!l)return process.stderr.write(`error: --retry requires authenticated credentials for the lock API. Run 'kane-cli login' (OAuth) or pass --username/--access-key inline.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{x as m}from"./chunk-
|
|
2
|
+
import{x as m}from"./chunk-QIE62H3J.js";import{a as x}from"./chunk-HCBYKLMW.js";import{a as u,b as a,j as g}from"./chunk-C44QQJR4.js";import{a as b}from"./chunk-6YGTRKDT.js";import{e as f}from"./chunk-UR6MHSHU.js";var T=f(b(),1);function k(i,n){if(!n)return i;let l=i.trim()||n;return`\x1B]8;;${n}\x07${l}\x1B]8;;\x07`}var r=f(x(),1);function $({shareableLink:i,testCaseLink:n,codeExportDir:l,recordedTestPath:s,outputDir:o,autoExit:p=!0}){let{exit:c}=g();(0,T.useEffect)(()=>{if(!p)return;let t=setTimeout(()=>c(),100);return()=>clearTimeout(t)},[c,p]);let e=[];return s&&e.push({label:"Test",url:s,linkUrl:`file://${s}`}),o&&e.push({label:"Output",url:o,linkUrl:`file://${o}`}),i&&e.push({label:"ShareLink",url:i}),n&&e.push({label:"TestCase",url:n}),l&&!o&&e.push({label:"CodeExport",url:l,linkUrl:`file://${l}`}),e.length===0?(0,r.jsx)(r.Fragment,{}):(0,r.jsx)(u,{flexDirection:"column",marginTop:1,marginLeft:1,children:e.map(t=>(0,r.jsxs)(u,{flexDirection:"column",marginBottom:1,children:[(0,r.jsxs)(a,{color:m.orange,children:[t.label,":"]}),(0,r.jsx)(a,{color:m.dim,children:k(t.url,t.linkUrl??t.url)})]},t.label))})}export{$ as a};
|