blade-code 0.10.3 → 0.10.4
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-r4pz99sy.js → chunk-1ndryz4h.js} +1 -1
- package/dist/{chunk-xdbg7cn3.js → chunk-5t0vs4hz.js} +1 -1
- package/dist/{chunk-c05t8207.js → chunk-5ze48kg7.js} +1 -1
- package/dist/{chunk-9yytfg19.js → chunk-90fnvvcf.js} +1 -1
- package/dist/{chunk-3wp3h373.js → chunk-9kwt0w46.js} +1 -1
- package/dist/{chunk-c45y8tx1.js → chunk-a7a74pza.js} +74 -74
- package/dist/{chunk-bfw2p0x8.js → chunk-age5tc86.js} +3 -3
- package/dist/{chunk-7hqbwpt5.js → chunk-b9v7waxf.js} +1 -1
- package/dist/{chunk-bn148dr5.js → chunk-csr5vppa.js} +8 -8
- package/dist/{chunk-p5tpzh6f.js → chunk-d4zw0xxe.js} +1 -1
- package/dist/chunk-d5a66cgn.js +160 -0
- package/dist/{chunk-5fxc90rb.js → chunk-d7xb0vp1.js} +1 -1
- package/dist/{chunk-vmg5n0zv.js → chunk-f647z66n.js} +1 -1
- package/dist/{chunk-eezg6pee.js → chunk-ffp3ypbb.js} +1 -1
- package/dist/{chunk-7089z4e1.js → chunk-fx87s3mb.js} +1 -1
- package/dist/chunk-g6h6h8xr.js +1 -0
- package/dist/chunk-jbnrscvz.js +1 -0
- package/dist/{chunk-aa0ffw17.js → chunk-kkd7mm55.js} +1 -1
- package/dist/{chunk-wje6bck2.js → chunk-mxqpg4gy.js} +1 -1
- package/dist/{chunk-zq9r0jx3.js → chunk-n2s54h1r.js} +1 -1
- package/dist/{chunk-jqwntnp1.js → chunk-nr53mq0k.js} +1 -1
- package/dist/{chunk-8th744ef.js → chunk-pehpndk9.js} +1 -1
- package/dist/{chunk-s95rgkd8.js → chunk-rv80ak15.js} +1 -1
- package/dist/{chunk-1g5qc1qx.js → chunk-scq3ns6v.js} +1 -1
- package/dist/{chunk-1cx96gx1.js → chunk-tx8f345j.js} +1 -1
- package/dist/{chunk-nxj1638n.js → chunk-v8kp3ep9.js} +1 -1
- package/dist/{chunk-rcdynprn.js → chunk-ve9cke2g.js} +2 -2
- package/dist/{chunk-vwq9s5nj.js → chunk-vxymgh8e.js} +4 -4
- package/dist/{chunk-da1jvzbz.js → chunk-wdbmbk6h.js} +1 -1
- package/dist/{chunk-pnrx3spk.js → chunk-xkzy5wbm.js} +1 -1
- package/dist/{chunk-grp43mdb.js → chunk-xq8vf15n.js} +1 -1
- package/dist/chunk-ys8bp9jm.js +1 -0
- package/dist/chunk-zswrw5f9.js +3 -0
- package/dist/web/assets/{ChatView-Pqa25Vua.js → ChatView-iK7ff8qU.js} +2 -2
- package/dist/web/assets/{CodeBlockHighlighter-Dxt-FWJk.js → CodeBlockHighlighter-BoJp_Xb0.js} +1 -1
- package/dist/web/assets/{FilePreview-Dj2yppPn.js → FilePreview-Bi1HWOvY.js} +2 -2
- package/dist/web/assets/{MarkdownRenderer-BI2xpTV2.js → MarkdownRenderer-DMW1pg5N.js} +12 -12
- package/dist/web/assets/{McpModal-COw0BcHJ.js → McpModal-CHUqitJ6.js} +1 -1
- package/dist/web/assets/SettingsModal-zsS9O6SW.js +1 -0
- package/dist/web/assets/{SkillsModal-CTZTu9xg.js → SkillsModal-C2oTDXoy.js} +1 -1
- package/dist/web/assets/{TaskSwitcher-DPXkV-qb.js → TaskSwitcher-CncVasNA.js} +1 -1
- package/dist/web/assets/{TerminalPanel-tpUxwaCh.js → TerminalPanel-CBi2mUxx.js} +1 -1
- package/dist/web/assets/index-B7etZcne.css +1 -0
- package/dist/web/assets/index-DvDtvgA4.js +32 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-8thp1nep.js +0 -1
- package/dist/chunk-9p5f3ryf.js +0 -1
- package/dist/chunk-mgwny24b.js +0 -160
- package/dist/chunk-n3y9ytvg.js +0 -3
- package/dist/chunk-r4j5ca1h.js +0 -1
- package/dist/web/assets/SettingsModal-h4AxN730.js +0 -1
- package/dist/web/assets/index-Dep3eEsS.css +0 -1
- package/dist/web/assets/index-bjyn3NHs.js +0 -32
package/dist/web/index.html
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>BladeCode</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DvDtvgA4.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-DG5dkZ_t.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/vendor-radix-DBy9B2DN.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-icons-D_AkWmWB.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B7etZcne.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
package/package.json
CHANGED
package/dist/chunk-8thp1nep.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Jb as a,Kb as b}from"./chunk-eezg6pee.js";import"./chunk-jqwntnp1.js";import"./chunk-9ffr01c3.js";export{a as globalOptions,b as cliConfig};
|
package/dist/chunk-9p5f3ryf.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{nd as F}from"./chunk-qda309d9.js";import{re as G}from"./chunk-epj56s0n.js";import{promises as $}from"node:fs";import b from"node:os";import W from"node:path";import{Mutex as j}from"async-mutex";import{merge as N}from"lodash-es";import A from"write-file-atomic";var B=F("Service"),Z={models:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},modelProviders:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},currentModelId:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},temperature:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},maxOutputTokens:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},timeout:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},theme:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},uiTheme:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},language:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},debug:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},fontSize:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},autoSaveSessions:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifyBuild:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifyErrors:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},notifySounds:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},privacyTelemetry:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},privacyCrash:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},permissionMode:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},permissions:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},hooks:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},enabledPlugins:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},pluginSourcePolicy:{target:"settings",defaultScope:"global",mergeStrategy:"replace",persistable:!0},env:{target:"settings",defaultScope:"local",mergeStrategy:"deep-merge",persistable:!0},disableAllHooks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxTurns:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxConcurrentTasks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},maxQueuedTasks:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!0},mcpServers:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},lspServers:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!0},stream:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},topP:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},topK:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},mcpEnabled:{target:"config",defaultScope:"global",mergeStrategy:"replace",persistable:!1},systemPrompt:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},appendSystemPrompt:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},initialMessage:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},resumeSessionId:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},forkSession:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},allowedTools:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},disallowedTools:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},mcpConfigPaths:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},strictMcpConfig:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},addDirs:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},outputFormat:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},inputFormat:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},print:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},includePartialMessages:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},replayUserMessages:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},agentsConfig:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1},settingSources:{target:"settings",defaultScope:"local",mergeStrategy:"replace",persistable:!1}},S=new Set(Object.entries(Z).filter(([q,z])=>z.persistable).map(([q])=>q)),m=new Set(Object.entries(Z).filter(([q,z])=>!z.persistable).map(([q])=>q));class V{static instance=null;pendingUpdates=new Map;timers=new Map;fileLocks=new Map;lastSaveError=null;debounceDelay=300;constructor(){}static getInstance(){if(!V.instance)V.instance=new V;return V.instance}static resetInstance(){if(V.instance)for(let q of V.instance.timers.values())clearTimeout(q);V.instance=null}async save(q,z={}){this.validatePersistableFields(q);let H=this.groupUpdatesByTarget(q,z.scope,z.projectDir);if(z.immediate)await Promise.all(Array.from(H.entries()).map(([J,K])=>this.flushTarget(J,K)));else for(let[J,K]of H)this.scheduleSave(J,K)}async flush(){for(let z of this.timers.values())clearTimeout(z);this.timers.clear();let q=Array.from(this.pendingUpdates.entries()).map(([z,H])=>this.flushTarget(z,H));this.pendingUpdates.clear(),await Promise.all(q)}getLastSaveError(){return this.lastSaveError}clearLastSaveError(){this.lastSaveError=null}async appendPermissionRule(q,z={}){await this.appendPermissionRuleForDecision(q,"allow",z)}async appendPermissionDenyRule(q,z={}){await this.appendPermissionRuleForDecision(q,"deny",z)}async appendPermissionRuleForDecision(q,z,H){let J=H.scope??"local",K=this.resolveFilePath("settings",J,H.projectDir);await this.flushTargetWithModifier(K,(M)=>{let Q=M.permissions??{allow:[],ask:[],deny:[]},X={allow:z==="allow"?this.dedupeArray([...Q.allow||[],q]):Q.allow||[],ask:Q.ask||[],deny:z==="deny"?this.dedupeArray([...Q.deny||[],q]):Q.deny||[]};return{...M,permissions:X}})}async appendLocalPermissionRule(q,z={}){await this.appendPermissionRule(q,{...z,scope:"local"})}async appendLocalPermissionDenyRule(q,z={}){await this.appendPermissionDenyRule(q,{...z,scope:"local"})}async removePluginSetting(q,z={}){let H=z.scope??"local",J=this.resolveFilePath("settings",H,z.projectDir);await this.flushTargetWithModifier(J,(K)=>{let M={...K.enabledPlugins??{}};delete M[q];let Q={...K};if(Object.keys(M).length>0)Q.enabledPlugins=M;else delete Q.enabledPlugins;return Q})}validatePersistableFields(q){for(let z of Object.keys(q)){let H=Z[z];if(!H)throw Error(`Unknown config field: ${z}`);if(!H.persistable)throw Error(`Field "${z}" is non-persistable and cannot be saved to config files. Non-persistable fields are runtime-only and only valid for the current session.`)}}groupUpdatesByTarget(q,z,H){let J=new Map;for(let[K,M]of Object.entries(q)){let Q=Z[K];if(!Q)continue;let X=z??Q.defaultScope,Y=this.resolveFilePath(Q.target,X,H);if(!J.has(Y))J.set(Y,{});J.get(Y)[K]=M}return J}resolveFilePath(q,z,H){let J=H??G();if(q==="config")return z==="global"?W.join(b.homedir(),".blade","config.json"):W.join(J,".blade","config.json");switch(z){case"local":return W.join(J,".blade","settings.local.json");case"project":return W.join(J,".blade","settings.json");case"global":return W.join(b.homedir(),".blade","settings.json");default:return W.join(J,".blade","settings.local.json")}}scheduleSave(q,z){let H=this.pendingUpdates.get(q)??{},J=this.mergePendingUpdates(H,z);this.pendingUpdates.set(q,J);let K=this.timers.get(q);if(K)clearTimeout(K);let M=setTimeout(async()=>{let Q=this.pendingUpdates.get(q);if(Q){this.pendingUpdates.delete(q),this.timers.delete(q);try{await this.flushTarget(q,Q),this.lastSaveError=null}catch(X){let Y=X instanceof Error?X:Error(String(X));this.lastSaveError=Y,B.error(`Failed to save config to ${q}:`,Y.message),B.error("Stack trace:",Y.stack)}}},this.debounceDelay);this.timers.set(q,M)}mergePendingUpdates(q,z){let H={...q};for(let[J,K]of Object.entries(z)){let M=Z[J];if(!M){H[J]=K;continue}switch(M.mergeStrategy){case"replace":H[J]=K;break;case"append-dedupe":this.applyAppendDedupe(H,J,K);break;case"deep-merge":this.applyDeepMerge(H,J,K);break}}return H}async flushTarget(q,z){let H=this.fileLocks.get(q);if(!H)H=new j,this.fileLocks.set(q,H);await H.runExclusive(async()=>{await this.performWrite(q,z)})}async flushTargetWithModifier(q,z){let H=this.fileLocks.get(q);if(!H)H=new j,this.fileLocks.set(q,H);await H.runExclusive(async()=>{await $.mkdir(W.dirname(q),{recursive:!0,mode:493});let J={};try{let M=await $.readFile(q,"utf-8");J=JSON.parse(M)}catch{J={}}let K=z(J);await this.atomicWrite(q,K)})}async performWrite(q,z){await $.mkdir(W.dirname(q),{recursive:!0,mode:493});let H={};try{let K=await $.readFile(q,"utf-8");H=JSON.parse(K)}catch{H={}}let J={...H};for(let[K,M]of Object.entries(z)){let Q=Z[K];if(!Q){J[K]=M;continue}switch(Q.mergeStrategy){case"replace":J[K]=M;break;case"append-dedupe":this.applyAppendDedupe(J,K,M);break;case"deep-merge":this.applyDeepMerge(J,K,M);break}}await this.atomicWrite(q,J)}applyAppendDedupe(q,z,H){if(z==="permissions"&&typeof H==="object"&&H!==null){let J=q[z]??{allow:[],ask:[],deny:[]},K=H;q[z]={allow:this.dedupeArray([...J.allow||[],...K.allow||[]]),ask:this.dedupeArray([...J.ask||[],...K.ask||[]]),deny:this.dedupeArray([...J.deny||[],...K.deny||[]])}}else if(Array.isArray(H)){let J=Array.isArray(q[z])?q[z]:[];q[z]=this.dedupeArray([...J,...H])}else q[z]=H}applyDeepMerge(q,z,H){if(typeof H==="object"&&H!==null&&!Array.isArray(H)){let J=typeof q[z]==="object"&&q[z]!==null?q[z]:{};q[z]=N({},J,H)}else q[z]=H}dedupeArray(q){return Array.from(new Set(q))}async atomicWrite(q,z){await A(q,JSON.stringify(z,null,2),{mode:384,encoding:"utf-8"})}}function O(){return V.getInstance()}export{O as vc};
|