cctally 1.115.0 → 1.116.0
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/CHANGELOG.md +16 -0
- package/bin/_cctally_cache.py +85 -4
- package/bin/_cctally_completion.py +80 -12
- package/bin/_cctally_core.py +106 -9
- package/bin/_cctally_dashboard.py +6 -9
- package/bin/_cctally_dashboard_envelope.py +26 -32
- package/bin/_cctally_db.py +85 -4
- package/bin/_cctally_doctor.py +38 -5
- package/bin/_cctally_five_hour.py +83 -1017
- package/bin/_cctally_journal.py +1307 -180
- package/bin/_cctally_journal_repair.py +9 -7
- package/bin/_cctally_oauth_samples.py +280 -0
- package/bin/_cctally_parser.py +5 -0
- package/bin/_cctally_quarantine.py +14 -4
- package/bin/_cctally_quota.py +70 -8
- package/bin/_cctally_quota_model.py +35 -4
- package/bin/_cctally_record.py +414 -123
- package/bin/_cctally_rederive.py +632 -235
- package/bin/_cctally_refresh.py +29 -0
- package/bin/_cctally_statusline.py +984 -47
- package/bin/_cctally_store.py +972 -58
- package/bin/_cctally_tui.py +62 -7
- package/bin/_cctally_update.py +25 -0
- package/bin/_lib_account_protocol.py +201 -18
- package/bin/_lib_clone_copy.py +46 -11
- package/bin/_lib_dashboard_sources.py +57 -15
- package/bin/_lib_detector_access_registry.py +273 -52
- package/bin/_lib_doctor.py +302 -1
- package/bin/_lib_journal.py +145 -25
- package/bin/_lib_journal_router.py +166 -48
- package/bin/_lib_oauth_samples.py +238 -0
- package/bin/_lib_pricing_check.py +0 -12
- package/bin/_lib_provider_activity.py +770 -0
- package/bin/_lib_quarantine.py +3 -2
- package/bin/_lib_quota_model.py +96 -6
- package/bin/_lib_rebuild_progress.py +146 -0
- package/bin/_lib_record.py +22 -0
- package/bin/_lib_rederive.py +299 -3
- package/bin/_lib_snapshot_cache.py +43 -1
- package/bin/_lib_stale_proof.py +708 -0
- package/bin/_lib_statusline_candidates.py +65 -5
- package/bin/_lib_worker_launches.py +315 -0
- package/bin/cctally +6 -11
- package/dashboard/static/assets/{ConversationsView-Bc8LCOAZ.js → ConversationsView-Dflb_myA.js} +1 -1
- package/dashboard/static/assets/DoctorModal-DFX5CfIs.js +1 -0
- package/dashboard/static/assets/{ModalRoot-DLPgyAM_.js → ModalRoot-HlxoagIa.js} +1 -1
- package/dashboard/static/assets/{ProjectsDrillPanel-z53a4v4M.js → ProjectsDrillPanel-C3PJy1xx.js} +1 -1
- package/dashboard/static/assets/{SourceDetailModal-Bw0T8W-W.js → SourceDetailModal-BczsWKhD.js} +1 -1
- package/dashboard/static/assets/{UpdateModal-D5AKx4Yw.js → UpdateModal-Os-Lo5cs.js} +1 -1
- package/dashboard/static/assets/{index-BXDOzSng.js → index-CYZ3NLqF.js} +3 -3
- package/dashboard/static/assets/{outlineNavigation-JObY7cUY.js → outlineNavigation-k-zIif6W.js} +1 -1
- package/dashboard/static/dashboard.html +1 -1
- package/package.json +7 -2
- package/bin/_lib_merge_gate.py +0 -452
- package/dashboard/static/assets/DoctorModal-D--qVBwe.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ft as e,Rt as t,a as n,b as r,c as i,f as a,t as o,x as s}from"./useKeymap-CW7Up0Ay.js";import{dt as c,jt as l,o as u,s as d,ut as f}from"./index-CYZ3NLqF.js";var p=t(e(),1);function m(){let[e,t]=(0,p.useState)(null),[n,r]=(0,p.useState)(!1),[i,a]=(0,p.useState)(null);return{report:e,loading:n,error:i,refresh:(0,p.useCallback)(async()=>{r(!0),a(null);try{let e=await fetch(`/api/doctor`);if(!e.ok)throw Error(`HTTP ${e.status}`);t(await e.json())}catch(e){a(e instanceof Error?e.message:String(e))}finally{r(!1)}},[])}}var h=n(),g={ok:`✓`,warn:`⚠`,fail:`✗`},_=/(--[A-Za-z0-9][A-Za-z0-9-]*)/g;function v({text:e}){return(0,h.jsx)(h.Fragment,{children:e.split(_).map((e,t)=>e.startsWith(`--`)?(0,h.jsx)(`span`,{className:`doctor-modal__flag`,children:e},`${e}-${t}`):e)})}function y(){let e=(0,p.useSyncExternalStore)(r,()=>a().doctorModalOpen),{report:t,loading:n,error:l,refresh:g}=m(),_=()=>{i({type:`CLOSE_DOCTOR_MODAL`})};o((0,p.useMemo)(()=>[{key:`Escape`,scope:`modal`,action:_,when:()=>a().doctorModalOpen}],[])),(0,p.useEffect)(()=>{e&&g()},[e,g]),(0,p.useEffect)(()=>{if(!t)return;let e=a().doctor,n=e?Date.parse(e.generated_at):NaN,r=Date.parse(t.generated_at);e&&Number.isFinite(n)&&Number.isFinite(r)&&r<=n||i({type:`SET_DOCTOR_AGGREGATE`,doctor:{severity:t.overall.severity,counts:t.overall.counts,generated_at:t.generated_at,fingerprint:`client-reconcile`,rebuild_worker:b(t)}})},[t]);let v=(0,p.useRef)(null);return c(v,{active:e,trapEnabled:(0,p.useSyncExternalStore)(r,()=>s(a())===`doctor`),initialFocus:`container`}),f(e),e?(0,h.jsxs)(`div`,{className:`update-modal-root`,onClick:_,children:[(0,h.jsx)(`div`,{className:`modal-backdrop`}),(0,h.jsxs)(`div`,{ref:v,className:`modal-card doctor-modal-card`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`doctor-modal-title`,tabIndex:-1,onClick:e=>e.stopPropagation(),children:[(0,h.jsx)(u,{title:`Doctor`,titleId:`doctor-modal-title`,headerExtras:(0,h.jsxs)(`div`,{className:`doctor-modal__header-actions`,children:[(0,h.jsx)(`button`,{type:`button`,className:`doctor-modal__refresh`,onClick:()=>{g()},disabled:n,"aria-label":`Refresh doctor report`,children:n?`refreshing…`:`↻ refresh`}),(0,h.jsx)(d,{onClose:_})]})}),(0,h.jsxs)(`div`,{className:`modal-body`,children:[n&&!t&&(0,h.jsx)(`p`,{children:`Loading…`}),l&&(0,h.jsxs)(`p`,{className:`doctor-modal__error`,children:[`Error loading report: `,l]}),t&&(0,h.jsx)(x,{report:t})]})]})]}):null}function b(e){for(let t of e.categories)for(let e of t.checks)if(e.id===`db.rebuild_worker`)return e.severity===`ok`?null:{severity:e.severity,summary:e.summary};return null}function x({report:e}){let{counts:t}=e.overall;return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`p`,{className:`doctor-modal__summary`,children:[t.ok,` OK · `,t.warn,` WARN · `,t.fail,` FAIL`]}),e.categories.map(e=>(0,h.jsx)(S,{cat:e,defaultOpen:e.severity!==`ok`},e.id))]})}function S({cat:e,defaultOpen:t}){let[n,r]=(0,p.useState)(t);return(0,h.jsxs)(`section`,{className:`doctor-modal__category doctor-modal__category--${e.severity}`,children:[(0,h.jsxs)(`button`,{type:`button`,className:`doctor-modal__category-header`,onClick:()=>r(e=>!e),"aria-expanded":n,children:[(0,h.jsx)(`span`,{className:`doctor-modal__category-caret`,"aria-hidden":`true`,children:n?`▾`:`▸`}),(0,h.jsx)(`span`,{className:`doctor-modal__glyph`,"aria-hidden":`true`,children:g[e.severity]}),(0,h.jsx)(`span`,{children:e.title})]}),n&&e.checks.map(e=>(0,h.jsx)(C,{c:e},e.id))]})}function C({c:e}){let[t,n]=(0,p.useState)(!1),r=e.details&&Object.keys(e.details).length>0,i=e.id===`data.latest_snapshot_age`&&typeof e.details?.latest_snapshot_age_s==`number`?l(e.details.latest_snapshot_age_s):e.summary;return(0,h.jsxs)(`div`,{className:`doctor-modal__check doctor-modal__check--${e.severity}`,children:[(0,h.jsxs)(`p`,{children:[(0,h.jsx)(`span`,{className:`doctor-modal__glyph`,"aria-label":e.severity,children:g[e.severity]}),` `,(0,h.jsx)(`strong`,{children:e.title}),`: `,i]}),e.remediation&&(0,h.jsxs)(`p`,{className:`doctor-modal__remediation`,children:[`→ `,(0,h.jsx)(v,{text:e.remediation})]}),e.severity!==`ok`&&!e.remediation&&(0,h.jsxs)(`p`,{className:`doctor-modal__remediation`,children:[`→ Run `,(0,h.jsx)(`code`,{children:`cctally doctor`}),` for the full report`]}),r&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`button`,{type:`button`,className:`doctor-modal__details-toggle`,onClick:()=>n(e=>!e),"aria-expanded":t,children:[t?`▼`:`▶`,` details`]}),t&&(0,h.jsx)(`pre`,{className:`doctor-modal__details`,children:JSON.stringify(e.details,null,2)})]})]})}export{y as DoctorModal};
|