blade-code 0.10.83 → 0.10.85
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/blade.js +2 -2
- package/dist/{chunk-8215sm79.js → chunk-0nsrw84g.js} +1 -1
- package/dist/{chunk-t5ysd5z8.js → chunk-1gv7095w.js} +1 -1
- package/dist/{chunk-xepdd9yj.js → chunk-1jyr0t4q.js} +1 -1
- package/dist/{chunk-bd5e1n5z.js → chunk-1khv7fp2.js} +1 -1
- package/dist/{chunk-r4mjdkzv.js → chunk-1q3z3ryy.js} +1 -1
- package/dist/{chunk-t6phsb5h.js → chunk-21rjwgc2.js} +1 -1
- package/dist/{chunk-m0a75642.js → chunk-72th07qj.js} +1 -1
- package/dist/{chunk-aqkexfag.js → chunk-7md9r31q.js} +1 -1
- package/dist/{chunk-xp3ad15c.js → chunk-7ne59gra.js} +1 -1
- package/dist/{chunk-hqsqk5dp.js → chunk-7qa8rfmy.js} +1 -1
- package/dist/{chunk-69rpb78b.js → chunk-7wjqw574.js} +1 -1
- package/dist/{chunk-mgtcjwhy.js → chunk-99h419nm.js} +1 -1
- package/dist/{chunk-q14mgye7.js → chunk-9ye1s8tj.js} +1 -1
- package/dist/{chunk-d4k4v959.js → chunk-a0nb3aad.js} +1 -1
- package/dist/{chunk-73j10ezs.js → chunk-ax95qw8w.js} +1 -1
- package/dist/{chunk-k50z8903.js → chunk-bvzzq0jb.js} +1 -1
- package/dist/{chunk-fs9j9gas.js → chunk-c7sx7pa4.js} +1 -1
- package/dist/{chunk-js3j00ka.js → chunk-cxe0ghk2.js} +1 -1
- package/dist/{chunk-1htd858b.js → chunk-d7v34g3f.js} +2 -2
- package/dist/{chunk-4pksah0q.js → chunk-fevtj34k.js} +1 -1
- package/dist/{chunk-zp27f256.js → chunk-ff5y1ba2.js} +1 -1
- package/dist/{chunk-g832dwdm.js → chunk-h1gapq0a.js} +1 -1
- package/dist/{chunk-4rq0jhf4.js → chunk-hm782j80.js} +1 -1
- package/dist/{chunk-mq2nx77s.js → chunk-htt5c847.js} +1 -1
- package/dist/{chunk-a14vnxrf.js → chunk-jw8zwqyg.js} +1 -1
- package/dist/{chunk-r51ds5qw.js → chunk-knwa4gmn.js} +1 -1
- package/dist/chunk-kvk1bbqj.js +1 -0
- package/dist/{chunk-qb242y47.js → chunk-kzzzzymt.js} +1 -1
- package/dist/{chunk-p9a3d507.js → chunk-mhq9p8mm.js} +1 -1
- package/dist/{chunk-xy67pj74.js → chunk-ppyqrdqc.js} +3 -3
- package/dist/{chunk-fkwfymb6.js → chunk-q4c1nv7m.js} +1 -1
- package/dist/{chunk-cchk5xrs.js → chunk-rg3bvddy.js} +1 -1
- package/dist/{chunk-rmqksw1e.js → chunk-syg4pnbr.js} +1 -1
- package/dist/{chunk-3p808rrt.js → chunk-tbbc90bs.js} +1 -1
- package/dist/{chunk-2b7zryg3.js → chunk-xkb0zrjj.js} +1 -1
- package/dist/{chunk-xzgqyzmy.js → chunk-y8fswz6h.js} +35 -35
- package/dist/chunk-znv9g3mt.js +1 -0
- package/dist/web/assets/{ChatView-DRn47Y3l.js → ChatView-DMPNX1fC.js} +3 -3
- package/dist/web/assets/{CodeBlockHighlighter-DxATdO6i.js → CodeBlockHighlighter-DeJNC14V.js} +1 -1
- package/dist/web/assets/FilePreview-qWMpc2P_.js +8 -0
- package/dist/web/assets/{KanbanBoard-DEUuLh0H.js → KanbanBoard-DvHAwhcw.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-BA9VgOyM.js → MarkdownRenderer-BY51R1Fj.js} +3 -3
- package/dist/web/assets/{SettingsModal-CXq3qDgQ.js → SettingsModal-CZGKcV1S.js} +1 -1
- package/dist/web/assets/{TaskSwitcher-CUcZEUQH.js → TaskSwitcher-DgeqVRAB.js} +1 -1
- package/dist/web/assets/{TerminalPanel-CcC6f3H_.js → TerminalPanel-KOLgH_tg.js} +1 -1
- package/dist/web/assets/index-BNeDPN7E.css +1 -0
- package/dist/web/assets/{index-CfVQVVVI.js → index-DHX-G3RT.js} +4 -4
- package/dist/web/assets/{teamService-BX1zdQBb.js → teamService-Bxs4R7Al.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-mbt25rs5.js +0 -1
- package/dist/chunk-znhjr51w.js +0 -1
- package/dist/web/assets/FilePreview-D21mo4fn.js +0 -8
- package/dist/web/assets/index-8G4ejlcH.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as L4,k as B4}from"./chunk-gd2sw9zm.js";import{l as O1}from"./chunk-01zar8q6.js";import{s as J0,t as n$}from"./chunk-
|
|
1
|
+
import{j as L4,k as B4}from"./chunk-gd2sw9zm.js";import{l as O1}from"./chunk-01zar8q6.js";import{s as J0,t as n$}from"./chunk-1gv7095w.js";import{u as oO}from"./chunk-7md9r31q.js";import{A as O$,v as v$,w as s1,x as r1,y as e1,z as x0}from"./chunk-7wjqw574.js";import{$ as Y4,C as k4,F as y$,G as N0,H as R1,I as n0,J as L1,K as EO,L as m$,M as h$,N as g$,O as B1,P as mO,Q as S0,T as y0,U as f0,W as i4,X as u$,Y as p$,Z as Z4,_ as J4,aa as z4,ba as G4,ca as X4,da as V4,ea as N4,fa as K4,ia as H4,la as Ox,qa as q4}from"./chunk-ppyqrdqc.js";import{ta as N$,za as UO}from"./chunk-mhq9p8mm.js";import{Da as z1,Ga as P4,Ha as E1,Ia as d$,Ja as l$,Ka as y4,La as f4,Ma as k1,Na as m4,Oa as sO,Pa as A4,Qa as M4,Ra as T4,Sa as i$,Ta as c$,Ua as a$,Va as o$,Wa as o1,Xa as m1}from"./chunk-tpxs85cg.js";import{Eb as nO,gb as gO,hb as p,jb as S,kb as f$,vb as H1}from"./chunk-y8fswz6h.js";import{Pb as R$}from"./chunk-r8wbvxn7.js";import{Ac as I0,Bc as M1,Cc as P0,Ec as k$,Kc as q$,Lc as I$,Nc as z0,Qc as U1,Vc as P$,Wc as _1,Xc as D1,Yc as R,jc as E$,uc as t0}from"./chunk-xkb0zrjj.js";import{Sd as d4,Wd as QO,_d as U$,fe as BO}from"./chunk-9ye1s8tj.js";import{ge as F1}from"./chunk-g9xjcfrf.js";import{xe as C$}from"./chunk-44dzrn0p.js";import{ze as o0}from"./chunk-ax95qw8w.js";import{He as l4,Je as C4,Me as Q4,Qe as j0,Re as b0,Ve as zx,Ye as jO,Ze as C0,af as Gx}from"./chunk-h1gapq0a.js";import{of as _$,pf as S$}from"./chunk-ww51801m.js";import{tf as z$,uf as Z0}from"./chunk-hm782j80.js";import{Bg as T0,Mf as V$,eg as T$,hg as j$,jg as b$,wg as G$}from"./chunk-21rjwgc2.js";import{Eg as K1}from"./chunk-7m5q8vxf.js";import{Fg as q,Hg as V,Ig as eO,Kg as JO}from"./chunk-sk8h4m9m.js";import{Mg as r0,Pg as W1}from"./chunk-hg8d4vhj.js";import{Tg as c}from"./chunk-sb84vdcf.js";import{th as o}from"./chunk-ffa6hhee.js";import{zh as cO}from"./chunk-t1633e8m.js";import{Bh as W$,Ch as A$,Eh as F$,Fh as M$}from"./chunk-m5f934fh.js";import{Hh as Q0}from"./chunk-c7sx7pa4.js";import{Oh as f1}from"./chunk-rwvaapta.js";import{Uh as i0,Yh as x$,Zh as s0}from"./chunk-shr5cg46.js";import{$h as I1}from"./chunk-6jsmac0q.js";var U3={port:{type:"number",describe:"Port to listen on (0 for auto)",default:0},hostname:{type:"string",describe:"Hostname to listen on",default:"127.0.0.1"},cors:{type:"array",describe:"Additional domains to allow for CORS",default:[]}};function _3(O){return{port:O.port??0,hostname:O.hostname??"127.0.0.1",cors:O.cors??[]}}import{existsSync as h1,readFileSync as g0}from"node:fs";import{createServer as c2}from"node:http";import{networkInterfaces as a2}from"node:os";import{dirname as o2,extname as n2,join as dO}from"node:path";import{fileURLToPath as t2}from"node:url";import{brotliCompressSync as s2,gzipSync as r2,constants as e2}from"node:zlib";import{Hono as O3}from"hono";import{cors as $3}from"hono/cors";import{WebSocketServer as x3}from"ws";var $0=o("Service"),Nx=30000,Kx=new Set(["completed","failed","cancelled","interrupted"]);class G1{dispatch;store;tickMs;timer;unsubscribeBus;ticking=!1;inFlight=new Set;constructor(O){this.dispatch=O.dispatch,this.store=O.store??o1.getInstance(),this.tickMs=O.tickMs??Nx}start(){if(this.timer)return;$0.info("[TaskScheduler] Starting scheduler tick loop"),this.timer=setInterval(()=>{this.tick()},this.tickMs),this.timer.unref?.(),this.unsubscribeBus=S.subscribe((O)=>{if(O.type!=="task.status")return;let $=O.properties.taskStatus;if(typeof $!=="string"||!Kx.has($))return;this.recordTerminalStatus(O.sessionId,$,typeof O.properties.taskStatusReason==="string"?O.properties.taskStatusReason:void 0)}),this.tick()}stop(){if(this.timer)clearInterval(this.timer),this.timer=void 0,this.unsubscribeBus?.(),this.unsubscribeBus=void 0,$0.info("[TaskScheduler] Stopped scheduler tick loop")}async tick(O=new Date){if(this.ticking)return;this.ticking=!0;try{let $=await this.store.list();for(let x of $)await this.evaluate(x,O)}catch($){$0.warn("[TaskScheduler] Tick failed:",$)}finally{this.ticking=!1}}async evaluate(O,$){if(!O.enabled)return;if(this.inFlight.has(O.id))return;if(O.expiresAt&&new Date(O.expiresAt).getTime()<=$.getTime()){await this.store.update(O.id,{enabled:!1,nextRunAt:null}),$0.info(`[TaskScheduler] Schedule ${O.id} expired; disabled`);return}if(!O.nextRunAt)return;if(!(new Date(O.nextRunAt).getTime()<=$.getTime()))return;await this.fire(O,$)}async fire(O,$=new Date,x={}){if(this.inFlight.has(O.id))throw Error(`Schedule ${O.id} is already dispatching`);this.inFlight.add(O.id);let Q=$.toISOString();try{let Z=await this.dispatch({prompt:O.prompt,title:O.title??Wx(O),sourceProjectPath:O.projectPath,isolation:O.dispatch.isolation??"worktree",permissionMode:O.dispatch.permissionMode??"default",modelId:O.dispatch.modelId,reasoningEffort:O.dispatch.reasoningEffort,serviceTier:O.dispatch.serviceTier,responseVerbosity:O.dispatch.responseVerbosity,communicationStyle:O.dispatch.communicationStyle}),G=O.trigger.kind==="once"?null:x.manual?O.nextRunAt?new Date(O.nextRunAt):null:z1(O.trigger,$,$);await this.store.update(O.id,{lastRunAt:Q,lastRunSessionId:Z.session.sessionId,lastStatus:Z.status,lastError:void 0,runCount:O.runCount+1,nextRunAt:G?G.toISOString():null,enabled:O.trigger.kind==="once"?!1:O.enabled}),S.publish({sessionId:Z.session.sessionId,projectPath:O.projectPath},"schedule.fired",{scheduleId:O.id,firedAt:Q,sessionId:Z.session.sessionId,runId:Z.runId,status:Z.status}),$0.info(`[TaskScheduler] Fired schedule ${O.id} -> session ${Z.session.sessionId} (${Z.status})`)}catch(Z){let G=Z instanceof Error?Z.message:String(Z);$0.warn(`[TaskScheduler] Schedule ${O.id} dispatch failed:`,Z);let z=O.trigger.kind==="once"?null:x.manual?O.nextRunAt?new Date(O.nextRunAt):null:z1(O.trigger,$,$);await this.store.update(O.id,{lastRunAt:Q,lastStatus:"error",lastError:G,nextRunAt:z?z.toISOString():null,enabled:O.trigger.kind==="once"?!1:O.enabled})}finally{this.inFlight.delete(O.id)}}async recordTerminalStatus(O,$,x){let Z=(await this.store.list()).find((G)=>G.lastRunSessionId===O);if(!Z)return;await this.store.update(Z.id,{lastStatus:$,...x?{lastError:x}:{lastError:void 0}})}}function Wx(O){return`Scheduled: ${O.prompt.trim().replace(/\s+/g," ").slice(0,60)}`}class xO extends Error{code;statusCode;details;constructor(O,$,x=500,Q){super($);this.code=O;this.statusCode=x;this.details=Q;this.name="BladeServerError"}toObject(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}class f extends xO{constructor(O,$){super("NOT_FOUND",$?`${O} not found: ${$}`:`${O} not found`,404)}}class _ extends xO{constructor(O){super("BAD_REQUEST",O,400)}}class k extends xO{constructor(O){super("CONFLICT",O,409)}}class kO extends xO{constructor(O,$){super("TOO_MANY_REQUESTS",O,429,$)}}class qO extends xO{constructor(O="Server is shutting down"){super("SERVICE_UNAVAILABLE",O,503)}}class LO extends xO{constructor(){super("AMBIGUOUS_SESSION","Multiple workspaces contain this session ID; projectPath is required",409)}}class t extends xO{constructor(O="Internal server error"){super("INTERNAL_ERROR",O,500)}}var T3=V.Object({error:V.Object({code:V.String(),message:V.String(),details:V.Optional(V.Record(V.String(),V.Unknown()))})});import{Hono as Fx}from"hono";var X1=o("Service"),Ux=V.Object({updates:V.Record(V.String(),V.Any()),options:V.Optional(V.Object({scope:V.Optional(JO(["local","project","global"])),immediate:V.Optional(V.Boolean())}))});function _x(O){return{currentModelId:O.currentModelId,permissionMode:O.permissionMode,language:O.language,codeTheme:O.codeTheme,uiTheme:O.uiTheme,autoSaveSessions:O.autoSaveSessions,notifyBuild:O.notifyBuild,notifyErrors:O.notifyErrors,notifySounds:O.notifySounds,privacyTelemetry:O.privacyTelemetry,privacyCrash:O.privacyCrash,agentTeamsEnabled:O.agentTeamsEnabled===!0,communicationStyle:O.communicationStyle,maxConcurrentTasks:O.maxConcurrentTasks,maxQueuedTasks:O.maxQueuedTasks,maxQueuedTaskBytes:O.maxQueuedTaskBytes,maxResidentSessionRuntimes:O.maxResidentSessionRuntimes,sessionRuntimeIdleMs:O.sessionRuntimeIdleMs}}var n1=()=>{let O=new Fx;return O.get("/",async($)=>{try{let x=QO();return $.json(x?_x(x):{})}catch(x){return X1.error("[ConfigRoutes] Failed to get config:",x),$.json({})}}),O.put("/",async($)=>{try{let x=await $.req.json(),Q=q(Ux,x);if(!Q.success)throw new _("Invalid config update format");let{updates:Z,options:G}=Q.data;return await BO().updateConfig(Z,G),$.json({success:!0,updates:Z})}catch(x){throw X1.error("[ConfigRoutes] Failed to update config:",x),x}}),O.get("/permissions",async($)=>{try{let x=QO();return $.json(x?.permissions||{})}catch(x){return X1.error("[ConfigRoutes] Failed to get permissions:",x),$.json({})}}),O};import{Hono as Dx}from"hono";import{streamSSE as Hx}from"hono/streaming";function t1(O){let $="";if(O.id!==void 0)$+=`id: ${O.id}
|
|
2
2
|
`;if(O.event!==void 0)$+=`event: ${O.event}
|
|
3
3
|
`;for(let x of O.data.split(/\r\n|\r|\n/))$+=`data: ${x}
|
|
4
4
|
`;if(O.retry!==void 0)$+=`retry: ${O.retry}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{za as H}from"./chunk-
|
|
1
|
+
import{za as H}from"./chunk-mhq9p8mm.js";import"./chunk-r8wbvxn7.js";import"./chunk-d2pwwdab.js";import{$d as $,fe as T}from"./chunk-9ye1s8tj.js";import"./chunk-v508x7cg.js";import"./chunk-g9xjcfrf.js";import"./chunk-hm782j80.js";import"./chunk-272swnyr.js";import"./chunk-21rjwgc2.js";import"./chunk-7m5q8vxf.js";import"./chunk-sk8h4m9m.js";import"./chunk-hg8d4vhj.js";import{Tg as k}from"./chunk-sb84vdcf.js";import"./chunk-hjr9r44k.js";import"./chunk-ffa6hhee.js";import"./chunk-t1633e8m.js";import"./chunk-m5f934fh.js";import"./chunk-c7sx7pa4.js";import"./chunk-rwvaapta.js";import"./chunk-83caxxbt.js";import"./chunk-shr5cg46.js";import"./chunk-6jsmac0q.js";import U from"os";import J from"path";function X(z){return typeof z==="string"?z:void 0}function N(z){if(!Array.isArray(z))return;let q=[];for(let K of z)if(typeof K==="string")q.push(K);else if(K!=null)q.push(String(K));return q}function b(){console.log(`
|
|
2
2
|
blade mcp
|
|
3
3
|
`),console.log(`管理 MCP 服务器
|
|
4
4
|
`),console.log("Commands:"),console.log(" blade mcp add <name> <commandOrUrl> [args...] 添加 MCP 服务器"),console.log(" blade mcp remove <name> 删除 MCP 服务器 [aliases: rm]"),console.log(" blade mcp list 列出所有 MCP 服务器并检查健康状态 [aliases: ls]"),console.log(" blade mcp get <name> 获取服务器详情"),console.log(" blade mcp login <name> 登录远程 MCP OAuth"),console.log(" blade mcp logout <name> 清除远程 MCP OAuth 凭证"),console.log(` blade mcp add-json <name> <json> 从 JSON 字符串添加服务器
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ae as c,ye as a,ze as b}from"./chunk-
|
|
1
|
+
import{Ae as c,ye as a,ze as b}from"./chunk-ax95qw8w.js";import"./chunk-21rjwgc2.js";import"./chunk-7m5q8vxf.js";import"./chunk-sk8h4m9m.js";import"./chunk-hg8d4vhj.js";import"./chunk-sb84vdcf.js";import"./chunk-hjr9r44k.js";import"./chunk-ffa6hhee.js";import"./chunk-t1633e8m.js";import"./chunk-m5f934fh.js";import"./chunk-c7sx7pa4.js";import"./chunk-rwvaapta.js";import"./chunk-83caxxbt.js";import"./chunk-shr5cg46.js";import"./chunk-6jsmac0q.js";export{c as snapshotWorkspaceModelResources,b as resolveWorkspaceModelResources,a as cloneWorkspaceModelConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Gh as a,Hh as b,Ih as c,Jh as d,Kh as e,Lh as f}from"./chunk-
|
|
1
|
+
import{Gh as a,Hh as b,Ih as c,Jh as d,Kh as e,Lh as f}from"./chunk-c7sx7pa4.js";import"./chunk-6jsmac0q.js";export{b as getVersion,c as getPackageName,a as getPackageInfo,e as getFormattedVersion,d as getDescription,f as getCopyright};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{bd as h,cd as Cq,dd as g$,ed as Yq,fd as S,gd as S$,hd as Wq,id as y$,jd as Hq,kd as j$,ld as m$,nd as l0,qd as I$,rd as Bq}from"./chunk-r77pcb0f.js";import{we as D0}from"./chunk-44dzrn0p.js";import{mf as z0}from"./chunk-ww51801m.js";import{yf as m1}from"./chunk-272swnyr.js";import{Lg as Vq,Mg as Xq,Ng as V0,Og as k0,Pg as Q0}from"./chunk-hg8d4vhj.js";import{Tg as e$}from"./chunk-sb84vdcf.js";import{th as I0}from"./chunk-ffa6hhee.js";import{Ah as f0,Dh as T0}from"./chunk-m5f934fh.js";import{Hh as t}from"./chunk-
|
|
1
|
+
import{bd as h,cd as Cq,dd as g$,ed as Yq,fd as S,gd as S$,hd as Wq,id as y$,jd as Hq,kd as j$,ld as m$,nd as l0,qd as I$,rd as Bq}from"./chunk-r77pcb0f.js";import{we as D0}from"./chunk-44dzrn0p.js";import{mf as z0}from"./chunk-ww51801m.js";import{yf as m1}from"./chunk-272swnyr.js";import{Lg as Vq,Mg as Xq,Ng as V0,Og as k0,Pg as Q0}from"./chunk-hg8d4vhj.js";import{Tg as e$}from"./chunk-sb84vdcf.js";import{th as I0}from"./chunk-ffa6hhee.js";import{Ah as f0,Dh as T0}from"./chunk-m5f934fh.js";import{Hh as t}from"./chunk-c7sx7pa4.js";import{Rh as Gq,Sh as B0,Th as Qq,Uh as x,Vh as v,Xh as U0,Yh as r,Zh as l}from"./chunk-shr5cg46.js";import{readdir as E$,readFile as L0,rm as X0,stat as n0}from"node:fs/promises";import*as K from"node:path";import{nanoid as I}from"nanoid";import{createHash as Mq,randomUUID as Aq}from"node:crypto";import*as P from"node:fs/promises";import*as x0 from"node:path";import{execFileSync as Uq}from"node:child_process";import{createHash as Rq}from"node:crypto";import{readFileSync as fq}from"node:fs";var Tq=/^[a-f0-9]{64}$/;function o$($){if(!$||typeof $!=="object")return!1;let q=$;return(q.platform==="linux"||q.platform==="darwin"||q.platform==="win32")&&typeof q.fingerprint==="string"&&Tq.test(q.fingerprint)}var r$={readFile:($)=>fq($,"utf8"),execFile:($,q)=>Uq($,q,{encoding:"utf8",timeout:$==="powershell.exe"?3000:2000,windowsHide:!0})},Dq=($)=>{try{return process.kill($,0),!0}catch(q){return q instanceof Error&&"code"in q&&q.code==="EPERM"}};function q$($,q){return{platform:$,fingerprint:Rq("sha256").update(`${$}\x00${q}`).digest("hex")}}function zq($,q){let J=q.readFile(`/proc/${$}/stat`).trim(),L=J.lastIndexOf(")");if(L<0)throw Error("Invalid /proc process stat");let Z=J.slice(L+2).split(/\s+/)[19];if(!Z||!/^\d+$/.test(Z))throw Error("Missing process start ticks");return Z}function A0($,q=process.platform,J=r$){if(!Number.isInteger($)||$<=1)return;try{if(q==="linux")return q$(q,zq($,J));if(q==="darwin"){let L=J.execFile("ps",["-o","lstart=","-p",String($)]).trim();return L?q$(q,L):void 0}if(q==="win32"){let L=`(Get-CimInstance Win32_Process -Filter "ProcessId = ${$}").CreationDate.ToUniversalTime().ToString('O')`,G=J.execFile("powershell.exe",["-NoProfile","-NonInteractive","-Command",L]).trim();return G?q$(q,G):void 0}}catch{return}return}function t$($,q){return A0($,q.platform)?.fingerprint===q.fingerprint}function W4($,q,J=r$,L=Dq){if(!Number.isInteger($)||$<=1)return!1;let G=A0($,q.platform,J);if(G)return G.fingerprint===q.fingerprint;return!L($)}var $1=1;function wq($,q){let J=Mq("sha256").update(q).digest("hex");return x0.join(B0($),".locks",`${J}.lock`)}function w0($,q){return $ instanceof Error&&"code"in $&&$.code===q}async function J$($){try{let q=JSON.parse(await P.readFile($,"utf8"));if(q.version!==$1||typeof q.sessionId!=="string"||typeof q.ownerId!=="string"||!Number.isInteger(q.pid)||(q.pid??0)<=0||q.processIdentity!==void 0&&!o$(q.processIdentity)||typeof q.acquiredAt!=="string")return;return q}catch{return}}async function a$($){let q=await J$($);if(q)return q;return await new Promise((J)=>setTimeout(J,10)),J$($)}function xq($){try{return process.kill($,0),!0}catch(q){return w0(q,"EPERM")}}async function s$($,q){let J;try{return J=await P.open($,"wx",384),await J.writeFile(`${JSON.stringify(q)}
|
|
2
2
|
`,"utf8"),!0}catch(L){if(w0(L,"EEXIST"))return!1;if(J)await P.unlink($).catch(()=>{return});throw L}finally{await J?.close().catch(()=>{return})}}class i extends Error{code="BLADE_SESSION_IN_USE";constructor($){super($?`Session is already active in another Blade process (PID ${$}). Stop that process or choose a different session.`:"Session is already active in another Blade process. Stop that process or choose a different session.");this.name="SessionInUseError"}}class d{filePath;record;released=!1;constructor($,q){this.filePath=$;this.record=q}static async acquire($,q=e$()){let J=wq(q,$),L={version:$1,sessionId:$,ownerId:Aq(),pid:process.pid,processIdentity:A0(process.pid),acquiredAt:new Date().toISOString()};if(await P.mkdir(x0.dirname(J),{recursive:!0,mode:448}),await s$(J,L))return new d(J,L);let G=await a$(J);if(G&&xq(G.pid)&&(!G.processIdentity||t$(G.pid,G.processIdentity)))throw new i(G.pid);if(await P.unlink(J).catch((Z)=>{if(!w0(Z,"ENOENT"))throw Z}),await s$(J,L))return new d(J,L);throw new i((await a$(J))?.pid)}async release(){if(this.released)return;if(this.released=!0,(await J$(this.filePath))?.ownerId!==this.record.ownerId)return;await P.unlink(this.filePath).catch((q)=>{if(!w0(q,"ENOENT"))throw q})}}import{createHash as E0}from"node:crypto";import{constants as a,promises as u}from"node:fs";import p from"node:path";import{Mutex as Eq}from"async-mutex";var q1=128,J1=67108864,bq=24576,L1=65536,Z$=1,C1=/^[a-f0-9]{64}$/,kq=/^[a-f0-9]{64}\.txt$/,Y1=64,g0=`
|
|
3
3
|
|
|
4
4
|
...[middle omitted; read the private prompt artifact for the complete request]...
|