failproofai 0.0.1-beta.6 → 0.0.1-beta.7
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02nt~6d._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__10xz9fd._.js → [root-of-the-server]__0cnhb7_._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0osi8nq._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0t6id1-._.js → [root-of-the-server]__0xmjv9e._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
- package/.next/standalone/.next/static/chunks/{0vka59vj~_p84.js → 00qeuetfdsgjk.js} +1 -1
- package/.next/standalone/.next/static/chunks/{1281t-wuuwf5w.js → 07nvevyjq47qo.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0xcw_k6u.z2ji.js → 0b.lzb_keexdb.js} +3 -3
- package/.next/standalone/.next/static/chunks/{13_h4vv__dm-j.js → 0iv-rbjm2j5nc.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0g0lmawbbronf.js → 0jfhld9mk1zm4.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0y.26ewi_d6ao.js → 0jzowkzl-dd6s.js} +1 -1
- package/.next/standalone/.next/static/chunks/{15e_zyvm~z00h.js → 0w4.ug1d.ok15.js} +1 -1
- package/.next/standalone/.next/static/chunks/{096d4k7vsm6js.js → 16_nu40klq96n.js} +1 -1
- package/.next/standalone/bin/failproofai.mjs +131 -65
- package/.next/standalone/components/reach-developers.tsx +11 -1
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/launch.ts +2 -0
- package/.next/standalone/scripts/postinstall.mjs +1 -1
- package/.next/standalone/src/hooks/install-prompt.ts +2 -2
- package/.next/standalone/src/hooks/manager.ts +5 -5
- package/bin/failproofai.mjs +131 -65
- package/package.json +1 -1
- package/scripts/launch.ts +2 -0
- package/scripts/postinstall.mjs +1 -1
- package/src/hooks/install-prompt.ts +2 -2
- package/src/hooks/manager.ts +5 -5
- /package/.next/standalone/.next/static/{-60bMZ3yrx1LbpOPZF1qZ → H15OMlkQejMvLowzdBldp}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{-60bMZ3yrx1LbpOPZF1qZ → H15OMlkQejMvLowzdBldp}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{-60bMZ3yrx1LbpOPZF1qZ → H15OMlkQejMvLowzdBldp}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,36406,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(74080);function n(e,t,s){let r,n=s.initialDeps??[],i=!0;function o(){var o,a,l;let d,c;s.key&&(null==(o=s.debug)?void 0:o.call(s))&&(d=Date.now());let u=e();if(!(u.length!==n.length||u.some((e,t)=>n[t]!==e)))return r;if(n=u,s.key&&(null==(a=s.debug)?void 0:a.call(s))&&(c=Date.now()),r=t(...u),s.key&&(null==(l=s.debug)?void 0:l.call(s))){let e=Math.round((Date.now()-d)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,n=(e,t)=>{for(e=String(e);e.length<t;)e=" "+e;return e};console.info(`%c⏱ ${n(t,5)} /${n(e,5)} ms`,`
|
|
2
2
|
font-size: .6rem;
|
|
3
3
|
font-weight: bold;
|
|
4
|
-
color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,null==s?void 0:s.key)}return(null==s?void 0:s.onChange)&&!(i&&s.skipInitialOnChange)&&s.onChange(r),i=!1,r}return o.updateDeps=e=>{n=e},o}function i(e,t){if(void 0!==e)return e;throw Error(`Unexpected undefined${t?`: ${t}`:""}`)}e.i(47167);let o=e=>e,a=e=>{let t=Math.max(e.startIndex-e.overscan,0),s=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=s;e++)r.push(e);return r},l={passive:!0},d=(e,t)=>{let s=e.scrollElement;if(!s)return;let r=()=>{t({width:s.innerWidth,height:s.innerHeight})};return r(),s.addEventListener("resize",r,l),()=>{s.removeEventListener("resize",r)}},c="u"<typeof window||"onscrollend"in window,u=(e,t)=>{var s,r;let n,i=e.scrollElement;if(!i)return;let o=e.targetWindow;if(!o)return;let a=0,d=e.options.useScrollendEvent&&c?()=>void 0:(s=()=>{t(a,!1)},r=e.options.isScrollingResetDelay,function(...e){o.clearTimeout(n),n=o.setTimeout(()=>s.apply(this,e),r)}),u=s=>()=>{a=i[e.options.horizontal?"scrollX":"scrollY"],d(),t(a,s)},h=u(!0),m=u(!1);i.addEventListener("scroll",h,l);let p=e.options.useScrollendEvent&&c;return p&&i.addEventListener("scrollend",m,l),()=>{i.removeEventListener("scroll",h),p&&i.removeEventListener("scrollend",m)}},h=(e,t,s)=>{if(null==t?void 0:t.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[s.options.horizontal?"inlineSize":"blockSize"])}return e[s.options.horizontal?"offsetWidth":"offsetHeight"]},m=(e,{adjustments:t=0,behavior:s},r)=>{var n,i;null==(i=null==(n=r.scrollElement)?void 0:n.scrollTo)||i.call(n,{[r.options.horizontal?"left":"top"]:e+t,behavior:s})};class p{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e,t,s;return(null==(s=null==(t=null==(e=this.targetWindow)?void 0:e.performance)?void 0:t.now)?void 0:s.call(t))??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(this.targetWindow&&this.targetWindow.ResizeObserver?e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,s=this.indexFromElement(t);t.isConnected?this.shouldMeasureDuringScroll(s)&&this.resizeItem(s,this.options.measureElement(t,e,this)):this.observer.unobserve(t)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}):null);return{disconnect:()=>{var s;null==(s=t())||s.disconnect(),e=null},observe:e=>{var s;return null==(s=t())?void 0:s.observe(e,{box:"border-box"})},unobserve:e=>{var s;return null==(s=t())?void 0:s.unobserve(e)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,s])=>{void 0===s&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:o,rangeExtractor:a,onChange:()=>{},measureElement:h,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var t,s;null==(s=(t=this.options).onChange)||s.call(t,this,e)},this.maybeNotify=n(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),null!=this.rafId&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;let t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t)return void this.maybeNotify();this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=(null==(e=this.scrollElement)?void 0:e.window)??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?"forward":"backward":null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??("function"==typeof this.options.initialOffset?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let s=new Map,r=new Map;for(let n=t-1;n>=0;n--){let t=e[n];if(s.has(t.lane))continue;let i=r.get(t.lane);if(null==i||t.end>i.end?r.set(t.lane,t):t.end<i.end&&s.set(t.lane,!0),s.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=n(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes],(e,t,s,r,n,i)=>(void 0!==this.prevLanes&&this.prevLanes!==i&&(this.lanesChangedFlag=!0),this.prevLanes=i,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:s,getItemKey:r,enabled:n,lanes:i}),{key:!1}),this.getMeasurements=n(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:s,getItemKey:r,enabled:n,lanes:i},o)=>{if(!n)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),0!==this.measurementsCache.length||this.lanesSettling||(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let a=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,a),d=Array(i).fill(void 0);for(let e=0;e<a;e++){let t=l[e];t&&(d[t.lane]=e)}for(let n=a;n<e;n++){let e,i,a=r(n),c=this.laneAssignments.get(n);if(void 0!==c&&this.options.lanes>1){let r=d[e=c],n=void 0!==r?l[r]:void 0;i=n?n.end+this.options.gap:t+s}else{let r=1===this.options.lanes?l[n-1]:this.getFurthestMeasurement(l,n);i=r?r.end+this.options.gap:t+s,e=r?r.lane:n%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(n,e)}let u=o.get(a),h="number"==typeof u?u:this.options.estimateSize(n),m=i+h;l[n]={index:n,start:i,size:h,end:m,key:a,lane:e},d[e]=n}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=n(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,s,r)=>this.range=e.length>0&&t>0?function({measurements:e,outerSize:t,scrollOffset:s,lanes:r}){let n=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:n};let i=x(0,n,t=>e[t].start,s),o=i;if(1===r)for(;o<n&&e[o].end<s+t;)o++;else if(r>1){let a=Array(r).fill(0);for(;o<n&&a.some(e=>e<s+t);){let t=e[o];a[t.lane]=t.end,o++}let l=Array(r).fill(s+t);for(;i>=0&&l.some(e=>e>=s);){let t=e[i];l[t.lane]=t.start,i--}i=Math.max(0,i-i%r),o=Math.min(n,o+(r-1-o%r))}return{startIndex:i,endIndex:o}}({measurements:e,outerSize:t,scrollOffset:s,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=n(()=>{let e=null,t=null,s=this.calculateRange();return s&&(e=s.startIndex,t=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,s,r,n)=>null===r||null===n?[]:e({startIndex:r,endIndex:n,overscan:t,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,s=e.getAttribute(t);return s?parseInt(s,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var t;if(!this.scrollState||"smooth"!==this.scrollState.behavior)return!0;let s=this.scrollState.index??(null==(t=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))?void 0:t.index);if(void 0!==s&&this.range){let t=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,s-t),n=Math.min(this.options.count-1,s+t);return e>=r&&e<=n}return!0},this.measureElement=e=>{if(!e)return void this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});let t=this.indexFromElement(e),s=this.options.getItemKey(t),r=this.elementsCache.get(s);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(s,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var s;let r=this.measurementsCache[e];if(!r)return;let n=t-(this.itemSizeCache.get(r.key)??r.size);0!==n&&((null==(s=this.scrollState)?void 0:s.behavior)!=="smooth"&&(void 0!==this.shouldAdjustScrollPositionOnItemSizeChange?this.shouldAdjustScrollPositionOnItemSizeChange(r,n,this):r.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=n,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(r.index),this.itemSizeCache=new Map(this.itemSizeCache.set(r.key,t)),this.notify(!1))},this.getVirtualItems=n(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let s=[];for(let r=0,n=e.length;r<n;r++){let n=t[e[r]];s.push(n)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(0!==t.length)return i(t[x(0,t.length-1,e=>i(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,s=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),n=this.getScrollOffset();return"auto"===t&&(t=e>=n+r?"end":"start"),"center"===t?e+=(s-r)/2:"end"===t&&(e-=r),Math.max(Math.min(this.getMaxScrollOffset(),e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));let s=this.getSize(),r=this.getScrollOffset(),n=this.measurementsCache[e];if(!n)return;if("auto"===t)if(n.end>=r+s-this.options.scrollPaddingEnd)t="end";else{if(!(n.start<=r+this.options.scrollPaddingStart))return[r,t];t="start"}if("end"===t&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let i="end"===t?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(i,t,n.size),t]},this.scrollToOffset=(e,{align:t="start",behavior:s="auto"}={})=>{let r=this.getOffsetForAlignment(e,t),n=this.now();this.scrollState={index:null,align:t,behavior:s,startedAt:n,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t="auto",behavior:s="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[n,i]=r,o=this.now();this.scrollState={index:e,align:i,behavior:s,startedAt:o,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t="auto"}={})=>{let s=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:"start",behavior:t,startedAt:r,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var e;let t,s=this.getMeasurements();if(0===s.length)t=this.options.paddingStart;else if(1===this.options.lanes)t=(null==(e=s[s.length-1])?void 0:e.end)??0;else{let e=Array(this.options.lanes).fill(null),r=s.length-1;for(;r>=0&&e.some(e=>null===e);){let t=s[r];null===e[t.lane]&&(e[t.lane]=t.end),r--}t=Math.max(...e.filter(e=>null!==e))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:s})=>{this.options.scrollToFn(e,{behavior:s,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}null==this.rafId&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=null!=this.scrollState.index?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,t=e?e[0]:this.scrollState.lastTargetOffset,s=t!==this.scrollState.lastTargetOffset;if(!s&&1.01>Math.abs(t-this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior="auto",this._scrollToOffset(t,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}let x=(e,t,s,r)=>{for(;e<=t;){let n=(e+t)/2|0,i=s(n);if(i<r)e=n+1;else{if(!(i>r))return n;t=n-1}}return e>0?e-1:0},g="u">typeof document?s.useLayoutEffect:s.useEffect;var f=e.i(64659),y=e.i(75254);let b=(0,y.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),v=(0,y.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),j=(0,y.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),w=(0,y.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]),N=(0,y.default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);var S=e.i(86311);let M=(0,y.default)("workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);var k=e.i(34713);let C=s.default.memo(function({entries:e,compact:r=!1}){let n=(0,s.useMemo)(()=>(function(e){let t=0,s=0,r=0,n=0,i=0,o=new Set;for(let a of e)if("user"===a.type&&t++,"queue-operation"===a.type&&i++,"assistant"===a.type){for(let e of(s++,a.message.content))"tool_use"===e.type&&("Task"===e.name&&(e.subagentType||e.subagentId)?n++:r++);a.message.model&&o.add(a.message.model)}let a="";if(e.length>=2){let t=e[e.length-1].timestampMs-e[0].timestampMs;a=(0,k.formatDuration)(t)}return{turnCount:i,userCount:t,assistantCount:s,toolCallCount:r,subagentCount:n,duration:a,models:Array.from(o)}})(e),[e]),i=r?"w-3.5 h-3.5":"w-4 h-4",o=r?"text-xs font-medium":"text-sm font-medium",a=r?"text-[10px] text-muted-foreground":"text-xs text-muted-foreground",l=[...r?[]:[{Icon:S.MessageSquare,color:"text-primary",v:n.turnCount,l:"Turns"}],{Icon:v,color:"text-[color:var(--chart-1)]",v:n.userCount,l:"User"},{Icon:j,color:"text-[color:var(--chart-2)]",v:n.assistantCount,l:"Assistant"},{Icon:b,color:"text-[color:var(--chart-3)]",v:n.toolCallCount,l:r?"Tools":"Tool Calls"},{Icon:M,color:"text-[color:var(--chart-5)]",v:n.subagentCount,l:"Subagents"},{Icon:N,color:"text-[color:var(--chart-4)]",v:n.duration||"—",l:"Duration"},{Icon:w,color:"text-[color:var(--chart-5)]",v:n.models.length>0?n.models.join(", "):"—",l:r?"Model":"Model(s)"}];return(0,t.jsx)("div",{className:r?"bg-muted/30 border border-border/50 rounded-lg p-3 mb-3":"bg-card border border-border rounded-lg p-4",children:(0,t.jsx)("div",{className:`grid grid-cols-2 ${r?"sm:grid-cols-6 gap-3":"sm:grid-cols-4 lg:grid-cols-7 gap-4"}`,children:l.map(({Icon:e,color:s,v:r,l:n})=>(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(e,{className:`${i} ${s}`}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:`${o} truncate max-w-[120px]`,children:r}),(0,t.jsx)("div",{className:a,children:n})]})]},n))})})}),E=(0,y.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var I=e.i(63059);function T(e){return JSON.stringify(e.raw,null,2)}let O=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0});function A(e){let t=new Date(e),s=O.format(t),r=t.getMilliseconds().toString().padStart(3,"0");return`${s}.${r}`}let z=s.default.memo(function({entry:e,isCollapsed:s,entryCount:r,onToggle:n}){let i="function"==typeof n,o=(0,t.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 rounded-full bg-primary/10 border border-primary/20 text-primary text-xs font-medium${i?" group-hover:bg-primary/20 transition-colors":""}`,children:[i?(0,t.jsx)(I.ChevronRight,{className:`w-3 h-3 transition-transform ${s?"":"rotate-90"}`}):(0,t.jsx)(E,{className:"w-3 h-3"}),(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("span",{className:"text-muted-foreground",children:A(e.timestampMs)}),i&&s&&"number"==typeof r&&(0,t.jsxs)("span",{className:"ml-1 px-1.5 py-0.5 rounded bg-primary/20 text-[10px] leading-none",children:[r," ",1===r?"entry":"entries"]})]});return i?(0,t.jsxs)("button",{type:"button",onClick:n,className:"group flex items-center gap-3 py-3 px-4 w-full cursor-pointer",children:[(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"}),o,(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"})]}):(0,t.jsxs)("div",{className:"flex items-center gap-3 py-3 px-4",children:[(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"}),o,(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"})]})});var F=e.i(47163);let $={user:"User",assistant:"Assistant","file-history-snapshot":"Snapshot",progress:"Progress",system:"System","queue-operation":"Queue"},D={user:"bg-[color:var(--chart-1)]/20 text-[color:var(--chart-1)] border-[color:var(--chart-1)]/30",assistant:"bg-[color:var(--chart-2)]/20 text-[color:var(--chart-2)] border-[color:var(--chart-2)]/30","file-history-snapshot":"bg-[color:var(--chart-3)]/20 text-[color:var(--chart-3)] border-[color:var(--chart-3)]/30",progress:"bg-[color:var(--chart-5)]/20 text-[color:var(--chart-5)] border-[color:var(--chart-5)]/30",system:"bg-[color:var(--chart-4)]/20 text-[color:var(--chart-4)] border-[color:var(--chart-4)]/30","queue-operation":"bg-primary/20 text-primary border-primary/30"},R={user:"border-l-[color:var(--chart-1)]",assistant:"border-l-[color:var(--chart-2)]","file-history-snapshot":"border-l-[color:var(--chart-3)]",progress:"border-l-[color:var(--chart-5)]",system:"border-l-[color:var(--chart-4)]","queue-operation":"border-l-primary"},U=(0,y.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),q=(0,y.default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);var P=e.i(39616);function W({type:e}){let s="w-4 h-4";switch(e){case"user":return(0,t.jsx)(v,{className:s});case"assistant":return(0,t.jsx)(j,{className:s});case"file-history-snapshot":return(0,t.jsx)(U,{className:s});case"progress":return(0,t.jsx)(q,{className:s});case"system":return(0,t.jsx)(P.Settings,{className:s});case"queue-operation":return(0,t.jsx)(E,{className:s})}}function H({type:e}){return(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs font-mono rounded border ${D[e]}`,children:[(0,t.jsx)(W,{type:e}),$[e]]})}var L=e.i(24380);function _({block:e}){let r=(0,s.useMemo)(()=>JSON.stringify(e.input,null,2),[e]);return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("details",{open:!0,children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:["Input",(0,t.jsx)(L.CopyButton,{text:r})]})}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-64 overflow-y-auto",children:r})]}),e.result?(0,t.jsxs)("div",{className:"border-l-2 border-primary/50 pl-3 space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-block px-2 py-0.5 text-xs font-mono rounded border bg-primary/20 text-primary border-primary/30",children:"Result"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:A(new Date(e.result.timestamp).getTime())})]}),e.result.content&&(0,t.jsxs)("details",{open:!0,children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:["Output",(0,t.jsx)(L.CopyButton,{text:e.result.content})]})}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-48 overflow-y-auto",children:e.result.content})]}),e.result.images?.map((e,s)=>(0,t.jsx)("img",{src:`data:${e.mediaType};base64,${e.base64}`,alt:`Tool result image ${s+1}`,className:"mt-2 max-w-full rounded border border-border"},s))]}):(0,t.jsx)("div",{className:"text-xs text-muted-foreground",children:"Tool did not return a result"})]})}let B=(0,y.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),V=s.default.memo(function({block:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){switch(e.type){case"text":return(0,t.jsx)("p",{className:"whitespace-pre-wrap text-sm",children:e.text});case"tool_use":if("Task"===e.name&&(e.subagentType||e.subagentId)){let a=e.subagentId&&s?s.get(`agent-${e.subagentId}`):void 0;return(0,t.jsx)(Z,{block:e,subagentEntries:a,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o})}return(0,t.jsxs)("div",{className:"border border-border/50 rounded-lg p-3 bg-muted/10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)(b,{className:"w-4 h-4 text-primary flex-shrink-0"}),(0,t.jsx)("span",{className:"font-mono text-sm text-primary truncate min-w-0",children:e.name}),e.result&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground ml-auto flex-shrink-0",children:e.result.durationFormatted})]}),(0,t.jsx)(_,{block:e})]});case"thinking":return(0,t.jsx)("div",{className:"border border-[color:var(--chart-5)]/30 rounded-lg p-3 bg-[color:var(--chart-5)]/5",children:(0,t.jsxs)("details",{children:[(0,t.jsxs)("summary",{className:"flex items-center gap-2 text-xs cursor-pointer hover:text-foreground transition-colors text-[color:var(--chart-5)]",children:[(0,t.jsx)(B,{className:"w-4 h-4"}),(0,t.jsx)("span",{children:"Thinking"}),(0,t.jsxs)("span",{className:"text-muted-foreground ml-1",children:["(",e.thinking.length.toLocaleString()," chars)"]})]}),(0,t.jsx)("p",{className:"mt-2 whitespace-pre-wrap text-xs text-muted-foreground p-2 bg-muted/30 rounded max-h-64 overflow-y-auto",children:e.thinking})]})})}});function K({entry:e}){return(0,t.jsx)("div",{children:e.message.content&&(0,t.jsx)("p",{className:"whitespace-pre-wrap text-sm",children:e.message.content})})}let J=s.default.memo(function({entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){let{content:a}=e.message;return(0,t.jsx)("div",{className:"space-y-3",children:a.map((e,a)=>(0,t.jsx)(V,{block:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o},a))})}),Y=s.default.memo(function({entry:e}){let r=(0,s.useMemo)(()=>{if("progress"===e.type){let t=e.raw.data,s=t?.agentId;return[t?.type,s&&`agent:${s}`].filter(Boolean).join(" | ")}return"file-history-snapshot"===e.type?"File history snapshot":e.type},[e.type,e.raw]);return(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:r}),(0,t.jsxs)("details",{className:"mt-1",children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:"Show raw JSON"}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-64 overflow-y-auto",children:T(e)})]})]})}),X=(0,y.default)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);var Q=e.i(55574);function G({uuid:e}){let r=(0,s.useCallback)(async()=>{window.history.replaceState(null,"",`#entry-${e}`);try{await navigator.clipboard.writeText(window.location.href)}catch{let e=document.createElement("textarea");e.value=window.location.href,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}(0,Q.toast)("Link copied")},[e]);return(0,t.jsx)("button",{onClick:r,title:"Copy link to entry",className:"inline-flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors opacity-0 group-hover:opacity-100 transition-opacity",children:(0,t.jsx)(X,{className:"w-3.5 h-3.5"})})}function Z({block:e,subagentEntries:r,projectName:n,sessionId:i,highlightedUuid:o,autoExpandForUuid:a}){let l=!!(a&&r?.some(e=>e.uuid===a)),[d,c]=(0,s.useState)(l);(0,s.useEffect)(()=>{if(!l)return;let e=requestAnimationFrame(()=>c(!0));return()=>cancelAnimationFrame(e)},[l]);let u=(0,s.useCallback)(()=>{c(e=>!e)},[]),h=r&&r.length>0;return(0,t.jsxs)("div",{className:"border border-border/50 rounded-lg p-3 bg-muted/10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)(M,{className:"w-4 h-4 text-[color:var(--chart-5)]"}),(0,t.jsx)("span",{className:"font-mono text-sm text-[color:var(--chart-5)]",children:"Subagent"}),e.subagentType&&(0,t.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 text-xs font-mono rounded border bg-[color:var(--chart-5)]/20 text-[color:var(--chart-5)] border-[color:var(--chart-5)]/30",children:e.subagentType}),e.result&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground ml-auto",children:e.result.durationFormatted})]}),e.subagentDescription&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-2",children:e.subagentDescription}),e.subagentId&&r&&(0,t.jsxs)("button",{onClick:u,className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded border border-primary/30 bg-primary/10 text-primary hover:bg-primary/20 transition-colors mb-2",children:[(0,t.jsx)(I.ChevronRight,{className:(0,F.cn)("w-3 h-3 transition-transform",d&&"rotate-90")}),(0,t.jsxs)("span",{children:["agent-",e.subagentId]}),(0,t.jsx)("span",{className:"text-muted-foreground",children:d?"Collapse":"View subagent log"})]}),d&&(0,t.jsxs)("div",{className:"ml-4 pl-3 border-l-2 border-primary/30 mt-2 space-y-2",children:[r&&0===r.length&&(0,t.jsx)("div",{className:"text-xs text-muted-foreground py-2",children:"No entries found in subagent log."}),h&&(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(C,{entries:r,compact:!0})}),r&&r.map(e=>"queue-operation"===e.type?(0,t.jsx)(z,{entry:e},e.uuid||e.timestamp):(0,t.jsx)(et,{entry:e,projectName:n,sessionId:i,isHighlighted:!!o&&e.uuid===o},e.uuid||e.timestamp))]}),(0,t.jsx)(_,{block:e})]})}function ee({entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){switch(e.type){case"user":return(0,t.jsx)(K,{entry:e});case"assistant":return(0,t.jsx)(J,{entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o});case"file-history-snapshot":case"progress":case"system":return(0,t.jsx)(Y,{entry:e})}}let et=s.default.memo(function({entry:e,entriesBySource:s,projectName:r,sessionId:n,isHighlighted:i,highlightedUuid:o,autoExpandForUuid:a}){return(0,t.jsxs)("div",{id:e.uuid?`entry-${e.uuid}`:void 0,className:(0,F.cn)(`group border-l-4 ${R[e.type]} bg-card/50 rounded-r-lg mb-2 hover:bg-muted/30 transition-colors`,i&&"entry-highlighted"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-border/30",children:[(0,t.jsx)(H,{type:e.type}),(0,t.jsxs)("div",{className:"flex items-center gap-1 ml-auto",children:[e.uuid&&(0,t.jsx)(G,{uuid:e.uuid}),(0,t.jsx)(L.CopyButton,{text:function(e){switch(e.type){case"user":return e.message.content;case"assistant":return e.message.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");case"file-history-snapshot":case"progress":case"system":return T(e);case"queue-operation":return e.label}}(e)}),(0,t.jsx)("span",{className:"text-xs font-mono text-muted-foreground whitespace-nowrap",children:A(e.timestampMs)})]})]}),(0,t.jsx)("div",{className:"px-4 py-3",children:(0,t.jsx)(ee,{entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:o,autoExpandForUuid:a})})]})},(e,t)=>e.entry===t.entry&&e.entriesBySource===t.entriesBySource&&e.projectName===t.projectName&&e.sessionId===t.sessionId&&e.isHighlighted===t.isHighlighted&&e.highlightedUuid===t.highlightedUuid&&e.autoExpandForUuid===t.autoExpandForUuid);var es=e.i(32194),er=e.i(81418),en=e.i(88092),ei=e.i(51737),eo=e.i(98919),ea=e.i(73520),el=e.i(85881);function ed({decision:e}){return"deny"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-red-500/10 text-red-400 border border-red-500/20",children:[(0,t.jsx)(en.ShieldX,{className:"h-3 w-3"}),"Deny"]}):"instruct"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-amber-500/10 text-amber-400 border border-amber-500/20",children:[(0,t.jsx)(ei.ShieldAlert,{className:"h-3 w-3"}),"Instruct"]}):(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-emerald-500/10 text-emerald-400 border border-emerald-500/20",children:[(0,t.jsx)(er.ShieldCheck,{className:"h-3 w-3"}),"Allow"]})}function ec({eventType:e}){return(0,t.jsx)("span",{className:"inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-medium bg-muted text-muted-foreground border border-border/50",children:e})}function eu({mode:e}){let s="default"===e;return(0,t.jsx)("span",{className:`inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-medium border ${s?"bg-sky-500/10 text-sky-400 border-sky-500/20":"bg-amber-500/10 text-amber-400 border-amber-500/20"}`,children:e})}function eh({ms:e}){return(0,t.jsx)("span",{className:`font-mono text-[0.7rem] ${e>500?"text-red-400":e>100?"text-amber-400":"text-muted-foreground"}`,children:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`})}function em({value:e,onChange:s}){return(0,t.jsx)("div",{className:"inline-flex items-center rounded-md border border-border bg-muted/30 p-0.5",children:[{label:"All",value:""},{label:"Allow",value:"allow"},{label:"Instruct",value:"instruct"},{label:"Deny",value:"deny"}].map(r=>(0,t.jsx)("button",{onClick:()=>s(r.value),className:`px-2.5 py-1 text-[0.65rem] font-medium rounded transition-all ${e===r.value?"deny"===r.value?"bg-red-500/15 text-red-400 shadow-sm":"allow"===r.value?"bg-emerald-500/15 text-emerald-400 shadow-sm":"instruct"===r.value?"bg-amber-500/15 text-amber-400 shadow-sm":"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.label},r.value))})}function ep({item:e}){return(0,t.jsx)("tr",{children:(0,t.jsx)("td",{colSpan:9,className:"px-0 py-0",children:(0,t.jsxs)("div",{className:"px-6 py-3 bg-muted/20 border-t border-border/30 space-y-2 text-xs animate-expand",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-1.5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Session ID: "}),(0,t.jsx)("span",{className:"font-mono text-foreground",children:e.sessionId??"—"}),e.sessionId&&(0,t.jsx)(L.CopyButton,{text:e.sessionId})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"CWD: "}),(0,t.jsx)("span",{className:"font-mono text-foreground",children:e.cwd??"—"}),e.cwd&&(0,t.jsx)(L.CopyButton,{text:e.cwd})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Transcript: "}),(0,t.jsx)("span",{className:"font-mono text-foreground break-all",children:e.transcriptPath??"—"})]})]}),e.reason&&(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Full reason: "}),(0,t.jsx)("span",{className:"text-foreground",children:e.reason})]})]})})})}function ex({sessionId:e,initialData:r}){let{intervalSec:n}=(0,el.useAutoRefresh)(),[i,o]=(0,s.useState)(!1),[a,l]=(0,s.useState)(1),[d,c]=(0,s.useState)(r),[u,h]=(0,s.useState)(null),[m,p]=(0,s.useState)(""),[x,g]=(0,s.useState)(""),[y,b]=(0,s.useState)(""),v=(0,s.useRef)(null),j=(0,s.useRef)({filterDecision:m,filterEventType:x,filterPolicy:y});j.current={filterDecision:m,filterEventType:x,filterPolicy:y};let w=""!==m||""!==x||""!==y,N=(0,s.useCallback)(async t=>{try{let{filterDecision:s,filterEventType:r,filterPolicy:n}=j.current,i=await (0,es.searchHookActivityAction)({sessionId:e,decision:s||void 0,eventType:r||void 0,policyName:n||void 0},t);c(i)}catch{}},[e]);(0,s.useEffect)(()=>{N(a);let e=setInterval(()=>N(a),n>0?1e3*n:5e3);return()=>clearInterval(e)},[a,N,n]),(0,s.useEffect)(()=>(v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{l(1),h(null),N(1)},300),()=>{v.current&&clearTimeout(v.current)}),[m,x,y]);let S=d.entries,M=d.totalPages;return(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>o(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${i?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Hook Logs"})]}),!i&&(0,t.jsxs)("div",{className:"mt-2 bg-card border border-border rounded-lg overflow-hidden shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3 px-4 py-2.5 border-b border-border bg-muted/20",children:[(0,t.jsx)(em,{value:m,onChange:p}),(0,t.jsxs)("select",{value:x,onChange:e=>g(e.target.value),className:"h-7 rounded-md border border-border bg-background px-2 text-xs text-foreground focus:outline-none focus:ring-2 focus:ring-primary/40 focus:border-primary/40 transition-shadow",children:[(0,t.jsx)("option",{value:"",children:"All Events"}),(0,t.jsx)("option",{value:"PreToolUse",children:"PreToolUse"}),(0,t.jsx)("option",{value:"PostToolUse",children:"PostToolUse"}),(0,t.jsx)("option",{value:"SessionStart",children:"SessionStart"}),(0,t.jsx)("option",{value:"SessionEnd",children:"SessionEnd"}),(0,t.jsx)("option",{value:"UserPromptSubmit",children:"UserPromptSubmit"}),(0,t.jsx)("option",{value:"PermissionRequest",children:"PermissionRequest"})]}),(0,t.jsx)("div",{className:"relative",children:(0,t.jsx)("input",{type:"text",value:y,onChange:e=>b(e.target.value),placeholder:"Filter by policy…",className:"h-7 rounded-md border border-border bg-background px-2.5 text-xs text-foreground placeholder:text-muted-foreground w-44 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:border-primary/40 transition-shadow"})})]}),0===S.length?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 px-4",children:[(0,t.jsx)(eo.Shield,{className:"h-10 w-10 text-muted-foreground/30"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mt-3",children:w?"No matching hook events.":"No hook events found."})]}):(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"w-full text-xs",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"text-left text-muted-foreground border-b border-border bg-muted/30",children:[(0,t.jsx)("th",{className:"px-4 py-2.5 font-medium w-6"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Decision"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Event"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Tool"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Policy"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Reason"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Duration"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Mode"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium text-right",children:"Time"})]})}),(0,t.jsx)("tbody",{className:"divide-y divide-border/30",children:S.map((e,r)=>{let n="deny"===e.decision,i=u===r,o="instruct"===e.decision;return(0,t.jsxs)(s.default.Fragment,{children:[(0,t.jsxs)("tr",{onClick:()=>{h(e=>e===r?null:r)},className:`cursor-pointer transition-colors ${n?"bg-red-500/[0.03] hover:bg-red-500/[0.07] border-l-2 border-l-red-500/40":o?"bg-amber-500/[0.03] hover:bg-amber-500/[0.07] border-l-2 border-l-amber-500/40":r%2==0?"hover:bg-muted/30":"bg-muted/[0.04] hover:bg-muted/30"} ${i?"bg-muted/20":""}`,children:[(0,t.jsx)("td",{className:"px-4 py-2",children:(0,t.jsx)(f.ChevronDown,{className:`h-3.5 w-3.5 text-muted-foreground transition-transform duration-150 ${i?"rotate-0":"-rotate-90"}`})}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(ed,{decision:e.decision})}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(ec,{eventType:e.eventType})}),(0,t.jsx)("td",{className:"px-3 py-2 font-mono text-foreground",children:e.toolName??"—"}),(0,t.jsx)("td",{className:"px-3 py-2 font-mono text-foreground",children:e.policyName??"—"}),(0,t.jsx)("td",{className:"px-3 py-2 text-muted-foreground truncate max-w-[240px]",title:e.reason??"",children:e.reason??"—"}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(eh,{ms:e.durationMs})}),(0,t.jsx)("td",{className:"px-3 py-2",children:e.permissionMode?(0,t.jsx)(eu,{mode:e.permissionMode}):"—"}),(0,t.jsx)("td",{className:"px-3 py-2 text-right text-muted-foreground whitespace-nowrap",title:new Date(e.timestamp).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}),children:(0,k.formatRelativeTime)(e.timestamp)})]}),i&&(0,t.jsx)(ep,{item:e})]},`${e.timestamp}-${r}`)})})]})}),(0,t.jsx)(ea.default,{currentPage:a,totalPages:M,onPageChange:e=>{l(e),h(null)}})]})]})}function eg(e){let t=new Map;for(let s of e)if("assistant"===s.type)for(let e of s.message.content){if("tool_use"!==e.type||"Task"===e.name&&(e.subagentType||e.subagentId))continue;let s=t.get(e.name)||{count:0,totalDurationMs:0};s.count++,e.result?.durationMs&&(s.totalDurationMs+=e.result.durationMs),t.set(e.name,s)}return Array.from(t.entries()).map(([e,t])=>({name:e,...t})).sort((e,t)=>t.count-e.count)}function ef({tools:e,compact:s}){return(0,t.jsx)("div",{className:`bg-card border border-border rounded-lg ${s?"p-3":"p-4"}`,children:(0,t.jsx)("div",{className:`grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] ${s?"gap-2":"gap-3"}`,children:e.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)(b,{className:"w-3.5 h-3.5 text-muted-foreground flex-shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:`${s?"text-xs":"text-sm"} font-mono font-medium truncate`,children:e.name}),(0,t.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:[e.count," call",1!==e.count?"s":"",e.totalDurationMs>0&&` \xb7 ${(e.totalDurationMs/1e3).toFixed(1)}s`]})]})]},e.name))})})}function ey(e){return`${e.uuid}-${e.timestampMs}`}function eb(){let e=window.location.hash;return e.startsWith("#entry-")?e.slice(7):null}function ev({entries:e,entriesBySource:n,projectName:i,sessionId:o}){let a=(0,s.useMemo)(()=>Array.from(n.values()).flat(),[n]),[l,c]=(0,s.useState)(new Set),[h,x]=(0,s.useState)(0),[f,y]=(0,s.useState)(()=>eb()),b=(0,s.useRef)(void 0),v=(0,s.useRef)(!1),j=(0,s.useCallback)(e=>{e&&x(e.offsetTop)},[]),w=(0,s.useMemo)(()=>(function(e){let t=new Map,s=null,r=0;for(let n of e)"queue-operation"===n.type?(null!==s&&t.set(s,r),s=ey(n),r=0):null!==s&&r++;return null!==s&&t.set(s,r),t})(e),[e]),N=(0,s.useMemo)(()=>{let t;return t=!1,e.filter(e=>"queue-operation"===e.type?(t=l.has(ey(e)),!0):!t)},[e,l]),S=(0,s.useMemo)(()=>{let e=new Map;return N.forEach((t,s)=>{t.uuid&&e.set(t.uuid,s)}),e},[N]),M=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let s of e)if("assistant"===s.type&&s.uuid)for(let e of s.message.content)"tool_use"===e.type&&"Task"===e.name&&e.subagentId&&t.set(e.subagentId,s.uuid);let s=new Map;for(let r of e){if(!r._source?.startsWith("agent-")||!r.uuid)continue;let e=r._source.slice(6),n=t.get(e);n&&s.set(r.uuid,n)}return s})(a),[a]),k=(0,s.useMemo)(()=>f&&M.has(f)?f:null,[f,M]),C=k?M.get(k)??null:null;(0,s.useEffect)(()=>{if(f)return b.current=setTimeout(()=>y(null),4e3),()=>{b.current&&clearTimeout(b.current)}},[]),(0,s.useEffect)(()=>{let e=()=>{let e=eb();y(e),v.current=!1,b.current&&clearTimeout(b.current),e&&(b.current=setTimeout(()=>y(null),4e3))};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let E=(0,s.useMemo)(()=>{if(!f)return null;let t=C??f,s=e.some(e=>e.uuid===t),r=S.has(t);if(s&&!r){let s=null;for(let r of e)if("queue-operation"===r.type)s=ey(r);else if(r.uuid===t&&s)return s}return null},[f,C,e,S]);(0,s.useEffect)(()=>{if(!E)return;let e=requestAnimationFrame(()=>{c(e=>{if(!e.has(E))return e;let t=new Set(e);return t.delete(E),t})});return()=>cancelAnimationFrame(e)},[E]);let I=(0,s.useCallback)(e=>{c(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),T=function({useFlushSync:e=!0,...t}){let n=s.useReducer(()=>({}),{})[1],i={...t,onChange:(s,i)=>{var o;e&&i?(0,r.flushSync)(n):n(),null==(o=t.onChange)||o.call(t,s,i)}},[o]=s.useState(()=>new p(i));return o.setOptions(i),g(()=>o._didMount(),[]),g(()=>o._willUpdate()),o}({getScrollElement:()=>"u">typeof document?window:null,observeElementRect:d,observeElementOffset:u,scrollToFn:m,initialOffset:()=>"u">typeof document?window.scrollY:0,...{count:N.length,estimateSize:e=>(function(e){switch(e.type){case"queue-operation":return 48;case"user":return 90;case"assistant":return 80+120*e.message.content.length;default:return 100}})(N[e]),overscan:5,scrollMargin:h}});return(0,s.useEffect)(()=>{if(!f||v.current)return;let e=C??f,t=S.get(e);null!=t&&(v.current=!0,requestAnimationFrame(()=>{T.scrollToIndex(t,{align:"center"})}))},[f,C,S,T]),(0,t.jsx)("div",{ref:j,children:(0,t.jsx)("div",{style:{height:`${T.getTotalSize()}px`,width:"100%",position:"relative"},children:T.getVirtualItems().map(e=>{let s=N[e.index],r=!!f&&s.uuid===(C??f);return(0,t.jsx)("div",{"data-index":e.index,ref:T.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${e.start-T.options.scrollMargin}px)`},children:"queue-operation"===s.type?(0,t.jsx)(z,{entry:s,isCollapsed:l.has(ey(s)),entryCount:w.get(ey(s))??0,onToggle:()=>I(ey(s))}):(0,t.jsx)(et,{entry:s,entriesBySource:n,projectName:i,sessionId:o,isHighlighted:!k&&r,highlightedUuid:k,autoExpandForUuid:k})},"queue-operation"===s.type?ey(s):s.uuid||s.timestamp)})})})}let ej=[];e.s([],76248),e.i(76248),e.s(["default",0,function({entries:e,projectName:r,sessionId:n}){let i=(0,s.useMemo)(()=>{let t=new Map;for(let s of e){let e=t.get(s._source);e?e.push(s):t.set(s._source,[s])}return t},[e]),o=i.get("session")??ej,a=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let s of e)if("assistant"===s.type)for(let e of s.message.content)"tool_use"===e.type&&"Task"===e.name&&e.subagentId&&(t.has(e.subagentId)||t.set(e.subagentId,{id:e.subagentId,type:e.subagentType||"unknown",description:e.subagentDescription||""}));return Array.from(t.values())})(e),[e]),l=(0,s.useMemo)(()=>eg(o),[o]),[d,c]=(0,s.useState)(!1),[u,h]=(0,s.useState)(new Set),[m,p]=(0,s.useState)(!1),[x,g]=(0,s.useState)(null);(0,s.useEffect)(()=>{(0,es.searchHookActivityAction)({sessionId:n},1).then(e=>{e.entries.length>0&&g(e)}).catch(()=>{})},[n]),(0,s.useEffect)(()=>{let e=()=>{window.location.hash.startsWith("#entry-")&&p(!1)};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let y=(0,s.useCallback)(e=>{h(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]);return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(C,{entries:o}),x&&(0,t.jsx)(ex,{sessionId:n,initialData:x},n),a.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("button",{onClick:()=>c(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${d?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Subagents"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",a.length,")"]})]}),!d&&a.map(e=>{let s;return(0,t.jsxs)("div",{className:"pl-3 border-l-2 border-primary/30 space-y-2",children:[(0,t.jsxs)("button",{onClick:()=>y(e.id),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-3.5 h-3.5 text-muted-foreground transition-transform ${u.has(e.id)?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-bold",children:e.type}),e.description&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate max-w-[400px]",children:e.description})]}),!u.has(e.id)&&(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(C,{entries:i.get(`agent-${e.id}`)||[],compact:!0}),(s=eg(i.get(`agent-${e.id}`)||[])).length>0?(0,t.jsx)(ef,{tools:s,compact:!0}):null]})]},e.id)})]}),l.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Tools"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",l.reduce((e,t)=>e+t.count,0),")"]})]}),(0,t.jsx)(ef,{tools:l})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>p(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${m?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Logs"})]}),!m&&(0,t.jsx)("div",{className:"mt-2 bg-card border border-border rounded-lg p-4 shadow-sm",children:0===o.length?(0,t.jsx)("p",{className:"text-muted-foreground text-center py-8",children:"No entries found."}):(0,t.jsx)(ev,{entries:o,entriesBySource:i,projectName:r,sessionId:n})})]})]})}],36406)},5780,e=>{e.n(e.i(36406))}]);
|
|
4
|
+
color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,null==s?void 0:s.key)}return(null==s?void 0:s.onChange)&&!(i&&s.skipInitialOnChange)&&s.onChange(r),i=!1,r}return o.updateDeps=e=>{n=e},o}function i(e,t){if(void 0!==e)return e;throw Error(`Unexpected undefined${t?`: ${t}`:""}`)}e.i(47167);let o=e=>e,a=e=>{let t=Math.max(e.startIndex-e.overscan,0),s=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=s;e++)r.push(e);return r},l={passive:!0},d=(e,t)=>{let s=e.scrollElement;if(!s)return;let r=()=>{t({width:s.innerWidth,height:s.innerHeight})};return r(),s.addEventListener("resize",r,l),()=>{s.removeEventListener("resize",r)}},c="u"<typeof window||"onscrollend"in window,u=(e,t)=>{var s,r;let n,i=e.scrollElement;if(!i)return;let o=e.targetWindow;if(!o)return;let a=0,d=e.options.useScrollendEvent&&c?()=>void 0:(s=()=>{t(a,!1)},r=e.options.isScrollingResetDelay,function(...e){o.clearTimeout(n),n=o.setTimeout(()=>s.apply(this,e),r)}),u=s=>()=>{a=i[e.options.horizontal?"scrollX":"scrollY"],d(),t(a,s)},h=u(!0),m=u(!1);i.addEventListener("scroll",h,l);let p=e.options.useScrollendEvent&&c;return p&&i.addEventListener("scrollend",m,l),()=>{i.removeEventListener("scroll",h),p&&i.removeEventListener("scrollend",m)}},h=(e,t,s)=>{if(null==t?void 0:t.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[s.options.horizontal?"inlineSize":"blockSize"])}return e[s.options.horizontal?"offsetWidth":"offsetHeight"]},m=(e,{adjustments:t=0,behavior:s},r)=>{var n,i;null==(i=null==(n=r.scrollElement)?void 0:n.scrollTo)||i.call(n,{[r.options.horizontal?"left":"top"]:e+t,behavior:s})};class p{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e,t,s;return(null==(s=null==(t=null==(e=this.targetWindow)?void 0:e.performance)?void 0:t.now)?void 0:s.call(t))??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(this.targetWindow&&this.targetWindow.ResizeObserver?e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,s=this.indexFromElement(t);t.isConnected?this.shouldMeasureDuringScroll(s)&&this.resizeItem(s,this.options.measureElement(t,e,this)):this.observer.unobserve(t)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}):null);return{disconnect:()=>{var s;null==(s=t())||s.disconnect(),e=null},observe:e=>{var s;return null==(s=t())?void 0:s.observe(e,{box:"border-box"})},unobserve:e=>{var s;return null==(s=t())?void 0:s.unobserve(e)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,s])=>{void 0===s&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:o,rangeExtractor:a,onChange:()=>{},measureElement:h,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var t,s;null==(s=(t=this.options).onChange)||s.call(t,this,e)},this.maybeNotify=n(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),null!=this.rafId&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;let t=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==t){if(this.cleanup(),!t)return void this.maybeNotify();this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=(null==(e=this.scrollElement)?void 0:e.window)??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?"forward":"backward":null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??("function"==typeof this.options.initialOffset?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let s=new Map,r=new Map;for(let n=t-1;n>=0;n--){let t=e[n];if(s.has(t.lane))continue;let i=r.get(t.lane);if(null==i||t.end>i.end?r.set(t.lane,t):t.end<i.end&&s.set(t.lane,!0),s.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=n(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes],(e,t,s,r,n,i)=>(void 0!==this.prevLanes&&this.prevLanes!==i&&(this.lanesChangedFlag=!0),this.prevLanes=i,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:s,getItemKey:r,enabled:n,lanes:i}),{key:!1}),this.getMeasurements=n(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:s,getItemKey:r,enabled:n,lanes:i},o)=>{if(!n)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),0!==this.measurementsCache.length||this.lanesSettling||(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let a=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,a),d=Array(i).fill(void 0);for(let e=0;e<a;e++){let t=l[e];t&&(d[t.lane]=e)}for(let n=a;n<e;n++){let e,i,a=r(n),c=this.laneAssignments.get(n);if(void 0!==c&&this.options.lanes>1){let r=d[e=c],n=void 0!==r?l[r]:void 0;i=n?n.end+this.options.gap:t+s}else{let r=1===this.options.lanes?l[n-1]:this.getFurthestMeasurement(l,n);i=r?r.end+this.options.gap:t+s,e=r?r.lane:n%this.options.lanes,this.options.lanes>1&&this.laneAssignments.set(n,e)}let u=o.get(a),h="number"==typeof u?u:this.options.estimateSize(n),m=i+h;l[n]={index:n,start:i,size:h,end:m,key:a,lane:e},d[e]=n}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=n(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,s,r)=>this.range=e.length>0&&t>0?function({measurements:e,outerSize:t,scrollOffset:s,lanes:r}){let n=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:n};let i=x(0,n,t=>e[t].start,s),o=i;if(1===r)for(;o<n&&e[o].end<s+t;)o++;else if(r>1){let a=Array(r).fill(0);for(;o<n&&a.some(e=>e<s+t);){let t=e[o];a[t.lane]=t.end,o++}let l=Array(r).fill(s+t);for(;i>=0&&l.some(e=>e>=s);){let t=e[i];l[t.lane]=t.start,i--}i=Math.max(0,i-i%r),o=Math.min(n,o+(r-1-o%r))}return{startIndex:i,endIndex:o}}({measurements:e,outerSize:t,scrollOffset:s,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=n(()=>{let e=null,t=null,s=this.calculateRange();return s&&(e=s.startIndex,t=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,s,r,n)=>null===r||null===n?[]:e({startIndex:r,endIndex:n,overscan:t,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,s=e.getAttribute(t);return s?parseInt(s,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{var t;if(!this.scrollState||"smooth"!==this.scrollState.behavior)return!0;let s=this.scrollState.index??(null==(t=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))?void 0:t.index);if(void 0!==s&&this.range){let t=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,s-t),n=Math.min(this.options.count-1,s+t);return e>=r&&e<=n}return!0},this.measureElement=e=>{if(!e)return void this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});let t=this.indexFromElement(e),s=this.options.getItemKey(t),r=this.elementsCache.get(s);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(s,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{var s;let r=this.measurementsCache[e];if(!r)return;let n=t-(this.itemSizeCache.get(r.key)??r.size);0!==n&&((null==(s=this.scrollState)?void 0:s.behavior)!=="smooth"&&(void 0!==this.shouldAdjustScrollPositionOnItemSizeChange?this.shouldAdjustScrollPositionOnItemSizeChange(r,n,this):r.start<this.getScrollOffset()+this.scrollAdjustments)&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=n,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(r.index),this.itemSizeCache=new Map(this.itemSizeCache.set(r.key,t)),this.notify(!1))},this.getVirtualItems=n(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let s=[];for(let r=0,n=e.length;r<n;r++){let n=t[e[r]];s.push(n)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(0!==t.length)return i(t[x(0,t.length-1,e=>i(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,s=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),n=this.getScrollOffset();return"auto"===t&&(t=e>=n+r?"end":"start"),"center"===t?e+=(s-r)/2:"end"===t&&(e-=r),Math.max(Math.min(this.getMaxScrollOffset(),e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));let s=this.getSize(),r=this.getScrollOffset(),n=this.measurementsCache[e];if(!n)return;if("auto"===t)if(n.end>=r+s-this.options.scrollPaddingEnd)t="end";else{if(!(n.start<=r+this.options.scrollPaddingStart))return[r,t];t="start"}if("end"===t&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let i="end"===t?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(i,t,n.size),t]},this.scrollToOffset=(e,{align:t="start",behavior:s="auto"}={})=>{let r=this.getOffsetForAlignment(e,t),n=this.now();this.scrollState={index:null,align:t,behavior:s,startedAt:n,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t="auto",behavior:s="auto"}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[n,i]=r,o=this.now();this.scrollState={index:e,align:i,behavior:s,startedAt:o,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t="auto"}={})=>{let s=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:"start",behavior:t,startedAt:r,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{var e;let t,s=this.getMeasurements();if(0===s.length)t=this.options.paddingStart;else if(1===this.options.lanes)t=(null==(e=s[s.length-1])?void 0:e.end)??0;else{let e=Array(this.options.lanes).fill(null),r=s.length-1;for(;r>=0&&e.some(e=>null===e);){let t=s[r];null===e[t.lane]&&(e[t.lane]=t.end),r--}t=Math.max(...e.filter(e=>null!==e))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:s})=>{this.options.scrollToFn(e,{behavior:s,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}null==this.rafId&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=null!=this.scrollState.index?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,t=e?e[0]:this.scrollState.lastTargetOffset,s=t!==this.scrollState.lastTargetOffset;if(!s&&1.01>Math.abs(t-this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,s&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior="auto",this._scrollToOffset(t,{adjustments:void 0,behavior:"auto"}));this.scheduleScrollReconcile()}}let x=(e,t,s,r)=>{for(;e<=t;){let n=(e+t)/2|0,i=s(n);if(i<r)e=n+1;else{if(!(i>r))return n;t=n-1}}return e>0?e-1:0},g="u">typeof document?s.useLayoutEffect:s.useEffect;var f=e.i(64659),y=e.i(75254);let b=(0,y.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),v=(0,y.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),j=(0,y.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),w=(0,y.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]),N=(0,y.default)("clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]);var S=e.i(86311);let M=(0,y.default)("workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);var k=e.i(34713);let C=s.default.memo(function({entries:e,compact:r=!1}){let n=(0,s.useMemo)(()=>(function(e){let t=0,s=0,r=0,n=0,i=0,o=new Set;for(let a of e)if("user"===a.type&&t++,"queue-operation"===a.type&&i++,"assistant"===a.type){for(let e of(s++,a.message.content))"tool_use"===e.type&&("Task"===e.name&&(e.subagentType||e.subagentId)?n++:r++);a.message.model&&o.add(a.message.model)}let a="";if(e.length>=2){let t=e[e.length-1].timestampMs-e[0].timestampMs;a=(0,k.formatDuration)(t)}return{turnCount:i,userCount:t,assistantCount:s,toolCallCount:r,subagentCount:n,duration:a,models:Array.from(o)}})(e),[e]),i=r?"w-3.5 h-3.5":"w-4 h-4",o=r?"text-xs font-medium":"text-sm font-medium",a=r?"text-[10px] text-muted-foreground":"text-xs text-muted-foreground",l=[...r?[]:[{Icon:S.MessageSquare,color:"text-primary",v:n.turnCount,l:"Turns"}],{Icon:v,color:"text-[color:var(--chart-1)]",v:n.userCount,l:"User"},{Icon:j,color:"text-[color:var(--chart-2)]",v:n.assistantCount,l:"Assistant"},{Icon:b,color:"text-[color:var(--chart-3)]",v:n.toolCallCount,l:r?"Tools":"Tool Calls"},{Icon:M,color:"text-[color:var(--chart-5)]",v:n.subagentCount,l:"Subagents"},{Icon:N,color:"text-[color:var(--chart-4)]",v:n.duration||"—",l:"Duration"},{Icon:w,color:"text-[color:var(--chart-5)]",v:n.models.length>0?n.models.join(", "):"—",l:r?"Model":"Model(s)"}];return(0,t.jsx)("div",{className:r?"bg-muted/30 border border-border/50 rounded-lg p-3 mb-3":"bg-card border border-border rounded-lg p-4",children:(0,t.jsx)("div",{className:`grid grid-cols-2 ${r?"sm:grid-cols-6 gap-3":"sm:grid-cols-4 lg:grid-cols-7 gap-4"}`,children:l.map(({Icon:e,color:s,v:r,l:n})=>(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(e,{className:`${i} ${s}`}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:`${o} truncate max-w-[120px]`,children:r}),(0,t.jsx)("div",{className:a,children:n})]})]},n))})})}),E=(0,y.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);var I=e.i(63059);function T(e){return JSON.stringify(e.raw,null,2)}let O=new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0});function A(e){let t=new Date(e),s=O.format(t),r=t.getMilliseconds().toString().padStart(3,"0");return`${s}.${r}`}let z=s.default.memo(function({entry:e,isCollapsed:s,entryCount:r,onToggle:n}){let i="function"==typeof n,o=(0,t.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 rounded-full bg-primary/10 border border-primary/20 text-primary text-xs font-medium${i?" group-hover:bg-primary/20 transition-colors":""}`,children:[i?(0,t.jsx)(I.ChevronRight,{className:`w-3 h-3 transition-transform ${s?"":"rotate-90"}`}):(0,t.jsx)(E,{className:"w-3 h-3"}),(0,t.jsx)("span",{children:e.label}),(0,t.jsx)("span",{className:"text-muted-foreground",children:A(e.timestampMs)}),i&&s&&"number"==typeof r&&(0,t.jsxs)("span",{className:"ml-1 px-1.5 py-0.5 rounded bg-primary/20 text-[10px] leading-none",children:[r," ",1===r?"entry":"entries"]})]});return i?(0,t.jsxs)("button",{type:"button",onClick:n,className:"group flex items-center gap-3 py-3 px-4 w-full cursor-pointer",children:[(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"}),o,(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"})]}):(0,t.jsxs)("div",{className:"flex items-center gap-3 py-3 px-4",children:[(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"}),o,(0,t.jsx)("div",{className:"flex-1 h-px bg-primary/30"})]})});var F=e.i(47163);let $={user:"User",assistant:"Assistant","file-history-snapshot":"Snapshot",progress:"Progress",system:"System","queue-operation":"Queue"},D={user:"bg-[color:var(--chart-1)]/20 text-[color:var(--chart-1)] border-[color:var(--chart-1)]/30",assistant:"bg-[color:var(--chart-2)]/20 text-[color:var(--chart-2)] border-[color:var(--chart-2)]/30","file-history-snapshot":"bg-[color:var(--chart-3)]/20 text-[color:var(--chart-3)] border-[color:var(--chart-3)]/30",progress:"bg-[color:var(--chart-5)]/20 text-[color:var(--chart-5)] border-[color:var(--chart-5)]/30",system:"bg-[color:var(--chart-4)]/20 text-[color:var(--chart-4)] border-[color:var(--chart-4)]/30","queue-operation":"bg-primary/20 text-primary border-primary/30"},R={user:"border-l-[color:var(--chart-1)]",assistant:"border-l-[color:var(--chart-2)]","file-history-snapshot":"border-l-[color:var(--chart-3)]",progress:"border-l-[color:var(--chart-5)]",system:"border-l-[color:var(--chart-4)]","queue-operation":"border-l-primary"},U=(0,y.default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),q=(0,y.default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);var P=e.i(39616);function W({type:e}){let s="w-4 h-4";switch(e){case"user":return(0,t.jsx)(v,{className:s});case"assistant":return(0,t.jsx)(j,{className:s});case"file-history-snapshot":return(0,t.jsx)(U,{className:s});case"progress":return(0,t.jsx)(q,{className:s});case"system":return(0,t.jsx)(P.Settings,{className:s});case"queue-operation":return(0,t.jsx)(E,{className:s})}}function H({type:e}){return(0,t.jsxs)("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-xs font-mono rounded border ${D[e]}`,children:[(0,t.jsx)(W,{type:e}),$[e]]})}var L=e.i(24380);function _({block:e}){let r=(0,s.useMemo)(()=>JSON.stringify(e.input,null,2),[e]);return(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("details",{open:!0,children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:["Input",(0,t.jsx)(L.CopyButton,{text:r})]})}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-64 overflow-y-auto",children:r})]}),e.result?(0,t.jsxs)("div",{className:"border-l-2 border-primary/50 pl-3 space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"inline-block px-2 py-0.5 text-xs font-mono rounded border bg-primary/20 text-primary border-primary/30",children:"Result"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:A(new Date(e.result.timestamp).getTime())})]}),e.result.content&&(0,t.jsxs)("details",{open:!0,children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:(0,t.jsxs)("span",{className:"inline-flex items-center gap-1",children:["Output",(0,t.jsx)(L.CopyButton,{text:e.result.content})]})}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-48 overflow-y-auto",children:e.result.content})]}),e.result.images?.map((e,s)=>(0,t.jsx)("img",{src:`data:${e.mediaType};base64,${e.base64}`,alt:`Tool result image ${s+1}`,className:"mt-2 max-w-full rounded border border-border"},s))]}):(0,t.jsx)("div",{className:"text-xs text-muted-foreground",children:"Tool did not return a result"})]})}let B=(0,y.default)("brain",[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]]),V=s.default.memo(function({block:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){switch(e.type){case"text":return(0,t.jsx)("p",{className:"whitespace-pre-wrap text-sm",children:e.text});case"tool_use":if("Task"===e.name&&(e.subagentType||e.subagentId)){let a=e.subagentId&&s?s.get(`agent-${e.subagentId}`):void 0;return(0,t.jsx)(Z,{block:e,subagentEntries:a,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o})}return(0,t.jsxs)("div",{className:"border border-border/50 rounded-lg p-3 bg-muted/10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)(b,{className:"w-4 h-4 text-primary flex-shrink-0"}),(0,t.jsx)("span",{className:"font-mono text-sm text-primary truncate min-w-0",children:e.name}),e.result&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground ml-auto flex-shrink-0",children:e.result.durationFormatted})]}),(0,t.jsx)(_,{block:e})]});case"thinking":return(0,t.jsx)("div",{className:"border border-[color:var(--chart-5)]/30 rounded-lg p-3 bg-[color:var(--chart-5)]/5",children:(0,t.jsxs)("details",{children:[(0,t.jsxs)("summary",{className:"flex items-center gap-2 text-xs cursor-pointer hover:text-foreground transition-colors text-[color:var(--chart-5)]",children:[(0,t.jsx)(B,{className:"w-4 h-4"}),(0,t.jsx)("span",{children:"Thinking"}),(0,t.jsxs)("span",{className:"text-muted-foreground ml-1",children:["(",e.thinking.length.toLocaleString()," chars)"]})]}),(0,t.jsx)("p",{className:"mt-2 whitespace-pre-wrap text-xs text-muted-foreground p-2 bg-muted/30 rounded max-h-64 overflow-y-auto",children:e.thinking})]})})}});function K({entry:e}){return(0,t.jsx)("div",{children:e.message.content&&(0,t.jsx)("p",{className:"whitespace-pre-wrap text-sm",children:e.message.content})})}let J=s.default.memo(function({entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){let{content:a}=e.message;return(0,t.jsx)("div",{className:"space-y-3",children:a.map((e,a)=>(0,t.jsx)(V,{block:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o},a))})}),Y=s.default.memo(function({entry:e}){let r=(0,s.useMemo)(()=>{if("progress"===e.type){let t=e.raw.data,s=t?.agentId;return[t?.type,s&&`agent:${s}`].filter(Boolean).join(" | ")}return"file-history-snapshot"===e.type?"File history snapshot":e.type},[e.type,e.raw]);return(0,t.jsxs)("div",{className:"text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:r}),(0,t.jsxs)("details",{className:"mt-1",children:[(0,t.jsx)("summary",{className:"text-xs text-muted-foreground cursor-pointer hover:text-foreground transition-colors",children:"Show raw JSON"}),(0,t.jsx)("pre",{className:"mt-1 p-2 bg-muted/50 rounded text-xs whitespace-pre-wrap break-words max-h-64 overflow-y-auto",children:T(e)})]})]})}),X=(0,y.default)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);var Q=e.i(55574);function G({uuid:e}){let r=(0,s.useCallback)(async()=>{window.history.replaceState(null,"",`#entry-${e}`);try{await navigator.clipboard.writeText(window.location.href)}catch{let e=document.createElement("textarea");e.value=window.location.href,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}(0,Q.toast)("Link copied")},[e]);return(0,t.jsx)("button",{onClick:r,title:"Copy link to entry",className:"inline-flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-muted/80 transition-colors opacity-0 group-hover:opacity-100 transition-opacity",children:(0,t.jsx)(X,{className:"w-3.5 h-3.5"})})}function Z({block:e,subagentEntries:r,projectName:n,sessionId:i,highlightedUuid:o,autoExpandForUuid:a}){let l=!!(a&&r?.some(e=>e.uuid===a)),[d,c]=(0,s.useState)(l);(0,s.useEffect)(()=>{if(!l)return;let e=requestAnimationFrame(()=>c(!0));return()=>cancelAnimationFrame(e)},[l]);let u=(0,s.useCallback)(()=>{c(e=>!e)},[]),h=r&&r.length>0;return(0,t.jsxs)("div",{className:"border border-border/50 rounded-lg p-3 bg-muted/10",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)(M,{className:"w-4 h-4 text-[color:var(--chart-5)]"}),(0,t.jsx)("span",{className:"font-mono text-sm text-[color:var(--chart-5)]",children:"Subagent"}),e.subagentType&&(0,t.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 text-xs font-mono rounded border bg-[color:var(--chart-5)]/20 text-[color:var(--chart-5)] border-[color:var(--chart-5)]/30",children:e.subagentType}),e.result&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground ml-auto",children:e.result.durationFormatted})]}),e.subagentDescription&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-2",children:e.subagentDescription}),e.subagentId&&r&&(0,t.jsxs)("button",{onClick:u,className:"inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded border border-primary/30 bg-primary/10 text-primary hover:bg-primary/20 transition-colors mb-2",children:[(0,t.jsx)(I.ChevronRight,{className:(0,F.cn)("w-3 h-3 transition-transform",d&&"rotate-90")}),(0,t.jsxs)("span",{children:["agent-",e.subagentId]}),(0,t.jsx)("span",{className:"text-muted-foreground",children:d?"Collapse":"View subagent log"})]}),d&&(0,t.jsxs)("div",{className:"ml-4 pl-3 border-l-2 border-primary/30 mt-2 space-y-2",children:[r&&0===r.length&&(0,t.jsx)("div",{className:"text-xs text-muted-foreground py-2",children:"No entries found in subagent log."}),h&&(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(C,{entries:r,compact:!0})}),r&&r.map(e=>"queue-operation"===e.type?(0,t.jsx)(z,{entry:e},e.uuid||e.timestamp):(0,t.jsx)(et,{entry:e,projectName:n,sessionId:i,isHighlighted:!!o&&e.uuid===o},e.uuid||e.timestamp))]}),(0,t.jsx)(_,{block:e})]})}function ee({entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o}){switch(e.type){case"user":return(0,t.jsx)(K,{entry:e});case"assistant":return(0,t.jsx)(J,{entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:i,autoExpandForUuid:o});case"file-history-snapshot":case"progress":case"system":return(0,t.jsx)(Y,{entry:e})}}let et=s.default.memo(function({entry:e,entriesBySource:s,projectName:r,sessionId:n,isHighlighted:i,highlightedUuid:o,autoExpandForUuid:a}){return(0,t.jsxs)("div",{id:e.uuid?`entry-${e.uuid}`:void 0,className:(0,F.cn)(`group border-l-4 ${R[e.type]} bg-card/50 rounded-r-lg mb-2 hover:bg-muted/30 transition-colors`,i&&"entry-highlighted"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-border/30",children:[(0,t.jsx)(H,{type:e.type}),(0,t.jsxs)("div",{className:"flex items-center gap-1 ml-auto",children:[e.uuid&&(0,t.jsx)(G,{uuid:e.uuid}),(0,t.jsx)(L.CopyButton,{text:function(e){switch(e.type){case"user":return e.message.content;case"assistant":return e.message.content.filter(e=>"text"===e.type).map(e=>e.text).join("\n");case"file-history-snapshot":case"progress":case"system":return T(e);case"queue-operation":return e.label}}(e)}),(0,t.jsx)("span",{className:"text-xs font-mono text-muted-foreground whitespace-nowrap",children:A(e.timestampMs)})]})]}),(0,t.jsx)("div",{className:"px-4 py-3",children:(0,t.jsx)(ee,{entry:e,entriesBySource:s,projectName:r,sessionId:n,highlightedUuid:o,autoExpandForUuid:a})})]})},(e,t)=>e.entry===t.entry&&e.entriesBySource===t.entriesBySource&&e.projectName===t.projectName&&e.sessionId===t.sessionId&&e.isHighlighted===t.isHighlighted&&e.highlightedUuid===t.highlightedUuid&&e.autoExpandForUuid===t.autoExpandForUuid);var es=e.i(19356),er=e.i(81418),en=e.i(88092),ei=e.i(51737),eo=e.i(98919),ea=e.i(73520),el=e.i(85881);function ed({decision:e}){return"deny"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-red-500/10 text-red-400 border border-red-500/20",children:[(0,t.jsx)(en.ShieldX,{className:"h-3 w-3"}),"Deny"]}):"instruct"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-amber-500/10 text-amber-400 border border-amber-500/20",children:[(0,t.jsx)(ei.ShieldAlert,{className:"h-3 w-3"}),"Instruct"]}):(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase bg-emerald-500/10 text-emerald-400 border border-emerald-500/20",children:[(0,t.jsx)(er.ShieldCheck,{className:"h-3 w-3"}),"Allow"]})}function ec({eventType:e}){return(0,t.jsx)("span",{className:"inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-medium bg-muted text-muted-foreground border border-border/50",children:e})}function eu({mode:e}){let s="default"===e;return(0,t.jsx)("span",{className:`inline-flex items-center rounded px-1.5 py-0.5 text-[0.6rem] font-medium border ${s?"bg-sky-500/10 text-sky-400 border-sky-500/20":"bg-amber-500/10 text-amber-400 border-amber-500/20"}`,children:e})}function eh({ms:e}){return(0,t.jsx)("span",{className:`font-mono text-[0.7rem] ${e>500?"text-red-400":e>100?"text-amber-400":"text-muted-foreground"}`,children:e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`})}function em({value:e,onChange:s}){return(0,t.jsx)("div",{className:"inline-flex items-center rounded-md border border-border bg-muted/30 p-0.5",children:[{label:"All",value:""},{label:"Allow",value:"allow"},{label:"Instruct",value:"instruct"},{label:"Deny",value:"deny"}].map(r=>(0,t.jsx)("button",{onClick:()=>s(r.value),className:`px-2.5 py-1 text-[0.65rem] font-medium rounded transition-all ${e===r.value?"deny"===r.value?"bg-red-500/15 text-red-400 shadow-sm":"allow"===r.value?"bg-emerald-500/15 text-emerald-400 shadow-sm":"instruct"===r.value?"bg-amber-500/15 text-amber-400 shadow-sm":"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.label},r.value))})}function ep({item:e}){return(0,t.jsx)("tr",{children:(0,t.jsx)("td",{colSpan:9,className:"px-0 py-0",children:(0,t.jsxs)("div",{className:"px-6 py-3 bg-muted/20 border-t border-border/30 space-y-2 text-xs animate-expand",children:[(0,t.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-1.5",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Session ID: "}),(0,t.jsx)("span",{className:"font-mono text-foreground",children:e.sessionId??"—"}),e.sessionId&&(0,t.jsx)(L.CopyButton,{text:e.sessionId})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"CWD: "}),(0,t.jsx)("span",{className:"font-mono text-foreground",children:e.cwd??"—"}),e.cwd&&(0,t.jsx)(L.CopyButton,{text:e.cwd})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Transcript: "}),(0,t.jsx)("span",{className:"font-mono text-foreground break-all",children:e.transcriptPath??"—"})]})]}),e.reason&&(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Full reason: "}),(0,t.jsx)("span",{className:"text-foreground",children:e.reason})]})]})})})}function ex({sessionId:e,initialData:r}){let{intervalSec:n}=(0,el.useAutoRefresh)(),[i,o]=(0,s.useState)(!1),[a,l]=(0,s.useState)(1),[d,c]=(0,s.useState)(r),[u,h]=(0,s.useState)(null),[m,p]=(0,s.useState)(""),[x,g]=(0,s.useState)(""),[y,b]=(0,s.useState)(""),v=(0,s.useRef)(null),j=(0,s.useRef)({filterDecision:m,filterEventType:x,filterPolicy:y});j.current={filterDecision:m,filterEventType:x,filterPolicy:y};let w=""!==m||""!==x||""!==y,N=(0,s.useCallback)(async t=>{try{let{filterDecision:s,filterEventType:r,filterPolicy:n}=j.current,i=await (0,es.searchHookActivityAction)({sessionId:e,decision:s||void 0,eventType:r||void 0,policyName:n||void 0},t);c(i)}catch{}},[e]);(0,s.useEffect)(()=>{N(a);let e=setInterval(()=>N(a),n>0?1e3*n:5e3);return()=>clearInterval(e)},[a,N,n]),(0,s.useEffect)(()=>(v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{l(1),h(null),N(1)},300),()=>{v.current&&clearTimeout(v.current)}),[m,x,y]);let S=d.entries,M=d.totalPages;return(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>o(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${i?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Hook Logs"})]}),!i&&(0,t.jsxs)("div",{className:"mt-2 bg-card border border-border rounded-lg overflow-hidden shadow-sm",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3 px-4 py-2.5 border-b border-border bg-muted/20",children:[(0,t.jsx)(em,{value:m,onChange:p}),(0,t.jsxs)("select",{value:x,onChange:e=>g(e.target.value),className:"h-7 rounded-md border border-border bg-background px-2 text-xs text-foreground focus:outline-none focus:ring-2 focus:ring-primary/40 focus:border-primary/40 transition-shadow",children:[(0,t.jsx)("option",{value:"",children:"All Events"}),(0,t.jsx)("option",{value:"PreToolUse",children:"PreToolUse"}),(0,t.jsx)("option",{value:"PostToolUse",children:"PostToolUse"}),(0,t.jsx)("option",{value:"SessionStart",children:"SessionStart"}),(0,t.jsx)("option",{value:"SessionEnd",children:"SessionEnd"}),(0,t.jsx)("option",{value:"UserPromptSubmit",children:"UserPromptSubmit"}),(0,t.jsx)("option",{value:"PermissionRequest",children:"PermissionRequest"})]}),(0,t.jsx)("div",{className:"relative",children:(0,t.jsx)("input",{type:"text",value:y,onChange:e=>b(e.target.value),placeholder:"Filter by policy…",className:"h-7 rounded-md border border-border bg-background px-2.5 text-xs text-foreground placeholder:text-muted-foreground w-44 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:border-primary/40 transition-shadow"})})]}),0===S.length?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 px-4",children:[(0,t.jsx)(eo.Shield,{className:"h-10 w-10 text-muted-foreground/30"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mt-3",children:w?"No matching hook events.":"No hook events found."})]}):(0,t.jsx)("div",{className:"overflow-x-auto",children:(0,t.jsxs)("table",{className:"w-full text-xs",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{className:"text-left text-muted-foreground border-b border-border bg-muted/30",children:[(0,t.jsx)("th",{className:"px-4 py-2.5 font-medium w-6"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Decision"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Event"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Tool"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Policy"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Reason"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Duration"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium",children:"Mode"}),(0,t.jsx)("th",{className:"px-3 py-2.5 font-medium text-right",children:"Time"})]})}),(0,t.jsx)("tbody",{className:"divide-y divide-border/30",children:S.map((e,r)=>{let n="deny"===e.decision,i=u===r,o="instruct"===e.decision;return(0,t.jsxs)(s.default.Fragment,{children:[(0,t.jsxs)("tr",{onClick:()=>{h(e=>e===r?null:r)},className:`cursor-pointer transition-colors ${n?"bg-red-500/[0.03] hover:bg-red-500/[0.07] border-l-2 border-l-red-500/40":o?"bg-amber-500/[0.03] hover:bg-amber-500/[0.07] border-l-2 border-l-amber-500/40":r%2==0?"hover:bg-muted/30":"bg-muted/[0.04] hover:bg-muted/30"} ${i?"bg-muted/20":""}`,children:[(0,t.jsx)("td",{className:"px-4 py-2",children:(0,t.jsx)(f.ChevronDown,{className:`h-3.5 w-3.5 text-muted-foreground transition-transform duration-150 ${i?"rotate-0":"-rotate-90"}`})}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(ed,{decision:e.decision})}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(ec,{eventType:e.eventType})}),(0,t.jsx)("td",{className:"px-3 py-2 font-mono text-foreground",children:e.toolName??"—"}),(0,t.jsx)("td",{className:"px-3 py-2 font-mono text-foreground",children:e.policyName??"—"}),(0,t.jsx)("td",{className:"px-3 py-2 text-muted-foreground truncate max-w-[240px]",title:e.reason??"",children:e.reason??"—"}),(0,t.jsx)("td",{className:"px-3 py-2",children:(0,t.jsx)(eh,{ms:e.durationMs})}),(0,t.jsx)("td",{className:"px-3 py-2",children:e.permissionMode?(0,t.jsx)(eu,{mode:e.permissionMode}):"—"}),(0,t.jsx)("td",{className:"px-3 py-2 text-right text-muted-foreground whitespace-nowrap",title:new Date(e.timestamp).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}),children:(0,k.formatRelativeTime)(e.timestamp)})]}),i&&(0,t.jsx)(ep,{item:e})]},`${e.timestamp}-${r}`)})})]})}),(0,t.jsx)(ea.default,{currentPage:a,totalPages:M,onPageChange:e=>{l(e),h(null)}})]})]})}function eg(e){let t=new Map;for(let s of e)if("assistant"===s.type)for(let e of s.message.content){if("tool_use"!==e.type||"Task"===e.name&&(e.subagentType||e.subagentId))continue;let s=t.get(e.name)||{count:0,totalDurationMs:0};s.count++,e.result?.durationMs&&(s.totalDurationMs+=e.result.durationMs),t.set(e.name,s)}return Array.from(t.entries()).map(([e,t])=>({name:e,...t})).sort((e,t)=>t.count-e.count)}function ef({tools:e,compact:s}){return(0,t.jsx)("div",{className:`bg-card border border-border rounded-lg ${s?"p-3":"p-4"}`,children:(0,t.jsx)("div",{className:`grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] ${s?"gap-2":"gap-3"}`,children:e.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)(b,{className:"w-3.5 h-3.5 text-muted-foreground flex-shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:`${s?"text-xs":"text-sm"} font-mono font-medium truncate`,children:e.name}),(0,t.jsxs)("div",{className:"text-xs text-muted-foreground truncate",children:[e.count," call",1!==e.count?"s":"",e.totalDurationMs>0&&` \xb7 ${(e.totalDurationMs/1e3).toFixed(1)}s`]})]})]},e.name))})})}function ey(e){return`${e.uuid}-${e.timestampMs}`}function eb(){let e=window.location.hash;return e.startsWith("#entry-")?e.slice(7):null}function ev({entries:e,entriesBySource:n,projectName:i,sessionId:o}){let a=(0,s.useMemo)(()=>Array.from(n.values()).flat(),[n]),[l,c]=(0,s.useState)(new Set),[h,x]=(0,s.useState)(0),[f,y]=(0,s.useState)(()=>eb()),b=(0,s.useRef)(void 0),v=(0,s.useRef)(!1),j=(0,s.useCallback)(e=>{e&&x(e.offsetTop)},[]),w=(0,s.useMemo)(()=>(function(e){let t=new Map,s=null,r=0;for(let n of e)"queue-operation"===n.type?(null!==s&&t.set(s,r),s=ey(n),r=0):null!==s&&r++;return null!==s&&t.set(s,r),t})(e),[e]),N=(0,s.useMemo)(()=>{let t;return t=!1,e.filter(e=>"queue-operation"===e.type?(t=l.has(ey(e)),!0):!t)},[e,l]),S=(0,s.useMemo)(()=>{let e=new Map;return N.forEach((t,s)=>{t.uuid&&e.set(t.uuid,s)}),e},[N]),M=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let s of e)if("assistant"===s.type&&s.uuid)for(let e of s.message.content)"tool_use"===e.type&&"Task"===e.name&&e.subagentId&&t.set(e.subagentId,s.uuid);let s=new Map;for(let r of e){if(!r._source?.startsWith("agent-")||!r.uuid)continue;let e=r._source.slice(6),n=t.get(e);n&&s.set(r.uuid,n)}return s})(a),[a]),k=(0,s.useMemo)(()=>f&&M.has(f)?f:null,[f,M]),C=k?M.get(k)??null:null;(0,s.useEffect)(()=>{if(f)return b.current=setTimeout(()=>y(null),4e3),()=>{b.current&&clearTimeout(b.current)}},[]),(0,s.useEffect)(()=>{let e=()=>{let e=eb();y(e),v.current=!1,b.current&&clearTimeout(b.current),e&&(b.current=setTimeout(()=>y(null),4e3))};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let E=(0,s.useMemo)(()=>{if(!f)return null;let t=C??f,s=e.some(e=>e.uuid===t),r=S.has(t);if(s&&!r){let s=null;for(let r of e)if("queue-operation"===r.type)s=ey(r);else if(r.uuid===t&&s)return s}return null},[f,C,e,S]);(0,s.useEffect)(()=>{if(!E)return;let e=requestAnimationFrame(()=>{c(e=>{if(!e.has(E))return e;let t=new Set(e);return t.delete(E),t})});return()=>cancelAnimationFrame(e)},[E]);let I=(0,s.useCallback)(e=>{c(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),T=function({useFlushSync:e=!0,...t}){let n=s.useReducer(()=>({}),{})[1],i={...t,onChange:(s,i)=>{var o;e&&i?(0,r.flushSync)(n):n(),null==(o=t.onChange)||o.call(t,s,i)}},[o]=s.useState(()=>new p(i));return o.setOptions(i),g(()=>o._didMount(),[]),g(()=>o._willUpdate()),o}({getScrollElement:()=>"u">typeof document?window:null,observeElementRect:d,observeElementOffset:u,scrollToFn:m,initialOffset:()=>"u">typeof document?window.scrollY:0,...{count:N.length,estimateSize:e=>(function(e){switch(e.type){case"queue-operation":return 48;case"user":return 90;case"assistant":return 80+120*e.message.content.length;default:return 100}})(N[e]),overscan:5,scrollMargin:h}});return(0,s.useEffect)(()=>{if(!f||v.current)return;let e=C??f,t=S.get(e);null!=t&&(v.current=!0,requestAnimationFrame(()=>{T.scrollToIndex(t,{align:"center"})}))},[f,C,S,T]),(0,t.jsx)("div",{ref:j,children:(0,t.jsx)("div",{style:{height:`${T.getTotalSize()}px`,width:"100%",position:"relative"},children:T.getVirtualItems().map(e=>{let s=N[e.index],r=!!f&&s.uuid===(C??f);return(0,t.jsx)("div",{"data-index":e.index,ref:T.measureElement,style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${e.start-T.options.scrollMargin}px)`},children:"queue-operation"===s.type?(0,t.jsx)(z,{entry:s,isCollapsed:l.has(ey(s)),entryCount:w.get(ey(s))??0,onToggle:()=>I(ey(s))}):(0,t.jsx)(et,{entry:s,entriesBySource:n,projectName:i,sessionId:o,isHighlighted:!k&&r,highlightedUuid:k,autoExpandForUuid:k})},"queue-operation"===s.type?ey(s):s.uuid||s.timestamp)})})})}let ej=[];e.s([],76248),e.i(76248),e.s(["default",0,function({entries:e,projectName:r,sessionId:n}){let i=(0,s.useMemo)(()=>{let t=new Map;for(let s of e){let e=t.get(s._source);e?e.push(s):t.set(s._source,[s])}return t},[e]),o=i.get("session")??ej,a=(0,s.useMemo)(()=>(function(e){let t=new Map;for(let s of e)if("assistant"===s.type)for(let e of s.message.content)"tool_use"===e.type&&"Task"===e.name&&e.subagentId&&(t.has(e.subagentId)||t.set(e.subagentId,{id:e.subagentId,type:e.subagentType||"unknown",description:e.subagentDescription||""}));return Array.from(t.values())})(e),[e]),l=(0,s.useMemo)(()=>eg(o),[o]),[d,c]=(0,s.useState)(!1),[u,h]=(0,s.useState)(new Set),[m,p]=(0,s.useState)(!1),[x,g]=(0,s.useState)(null);(0,s.useEffect)(()=>{(0,es.searchHookActivityAction)({sessionId:n},1).then(e=>{e.entries.length>0&&g(e)}).catch(()=>{})},[n]),(0,s.useEffect)(()=>{let e=()=>{window.location.hash.startsWith("#entry-")&&p(!1)};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let y=(0,s.useCallback)(e=>{h(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]);return(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(C,{entries:o}),x&&(0,t.jsx)(ex,{sessionId:n,initialData:x},n),a.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("button",{onClick:()=>c(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${d?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Subagents"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",a.length,")"]})]}),!d&&a.map(e=>{let s;return(0,t.jsxs)("div",{className:"pl-3 border-l-2 border-primary/30 space-y-2",children:[(0,t.jsxs)("button",{onClick:()=>y(e.id),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-3.5 h-3.5 text-muted-foreground transition-transform ${u.has(e.id)?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-bold",children:e.type}),e.description&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate max-w-[400px]",children:e.description})]}),!u.has(e.id)&&(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(C,{entries:i.get(`agent-${e.id}`)||[],compact:!0}),(s=eg(i.get(`agent-${e.id}`)||[])).length>0?(0,t.jsx)(ef,{tools:s,compact:!0}):null]})]},e.id)})]}),l.length>0&&(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Tools"}),(0,t.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",l.reduce((e,t)=>e+t.count,0),")"]})]}),(0,t.jsx)(ef,{tools:l})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("button",{onClick:()=>p(e=>!e),className:"flex items-center gap-2 hover:opacity-80 transition-opacity",children:[(0,t.jsx)(f.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${m?"-rotate-90":""}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"Logs"})]}),!m&&(0,t.jsx)("div",{className:"mt-2 bg-card border border-border rounded-lg p-4 shadow-sm",children:0===o.length?(0,t.jsx)("p",{className:"text-muted-foreground text-center py-8",children:"No entries found."}):(0,t.jsx)(ev,{entries:o,entriesBySource:i,projectName:r,sessionId:n})})]})]})}],36406)},5780,e=>{e.n(e.i(36406))}]);
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
* --hook <event> Hook event from Claude Code (minimal startup latency)
|
|
7
7
|
* --version / -v Print version and exit
|
|
8
8
|
* --help / -h Show usage and exit
|
|
9
|
-
*
|
|
10
|
-
* --remove-policies Remove hooks or disable policies from Claude Code settings
|
|
11
|
-
* --list-policies List available policies and their status
|
|
9
|
+
* policies Manage policies (list / install / uninstall)
|
|
12
10
|
* (default) Launch production dashboard
|
|
13
11
|
*/
|
|
14
12
|
import { realpathSync } from "node:fs";
|
|
@@ -28,8 +26,9 @@ if (!process.env.FAILPROOFAI_PACKAGE_ROOT) {
|
|
|
28
26
|
|
|
29
27
|
const args = process.argv.slice(2);
|
|
30
28
|
|
|
31
|
-
// --help / -h
|
|
32
|
-
|
|
29
|
+
// --help / -h (only when not inside a subcommand that handles its own --help)
|
|
30
|
+
const SUBCOMMANDS = ["policies"];
|
|
31
|
+
if ((args.includes("--help") || args.includes("-h")) && !SUBCOMMANDS.includes(args[0])) {
|
|
33
32
|
console.log(`
|
|
34
33
|
failproofai v${version}
|
|
35
34
|
|
|
@@ -39,28 +38,36 @@ USAGE
|
|
|
39
38
|
COMMANDS
|
|
40
39
|
(no args) Launch the policy dashboard
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
policies List all available policies and their status
|
|
42
|
+
policies --install, -i Enable policies in Claude Code settings
|
|
43
|
+
[names...] Specific policy names to enable
|
|
43
44
|
--scope user|project|local Config scope to write to (default: user)
|
|
44
45
|
--beta Include beta policies
|
|
45
|
-
--custom <path>
|
|
46
|
+
--custom, -c <path> Path to a JS file of custom policies
|
|
46
47
|
|
|
47
|
-
--
|
|
48
|
+
policies --uninstall, -u Disable policies or remove hooks
|
|
49
|
+
[names...] Specific policy names to disable
|
|
48
50
|
--scope user|project|local|all Config scope to remove from (default: user)
|
|
49
51
|
--beta Remove only beta policies
|
|
50
|
-
--custom
|
|
52
|
+
--custom, -c Clear the customPoliciesPath from config
|
|
51
53
|
|
|
52
|
-
--
|
|
54
|
+
policies --help, -h Show this help for the policies command
|
|
53
55
|
|
|
54
56
|
--version, -v Print version and exit
|
|
55
57
|
--help, -h Show this help message
|
|
56
58
|
|
|
57
59
|
EXAMPLES
|
|
58
|
-
failproofai
|
|
59
|
-
failproofai
|
|
60
|
-
failproofai --install-
|
|
61
|
-
failproofai --
|
|
62
|
-
failproofai
|
|
63
|
-
failproofai --
|
|
60
|
+
failproofai policies
|
|
61
|
+
failproofai policies --install
|
|
62
|
+
failproofai policies --install block-sudo sanitize-api-keys --scope project
|
|
63
|
+
failproofai policies --install --custom ./my-policies.js
|
|
64
|
+
failproofai policies -i -c ./my-policies.js
|
|
65
|
+
failproofai policies --uninstall block-sudo
|
|
66
|
+
failproofai policies --uninstall --custom
|
|
67
|
+
|
|
68
|
+
LINKS
|
|
69
|
+
⭐ Star us: https://github.com/exospherehost/failproofai
|
|
70
|
+
📖 Docs: https://befailproof.ai
|
|
64
71
|
`.trimStart());
|
|
65
72
|
process.exit(0);
|
|
66
73
|
}
|
|
@@ -79,70 +86,121 @@ if (hookIdx >= 0 && args[hookIdx + 1]) {
|
|
|
79
86
|
process.exit(exitCode);
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
// --install
|
|
83
|
-
if (args
|
|
84
|
-
const
|
|
89
|
+
// policies [--install|-i|--uninstall|-u|--help|-h] [names...] [--scope] [--beta] [--custom|-c <path>]
|
|
90
|
+
if (args[0] === "policies") {
|
|
91
|
+
const subArgs = args.slice(1);
|
|
85
92
|
|
|
86
|
-
const
|
|
87
|
-
const
|
|
93
|
+
const isInstall = subArgs.includes("--install") || subArgs.includes("-i");
|
|
94
|
+
const isUninstall = subArgs.includes("--uninstall") || subArgs.includes("-u");
|
|
95
|
+
const isHelp = subArgs.includes("--help") || subArgs.includes("-h");
|
|
88
96
|
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
if (isHelp) {
|
|
98
|
+
console.log(`
|
|
99
|
+
failproofai policies — manage Failproof AI policies
|
|
91
100
|
|
|
92
|
-
|
|
101
|
+
USAGE
|
|
102
|
+
failproofai policies List all policies and their status
|
|
103
|
+
failproofai policies --install, -i Enable policies
|
|
104
|
+
failproofai policies --uninstall, -u Disable policies or remove hooks
|
|
105
|
+
|
|
106
|
+
OPTIONS (install)
|
|
107
|
+
[names...] Specific policy names to enable (omit for interactive)
|
|
108
|
+
--scope user|project|local Config scope to write to (default: user)
|
|
109
|
+
--beta Include beta policies
|
|
110
|
+
--custom, -c <path> Path to a JS file of custom policies
|
|
111
|
+
(skips interactive prompt; validates file first)
|
|
112
|
+
|
|
113
|
+
OPTIONS (uninstall)
|
|
114
|
+
[names...] Specific policy names to disable (omit to remove hooks)
|
|
115
|
+
--scope user|project|local|all Config scope to remove from (default: user)
|
|
116
|
+
--beta Remove only beta policies
|
|
117
|
+
--custom, -c Clear the customPoliciesPath from config
|
|
93
118
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
119
|
+
EXAMPLES
|
|
120
|
+
failproofai policies
|
|
121
|
+
failproofai policies --install
|
|
122
|
+
failproofai policies --install block-sudo sanitize-api-keys
|
|
123
|
+
failproofai policies --install --custom ./my-policies.js
|
|
124
|
+
failproofai policies -i -c ./my-policies.js
|
|
125
|
+
failproofai policies --uninstall block-sudo
|
|
126
|
+
failproofai policies -u
|
|
127
|
+
failproofai policies --uninstall --custom
|
|
128
|
+
`.trimStart());
|
|
129
|
+
process.exit(0);
|
|
130
|
+
}
|
|
99
131
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
scope,
|
|
103
|
-
undefined,
|
|
104
|
-
includeBeta,
|
|
105
|
-
undefined,
|
|
106
|
-
customPoliciesPath,
|
|
107
|
-
);
|
|
108
|
-
process.exit(0);
|
|
109
|
-
}
|
|
132
|
+
if (isInstall) {
|
|
133
|
+
const { installHooks } = await import("../src/hooks/manager");
|
|
110
134
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const { removeHooks } = await import("../src/hooks/manager");
|
|
135
|
+
const scopeIdx = subArgs.indexOf("--scope");
|
|
136
|
+
const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
|
|
114
137
|
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
const customIdx = subArgs.includes("--custom") ? subArgs.indexOf("--custom")
|
|
139
|
+
: subArgs.includes("-c") ? subArgs.indexOf("-c")
|
|
140
|
+
: -1;
|
|
141
|
+
const customPoliciesPath = customIdx >= 0 ? subArgs[customIdx + 1] : undefined;
|
|
117
142
|
|
|
118
|
-
|
|
119
|
-
const removeCustomHooks = args.includes("--custom");
|
|
143
|
+
const includeBeta = subArgs.includes("--beta");
|
|
120
144
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.
|
|
124
|
-
|
|
145
|
+
// Collect positional policy names — args that don't start with - and aren't
|
|
146
|
+
// values consumed by --scope or --custom/-c.
|
|
147
|
+
const consumed = new Set([scope, customPoliciesPath].filter(Boolean));
|
|
148
|
+
const flags = new Set(["--install", "-i", "--scope", "--beta", "--custom", "-c"]);
|
|
149
|
+
const explicitPolicyNames = subArgs.filter(
|
|
150
|
+
(a) => !a.startsWith("-") && !flags.has(a) && !consumed.has(a)
|
|
151
|
+
);
|
|
125
152
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
153
|
+
// When --custom/-c is present but no explicit policy names, pass [] so
|
|
154
|
+
// installHooks uses the existing enabled policies and skips the interactive
|
|
155
|
+
// prompt — validation of the custom file happens inside installHooks.
|
|
156
|
+
const policyNames =
|
|
157
|
+
explicitPolicyNames.length > 0 ? explicitPolicyNames
|
|
158
|
+
: customPoliciesPath !== undefined ? []
|
|
159
|
+
: undefined;
|
|
160
|
+
|
|
161
|
+
await installHooks(
|
|
162
|
+
policyNames,
|
|
163
|
+
scope,
|
|
164
|
+
undefined,
|
|
165
|
+
includeBeta,
|
|
166
|
+
undefined,
|
|
167
|
+
customPoliciesPath,
|
|
168
|
+
);
|
|
169
|
+
process.exit(0);
|
|
170
|
+
}
|
|
134
171
|
|
|
135
|
-
|
|
136
|
-
|
|
172
|
+
if (isUninstall) {
|
|
173
|
+
const { removeHooks } = await import("../src/hooks/manager");
|
|
174
|
+
|
|
175
|
+
const scopeIdx = subArgs.indexOf("--scope");
|
|
176
|
+
const scope = scopeIdx >= 0 ? subArgs[scopeIdx + 1] : "user";
|
|
177
|
+
|
|
178
|
+
const betaOnly = subArgs.includes("--beta");
|
|
179
|
+
const removeCustomHooks = subArgs.includes("--custom") || subArgs.includes("-c");
|
|
180
|
+
|
|
181
|
+
const consumed = new Set([scope].filter(Boolean));
|
|
182
|
+
const flags = new Set(["--uninstall", "-u", "--scope", "--beta", "--custom", "-c"]);
|
|
183
|
+
const policyNames = subArgs.filter(
|
|
184
|
+
(a) => !a.startsWith("-") && !flags.has(a) && !consumed.has(a)
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
await removeHooks(
|
|
188
|
+
policyNames.length > 0 ? policyNames : undefined,
|
|
189
|
+
scope,
|
|
190
|
+
undefined,
|
|
191
|
+
{ betaOnly, removeCustomHooks },
|
|
192
|
+
);
|
|
193
|
+
process.exit(0);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Default: list policies
|
|
137
197
|
const { listHooks } = await import("../src/hooks/manager");
|
|
138
198
|
await listHooks();
|
|
139
199
|
process.exit(0);
|
|
140
200
|
}
|
|
141
201
|
|
|
142
202
|
// Unknown flag guard — must appear after all known-flag branches
|
|
143
|
-
const knownFlags = ["--version", "-v", "--help", "-h", "--hook"
|
|
144
|
-
"--install-policies", "--remove-policies", "--list-policies",
|
|
145
|
-
"--scope", "--beta", "--custom"];
|
|
203
|
+
const knownFlags = ["--version", "-v", "--help", "-h", "--hook"];
|
|
146
204
|
const unknownFlag = args.find(a => a.startsWith("-") && !knownFlags.includes(a));
|
|
147
205
|
|
|
148
206
|
if (unknownFlag) {
|
|
@@ -159,8 +217,7 @@ if (unknownFlag) {
|
|
|
159
217
|
return dp[m][n];
|
|
160
218
|
}
|
|
161
219
|
|
|
162
|
-
const primary = ["--version", "--help", "--hook", "
|
|
163
|
-
"--remove-policies", "--list-policies"];
|
|
220
|
+
const primary = ["--version", "--help", "--hook", "policies"];
|
|
164
221
|
const closest = primary.reduce((best, flag) => {
|
|
165
222
|
const dist = levenshtein(unknownFlag, flag);
|
|
166
223
|
return dist < best.dist ? { flag, dist } : best;
|
|
@@ -172,6 +229,15 @@ if (unknownFlag) {
|
|
|
172
229
|
process.exit(1);
|
|
173
230
|
}
|
|
174
231
|
|
|
232
|
+
// Unknown subcommand guard (non-flag args that aren't "policies")
|
|
233
|
+
const unknownSubcommand = args.find(a => !a.startsWith("-") && a !== "policies");
|
|
234
|
+
if (unknownSubcommand) {
|
|
235
|
+
console.error(`Unknown command: ${unknownSubcommand}`);
|
|
236
|
+
console.error(`Did you mean: failproofai policies?`);
|
|
237
|
+
console.error(`Run \`failproofai --help\` for usage details.`);
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
|
|
175
241
|
// Dashboard launch — always production mode
|
|
176
242
|
const { launch } = await import("../scripts/launch");
|
|
177
243
|
launch("start");
|
|
@@ -2,13 +2,23 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
import React, { useState, useCallback } from "react";
|
|
5
|
-
import { GitBranch, Lightbulb, Bug, MessageSquare, ChevronDown } from "lucide-react";
|
|
5
|
+
import { GitBranch, Lightbulb, Bug, MessageSquare, ChevronDown, Star, BookOpen } from "lucide-react";
|
|
6
6
|
import { Button } from "@/components/ui/button";
|
|
7
7
|
|
|
8
8
|
const GITHUB_REPO = "https://github.com/exospherehost/failproofai";
|
|
9
9
|
const CONTACT_EMAIL = "failproofai@exosphere.host";
|
|
10
10
|
|
|
11
11
|
const options = [
|
|
12
|
+
{
|
|
13
|
+
label: "Star us on GitHub",
|
|
14
|
+
icon: Star,
|
|
15
|
+
href: "https://github.com/exospherehost/failproofai",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
label: "Documentation",
|
|
19
|
+
icon: BookOpen,
|
|
20
|
+
href: "https://befailproof.ai",
|
|
21
|
+
},
|
|
12
22
|
{
|
|
13
23
|
label: "Request a Feature",
|
|
14
24
|
icon: Lightbulb,
|
|
@@ -20,6 +20,8 @@ export function launch(mode: "dev" | "start"): void {
|
|
|
20
20
|
/_/ \\__,_/_/_/ .___/_/ \\____/\\____/_/ /_/ |_/___/
|
|
21
21
|
/_/ v${version}
|
|
22
22
|
`);
|
|
23
|
+
console.log(` ⭐ Star us: https://github.com/exospherehost/failproofai`);
|
|
24
|
+
console.log(` 📖 Docs: https://befailproof.ai\n`);
|
|
23
25
|
|
|
24
26
|
let claudeProjectsPath = parsedPath;
|
|
25
27
|
|
|
@@ -87,7 +87,7 @@ function printHooksWarning() {
|
|
|
87
87
|
console.log(
|
|
88
88
|
`\n[failproofai] Warning: hooks config exists with enabled policies, but hooks are not registered in Claude Code settings.\n` +
|
|
89
89
|
` To re-register hooks, run:\n` +
|
|
90
|
-
` failproofai
|
|
90
|
+
` failproofai policies --uninstall && failproofai policies --install\n`
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -263,11 +263,11 @@ export async function promptPolicySelection(
|
|
|
263
263
|
);
|
|
264
264
|
lines.push("");
|
|
265
265
|
lines.push(
|
|
266
|
-
" \x1B[2mTip:
|
|
266
|
+
" \x1B[2mTip: `policies` for a flat list \u00b7 `policies --install <name\u2026>` to skip prompt\x1B[0m",
|
|
267
267
|
);
|
|
268
268
|
if (!includeBeta) {
|
|
269
269
|
lines.push(
|
|
270
|
-
" \x1B[2mTip: --install
|
|
270
|
+
" \x1B[2mTip: `policies --install --beta` to include beta policies\x1B[0m",
|
|
271
271
|
);
|
|
272
272
|
}
|
|
273
273
|
|