@testmuai/kane-cli 0.6.2 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/ChatSurface-J777M5WC.js +8 -0
  2. package/dist/{ChromeProfilePicker-XXNZLSCC.js → ChromeProfilePicker-UUGUMJPI.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-FJF5INQO.js → CliFeedbackPrompt-JZWESL7Z.js} +1 -1
  4. package/dist/{CliUploadProgress-5E3CCYPZ.js → CliUploadProgress-62U3LAUU.js} +1 -1
  5. package/dist/{ConfigView-TGVOKOUZ.js → ConfigView-WHEFCVHR.js} +1 -1
  6. package/dist/{EvidenceViewOffer-7O3RNBEE.js → EvidenceViewOffer-JQDEAE2T.js} +1 -1
  7. package/dist/{FolderPicker-T4JB4NNW.js → FolderPicker-HJUUHQEI.js} +1 -1
  8. package/dist/{HelpView-PSHKI7DD.js → HelpView-EWHP7LSJ.js} +1 -1
  9. package/dist/{InfoBox-PXWJ6BIX.js → InfoBox-GQQJVTI5.js} +1 -1
  10. package/dist/{LinksBox-IUOYRXYO.js → LinksBox-EWCPAZFN.js} +1 -1
  11. package/dist/{ProfilesView-UK5XX5WP.js → ProfilesView-5FJNQMUW.js} +1 -1
  12. package/dist/{ProjectPicker-3FE7UFXL.js → ProjectPicker-IN7GFN7I.js} +1 -1
  13. package/dist/{SaveSessionPrompt-P7NF5FDA.js → SaveSessionPrompt-ISODGFP7.js} +1 -1
  14. package/dist/SingleShotApp-QANGFAPO.js +2 -0
  15. package/dist/{SummaryBox-WVR4U3NN.js → SummaryBox-R6WHU7VD.js} +1 -1
  16. package/dist/TestMdRunView-74A3LCNE.js +2 -0
  17. package/dist/{WhoamiView-QVXJAVTC.js → WhoamiView-YRQNOSOH.js} +1 -1
  18. package/dist/{bind-SRZYTS4Q.js → bind-FZ4X4SOK.js} +2 -2
  19. package/dist/{bridge-I6N3YPXI.js → bridge-7UMWMIJJ.js} +1 -1
  20. package/dist/{changelog-HPSX3L7T.js → changelog-YQC2QDCO.js} +1 -1
  21. package/dist/chat-controller-QXFAB2DK.js +3 -0
  22. package/dist/{chunk-HUD7SPUF.js → chunk-2S4S2XJC.js} +1 -1
  23. package/dist/{chunk-DEYHK6ZC.js → chunk-2TVRHXRK.js} +1 -1
  24. package/dist/{chunk-6XKJH5ZE.js → chunk-326XAPMW.js} +2 -2
  25. package/dist/{chunk-TJRBV2V2.js → chunk-53VDR5DN.js} +3 -3
  26. package/dist/{chunk-X4QL2DAD.js → chunk-6RQAUK5F.js} +1 -1
  27. package/dist/{chunk-5ON7QQZO.js → chunk-7LFCSSPX.js} +10 -10
  28. package/dist/{chunk-2U5DZUC7.js → chunk-7MV5UF6O.js} +1 -1
  29. package/dist/{chunk-VL2UA23Z.js → chunk-7YQW4TFI.js} +1 -1
  30. package/dist/{chunk-KGFISJFM.js → chunk-ARS72637.js} +1 -1
  31. package/dist/{chunk-KRFGAVYU.js → chunk-AV5SUGRY.js} +1 -1
  32. package/dist/{chunk-K2MKBBI4.js → chunk-B5LJCGAY.js} +1 -1
  33. package/dist/{chunk-Z4K4AYEI.js → chunk-BFFCGEUH.js} +1 -1
  34. package/dist/{chunk-FU3OQXFH.js → chunk-BGGNBWAJ.js} +1 -1
  35. package/dist/{chunk-4PIMEZJW.js → chunk-BO3JA2GS.js} +3 -3
  36. package/dist/{chunk-D5DEWIAU.js → chunk-C5POEXSX.js} +2 -2
  37. package/dist/{chunk-HR7AGYV2.js → chunk-CIW2KP4C.js} +1 -1
  38. package/dist/{chunk-XN7PPLFS.js → chunk-DEEBPSJN.js} +1 -1
  39. package/dist/{chunk-QIE62H3J.js → chunk-E4OYR32M.js} +1 -1
  40. package/dist/{chunk-Q6TVDG3X.js → chunk-EEO4XWY6.js} +1 -1
  41. package/dist/{chunk-PJSCM6JX.js → chunk-EWFFJBAM.js} +1 -1
  42. package/dist/{chunk-S6GRW5ZA.js → chunk-F2K3XFFH.js} +2 -2
  43. package/dist/{chunk-M6DX4ENH.js → chunk-F66SSA4C.js} +1 -1
  44. package/dist/{chunk-44QUA6GV.js → chunk-FFL2TQEJ.js} +1 -1
  45. package/dist/{chunk-FOZVXYVG.js → chunk-G6AF2JUA.js} +1 -1
  46. package/dist/{chunk-GN3SZXZ5.js → chunk-ME5QSYWX.js} +1 -1
  47. package/dist/{chunk-52VLJKIN.js → chunk-NFGG5DA2.js} +1 -1
  48. package/dist/{chunk-YSK535OI.js → chunk-OE7TVGNB.js} +2 -2
  49. package/dist/{chunk-6UNTIXFW.js → chunk-OGVIHL5G.js} +1 -1
  50. package/dist/{chunk-35SRW4KA.js → chunk-P46TIMGQ.js} +1 -1
  51. package/dist/{chunk-N62EM6JX.js → chunk-PJDOXRLB.js} +1 -1
  52. package/dist/{chunk-IDDVO4UV.js → chunk-Q4HLQOJI.js} +1 -1
  53. package/dist/chunk-RE3BZVGE.js +3 -0
  54. package/dist/{chunk-YIOWO6WS.js → chunk-RLG5NUTE.js} +1 -1
  55. package/dist/{chunk-ZGH7T32S.js → chunk-RZFINU7J.js} +1 -1
  56. package/dist/{chunk-WM5QHLAP.js → chunk-SGU72YLH.js} +4 -4
  57. package/dist/{chunk-OZM4UU5F.js → chunk-SHSV64GX.js} +1 -1
  58. package/dist/{chunk-4G4HPMR2.js → chunk-SL7AJ7JQ.js} +1 -1
  59. package/dist/{chunk-LZKUF23A.js → chunk-SQFNMZJ2.js} +1 -1
  60. package/dist/{chunk-B2CIHKXG.js → chunk-TTSYHJLX.js} +1 -1
  61. package/dist/chunk-TY5LWU6I.js +14 -0
  62. package/dist/{chunk-L4AUCQVO.js → chunk-TZZYRDCF.js} +1 -1
  63. package/dist/{chunk-DCYTRYR2.js → chunk-UXJPCWGW.js} +1 -1
  64. package/dist/{chunk-MHQ6A2QZ.js → chunk-VXGOWBET.js} +1 -1
  65. package/dist/{chunk-BKGJGPDN.js → chunk-WFRL54GK.js} +1 -1
  66. package/dist/{chunk-EK2B2LZK.js → chunk-XBE7PGVY.js} +1 -1
  67. package/dist/{chunk-OZODSY6H.js → chunk-Y6LMHBLE.js} +1 -1
  68. package/dist/{chunk-LV5VRSPI.js → chunk-Y7KW5AEN.js} +1 -1
  69. package/dist/{chunk-U3JB76QP.js → chunk-YZKPZXHY.js} +1 -1
  70. package/dist/{chunk-NEZ4G7XR.js → chunk-YZSYXNMB.js} +1 -1
  71. package/dist/{config-KD62VH3R.js → config-5OOP2BO3.js} +1 -1
  72. package/dist/{credentials-NQNJR4E4.js → credentials-XCP6DJZZ.js} +1 -1
  73. package/dist/{evidence-FFOI2H3N.js → evidence-AX67Q6RN.js} +1 -1
  74. package/dist/{evolve-cmd-PHQ6FHRI.js → evolve-cmd-HR25DRTC.js} +1 -1
  75. package/dist/{extract-bind-6UMILP4U.js → extract-bind-ZDAXRQUS.js} +2 -2
  76. package/dist/{extract-cmd-MZR7PHGA.js → extract-cmd-5GGI6LAM.js} +1 -1
  77. package/dist/{generate-headless-XOBQS6RU.js → generate-headless-DRDE46ON.js} +2 -2
  78. package/dist/index.js +12 -12
  79. package/dist/{interactive-bind-5FWW3S53.js → interactive-bind-T6OBLZCT.js} +2 -2
  80. package/dist/{list-commands-PDTISP6T.js → list-commands-UDAL3SBY.js} +1 -1
  81. package/dist/login-flow-LJ4BH3OS.js +2 -0
  82. package/dist/{persist-recorded-session-5UNUINWF.js → persist-recorded-session-BW3YSFMP.js} +1 -1
  83. package/dist/{pipeline-F4WTOZ3Y.js → pipeline-TZJ652NT.js} +1 -1
  84. package/dist/{reconcile-cmd-MNMWAZF3.js → reconcile-cmd-242S7XNO.js} +2 -2
  85. package/dist/{recording-banner-IWY3GS6N.js → recording-banner-6FVTCUWQ.js} +1 -1
  86. package/dist/{require-project-folder-PFIDA5ZH.js → require-project-folder-AQUVEEJB.js} +1 -1
  87. package/dist/run-UGAOGR3B.js +2 -0
  88. package/dist/{run-test-md-7GONSVAM.js → run-test-md-AUK7NGLL.js} +2 -2
  89. package/dist/{skill-installer-YZP5DWWZ.js → skill-installer-2MNPCPRD.js} +1 -1
  90. package/dist/{spawner-YDYCSTZD.js → spawner-XCOMTJJC.js} +1 -1
  91. package/dist/tcg-generate-E5X23RVP.js +2 -0
  92. package/dist/{testmd-actions-7RNW76DN.js → testmd-actions-TU4KTO32.js} +1 -1
  93. package/dist/token-refresh-GGLARJV4.js +2 -0
  94. package/dist/{validate-basic-IQY5CRLP.js → validate-basic-IYMPP7C7.js} +1 -1
  95. package/dist/{version-check-U5UBPVX4.js → version-check-MUPSKONS.js} +1 -1
  96. package/package.json +6 -6
  97. package/dist/ChatSurface-HGP5EHZM.js +0 -9
  98. package/dist/SingleShotApp-UIDA54GB.js +0 -2
  99. package/dist/TestMdRunView-OH4Y6YD6.js +0 -2
  100. package/dist/chat-controller-VKGECDTU.js +0 -3
  101. package/dist/chunk-DM2GL24Z.js +0 -3
  102. package/dist/chunk-HW7Z5S2M.js +0 -14
  103. package/dist/login-flow-IXPJHTL2.js +0 -2
  104. package/dist/run-V2WMNHFK.js +0 -2
  105. package/dist/tcg-generate-ZRKSX2KC.js +0 -2
  106. package/dist/token-refresh-DH2L2IPP.js +0 -2
@@ -0,0 +1,8 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as Ee,b as ke}from"./chunk-6PS65QFF.js";import{a as Re,b as De}from"./chunk-ARS72637.js";import{b as we,d as Be}from"./chunk-Y7KW5AEN.js";import{a as ve}from"./chunk-5Y2G4NC7.js";import{a as Ie}from"./chunk-YCCUBQY4.js";import{a as Ce}from"./chunk-SHSV64GX.js";import{b as Se}from"./chunk-DFS4RMVP.js";import"./chunk-AV5SUGRY.js";import{x as a}from"./chunk-E4OYR32M.js";import{a as D}from"./chunk-HCBYKLMW.js";import{a as b,b as r,i as $e,k as W}from"./chunk-C44QQJR4.js";import{a as be}from"./chunk-6YGTRKDT.js";import{e as I}from"./chunk-UR6MHSHU.js";var S=I(be(),1);var $=I(D(),1),Ae=3,$t=60;function G(e){return e.options.length}var wt={high:{text:"\u203C high",color:a.red},med:{text:"med",color:"yellow"},low:{text:"low",color:a.dim}};function vt({batch:e,i:t}){let n=e.resolution[t],s=n.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${n.form}: ${n.choice}${n.form==="assumed"?" (flagged)":" (you)"}`;return(0,$.jsx)(r,{color:a.dim,children:` ${s}`})}function Ct({batch:e,i:t,sel:n,focused:s,freeText:m}){let u=e.questions[t],c=e.cursor===t,o=e.resolution[t],i=c?"\u203A":" ",l=wt[u.risk],g=h=>c&&s&&n===h?(0,$.jsx)(r,{color:a.generateAccent,children:"\u25B8"}):" ";return(0,$.jsxs)(b,{flexDirection:"column",children:[(0,$.jsxs)(r,{bold:c,children:[` ${t+1} ${i} ${u.text}`,l?(0,$.jsx)(r,{color:l.color,bold:!1,children:` ${l.text}`}):null]}),(0,$.jsx)(r,{color:a.muted,children:` ${u.rationale}`}),o&&!c?(0,$.jsx)(vt,{batch:e,i:t}):(0,$.jsxs)(b,{flexDirection:"column",children:[u.multi_select?(0,$.jsx)(r,{color:a.dim,children:" note: multi-select not yet supported \u2014 pick the best single option"}):null,u.options.map((h,f)=>(0,$.jsxs)(r,{children:[" ",g(f),` ${f+1} ${h.label}`,f===u.recommended_index?(0,$.jsx)(r,{color:a.dim,children:" (recommended)"}):null,o?.selected_index===f?(0,$.jsx)(r,{color:a.dim,children:" (current)"}):null]},`o-${f}`)),u.allow_free_text&&c?m?(0,$.jsxs)(b,{children:[(0,$.jsxs)(r,{children:[" ",(0,$.jsx)(r,{color:a.generateAccent,children:"\u25B8"})," ",(0,$.jsx)(r,{color:a.dim,children:"\u270E "})]}),(0,$.jsx)(Ie,{value:m.value,onChange:m.onChange,onSubmit:m.onSubmit,onCancel:m.onCancel,placeholder:"tell me what to do"})]}):(0,$.jsxs)(r,{children:[" ",g(u.options.length)," ",(0,$.jsx)(r,{color:a.dim,children:"\u270E tell me what to do"})]}):null]})]})}function _e({batch:e,sel:t=0,focused:n=!1,freeText:s=null}){let{stdout:m}=W(),c=(m?.columns??80)<$t,o=e.resolution.filter(R=>!R).length,i=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-Ae)),l=e.questions.slice(i,i+Ae),g=i,h=e.questions.length-i-l.length,f=(0,$.jsxs)(b,{flexDirection:"column",children:[(0,$.jsx)(r,{bold:!0,color:a.generateAccent,children:`? the agent needs ${o===1?"one answer":`${o} answers`} before it can continue`}),g>0?(0,$.jsx)(r,{color:a.muted,children:` \u22EE ${g} above`}):null,l.map((R,p)=>(0,$.jsx)(Ct,{batch:e,i:i+p,sel:t,focused:n,freeText:s},R.id)),h>0?(0,$.jsx)(r,{color:a.muted,children:` \u22EE ${h} more`}):null]});return c?f:(0,$.jsx)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.generateAccent,paddingX:1,children:f})}var E=I(D(),1),Le=60,St=e=>e.length<=Le?e:`${e.slice(0,Le-1)}\u2026`,Bt={high:a.red,med:"yellow"};function te({item:e}){return(0,E.jsxs)(b,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((t,n)=>(0,E.jsx)(r,{dimColor:!0,children:`cite ${t.anchor??"conv"} \u2014 "${t.quote??""}"`},`cite-${n}`)),(e.depends_on_hint??[]).length>0&&(0,E.jsx)(r,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([t,n])=>(0,E.jsx)(r,{dimColor:!0,children:`${t}: ${n}`},`extra-${t}`))]})}function Y({heading:e,turn:t,items:n,expandedRef:s,total:m,compact:u,numbers:c,marks:o}){return(0,E.jsxs)(b,{flexDirection:"column",children:[(0,E.jsx)(r,{bold:!0,children:`${e} \xB7 turn ${t} \xB7 ${m??n.length} proposed`}),n.map((i,l)=>{let g=i.matches_existing,h=g?g.cid?g.archived?` \u2248 matches archived \u2014 previously rejected${g.reason?`: "${g.reason}"`:""}`:" \u2248 matches existing":" \u2248overlap":"",f=o?.[l]?" \xB7 updated":"",R=u?` ${c?.[l]??l+1} \xB7 ${i.title}`:` ${i.title}`,p=i.why?` \u2014 ${u?St(i.why):i.why}`:"";return(0,E.jsxs)(b,{flexDirection:"column",children:[(0,E.jsxs)(r,{children:[R,i.badge!==void 0?(0,E.jsx)(r,{color:Bt[i.badge]??a.dim,children:` ${i.badge}`}):null,p?(0,E.jsx)(r,{color:a.dim,children:p}):null,h?(0,E.jsx)(r,{color:g?.archived?"yellow":"magenta",children:h}):null,f?(0,E.jsx)(r,{color:a.dim,children:f}):null]}),s===i.temp_ref&&(0,E.jsx)(te,{item:i})]},i.temp_ref)})]})}var Me=I(D(),1),It=e=>e.summary??e.description??"";function Rt(e){return{temp_ref:e.temp_ref,title:e.title,badge:e.risk,why:It(e),matches_existing:e.matches_existing?e.matches_existing:null,cite:e.cite??[],depends_on_hint:e.depends_on_hint??[]}}function Oe({turn:e,items:t,expandedRef:n,total:s,compact:m,numbers:u,marks:c}){return(0,Me.jsx)(Y,{heading:"use-cases",turn:e,items:t.map(Rt),expandedRef:n,total:s,compact:m,numbers:u,marks:c})}var Dt={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},M=e=>Dt[e]??`${e}s`,Pe=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,ne=e=>e.kind??"use-case",Ne=e=>`${ne(e)}:${e.temp_ref}`;function Fe(e){let t=e,n=t.badge??e.risk??null,s=t.why??e.summary??e.description??null;return JSON.stringify([e.title,n,s,t.extra??null,e.depends_on_hint??null])}function qe(e){return e.filter(t=>t.role==="agent"&&typeof t.turnIndex=="number"&&Array.isArray(t.items)&&t.items.length>0)}function H(e){let t=new Map,n=1;for(let u of qe(e)){let c=new Set;for(let o of u.items){let i=Ne(o);if(c.has(i))continue;c.add(i);let l=t.get(i);t.set(i,{num:l?.num??n++,ref:o.temp_ref,kind:ne(o),item:o,turnIndex:u.turnIndex,fingerprint:Fe(o)})}}let s=[...t.values()].sort((u,c)=>u.num-c.num),m=[];for(let u of s){let c=m.find(o=>o.kind===u.kind);c?c.count++:m.push({kind:u.kind,label:M(u.kind),count:1})}return{entries:s,byRef:t,counts:m}}function Ue(e,t){let s=qe(e).find(p=>p.turnIndex===t);if(!s)return null;let m=e.filter(p=>p.role!=="agent"||typeof p.turnIndex!="number"||p.turnIndex<=t),u=H(m),c=H(e.filter(p=>p.role!=="agent"||typeof p.turnIndex!="number"||p.turnIndex<t)),o=[],i=new Map,l=new Map,g=new Map,h=new Set;for(let p of s.items){let B=Ne(p);if(h.has(B))continue;h.add(B);let N=c.byRef.get(B),F=p.changed===!0,L=u.byRef.get(B).num,A=ne(p);if(N&&!F&&N.fingerprint===Fe(p)){i.set(A,(i.get(A)??0)+1);continue}let w=!!N||F,q=w?g:l;q.set(A,(q.get(A)??0)+1),o.push({item:p,num:L,updated:w})}let f=[...i.entries()].map(([p,B])=>({label:M(p),count:B})),R=[...[...l.entries()].map(([p,B])=>`${B} new ${B===1?Pe(p):M(p)}`),...[...g.entries()].map(([p,B])=>`${B} updated ${B===1?Pe(p):M(p)}`)].join(" \xB7 ");return{fresh:o,unchanged:f,headerStats:R}}var k=I(D(),1);function We({turnIndex:e,fresh:t,headerStats:n,unchangedTotal:s}){let m=[];for(let c of t){let o=c.item.kind??"use-case",i=m.find(l=>l.kind===o);i?i.rows.push(c):m.push({kind:o,rows:[c]})}let u=`design \xB7 turn ${e} \u2014 ${n||"no new items"}${s>0?` (${s} unchanged)`:""}`;return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(r,{bold:!0,children:u}),m.map(({kind:c,rows:o})=>{let i=o.filter(h=>!h.updated).length,l=o.length-i,g=[...i>0?[`${i} new`]:[],...l>0?[`${l} updated`]:[]].join(" \xB7 ");return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(r,{color:a.dim,children:`${M(c).toLowerCase()} \xB7 ${g}`}),o.map(({item:h,num:f,updated:R})=>{let p=h;return(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsxs)(r,{children:[(0,k.jsx)(r,{children:` ${f} \xB7 ${h.title}`}),p.badge?(0,k.jsx)(r,{color:a.dim,children:` \xB7 ${p.badge}`}):null,R?(0,k.jsx)(r,{color:a.dim,children:" \xB7 updated"}):null]}),p.why?(0,k.jsx)(r,{color:a.dim,children:` ${p.why}`}):null]},`${c}:${h.temp_ref}`)})]},c)})]})}var T=I(D(),1);function Et(e){let t=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",n=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${n}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${t}${n}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${t}${n}`}function Ke({block:e,annotations:t}){switch(e.kind){case"banner":return(0,T.jsx)(r,{color:a.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,T.jsxs)(b,{children:[(0,T.jsx)(r,{color:a.orange,children:"\u276F "}),(0,T.jsx)(r,{children:e.text})]});case"note":return(0,T.jsx)(r,{color:a.dim,children:` ${e.text}`});case"agent":return(0,T.jsx)(Re,{text:e.text});case"thinking":return(0,T.jsx)(r,{color:a.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,T.jsx)(r,{color:a.dim,children:` ${Ee({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,T.jsx)(r,{color:a.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let n=t??null,s=n?n.fresh.map(o=>o.item):e.items,m=n?n.fresh.map(o=>o.num):void 0,u=n?n.fresh.map(o=>o.updated):void 0,c=s.some(o=>!!o.kind);return(0,T.jsxs)(b,{flexDirection:"column",marginLeft:2,children:[c?(0,T.jsx)(We,{turnIndex:e.turnIndex,fresh:n?n.fresh:s.map((o,i)=>({item:o,num:i+1,updated:!1})),headerStats:n?.headerStats??"",unchangedTotal:(n?.unchanged??[]).reduce((o,i)=>o+i.count,0)}):e.heading==="use-cases"?(0,T.jsx)(Oe,{turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:m,marks:u}):(0,T.jsx)(Y,{heading:e.heading,turn:e.turnIndex,items:s,expandedRef:null,compact:!0,total:s.length,numbers:m,marks:u}),n&&n.unchanged.length>0&&(0,T.jsx)(r,{color:a.dim,children:` \u22EE unchanged: ${n.unchanged.map(o=>`${o.count} ${o.label}`).join(" \xB7 ")} \u2014 /view to browse`})]})}case"answer":return(0,T.jsx)(r,{color:a.dim,children:Et(e.receipt)});case"continued":return(0,T.jsx)(r,{color:a.dim,children:"\u21B3 continued"});case"commit":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{color:e.ok?a.green:a.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((n,s)=>(0,T.jsx)(r,{color:a.dim,children:` \u26A0 ${n}`},`w-${s}`))]});case"error":return(0,T.jsxs)(Ce,{variant:"error",paddingX:1,children:[(0,T.jsx)(r,{color:a.red,children:e.title}),e.detail.map((n,s)=>(0,T.jsx)(r,{color:a.dim,children:n},`d-${s}`))]});case"interrupted":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{color:a.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,T.jsx)(r,{color:a.dim,children:e.detail}):null]});case"pause":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,T.jsx)(r,{color:a.dim,children:`expires: ${e.expires_at}`}):null,(0,T.jsx)(r,{children:`resume: ${e.resume}`}),e.messageForm?(0,T.jsx)(r,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,T.jsxs)(b,{flexDirection:"column",children:[(0,T.jsx)(r,{bold:!0,children:"session summary"}),e.lines.map((n,s)=>(0,T.jsx)(r,{children:` ${n}`},`s-${s}`))]})}}var Ve=I(D(),1),re="ctrl+t thinking \xB7 ctrl+c exit";function He(e,t){if(e.length<=t)return e;if(t<=1)return"\u2026";let n=Math.ceil((t-1)/2),s=Math.floor((t-1)/2);return`${e.slice(0,n)}\u2026${s>0?e.slice(-s):""}`}function je({verb:e,subject:t,turn:n,pendingCount:s,creditsTotal:m}){let{stdout:u}=W(),c=u?.columns??80,o=[];o.push(e),n&&o.push(`turn ${n}`),m!==void 0&&o.push(`${m.toFixed(1)} cr`);let i=s?`[${s} pending]`:null,l=" \xB7 ",h=[...o,...i?[i]:[]].join(l).length,f,R=[...o,...t?[t]:[],...i?[i]:[],re].join(l);if(R.length<=c)f=R;else{let p=c-h-(t?l.length:0)-l.length-re.length;if(t&&p>=8)f=[...o,He(t,p),...i?[i]:[],re].join(l);else{let B=c-h-(t?l.length:0);f=[...o,...t&&B>=4?[He(t,B)]:[],...i?[i]:[]].join(l)}}return(0,Ve.jsx)(r,{color:a.dim,children:f})}var j=I(be(),1);function oe({onToggleThinking:e,onCtrlC:t,explorer:n,panel:s}){let u=(0,j.useRef)(null),c=(0,j.useRef)(""),o=()=>{u.current&&clearTimeout(u.current),u.current=null,c.current=""};return(0,j.useEffect)(()=>o,[]),$e((i,l)=>{if(l.ctrl&&i==="t"){e();return}if(l.ctrl&&i==="c"){t();return}if(!l.ctrl&&i.includes("")){t();return}if(!l.ctrl&&i.includes("")){e();return}if(n&&n.isOpen()){let g=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{o(),n.onBack()},150)};if(u.current){if(l.upArrow||l.downArrow||l.return){o(),l.return?n.onEnter():n.onMove(l.upArrow?-1:1);return}if(c.current+=i,c.current==="["){g();return}let h=c.current;o();let f=/^\[([AB])/.exec(h);if(f){n.onMove(f[1]==="A"?-1:1);return}n.onBack();return}if(l.upArrow){n.onMove(-1);return}if(l.downArrow){n.onMove(1);return}if(l.return){n.onEnter();return}if(l.escape){c.current="",g();return}if(i.length>=2&&!l.ctrl&&!l.meta){n.onClose();return}return}if(s&&s.isFocused()){let g=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{o(),s.onBack()},150)};if(u.current){if(l.upArrow||l.downArrow||l.return){o(),l.return?s.onSelect():s.onMove(l.upArrow?-1:1);return}if(c.current+=i,c.current==="["){g();return}let h=c.current;o();let f=/^\[([AB])/.exec(h);if(f){s.onMove(f[1]==="A"?-1:1);return}s.onBack();return}if(l.upArrow){s.onMove(-1);return}if(l.downArrow){s.onMove(1);return}if(l.return){s.onSelect();return}if(l.escape){c.current="",g();return}if(/^[1-9]$/.test(i)){s.onDigit(Number(i));return}if(i&&!l.ctrl&&!l.meta){s.onType(i);return}return}}),null}var v=I(D(),1),se=(e,t)=>Math.max(0,Math.min(t,e));function z(e,t,n){switch(t.type){case"move":return{...e,cursor:se(e.cursor+t.delta,Math.max(0,n-1))};case"enter":return e.level==="list"?{...e,level:"detail"}:e;case"back":return e.level==="detail"?{...e,level:"list"}:null}}var Xe={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ge(e,t){if(e.level==="detail")return{level:"detail",cursor:se(e.num-1,Math.max(0,t.entries.length-1))};if(e.section){let n=t.entries.findIndex(s=>Xe[s.kind]===e.section);if(n>=0)return{level:"list",cursor:n}}return{level:"list",cursor:0}}function kt(e){let t=[];for(let n of e.entries){let s=t.find(m=>m.kind===n.kind);s?s.entries.push(n):t.push({kind:n.kind,entries:[n]})}return t}var Qe=3;function At({items:e,cursor:t,verb:n}){let s=`view \xB7 ${n} so far \xB7 ${e.counts.map(u=>`${u.count} ${u.count===1?u.label.replace(/s$/,""):u.label}`).join(" \xB7 ")}`,m=e.entries[t];return(0,v.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.dim,paddingX:1,children:[(0,v.jsx)(r,{bold:!0,children:s}),kt(e).map(({kind:u,entries:c})=>{let o=m?.kind===u,i=o?c.findIndex(f=>f.ref===m.ref):-1,l=o?se(i-1,Math.max(0,c.length-Qe)):0,g=c.slice(l,l+(o?Qe:1)),h=c.length-g.length;return(0,v.jsxs)(b,{flexDirection:"column",children:[(0,v.jsx)(r,{color:a.dim,children:`${Xe[u]??M(u)} \xB7 ${c.length}`}),g.map(f=>{let R=o&&f.ref===m.ref,p=f.item.badge;return(0,v.jsxs)(r,{children:[(0,v.jsx)(r,{color:a.generateAccent,children:R?"\u203A ":" "}),(0,v.jsx)(r,{children:`${f.num} \xB7 ${f.item.title}`}),p?(0,v.jsx)(r,{color:a.dim,children:` \xB7 ${p}`}):null]},`${f.kind}:${f.ref}`)}),h>0&&(0,v.jsx)(r,{color:a.dim,children:` \u22EE ${h} more`})]},u)}),(0,v.jsx)(r,{color:a.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back to chat"})]})}function _t({items:e,cursor:t}){let n=e.entries[t];if(!n)return(0,v.jsx)(r,{color:a.dim,children:"nothing to show"});let s=n.item;return(0,v.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:a.dim,paddingX:1,children:[(0,v.jsx)(r,{bold:!0,children:`view \xB7 ${n.kind} ${n.num} of ${e.entries.length}`}),(0,v.jsx)(r,{children:n.item.title}),s.badge?(0,v.jsx)(r,{color:a.dim,children:`kind: ${s.badge}`}):null,s.why?(0,v.jsx)(r,{color:a.dim,children:s.why}):null,(0,v.jsx)(te,{item:n.item}),(0,v.jsx)(r,{color:a.dim,children:"view-only \u2014 approvals happen in chat"}),(0,v.jsx)(r,{color:a.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Ye({items:e,state:t,verb:n}){return t.level==="list"?(0,v.jsx)(At,{items:e,cursor:t.cursor,verb:n}):(0,v.jsx)(_t,{items:e,cursor:t.cursor})}var ze=[{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"}],Lt={"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 Je(e){let t=(e??"").trim().toLowerCase();if(!t)return{level:"list"};if(/^\d+$/.test(t)){let s=parseInt(t,10);return s>=1?{level:"detail",num:s}:{error:"items are numbered from 1 \u2014 /view 1"}}let n=Lt[t];return n?{level:"list",section:n}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var C=I(D(),1),Ot=6,Ze=12;function Mt(e,t,n){let s=Math.max(20,t),m=[];for(let c of e.split(`
3
+ `)){if(c.length<=s){m.push(c);continue}let o="";for(let i of c.split(" "))o&&o.length+1+i.length>s?(m.push(o),o=i):o=o?`${o} ${i}`:i;m.push(o)}let u=Math.max(0,m.length-n);return{body:m.slice(-n).join(`
4
+ `),hidden:u}}var Pt='chat with the agent \u2014 "/" for commands',et=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Nt(e,t){return t?" \u2014 Enter continues \xB7 or type to adjust":e==="design"?" \u2014 reply, or /done to finish":' \u2014 reply, "looks good" approves, /done finishes'}function On({controller:e,verb:t="extract",onCtrlC:n}){let[,s]=(0,S.useState)(0),[m,u]=(0,S.useState)(!1),[c,o]=(0,S.useState)(null),[i,l]=(0,S.useState)(null),g=(0,S.useRef)(null),h=d=>{g.current=d,l(d)},f=Se(),{stdout:R}=W(),p=R?.columns??80,B=(0,S.useRef)(0),N=(0,S.useRef)(0),F=(0,S.useRef)(null);F.current||(F.current=new we(null)),(0,S.useEffect)(()=>{let d=()=>{let y=e.state.ledger;for(let _=B.current;_<y.length;_++){let P=y[_],bt=P.kind==="turn"?Ue(e.state.turns,P.turnIndex):void 0;f.append((0,C.jsx)(Ke,{block:P,annotations:bt},`lg-${_}`))}B.current=y.length};d();let x=e.subscribe(()=>{d();let y=e.state;g.current&&(y.pending||y.status==="pausing")&&(h(null),y.pending&&o("questions arrived \u2014 back to chat")),s(_=>_+1)});return s(y=>y+1),x},[e,f]);let{thinking:L,status:A,pending:w,confirm:q,ledger:ie,activeTurn:ae,stream:tt,notice:V}=e.state,ce=(tt?.text??"").trimEnd(),le=ce.length>0,nt=m&&(L.liveThinking.length>0||L.thinkingLog.length>0),rt=Mt(L.liveThinking||L.thinkingLog.map(d=>d.text).join(`
5
+ `),p-6,Ze),ue=le?ce.split(`
6
+ `).slice(-Ot):[];ae&&(N.current=ae.turnIndex);let ot=w?w.resolution.filter(d=>!d).length:0,de;for(let d=ie.length-1;d>=0;d--){let x=ie[d];if(x.kind==="banner"&&!x.text.startsWith("kane")){de=x.text;break}}let K=L.activity[L.activity.length-1],J=K?K.status==="decision"?K.label:ke({name:K.name,status:K.status}):void 0,me=A==="streaming"||A==="working",[st,it]=(0,S.useState)(0);ve(()=>it(d=>d+1),me?120:null);let at=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,ct=le?"Writing\u2026":J?`${J.charAt(0).toUpperCase()}${J.slice(1)}\u2026`:e.state.workingLabel??(t==="design"?"Designing\u2026":"Thinking\u2026"),lt=e.state.turns.some(d=>d.role==="agent"),[ut,dt]=(0,S.useState)(0),[pe,mt]=(0,S.useState)(!1),[fe,pt]=(0,S.useState)(null),Q=(0,S.useRef)(0),ge=(0,S.useRef)(!1),xe=(0,S.useRef)(null),X=d=>{Q.current=d,dt(d)},he=d=>{ge.current=d,mt(d)},U=d=>{xe.current=d,pt(d)},Te=w&&w.cursor>=0?w.questions[w.cursor]:void 0,O=(0,S.useRef)(Te);O.current=Te;let Z=(0,S.useRef)(w);Z.current=w;let ft=w?`${w.questions[0]?.id??"b"}:${w.cursor}`:null;(0,S.useEffect)(()=>{if(U(null),O.current){he(!0);let d=Z.current?.resolution[Z.current.cursor]?.selected_index;X(d??O.current.recommended_index??0)}else he(!1)},[ft]);let gt={isFocused:()=>ge.current&&O.current!=null&&xe.current==null,onMove:d=>{let x=O.current;if(!x)return;let y=x.allow_free_text?G(x):x.options.length-1;X(Math.max(0,Math.min(y,Q.current+d)))},onSelect:()=>{let d=O.current;if(d){if(d.allow_free_text&&Q.current===G(d)){U("");return}e.submit(String(Q.current+1))}},onDigit:d=>{let x=O.current;x&&d-1<x.options.length&&X(d-1)},onType:d=>{let x=O.current;x?.allow_free_text&&(X(G(x)),U(d))},onBack:()=>e.reopenQuestion()},xt=fe!=null?{value:fe,onChange:d=>U(d),onSubmit:d=>{U(null),d.trim()&&e.submit(d.trim())},onCancel:()=>U(null)}:null,ht=A==="streaming"&&!w||!!w&&pe,Tt=w?"answer in the panel above \u2014 \u2191/\u2193 + Enter, or just type your answer":Pt,ee=n??(()=>e.requestPause()),yt=d=>{let x=Je(d);if("error"in x){o(x.error);return}let y=H(e.state.turns);if(y.entries.length===0){o("nothing proposed yet \u2014 the first turn is still coming");return}if(x.level==="detail"&&x.num>y.entries.length){o(`no item ${x.num} \u2014 the set has ${y.entries.length} item${y.entries.length===1?"":"s"}`);return}h(Ge(x,y))},ye=(0,C.jsx)(je,{verb:t,subject:de,turn:N.current||void 0,pendingCount:ot,creditsTotal:e.state.credits?.total});if(i){let d=H(e.state.turns),x=d.entries.length;return(0,C.jsxs)(b,{flexDirection:"column",children:[(0,C.jsx)(oe,{onToggleThinking:()=>u(y=>!y),onCtrlC:ee,explorer:{isOpen:()=>g.current!==null,onClose:()=>{h(null),o("closed the explorer \u2014 your text didn't send, retype to chat"),setTimeout(()=>s(y=>y+1),0)},onMove:y=>h(g.current&&z(g.current,{type:"move",delta:y},x)),onEnter:()=>h(g.current&&z(g.current,{type:"enter"},x)),onBack:()=>{h(g.current&&z(g.current,{type:"back"},x)),setTimeout(()=>s(y=>y+1),0)}}}),(0,C.jsx)(Ye,{items:d,state:i,verb:t}),(V??c)&&(V??c).split(`
7
+ `).map((y,_)=>(0,C.jsx)(r,{color:a.orange,children:y},`nt-${_}`)),ye]})}return(0,C.jsxs)(b,{flexDirection:"column",children:[(0,C.jsx)(oe,{onToggleThinking:()=>u(d=>!d),onCtrlC:ee,panel:gt}),nt&&(0,C.jsx)(De,{thinking:rt.body,expanded:!0,thinkingDone:A!=="streaming",maxLines:Ze+1}),ue.length>0&&(0,C.jsx)(b,{flexDirection:"column",children:ue.map((d,x)=>(0,C.jsx)(r,{children:d},`st-${x}`))}),w&&(0,C.jsx)(_e,{batch:w,sel:ut,focused:pe,freeText:xt}),q&&(0,C.jsx)(r,{color:"yellow",children:q.prompt}),(V??c)&&(V??c).split(`
8
+ `).map((d,x)=>(0,C.jsx)(r,{color:a.orange,children:d},`nt-${x}`)),me&&!w&&(0,C.jsxs)(r,{color:a.generateAccent,children:[`${et[st%et.length]} ${ct} `,(0,C.jsx)(r,{color:a.dim,children:`(${at}s)`})]}),A==="idle"&&lt&&!w&&!q&&(0,C.jsxs)(r,{color:a.generateAccent,children:["\u25CF your turn",(0,C.jsx)(r,{color:a.dim,children:Nt(t,e.state.checkpoint)})]}),A==="pausing"?(0,C.jsx)(r,{color:a.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}):(0,C.jsx)(Be,{history:F.current,placeholder:Tt,accent:a.generateAccent,submitVerb:w?"answer":"send",submitEmpty:!!w||t==="design"&&e.state.checkpoint,inert:ht,commands:ze,footerBindings:[{keys:"\u21B5",label:w?"answer":"send"},{keys:"\u2191\u2193",label:"history"},{keys:"ctrl+t",label:"thinking"},{keys:"ctrl+c",label:"exit"}],onSubmit:d=>{let x=d.trim();if(!x){w?e.submit(""):t==="design"&&e.state.checkpoint&&e.continueParked();return}if(o(null),x.startsWith("/")){let[y="",..._]=x.slice(1).split(/\s+/),P=_.join(" ");if(!y){o('type "/" then a command \u2014 /view, /explain, /pause, /done');return}switch(y.toLowerCase()){case"view":yt(P);return;case"explain":if(!P){o("usage: /explain <ref> \u2014 e.g. /explain guest-checkout");return}e.explainRef(P);return;case"pause":ee();return;case"done":case"exit":e.completeSession();return;default:o(`unknown command "/${y}" \u2014 try /view, /explain, /pause, /done`);return}}e.submit(x)}}),ye]})}export{On as ChatSurface,Mt as tailVisualRows,Nt as yourTurnTail};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
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};
2
+ import{a,b,c}from"./chunk-WFRL54GK.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a as r}from"./chunk-SQFNMZJ2.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a as P,b as g,c as f}from"./chunk-PJDOXRLB.js";import"./chunk-F66SSA4C.js";import"./chunk-5Y2G4NC7.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a as p,b as l,c as n}from"./chunk-SHSV64GX.js";import{x as o}from"./chunk-E4OYR32M.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};
@@ -1,2 +1,2 @@
1
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};
2
+ import{a}from"./chunk-B5LJCGAY.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OE7TVGNB.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-RLG5NUTE.js";import"./chunk-E4OYR32M.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
@@ -1,2 +1,2 @@
1
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};
2
+ import{a,b}from"./chunk-BGGNBWAJ.js";import"./chunk-YCCUBQY4.js";import"./chunk-YZKPZXHY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a as f,b as r,x as t}from"./chunk-E4OYR32M.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-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};
2
+ import{a}from"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a}from"./chunk-NFGG5DA2.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a,b}from"./chunk-BFFCGEUH.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a,b}from"./chunk-VXGOWBET.js";import"./chunk-YCCUBQY4.js";import"./chunk-YZKPZXHY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a,b,c}from"./chunk-EEO4XWY6.js";import"./chunk-S3DAAAE5.js";import"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import"./chunk-E4OYR32M.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-RZFINU7J.js";import"./chunk-7YQW4TFI.js";import"./chunk-Y7KW5AEN.js";import"./chunk-7MV5UF6O.js";import"./chunk-XBE7PGVY.js";import"./chunk-SL7AJ7JQ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-VXGOWBET.js";import"./chunk-BGGNBWAJ.js";import"./chunk-YCCUBQY4.js";import"./chunk-YZKPZXHY.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RLG5NUTE.js";import"./chunk-VE3SUJMA.js";import"./chunk-TZZYRDCF.js";import"./chunk-AV5SUGRY.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a,b,c,d}from"./chunk-ME5QSYWX.js";import"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import"./chunk-E4OYR32M.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-UXJPCWGW.js";import"./chunk-FFL2TQEJ.js";import"./chunk-Q4HLQOJI.js";import"./chunk-XBE7PGVY.js";import"./chunk-F66SSA4C.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-RLG5NUTE.js";import"./chunk-EWFFJBAM.js";import"./chunk-SHSV64GX.js";import"./chunk-DFS4RMVP.js";import"./chunk-E4OYR32M.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-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};
2
+ import{a as b,b as r}from"./chunk-SHSV64GX.js";import{x as o}from"./chunk-E4OYR32M.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-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+`
2
+ import{a as p}from"./chunk-7LFCSSPX.js";import"./chunk-KHU7C6EE.js";import"./chunk-NNZV5RCE.js";import"./chunk-SGU72YLH.js";import"./chunk-I2S6KNZW.js";import"./chunk-FXPPQL4D.js";import"./chunk-RE3BZVGE.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-E4OYR32M.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-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+`
5
+ `),2;let{bindDesignInteractive:o}=await import("./interactive-bind-T6OBLZCT.js");return await o(a)}let{resolveAgentAuthEnv:s}=await import("./spawner-XCOMTJJC.js"),{runAgent:t}=await import("./bridge-7UMWMIJJ.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-HUD7SPUF.js";import"./chunk-NEZ4G7XR.js";import"./chunk-UR6MHSHU.js";export{a as runAgent};
2
+ import{a}from"./chunk-2S4S2XJC.js";import"./chunk-YZSYXNMB.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-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(`
2
+ import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,f as c}from"./chunk-E4OYR32M.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};
@@ -0,0 +1,3 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as K,b as X,c as Y,d as Z}from"./chunk-RE3BZVGE.js";import"./chunk-6PS65QFF.js";import{b as N,d as J}from"./chunk-VJUIW2ES.js";import{d as V}from"./chunk-KHDUQ33H.js";import"./chunk-GIRXJOJI.js";import"./chunk-B2PZAB7J.js";import"./chunk-IACKIGPX.js";import"./chunk-UR6MHSHU.js";var re=new Set(["approve","edit","reject"]);function se(r,t){return`chatop:${t}:${r.target??"new"}:${r.op}:${r.seq}`}function oe(r,t,x,c){let u=se(r,t),m=r.payload;switch(r.op){case"approve":return{kind:"approve",target:r.target,expectedCid:r.expected_cid,eventId:u};case"edit":{let{reason:i,...h}=m;return{kind:"edit",target:r.target,expectedCid:r.expected_cid,edit:h,reason:i,eventId:u}}case"enhance":return{kind:"enhance",target:r.target,expectedCid:r.expected_cid,edges:m.edges??[],eventId:u};case"reject":return{kind:"reject",target:r.target,expectedCid:r.expected_cid,reason:m.reason??"",redirectTo:m.redirect_to,eventId:u};case"add":{let i=m.proposal_item??{},h=String(i.label??"");if(!x.mint_gate.includes(h))throw new Error(`GATED_LABEL: cannot mint "${h}" (gate: ${x.mint_gate.join(", ")})`);let d=i.cite??{},a=i.conv_source_id??c;if(!a||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:i.content??{},cite:{turn:d.turn,quote:d.quote},convSourceId:a,rationale:i.rationale,eventId:u}}}}function ee(r,t,x={}){let c=x.turn??0,u=[],m=[];for(let d of r)(d.op==="add"||d.op==="enhance")&&m.push(d);let i=new Map;for(let d of r){if(!re.has(d.op)||!d.target)continue;let a=i.get(d.target)??[];a.push(d),i.set(d.target,a)}for(let[d,a]of i){let b=Math.max(...a.map(_=>_.seq)),C=a.filter(_=>_.seq===b);if(C.length>1){u.push({target:d,seq:b,kinds:C.map(_=>_.op)});continue}m.push(C[0])}return{chatOps:m.sort((d,a)=>d.seq-a.seq).map(d=>oe(d,c,t,x.convSourceId)),ambiguous:u}}function ae(r,t){let x=r.trim();if(x==="")return{kind:"defaults"};if(/^defer$/i.test(x))return{kind:"defer-all"};let c=t.cursor,u=x,m=/^(\d+):\s*(.*)$/.exec(x);if(m){let a=Number(m[1]);if(a<1||a>t.questions.length)return{kind:"invalid",target:null,message:`no question ${a} \u2014 this batch has ${t.questions.length}`};if(c=a-1,u=m[2].trim(),!u)return{kind:"invalid",target:c,message:`say what to answer \u2014 e.g. \`${a}: yes\``}}if(c<0||c>=t.questions.length)return{kind:"invalid",target:null,message:"no pending question to answer"};let i=t.questions[c],h=/^"(.*)"$/.exec(u);if(h)return i.allow_free_text?{kind:"free",target:c,text:h[1]}:{kind:"invalid",target:c,message:`question ${c+1} takes an option (1-${i.options.length}) \u2014 free text isn't allowed here`};if(i.multi_select&&/^\d+(\s+\d+)+$/.test(u)){let a=u.split(/\s+/).map(Number);if(a.every(b=>b>=1&&b<=i.options.length))return{kind:"multi",target:c,indices:a.map(b=>b-1)}}if(/^\d+$/.test(u)){let a=Number(u);if(a>=1&&a<=i.options.length)return{kind:"option",target:c,index:a-1}}let d=i.options.findIndex(a=>a.label.toLowerCase()===u.toLowerCase());return d>=0?{kind:"option",target:c,index:d}:i.allow_free_text?{kind:"free",target:c,text:u}:{kind:"invalid",target:c,message:`question ${c+1} takes an option \u2014 type 1-${i.options.length} or an option name`}}function te(r){let t=r.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function ue(r){return r.use_cases??[]}var de={acs:"acceptance criteria",scenarios:"scenarios",tests:"tests",gaps:"gaps"};function ce(r){let t=[],x=[],c=(i,h)=>{h.length!==0&&(x.push(i),t.push(...h))},u=i=>typeof i=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(i)?i:null,m=i=>{let h=u(i.automates)??"1 scenario",d=i.verifies??[],a=d.map(u).filter(_=>_!==null).slice(0,2),b=d.length-a.length,C=a.length?`${a.join(" ")}${b>0?` +${b}`:""}`:`${d.length} ACs`;return`covers ${h} \xB7 verifies ${C}`};return c("acs",(r.acs??[]).map(i=>({temp_ref:i.temp_ref,title:i.text,kind:"ac",badge:String(i.kind),extra:{...i.expected_answer?{expects:`${String(i.expected_answer.operator??"")} \xB7 ${String(i.expected_answer.operand??"")}`}:{},"scoped to":i.scoped_to??"(use-case)"}}))),c("scenarios",(r.scenarios??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"scenario",badge:i.case_type,why:i.intent,depends_on_hint:i.depends_on??[],extra:{technique:i.technique_notes}}))),c("tests",(r.tests??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"test",why:m(i),depends_on_hint:i.reuses??[],extra:{automates:String(i.automates??"?"),verifies:(i.verifies??[]).join(", "),check:i.check?`${String(i.check.kind)} vs ${String(i.check.verified_against)}`:"?"}}))),c("gaps",(r.gaps??[]).map(i=>({temp_ref:i.temp_ref??i.ref??"?",title:String(i.question?.header??i.kind),kind:"gap",badge:i.kind,why:i.risk_rationale}))),{items:t,heading:x.join(" + ")||"design"}}function ke(r={}){let t={turns:[],thinking:X(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},x=e=>{let n=[],o=e.minted.map(g=>g.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=[];r.onRender&&c.push(r.onRender);let u=0,m=0,i=null,h=null,d=null,a=[],b=0,C=e=>{if(!(!d||!r.contextDir||!e.trim()))try{let n=r.refreshGraph?.()??r.graph;if(!n)return;J({contextDir:r.contextDir,graph:n,sourceId:d,text:e,by:r.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!d||!r.contextDir)return;let n=r.refreshGraph?.()??r.graph,o=n?.heads.get(d),s=n?.convChains.get(d);if(!n||typeof o!="string"||!s)return;let g=n.getNode(o)?.content?.blob,f=typeof g=="string"?V(r.contextDir,g)?.toString("utf8")??"":"";if(f)for(let v of e){if(v.kind!=="add"||v.convSourceId!==d)continue;let O=N(f,v.cite.turn);if(!(O!==null&&O.includes(v.cite.quote)))for(let S=s.turns;S>=1;S--){let L=N(f,S);if(L!==null&&L.includes(v.cite.quote)){v.cite={...v.cite,turn:S};break}}}},j=null,E=new Map,Q=new Map,B=null,k=()=>{R&&(clearTimeout(R),R=null);for(let e of c)e()},R=null,G=()=>{R||(R=setTimeout(()=>{R=null;for(let e of c)e()},80))},l=e=>{t.ledger.push(e)},D=null,A=!1,M=(e=!1)=>{D?l({kind:"agent",text:D}):e&&A&&l({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),D=null,A=!1},ne=()=>{D=null,A=!1},I=()=>{t.activeTurn&&(t.activeTurn=null)},W=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),U=()=>{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,g)=>{let f=e.resolution[g];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=j;j=null,o?.(n)},T=(e,n)=>{let o=t.pending,s=o.questions[e],g=o.resolution[e];o.resolution[e]=n;let f=te(s);g?l({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:f,choice:W(s,n),prev:g.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:W(s,n)}})},P=()=>{let e=t.pending;e&&(e.questions.forEach((n,o)=>{e.resolution[o]||T(o,{form:"deferred",selected_index:null,free_text:null,choice:""})}),U())},z=e=>({questions:e,cursor:0,resolution:e.map(()=>null)}),ie=e=>{let n=t.pending;t.notice=void 0;let o=ae(e,n);switch(o.kind){case"invalid":t.notice=o.message;return;case"defaults":{let s=!1;if(n.questions.forEach((g,f)=>{if(!n.resolution[f]){if(g.risk==="high"){s=!0;return}T(f,{form:"assumed",selected_index:g.recommended_index,free_text:null,choice:g.options[g.recommended_index]?.label??"?"})}}),s){n.cursor=n.questions.findIndex((g,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":P();return;case"option":{let s=n.questions[o.target];T(o.target,{form:"answered",selected_index:o.index,free_text:null,choice:s.options[o.index]?.label??String(o.index+1)});break}case"free":T(o.target,{form:"answered",selected_index:null,free_text:o.text,choice:o.text});break;case"multi":{let s=n.questions[o.target],g=o.indices[0];T(o.target,{form:"answered",selected_index:g,free_text:null,choice:s.options[g]?.label??String(g+1)}),t.notice="multi-select not yet supported end-to-end \u2014 sent your first choice";break}}U()};return{state:t,explainRef(e){if(!r.explain||!r.graph||r.contextDir===void 0){l({kind:"note",text:"explain isn't available here"}),k();return}let n=r.explain(r.contextDir,r.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
+ `):`unknown ref: ${e}`;l({kind:"note",text:o}),k()},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){ie(e),k();return}if(!i){t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",k();return}for(t.notice=void 0,t.checkpoint=!1,M(),t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,m+=1;a.length>0;)m+=1,i({type:"user_message",message_id:`u${m}-receipt`,text:a.shift()});i({type:"user_message",message_id:`u${m}`,text:e}),k()},attachSender(e){i=e},attachOnCommitted(e){h=e},attachConversationSource(e){d=e},holdReceipt(e){a.push(e),t.checkpoint=!0,k()},drainHeldReceipts(){return a.splice(0,a.length)},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let o=n-1;o>=0;o--)if(e.resolution[o]){e.cursor=o,k();return}},continueParked(){if(!(!i||a.length===0)){for(t.checkpoint=!1,l({kind:"continued"});a.length>0;)m+=1,i({type:"user_message",message_id:`u${m}-receipt`,text:a.shift()});m+=1,i({type:"user_message",message_id:`u${m}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),k()}},note(e){l({kind:"note",text:e}),k()},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid)},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}k()},ledger(e){(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(I(),M()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),l(e),e.kind==="commit"&&(e.ok?M(!0):ne()),k()},completeSession(){P(),i?.({type:"session_complete"}),t.status="idle",k()},requestPause(){P(),t.status="pausing";let e=i;Promise.resolve().then(()=>e?.({type:"pause"})),k()},ask(e){return t.pending=z(e),E=new Map(e.map((n,o)=>[n.id,o+1])),t.status="awaiting-input",k(),new Promise(n=>{j=n})},noteCoercion(e,n){l({kind:"answer",receipt:{form:"assumed",qNum:E.get(e.id)??0,stub:te(e),choice:n,note:"your typed answer couldn't be used here"}}),k()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=Z(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 ${Y(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"){G();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=B;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)&&(B={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},G();return}case"progress":break;case"proposal":{u+=1,I(),t.stream=null,t.busySince&&(l({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=ue(e.proposal),o=r.dedupFlags?.(e.proposal);if(o)for(let s of n){let g=o.get(s.temp_ref);g&&(s.matches_existing=g)}t.turns.push({role:"agent",turnIndex:u,items:n,text:e.narrative}),D=e.narrative??null,A=!0,t.activeTurn={turnIndex:u,heading:"use-cases",items:n},l({kind:"turn",turnIndex:u,heading:"use-cases",items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{u+=1,I(),t.stream=null,t.busySince&&(l({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:o}=ce(e.design),s=o.split(" + ").map(g=>de[g]??g).join(" + ");l({kind:"banner",text:`designing: ${s}`}),t.turns.push({role:"agent",turnIndex:u,items:n,itemsHeading:o,text:e.narrative}),D=e.narrative??null,A=!0,t.activeTurn={turnIndex:u,heading:o,items:n},l({kind:"turn",turnIndex:u,heading:o,items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=z(e.questions),t.status="awaiting-input";break;case"chat_ops":{u+=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??"",g=r.refreshGraph?.()??r.graph,f=p=>Q.get(p)??p,v=o.map(p=>{if(!p.target)return p;let y=f(p.target),w=p.expected_cid;if(w==null&&g){let H=g.resolve(y);H&&(w=g.tipOf(H.cid))}let $=p.payload?.redirect_to,q=$&&f($);return y===p.target&&w===p.expected_cid&&q===$?p:{...p,target:y,expected_cid:w,...q!==$?{payload:{...p.payload,redirect_to:q}}:{}}}),O;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");O=ee(v,r.descriptor??{mint_gate:[]},{turn:u,...d?{convSourceId:d}:{}})}catch(p){t.error=p instanceof Error?p.message:String(p),t.turns.push({role:"agent",turnIndex:u,text:s,narration:t.error}),s&&l({kind:"agent",text:s}),l({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:L}=O;if(L.length>0){let p=L[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${p.kinds.filter(y=>y!=="edit").join("/")} on ${p.target}?`},t.turns.push({role:"agent",turnIndex:u,text:s}),s&&l({kind:"agent",text:s});break}if(_(S),r.commitChatTurn&&S.length>0){let p=r.commitChatTurn({contextDir:r.contextDir??"",graph:r.refreshGraph?.()??r.graph,ops:S,by:r.by??{kind:"human",id:"owner"},...r.descriptor?.mint_gate?{mintable:r.descriptor.mint_gate}:{}});if(p.errors)t.error=p.errors.map(y=>y.detail).join("; "),t.turns.push({role:"agent",turnIndex:u,text:s}),l({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:p.errors.map(y=>`${y.code}: ${y.detail}`)}),s&&l({kind:"agent",text:s});else{p.applied.length>0&&r.session?.markApplied(p.applied);let y=x(p);t.turns.push({role:"agent",turnIndex:u,text:s,narration:y}),l({kind:"commit",ok:!0,line:y});let w=r.refreshGraph?.();if(w&&h&&h(w),w)try{b+=1;let F=r.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=K({verb:F,commitN:b,phase:"chat",committed:p.minted.map(q=>({cid:q.cid,...q.slug?{logical_id:q.slug}:{}}))},w);a.push($.text)}catch{}s&&l({kind:"agent",text:s})}}else t.turns.push({role:"agent",turnIndex:u,text:s}),s&&l({kind:"agent",text:s});C(s);break}case"done":case"session_complete":I(),M(),t.status="idle",i=null;break;case"error":I(),M(),t.stream=null,t.status="idle",t.error=e.message,i=null,l({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}k()}}}export{ke as makeChatController,ae as parseAnswerInput,te as questionStub};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as c,c as p}from"./chunk-NEZ4G7XR.js";import{spawn as m}from"child_process";var y=new Set(["progress","ask_user","graph_query","proposal","design","error","done","reasoning_delta","reasoning_done","tool_activity","decision_activity","text_delta","usage","receipt","chat_ops","session_paused","session_complete"]);function S(d,s={}){let a=s.spawnCmd!==void 0?s.spawnCmd:c();if(!a)throw new Error("assurance agent not found \u2014 your platform package may be missing; reinstall kane-cli (npm i -g @testmuai/kane-cli)");let n=m(a.cmd,a.args,{stdio:["pipe","pipe","pipe"],env:p(d.session_id,s.auth)});if(n.stdin.write(JSON.stringify(d)+`
2
+ import{b as c,c as p}from"./chunk-YZSYXNMB.js";import{spawn as m}from"child_process";var y=new Set(["progress","ask_user","graph_query","proposal","design","error","done","reasoning_delta","reasoning_done","tool_activity","decision_activity","text_delta","usage","receipt","chat_ops","session_paused","session_complete"]);function S(d,s={}){let a=s.spawnCmd!==void 0?s.spawnCmd:c();if(!a)throw new Error("assurance agent not found \u2014 your platform package may be missing; reinstall kane-cli (npm i -g @testmuai/kane-cli)");let n=m(a.cmd,a.args,{stdio:["pipe","pipe","pipe"],env:p(d.session_id,s.auth)});if(n.stdin.write(JSON.stringify(d)+`
3
3
  `),s.onStderr){let e="";n.stderr.on("data",r=>{e+=r.toString("utf8");let i;for(;(i=e.indexOf(`
4
4
  `))>=0;){let o=e.slice(0,i);e=e.slice(i+1),o.trim()&&s.onStderr(o)}})}let g=new Promise(e=>{n.on("exit",(r,i)=>e({code:r,signal:i}))});async function*f(){let e="",r=!1;for await(let i of n.stdout){e+=i.toString("utf8");let o;for(;(o=e.indexOf(`
5
5
  `))>=0;){let l=e.slice(0,o).trim();if(e=e.slice(o+1),!l)continue;let u;try{u=JSON.parse(l)}catch{s.onWarn?.(`agent: skipping malformed line: ${l.slice(0,120)}`);continue}let t=u;if(!t||typeof t!="object"||!y.has(t.type)){s.onWarn?.(`agent: skipping unknown event type "${t&&typeof t=="object"?String(t.type??"?"):"?"}"`);continue}if(yield t,t.type==="done"){r=!0;break}}if(r)break}await g.catch(()=>{})}return{events:f(),send:e=>{n.stdin&&!n.stdin.destroyed&&n.stdin.write(JSON.stringify(e)+`
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as b}from"./chunk-4G4HPMR2.js";import{c as k}from"./chunk-RFHMDQXZ.js";import{a as C}from"./chunk-L4AUCQVO.js";import{p as m,q as u,r as f,s as x,t as y}from"./chunk-QIE62H3J.js";import{createServer as S}from"http";import{randomBytes as A}from"crypto";import{URL as L}from"url";var P=class{profile;environment;creds;oauth;constructor(r="default",o="prod",e){this.profile=r,this.environment=o,this.creds=e??new C,this.oauth=new b(o)}async login(){let{server:r,port:o}=await this.startCallbackServer(),e=y(o);try{let t=this.creds.loadClient(this.profile,this.environment),i=t?.redirect_uris;(!t||!i?.includes(e))&&(t=await this.oauth.registerClient(e),this.creds.saveClient(this.profile,this.environment,t));let c=t.client_id,[h,d]=b.generatePkce(),a=A(32).toString("hex"),n=this.oauth.buildAuthorizationUrl(c,d,a,e),l=await this.waitForCallback(r,o,n,a);if(!l)throw new Error("Login cancelled or timed out");let p=await this.oauth.exchangeCode(l,c,h,e),g={access_token:p.access_token,refresh_token:p.refresh_token,expires_at:Math.floor(Date.now()/1e3)+p.expires_in,scope:p.scope??"*"};return this.creds.saveCredentials(this.profile,this.environment,g),this.creds.setActiveProfile(this.profile),g}catch(t){throw r.close(),t}}startCallbackServer(){return new Promise((r,o)=>{let e=u,t=()=>{let i=S();i.on("error",c=>{c.code==="EADDRINUSE"&&e<f?(e++,t()):o(new Error(`Failed to start callback server: ${c.message}. Ports ${u}-${f} are all in use.`))}),i.listen(e,m,()=>{r({server:i,port:e})})};t()})}waitForCallback(r,o,e,t){return new Promise(i=>{let c=!1,h=setTimeout(()=>d(null),12e4),d=a=>{c||(c=!0,clearTimeout(h),r.close(),i(a))};r.on("request",(a,n)=>{let l=new L(a.url??"/",`http://${m}:${o}`);if(l.pathname!==x){n.writeHead(404),n.end();return}let p=l.searchParams.get("state"),g=l.searchParams.get("code");if(l.searchParams.get("error")){n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Login failed",message:"We couldn't complete the sign-in. You can close this tab and try again from your terminal."})),d(null);return}if(p!==t){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Invalid state",message:"The sign-in response didn't match this session. Please return to your terminal and try again."})),d(null);return}n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"success",title:"You're signed in",message:"Head back to your terminal \u2014 KaneAI is ready when you are.",autoClose:!0})),d(g)}),k(e).catch(a=>{let n=a instanceof Error?a.message:String(a);process.stderr.write(`[auth] Could not open browser: ${n}
2
+ import{a as b}from"./chunk-SL7AJ7JQ.js";import{c as k}from"./chunk-RFHMDQXZ.js";import{a as C}from"./chunk-TZZYRDCF.js";import{p as m,q as u,r as f,s as x,t as y}from"./chunk-E4OYR32M.js";import{createServer as S}from"http";import{randomBytes as A}from"crypto";import{URL as L}from"url";var P=class{profile;environment;creds;oauth;constructor(r="default",o="prod",e){this.profile=r,this.environment=o,this.creds=e??new C,this.oauth=new b(o)}async login(){let{server:r,port:o}=await this.startCallbackServer(),e=y(o);try{let t=this.creds.loadClient(this.profile,this.environment),i=t?.redirect_uris;(!t||!i?.includes(e))&&(t=await this.oauth.registerClient(e),this.creds.saveClient(this.profile,this.environment,t));let c=t.client_id,[h,d]=b.generatePkce(),a=A(32).toString("hex"),n=this.oauth.buildAuthorizationUrl(c,d,a,e),l=await this.waitForCallback(r,o,n,a);if(!l)throw new Error("Login cancelled or timed out");let p=await this.oauth.exchangeCode(l,c,h,e),g={access_token:p.access_token,refresh_token:p.refresh_token,expires_at:Math.floor(Date.now()/1e3)+p.expires_in,scope:p.scope??"*"};return this.creds.saveCredentials(this.profile,this.environment,g),this.creds.setActiveProfile(this.profile),g}catch(t){throw r.close(),t}}startCallbackServer(){return new Promise((r,o)=>{let e=u,t=()=>{let i=S();i.on("error",c=>{c.code==="EADDRINUSE"&&e<f?(e++,t()):o(new Error(`Failed to start callback server: ${c.message}. Ports ${u}-${f} are all in use.`))}),i.listen(e,m,()=>{r({server:i,port:e})})};t()})}waitForCallback(r,o,e,t){return new Promise(i=>{let c=!1,h=setTimeout(()=>d(null),12e4),d=a=>{c||(c=!0,clearTimeout(h),r.close(),i(a))};r.on("request",(a,n)=>{let l=new L(a.url??"/",`http://${m}:${o}`);if(l.pathname!==x){n.writeHead(404),n.end();return}let p=l.searchParams.get("state"),g=l.searchParams.get("code");if(l.searchParams.get("error")){n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Login failed",message:"We couldn't complete the sign-in. You can close this tab and try again from your terminal."})),d(null);return}if(p!==t){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Invalid state",message:"The sign-in response didn't match this session. Please return to your terminal and try again."})),d(null);return}n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"success",title:"You're signed in",message:"Head back to your terminal \u2014 KaneAI is ready when you are.",autoClose:!0})),d(g)}),k(e).catch(a=>{let n=a instanceof Error?a.message:String(a);process.stderr.write(`[auth] Could not open browser: ${n}
3
3
  Please open this URL manually: ${e}
4
4
  `)})})}};function v(s){let r=s.state==="success",o=r?"#22c55e":"#ef4444",e=r?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)",t=r?'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12.5l4.5 4.5L19 7"/></svg>':'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>',i=s.autoClose?"<script>setTimeout(function(){try{window.close();}catch(e){}}, 1500);</script>":"";return`<!doctype html>
5
5
  <html lang="en">
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as k}from"./chunk-FPFOW6BS.js";import{h as a}from"./chunk-M5JQXOCE.js";import{a as m}from"./chunk-2WVKOZ6W.js";import{a as y}from"./chunk-YIOWO6WS.js";import{a as h}from"./chunk-L4AUCQVO.js";var $=10,u=200,N=1e4,S=1e6;function T(t,e,r="streaming"){let n=r==="full-fetch"?S:N,o=$,i=0;if(t!==void 0){let s=Number(t);if(!Number.isInteger(s)||s<1||s>u)return{error:`--limit must be an integer in [1, ${u}] (got "${t}")`};o=s}if(e!==void 0){let s=Number(e);if(!Number.isInteger(s)||s<0||s>n)return{error:`--offset must be an integer in [0, ${n}] (got "${e}")`};i=s}return{limit:o,offset:i}}function C(t,e){if(!e)return t;let r=e.toLowerCase();return t.filter(n=>n.name.toLowerCase().includes(r))}function j(t,{limit:e,offset:r}){let n=t.slice(r,r+e),o=t.length>r+e;return{slice:n,hasMore:o}}function v(t,e,r=n=>process.stdout.write(`${n}
2
+ import{a as k}from"./chunk-FPFOW6BS.js";import{h as a}from"./chunk-M5JQXOCE.js";import{a as m}from"./chunk-2WVKOZ6W.js";import{a as y}from"./chunk-RLG5NUTE.js";import{a as h}from"./chunk-TZZYRDCF.js";var $=10,u=200,N=1e4,S=1e6;function T(t,e,r="streaming"){let n=r==="full-fetch"?S:N,o=$,i=0;if(t!==void 0){let s=Number(t);if(!Number.isInteger(s)||s<1||s>u)return{error:`--limit must be an integer in [1, ${u}] (got "${t}")`};o=s}if(e!==void 0){let s=Number(e);if(!Number.isInteger(s)||s<0||s>n)return{error:`--offset must be an integer in [0, ${n}] (got "${e}")`};i=s}return{limit:o,offset:i}}function C(t,e){if(!e)return t;let r=e.toLowerCase();return t.filter(n=>n.name.toLowerCase().includes(r))}function j(t,{limit:e,offset:r}){let n=t.slice(r,r+e),o=t.length>r+e;return{slice:n,hasMore:o}}function v(t,e,r=n=>process.stdout.write(`${n}
3
3
  `)){for(let n of t)r(JSON.stringify(n));r(JSON.stringify({_meta:"page",limit:e.limit,offset:e.offset,returned:t.length,has_more:e.has_more}))}function b(t,e,r=n=>process.stdout.write(`${n}
4
- `)){if(t.length===0){r("(no results)");return}let n=Math.max(2,...t.map(s=>s.id.length)),o=`${"ID".padEnd(n)} NAME`;r(o),r(`${"-".repeat(n)} ----`);for(let s of t)r(`${s.id.padEnd(n)} ${s.name}`);r("");let i=e.offset+t.length;if(e.hasMore){let s=e.totalIsLowerBound?`${e.total}+`:`${e.total}`;r(`${i} of ${s} \u2014 next: --offset ${e.offset+e.limit}`)}else r(`${t.length} shown (${e.total} total)`)}async function B(t,e,r){if(r.username&&r.accessKey)return{ok:!0,creds:{username:r.username,access_key:r.accessKey}};let n=new h,o=n.loadBasicAuth(t,e);if(o)return{ok:!0,creds:{username:o.username,access_key:o.access_key}};let i=n.loadCredentials(t,e);if(!i)return{ok:!1,reason:"no_credentials"};let s=i.access_token;try{let{refreshOAuthToken:d}=await import("./token-refresh-DH2L2IPP.js"),w=await d({creds:n,profile:t,env:e,credentials:i});w&&(s=w.accessToken)}catch(d){return{ok:!1,reason:"refresh_failed",detail:d instanceof Error?d.message:String(d)}}let c=y(e),f=await new k(c.controllerBaseUrl,async()=>s,null).resolve();return f?{ok:!0,creds:{username:f.username,access_key:f.access_key}}:{ok:!1,reason:"exchange_failed"}}function E(t,e,r){switch(r.reason){case"no_credentials":return{message:`error: no credentials for profile "${t}" [${e}]. Run \`kane-cli login\` or pass --username/--access-key.
4
+ `)){if(t.length===0){r("(no results)");return}let n=Math.max(2,...t.map(s=>s.id.length)),o=`${"ID".padEnd(n)} NAME`;r(o),r(`${"-".repeat(n)} ----`);for(let s of t)r(`${s.id.padEnd(n)} ${s.name}`);r("");let i=e.offset+t.length;if(e.hasMore){let s=e.totalIsLowerBound?`${e.total}+`:`${e.total}`;r(`${i} of ${s} \u2014 next: --offset ${e.offset+e.limit}`)}else r(`${t.length} shown (${e.total} total)`)}async function B(t,e,r){if(r.username&&r.accessKey)return{ok:!0,creds:{username:r.username,access_key:r.accessKey}};let n=new h,o=n.loadBasicAuth(t,e);if(o)return{ok:!0,creds:{username:o.username,access_key:o.access_key}};let i=n.loadCredentials(t,e);if(!i)return{ok:!1,reason:"no_credentials"};let s=i.access_token;try{let{refreshOAuthToken:d}=await import("./token-refresh-GGLARJV4.js"),w=await d({creds:n,profile:t,env:e,credentials:i});w&&(s=w.accessToken)}catch(d){return{ok:!1,reason:"refresh_failed",detail:d instanceof Error?d.message:String(d)}}let c=y(e),f=await new k(c.controllerBaseUrl,async()=>s,null).resolve();return f?{ok:!0,creds:{username:f.username,access_key:f.access_key}}:{ok:!1,reason:"exchange_failed"}}function E(t,e,r){switch(r.reason){case"no_credentials":return{message:`error: no credentials for profile "${t}" [${e}]. Run \`kane-cli login\` or pass --username/--access-key.
5
5
  `,exitCode:2};case"refresh_failed":return{message:`error: OAuth token refresh failed for profile "${t}" [${e}]${r.detail?`: ${r.detail}`:""}. Run \`kane-cli login\` to re-auth.
6
6
  `,exitCode:2};case"exchange_failed":return{message:`error: TMS credential exchange failed for profile "${t}" [${e}]. Token may be revoked \u2014 try \`kane-cli login\`; if the problem persists, TMS may be down.
7
7
  `,exitCode:2}}}function O(t){return{id:t.project_id,name:t.name}}function M(t){return{id:t.id,name:t.name}}async function P(t,e,r,n){let o=r+n+1,i=[],s=!0;for await(let c of t.listProjectsStream({name:e})){if(i.push(...c.projects),c.done){s=!0;break}if(i.length>=o){s=!1;break}}return{items:i,doneStreaming:s}}function g(t){return!!t.agent||!process.stdin.isTTY||!process.stdout.isTTY}function _(t,e=r=>process.stdout.write(`${r}