pando-ai 1.1.7 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -75
- package/dist/cli.js +202 -202
- package/dist/watcher-process.js +2 -2
- package/dist/workers/{chunk-WYR734MG.mjs → chunk-6CRK2JH6.mjs} +1 -1
- package/dist/workers/chunk-CGVA3QGF.mjs +4 -0
- package/dist/workers/indexer-worker.mjs +1 -1
- package/dist/workers/snapshot-worker.mjs +1 -1
- package/dist/workers/sqlite-writer-worker.mjs +1 -1
- package/package.json +1 -1
- package/tools/clojure-editor/lib/pando-clojure-editor-standalone.jar +0 -0
- package/tools/clojure-indexer/lib/pando-clojure-indexer-standalone.jar +0 -0
- package/dist/workers/chunk-MGQRPDUI.mjs +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as B,b as L,c as q,d as R,e as C,f as z,i as F,j as N}from"./chunk-
|
|
1
|
+
import{a as B,b as L,c as q,d as R,e as C,f as z,i as F,j as N}from"./chunk-6CRK2JH6.mjs";import"./chunk-CGVA3QGF.mjs";import{c as X}from"./chunk-RRIZV7YJ.mjs";import{parentPort as l,threadId as ne}from"worker_threads";import K from"fs";import _ from"path";import{promises as G}from"fs";import H from"ignore";import{createHash as se}from"crypto";var te=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_FILES||"64")),re=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_BYTES||`${1024*1024}`)),ce=Math.max(1,Number(process.env.PANDO_BATCH_INDEX_MAX_WAIT_MS||"15")),le=Math.max(te,Number(process.env.PANDO_BATCH_INDEX_MAX_PENDING_FILES||"256")),he=Math.max(re,Number(process.env.PANDO_BATCH_INDEX_MAX_PENDING_BYTES||`${8*1024*1024}`));var be=1*1024*1024,Me=Math.max(3e4,Number(process.env.PANDO_WORKER_INIT_TIMEOUT_MS||12e4)),ie=Math.max(1e3,Number(process.env.PANDO_ACTIVE_CONTEXT_STALL_LOG_MS||1e4)),We=Math.max(ie,Number(process.env.PANDO_ACTIVE_CONTEXT_STALL_FAIL_MS||6e5)),Be=q();function U(e,t){return Buffer.from(e).toString(t)}function D(e,t,o,r,d,u){let m=Buffer.from(e),n=se("sha1").update(m).digest("hex"),i=u??m.toString(d),c=i?i.split(/\r?\n/).length:0;return{relPath:t,size:o,mtime:r,objectId:n,lineCount:c,encoding:d}}if(!l)throw new Error("Indexer worker must be spawned as a worker thread");X();function h(e,t){try{if(t===void 0){console.error(`[${new Date().toISOString()}] [IndexerWorker] ${e}`);return}console.error(`[${new Date().toISOString()}] [IndexerWorker] ${e} ${JSON.stringify({pid:process.pid,threadId:ne,...t&&typeof t=="object"&&!Array.isArray(t)?t:{details:t}})}`)}catch{}}h("module loaded",{cwd:process.cwd(),hasParentPort:!!l,envWorkerRoot:process.env.PANDO_WORKER_SCRIPT_DIR??null,envRuntimeRoot:process.env.PANDO_RUNTIME_ROOT??null});var J=new Map,E="",T="index",b=new Map,v=new Set;function Y(e,t){return _.relative(e,t).replace(/\\/g,"/")}function ae(e,t){let o=(t||[]).map(r=>typeof r=="string"?r.trim():"").filter(Boolean).map(r=>r.replace(/^[\\/]+/,"").replace(/[\\/]+$/,"")).map(r=>r.endsWith("/")?r:`${r}/`);return o.length?r=>{let d=Y(e,r);if(!d||d.startsWith(".."))return!1;let u=d.endsWith("/")?d:`${d}/`;return o.some(m=>u.startsWith(m))}:null}async function oe(e){await new Promise(t=>{b.set(e,t)})}l.on("message",async e=>{if(e.cmd==="scan-ack"){let t=b.get(e.requestId);if(t){b.delete(e.requestId);try{t()}catch{}}return}if(e.cmd==="scan-cancel"){v.add(e.requestId);let t=b.get(e.requestId);if(t){b.delete(e.requestId);try{t()}catch{}}return}if(e.cmd==="init"){try{h("init received",{mode:e.mode??"index",projectRoot:typeof e.projectRoot=="string"?e.projectRoot:null}),typeof e.projectRoot=="string"&&(E=e.projectRoot),T=e.mode??"index",h("init completed",{mode:T,projectRoot:E}),l.postMessage({type:"ready"})}catch(t){h("init failed",{error:t?.message||String(t),stack:t?.stack??null}),l.postMessage({type:"error",message:`init failed: ${t?.message||t}`,stack:t?.stack})}return}if(e.cmd==="scan"){let t=e.requestId,o=typeof e.projectRoot=="string"?e.projectRoot:E;if(h("scan received",{requestId:t,projectRoot:o||null,batchSize:e.batchSize??null,maxFileBytes:e.maxFileBytes??null,excludeDirs:Array.isArray(e.excludeDirs)?e.excludeDirs.slice(0,20):[]}),!o){l.postMessage({type:"error",requestId:t,message:"worker not initialized"});return}let r=Math.max(1,Math.min(500,Number(e.batchSize||100))),d=Math.max(1,Number(e.maxFileBytes||1*1024*1024)),u=e.languageSupport,m=z(u),n=ae(o,e.excludeDirs??[]),i=N(o),c=new Set(["node_modules",".git",".pando-data"]),S=a=>a.replace(/\\/g,"/"),w=await F(o,""),g=H().add(w),f=[{dir:o,relDir:"",rules:w,ig:g}],y=0,s=0,p=[],x=async()=>{p.length&&(l.postMessage({type:"scan:batch",requestId:t,files:p}),p=[],await oe(t))};try{for(;f.length&&!v.has(t);){let a=f.pop(),$=[];try{$=await G.readdir(a.dir,{withFileTypes:!0})}catch{s+=1;continue}for(let k of $){if(v.has(t))break;let I=_.join(a.dir,k.name);if(k.isSymbolicLink?.()){s+=1;continue}if(k.isDirectory()){if(c.has(k.name)){s+=1;continue}if(n?.(I)){s+=1;continue}let Q=a.relDir?`${a.relDir}/${k.name}`:k.name,W=S(Q);if(a.ig.ignores(W)&&!i?.hasDescendant(W)){s+=1;continue}let A=a.rules.slice(),j=await F(I,W);j.length&&A.push(...j);let Z=H().add(A);f.push({dir:I,relDir:W,rules:A,ig:Z});continue}if(!k.isFile()){s+=1;continue}if(n?.(I)){s+=1;continue}let P=Y(o,I);if(!P||P.startsWith("..")){s+=1;continue}if(a.ig.ignores(P)&&!i?.hasFile(P)){s+=1;continue}let V=_.extname(k.name).toLowerCase();if(!m.has(V)){s+=1;continue}let O=R(P);if(!O){s+=1;continue}let M;try{M=await G.stat(I)}catch{s+=1;continue}if(M.size>d){s+=1;continue}p.push({relPath:P,absPath:I,mtimeMs:Math.floor(M.mtimeMs),size:M.size,lang:O}),y+=1,p.length>=r&&await x()}}v.has(t)||await x(),l.postMessage({type:"scan:done",requestId:t,discovered:y,skipped:s,cancelled:v.has(t)}),h("scan complete",{requestId:t,discovered:y,skipped:s,cancelled:v.has(t)})}catch(a){h("scan failed",{requestId:t,error:a?.message||String(a),stack:a?.stack??null}),l.postMessage({type:"error",requestId:t,message:a?.message||String(a),stack:a?.stack})}finally{v.delete(t),b.delete(t)}return}if(e.cmd==="process"){let t=e.role??T,o=typeof e.projectRoot=="string"?e.projectRoot:E;if(!o){l.postMessage({type:"error",requestId:e.requestId,message:"worker not initialized"});return}let{file:r}=e,d=r.encoding??"utf8",u=r.sharedBuffer,m={size:r.size,mtime:r.mtime};try{let n=r.lang??"ts",i,c,S=()=>{if(c&&typeof i=="string")return{content:i,sharedBuffer:c};if(u instanceof SharedArrayBuffer)return c=u,i=U(u,d),{content:i,sharedBuffer:c};if(u instanceof ArrayBuffer){let x=Buffer.from(u),a=new SharedArrayBuffer(x.byteLength);return new Uint8Array(a).set(x),c=a,i=x.toString(d),{content:i,sharedBuffer:c}}let s=K.readFileSync(r.absPath),p=new SharedArrayBuffer(s.byteLength);return new Uint8Array(p).set(s),c=p,i=s.toString(d),{content:i,sharedBuffer:c}},w=()=>{let s=B(n,r.relPath,m),p=S();l.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:s.payload,meta:{size:s.fileSize,mtime:s.mtime},snapshotSummary:D(p.sharedBuffer,r.relPath,r.size,r.mtime,d,p.content)}})},g=`${o}:${n}`,f=J.get(g);if(!f)try{h("creating language indexer",{role:t,requestId:e.requestId,lang:n,projectRoot:o});let s=C(n);if(!L(s))throw new Error(`${n} is not a worker-indexed language`);f=s.createIndexer(o),J.set(g,f),h("language indexer ready",{role:t,requestId:e.requestId,lang:n,projectRoot:o})}catch(s){h("language indexer create failed",{role:t,requestId:e.requestId,lang:n,error:s?.message||String(s),stack:s?.stack??null}),w();return}({content:i,sharedBuffer:c}=S());let y;try{y=await f.process({absPath:r.absPath,relPath:r.relPath,content:i,meta:m,preDeleted:!!r.preDeleted,lang:n,emitMode:r.emitMode})}catch(s){h("process failed",{role:t,requestId:e.requestId,lang:n,relPath:r.relPath,error:s?.message||String(s),stack:s?.stack??null}),w();return}l.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:y.payload,meta:{size:y.fileSize,mtime:y.mtime},snapshotSummary:D(c,r.relPath,r.size,r.mtime,d,i)}})}catch(n){h("process wrapper failed",{role:t,requestId:e.requestId,relPath:r.relPath,error:n?.message||String(n),stack:n?.stack??null});try{let i=r.lang??"ts",c=K.readFileSync(r.absPath),S=new SharedArrayBuffer(c.byteLength);new Uint8Array(S).set(c);let w=c.toString(d),g=B(i,r.relPath,m);l.postMessage({type:"result",requestId:e.requestId,role:"index",relPath:r.relPath,result:{payload:g.payload,meta:{size:g.fileSize,mtime:g.mtime},snapshotSummary:D(S,r.relPath,r.size,r.mtime,d,w)}})}catch(i){l.postMessage({type:"error",requestId:e.requestId,message:i?.message||n?.message||String(i??n),stack:i?.stack??n?.stack})}}return}e.cmd==="close"&&l.postMessage({type:"closed"})});process.on("uncaughtException",e=>{try{l.postMessage({type:"error",message:e?.message||String(e),stack:e?.stack})}catch{}});process.on("unhandledRejection",e=>{try{l.postMessage({type:"error",message:String(e)})}catch{}});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as I,h as Q,j as ct}from"./chunk-
|
|
1
|
+
import{g as I,h as Q,j as ct}from"./chunk-6CRK2JH6.mjs";import{a as V,b as at,c as J,e as R}from"./chunk-CGVA3QGF.mjs";import{a as Z,b as Pt}from"./chunk-7AHKQTIK.mjs";import{a as kt,c as lt}from"./chunk-RRIZV7YJ.mjs";import{parentPort as j}from"worker_threads";import st from"path";import*as o from"fs";import*as M from"path";import*as u from"isomorphic-git";function xt(){return new Date().toISOString()}function X(r,t,e){let n=`[${xt()}] [${r.toUpperCase()}] ${t}`;if(!e)return n;try{return n+" "+JSON.stringify(e)}catch{return n}}var B={debug:(r,t)=>{try{process.stderr.write(X("debug",r,t)+`
|
|
2
2
|
`)}catch{}},info:(r,t)=>{try{process.stderr.write(X("info",r,t)+`
|
|
3
3
|
`)}catch{}},warn:(r,t)=>{try{process.stderr.write(X("warn",r,t)+`
|
|
4
4
|
`)}catch{}},error:(r,t)=>{try{process.stderr.write(X("error",r,t)+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as pe,e as ie,f as F}from"./chunk-
|
|
1
|
+
import{d as pe,e as ie,f as F}from"./chunk-CGVA3QGF.mjs";import{a as se,b as Ue}from"./chunk-7AHKQTIK.mjs";import{c as Re}from"./chunk-RRIZV7YJ.mjs";Ue();import{parentPort as S,threadId as Ae}from"worker_threads";import K from"path";import ce from"fs";import{inspect as Be}from"util";import Pe from"os";function Ge(e){e.exec(`
|
|
2
2
|
PRAGMA journal_mode=WAL;
|
|
3
3
|
PRAGMA synchronous=OFF;
|
|
4
4
|
PRAGMA temp_store=MEMORY;
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{b as O}from"./chunk-RRIZV7YJ.mjs";var k=O(()=>{"use strict"});import s from"path";import E from"os";import u from"fs";import $ from"crypto";function D(){return process.env.PANDO_DATA_DIR||s.join(E.homedir(),h)}function P(t){let n=t,r=s.parse(n);for(;n.length>r.root.length&&/[\\/]+$/.test(n);)n=n.replace(/[\\/]+$/,"");return n}function g(t){let n=s.resolve(t),r=n;try{let e=u.realpathSync.native;r=typeof e=="function"?e(n):u.realpathSync(n)}catch{}return P(r)}function W(t){let n=t.trim().replace(/\.git$/,"");if(!n)return null;let r=n.match(/^git@([^:]+):(.+)$/);if(r){let e=r[1],i=r[2].replace(/^\/+/,"").split("/");if(i.length>=2)return`${e}/${i[0]}/${i[1]}`}try{let e=new URL(n),o=e.hostname,c=e.pathname.replace(/^\/+/,"").split("/");if(o&&c.length>=2)return`${o}/${c[0]}/${c[1]}`}catch{}return null}function m(t){return $.createHash("sha1").update(t).digest("hex").slice(0,12)}function L(t){return t.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").replace(/[^A-Za-z0-9._-]+/g,"-").replace(/-+/g,"-").replace(/^[-._]+|[-._]+$/g,"").slice(0,64).replace(/^[-._]+|[-._]+$/g,"")||"workspace"}function C(t,n){let r=s.basename(P(t));return`${L(r)}-${n}`}function _(){return s.join(D(),"workspace-registry.json")}function p(t){try{return u.readFileSync(t,"utf8").trim()}catch{return null}}function N(t){let n=s.join(t,".git");try{let r=u.statSync(n);if(r.isDirectory())return n;if(r.isFile()){let o=p(n)?.match(/^gitdir:\s*(.+)$/i);if(o){let i=o[1].trim();return s.isAbsolute(i)?i:s.resolve(t,i)}}}catch{return null}return null}function T(t){let n=s.join(t,"commondir"),r=p(n);if(!r)return g(t);let e=s.isAbsolute(r)?r:s.resolve(t,r);return g(e)}function G(t){return g(s.join(t,"objects"))}function F(t){let n=g(t);for(;;){let r=s.join(n,".git");if(u.existsSync(r))return n;let e=s.dirname(n);if(e===n)break;n=e}return null}function M(t){let n=g(t),r=F(n);return r?g(r):null}function H(t){let n=s.join(t,"config"),r=p(n);if(!r)return null;let e=r.split(/\r?\n/),o=!1,i=null;for(let c of e){if(c.match(/^\s*\[remote\s+"([^"]+)"\]\s*$/)){o=!0;continue}if(c.startsWith("[")&&(o=!1),o){let a=c.match(/^\s*url\s*=\s*(.+)$/);if(a&&(i=a[1].trim(),i))return i}}return i}function U(t){let n=s.join(t,"HEAD"),r=p(n);if(!r)return{branch:null,commit:null};if(r.startsWith("ref:")){let e=r.replace("ref:","").trim(),o=e.split("/").slice(-1)[0]||null,i=s.join(t,e),c=p(i);if(!c){let l=p(s.join(t,"packed-refs"));if(l){let a=l.split(/\r?\n/).find(f=>f.endsWith(` ${e}`));a&&(c=a.split(" ")[0])}}return{branch:o,commit:c||null}}return{branch:"HEAD",commit:r||null}}function z(){try{let t=u.readFileSync(_(),"utf8"),n=JSON.parse(t);if(n&&n.version===1&&n.entries&&typeof n.entries=="object")return{version:1,entries:n.entries}}catch{}return{version:1,entries:{}}}function J(t){let n=_(),r=s.dirname(n);u.mkdirSync(r,{recursive:!0});let e=`${n}.${process.pid}.${Date.now()}.tmp`;u.writeFileSync(e,`${JSON.stringify(t,null,2)}
|
|
2
|
-
`,"utf8"),u.renameSync(e,n)}function B(t,n){if(!n)return{canonicalRepoRoot:t,gitCommonDir:null,gitObjectDir:null,fingerprint:`non-git:path:${t}`};let r=N(n),e=r?T(r):null,o=e?G(e):null;return{canonicalRepoRoot:n,gitCommonDir:e,gitObjectDir:o,fingerprint:["git",`root:${n}`,`common:${e??""}`,`objects:${o??""}`].join("|")}}function X(t){if(!(process.env.PANDO_SECURITY_HELPER_LAUNCHED==="1"||process.env.PANDO_PROCESS_ROLE==="core"))try{let n=z();n.entries[t.storageRoot]={workspaceId:t.id,workspaceDirName:t.dirName,locationId:t.locationId,incarnationId:t.incarnationId,canonicalProjectRoot:t.canonicalProjectRoot,canonicalRepoRoot:t.canonicalRepoRoot,storageRoot:t.storageRoot,repoIdentity:t.repoIdentity??null,gitCommonDir:t.gitCommonDir??null,gitObjectDir:t.gitObjectDir??null,remote:t.remote??null,branch:t.branch??null,commit:t.commit??null,updatedAt:new Date().toISOString()},J(n)}catch{}}function V(t){let n=g(t),r=M(n),e=r??n,o=r,i=m(e),c=B(e,o),l=m(c.fingerprint),a=`ws-${m(`${i}:${l}`)}`,f=C(e,a);if(!o)return{id:a,dirName:f,locationId:i,incarnationId:l,canonicalProjectRoot:n,canonicalRepoRoot:e,storageRoot:e,gitCommonDir:c.gitCommonDir,gitObjectDir:c.gitObjectDir,repoIdentity:null,remote:null,branch:null,commit:null};let d=N(o),I=d?H(d):null,w=I?W(I):null,b=d?U(d):{branch:null,commit:null};return{id:a,dirName:f,locationId:i,incarnationId:l,canonicalProjectRoot:n,canonicalRepoRoot:o,storageRoot:e,gitCommonDir:c.gitCommonDir,gitObjectDir:c.gitObjectDir,repoIdentity:w??`local:${m(e)}`,remote:I,branch:b.branch,commit:b.commit}}function K(t){let n=V(t);return X(n),s.join(D(),"workspaces",n.dirName)}function yt(t){return s.join(K(t),".pando-snapshots.db")}var h,A=O(()=>{"use strict";k();h=".pando-data"});A();import j from"fs";import x from"os";import S from"path";import{inspect as Y}from"util";function v(){let t=process.env.PANDO_LOG_DIR||process.env.PANDO_WORKSPACE_DATA_DIR;if(t)return t;try{return D()}catch{let r=typeof x.homedir=="function"?x.homedir():process.env.HOME;if(r)return S.join(r,h)}let n=process.env.HOME||process.cwd();return S.join(n,h)}function q(){return S.join(v(),"pando.log")}var y=t=>{if(t==null)return!1;let n=t.trim().toLowerCase();return n!=="0"&&n!=="false"&&n!=="off"&&n!=="no"},Q=y(process.env.PANDO_LOG_DISABLED),R=!Q&&(process.env.PANDO_DEBUG==null||y(process.env.PANDO_DEBUG)),Z=R&&(process.env.PANDO_INDEX_HOT_LOG==null||y(process.env.PANDO_INDEX_HOT_LOG)),tt=R&&(process.env.PANDO_INDEX_TIMING==null||y(process.env.PANDO_INDEX_TIMING)),nt=new Set(["BatchAnalysisScheduler","ClojureIndex","ClojureIndexer","ThreadedIndexer"]),rt=new Set(["IndexTiming"]);function et(){try{j.mkdirSync(v(),{recursive:!0})}catch{}}function ot(t){if(t!==void 0)try{return typeof t=="string"?t:Y(t,{depth:null,breakLength:1/0,maxArrayLength:1/0})}catch{try{return JSON.stringify(t)}catch{return String(t)}}}var it=!1;function Pt(){return R}function st(t){return R?rt.has(t)?tt:!(!Z&&nt.has(t)):!1}function _t(t,n,r){if(!st(t))return;let e=new Date().toISOString(),o=ot(r),i=o?`[${e}] [${t}] ${n} :: ${o}`:`[${e}] [${t}] ${n}`;if(!it&&!process.env.PANDO_QUIET)try{process.stderr.write(i+`
|
|
3
|
-
`)}catch{}try{et(),j.appendFileSync(q(),i+`
|
|
4
|
-
`,"utf8")}catch{}}import{createHash as ct}from"crypto";var at=/^-?\d+$/,ut=(1n<<63n)-1n;function lt(t){let n=ct("sha1").update(t).digest(),r=0n;for(let e=0;e<8;e+=1)r=r<<8n|BigInt(n[e]);return r&ut}function xt(t){if(t==null)return null;if(typeof t=="bigint")return t;if(typeof t=="number"&&Number.isFinite(t))return BigInt(Math.trunc(t));if(typeof t=="string"){let n=t.trim();if(!n)return null;if(at.test(n))try{return BigInt(n)}catch{return null}return lt(n)}return null}export{K as a,yt as b,A as c,Pt as d,_t as e,xt as f};
|