@systemfsoftware/omp-claude-compat 1.1.4 → 1.1.6
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/dist/CommandExecutor-DYErWuMr.js +1 -0
- package/dist/dist-DO_QG0qW.js +18 -0
- package/dist/esm-DBTIrgAu.js +55 -0
- package/dist/hook-dispatcher.executor-B6Jon79H.js +3 -0
- package/dist/index.js +1 -1493
- package/dist/inject-instructions.executor-C0s4_7XL.js +3 -0
- package/dist/runtime-CMq7fttJ.js +1 -0
- package/package.json +17 -11
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{D as e,Dn as t,E as n,En as r,Et as i,H as a,On as o,Pt as s,Rt as c,Sn as l,T as u,Tt as d,V as f,bt as p,gt as m,kn as h,pt as g,wn as _,y as v,z as y}from"./esm-DBTIrgAu.js";import{c as b,d as x,t as S}from"./dist-DO_QG0qW.js";const C=[`AGENTS.md`];var w=class extends e()(`Inject`,{}){},T=class extends e()(`Skip`,{matched:u}){};n({baseName:u,skipList:v(u)});const E=e=>l(e.skipList.find(t=>t===e.baseName)),D=e=>a(E(e)).pipe(f(`None`,()=>new w),f(`Some`,e=>new T({matched:e.value})),y),O=p(`extractRefs`)(function*(e,t,n){let r=yield*x,i=yield*b,a=[];for(let o of e.split(`
|
|
2
|
+
`)){let e=o.trim().replace(/^[-*+]\s+/,``);if(!e.startsWith(`@`))continue;let s=e.slice(1).trim();if(!s||s.includes(` `)||i.isAbsolute(s))continue;let c=i.resolve(t,s);if(c.startsWith(n+`/`)||c===n){let e=yield*m(r.exists(c));if(h(e)&&e.right){a.push({sourcePath:t,resolvedPath:c});continue}}let l=i.resolve(n,s);(l.startsWith(n+`/`)||l===n)&&l!==c&&a.push({sourcePath:n,resolvedPath:l})}return a}),k=p(`loadReferencedContent`)(function*(e){let n=yield*x,l=yield*b,u=yield*S,p=[l.resolve(e,`CLAUDE.md`),l.resolve(e,`.claude`,`CLAUDE.md`)],v=[];for(let t of p){let r=yield*m(n.readFileString(t,`utf-8`));if(h(r)){let n=yield*O(r.right,l.dirname(t),e);v.push(...n)}}let w=new Set,T=[];for(let e of v)w.has(e.resolvedPath)||(w.add(e.resolvedPath),T.push(e));let E=(yield*u.load(e).pipe(c(t=>i(`[omp-claude-compat] could not read systemfsoftware.toml in ${e}; using the default skip list`,t)),g(()=>s(void 0))))?.no_inject_refs??C,k=[];for(let s of T){let c=s.resolvedPath.slice(e.length+1),u=a(D({baseName:l.basename(s.resolvedPath),skipList:E})).pipe(f(`Skip`,e=>t(e.matched)),f(`Inject`,()=>r()),y);if(_(u)){yield*d(`[omp-claude-compat] skipped @-ref ${c}: host already provides ${u.value}`);continue}let p=yield*m(n.readFileString(s.resolvedPath,`utf-8`));if(o(p)){yield*i(`[omp-claude-compat] could not read @-ref ${c}; skipping it`);continue}k.push(`## ${c}\n${p.right}\n`)}return k.length===0?``:[`# Injected @-references from CLAUDE.md`,`The following files were @-imported by CLAUDE.md and contain project rules.`,``,...k].join(`
|
|
3
|
+
`)});export{k as loadReferencedContent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,At as t,Cn as n,Ct as r,Dn as i,Dt as a,En as o,Fn as s,Ft as c,Gt as l,Ht as u,In as d,It as f,Kt as p,Lt as m,Mt as ee,Nt as te,Ot as ne,Pt as h,Q as re,Sn as g,Tn as ie,Ut as ae,Vt as oe,W as se,Wt as ce,_ as le,_n as ue,_t as de,an as _,at as v,c as fe,ct as y,d as pe,dn as me,dt as he,en as ge,et as b,f as _e,ft as x,ht as ve,i as ye,identity as be,in as xe,it as Se,jt as S,kt as Ce,lt as C,m as we,nn as w,nt as T,on as E,ot as D,p as O,pipe as k,rn as Te,rt as Ee,sn as A,t as De,tn as Oe,tt as ke,vt as j,xn as Ae,xt as je,yt as M}from"./esm-DBTIrgAu.js";import{a as Me,c as Ne,d as N,i as P,n as Pe,r as Fe,t as Ie}from"./CommandExecutor-DYErWuMr.js";import{_ as Le,b as F,d as I,f as L,g as Re,h as ze,l as Be,m as Ve,n as He,p as R,u as Ue,v as We,y as Ge}from"./dist-DO_QG0qW.js";import*as Ke from"node:os";import*as qe from"node:crypto";import*as z from"node:path";import*as B from"node:fs";import*as V from"node:child_process";const H=(e,t,n)=>(...r)=>x(i=>{try{e(...r,(e,n)=>{i(e?j(t?t(e,r):e):h(n))})}catch(e){i(n?j(n(e,r)):ve(e))}}),U=(e,t,n)=>ye(Je(e,t,n)),Je=(e,t,n)=>T(()=>Ze(e(),t,me(void 0),n)),Ye=(e,t,{encoding:n,endOnDone:r=!0}={},i=y)=>{let a=Xe(e,n),o=r?x(t=>{`closed`in e&&e.closed?t(y):(e.once(`finish`,()=>t(y)),e.end())}):y;return{awaitRead:()=>y,emit:a,error:e=>p(o,t(e)),done:e=>p(o,i)}},Xe=(e,t)=>n=>n.length===0?y:x(r=>{let i=n[Symbol.iterator](),a=i.next();function o(){let n=a;a=i.next();let s=e.write(n.value,t);a.done?r(y):s?o():e.once(`drain`,o)}o()}),Ze=(t,n,r,i)=>{if(!t.readable)return Ee;let a=ae(!1);function o(){a.unsafeOpen()}function s(e){r.current=ge(n(e)),a.unsafeOpen()}function c(){r.current=Oe,a.unsafeOpen()}t.on(`readable`,o),t.on(`error`,s),t.on(`end`,c);let l=i?.chunkSize?Number(i.chunkSize):void 0;return e(T(function e(){let n=t.read(l);if(n===null)return r.current?ke(r.current):(a.unsafeClose(),b(a.await,e));let i=[n];for(;;){if(n=t.read(l),n===null)return b(Se(ue(i)),e);i.push(n)}}),f(()=>{t.off(`readable`,o),t.off(`error`,s),t.off(`end`,c),i?.closeOnDone!==!1&&`closed`in t&&!t.closed&&t.destroy()}))},Qe=(e,t,n)=>le($e(e,t,n)),$e=(e,t,n)=>b(l(f(()=>e()),E()),([e,r])=>re(et(e,r,t),Ye(e,e=>xe(r,e),n,Te(r,y)))),et=(e,t,n)=>c(()=>{function r(e){A(t,j(n(e)))}return e.on(`error`,r),de(w(t),f(()=>{e.removeListener(`error`,r)}))}),W=(e,t)=>(n,[r])=>{let i=`Unknown`;switch(n.code){case`ENOENT`:i=`NotFound`;break;case`EACCES`:i=`PermissionDenied`;break;case`EEXIST`:i=`AlreadyExists`;break;case`EISDIR`:i=`BadResource`;break;case`ENOTDIR`:i=`BadResource`;break;case`EBUSY`:i=`Busy`;break;case`ELOOP`:i=`BadResource`;break}return new F({reason:i,module:e,method:t,pathOrDescriptor:r,syscall:n.syscall,description:n.message,cause:n})},tt=e=>typeof e==`string`?e:`pipe`,G=e=>typeof e==`string`?e:`pipe`,K=e=>e instanceof globalThis.Error?e:new globalThis.Error(String(e)),q=(e,t,n)=>{let r=Ne(n).reduce((e,t)=>{let n=`${t.command} ${t.args.join(` `)}`;return e.length===0?n:`${e} | ${n}`},``);return W(`Command`,e)(t,[r])},nt={[P]:P,...s,toJSON(){return{_id:`@effect/platform/CommandExecutor/Process`,pid:this.pid}}},J=e=>t=>{switch(t._tag){case`StandardCommand`:{let i=M(E(),e=>x(r=>{let i=V.spawn(t.command,t.args,{stdio:[tt(t.stdin),G(t.stdout),G(t.stderr)],cwd:n(t.cwd,d),shell:t.shell,env:{...process.env,...Object.fromEntries(t.env)},detached:process.platform!==`win32`});return i.on(`error`,e=>{r(j(q(`spawn`,e,t)))}),i.on(`exit`,(...t)=>{A(e,h(t))}),i.on(`spawn`,()=>{r(h([i,e]))}),f(()=>{i.kill(`SIGTERM`)})})),o=process.platform===`win32`?(e,n)=>x(n=>{V.exec(`taskkill /pid ${e.pid} /T /F`,e=>{n(e?j(q(`kill`,K(e),t)):y)})}):(e,n)=>u({try:()=>process.kill(-e.pid,n),catch:e=>q(`kill`,K(e),t)}),s=(e,n)=>c(()=>e.kill(n)?y:j(q(`kill`,new globalThis.Error(`Failed to kill process`),t)));return k(ie(t.cwd,{onNone:()=>y,onSome:t=>e.access(t)}),p(C(i,([e,t])=>M(_(t),n=>n?M(w(t),([t])=>t!==0&&t!==null?o(e,`SIGTERM`).pipe(r):y):o(e,`SIGTERM`).pipe(S(()=>s(e,`SIGTERM`)),p(w(t)),r)))),a(([e,n])=>{let r=we;e.stdin!==null&&(r=Qe(()=>e.stdin,e=>q(`toWritable`,K(e),t)));let i=M(w(n),([e,n])=>e===null?j(q(`exitCode`,new globalThis.Error(`Process interrupted due to receipt of signal: ${n}`),t)):h(Pe(e))),a=Ce(_(n)),c=(t=`SIGTERM`)=>o(e,t).pipe(S(()=>s(e,t)),p(he(w(n)))),l=Fe(e.pid),u=U(()=>e.stderr,e=>q(`fromReadable(stderr)`,K(e),t)),d=U(()=>e.stdout,e=>q(`fromReadable(stdout)`,K(e),t));return typeof t.stdout!=`string`&&(d=pe(d,t.stdout)),Object.assign(Object.create(nt),{pid:l,exitCode:i,isRunning:a,kill:c,stdin:r,stderr:u,stdout:d})}),typeof t.stdin==`string`?be:m(e=>je(fe(t.stdin,e.stdin))))}case`PipedCommand`:{let n=Ne(t);if(n.length===1)return k(n[0],J(e));let r=n[0],i=n.slice(1),o=i.slice(0,i.length-1),s=i[i.length-1];return k(N(s,o.reduce((t,n)=>k(N(n,t),J(e),a(e=>e.stdout),O),k(J(e)(r),a(e=>e.stdout),O))),J(e))}}},rt=v(Ie,k(I,a(e=>Me(J(e))))),Y=e=>t=>new Ge({module:`FileSystem`,method:e,cause:t}),it=(()=>{let e=H(B.access,W(`FileSystem`,`access`),Y(`access`));return(t,n)=>{let r=B.constants.F_OK;return n?.readable&&(r|=B.constants.R_OK),n?.writable&&(r|=B.constants.W_OK),e(t,r)}})(),at=(()=>{let e=H(B.cp,W(`FileSystem`,`copy`),Y(`copy`));return(t,n,r)=>e(t,n,{force:r?.overwrite??!1,preserveTimestamps:r?.preserveTimestamps??!1,recursive:!0})})(),ot=(()=>{let e=H(B.copyFile,W(`FileSystem`,`copyFile`),Y(`copyFile`));return(t,n)=>e(t,n)})(),st=(()=>{let e=H(B.chmod,W(`FileSystem`,`chmod`),Y(`chmod`));return(t,n)=>e(t,n)})(),ct=(()=>{let e=H(B.chown,W(`FileSystem`,`chown`),Y(`chown`));return(t,n,r)=>e(t,n,r)})(),lt=(()=>{let e=H(B.link,W(`FileSystem`,`link`),Y(`link`));return(t,n)=>e(t,n)})(),ut=(()=>{let e=H(B.mkdir,W(`FileSystem`,`makeDirectory`),Y(`makeDirectory`));return(t,n)=>e(t,{recursive:n?.recursive??!1,mode:n?.mode})})(),X=e=>{let t=H(B.mkdtemp,W(`FileSystem`,e),Y(e));return e=>c(()=>{let n=e?.prefix??``,r=typeof e?.directory==`string`?z.join(e.directory,`.`):Ke.tmpdir();return t(n?z.join(r,n):r+`/`)})},dt=X(`makeTempDirectory`),Z=e=>{let t=H(B.rm,W(`FileSystem`,e),Y(e));return(e,n)=>t(e,{recursive:n?.recursive??!1,force:n?.force??!1})},ft=Z(`remove`),pt=(()=>{let e=X(`makeTempDirectoryScoped`),n=Z(`makeTempDirectoryScoped`);return r=>C(e(r),e=>t(n(e,{recursive:!0})))})(),Q=e=>{let n=H(B.open,W(`FileSystem`,e),Y(e)),r=H(B.close,W(`FileSystem`,e),Y(e));return(e,i)=>k(C(n(e,i?.flag??`r`,i?.mode),e=>t(r(e))),a(e=>ht(Ue(e),i?.flag?.startsWith(`a`)??!1)))},mt=Q(`open`),ht=(()=>{let e=e=>H(B.read,W(`FileSystem`,e),Y(e)),t=e(`read`),n=e(`readAlloc`),r=H(B.fstat,W(`FileSystem`,`stat`),Y(`stat`)),s=H(B.ftruncate,W(`FileSystem`,`truncate`),Y(`truncate`)),l=H(B.fsync,W(`FileSystem`,`sync`),Y(`sync`)),u=e=>H(B.write,W(`FileSystem`,e),Y(e)),d=u(`write`),p=u(`writeAll`);class m{fd;append;[L];semaphore=ce(1);position=0n;constructor(e,t){this.fd=e,this.append=t,this[L]=L}get stat(){return a(r(this.fd),wt)}get sync(){return l(this.fd)}seek(e,t){let n=R(e);return this.semaphore.withPermits(1)(f(()=>(t===`start`?this.position=n:t===`current`&&(this.position+=n),this.position)))}read(e){return this.semaphore.withPermits(1)(a(c(()=>t(this.fd,{buffer:e,position:this.position})),e=>{let t=R(e);return this.position+=t,t}))}readAlloc(e){let t=Number(e);return this.semaphore.withPermits(1)(M(f(()=>Buffer.allocUnsafeSlow(t)),e=>a(n(this.fd,{buffer:e,position:this.position}),n=>{if(n===0)return o();if(this.position+=BigInt(n),n===t)return i(e);let r=Buffer.allocUnsafeSlow(n);return e.copy(r,0,0,n),i(r)})))}truncate(e){return this.semaphore.withPermits(1)(a(s(this.fd,e?Number(e):void 0),()=>{if(!this.append){let t=BigInt(e??0);this.position>t&&(this.position=t)}}))}write(e){return this.semaphore.withPermits(1)(a(c(()=>d(this.fd,e,void 0,void 0,this.append?void 0:Number(this.position))),e=>{let t=R(e);return this.append||(this.position+=t),t}))}writeAllChunk(e){return M(c(()=>p(this.fd,e,void 0,void 0,this.append?void 0:Number(this.position))),t=>t===0?j(new F({module:`FileSystem`,method:`writeAll`,reason:`WriteZero`,pathOrDescriptor:this.fd,description:`write returned 0 bytes written`})):(this.append||(this.position+=BigInt(t)),t<e.length?this.writeAllChunk(e.subarray(t)):y))}writeAll(e){return this.semaphore.withPermits(1)(this.writeAllChunk(e))}}return(e,t)=>new m(e,t)})(),gt=e=>{let t=X(e),n=Q(e),r=e=>f(()=>qe.randomBytes(e).toString(`hex`));return e=>k(l(t(e),r(6)),a(([t,n])=>z.join(t,n+(e?.suffix??``))),m(e=>ee(n(e,{flag:`w+`}))))},_t=gt(`makeTempFile`),vt=(()=>{let e=gt(`makeTempFileScoped`),n=Z(`makeTempFileScoped`);return r=>C(e(r),e=>t(n(z.dirname(e),{recursive:!0})))})(),yt=(e,t)=>oe({try:()=>B.promises.readdir(e,t),catch:t=>W(`FileSystem`,`readDirectory`)(t,[e])}),bt=e=>x((t,n)=>{try{B.readFile(e,{signal:n},(n,r)=>{t(n?j(W(`FileSystem`,`readFile`)(n,[e])):h(r))})}catch(e){t(j(Y(`readFile`)(e)))}}),xt=(()=>{let e=H(B.readlink,W(`FileSystem`,`readLink`),Y(`readLink`));return t=>e(t)})(),St=(()=>{let e=H(B.realpath,W(`FileSystem`,`realPath`),Y(`realPath`));return t=>e(t)})(),Ct=(()=>{let e=H(B.rename,W(`FileSystem`,`rename`),Y(`rename`));return(t,n)=>e(t,n)})(),wt=e=>({type:e.isFile()?`File`:e.isDirectory()?`Directory`:e.isSymbolicLink()?`SymbolicLink`:e.isBlockDevice()?`BlockDevice`:e.isCharacterDevice()?`CharacterDevice`:e.isFIFO()?`FIFO`:e.isSocket()?`Socket`:`Unknown`,mtime:g(e.mtime),atime:g(e.atime),birthtime:g(e.birthtime),dev:e.dev,rdev:g(e.rdev),ino:g(e.ino),mode:e.mode,nlink:g(e.nlink),uid:g(e.uid),gid:g(e.gid),size:R(e.size),blksize:g(R(e.blksize)),blocks:g(e.blocks)}),$=(()=>{let e=H(B.stat,W(`FileSystem`,`stat`),Y(`stat`));return t=>a(e(t),wt)})(),Tt=(()=>{let e=H(B.symlink,W(`FileSystem`,`symlink`),Y(`symlink`));return(t,n)=>e(t,n)})(),Et=(()=>{let e=H(B.truncate,W(`FileSystem`,`truncate`),Y(`truncate`));return(t,n)=>e(t,n===void 0?void 0:Number(n))})(),Dt=(()=>{let e=H(B.utimes,W(`FileSystem`,`utime`),Y(`utime`));return(t,n,r)=>e(t,n,r)})(),Ot=(e,t)=>De(n=>C(f(()=>{let r=B.watch(e,{recursive:t?.recursive},(e,t)=>{if(t)switch(e){case`rename`:n.fromEffect(ne($(t),{onSuccess:e=>h(ze({path:t})),onFailure:e=>e._tag===`SystemError`&&e.reason===`NotFound`?h(Re({path:t})):j(e)}));return;case`change`:n.single(Le({path:t}));return}});return r.on(`error`,t=>{n.fail(new F({module:`FileSystem`,reason:`Unknown`,method:`watch`,pathOrDescriptor:e,cause:t}))}),r.on(`close`,()=>{n.end()}),r}),e=>f(()=>e.close()))),kt=(e,t,r)=>$(t).pipe(a(i=>e.pipe(Ae(e=>e.register(t,i,r)),n(()=>Ot(t,r)))),_e),At=(e,t,n)=>x((r,i)=>{try{B.writeFile(e,t,{signal:i,flag:n?.flag,mode:n?.mode},t=>{r(t?j(W(`FileSystem`,`writeFile`)(t,[e])):y)})}catch(e){r(j(Y(`writeFile`)(e)))}}),jt=v(I,a(te(Ve),e=>We({access:it,chmod:st,chown:ct,copy:at,copyFile:ot,link:lt,makeDirectory:ut,makeTempDirectory:dt,makeTempDirectoryScoped:pt,makeTempFile:_t,makeTempFileScoped:vt,open:mt,readDirectory:yt,readFile:bt,readLink:xt,realPath:St,remove:ft,rename:Ct,stat:$,symlink:Tt,truncate:Et,utimes:Dt,watch(t,n){return kt(e,t,n)},writeFile:At}))),Mt=rt.pipe(D(jt),D(Be)),Nt=se(He.pipe(D(Mt)));export{Nt as default};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@systemfsoftware/omp-claude-compat",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.6",
|
|
5
5
|
"author": "Ryan Lee <drdgvhbh@gmail.com>",
|
|
6
6
|
"description": "OMP Claude Code compatibility: dispatch .claude/settings.json hooks + inject CLAUDE.md @-references",
|
|
7
7
|
"type": "module",
|
|
@@ -12,28 +12,29 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"dist"
|
|
14
14
|
],
|
|
15
|
-
"
|
|
15
|
+
"peerDependencies": {
|
|
16
16
|
"@effect/platform": "^0.97.0",
|
|
17
17
|
"@effect/platform-node": "^0.97.0",
|
|
18
|
+
"@oh-my-pi/pi-coding-agent": "^17.0.5",
|
|
18
19
|
"effect": "^3.22.0"
|
|
19
20
|
},
|
|
20
|
-
"peerDependencies": {
|
|
21
|
-
"@oh-my-pi/pi-coding-agent": "^17.0.5"
|
|
22
|
-
},
|
|
23
21
|
"devDependencies": {
|
|
22
|
+
"@effect/platform": "^0.97.0",
|
|
23
|
+
"@effect/platform-node": "^0.97.0",
|
|
24
24
|
"@effect/vitest": "0.30.0",
|
|
25
25
|
"@oh-my-pi/pi-coding-agent": "^17.0.5",
|
|
26
26
|
"@types/node": "^24",
|
|
27
|
+
"effect": "^3.22.0",
|
|
27
28
|
"fast-check": "^3",
|
|
28
29
|
"rimraf": "^6.1.3",
|
|
29
30
|
"tsdown": "^0.22.9",
|
|
30
31
|
"typescript": "^7",
|
|
31
32
|
"vitest": "^4",
|
|
32
33
|
"@systemfsoftware/effect-gherkin-spec": "^0.3.6",
|
|
33
|
-
"@systemfsoftware/omp-utils": "^0.0.0",
|
|
34
|
-
"@systemfsoftware/effect-memfs": "^1.0.6",
|
|
35
34
|
"@systemfsoftware/oxlint-config": "^0.1.0",
|
|
36
|
-
"@systemfsoftware/tsconfig": "^1.2.5"
|
|
35
|
+
"@systemfsoftware/tsconfig": "^1.2.5",
|
|
36
|
+
"@systemfsoftware/omp-utils": "^0.0.0",
|
|
37
|
+
"@systemfsoftware/effect-memfs": "^1.0.6"
|
|
37
38
|
},
|
|
38
39
|
"omp": {
|
|
39
40
|
"extensions": [
|
|
@@ -44,8 +45,14 @@
|
|
|
44
45
|
"provenance": true
|
|
45
46
|
},
|
|
46
47
|
"inlinedDependencies": {
|
|
48
|
+
"@effect/platform": "0.97.0",
|
|
49
|
+
"@effect/platform-node": "0.97.1",
|
|
50
|
+
"@effect/platform-node-shared": "0.50.1",
|
|
47
51
|
"@jsr/std__collections": "1.3.0",
|
|
48
|
-
"@jsr/std__toml": "1.0.11"
|
|
52
|
+
"@jsr/std__toml": "1.0.11",
|
|
53
|
+
"effect": "3.22.0",
|
|
54
|
+
"fast-check": "3.23.2",
|
|
55
|
+
"pure-rand": "6.1.0"
|
|
49
56
|
},
|
|
50
57
|
"repository": {
|
|
51
58
|
"type": "git",
|
|
@@ -53,9 +60,8 @@
|
|
|
53
60
|
"directory": "omp/plugins/omp-claude-compat"
|
|
54
61
|
},
|
|
55
62
|
"scripts": {
|
|
56
|
-
"clean": "rimraf dist",
|
|
57
63
|
"build": "rimraf dist && tsdown",
|
|
58
|
-
"
|
|
64
|
+
"clean": "rimraf dist",
|
|
59
65
|
"typecheck": "tsc --noEmit --incremental",
|
|
60
66
|
"test": "vitest run",
|
|
61
67
|
"lint": "oxlint . ${AGENT:+--format=unix --quiet}"
|