jetic-cli 0.2.8 → 0.2.9

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.
@@ -371,7 +371,7 @@ Error generating stack: `+a.message+`
371
371
  *
372
372
  * This source code is licensed under the ISC license.
373
373
  * See the LICENSE file in the root directory of this source tree.
374
- */const f2=[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]],hs=Ne("zap",f2),D0=j.createContext({theme:"dark",toggleTheme:()=>{}});function h2({children:n}){const[r,o]=j.useState(()=>localStorage.getItem("jetic_theme")==="light"?"light":"dark");j.useEffect(()=>{const u=document.documentElement;r==="light"?(u.classList.add("light"),u.classList.remove("dark")):(u.classList.add("dark"),u.classList.remove("light")),localStorage.setItem("jetic_theme",r);const f=document.getElementById("app-favicon");f&&(f.href=r==="light"?"/brand/jetic-black.svg":"/brand/jetic.svg")},[r]);const i=()=>o(u=>u==="dark"?"light":"dark");return s.jsx(D0.Provider,{value:{theme:r,toggleTheme:i},children:n})}function H0(){return j.useContext(D0)}function m2({size:n=20,className:r}){return s.jsx("svg",{width:n,height:n*1.5,viewBox:"0 0 14 21",fill:"currentColor",className:r,"aria-label":"Jetic",children:s.jsx("path",{d:"M0 0h14v14l-7 7H0v-7h7V7H0V0Z"})})}const p2=[{label:"WORKFLOW",items:[{id:"overview",label:"Overview",icon:Cv},{id:"model",label:"Model",icon:A0},{id:"simulations",label:"Simulations",icon:ea},{id:"inspect",label:"Inspect",icon:e2}]},{label:"AGENT",items:[{id:"memory",label:"Memory & Environment",icon:fl}]},{label:"OBSERVABILITY",items:[{id:"traces",label:"Traces",icon:Vr},{id:"changes",label:"Files changes",icon:T0}]}],x2=[],$0="relative flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-[13.5px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)]",U0="theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm",B0="theme-text hover:theme-bg-overlay-md hover:theme-text-primary";function hx({icon:n,label:r,active:o=!1,onClick:i}){return s.jsxs("button",{type:"button",onClick:i,"aria-current":o?"page":void 0,className:`${$0} ${o?U0:B0}`,children:[s.jsx(n,{className:"h-[15px] w-[15px] shrink-0",strokeWidth:2}),s.jsx("span",{children:r})]})}function g2({currentPage:n,onNavigate:r,onToggleAssistant:o,isAssistantOpen:i}){const{theme:u,toggleTheme:f}=H0();return s.jsxs("div",{className:"flex w-60 shrink-0 flex-col select-none transition-colors duration-300 border-r theme-border theme-sidebar",children:[s.jsxs("div",{className:"flex items-center justify-between px-4 pb-6 pt-5",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(m2,{size:12,className:"theme-text-primary"}),s.jsxs("span",{className:"text-[15px] font-semibold tracking-wide theme-text-primary",children:["Jetic",s.jsx("span",{className:"ml-1 theme-text-brand",children:"Studio"})]})]}),s.jsxs("div",{className:"flex items-center gap-1.5 rounded-full border theme-border theme-bg-overlay px-2 py-0.5 text-[11px] font-medium theme-text-muted",children:[s.jsx("span",{className:"h-1.5 w-1.5 rounded-full theme-bg-brand"}),"v0.2.7"]})]}),s.jsx("div",{className:"flex-1 overflow-y-auto px-3",children:s.jsx("div",{className:"flex flex-col gap-6",children:p2.map(h=>s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("span",{className:"px-3 pb-1 text-[11px] font-semibold uppercase tracking-wider theme-text-muted",children:h.label}),s.jsx("div",{className:"flex flex-col gap-0.5",children:h.items.map(g=>s.jsx(hx,{icon:g.icon,label:g.label,active:n===g.id,onClick:()=>r(g.id)},g.id))})]},h.label))})}),s.jsx("div",{className:"mx-3 my-3 hidden border-t theme-border"}),s.jsx("div",{className:"flex flex-col gap-0.5 px-3",children:s.jsxs("button",{type:"button",onClick:o,"aria-pressed":i,className:`hidden ${$0} ${i?U0:B0}`,children:[s.jsx(Fv,{className:"h-[15px] w-[15px] shrink-0",strokeWidth:2}),s.jsx("span",{children:"Jetic Assistant"})]})}),s.jsx("div",{className:"mx-3 my-3 hidden border-t theme-border"}),s.jsx("div",{className:"flex flex-col gap-0.5 px-3",children:x2.map(h=>s.jsx(hx,{icon:h.icon,label:h.label,active:n===h.id,onClick:()=>r(h.id)},h.id))}),s.jsx("div",{className:"px-3 pb-4 pt-3",children:s.jsxs("div",{className:"flex items-center gap-1 rounded-xl p-1 border theme-border theme-bg-overlay",children:[s.jsxs("button",{type:"button",onClick:()=>u!=="dark"&&f(),title:"Dark mode","aria-pressed":u==="dark",className:`flex flex-1 items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)] ${u==="dark"?"theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm":"theme-text-muted hover:theme-text"}`,children:[s.jsx(Ov,{className:"h-3 w-3 shrink-0",strokeWidth:2}),"Dark"]}),s.jsxs("button",{type:"button",onClick:()=>u!=="light"&&f(),title:"Light mode","aria-pressed":u==="light",className:`flex flex-1 items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)] ${u==="light"?"theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm":"theme-text-muted hover:theme-text"}`,children:[s.jsx(s2,{className:"h-3 w-3 shrink-0",strokeWidth:2}),"Light"]})]})})]})}function y2({isOpen:n,onClose:r}){return n?s.jsxs("div",{className:"absolute inset-y-0 right-0 w-[400px] border-l theme-border theme-bg-elevated shadow-2xl flex flex-col z-50",children:[s.jsxs("div",{className:"flex h-14 items-center justify-between border-b theme-border px-5",children:[s.jsx("div",{className:"flex items-center gap-2 text-emerald-400",children:s.jsx("span",{className:"text-[14px] font-medium",children:"Jetic AI"})}),s.jsx("button",{onClick:r,className:"theme-text-muted hover:theme-text hover:bg-white/5 p-2 rounded-full",children:s.jsx(Tt,{className:"",size:13})})]}),s.jsx("div",{className:"flex-1 overflow-y-auto p-5 space-y-4",children:s.jsxs("div",{className:"flex flex-col items-center pt-8 pb-4",children:[s.jsx("div",{className:"mb-4 flex h-10 w-10 items-center justify-center rounded-full theme-bg-overlay-md text-[13px] font-medium theme-text-primary",children:"J"}),s.jsx("h2",{className:"text-[17px] font-semibold theme-text-primary text-center",children:"How can I help you test your APIs?"}),s.jsx("p",{className:"theme-text-muted text-[13px] mt-2 text-center",children:"Ask me to generate simulations, debug traces, or explain API behavior."})]})}),s.jsx("div",{className:"p-4 border-t theme-border theme-bg-surface",children:s.jsxs("div",{className:"rounded border border-emerald-600/60 theme-bg-overlay focus-within:border-emerald-500 transition-colors",children:[s.jsx("textarea",{rows:2,placeholder:"E.g. Test password reset flow...",className:"w-full resize-none bg-transparent px-4 pb-2 pt-3.5 text-[13.5px] theme-text-primary placeholder:theme-text-muted focus:outline-none"}),s.jsxs("div",{className:"flex items-center justify-between px-3 pb-3 pt-1",children:[s.jsx("div",{className:"flex gap-2",children:s.jsx("span",{className:"text-[11px] theme-text-muted font-mono theme-bg-overlay-md px-2 py-0.5 rounded",children:"gpt-4o"})}),s.jsx("button",{className:"text-[12px] font-medium text-emerald-400 hover:text-emerald-300",children:"Send"})]})]})})]}):null}const mx="Check recent file changes (jetic_get_changes). Re-analyse ONLY those modified files to update .jetic/model.json instead of reading the entire codebase";function b2({onNavigateToChanges:n}){const[r,o]=j.useState(null),[i,u]=j.useState(!1),[f,h]=j.useState(!1),g=j.useCallback(async()=>{try{const p=await fetch("/api/changes");if(!p.ok)return;const b=await p.json();o(b)}catch{}},[]);j.useEffect(()=>{g();let p=null,b=null;try{p=new EventSource("/api/changes/stream"),p.onmessage=v=>{try{o(JSON.parse(v.data))}catch{}},p.onerror=()=>{b||(b=setInterval(g,3e3))}}catch{b=setInterval(g,3e3)}return()=>{p?.close(),b&&clearInterval(b)}},[g]);const x=r?.changes?.length??0;j.useEffect(()=>{x===0&&u(!1)},[x]);const m=p=>{p.stopPropagation(),navigator.clipboard.writeText(mx),h(!0),setTimeout(()=>h(!1),2e3)};return x===0||i?null:s.jsxs("div",{className:"fixed bottom-6 right-6 z-[100] w-[420px] max-w-[calc(100vw-3rem)] rounded-xl border border-amber-500/35 p-4 shadow-2xl transition-all duration-300 animate-in slide-in-from-bottom-5 theme-sidebar theme-text-primary",style:{boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.6), 0 8px 10px -6px rgba(0, 0, 0, 0.4), 0 0 15px rgba(245, 158, 11, 0.1)"},children:[s.jsxs("div",{className:"flex items-start justify-between gap-3",children:[s.jsxs("div",{className:"flex items-center gap-2.5",children:[s.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-amber-500/15 text-amber-400 border border-amber-500/25",children:s.jsx(i2,{className:"h-4 w-4",strokeWidth:2})}),s.jsxs("div",{children:[s.jsx("h4",{className:"text-[13px] font-semibold tracking-tight theme-text-primary",children:"Model is not currently in sync with codebase"}),s.jsxs("p",{className:"text-[11px] theme-text-muted",children:["Detected ",s.jsxs("span",{className:"font-medium text-amber-400",children:[x," change",x>1?"s":""]})," in your codebase."]})]})]}),s.jsx("button",{type:"button",onClick:()=>u(!0),title:"Cancel",className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-lg transition-colors theme-text-muted hover:theme-bg-overlay-md hover:cursor-pointer",children:s.jsx(Tt,{className:"h-3.5 w-3.5",strokeWidth:2})})]}),s.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1.5",children:[r?.changes.slice(0,3).map(p=>{const b=p.filePath.split("/").pop()??p.filePath;return s.jsx("span",{onClick:()=>n?.(),className:"truncate max-w-[130px] rounded px-2 py-0.5 font-mono text-[10.5px] hover:border-amber-500/50 hover:cursor-pointer transition-colors theme-bg-overlay border theme-border theme-text-muted",title:p.filePath,children:b},p.filePath)}),x>3&&s.jsxs("span",{onClick:()=>n?.(),className:"rounded px-1.5 py-0.5 text-[10.5px] font-medium hover:cursor-pointer theme-bg-overlay-md theme-text-faint",children:["+",x-3," more"]})]}),s.jsxs("div",{className:"mt-3.5 pt-3 border-t theme-border",children:[s.jsx("p",{className:"text-[11px] mb-2 font-medium theme-text-muted",children:"Then you need to rescan the codebase:"}),s.jsxs("div",{className:"relative flex items-center justify-between rounded-lg p-2.5 font-mono text-[11px] leading-relaxed group theme-bg-base border theme-border theme-text",children:[s.jsx("span",{className:"pr-16 select-all font-mono text-[11px] leading-relaxed theme-text-primary",children:mx}),s.jsx("button",{type:"button",onClick:m,title:"Copy prompt",className:`absolute right-2 top-2.5 flex items-center gap-1 rounded-md px-2 py-1 text-[10.5px] font-sans font-medium transition-all shadow-sm hover:cursor-pointer border theme-border ${f?"bg-blue-500/20 text-blue-400":"theme-bg-overlay-md theme-text-muted"}`,children:f?s.jsxs(s.Fragment,{children:[s.jsx(ut,{className:"h-3 w-3 text-blue-400",strokeWidth:2}),s.jsx("span",{children:"Copied"})]}):s.jsxs(s.Fragment,{children:[s.jsx(C0,{className:"h-3 w-3",strokeWidth:2}),s.jsx("span",{children:"Copy"})]})})]})]})]})}const v2=`.jl-p{fill:currentColor}
374
+ */const f2=[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]],hs=Ne("zap",f2),D0=j.createContext({theme:"dark",toggleTheme:()=>{}});function h2({children:n}){const[r,o]=j.useState(()=>localStorage.getItem("jetic_theme")==="light"?"light":"dark");j.useEffect(()=>{const u=document.documentElement;r==="light"?(u.classList.add("light"),u.classList.remove("dark")):(u.classList.add("dark"),u.classList.remove("light")),localStorage.setItem("jetic_theme",r);const f=document.getElementById("app-favicon");f&&(f.href=r==="light"?"/brand/jetic-black.svg":"/brand/jetic.svg")},[r]);const i=()=>o(u=>u==="dark"?"light":"dark");return s.jsx(D0.Provider,{value:{theme:r,toggleTheme:i},children:n})}function H0(){return j.useContext(D0)}function m2({size:n=20,className:r}){return s.jsx("svg",{width:n,height:n*1.5,viewBox:"0 0 14 21",fill:"currentColor",className:r,"aria-label":"Jetic",children:s.jsx("path",{d:"M0 0h14v14l-7 7H0v-7h7V7H0V0Z"})})}const p2=[{label:"WORKFLOW",items:[{id:"overview",label:"Overview",icon:Cv},{id:"model",label:"Model",icon:A0},{id:"simulations",label:"Simulations",icon:ea},{id:"inspect",label:"Inspect",icon:e2}]},{label:"AGENT",items:[{id:"memory",label:"Memory & Environment",icon:fl}]},{label:"OBSERVABILITY",items:[{id:"traces",label:"Traces",icon:Vr},{id:"changes",label:"Files changes",icon:T0}]}],x2=[],$0="relative flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-[13.5px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)]",U0="theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm",B0="theme-text hover:theme-bg-overlay-md hover:theme-text-primary";function hx({icon:n,label:r,active:o=!1,onClick:i}){return s.jsxs("button",{type:"button",onClick:i,"aria-current":o?"page":void 0,className:`${$0} ${o?U0:B0}`,children:[s.jsx(n,{className:"h-[15px] w-[15px] shrink-0",strokeWidth:2}),s.jsx("span",{children:r})]})}function g2({currentPage:n,onNavigate:r,onToggleAssistant:o,isAssistantOpen:i}){const{theme:u,toggleTheme:f}=H0();return s.jsxs("div",{className:"flex w-60 shrink-0 flex-col select-none transition-colors duration-300 border-r theme-border theme-sidebar",children:[s.jsxs("div",{className:"flex items-center justify-between px-4 pb-6 pt-5",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(m2,{size:12,className:"theme-text-primary"}),s.jsxs("span",{className:"text-[15px] font-semibold tracking-wide theme-text-primary",children:["Jetic",s.jsx("span",{className:"ml-1 theme-text-brand",children:"Studio"})]})]}),s.jsxs("div",{className:"flex items-center gap-1.5 rounded-full border theme-border theme-bg-overlay px-2 py-0.5 text-[11px] font-medium theme-text-muted",children:[s.jsx("span",{className:"h-1.5 w-1.5 rounded-full theme-bg-brand"}),"v0.2.8"]})]}),s.jsx("div",{className:"flex-1 overflow-y-auto px-3",children:s.jsx("div",{className:"flex flex-col gap-6",children:p2.map(h=>s.jsxs("div",{className:"flex flex-col gap-1",children:[s.jsx("span",{className:"px-3 pb-1 text-[11px] font-semibold uppercase tracking-wider theme-text-muted",children:h.label}),s.jsx("div",{className:"flex flex-col gap-0.5",children:h.items.map(g=>s.jsx(hx,{icon:g.icon,label:g.label,active:n===g.id,onClick:()=>r(g.id)},g.id))})]},h.label))})}),s.jsx("div",{className:"mx-3 my-3 hidden border-t theme-border"}),s.jsx("div",{className:"flex flex-col gap-0.5 px-3",children:s.jsxs("button",{type:"button",onClick:o,"aria-pressed":i,className:`hidden ${$0} ${i?U0:B0}`,children:[s.jsx(Fv,{className:"h-[15px] w-[15px] shrink-0",strokeWidth:2}),s.jsx("span",{children:"Jetic Assistant"})]})}),s.jsx("div",{className:"mx-3 my-3 hidden border-t theme-border"}),s.jsx("div",{className:"flex flex-col gap-0.5 px-3",children:x2.map(h=>s.jsx(hx,{icon:h.icon,label:h.label,active:n===h.id,onClick:()=>r(h.id)},h.id))}),s.jsx("div",{className:"px-3 pb-4 pt-3",children:s.jsxs("div",{className:"flex items-center gap-1 rounded-xl p-1 border theme-border theme-bg-overlay",children:[s.jsxs("button",{type:"button",onClick:()=>u!=="dark"&&f(),title:"Dark mode","aria-pressed":u==="dark",className:`flex flex-1 items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)] ${u==="dark"?"theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm":"theme-text-muted hover:theme-text"}`,children:[s.jsx(Ov,{className:"h-3 w-3 shrink-0",strokeWidth:2}),"Dark"]}),s.jsxs("button",{type:"button",onClick:()=>u!=="light"&&f(),title:"Light mode","aria-pressed":u==="light",className:`flex flex-1 items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] font-medium transition-colors hover:cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--focus-ring)] ${u==="light"?"theme-bg-brand text-[color:var(--brand-foreground)] shadow-sm":"theme-text-muted hover:theme-text"}`,children:[s.jsx(s2,{className:"h-3 w-3 shrink-0",strokeWidth:2}),"Light"]})]})})]})}function y2({isOpen:n,onClose:r}){return n?s.jsxs("div",{className:"absolute inset-y-0 right-0 w-[400px] border-l theme-border theme-bg-elevated shadow-2xl flex flex-col z-50",children:[s.jsxs("div",{className:"flex h-14 items-center justify-between border-b theme-border px-5",children:[s.jsx("div",{className:"flex items-center gap-2 text-emerald-400",children:s.jsx("span",{className:"text-[14px] font-medium",children:"Jetic AI"})}),s.jsx("button",{onClick:r,className:"theme-text-muted hover:theme-text hover:bg-white/5 p-2 rounded-full",children:s.jsx(Tt,{className:"",size:13})})]}),s.jsx("div",{className:"flex-1 overflow-y-auto p-5 space-y-4",children:s.jsxs("div",{className:"flex flex-col items-center pt-8 pb-4",children:[s.jsx("div",{className:"mb-4 flex h-10 w-10 items-center justify-center rounded-full theme-bg-overlay-md text-[13px] font-medium theme-text-primary",children:"J"}),s.jsx("h2",{className:"text-[17px] font-semibold theme-text-primary text-center",children:"How can I help you test your APIs?"}),s.jsx("p",{className:"theme-text-muted text-[13px] mt-2 text-center",children:"Ask me to generate simulations, debug traces, or explain API behavior."})]})}),s.jsx("div",{className:"p-4 border-t theme-border theme-bg-surface",children:s.jsxs("div",{className:"rounded border border-emerald-600/60 theme-bg-overlay focus-within:border-emerald-500 transition-colors",children:[s.jsx("textarea",{rows:2,placeholder:"E.g. Test password reset flow...",className:"w-full resize-none bg-transparent px-4 pb-2 pt-3.5 text-[13.5px] theme-text-primary placeholder:theme-text-muted focus:outline-none"}),s.jsxs("div",{className:"flex items-center justify-between px-3 pb-3 pt-1",children:[s.jsx("div",{className:"flex gap-2",children:s.jsx("span",{className:"text-[11px] theme-text-muted font-mono theme-bg-overlay-md px-2 py-0.5 rounded",children:"gpt-4o"})}),s.jsx("button",{className:"text-[12px] font-medium text-emerald-400 hover:text-emerald-300",children:"Send"})]})]})})]}):null}const mx="Check recent file changes (jetic_get_changes). Re-analyse ONLY those modified files to update .jetic/model.json instead of reading the entire codebase";function b2({onNavigateToChanges:n}){const[r,o]=j.useState(null),[i,u]=j.useState(!1),[f,h]=j.useState(!1),g=j.useCallback(async()=>{try{const p=await fetch("/api/changes");if(!p.ok)return;const b=await p.json();o(b)}catch{}},[]);j.useEffect(()=>{g();let p=null,b=null;try{p=new EventSource("/api/changes/stream"),p.onmessage=v=>{try{o(JSON.parse(v.data))}catch{}},p.onerror=()=>{b||(b=setInterval(g,3e3))}}catch{b=setInterval(g,3e3)}return()=>{p?.close(),b&&clearInterval(b)}},[g]);const x=r?.changes?.length??0;j.useEffect(()=>{x===0&&u(!1)},[x]);const m=p=>{p.stopPropagation(),navigator.clipboard.writeText(mx),h(!0),setTimeout(()=>h(!1),2e3)};return x===0||i?null:s.jsxs("div",{className:"fixed bottom-6 right-6 z-[100] w-[420px] max-w-[calc(100vw-3rem)] rounded-xl border border-amber-500/35 p-4 shadow-2xl transition-all duration-300 animate-in slide-in-from-bottom-5 theme-sidebar theme-text-primary",style:{boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.6), 0 8px 10px -6px rgba(0, 0, 0, 0.4), 0 0 15px rgba(245, 158, 11, 0.1)"},children:[s.jsxs("div",{className:"flex items-start justify-between gap-3",children:[s.jsxs("div",{className:"flex items-center gap-2.5",children:[s.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-amber-500/15 text-amber-400 border border-amber-500/25",children:s.jsx(i2,{className:"h-4 w-4",strokeWidth:2})}),s.jsxs("div",{children:[s.jsx("h4",{className:"text-[13px] font-semibold tracking-tight theme-text-primary",children:"Model is not currently in sync with codebase"}),s.jsxs("p",{className:"text-[11px] theme-text-muted",children:["Detected ",s.jsxs("span",{className:"font-medium text-amber-400",children:[x," change",x>1?"s":""]})," in your codebase."]})]})]}),s.jsx("button",{type:"button",onClick:()=>u(!0),title:"Cancel",className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-lg transition-colors theme-text-muted hover:theme-bg-overlay-md hover:cursor-pointer",children:s.jsx(Tt,{className:"h-3.5 w-3.5",strokeWidth:2})})]}),s.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1.5",children:[r?.changes.slice(0,3).map(p=>{const b=p.filePath.split("/").pop()??p.filePath;return s.jsx("span",{onClick:()=>n?.(),className:"truncate max-w-[130px] rounded px-2 py-0.5 font-mono text-[10.5px] hover:border-amber-500/50 hover:cursor-pointer transition-colors theme-bg-overlay border theme-border theme-text-muted",title:p.filePath,children:b},p.filePath)}),x>3&&s.jsxs("span",{onClick:()=>n?.(),className:"rounded px-1.5 py-0.5 text-[10.5px] font-medium hover:cursor-pointer theme-bg-overlay-md theme-text-faint",children:["+",x-3," more"]})]}),s.jsxs("div",{className:"mt-3.5 pt-3 border-t theme-border",children:[s.jsx("p",{className:"text-[11px] mb-2 font-medium theme-text-muted",children:"Then you need to rescan the codebase:"}),s.jsxs("div",{className:"relative flex items-center justify-between rounded-lg p-2.5 font-mono text-[11px] leading-relaxed group theme-bg-base border theme-border theme-text",children:[s.jsx("span",{className:"pr-16 select-all font-mono text-[11px] leading-relaxed theme-text-primary",children:mx}),s.jsx("button",{type:"button",onClick:m,title:"Copy prompt",className:`absolute right-2 top-2.5 flex items-center gap-1 rounded-md px-2 py-1 text-[10.5px] font-sans font-medium transition-all shadow-sm hover:cursor-pointer border theme-border ${f?"bg-blue-500/20 text-blue-400":"theme-bg-overlay-md theme-text-muted"}`,children:f?s.jsxs(s.Fragment,{children:[s.jsx(ut,{className:"h-3 w-3 text-blue-400",strokeWidth:2}),s.jsx("span",{children:"Copied"})]}):s.jsxs(s.Fragment,{children:[s.jsx(C0,{className:"h-3 w-3",strokeWidth:2}),s.jsx("span",{children:"Copy"})]})})]})]})]})}const v2=`.jl-p{fill:currentColor}
375
375
  .jl-g{transform-origin:7px 10.5px}
376
376
  .jl-sg stop{stop-color:var(--j-hi)}
377
377
  .jl-sg .jl-mid{stop-opacity:var(--j-hia)}
@@ -18,7 +18,7 @@
18
18
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19
19
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
20
20
  <title>Jetic Studio</title>
21
- <script type="module" crossorigin src="/assets/index-DfTWnEz_.js"></script>
21
+ <script type="module" crossorigin src="/assets/index-BhckeK2m.js"></script>
22
22
  <link rel="stylesheet" crossorigin href="/assets/index-Dz50r4Cq.css">
23
23
  </head>
24
24
 
package/dist/index.js CHANGED
@@ -293543,7 +293543,7 @@ var mcpCommand = new import_commander18.Command("mcp").description("Launch Model
293543
293543
 
293544
293544
  // src/index.ts
293545
293545
  var program = new import_commander19.Command();
293546
- program.name("jetic").description("AI-Native API Behavior Testing").version("0.2.7");
293546
+ program.name("jetic").description("AI-Native API Behavior Testing").version("0.2.8");
293547
293547
  program.addCommand(initCommand);
293548
293548
  program.addCommand(scanCommand);
293549
293549
  program.addCommand(inspectCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jetic-cli",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Code-aware, deterministic API toolkit",
5
5
  "main": "dist/index.js",
6
6
  "bin": {