@testmuai/kane-cli 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChromeProfilePicker-YIDCOJVA.js +2 -0
- package/dist/CliFeedbackPrompt-T5LVDBVG.js +2 -0
- package/dist/{CliUploadProgress-BSXWFIP5.js → CliUploadProgress-YJW7DHBT.js} +1 -1
- package/dist/{ConfigView-53QUJ3UT.js → ConfigView-5L75H3A6.js} +1 -1
- package/dist/FolderPicker-LEE4Y5JF.js +2 -0
- package/dist/{HelpView-ZR5EXR7F.js → HelpView-SIIWVMWF.js} +1 -1
- package/dist/{LinksBox-6CLSLM2A.js → LinksBox-M72NCTRJ.js} +1 -1
- package/dist/ProfilesView-6MW5P6M4.js +2 -0
- package/dist/ProjectPicker-57G2ILEN.js +2 -0
- package/dist/SingleShotApp-UD4M2CZC.js +2 -0
- package/dist/{WhoamiView-AXPRRGNG.js → WhoamiView-ZKNSYOLI.js} +1 -1
- package/dist/{changelog-L2FNAYGV.js → changelog-TWE6QJ5S.js} +1 -1
- package/dist/{chunk-CUBXICTI.js → chunk-2O7RIXHD.js} +1 -1
- package/dist/{chunk-56DFEK7K.js → chunk-55EYPGTJ.js} +1 -1
- package/dist/chunk-7ONI2K3S.js +2 -0
- package/dist/{chunk-EOOULVWR.js → chunk-C4KI7FLV.js} +1 -1
- package/dist/chunk-CKMDFVL6.js +5 -0
- package/dist/{chunk-RFGE6ULZ.js → chunk-D3YS6JDD.js} +2 -2
- package/dist/{chunk-4HQOC372.js → chunk-HHNLJWO5.js} +1 -1
- package/dist/{chunk-QX4WHNRG.js → chunk-ID77BNBM.js} +1 -1
- package/dist/chunk-IQYKSZAW.js +20 -0
- package/dist/chunk-J3ZXTHAH.js +103 -0
- package/dist/chunk-LBW6EFWN.js +2 -0
- package/dist/chunk-M5TQDTQN.js +2 -0
- package/dist/{chunk-GIXIZJ6Y.js → chunk-NDMXYUJM.js} +1 -1
- package/dist/chunk-TMTSY6CU.js +2 -0
- package/dist/chunk-XQL5WHKR.js +2 -0
- package/dist/chunk-Y3MXIITZ.js +2 -0
- package/dist/chunk-Y4AOKSSQ.js +2 -0
- package/dist/chunk-YUUZDFT7.js +2 -0
- package/dist/chunk-Z3JYUFJ4.js +2 -0
- package/dist/index.js +46 -57
- package/dist/{logging-R5263ZJZ.js → logging-JWPN5HMJ.js} +1 -1
- package/dist/login-flow-WXMKYI5G.js +2 -0
- package/dist/{pipeline-QHJGNZ7H.js → pipeline-6DGALO2W.js} +1 -1
- package/dist/{tms-client-VH42IFUF.js → tms-client-CTH4NVFM.js} +1 -1
- package/dist/validate-basic-RV5TSUKJ.js +2 -0
- package/dist/{version-check-NUVM7TOP.js → version-check-FOMPCS47.js} +1 -1
- package/package.json +5 -5
- package/dist/ChromeProfilePicker-ZDIWVMLR.js +0 -2
- package/dist/CliFeedbackPrompt-V6X2IESW.js +0 -2
- package/dist/FolderPicker-BHEDYLKA.js +0 -2
- package/dist/LoginWizard-NJA5AAYO.js +0 -2
- package/dist/ProfilesView-HEUHISRN.js +0 -2
- package/dist/ProjectPicker-YZZUJDOQ.js +0 -2
- package/dist/chunk-2ATFRKHW.js +0 -2
- package/dist/chunk-4RVMT7O2.js +0 -106
- package/dist/chunk-BTLH2ZWO.js +0 -2
- package/dist/chunk-BXWE7UO7.js +0 -2
- package/dist/chunk-C7FS7B4O.js +0 -2
- package/dist/chunk-DGFG2WJH.js +0 -2
- package/dist/chunk-HFQ7T5KT.js +0 -2
- package/dist/chunk-RTOXLI4C.js +0 -2
- package/dist/chunk-TV6MHKZV.js +0 -2
- package/dist/chunk-YLC6PSJZ.js +0 -2
- package/dist/login-flow-J5AIWRWS.js +0 -2
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as De}from"./chunk-LBW6EFWN.js";import{a as Pe,b as Fe}from"./chunk-CKMDFVL6.js";import{a as fe}from"./chunk-PWGEMRBD.js";import{b as Le}from"./chunk-M5TQDTQN.js";import{a as je}from"./chunk-Y3MXIITZ.js";import{a as ne}from"./chunk-2O7RIXHD.js";import{a as re}from"./chunk-XQL5WHKR.js";import{a as X}from"./chunk-HCBYKLMW.js";import{c as de,d as Ae,h as Ie,t as v}from"./chunk-7ONI2K3S.js";import{a as x,b as h,h as Ce,i as z,j as Ee,k as Re}from"./chunk-C44QQJR4.js";import{a as te}from"./chunk-6YGTRKDT.js";import{a as _e}from"./chunk-YUUZDFT7.js";import{e as $}from"./chunk-UR6MHSHU.js";var R=$(te(),1);var J=$(te(),1);var ve=$(te(),1);var Y=$(X(),1);function Be({history:o,onSelect:e,onClose:t}){let[i,l]=(0,ve.useState)(""),[r,c]=(0,ve.useState)(0),n=i?o.search(i).slice(0,8):[];return z((a,_)=>{if(_.escape){t();return}if(_.return){n.length>0&&n[r]?e(n[r]):t();return}if(_.upArrow){c(b=>Math.max(0,b-1));return}if(_.downArrow){c(b=>Math.min(n.length-1,b+1));return}if(_.backspace||_.delete){l(b=>b.slice(0,-1)),c(0);return}a&&!_.ctrl&&!_.meta&&(l(b=>b+a),c(0))}),(0,Y.jsxs)(x,{flexDirection:"column",marginLeft:2,borderStyle:"single",paddingX:1,children:[(0,Y.jsx)(h,{color:v.muted,bold:!0,children:"reverse search"}),(0,Y.jsxs)(x,{gap:1,children:[(0,Y.jsx)(h,{color:v.dimmed,children:"search:"}),(0,Y.jsx)(h,{children:i}),(0,Y.jsx)(h,{color:v.purple,children:"\u2588"})]}),n.length>0&&(0,Y.jsx)(h,{children:" "}),n.map((a,_)=>(0,Y.jsx)(x,{marginLeft:2,children:(0,Y.jsxs)(h,{color:_===r?v.purple:v.dimmed,bold:_===r,children:[_===r?"\u25B8 ":" ",a]})},`${_}-${a}`))]})}var Q=$(X(),1);function Oe({commands:o,selectedIndex:e}){return o.length===0?null:(0,Q.jsx)(x,{flexDirection:"column",marginBottom:0,children:o.map((t,i)=>{let l=i===e;return(0,Q.jsxs)(x,{children:[(0,Q.jsx)(h,{color:l?v.primary:v.dimmed,children:l?"\u276F ":" "}),(0,Q.jsxs)(h,{color:l?v.primary:void 0,bold:l,children:["/",t.name]}),t.args&&(0,Q.jsxs)(h,{color:v.dimmed,children:[" ",t.args]}),(0,Q.jsxs)(h,{color:v.dimmed,children:[" ",t.description]})]},t.name)})})}var ge=$(te(),1);var qe=27,Qe=127,Ze=11;function et(o){return o>=64&&o<=126}function tt(o,e){o===Ze&&e({killToEnd:!0,ctrl:!0,raw:String.fromCharCode(o)})}function rt(o,e){o===Qe&&e({backspace:!0,meta:!0,raw:"\x1B\x7F"})}function nt(o,e){let t=o.map(l=>String.fromCharCode(l)).join(""),i=/^\[1;([0-9]+)([A-D])$/.exec(t);if(i){let l=parseInt(i[1],10),r=i[2],c={raw:"\x1B"+t};if(l===2)c.shift=!0;else if(l===3)c.meta=!0;else if(l===5)c.ctrl=!0;else return;r==="A"?c.arrowUp=!0:r==="B"?c.arrowDown=!0:r==="C"?c.arrowRight=!0:r==="D"&&(c.arrowLeft=!0),e(c);return}if(t==="[H"||t==="[1~"||t==="[7~"){e({home:!0,raw:"\x1B"+t});return}if(t==="[F"||t==="[4~"||t==="[8~"){e({end:!0,raw:"\x1B"+t});return}if(t==="[3;5~"){e({delete:!0,ctrl:!0,raw:"\x1B"+t});return}if(t==="[3;3~"){e({delete:!0,meta:!0,raw:"\x1B"+t});return}}function ot(o,e){o===72?e({home:!0,raw:"\x1BO"+String.fromCharCode(o)}):o===70&&e({end:!0,raw:"\x1BO"+String.fromCharCode(o)})}function it(){let o="IDLE",e=[];function t(){o="IDLE",e=[]}return{feed(i,l){for(let r of i)o==="IDLE"?r===qe?(o="ESC",e=[]):tt(r,l):o==="ESC"?r===91?(o="CSI",e=[]):r===79?(o="SS3",e=[]):(rt(r,l),t()):o==="CSI"?(e.push(r),et(r)&&(nt([91,...e],l),t())):o==="SS3"&&(ot(r,l),t())},flushIdle(i){o==="ESC"&&e.length===0&&i({raw:"\x1B"}),t()}}}function Ne(o,e={}){let t=(0,ge.useRef)(o);t.current=o;let{stdin:i}=Ce();(0,ge.useEffect)(()=>{if(e.isActive===!1||!i)return;let l=it(),r=null,c=n=>{r&&(clearTimeout(r),r=null);let a=Buffer.isBuffer(n)?n:Buffer.from(n,"binary");l.feed(a,_=>t.current(_)),r=setTimeout(()=>{l.flushIdle(_=>t.current(_)),r=null},50)};return i.on("data",c),()=>{i.removeListener("data",c),r&&clearTimeout(r)}},[e.isActive,i])}var D=$(X(),1);function $e({onSubmit:o,onEscape:e,history:t,placeholder:i="Type an objective or /command...",commands:l}){let[r,c]=(0,J.useState)([]),[n,a]=(0,J.useState)(0),[_,b]=(0,J.useState)("none"),[j,C]=(0,J.useState)(-1),A=(0,J.useRef)(""),[L,ee]=(0,J.useState)(!0),{stdout:N}=Re(),F=N?.columns??80,[U,K]=(0,J.useState)(0),I=r.join(""),G=(()=>{if(_!=="none"||r.length===0)return"";if(I.startsWith("/")&&l&&I.length>=2){let s=I.slice(1).toLowerCase(),u=l.find(y=>y.name.startsWith(s)&&y.name!==s);return u?`/${u.name}`.slice(I.length):""}if(I.startsWith("/"))return"";let f=t.getAll();for(let s=f.length-1;s>=0;s--)if(f[s].startsWith(I)&&f[s]!==I)return f[s].slice(I.length);return""})(),B=(()=>{if(!l||!I.startsWith("/"))return[];let f=I.length>=2?I.slice(1).toLowerCase():"";return f&&l.some(s=>s.name===f)?[]:l.filter(s=>!f||s.name.startsWith(f))})(),H=B.length>0&&I.startsWith("/");z((f,s)=>{if(L&&f&&ee(!1),s.return){if(H&&B[U]){let u=`/${B[U].name}`;t.push(u),o(u),c([]),a(0),b("none"),C(-1),A.current="",ee(!0),K(0);return}I.trim()&&(t.push(I.trim()),o(I.trim()),c([]),a(0),b("none"),C(-1),A.current="",ee(!0),K(0));return}if(s.escape){_!=="none"?b("none"):r.length>0?(c([]),a(0),C(-1),A.current=""):e?.();return}if(s.tab){if(H&&B[U]){let u=`/${B[U].name}`;c([...u]),a(u.length),K(0);return}if(G){let u=I+G;c([...u]),a(u.length);return}return}if(s.ctrl&&f==="r"){b("search");return}if(s.ctrl&&f==="a"){a(0);return}if(s.ctrl&&f==="e"){a(r.length);return}if(s.ctrl&&f==="w"){if(n===0)return;let u=n-1;for(;u>0&&r[u]===" ";)u--;for(;u>0&&r[u-1]!==" ";)u--;let y=[...r.slice(0,u),...r.slice(n)];c(y),a(u);return}if(s.ctrl&&f==="u"){c([]),a(0),C(-1),b("none");return}if(s.meta&&f==="b"){let u=n-1;for(;u>0&&r[u]===" ";)u--;for(;u>0&&r[u-1]!==" ";)u--;a(Math.max(0,u));return}if(s.meta&&f==="f"){let u=n;for(;u<r.length&&r[u]!==" ";)u++;for(;u<r.length&&r[u]===" ";)u++;a(u);return}if(s.leftArrow){if(s.ctrl||s.shift)return;a(u=>Math.max(0,u-1));return}if(s.rightArrow){if(s.ctrl||s.shift)return;if(n>=r.length&&G){let u=I+G;c([...u]),a(u.length)}else a(u=>Math.min(r.length,u+1));return}if(s.upArrow){if(s.shift)return;if(H){K(u=>Math.max(0,u-1));return}if(_==="none"){let u=t.getAll();if(u.length===0)return;if(j===-1){A.current=I,C(u.length-1);let y=u[u.length-1];c([...y]),a(y.length)}else if(j>0){let y=j-1;C(y);let O=u[y];c([...O]),a(O.length)}}return}if(s.downArrow){if(s.shift)return;if(H){K(u=>Math.min(B.length-1,u+1));return}if(_==="none"){let u=t.getAll();if(j===-1)return;if(j<u.length-1){let y=j+1;C(y);let O=u[y];c([...O]),a(O.length)}else{C(-1);let y=A.current;c([...y]),a(y.length)}}return}if(s.backspace||s.delete){if(s.meta||s.ctrl)return;if(n>0){let u=[...r.slice(0,n-1),...r.slice(n)];c(u),a(n-1),C(-1),K(0)}return}if(f&&!s.ctrl&&!s.meta){let u=[...r.slice(0,n),...f,...r.slice(n)];c(u),a(n+f.length),C(-1),K(0)}},{isActive:_!=="search"}),Ne(f=>{if(f.home){a(0);return}if(f.end){a(r.length);return}if(f.killToEnd){c(r.slice(0,n));return}if(f.arrowLeft&&(f.ctrl||f.meta)){let s=n-1;for(;s>0&&r[s]===" ";)s--;for(;s>0&&r[s-1]!==" ";)s--;a(Math.max(0,s));return}if(f.arrowRight&&(f.ctrl||f.meta)){let s=n;for(;s<r.length&&r[s]!==" ";)s++;for(;s<r.length&&r[s]===" ";)s++;a(s);return}if(f.backspace&&f.meta){if(n===0)return;let s=n-1;for(;s>0&&r[s]===" ";)s--;for(;s>0&&r[s-1]!==" ";)s--;let u=[...r.slice(0,s),...r.slice(n)];c(u),a(s);return}if(f.delete&&(f.ctrl||f.meta)){let s=n;for(;s<r.length&&r[s]===" ";)s++;for(;s<r.length&&r[s]!==" ";)s++;c([...r.slice(0,n),...r.slice(s)]);return}},{isActive:_!=="search"});let se=f=>{c([...f]),a(f.length),b("none")},M=()=>{b("none")},V=(()=>{if(L&&r.length===0)return null;let f=n>=r.length,s=r.slice(0,n).join(""),u=f?" ":r[n],y=f?"":r.slice(n+1).join(""),O="\u276F "+s+u+y+G,W=2,d=W+s.length,g=d+1,p=g+y.length,m=O.length,S=Math.max(1,Math.ceil(m/F)),E=[];for(let P=0;P<S;P++)E.push({start:P*F,end:Math.min((P+1)*F,m)});return{full:O,p:W,b:d,c:g,a:p,lines:E}})();return(0,D.jsxs)(x,{flexDirection:"column",children:[_==="search"&&(0,D.jsx)(Be,{history:t,onSelect:se,onClose:M}),H&&(0,D.jsx)(Oe,{commands:B,selectedIndex:U}),(0,D.jsx)(h,{color:v.muted,children:"\u2500".repeat(F)}),V===null?(0,D.jsxs)(x,{children:[(0,D.jsx)(h,{color:v.purple,children:"\u276F "}),(0,D.jsx)(h,{inverse:!0,children:" "}),(0,D.jsx)(h,{color:v.dimmed,children:i})]}):(0,D.jsx)(x,{flexDirection:"column",children:V.lines.map(({start:f,end:s},u)=>{let{full:y,p:O,b:W,c:d,a:g}=V,p=[];return s>0&&f<O&&p.push((0,D.jsx)(h,{color:v.purple,children:y.slice(Math.max(f,0),Math.min(O,s))},"p")),s>O&&f<W&&p.push((0,D.jsx)(h,{children:y.slice(Math.max(O,f),Math.min(W,s))},"b")),s>W&&f<d&&p.push((0,D.jsx)(h,{color:v.purple,inverse:!0,children:y.slice(Math.max(W,f),Math.min(d,s))},"c")),s>d&&f<g&&p.push((0,D.jsx)(h,{children:y.slice(Math.max(d,f),Math.min(g,s))},"a")),s>g&&p.push((0,D.jsx)(h,{color:v.dimmed,children:y.slice(Math.max(g,f),s)},"g")),(0,D.jsx)(x,{children:p},u)})}),(0,D.jsx)(re,{bindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"}],escBackLabel:"clear"})]})}var k=$(te(),1);var w=$(X(),1);function st(o){let e=[{id:"method",label:"Auth method",options:[{label:"Basic Auth",value:"basic"},{label:"OAuth (browser)",value:"oauth"}]}];return o&&e.push({id:"env",label:"Environment",options:[{label:"prod",value:"prod"},{label:"stage",value:"stage"}]}),e.push({id:"profile",label:"Profile"}),e.push({id:"credentials",label:"Credentials"}),e}function ke({devMode:o,profiles:e,onBasicLogin:t,onOAuthLogin:i,onComplete:l,onCancel:r}){let c=st(o),[n,a]=(0,k.useState)(0),[_,b]=(0,k.useState)(0),[j,C]=(0,k.useState)({}),[A,L]=(0,k.useState)("select"),[ee,N]=(0,k.useState)(""),[F,U]=(0,k.useState)("username"),[K,I]=(0,k.useState)(""),[G,B]=(0,k.useState)(null),[H,se]=(0,k.useState)(null),M=c[n],V=j.method??"basic",f=j.env??"prod",s=(0,k.useCallback)(()=>{let m=e.filter(S=>S.env===f).map(S=>({label:`${S.profile} [${S.env}]`,value:S.profile}));return m.push({label:"+ Create new",value:"__new__"}),m},[e,f]),u=(0,k.useCallback)(()=>{n===0?r():(a(p=>p-1),b(0),L("select"),N(""),B(null))},[n,r]),y=(0,k.useCallback)(p=>{V==="basic"?(L("text-input"),U("username"),N("")):(L("waiting"),i(p,f).then(()=>{se(`Logged in via OAuth as ${p} [${f}]`),L("done")}).catch(m=>{B(m.message),L("error")}))},[V,f,i]),O=(0,k.useCallback)(p=>{let m=p.trim();if(m){if(F==="profileName"){let S=m;C(E=>({...E,profile:S})),y(S);return}if(F==="username"){I(m),N(""),U("accessKey"),L("text-input-masked");return}if(F==="accessKey"){let S=j.profile??"default";L("waiting"),(async()=>{try{await t(S,f,K,m),se(`Logged in as ${S} [${f}] via basic auth`),L("done")}catch{B("Credentials not valid. Please use valid credentials."),I(""),N(""),U("username"),L("text-input")}})()}}},[F,j.profile,f,t,K,y]),W=(0,k.useCallback)(p=>{N(p),G&&B(null)},[G]);z((p,m)=>{if(A==="done"){let E=j.profile??"default";l(E,f);return}if(A==="error"){r();return}if(A==="waiting"){m.escape&&r();return}if(A==="text-input"||A==="text-input-masked")return;if(m.escape){u();return}let S=M?.id==="profile"?s():M?.options??[];if(m.upArrow){b(E=>Math.max(0,E-1));return}if(m.downArrow){b(E=>Math.min(S.length-1,E+1));return}if(m.return&&S[_]){let E=S[_];if(M.id==="profile"){if(E.value==="__new__"){L("text-input"),U("profileName"),N("");return}C(P=>({...P,profile:E.value})),a(P=>P+1),b(0),y(E.value);return}C(P=>({...P,[M.id]:E.value})),a(P=>P+1),b(0)}});let d="Login";if(A==="done")return(0,w.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:v.statusPass,paddingX:2,paddingY:1,children:[(0,w.jsxs)(h,{color:v.statusPass,bold:!0,children:["\u2713 ",H]}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsx)(h,{color:v.dim,children:"press any key"})})]});if(A==="error")return(0,w.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:v.statusFail,paddingX:2,paddingY:1,children:[(0,w.jsx)(h,{color:v.statusFail,bold:!0,children:"Login failed"}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsx)(h,{color:v.statusFail,children:G})}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsx)(h,{color:v.dim,children:"press any key"})})]});if(A==="waiting")return(0,w.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:v.primary,paddingX:2,paddingY:1,children:[(0,w.jsxs)(h,{color:v.primary,bold:!0,children:[d," \u203A OAuth"]}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsx)(h,{color:v.secondary,children:"Opening browser for login..."})}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsx)(h,{color:v.primary,children:"Waiting for callback \u27F3"})}),(0,w.jsx)(re,{bindings:[],escBackLabel:"cancel"})]});if(A==="text-input"||A==="text-input-masked"){let p=F==="username"?"Username":F==="accessKey"?"Access Key":"Profile name",m=F==="username"||F==="accessKey"?`${d} \u203A Basic Auth`:`${d} \u203A New Profile`;return(0,w.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:v.primary,paddingX:2,paddingY:1,children:[G&&(F==="username"||F==="accessKey")&&(0,w.jsx)(x,{marginBottom:1,children:(0,w.jsxs)(h,{color:v.statusFail,children:["\u2717 ",G]})}),(0,w.jsx)(h,{color:v.primary,bold:!0,children:m}),F==="accessKey"&&(0,w.jsxs)(x,{marginTop:1,children:[(0,w.jsx)(h,{color:v.secondary,children:"Username: "}),(0,w.jsx)(h,{children:K})]}),(0,w.jsxs)(x,{marginTop:1,children:[(0,w.jsxs)(h,{color:v.secondary,children:[p,": "]}),(0,w.jsx)(je,{value:ee,onChange:W,onSubmit:O,onCancel:u,masked:A==="text-input-masked"})]}),(0,w.jsx)(re,{bindings:[{keys:"\u21B5",label:"confirm"}],escBackLabel:"back"})]})}let g=M?.id==="profile"?s():M?.options??[];return(0,w.jsxs)(x,{flexDirection:"column",borderStyle:"round",borderColor:v.primary,paddingX:2,paddingY:1,children:[(0,w.jsx)(h,{color:v.primary,bold:!0,children:d}),(0,w.jsx)(x,{marginTop:1,children:(0,w.jsxs)(h,{color:v.secondary,children:[M?.label,":"]})}),(0,w.jsx)(x,{flexDirection:"column",marginTop:1,children:g.map((p,m)=>{let S=m===_,E=S?"\u276F ":" ",P=p.value==="__new__"?v.statusPass:S?v.primary:void 0;return(0,w.jsxs)(h,{color:P,children:[E,p.label]},p.value)})}),(0,w.jsx)(re,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})}import{readFileSync as lt,writeFileSync as xe,mkdirSync as Se,existsSync as at}from"fs";import{dirname as we}from"path";var me={window_size:{width:1920,height:1080},chrome_profile_path:"",default_url:Ie,model:"v16-alpha",project_id:null,project_name:null,folder_id:null,folder_name:null,mode:"testing",code_export:{enabled:!0,language:"python",skip_validation:!0},last_seen_version:""},oe=class{constructor(e=Ae){this.path=e}exists(){return at(this.path)}load(){try{let e=lt(this.path,"utf-8"),t=JSON.parse(e);return{...me,...t,code_export:{...me.code_export,...t.code_export??{}}}}catch{return{...me,code_export:{...me.code_export}}}}set(e,t){try{let i=this.load();i[e]=t,Se(we(this.path),{recursive:!0}),xe(this.path,JSON.stringify(i,null,2)+`
|
|
3
|
+
`)}catch(i){let l=i instanceof Error?i.message:String(i);process.stderr.write(`[config] Failed to save config: ${l}
|
|
4
|
+
`)}}save(e){try{let i={...this.load(),...e};Se(we(this.path),{recursive:!0}),xe(this.path,JSON.stringify(i,null,2)+`
|
|
5
|
+
`)}catch(t){let i=t instanceof Error?t.message:String(t);process.stderr.write(`[config] Failed to save config: ${i}
|
|
6
|
+
`)}}writeRaw(e){try{Se(we(this.path),{recursive:!0}),xe(this.path,JSON.stringify(e,null,2)+`
|
|
7
|
+
`)}catch(t){let i=t instanceof Error?t.message:String(t);process.stderr.write(`[config] Failed to save config: ${i}
|
|
8
|
+
`)}}};import{randomUUID as ct}from"crypto";import{mkdirSync as ut,writeFileSync as Me,appendFileSync as dt,existsSync as Ue}from"fs";import{join as le}from"path";var ft=le(de,"sessions"),pe=class{sessionId;sessionDir;runs=[];_flows=[];_nextIndex=0;_started=!1;_testId=null;_testcaseId=null;_projectId=null;_uploadStatus="pending";_uploadAttempts=0;_uploadError=null;_firstObjective=null;_firstUrl=null;_auteurVariables={};_screenshotSas=null;_model="";_environment="";_profile=null;_startedAt="";_remoteLogger=null;_earlyLogBuffer=[];constructor(){this.sessionId=ct(),this.sessionDir=le(ft,this.sessionId)}start(e){if(!this._started){this._started=!0,this._model=e.model,this._environment=e.environment,this._profile=e.profile,this._startedAt=new Date().toISOString();try{ut(this.sessionDir,{recursive:!0});let t={session_id:this.sessionId,started_at:this._startedAt,model:e.model,environment:e.environment,profile:e.profile,objectives:[],runs:[],status:"in_progress"};Me(le(this.sessionDir,"session.json"),JSON.stringify(t,null,2)+`
|
|
9
|
+
`)}catch{}this._log(`SESSION START session_id=${this.sessionId}`),this._log(`CONFIG model=${e.model} env=${e.environment} profile=${e.profile}`),this._earlyLogBuffer.push({level:"info",event:"SESSION_START",message:"Session started",context:{session_id:this.sessionId}},{level:"info",event:"CONFIG",message:"Session config",context:{model:e.model,environment:e.environment,profile:e.profile}})}}setRemoteLogger(e){this._remoteLogger=e;for(let t of this._earlyLogBuffer)e.log(t.level,t.event,t.message,t.context);this._earlyLogBuffer=[]}get hasRemoteLogger(){return this._remoteLogger!==null}setAuteurVariables(e){Object.assign(this._auteurVariables,e)}get auteurVariables(){return this._auteurVariables}setScreenshotSas(e){this._screenshotSas=e}get screenshotSas(){return this._screenshotSas}get screenshotBaseUrl(){return this._screenshotSas?`${this._screenshotSas.base_url}/${this._screenshotSas.container}`:""}get startedAt(){return this._startedAt||new Date().toISOString()}log(e,t,i,l){if(t===void 0){this._log(e);let n=e.indexOf(" "),a=n>0?e.slice(0,n):e,_=n>0?e.slice(n+1):"",b=/fail|error/i.test(e)?"error":"info";this._remoteLogger?.log(b,a,_||e);return}let r=e,c=i;this._log(`${t} ${c}`),this._remoteLogger?.log(r,t,c,l)}logStep(e,t,i){this._log(`${e} ${t}`);let l=this._nextIndex>0?this._nextIndex-1:0;this._remoteLogger?.logStep(l,e,t,i)}logCommand(e){this._log(`COMMAND ${e}`)}logRunStart(e,t,i){this._log(`RUN ${e} START objective="${t.slice(0,100)}" url=${i}`),this._remoteLogger?.setRunIndex(e),this._remoteLogger?.log("info","RUN_START",`Run ${e} started`,{run_index:e,objective:t,url:i})}logRunEnd(e,t,i,l){let r=(i??0).toFixed(1),c=(l??"").slice(0,100);this._log(`RUN ${e} END status=${t} duration=${r}s summary="${c}"`),this._remoteLogger?.log("info","RUN_END",`Run ${e} ended`,{run_index:e,status:t,duration:i??0,summary:l??""}),t!=="failed"&&t!=="error"&&this._remoteLogger?.discardSteps(e)}escalateRun(e){this._remoteLogger?.escalate(e)}logChromeLaunch(e,t){this._log(`CHROME LAUNCH port=${e} endpoint=${t}`),this._remoteLogger?.log("info","CHROME_LAUNCH","Chrome launched",{port:e,cdp_endpoint:t})}async finish(e="complete"){this._log(`SESSION END status=${e} total_runs=${this.runs.length}`),this._remoteLogger?.log("info","SESSION_END","Session ended",{status:e,total_runs:this.runs.length}),await this._remoteLogger?.shutdown();let t={session_id:this.sessionId,started_at:this._startedAt,ended_at:new Date().toISOString(),model:this._model,environment:this._environment,profile:this._profile,status:e,total_runs:this.runs.length,test_id:this._testId,testcase_id:this._testcaseId,commit_id:this.sessionId,project_id:this._projectId,upload_status:this._uploadStatus,upload_attempts:this._uploadAttempts,last_upload_attempt:this._uploadAttempts>0?new Date().toISOString():null,upload_error:this._uploadError,runs:this.runs.map(i=>({index:i.index,objective:i.objective,status:i.status,summary:i.summary,run_dir:i.run_dir}))};Ue(this.sessionDir)&&Me(le(this.sessionDir,"session.json"),JSON.stringify(t,null,2)+`
|
|
10
|
+
`)}nextRunIndex(){return this._nextIndex}addRunResult(e,t){this.runs.push(e),this._nextIndex+=t??1}getContext(){return{prior_runs:this.runs.map(e=>({index:e.index,objective:e.objective,summary:e.summary,status:e.status,memory:e.context.memory,variables:e.context.variables,pointer:e.context.pointer}))}}addFlow(e){let t={...e,index:this._flows.length+1};return this._flows.push(t),t}getFlows(){return[...this._flows]}getFlow(e){return this._flows.find(t=>t.index===e)}clearFlows(){this._flows=[]}setTestId(e){this._testId=e}get testId(){return this._testId}setTestcaseId(e){this._testcaseId=e}get testcaseId(){return this._testcaseId}setProjectId(e){this._projectId=e}setFirstRun(e,t){this._firstObjective||(this._firstObjective=e,this._firstUrl=t)}get firstObjective(){return this._firstObjective}get firstUrl(){return this._firstUrl}getRunDirs(){let e=[];for(let t of this.runs)t.run_dirs&&t.run_dirs.length>0?e.push(...t.run_dirs):t.run_dir&&e.push(t.run_dir);return e}getRunObjectives(){let e=[];for(let t of this.runs)t.flow_objectives&&t.flow_objectives.length>0?e.push(...t.flow_objectives):e.push(t.objective);return e}getRunMetadata(){let e=[];for(let t of this.runs)if(t.perFlowMetadata&&t.perFlowMetadata.length>0)e.push(...t.perFlowMetadata);else{let i={resultCode:t.resultCode,reasonCode:t.reasonCode,errorMessage:t.status==="failed"?t.summary??null:null,summary:t.summary,oneLiner:t.oneLiner},l=t.run_dirs?.length??1;for(let r=0;r<l;r++)e.push(i)}return e}setUploadStatus(e,t){this._uploadStatus=e,this._uploadAttempts+=1,this._uploadError=t??null}_log(e){if(!(!this._started||!Ue(this.sessionDir)))try{let t=new Date().toISOString().slice(0,19).replace("T"," "),i=le(this.sessionDir,"tui.log");dt(i,`[${t}] ${e}
|
|
11
|
+
`)}catch{}}};var Ke=$(te(),1);import{readFileSync as gt,writeFileSync as mt,mkdirSync as pt}from"fs";import{dirname as ht,join as _t}from"path";var vt=_t(de,"command-history.json"),xt=200,ye=class{entries;filePath;max;constructor(e=vt,t=xt){this.filePath=e,this.max=t,this.entries=this._load()}push(e){this.entries.length>0&&this.entries[this.entries.length-1]===e||(this.entries.push(e),this.entries.length>this.max&&(this.entries=this.entries.slice(this.entries.length-this.max)),this._save())}getAll(){return[...this.entries]}search(e){let t=e.toLowerCase(),i=[];for(let l=this.entries.length-1;l>=0;l--)this.entries[l].toLowerCase().includes(t)&&i.push(this.entries[l]);return i}_load(){try{let e=gt(this.filePath,"utf-8"),t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}_save(){try{pt(ht(this.filePath),{recursive:!0}),mt(this.filePath,JSON.stringify(this.entries)+`
|
|
12
|
+
`)}catch{}}};function Ge(o){let e=(0,Ke.useRef)(null);return e.current||(e.current=new ye(o)),e.current}function ie(o,e,t,i){let l=o.loadProfileConfig(t,i)??{},r={projectId:l.project_id??null,projectName:l.project_name??null,folderId:l.folder_id??null,folderName:l.folder_name??null};return e.save({project_id:r.projectId,project_name:r.projectName,folder_id:r.folderId,folder_name:r.folderName}),r}function ae(o,e,t,i,l){let r={};l.projectId!==void 0&&(r.project_id=l.projectId??void 0),l.projectName!==void 0&&(r.project_name=l.projectName??void 0),l.folderId!==void 0&&(r.folder_id=l.folderId??void 0),l.folderName!==void 0&&(r.folder_name=l.folderName??void 0),o.saveProfileConfig(t,i,r);let c=o.loadProfileConfig(t,i)??{};e.save({project_id:c.project_id??null,project_name:c.project_name??null,folder_id:c.folder_id??null,folder_name:c.folder_name??null})}function nr(o,e,t,i,l){let r=o.loadProfileConfig(t,i)??{},c=e.load(),n={project_id:r.project_id??null,project_name:r.project_name??null,folder_id:r.folder_id??null,folder_name:r.folder_name??null},a={project_id:c.project_id??null,project_name:c.project_name??null,folder_id:c.folder_id??null,folder_name:c.folder_name??null},_=n.project_id===a.project_id&&n.project_name===a.project_name&&n.folder_id===a.folder_id&&n.folder_name===a.folder_name,b={projectId:n.project_id,projectName:n.project_name,folderId:n.folder_id,folderName:n.folder_name};return _?{rehydrated:!1,state:b}:(l?.("warn","STALE_TUI_CONFIG_REHYDRATED","tui-config divergent from profile-config \u2014 rewriting",{profile:t,env:i,profile_state:n,tui_state:a}),e.save(n),{rehydrated:!0,state:b})}function He(o){return o.projectId!==null&&o.folderId!==null}async function he(o,e,t,i){let l=o.loadBasicAuth(e,t),r=o.loadCredentials(e,t);if(!l&&!r)return i("info","STARTUP_GATE_NO_CREDS","Profile has no credentials",{profile:e,env:t}),{status:"needs_login",profile:e,env:t};let c=ne(t),n=async()=>o.loadCredentials(e,t)?.access_token??null,a=new fe(c.controllerBaseUrl,n,l,i);i("info","STARTUP_GATE_VALIDATE","Validating credentials with controller",{profile:e,env:t,method:l?"basic":"oauth"});let _=await a.resolve(!0);if(_)return i("info","STARTUP_GATE_VALID","Credentials validated",{profile:e,env:t,username:_.username,org_id:_.org_id}),{status:"authenticated",result:{profile:e,env:t,credentials:r,basicAuth:l,tmsCreds:_,resolver:a}};if(!l&&r){let b=r.refresh_token,C=o.loadClient(e,t)?.client_id;if(b&&C){i("info","STARTUP_GATE_REFRESH","Attempting token refresh",{profile:e,env:t});try{let L=await new Fe(t).refreshToken(b,C);if(L.access_token){o.saveCredentials(e,t,{...r,...L,expires_at:Date.now()/1e3+(L.expires_in??3600)});let N=await a.resolve(!0);if(N)return i("info","STARTUP_GATE_REFRESH_OK","Token refreshed and validated",{profile:e,env:t,username:N.username}),{status:"authenticated",result:{profile:e,env:t,credentials:{...r,...L},basicAuth:null,tmsCreds:N,resolver:a}}}i("warn","STARTUP_GATE_REFRESH_INVALID","Refreshed token still invalid",{profile:e,env:t})}catch(A){i("warn","STARTUP_GATE_REFRESH_FAILED","Token refresh failed",{profile:e,env:t,error:A instanceof Error?A.message:String(A)})}}else i("info","STARTUP_GATE_NO_REFRESH","No refresh_token or client_id \u2014 login required",{profile:e,env:t})}return i("info","STARTUP_GATE_INVALID","Credentials invalid \u2014 login required",{profile:e,env:t}),{status:"needs_login",profile:e,env:t}}async function Ve(o,e,t=new oe){let i=o.listProfiles();if(e("info","STARTUP_GATE_START","Auth startup gate",{profile_count:i.length}),i.length===0)return e("info","STARTUP_GATE_NONE","No profiles found \u2014 login required"),{status:"needs_login"};if(i.length>1){let c=o.getActiveProfile(),n=o.getDefaultEnv();if(c&&i.some(_=>_.profile===c&&_.env===n)){e("info","STARTUP_GATE_TRY_ACTIVE","Multiple profiles \u2014 trying active first",{activeProfile:c,activeEnv:n});let _=await he(o,c,n,e);if(_.status==="authenticated")return _;e("info","STARTUP_GATE_ACTIVE_FAILED","Active profile invalid \u2014 showing picker",{activeProfile:c,activeEnv:n})}return e("info","STARTUP_GATE_MULTI","Multiple profiles \u2014 picker required",{profiles:i.map(a=>`${a.profile}/${a.env}`)}),{status:"needs_pick",profiles:i}}let{profile:l,env:r}=i[0];return o.setActiveProfile(l),o.setDefaultEnv(r),ie(o,t,l,r),he(o,l,r,e)}var ze=()=>!!process.env.KANE_DEV_MODE,Z=[],We=!1,Ye=null,be=null,Te=null,ce=null;function dr(o){ce=o}function fr(){return ce}function gr(o,e){Z=Z.filter(t=>t.name!==o),Z.push({name:o,fn:e})}function mr(o,e){let t=Z.find(l=>l.name===o);if(!t)return;Z=Z.filter(l=>l.name!==o);let i=!0;try{t.fn()}catch(l){i=!1,process.stderr.write(`[exit-manager] cleanup(${o}) failed: ${l instanceof Error?l.message:String(l)}
|
|
13
|
+
`)}e&&i&&ze()&&process.stderr.write(`[exit-manager] cleanup(${o}): ${e}
|
|
14
|
+
`)}function q(o,e,t=!1){if(We){process.exit(Ye??o);return}if(We=!0,Ye=o,t&&ce)try{ce.log("error","CRASH",e),ce.shutdownSync()}catch{}let i=[...Z].reverse(),l=[];for(let r of i)try{r.fn(),l.push(r.name)}catch(c){process.stderr.write(`[exit-manager] cleanup(${r.name}) failed: ${c instanceof Error?c.message:String(c)}
|
|
15
|
+
`)}if(Z=[],ze()&&(process.stderr.write(`[exit-manager] shutdown(${o}): ${e}
|
|
16
|
+
`),l.length>0&&process.stderr.write(`[exit-manager] cleaned up: ${l.join(", ")}
|
|
17
|
+
`)),t&&Te){try{Te()}catch{}process.stderr.write(`
|
|
18
|
+
Kane CLI crashed unexpectedly: ${e}
|
|
19
|
+
`+(l.length>0?`Resources cleaned up (${l.join(", ")}).
|
|
20
|
+
`:"")),process.exit(o);return}if(be&&!t){be();return}process.exit(o)}function pr(o){be=o}function hr(o){Te=o}var Xe=!1;function _r(){Xe||(Xe=!0,process.on("SIGINT",()=>{q(130,"Received SIGINT",!0)}),process.on("SIGTERM",()=>{q(143,"Received SIGTERM",!0)}),process.on("uncaughtException",o=>{q(1,`Uncaught exception: ${o.message}`,!0)}),process.on("unhandledRejection",o=>{q(1,`Unhandled rejection: ${String(o)}`,!0)}))}var T=$(X(),1);function Fr({resultRef:o,mode:e="singleshot",loginCompleteRef:t}){let{exit:i}=Ee(),l=(0,R.useRef)(new Pe),r=(0,R.useRef)(new oe),c=(0,R.useRef)(new pe),n=l.current,a=r.current,_=c.current,b=Ge(),[j,C]=(0,R.useState)(e==="login"?"login":"gate"),[A,L]=(0,R.useState)(null),[ee,N]=(0,R.useState)(null),[F,U]=(0,R.useState)(null),[K,I]=(0,R.useState)(null),[G,B]=(0,R.useState)([]),H=(0,R.useCallback)((d,g,p,m)=>_.log(d,g,p,m),[_]),se=(0,R.useCallback)((d,g)=>{d?ie(n,a,d,g):a.save({project_id:null,project_name:null,folder_id:null,folder_name:null})},[n,a]),M=(0,R.useCallback)(()=>{e==="login"?(t&&(t.current=!0),i()):C("input")},[e,i,t]),V=(0,R.useCallback)((d,g)=>{let p=ie(n,a,d,g);if(e==="login"){C("ensure-project");return}He(p)?M():p.projectId?C("ensure-folder"):C("ensure-project")},[n,a,M,e]);z((d,g)=>{g.ctrl&&d==="c"&&q(0,"Ctrl+C exit")});let f=(0,R.useRef)(!1);R.default.useEffect(()=>{f.current||(f.current=!0,e!=="login"&&Ve(n,H).then(d=>{L(d),d.status==="authenticated"?V(d.result.profile,d.result.env):d.status==="needs_pick"?C("pick"):(N(d.profile??null),U(d.env??null),C("login"))}).catch(d=>{I(`Auth check failed: ${d instanceof Error?d.message:String(d)}`)}))},[n,H]);let s=(0,R.useCallback)(d=>{o.current={objective:d},i()},[o,i]),u=(0,R.useCallback)(async(d,g)=>{n.setActiveProfile(d),n.setDefaultEnv(g),(await he(n,d,g,H)).status==="authenticated"?V(d,g):(N(d),U(g),C("login"))},[n,H,V]),y=(0,R.useCallback)(()=>{let d=n.getActiveProfile(),g=n.getDefaultEnv();if(!d)return null;let p=ne(g),m=n.loadBasicAuth(d,g);return new fe(p.controllerBaseUrl,async()=>n.loadCredentials(d,g)?.access_token??null,m,H)},[n,H]),O=(0,R.useCallback)(async()=>{let d=y();if(!d)return null;let g=d.cached??await d.resolve();if(!g)return null;let p=ne(n.getDefaultEnv()),m=new _e(p.tmsBaseUrl,g.username,g.access_key);try{let E=(await m.listProjects()).find(ue=>ue.name==="KaneAI Generated");if(E)return{id:E.project_id,name:E.name};let P=await m.createProject("KaneAI Generated");return{id:P.id,name:P.name}}catch{return null}},[y,n]),W=(0,R.useCallback)(async d=>{let g=y();if(!g)return null;let p=g.cached??await g.resolve();if(!p)return null;let m=ne(n.getDefaultEnv()),S=new _e(m.tmsBaseUrl,p.username,p.access_key);try{let P=(await S.listFolders(d)).find(Je=>Je.name==="Untitled");if(P)return{id:P.id,name:P.name};let ue=await S.createFolder(d,"Untitled");return{id:ue.id,name:ue.name}}catch{return null}},[y,n]);if(j==="gate")return(0,T.jsx)(x,{paddingX:1,children:(0,T.jsx)(h,{color:"yellow",children:"Checking authentication..."})});if(K)return(0,T.jsxs)(x,{flexDirection:"column",paddingX:1,children:[(0,T.jsx)(h,{color:"red",children:K}),(0,T.jsx)(h,{color:"gray",children:"Press Ctrl+C to exit."})]});if(j==="pick"&&A?.status==="needs_pick")return(0,T.jsx)(St,{profiles:A.profiles,onSelect:u});if(j==="login")return(0,T.jsx)(ke,{devMode:process.env.KANE_DEV_MODE==="1",profiles:n.listProfiles(),onBasicLogin:async(d,g,p,m)=>{let{validateBasicAuth:S}=await import("./validate-basic-RV5TSUKJ.js");await S(g,p,m),n.saveBasicAuth(d,g,{username:p,access_key:m}),n.setActiveProfile(d),n.setDefaultEnv(g)},onOAuthLogin:async(d,g)=>{let{LoginFlow:p}=await import("./login-flow-WXMKYI5G.js");n.setDefaultEnv(g),n.setActiveProfile(d),await new p(d,g,n).login()},onComplete:(d,g)=>{N(d),U(g),n.setActiveProfile(d),n.setDefaultEnv(g),V(d,g)},onCancel:()=>{q(0,"Login cancelled")}});if(j==="ensure-project"){let d=n.getActiveProfile()??"default",g=n.getDefaultEnv(),p=()=>{if(e==="login"){C("ensure-folder");return}ie(n,a,d,g).folderId?M():C("ensure-folder")};return(0,T.jsxs)(x,{flexDirection:"column",children:[(0,T.jsx)(x,{paddingX:1,marginBottom:1,children:(0,T.jsx)(h,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,T.jsx)(Le,{resolver:y(),currentProjectId:a.load().project_id,env:g,onSelect:(m,S)=>{ae(n,a,d,g,{projectId:m,projectName:S}),B(E=>[...E,`\u2713 Project: ${S} (${m})`]),p()},onCancel:async()=>{let m=await O();m&&(ae(n,a,d,g,{projectId:m.id,projectName:m.name}),B(S=>[...S,`\u2713 Default project: ${m.name} (${m.id})`]),p())}})]})}if(j==="ensure-folder"){let d=n.getActiveProfile()??"default",g=n.getDefaultEnv(),p=n.loadProfileConfig(d,g);return(0,T.jsxs)(x,{flexDirection:"column",children:[(0,T.jsx)(x,{paddingX:1,marginBottom:1,children:(0,T.jsx)(h,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,T.jsx)(De,{resolver:y(),projectId:p?.project_id??"",currentFolderId:a.load().folder_id,env:g,onSelect:(m,S)=>{ae(n,a,d,g,{folderId:m,folderName:S}),B(E=>[...E,`\u2713 Folder: ${S} (${m})`]),M()},onCancel:async()=>{if(!p?.project_id)return;let m=await W(p.project_id);m&&(ae(n,a,d,g,{folderId:m.id,folderName:m.name}),B(S=>[...S,`\u2713 Default folder: ${m.name} (${m.id})`]),M())}})]})}return j==="input"?(0,T.jsxs)(x,{flexDirection:"column",children:[G.length>0&&(0,T.jsx)(x,{flexDirection:"column",paddingX:1,marginBottom:1,children:G.map((d,g)=>(0,T.jsx)(h,{color:"green",children:d},g))}),(0,T.jsx)($e,{onSubmit:s,onEscape:()=>q(0,"User pressed Escape"),history:b,placeholder:"Type an objective..."})]}):(0,T.jsx)(T.Fragment,{})}function St({profiles:o,onSelect:e}){let[t,i]=(0,R.useState)(0),[l,r]=(0,R.useState)(!1);return z((c,n)=>{if(!l){if(n.escape){q(0,"Profile picker cancelled");return}if(n.upArrow&&t>0&&i(a=>a-1),n.downArrow&&t<o.length-1&&i(a=>a+1),n.return){r(!0);let a=o[t];e(a.profile,a.env).catch(()=>r(!1))}}}),(0,T.jsxs)(x,{flexDirection:"column",paddingX:1,children:[(0,T.jsx)(h,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,T.jsx)(x,{marginTop:1,flexDirection:"column",children:o.map((c,n)=>(0,T.jsxs)(h,{children:[n===t?"\u276F ":" ",(0,T.jsx)(h,{color:n===t?"#ff9500":"white",bold:n===t,children:c.profile}),(0,T.jsxs)(h,{color:"gray",children:[" [",c.env,"]"]})]},`${c.profile}-${c.env}`))}),l&&(0,T.jsx)(x,{marginTop:1,children:(0,T.jsx)(h,{color:"yellow",children:"Validating credentials..."})})]})}export{Ge as a,$e as b,ke as c,pe as d,oe as e,ie as f,ae as g,nr as h,He as i,dr as j,fr as k,gr as l,mr as m,q as n,pr as o,hr as p,_r as q,he as r,Ve as s,Fr as t};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as D,b as A}from"./chunk-CKMDFVL6.js";import{l as S,m as C,n as P,o as U,p as N}from"./chunk-7ONI2K3S.js";import{createServer as Oe}from"http";import{randomBytes as He}from"crypto";import{URL as $e}from"url";import Z from"process";import{Buffer as ee}from"buffer";import re from"path";import{fileURLToPath as ke}from"url";import{promisify as Le}from"util";import te from"child_process";import Me,{constants as Ie}from"fs/promises";import Y from"process";import G,{constants as me}from"fs/promises";import j from"process";import le from"os";import L from"fs";import se from"fs";import z from"fs";var E;function ie(){try{return z.statSync("/.dockerenv"),!0}catch{return!1}}function ae(){try{return z.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function B(){return E===void 0&&(E=ie()||ae()),E}var k,ce=()=>{try{return se.statSync("/run/.containerenv"),!0}catch{return!1}};function u(){return k===void 0&&(k=ce()||B()),k}var K=()=>{if(j.platform!=="linux")return!1;if(le.release().toLowerCase().includes("microsoft"))return!u();try{if(L.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!u()}catch{}return L.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||L.existsSync("/run/WSL")?!u():!1},d=j.env.__IS_WSL_TEST__?K:K();var de=(()=>{let e="/mnt/",r;return async function(){if(r)return r;let t="/etc/wsl.conf",n=!1;try{await G.access(t,me.F_OK),n=!0}catch{}if(!n)return e;let o=await G.readFile(t,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(o);return i?(r=i.groups.mountPoint.trim(),r=r.endsWith("/")?r:`${r}/`,r):e}})(),fe=async()=>`${await de()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,M=async()=>d?fe():`${Y.env.SYSTEMROOT||Y.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;function f(e,r,t){let n=o=>Object.defineProperty(e,r,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get(){let o=t();return n(o),o},set(o){n(o)}}),e}import{promisify as Pe}from"util";import O from"process";import{execFile as Ae}from"child_process";import{promisify as pe}from"util";import ue from"process";import{execFile as ge}from"child_process";var he=pe(ge);async function I(){if(ue.platform!=="darwin")throw new Error("macOS only");let{stdout:e}=await he("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??"com.apple.Safari";return t==="com.apple.safari"?"com.apple.Safari":t}import we from"process";import{promisify as xe}from"util";import{execFile as ye,execFileSync as cr}from"child_process";var ve=xe(ye);async function X(e,{humanReadableOutput:r=!0,signal:t}={}){if(we.platform!=="darwin")throw new Error("macOS only");let n=r?[]:["-ss"],o={};t&&(o.signal=t);let{stdout:i}=await ve("osascript",["-e",e,n],o);return i.trim()}async function T(e){return X(`tell application "Finder" to set app_path to application file id "${e}" as string
|
|
3
|
+
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as be}from"util";import{execFile as Se}from"child_process";var Ce=be(Se),y={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},ur=new Map(Object.entries(y)),F=class extends Error{};async function _(e=Ce){let{stdout:r}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),t=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(r);if(!t)throw new F(`Cannot find Windows browser in stdout: ${JSON.stringify(r)}`);let{id:n}=t.groups,o=n.lastIndexOf("."),i=n.lastIndexOf("-"),c=o===-1?void 0:n.slice(0,o),a=i===-1?void 0:n.slice(0,i);return y[n]??y[c]??y[a]??{name:n,id:n}}var Ee=Pe(Ae),Be=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,r=>r.toUpperCase());async function H(){if(O.platform==="darwin"){let e=await I();return{name:await T(e),id:e}}if(O.platform==="linux"){let{stdout:e}=await Ee("xdg-mime",["query","default","x-scheme-handler/http"]),r=e.trim();return{name:Be(r.replace(/.desktop$/,"").replace("-"," ")),id:r}}if(O.platform==="win32")return _();throw new Error("Only macOS, Linux, and Windows are supported")}var Te=Le(te.execFile),$=re.dirname(ke(import.meta.url)),q=re.join($,"xdg-open"),{platform:w,arch:V}=Z;async function Fe(){let e=await M(),r=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,t=ee.from(r,"utf16le").toString("base64"),{stdout:n}=await Te(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",t],{encoding:"utf8"}),o=n.trim(),i={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return i[o]?{id:i[o]}:{}}var J=async(e,r)=>{let t;for(let n of e)try{return await r(n)}catch(o){t=o}throw t},v=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return J(e.app,a=>v({...e,app:a}));let{name:r,arguments:t=[]}=e.app??{};if(t=[...t],Array.isArray(r))return J(r,a=>v({...e,app:{name:a,arguments:t}}));if(r==="browser"||r==="browserPrivate"){let a={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},l={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},s=d?await Fe():await H();if(s.id in a){let m=a[s.id];return r==="browserPrivate"&&t.push(l[m]),v({...e,app:{name:g[m],arguments:t}})}throw new Error(`${s.name} is not supported as a default browser`)}let n,o=[],i={};if(w==="darwin")n="open",e.wait&&o.push("--wait-apps"),e.background&&o.push("--background"),e.newInstance&&o.push("--new"),r&&o.push("-a",r);else if(w==="win32"||d&&!u()&&!r){n=await M(),o.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),d||(i.windowsVerbatimArguments=!0);let a=["Start"];e.wait&&a.push("-Wait"),r?(a.push(`"\`"${r}\`""`),e.target&&t.push(e.target)):e.target&&a.push(`"${e.target}"`),t.length>0&&(t=t.map(l=>`"\`"${l}\`""`),a.push("-ArgumentList",t.join(","))),e.target=ee.from(a.join(" "),"utf16le").toString("base64")}else{if(r)n=r;else{let a=!$||$==="/",l=!1;try{await Me.access(q,Ie.X_OK),l=!0}catch{}n=Z.versions.electron??(w==="android"||a||!l)?"xdg-open":q}t.length>0&&o.push(...t),e.wait||(i.stdio="ignore",i.detached=!0)}w==="darwin"&&t.length>0&&o.push("--args",...t),e.target&&o.push(e.target);let c=te.spawn(n,o,i);return e.wait?new Promise((a,l)=>{c.once("error",l),c.once("close",s=>{if(!e.allowNonzeroExitCode&&s>0){l(new Error(`Exited with code ${s}`));return}a(c)})}):(c.unref(),c)},_e=(e,r)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return v({...r,target:e})};function Q(e){if(typeof e=="string"||Array.isArray(e))return e;let{[V]:r}=e;if(!r)throw new Error(`${V} is not supported`);return r}function b({[w]:e},{wsl:r}){if(r&&d)return Q(r);if(!e)throw new Error(`${w} is not supported`);return Q(e)}var g={};f(g,"chrome",()=>b({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));f(g,"brave",()=>b({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));f(g,"firefox",()=>b({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));f(g,"edge",()=>b({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));f(g,"browser",()=>"browser");f(g,"browserPrivate",()=>"browserPrivate");var oe=_e;var ne=class{profile;environment;creds;oauth;constructor(r="default",t="prod",n){this.profile=r,this.environment=t,this.creds=n??new D,this.oauth=new A(t)}async login(){let{server:r,port:t}=await this.startCallbackServer(),n=N(t);try{let o=this.creds.loadClient(this.profile,this.environment),i=o?.redirect_uris;(!o||!i?.includes(n))&&(o=await this.oauth.registerClient(n),this.creds.saveClient(this.profile,this.environment,o));let c=o.client_id,[a,l]=A.generatePkce(),s=He(32).toString("hex"),m=this.oauth.buildAuthorizationUrl(c,l,s,n),p=await this.waitForCallback(r,t,m,s);if(!p)throw new Error("Login cancelled or timed out");let h=await this.oauth.exchangeCode(p,c,a,n),x={access_token:h.access_token,refresh_token:h.refresh_token,expires_at:Math.floor(Date.now()/1e3)+h.expires_in,scope:h.scope??"*"};return this.creds.saveCredentials(this.profile,this.environment,x),this.creds.setActiveProfile(this.profile),x}catch(o){throw r.close(),o}}startCallbackServer(){return new Promise((r,t)=>{let n=C,o=()=>{let i=Oe();i.on("error",c=>{c.code==="EADDRINUSE"&&n<P?(n++,o()):t(new Error(`Failed to start callback server: ${c.message}. Ports ${C}-${P} are all in use.`))}),i.listen(n,S,()=>{r({server:i,port:n})})};o()})}waitForCallback(r,t,n,o){return new Promise(i=>{let c=!1,a=setTimeout(()=>l(null),12e4),l=s=>{c||(c=!0,clearTimeout(a),r.close(),i(s))};r.on("request",(s,m)=>{let p=new $e(s.url??"/",`http://${S}:${t}`);if(p.pathname!==U){m.writeHead(404),m.end();return}let h=p.searchParams.get("state"),x=p.searchParams.get("code");if(p.searchParams.get("error")){m.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"error",title:"Login failed",message:"We couldn't complete the sign-in. You can close this tab and try again from your terminal."})),l(null);return}if(h!==o){m.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"error",title:"Invalid state",message:"The sign-in response didn't match this session. Please return to your terminal and try again."})),l(null);return}m.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"success",title:"You're signed in",message:"Head back to your terminal \u2014 KaneAI is ready when you are.",autoClose:!0})),l(x)}),oe(n).catch(s=>{let m=s instanceof Error?s.message:String(s);process.stderr.write(`[auth] Could not open browser: ${m}
|
|
4
|
+
Please open this URL manually: ${n}
|
|
5
|
+
`)})})}};function R(e){let r=e.state==="success",t=r?"#22c55e":"#ef4444",n=r?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)",o=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=e.autoClose?"<script>setTimeout(function(){try{window.close();}catch(e){}}, 1500);</script>":"";return`<!doctype html>
|
|
6
|
+
<html lang="en">
|
|
7
|
+
<head>
|
|
8
|
+
<meta charset="utf-8" />
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
10
|
+
<title>${W(e.title)} \xB7 KaneAI</title>
|
|
11
|
+
<style>
|
|
12
|
+
:root {
|
|
13
|
+
color-scheme: light dark;
|
|
14
|
+
--bg: #f7f7f8;
|
|
15
|
+
--card: #ffffff;
|
|
16
|
+
--fg: #0a0a0a;
|
|
17
|
+
--muted: #6b7280;
|
|
18
|
+
--border: rgba(0, 0, 0, 0.06);
|
|
19
|
+
--shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
|
|
20
|
+
}
|
|
21
|
+
@media (prefers-color-scheme: dark) {
|
|
22
|
+
:root {
|
|
23
|
+
--bg: #0a0a0a;
|
|
24
|
+
--card: #141416;
|
|
25
|
+
--fg: #f5f5f7;
|
|
26
|
+
--muted: #9ca3af;
|
|
27
|
+
--border: rgba(255, 255, 255, 0.08);
|
|
28
|
+
--shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
* { box-sizing: border-box; }
|
|
32
|
+
html, body { height: 100%; }
|
|
33
|
+
body {
|
|
34
|
+
margin: 0;
|
|
35
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
36
|
+
background: var(--bg);
|
|
37
|
+
color: var(--fg);
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
padding: 24px;
|
|
42
|
+
-webkit-font-smoothing: antialiased;
|
|
43
|
+
}
|
|
44
|
+
.card {
|
|
45
|
+
width: 100%;
|
|
46
|
+
max-width: 420px;
|
|
47
|
+
background: var(--card);
|
|
48
|
+
border: 1px solid var(--border);
|
|
49
|
+
border-radius: 16px;
|
|
50
|
+
box-shadow: var(--shadow);
|
|
51
|
+
padding: 40px 32px 32px;
|
|
52
|
+
text-align: center;
|
|
53
|
+
animation: rise 280ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
54
|
+
}
|
|
55
|
+
@keyframes rise {
|
|
56
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
57
|
+
to { opacity: 1; transform: translateY(0); }
|
|
58
|
+
}
|
|
59
|
+
.icon {
|
|
60
|
+
width: 64px;
|
|
61
|
+
height: 64px;
|
|
62
|
+
margin: 0 auto 20px;
|
|
63
|
+
border-radius: 999px;
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
background: ${n};
|
|
68
|
+
color: ${t};
|
|
69
|
+
}
|
|
70
|
+
h1 {
|
|
71
|
+
font-size: 22px;
|
|
72
|
+
font-weight: 600;
|
|
73
|
+
letter-spacing: -0.01em;
|
|
74
|
+
margin: 0 0 8px;
|
|
75
|
+
}
|
|
76
|
+
p {
|
|
77
|
+
margin: 0;
|
|
78
|
+
color: var(--muted);
|
|
79
|
+
font-size: 14.5px;
|
|
80
|
+
line-height: 1.5;
|
|
81
|
+
}
|
|
82
|
+
.brand {
|
|
83
|
+
margin-top: 28px;
|
|
84
|
+
padding-top: 20px;
|
|
85
|
+
border-top: 1px solid var(--border);
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
letter-spacing: 0.08em;
|
|
88
|
+
text-transform: uppercase;
|
|
89
|
+
color: var(--muted);
|
|
90
|
+
}
|
|
91
|
+
.brand strong { color: var(--fg); font-weight: 600; letter-spacing: 0.08em; }
|
|
92
|
+
</style>
|
|
93
|
+
</head>
|
|
94
|
+
<body>
|
|
95
|
+
<main class="card" role="status" aria-live="polite">
|
|
96
|
+
<div class="icon">${o}</div>
|
|
97
|
+
<h1>${W(e.title)}</h1>
|
|
98
|
+
<p>${W(e.message)}</p>
|
|
99
|
+
<div class="brand"><strong>KaneAI</strong> \xB7 CLI</div>
|
|
100
|
+
</main>
|
|
101
|
+
${i}
|
|
102
|
+
</body>
|
|
103
|
+
</html>`}function W(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}export{ne as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as A,b as _}from"./chunk-Y3MXIITZ.js";import{a as B}from"./chunk-2O7RIXHD.js";import{a as R}from"./chunk-XQL5WHKR.js";import{a as P}from"./chunk-HCBYKLMW.js";import{t as c}from"./chunk-7ONI2K3S.js";import{a as u,b as l}from"./chunk-C44QQJR4.js";import{a as J}from"./chunk-6YGTRKDT.js";import{a as k}from"./chunk-YUUZDFT7.js";import{e as L}from"./chunk-UR6MHSHU.js";var t=L(J(),1);var e=L(P(),1);function X(n,s,y,m){return{id:n,label:`${s} (${n}) \xB7 ${y} tests`,isActive:n===m}}function W({resolver:n,projectId:s,currentFolderId:y,env:m,onSelect:x,onCancel:w}){let[I,M]=(0,t.useState)([]),[$,d]=(0,t.useState)(!0),[O,g]=(0,t.useState)(!1),[U,N]=(0,t.useState)(null),[p,b]=(0,t.useState)("list"),[S,v]=(0,t.useState)(""),[E,f]=(0,t.useState)(null),h=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!n){N("Login first to browse folders"),d(!1);return}let o=new AbortController;return d(!0),g(!0),(async()=>{try{let r=n.cached??await n.resolve();if(!r){N("Login first to browse folders"),d(!1),g(!1);return}let a=B(m),T=new k(a.tmsBaseUrl,r.username,r.access_key),F=(async function*(){if(o.signal.aborted)return;let i=await T.listFolders(s);yield{page:1,folders:i,totalLoaded:i.length,done:!0}})();for await(let i of F){if(d(!1),i.totalLoaded===0){h.current=!0,b("naming"),g(!1);return}M(i.folders.map(C=>X(C.id,C.name,C.test_cases_count,y))),i.done&&g(!1)}}catch(r){if(r?.name==="AbortError")return;N(r instanceof Error?r.message:String(r)),d(!1),g(!1)}})(),()=>o.abort()},[n,s,y,m]);let D=(0,t.useCallback)(o=>{let r=o.trim();if(!r){f("Name cannot be empty");return}if(!s){f("No project selected \u2014 pick a project first");return}f(null),b("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let a=n.cached??await n.resolve();if(!a)throw new Error("Not authenticated");let T=B(m),i=await new k(T.tmsBaseUrl,a.username,a.access_key).createFolder(s,r);x(i.id,i.name)}catch(a){f(a instanceof Error?a.message:String(a)),b("naming")}})()},[n,s,m,x]),H=(0,t.useCallback)(()=>{v(""),f(null),h.current?w():b("list")},[w]);return p==="naming"||p==="creating"?(0,e.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:c.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:c.primary,bold:!0,children:"Create new folder"}),h.current&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"No folders yet \u2014 let's create one."})}),(0,e.jsxs)(u,{marginTop:1,children:[(0,e.jsx)(l,{color:c.dim,children:"Name: "}),p==="naming"?(0,e.jsx)(A,{value:S,onChange:o=>{v(o),E&&f(null)},onSubmit:D,onCancel:H}):(0,e.jsx)(l,{children:S})]}),E&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.red,children:E})}),p==="creating"&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"Creating..."})}),p==="naming"&&(0,e.jsx)(R,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:h.current?"cancel":"back"})]}):(0,e.jsx)(_,{title:"Folders",items:I,loading:$,loadingMore:O,preserveSelectionById:!0,error:U,itemNoun:"folders",onTab:()=>{h.current=!1,b("naming")},extraHint:"tab to create new",onSelect:o=>{let r=o.label.split(" (")[0];x(o.id,r)},onCancel:w})}export{X as a,W as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as I,b as A}from"./chunk-Y3MXIITZ.js";import{a as L}from"./chunk-2O7RIXHD.js";import{a as R}from"./chunk-XQL5WHKR.js";import{a as v}from"./chunk-HCBYKLMW.js";import{t as s}from"./chunk-7ONI2K3S.js";import{a as u,b as i}from"./chunk-C44QQJR4.js";import{a as J}from"./chunk-6YGTRKDT.js";import{a as T}from"./chunk-YUUZDFT7.js";import{e as N}from"./chunk-UR6MHSHU.js";var t=N(J(),1);var e=N(v(),1);function X(n,y,c){return{id:n,label:`${y} (${n})`,isActive:n===c}}function Z({resolver:n,currentProjectId:y,env:c,onSelect:x,onCancel:w}){let[F,M]=(0,t.useState)([]),[_,l]=(0,t.useState)(!0),[$,m]=(0,t.useState)(!1),[O,P]=(0,t.useState)(null),[g,d]=(0,t.useState)("list"),[S,k]=(0,t.useState)(""),[C,p]=(0,t.useState)(null),h=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!n){P("Login first to browse projects"),l(!1);return}let o=new AbortController;return l(!0),m(!0),(async()=>{try{let r=n.cached??await n.resolve();if(!r){P("Login first to browse projects"),l(!1),m(!1);return}let a=L(c),E=new T(a.tmsBaseUrl,r.username,r.access_key),j=!0,b=0;for await(let f of E.listProjectsStream({signal:o.signal})){if(j&&(l(!1),j=!1),f.totalLoaded===0&&f.done&&b===0){h.current=!0,d("naming"),m(!1);return}f.projects.length>0&&(M(H=>[...H,...f.projects.map(B=>X(B.project_id,B.name,y))]),b+=f.projects.length),f.done&&m(!1)}j&&(l(!1),m(!1))}catch(r){if(r?.name==="AbortError")return;P(r instanceof Error?r.message:String(r)),l(!1),m(!1)}})(),()=>o.abort()},[n,y,c]);let U=(0,t.useCallback)(o=>{let r=o.trim();if(!r){p("Name cannot be empty");return}p(null),d("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let a=n.cached??await n.resolve();if(!a)throw new Error("Not authenticated");let E=L(c),b=await new T(E.tmsBaseUrl,a.username,a.access_key).createProject(r);x(b.id,b.name)}catch(a){p(a instanceof Error?a.message:String(a)),d("naming")}})()},[n,c,x]),D=(0,t.useCallback)(()=>{k(""),p(null),h.current?w():d("list")},[w]);return g==="naming"||g==="creating"?(0,e.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:s.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(i,{color:s.primary,bold:!0,children:"Create new project"}),h.current&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(i,{color:s.dim,children:"No projects yet \u2014 let's create one."})}),(0,e.jsxs)(u,{marginTop:1,children:[(0,e.jsx)(i,{color:s.dim,children:"Name: "}),g==="naming"?(0,e.jsx)(I,{value:S,onChange:o=>{k(o),C&&p(null)},onSubmit:U,onCancel:D}):(0,e.jsx)(i,{children:S})]}),C&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(i,{color:s.red,children:C})}),g==="creating"&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(i,{color:s.dim,children:"Creating..."})}),g==="naming"&&(0,e.jsx)(R,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:h.current?"cancel":"back"})]}):(0,e.jsx)(A,{title:"Projects",items:F,loading:_,loadingMore:$,preserveSelectionById:!0,error:O,itemNoun:"projects",onTab:()=>{h.current=!1,d("naming")},extraHint:"tab to create new",onSelect:o=>{let r=o.label.replace(` (${o.id})`,"");x(o.id,r)},onCancel:w})}export{X as a,Z as b};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as c}from"./chunk-HCBYKLMW.js";import{t as a}from"./chunk-
|
|
2
|
+
import{a as c}from"./chunk-HCBYKLMW.js";import{t as a}from"./chunk-7ONI2K3S.js";import{a as s,b as u,j as p}from"./chunk-C44QQJR4.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as l}from"./chunk-UR6MHSHU.js";var x=l(T(),1);function g(n,e){if(!e)return n;let i=n.trim()||e;return`\x1B]8;;${e}\x07${i}\x1B]8;;\x07`}var r=l(c(),1);function h({shareableLink:n,testCaseLink:e,codeExportDir:i,autoExit:m=!0}){let{exit:f}=p();(0,x.useEffect)(()=>{if(!m)return;let t=setTimeout(()=>f(),100);return()=>clearTimeout(t)},[f,m]);let o=[];return n&&o.push({label:"ShareLink",url:n}),e&&o.push({label:"TestCase",url:e}),i&&o.push({label:"CodeExport",url:i,linkUrl:`file://${i}`}),o.length===0?(0,r.jsx)(r.Fragment,{}):(0,r.jsx)(s,{flexDirection:"column",marginTop:1,marginLeft:1,children:o.map(t=>(0,r.jsxs)(s,{flexDirection:"column",marginBottom:1,children:[(0,r.jsxs)(u,{color:a.primary,children:[t.label,":"]}),(0,r.jsx)(u,{color:a.dim,children:g(t.url,t.linkUrl??t.url)})]},t.label))})}export{h as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as h}from"./chunk-XQL5WHKR.js";import{a as A}from"./chunk-HCBYKLMW.js";import{t as a}from"./chunk-7ONI2K3S.js";import{a as c,b as f,i as P}from"./chunk-C44QQJR4.js";import{a as y}from"./chunk-6YGTRKDT.js";import{e as x}from"./chunk-UR6MHSHU.js";var L=x(y(),1);var r=x(A(),1);function B(i,d,l,u,p){let g=l==="basic"&&u?`basic (${u})`:l,n=20,s=`${i} [${d}]`,m="\xB7".repeat(Math.max(2,n-s.length+3));return{label:`${s} ${m} ${g}`,profile:i,env:d,isActive:p}}function I({creds:i,onSwitch:d,onCancel:l}){let u=i.listProfiles(),p=i.getActiveProfile(),g=i.getDefaultEnv(),n=u.map(e=>{let t=i.loadBasicAuth(e.profile,e.env),o=i.loadCredentials(e.profile,e.env)!==null,v=t?"basic":o?"oauth":"none",b=t?t.username:null,w=e.profile===p&&e.env===g;return B(e.profile,e.env,v,b,w)}),[s,m]=(0,L.useState)(()=>{let e=n.findIndex(t=>t.isActive);return e>=0?e:0});return P((e,t)=>{if(t.escape){l();return}if(t.upArrow){m(o=>Math.max(0,o-1));return}if(t.downArrow){m(o=>Math.min(n.length-1,o+1));return}if(t.return&&n[s]){let o=n[s];o.isActive||d(o.profile,o.env),l();return}}),n.length===0?(0,r.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:a.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(f,{color:a.primary,bold:!0,children:"Profiles"}),(0,r.jsx)(c,{marginTop:1,children:(0,r.jsx)(f,{color:a.dim,children:"No profiles \u2014 use Login to create one"})}),(0,r.jsx)(h,{bindings:[],escBackLabel:"back"})]}):(0,r.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:a.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(f,{color:a.primary,bold:!0,children:"Profiles"}),(0,r.jsx)(c,{flexDirection:"column",marginTop:1,children:n.map((e,t)=>{let o=t===s,v=o?"\u276F ":" ",b=e.isActive?a.statusPass:o?a.primary:void 0;return(0,r.jsxs)(f,{color:b,children:[v,e.label,e.isActive?" \u25CF active":""]},`${e.profile}-${e.env}`)})}),(0,r.jsx)(h,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"switch"}],escBackLabel:"back"})]})}export{B as a,I as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as s}from"./chunk-HCBYKLMW.js";import{t as n}from"./chunk-7ONI2K3S.js";import{a,b as i}from"./chunk-C44QQJR4.js";import{e as r}from"./chunk-UR6MHSHU.js";var o=r(s(),1);function g({bindings:c,suppressEscBack:p=!1,escBackLabel:m="back to chat"}){let e=c.map(t=>`${t.keys} ${t.label}`);return p||e.push(`esc \xB7 ${m}`),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(i,{color:n.dim,children:e.join(" \xB7 ")})})}export{g as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Y}from"./chunk-XQL5WHKR.js";import{a as F}from"./chunk-HCBYKLMW.js";import{t as o}from"./chunk-7ONI2K3S.js";import{a,b as r,i as P}from"./chunk-C44QQJR4.js";import{a as K}from"./chunk-6YGTRKDT.js";import{e as C}from"./chunk-UR6MHSHU.js";var c=C(F(),1);function z({value:t,onChange:u,onSubmit:l,onCancel:S,placeholder:y,masked:L}){P((A,d)=>{if(d.return){l?.(t);return}if(d.escape){S?.();return}if(d.backspace||d.delete){u(t.slice(0,-1));return}d.tab||d.ctrl||d.meta||A&&u(t+A)});let v=L?"\u2022".repeat(t.length):t;return(0,c.jsx)(a,{children:t.length===0&&y?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(r,{inverse:!0,children:" "}),(0,c.jsx)(r,{dimColor:!0,children:y})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(r,{children:v}),(0,c.jsx)(r,{inverse:!0,children:" "})]})})}var T=C(K(),1);var e=C(F(),1),x=5;function Z(t,u){if(!u)return t;let l=u.toLowerCase();return t.filter(S=>S.label.toLowerCase().includes(l))}function q(t){let{title:u,items:l,loading:S=!1,loadingText:y,error:L=null,itemNoun:v="items",onSelect:A,onCancel:d,defaultActiveId:R,onTab:E,extraHint:H}=t,[p,f]=(0,T.useState)(0),[B,g]=(0,T.useState)(0),[m,M]=(0,T.useState)(""),[D,h]=(0,T.useState)(null);(0,T.useEffect)(()=>{if(l.length===0)return;if(t.preserveSelectionById&&D!==null){let n=l.findIndex(i=>i.id===D);if(n>=0){g(Math.floor(n/x)),f(n%x);return}}let s=R?l.findIndex(n=>n.id===R):l.findIndex(n=>n.isActive);s>=0?(g(Math.floor(s/x)),f(s%x),t.preserveSelectionById&&h(l[s].id)):t.preserveSelectionById&&(g(0),f(0),h(l[0]?.id??null))},[l,R,t.preserveSelectionById,D]);let b=Z(l,m),N=B*x,O=Math.min(N+x,b.length),X=Math.ceil(b.length/x),$=O-N,w=b.slice(N,O);return P((s,n)=>{if(L){n.escape&&d();return}if(n.escape){m?(M(""),f(0),g(0)):d();return}if(n.tab&&E){E();return}if(n.upArrow){if(p>0){let i=p-1;f(i),t.preserveSelectionById&&h(w[i]?.id??null)}else if(B>0){let i=B-1,I=x-1;g(i),f(I),t.preserveSelectionById&&h(b[i*x+I]?.id??null)}return}if(n.downArrow){if(p<$-1){let i=p+1;f(i),t.preserveSelectionById&&h(w[i]?.id??null)}else if(B<X-1){let i=B+1,I=0;g(i),f(I),t.preserveSelectionById&&h(b[i*x+I]?.id??null)}return}if(n.return&&w[p]){A(w[p]);return}if(n.backspace||n.delete){M(i=>i.slice(0,-1)),f(0),g(0);return}s&&!n.ctrl&&!n.meta&&(M(i=>i+s),f(0),g(0))},{isActive:!S}),S?(0,e.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:o.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(r,{color:o.primary,bold:!0,children:u}),(0,e.jsx)(a,{marginTop:1,children:(0,e.jsx)(r,{color:o.secondary,children:y??`Loading ${v}\u2026`})})]}):L?(0,e.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:o.statusFail,paddingX:2,paddingY:1,children:[(0,e.jsx)(r,{color:o.statusFail,bold:!0,children:u}),(0,e.jsx)(a,{marginTop:1,children:(0,e.jsx)(r,{color:o.statusFail,children:L})}),(0,e.jsx)(Y,{bindings:[]})]}):(0,e.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:o.primary,paddingX:2,paddingY:1,children:[(0,e.jsxs)(a,{children:[(0,e.jsx)(r,{color:o.primary,bold:!0,children:u}),(0,e.jsxs)(r,{color:o.dim,children:[" (",b.length,m?`/${l.length}`:""," ",v,t.loadingMore?" \xB7 loading more":"",")"]})]}),(0,e.jsxs)(a,{marginTop:1,children:[(0,e.jsx)(r,{color:o.secondary,children:m?"filter: ":""}),m?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(r,{children:m}),(0,e.jsx)(r,{inverse:!0,children:" "})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(r,{color:o.dim,children:["Search ",v,"\u2026"]}),(0,e.jsx)(r,{inverse:!0,children:" "})]})]}),(0,e.jsx)(a,{flexDirection:"column",marginTop:1,children:b.length===0?(0,e.jsxs)(r,{color:o.dim,children:["No ",v,' match "',m,'"']}):w.map((s,n)=>{let i=n===p,I=i?"\u276F ":" ",G=s.isActive?o.statusPass:i?o.primary:void 0;return(0,e.jsxs)(r,{color:G,children:[I,s.label,s.isActive?" \u25CF selected":""]},s.id)})}),X>1&&(0,e.jsx)(a,{marginTop:1,children:(0,e.jsxs)(r,{color:o.dim,children:["Page ",B+1,"/",X]})}),(0,e.jsx)(Y,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"type",label:"to search"},{keys:"\u21B5",label:"select"},...E&&H?[{keys:"tab",label:H}]:[]],escBackLabel:m?"clear":"back to chat"})]})}export{z as a,q as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as b}from"./chunk-XQL5WHKR.js";import{a as A}from"./chunk-HCBYKLMW.js";import{k as p,t as i}from"./chunk-7ONI2K3S.js";import{a as u,b as a,i as S}from"./chunk-C44QQJR4.js";import{a as D}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var g=h(D(),1);import{readdirSync as N,mkdirSync as L,statSync as k}from"fs";import{join as P}from"path";var r=h(A(),1);function O(n){try{return N(n).filter(s=>{try{return k(P(n,s)).isDirectory()}catch{return!1}})}catch{return[]}}function E(n,s,m,v){return{name:n,path:s,label:n,isActive:v}}function H({currentPath:n,onSelect:s,onCancel:m}){let l=O(p).map(o=>{let e=P(p,o);return E(o,e,n,e===n)}),d=!n,B=l.length+2,[c,C]=(0,g.useState)(()=>{if(d)return 0;let o=l.findIndex(e=>e.isActive);return o>=0?o+1:0}),[y,T]=(0,g.useState)(!1),[I,x]=(0,g.useState)("");return S((o,e)=>{if(y){if(e.escape){T(!1),x("");return}if(e.return){let t=I.trim();if(t){let f=P(p,t);L(f,{recursive:!0}),s(f),m()}return}if(e.backspace||e.delete){x(t=>t.slice(0,-1));return}o&&!e.ctrl&&!e.meta&&x(t=>t+o);return}if(e.escape){m();return}if(e.upArrow){C(t=>Math.max(0,t-1));return}if(e.downArrow){C(t=>Math.min(B-1,t+1));return}if(e.return){if(c===0){d||s(""),m();return}if(c===l.length+1){L(p,{recursive:!0}),T(!0),x("");return}let t=l[c-1];t&&!t.isActive&&s(t.path),m();return}}),y?(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(a,{color:i.primary,bold:!0,children:"Chrome Profile \u203A New"}),(0,r.jsxs)(u,{marginTop:1,children:[(0,r.jsx)(a,{color:i.secondary,children:"Name: "}),(0,r.jsx)(a,{children:I}),(0,r.jsx)(a,{color:i.dimmed,children:"\u2588"})]}),(0,r.jsx)(b,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:"back"})]}):(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(a,{color:i.primary,bold:!0,children:"Chrome Profile"}),(0,r.jsxs)(u,{flexDirection:"column",marginTop:1,children:[(0,r.jsxs)(a,{color:d?i.statusPass:c===0?i.primary:i.dim,children:[c===0?"\u276F ":" ","Use temporary (no profile)",d?" \u25CF active":""]}),l.map((o,e)=>{let f=e+1===c,R=f?"\u276F ":" ",w=o.isActive?i.statusPass:f?i.primary:void 0;return(0,r.jsxs)(a,{color:w,children:[R,o.label,o.isActive?" \u25CF active":""]},o.name)}),(0,r.jsxs)(a,{color:c===l.length+1?i.primary:i.dim,children:[c===l.length+1?"\u276F ":" ","+ Create new"]})]}),(0,r.jsx)(b,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})}export{O as a,E as b,H as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as h}from"./chunk-DXKKUGFG.js";var p=class extends h{constructor(e,t,s){super(e,{username:t,accessKey:s})}async listProjects(e){let t=[],s=!1;for await(let r of this.listProjectsStream({log:e})){if(e&&!s&&r.projects.length>0){let o=r.projects[0];e("info","PROJECT_SAMPLE","Project list sample",{project_id:o.project_id,name:o.name}),s=!0}t.push(...r.projects)}return t}async*listProjectsStream(e){let t=e?.perPage??200,s=e?.maxPages??100,r=e?.signal,o=e?.log,i=0;for(let a=1;a<=s;a++){if(r?.aborted)return;let d=`${this.baseUrl}/v1/projects?page=${a}&per_page=${t}&sort=created_at`,g=AbortSignal.timeout(15e3),u=r?AbortSignal.any([r,g]):g,n;try{n=await fetch(d,{method:"GET",headers:this.headers(),signal:u})}catch(c){if(r?.aborted)return;if(a===1)throw c;o?.("warn","PROJECTS_STREAM_PARTIAL","stream stopped mid-page",{page:a,total_loaded:i,error:c instanceof Error?c.message:String(c)}),yield{page:a,projects:[],totalLoaded:i,done:!0};return}if(!n.ok){if(a===1)throw new Error(`listProjects ${n.status}: ${await n.text()}`);o?.("warn","PROJECTS_STREAM_PARTIAL","stream stopped on non-OK response",{page:a,status:n.status,total_loaded:i}),yield{page:a,projects:[],totalLoaded:i,done:!0};return}let l=(await n.json()).data??[];i+=l.length;let m=l.length<t;if(yield{page:a,projects:l,totalLoaded:i,done:m},m)return}o?.("warn","PROJECTS_STREAM_MAXPAGES","max pages reached",{max_pages:s,total_loaded:i}),yield{page:s,projects:[],totalLoaded:i,done:!0}}async getDefaultFolder(e){let t=await fetch(`${this.baseUrl}/v1/projects/${e}/folder/default`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`Get default folder failed: ${t.status} ${await t.text()}`);return(await t.json()).id}async listFolders(e){let t=await fetch(`${this.baseUrl}/v1/folder/entity/${e}`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`List folders failed: ${t.status} ${await t.text()}`);return(await t.json()).data??[]}async createProject(e){let t=await fetch(`${this.baseUrl}/v1/projects`,{method:"POST",headers:{...this.headers(),"Content-Type":"application/json"},body:JSON.stringify({name:e,description:"",tags:[],source:"KTM"})});if(!t.ok)throw new Error(`Create project failed: ${t.status} ${await t.text()}`);return{id:(await t.json()).id,name:e}}async createFolder(e,t){let s=await fetch(`${this.baseUrl}/v1/folder`,{method:"POST",headers:{...this.headers(),"Content-Type":"application/json"},body:JSON.stringify({folders:[{name:t,description:"",entity_id:e,entity_type:"project"}]})});if(!s.ok)throw new Error(`Create folder failed: ${s.status} ${await s.text()}`);return{id:(await s.json()).id,name:t}}async createAtmTest(e,t){let s=t?`Bearer ${t}`:this.authHeader,r=await fetch(`${this.baseUrl}/kane-cli/v1/test`,{method:"POST",headers:{Authorization:s,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e)});if(!r.ok)throw new Error(`Create ATM test failed: ${r.status} ${await r.text()}`);let o=await r.json();if(!o.test_id)throw new Error("Create ATM test returned no test_id");return o.test_id}async endTest(e,t,s){let r=s?`Bearer ${s}`:this.authHeader,o=new URLSearchParams({commit_id:t.commit_id,time_taken:String(t.time_taken),steps_count:String(t.steps_count),commit_message:t.commit_message}),i={};t.objectives&&t.objectives.length>0&&(i.objectives=t.objectives);let a=await fetch(`${this.baseUrl}/kane-cli/v1/test/${e}?${o.toString()}`,{method:"DELETE",headers:{Authorization:r,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(i)});if(!a.ok)throw new Error(`End test failed: ${a.status} ${await a.text()}`);let d=await a.json();return{testcase_id:d.data?.testcase_id??"",test_id:d.data?.test_id??e,project_id:d.data?.project_id??""}}async submitFeedback(e,t){let s=t?`Bearer ${t}`:this.authHeader,r={instruction_id:e.instruction_id,test_id:e.test_id,feedback_type:e.feedback_type,mode:e.mode??"human"};e.details&&(r.details=e.details);let o=await fetch(`${this.baseUrl}/atm/v1/generative-feedback`,{method:"POST",headers:{Authorization:s,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(r)});if(!o.ok)throw new Error(`Submit feedback failed: ${o.status} ${await o.text()}`);return await o.json()}};export{p as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as m}from"./chunk-XQL5WHKR.js";import{a as p}from"./chunk-HCBYKLMW.js";import{t}from"./chunk-7ONI2K3S.js";import{a,b as o,i as u}from"./chunk-C44QQJR4.js";import{a as b}from"./chunk-6YGTRKDT.js";import{e as n}from"./chunk-UR6MHSHU.js";var c=n(b(),1);var e=n(p(),1);function T({onSubmit:l}){let[r,f]=(0,c.useState)(0),s=(0,c.useRef)(!1);return u((x,i)=>{s.current||(i.leftArrow||i.rightArrow?f(d=>d===0?1:0):i.return?(s.current=!0,l(r===0?"positive":"negative")):i.escape&&(s.current=!0,l(null)))}),(0,e.jsxs)(a,{flexDirection:"column",marginTop:1,children:[(0,e.jsxs)(a,{children:[(0,e.jsx)(o,{color:t.secondary,children:"Rate this session: "}),(0,e.jsx)(o,{color:r===0?t.primary:t.dim,children:r===0?"[ \u{1F44D} ]":" \u{1F44D} "}),(0,e.jsx)(o,{children:" "}),(0,e.jsx)(o,{color:r===1?t.primary:t.dim,children:r===1?"[ \u{1F44E} ]":" \u{1F44E} "})]}),(0,e.jsx)(m,{bindings:[{keys:"\u2190/\u2192",label:"select"},{keys:"\u21B5",label:"submit"}],escBackLabel:"skip"})]})}export{T as a};
|