@vladar107/claudescope 0.1.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/cli.js +29 -0
- package/package.json +22 -0
- package/pricing.default.json +13 -0
- package/server.js +633 -0
- package/web/assets/abap-DsBKuouk.js +1 -0
- package/web/assets/actionscript-3-D_z4Izcz.js +1 -0
- package/web/assets/ada-727ZlQH0.js +1 -0
- package/web/assets/andromeeda-C3khCPGq.js +1 -0
- package/web/assets/angular-html-LfdN0zeE.js +1 -0
- package/web/assets/angular-ts-CKsD7JZE.js +1 -0
- package/web/assets/apache-Dn00JSTd.js +1 -0
- package/web/assets/apex-COJ4H7py.js +1 -0
- package/web/assets/apl-BBq3IX1j.js +1 -0
- package/web/assets/applescript-Bu5BbsvL.js +1 -0
- package/web/assets/ara-7O62HKoU.js +1 -0
- package/web/assets/asciidoc-BPT9niGB.js +1 -0
- package/web/assets/asm-Dhn9LcZ4.js +1 -0
- package/web/assets/astro-CqkE3fuf.js +1 -0
- package/web/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/web/assets/awk-eg146-Ew.js +1 -0
- package/web/assets/ayu-dark-Cv9koXgw.js +1 -0
- package/web/assets/ballerina-Du268qiB.js +1 -0
- package/web/assets/bat-fje9CFhw.js +1 -0
- package/web/assets/beancount-BwXTMy5W.js +1 -0
- package/web/assets/berry-3xVqZejG.js +1 -0
- package/web/assets/bibtex-xW4inM5L.js +1 -0
- package/web/assets/bicep-DHo0CJ0O.js +1 -0
- package/web/assets/blade-a8OxSdnT.js +1 -0
- package/web/assets/bsl-Dgyn0ogV.js +1 -0
- package/web/assets/c-C3t2pwGQ.js +1 -0
- package/web/assets/cadence-DNquZEk8.js +1 -0
- package/web/assets/cairo--RitsXJZ.js +1 -0
- package/web/assets/catppuccin-frappe-CD_QflpE.js +1 -0
- package/web/assets/catppuccin-latte-DRW-0cLl.js +1 -0
- package/web/assets/catppuccin-macchiato-C-_shW-Y.js +1 -0
- package/web/assets/catppuccin-mocha-LGGdnPYs.js +1 -0
- package/web/assets/clarity-BHOwM8T6.js +1 -0
- package/web/assets/clojure-DxSadP1t.js +1 -0
- package/web/assets/cmake-DbXoA79R.js +1 -0
- package/web/assets/cobol-PTqiYgYu.js +1 -0
- package/web/assets/codeowners-Bp6g37R7.js +1 -0
- package/web/assets/codeql-sacFqUAJ.js +1 -0
- package/web/assets/coffee-dyiR41kL.js +1 -0
- package/web/assets/common-lisp-C7gG9l05.js +1 -0
- package/web/assets/coq-Dsg_Bt_b.js +1 -0
- package/web/assets/cpp-BksuvNSY.js +1 -0
- package/web/assets/crystal-DtDmRg-F.js +1 -0
- package/web/assets/csharp-D9R-vmeu.js +1 -0
- package/web/assets/css-BPhBrDlE.js +1 -0
- package/web/assets/csv-B0qRVHPH.js +1 -0
- package/web/assets/cue-DtFQj3wx.js +1 -0
- package/web/assets/cypher-m2LEI-9-.js +1 -0
- package/web/assets/d-BoXegm-a.js +1 -0
- package/web/assets/dark-plus-C3mMm8J8.js +1 -0
- package/web/assets/dart-B9wLZaAG.js +1 -0
- package/web/assets/dax-ClGRhx96.js +1 -0
- package/web/assets/desktop-DEIpsLCJ.js +1 -0
- package/web/assets/diff-BgYniUM_.js +1 -0
- package/web/assets/docker-COcR7UxN.js +1 -0
- package/web/assets/dotenv-BjQB5zDj.js +1 -0
- package/web/assets/dracula-BzJJZx-M.js +1 -0
- package/web/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/web/assets/dream-maker-C-nORZOA.js +1 -0
- package/web/assets/edge-D5gP-w-T.js +1 -0
- package/web/assets/elixir-CLiX3zqd.js +1 -0
- package/web/assets/elm-CmHSxxaM.js +1 -0
- package/web/assets/emacs-lisp-BX77sIaO.js +1 -0
- package/web/assets/erb-BYTLMnw6.js +1 -0
- package/web/assets/erlang-B-DoSBHF.js +1 -0
- package/web/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/web/assets/everforest-light-C8M2exoo.js +1 -0
- package/web/assets/fennel-bCA53EVm.js +1 -0
- package/web/assets/fish-w-ucz2PV.js +1 -0
- package/web/assets/fluent-Dayu4EKP.js +1 -0
- package/web/assets/fortran-fixed-form-TqA4NnZg.js +1 -0
- package/web/assets/fortran-free-form-DKXYxT9g.js +1 -0
- package/web/assets/fsharp-XplgxFYe.js +1 -0
- package/web/assets/gdresource-BHYsBjWJ.js +1 -0
- package/web/assets/gdscript-DfxzS6Rs.js +1 -0
- package/web/assets/gdshader-SKMF96pI.js +1 -0
- package/web/assets/genie-ajMbGru0.js +1 -0
- package/web/assets/gherkin--30QC5Em.js +1 -0
- package/web/assets/git-commit-i4q6IMui.js +1 -0
- package/web/assets/git-rebase-B-v9cOL2.js +1 -0
- package/web/assets/github-dark-DHJKELXO.js +1 -0
- package/web/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/web/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/web/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/web/assets/github-light-DAi9KRSo.js +1 -0
- package/web/assets/github-light-default-D7oLnXFd.js +1 -0
- package/web/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/web/assets/gleam-B430Bg39.js +1 -0
- package/web/assets/glimmer-js-D-cwc0-E.js +1 -0
- package/web/assets/glimmer-ts-pgjy16dm.js +1 -0
- package/web/assets/glsl-DBO2IWDn.js +1 -0
- package/web/assets/gnuplot-CM8KxXT1.js +1 -0
- package/web/assets/go-B1SYOhNW.js +1 -0
- package/web/assets/graphql-cDcHW_If.js +1 -0
- package/web/assets/groovy-DkBy-JyN.js +1 -0
- package/web/assets/hack-D1yCygmZ.js +1 -0
- package/web/assets/haml-B2EZWmdv.js +1 -0
- package/web/assets/handlebars-BQGss363.js +1 -0
- package/web/assets/haskell-BILxekzW.js +1 -0
- package/web/assets/haxe-C5wWYbrZ.js +1 -0
- package/web/assets/hcl-HzYwdGDm.js +1 -0
- package/web/assets/hjson-T-Tgc4AT.js +1 -0
- package/web/assets/hlsl-ifBTmRxC.js +1 -0
- package/web/assets/houston-DnULxvSX.js +1 -0
- package/web/assets/html-C2L_23MC.js +1 -0
- package/web/assets/html-derivative-CSfWNPLT.js +1 -0
- package/web/assets/http-FRrOvY1W.js +1 -0
- package/web/assets/hxml-TIA70rKU.js +1 -0
- package/web/assets/hy-BMj5Y0dO.js +1 -0
- package/web/assets/imba-bv_oIlVt.js +1 -0
- package/web/assets/index-BCsCuBGo.js +199 -0
- package/web/assets/index-C1L5Vfvl.js +13 -0
- package/web/assets/index-kyAQXqln.css +1 -0
- package/web/assets/ini-BjABl1g7.js +1 -0
- package/web/assets/java-xI-RfyKK.js +1 -0
- package/web/assets/javascript-ySlJ1b_l.js +1 -0
- package/web/assets/jinja-DGy0s7-h.js +1 -0
- package/web/assets/jison-BqZprYcd.js +1 -0
- package/web/assets/json-BQoSv7ci.js +1 -0
- package/web/assets/json5-w8dY5SsB.js +1 -0
- package/web/assets/jsonc-TU54ms6u.js +1 -0
- package/web/assets/jsonl-DREVFZK8.js +1 -0
- package/web/assets/jsonnet-BfivnA6A.js +1 -0
- package/web/assets/jssm-P4WzXJd0.js +1 -0
- package/web/assets/jsx-BAng5TT0.js +1 -0
- package/web/assets/julia-BBuGR-5E.js +1 -0
- package/web/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/web/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/web/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/web/assets/kotlin-B5lbUyaz.js +1 -0
- package/web/assets/kusto-mebxcVVE.js +1 -0
- package/web/assets/laserwave-DUszq2jm.js +1 -0
- package/web/assets/latex-C-cWTeAZ.js +1 -0
- package/web/assets/lean-XBlWyCtg.js +1 -0
- package/web/assets/less-BfCpw3nA.js +1 -0
- package/web/assets/light-plus-B7mTdjB0.js +1 -0
- package/web/assets/liquid-D3W5UaiH.js +1 -0
- package/web/assets/log-Cc5clBb7.js +1 -0
- package/web/assets/logo-IuBKFhSY.js +1 -0
- package/web/assets/lua-CvWAzNxB.js +1 -0
- package/web/assets/luau-Du5NY7AG.js +1 -0
- package/web/assets/make-Bvotw-X0.js +1 -0
- package/web/assets/markdown-UIAJJxZW.js +1 -0
- package/web/assets/marko-z0MBrx5-.js +1 -0
- package/web/assets/material-theme-D5KoaKCx.js +1 -0
- package/web/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/web/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/web/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/web/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/web/assets/matlab-D9-PGadD.js +1 -0
- package/web/assets/mdc-DB_EDNY_.js +1 -0
- package/web/assets/mdx-sdHcTMYB.js +1 -0
- package/web/assets/mermaid-Ci6OQyBP.js +1 -0
- package/web/assets/min-dark-CafNBF8u.js +1 -0
- package/web/assets/min-light-CTRr51gU.js +1 -0
- package/web/assets/mipsasm-BC5c_5Pe.js +1 -0
- package/web/assets/mojo-Tz6hzZYG.js +1 -0
- package/web/assets/monokai-D4h5O-jR.js +1 -0
- package/web/assets/move-DB_GagMm.js +1 -0
- package/web/assets/narrat-DLbgOhZU.js +1 -0
- package/web/assets/nextflow-B0XVJmRM.js +1 -0
- package/web/assets/nginx-D_VnBJ67.js +1 -0
- package/web/assets/night-owl-C39BiMTA.js +1 -0
- package/web/assets/nim-ZlGxZxc3.js +1 -0
- package/web/assets/nix-shcSOmrb.js +1 -0
- package/web/assets/nord-Ddv68eIx.js +1 -0
- package/web/assets/nushell-D4Tzg5kh.js +1 -0
- package/web/assets/objective-c-Deuh7S70.js +1 -0
- package/web/assets/objective-cpp-BUEGK8hf.js +1 -0
- package/web/assets/ocaml-BNioltXt.js +1 -0
- package/web/assets/one-dark-pro-GBQ2dnAY.js +1 -0
- package/web/assets/one-light-PoHY5YXO.js +1 -0
- package/web/assets/pascal-JqZropPD.js +1 -0
- package/web/assets/perl-CHQXSrWU.js +1 -0
- package/web/assets/php-B5ebYQev.js +1 -0
- package/web/assets/plastic-3e1v2bzS.js +1 -0
- package/web/assets/plsql-LKU2TuZ1.js +1 -0
- package/web/assets/po-BFLt1xDp.js +1 -0
- package/web/assets/poimandres-CS3Unz2-.js +1 -0
- package/web/assets/polar-DKykz6zU.js +1 -0
- package/web/assets/postcss-B3ZDOciz.js +1 -0
- package/web/assets/powerquery-CSHBycmS.js +1 -0
- package/web/assets/powershell-BIEUsx6d.js +1 -0
- package/web/assets/prisma-B48N-Iqd.js +1 -0
- package/web/assets/prolog-BY-TUvya.js +1 -0
- package/web/assets/proto-zocC4JxJ.js +1 -0
- package/web/assets/pug-CM9l7STV.js +1 -0
- package/web/assets/puppet-Cza_XSSt.js +1 -0
- package/web/assets/purescript-Bg-kzb6g.js +1 -0
- package/web/assets/python-DhUJRlN_.js +1 -0
- package/web/assets/qml-D8XfuvdV.js +1 -0
- package/web/assets/qmldir-C8lEn-DE.js +1 -0
- package/web/assets/qss-DhMKtDLN.js +1 -0
- package/web/assets/r-CwjWoCRV.js +1 -0
- package/web/assets/racket-CzouJOBO.js +1 -0
- package/web/assets/raku-B1bQXN8T.js +1 -0
- package/web/assets/razor-CNLDkMZG.js +1 -0
- package/web/assets/red-bN70gL4F.js +1 -0
- package/web/assets/reg-5LuOXUq_.js +1 -0
- package/web/assets/regexp-DWJ3fJO_.js +1 -0
- package/web/assets/rel-DJlmqQ1C.js +1 -0
- package/web/assets/riscv-QhoSD0DR.js +1 -0
- package/web/assets/rose-pine-CmCqftbK.js +1 -0
- package/web/assets/rose-pine-dawn-Ds-gbosJ.js +1 -0
- package/web/assets/rose-pine-moon-CjDtw9vr.js +1 -0
- package/web/assets/rst-4NLicBqY.js +1 -0
- package/web/assets/ruby-DeZ3UC14.js +1 -0
- package/web/assets/rust-Be6lgOlo.js +1 -0
- package/web/assets/sas-BmTFh92c.js +1 -0
- package/web/assets/sass-BJ4Li9vH.js +1 -0
- package/web/assets/scala-DQVVAn-B.js +1 -0
- package/web/assets/scheme-BJGe-b2p.js +1 -0
- package/web/assets/scss-C31hgJw-.js +1 -0
- package/web/assets/sdbl-BLhTXw86.js +1 -0
- package/web/assets/shaderlab-B7qAK45m.js +1 -0
- package/web/assets/shellscript-atvbtKCR.js +1 -0
- package/web/assets/shellsession-C_rIy8kc.js +1 -0
- package/web/assets/slack-dark-BthQWCQV.js +1 -0
- package/web/assets/slack-ochin-DqwNpetd.js +1 -0
- package/web/assets/smalltalk-DkLiglaE.js +1 -0
- package/web/assets/snazzy-light-Bw305WKR.js +1 -0
- package/web/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/web/assets/solarized-light-L9t79GZl.js +1 -0
- package/web/assets/solidity-C1w2a3ep.js +1 -0
- package/web/assets/soy-C-lX7w71.js +1 -0
- package/web/assets/sparql-bYkjHRlG.js +1 -0
- package/web/assets/splunk-Cf8iN4DR.js +1 -0
- package/web/assets/sql-COK4E0Yg.js +1 -0
- package/web/assets/ssh-config-BknIz3MU.js +1 -0
- package/web/assets/stata-DorPZHa4.js +1 -0
- package/web/assets/stylus-BeQkCIfX.js +1 -0
- package/web/assets/svelte-MSaWC3Je.js +1 -0
- package/web/assets/swift-BSxZ-RaX.js +1 -0
- package/web/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/web/assets/system-verilog-C7L56vO4.js +1 -0
- package/web/assets/systemd-CUnW07Te.js +1 -0
- package/web/assets/talonscript-C1XDQQGZ.js +1 -0
- package/web/assets/tasl-CQjiPCtT.js +1 -0
- package/web/assets/tcl-DQ1-QYvQ.js +1 -0
- package/web/assets/templ-dwX3ZSMB.js +1 -0
- package/web/assets/terraform-BbSNqyBO.js +1 -0
- package/web/assets/tex-rYs2v40G.js +1 -0
- package/web/assets/tokyo-night-DBQeEorK.js +1 -0
- package/web/assets/toml-CB2ApiWb.js +1 -0
- package/web/assets/ts-tags-CipyTH0X.js +1 -0
- package/web/assets/tsv-B_m7g4N7.js +1 -0
- package/web/assets/tsx-B6W0miNI.js +1 -0
- package/web/assets/turtle-BMR_PYu6.js +1 -0
- package/web/assets/twig-NC5TFiHP.js +1 -0
- package/web/assets/typescript-Dj6nwHGl.js +1 -0
- package/web/assets/typespec-BpWG_bgh.js +1 -0
- package/web/assets/typst-BVUVsWT6.js +1 -0
- package/web/assets/v-CAQ2eGtk.js +1 -0
- package/web/assets/vala-BFOHcciG.js +1 -0
- package/web/assets/vb-CdO5JTpU.js +1 -0
- package/web/assets/verilog-CJaU5se_.js +1 -0
- package/web/assets/vesper-BEBZ7ncR.js +1 -0
- package/web/assets/vhdl-DYoNaHQp.js +1 -0
- package/web/assets/viml-m4uW47V2.js +1 -0
- package/web/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/web/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/web/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/web/assets/vue-BuYVFjOK.js +1 -0
- package/web/assets/vue-html-xdeiXROB.js +1 -0
- package/web/assets/vyper-nyqBNV6O.js +1 -0
- package/web/assets/wasm-C6j12Q_x.js +1 -0
- package/web/assets/wasm-CG6Dc4jp.js +1 -0
- package/web/assets/wenyan-7A4Fjokl.js +1 -0
- package/web/assets/wgsl-CB0Krxn9.js +1 -0
- package/web/assets/wikitext-DCE3LsBG.js +1 -0
- package/web/assets/wolfram-C3FkfJm5.js +1 -0
- package/web/assets/xml-e3z08dGr.js +1 -0
- package/web/assets/xsl-Dd0NUgwM.js +1 -0
- package/web/assets/yaml-CVw76BM1.js +1 -0
- package/web/assets/zenscript-HnGAYVZD.js +1 -0
- package/web/assets/zig-BVz_zdnA.js +1 -0
- package/web/index.html +13 -0
package/cli.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __cr } from 'node:module';
|
|
3
|
+
const require = __cr(import.meta.url);
|
|
4
|
+
import{spawn as N,spawnSync as w}from"node:child_process";import{existsSync as y,mkdirSync as x,openSync as H,readFileSync as O,rmSync as P,writeFileSync as U}from"node:fs";import{dirname as F,join as g}from"node:path";import{parseArgs as B}from"node:util";import{fileURLToPath as M}from"node:url";import{copyFileSync as oe,existsSync as $,mkdirSync as ne}from"node:fs";import{homedir as u}from"node:os";import{dirname as L,join as s}from"node:path";import{fileURLToPath as j}from"node:url";var v=L(j(import.meta.url));function D(e,o){return e.find(n=>$(n))??o}var E=Number(process.env.PORT??4317),d=s(v,"..");function A(e){return e==="~"?u():e.startsWith("~/")?s(u(),e.slice(2)):e}var _=A(process.env.CLAUDE_PROJECTS_DIR??s(u(),".claude","projects")),ae=process.env.OPEN_BROWSER==="1",ce=Number(process.env.REINDEX_INTERVAL_MS??15e3),i=A(process.env.CLAUDESCOPE_HOME??s(u(),".claudescope")),le=process.env.DUCKDB_PATH??s(i,"index.duckdb"),pe=D([s(v,"pricing.default.json"),s(d,"pricing.json")],s(d,"pricing.json")),ue=process.env.PRICING_PATH??s(i,"pricing.json"),de=process.env.WEB_DIST_DIR??D([s(v,"web"),s(d,"..","web","dist")],s(d,"..","web","dist")),a="0.1.0";var V=F(M(import.meta.url)),J=g(V,"server.js"),c=g(i,"daemon.json"),f=g(i,"daemon.log"),S=g(i,"update-check.json"),m="@vladar107/claudescope",G=24*60*60*1e3;function h(){if(!y(c))return null;try{return JSON.parse(O(c,"utf8"))}catch{return null}}function p(e){try{return process.kill(e,0),!0}catch{return!1}}async function C(e){try{return(await fetch(`http://127.0.0.1:${e}/api/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}async function K(e,o){let n=Date.now()+o;for(;Date.now()<n;){if(await C(e))return!0;process.stdout.write("."),await new Promise(r=>setTimeout(r,500))}return!1}function b(e){let o=process.platform==="darwin"?"open":process.platform==="win32"?"start":"xdg-open";try{N(o,[e],{stdio:"ignore",detached:!0,shell:process.platform==="win32"}).unref()}catch{}}async function I(e,o){x(i,{recursive:!0});let n=h();if(n&&p(n.pid)&&await C(n.port)){console.log(`\u2713 claudescope is already running \u2192 ${n.url}`),o&&b(n.url);return}n&&!p(n.pid)&&P(c,{force:!0});let r=`http://localhost:${e}`,t=H(f,"a"),l=N(process.execPath,[J],{detached:!0,stdio:["ignore",t,t],env:{...process.env,PORT:String(e),OPEN_BROWSER:"0"}});if(l.unref(),U(c,JSON.stringify({pid:l.pid,port:e,url:r,version:a,startedAt:new Date().toISOString()},null,2)),process.stdout.write("\u203A Starting claudescope"),!await K(e,2e4)){console.error(`
|
|
5
|
+
\u2717 Server did not become healthy in time. Inspect: claudescope logs`),process.exitCode=1;return}console.log(`
|
|
6
|
+
\u2713 claudescope running \u2192 ${r}`),console.log(` Sessions: ${_} (read-only)`),o&&b(r),await k(!1)}function R(){let e=h();if(!e||!p(e.pid)){console.log("claudescope is not running."),P(c,{force:!0});return}try{process.kill(e.pid,"SIGTERM")}catch{}P(c,{force:!0}),console.log(`\u2713 Stopped claudescope (pid ${e.pid}).`)}async function W(){let e=h();e&&p(e.pid)&&await C(e.port)?console.log(`\u25CF running ${e.url} (pid ${e.pid}, v${e.version})`):console.log(`\u25CB stopped (installed v${a})`),await k(!0)}function X(){let e=h();e&&p(e.pid)?b(e.url):console.log("claudescope is not running. Start it with: claudescope start")}function Y(e){if(!y(f)){console.log("No logs yet.");return}e&&process.platform!=="win32"?w("tail",["-f",f],{stdio:"inherit"}):process.stdout.write(O(f,"utf8"))}function q(){console.log(`\u203A Updating ${m} to the latest version\u2026`);let e=process.platform==="win32"?"npm.cmd":"npm";if(w(e,["install","-g",`${m}@latest`],{stdio:"inherit"}).status!==0){console.error(`\u2717 Update failed. If you run via npx, just re-run \`npx ${m}\` to get the latest.`),process.exitCode=1;return}R(),console.log("\u2713 Updated. Restarting\u2026"),w("claudescope",["start"],{stdio:"inherit",shell:process.platform==="win32"})}function z(e,o){let n=e.split(".").map(t=>Number.parseInt(t,10)||0),r=o.split(".").map(t=>Number.parseInt(t,10)||0);for(let t=0;t<3;t++){if((n[t]??0)>(r[t]??0))return!0;if((n[t]??0)<(r[t]??0))return!1}return!1}async function Q(e){let o=Date.now();if(!e&&y(S))try{let l=JSON.parse(O(S,"utf8"));if(o-l.lastCheck<G)return l.latest}catch{}let n=`https://registry.npmjs.org/${m.replace("/","%2f")}/latest`,r=await fetch(n,{signal:AbortSignal.timeout(2500)});if(!r.ok)return null;let t=await r.json();return t.version?(x(i,{recursive:!0}),U(S,JSON.stringify({lastCheck:o,latest:t.version})),t.version):null}async function k(e){try{let o=await Q(e);o&&z(o,a)&&console.log(`
|
|
7
|
+
\u2B06 Update available: v${a} \u2192 v${o}. Run: claudescope update`)}catch{}}function T(){console.log(`claudescope v${a} \u2014 local viewer for Claude Code transcripts
|
|
8
|
+
|
|
9
|
+
Usage: claudescope [command] [options]
|
|
10
|
+
|
|
11
|
+
Commands:
|
|
12
|
+
start Start the server in the background (default), open the browser
|
|
13
|
+
stop Stop the background server
|
|
14
|
+
restart Restart the background server
|
|
15
|
+
status Show whether the server is running and if an update exists
|
|
16
|
+
open Open the running app in your browser
|
|
17
|
+
logs [-f] Print the server log (-f / --follow to tail it)
|
|
18
|
+
update Upgrade to the latest published version and restart
|
|
19
|
+
help Show this help
|
|
20
|
+
version Print the installed version
|
|
21
|
+
|
|
22
|
+
Options:
|
|
23
|
+
--port <n> Port to listen on (default ${E}, or $PORT)
|
|
24
|
+
--no-open Don't open the browser on start
|
|
25
|
+
|
|
26
|
+
State (index, pricing, logs, PID) lives in ${i}
|
|
27
|
+
(override with $CLAUDESCOPE_HOME). Sessions are read from
|
|
28
|
+
${_} (override with $CLAUDE_PROJECTS_DIR).`)}async function Z(){let{values:e,positionals:o}=B({allowPositionals:!0,options:{port:{type:"string"},follow:{type:"boolean",short:"f"},help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},"no-open":{type:"boolean"}}}),n=e.port?Number(e.port):E,r=!e["no-open"],t=o[0];switch(t||(t=e.help?"help":e.version?"version":"start"),t){case"start":await I(n,r);break;case"stop":R();break;case"restart":R(),await I(n,r);break;case"status":await W();break;case"open":X();break;case"logs":Y(!!e.follow);break;case"update":q();break;case"version":console.log(a);break;case"help":T();break;default:console.error(`Unknown command: ${t}
|
|
29
|
+
`),T(),process.exitCode=1}}Z().catch(e=>{console.error(e),process.exit(1)});
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vladar107/claudescope",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Local viewer for Claude Code session transcripts.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"claudescope": "cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"cli.js",
|
|
12
|
+
"server.js",
|
|
13
|
+
"web",
|
|
14
|
+
"pricing.default.json"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@duckdb/node-api": "^1.5.3-r.3"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"models": {
|
|
3
|
+
"claude-opus-4-1": { "input": 15, "output": 75, "cacheWrite": 18.75, "cacheRead": 1.5 },
|
|
4
|
+
"claude-opus-4": { "input": 15, "output": 75, "cacheWrite": 18.75, "cacheRead": 1.5 },
|
|
5
|
+
"<synthetic>": { "input": 0, "output": 0, "cacheWrite": 0, "cacheRead": 0 }
|
|
6
|
+
},
|
|
7
|
+
"families": {
|
|
8
|
+
"opus": { "input": 5, "output": 25, "cacheWrite": 6.25, "cacheRead": 0.5 },
|
|
9
|
+
"sonnet": { "input": 3, "output": 15, "cacheWrite": 3.75, "cacheRead": 0.3 },
|
|
10
|
+
"haiku": { "input": 1, "output": 5, "cacheWrite": 1.25, "cacheRead": 0.1 }
|
|
11
|
+
},
|
|
12
|
+
"default": { "input": 3, "output": 15, "cacheWrite": 3.75, "cacheRead": 0.3 }
|
|
13
|
+
}
|