grix-connector 3.30.0 → 3.31.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.
Files changed (33) hide show
  1. package/dist/adapter/claude/claude-bridge-server.js +1 -1
  2. package/dist/adapter/claude/claude-tools.js +1 -1
  3. package/dist/adapter/claude/claude-worker-client.js +1 -1
  4. package/dist/adapter/claude/mcp-http-launcher.js +2 -2
  5. package/dist/adapter/claude/result-timeout.js +1 -1
  6. package/dist/adapter/codex/codex-bridge.js +9 -9
  7. package/dist/adapter/deepseek-harness/bridge-installer.js +6 -6
  8. package/dist/adapter/deepseek-harness/bridge-session-reliability.js +1 -1
  9. package/dist/adapter/deepseek-harness/grix-jsonrpc.cordis.yml +6 -1
  10. package/dist/adapter/deepseek-harness/index.js +1 -1
  11. package/dist/adapter/deepseek-harness/jsonrpc-adapter.js +2 -2
  12. package/dist/adapter/deepseek-harness/process-runtime.js +1 -1
  13. package/dist/adapter/deepseek-harness/profile-runtime.js +2 -2
  14. package/dist/adapter/deepseek-harness/profile-supervisor.js +2 -2
  15. package/dist/adapter/deepseek-harness/skill-manager.js +1 -0
  16. package/dist/adapter/deepseek-harness/toolbar-state.js +1 -1
  17. package/dist/assets/dsh-bridge/grix-dsh-bridge-3.31.0.tgz +0 -0
  18. package/dist/assets/dsh-bridge/manifest.json +6 -6
  19. package/dist/bridge/bridge.js +5 -5
  20. package/dist/core/access/allowlist-store.js +1 -1
  21. package/dist/core/config/codex-direct.js +1 -1
  22. package/dist/core/file-ops/list-files.js +1 -1
  23. package/dist/core/persistence/session-binding-store.js +2 -2
  24. package/dist/log.js +2 -2
  25. package/dist/manager.js +1 -1
  26. package/dist/mcp/stream-http/config.js +1 -1
  27. package/dist/mcp/stream-http/connection-binding.js +1 -1
  28. package/dist/mcp/stream-http/security.js +1 -1
  29. package/dist/mcp/stream-http/tool-executor.js +1 -1
  30. package/dist/mcp/stream-http/tool-registry.js +1 -1
  31. package/dist/mcp/stream-http/tool-schemas.js +1 -1
  32. package/package.json +1 -1
  33. package/dist/assets/dsh-bridge/grix-dsh-bridge-3.30.0.tgz +0 -0
@@ -1,2 +1,2 @@
1
- import{createWriteStream as k,existsSync as A,mkdirSync as K,readFileSync as C,renameSync as F,rmSync as H,writeFileSync as j}from"node:fs";import{join as R}from"node:path";import{log as d}from"../../core/log/index.js";import{resolveCliPath as G}from"../../core/util/cli-probe.js";import{killProcessGroup as B,spawnCommand as q}from"../../core/runtime/spawn.js";import{errorForDshBridgeReadiness as I}from"./bridge-installer.js";import{bridgeDiscoveryDirectory as M,discoverDshBridgeEndpoints as y,profileHasWebApp as U}from"./profile-resolver.js";const c="deepseek-harness-profile-supervisor",O=45e3,J=500;function W(e){return{...process.env,DSH_HOME:e}}const m=new Map,p=new Map;function $(e,r,i="coalesce"){const t=m.get(e.profileKey);if(t&&i==="coalesce")return t.promise;const o=(t?t.promise.catch(()=>{}).then(()=>r()):r()).finally(()=>{m.get(e.profileKey)?.promise===o&&m.delete(e.profileKey)});return m.set(e.profileKey,{promise:o}),o}async function ce(e){return $(e.installer.identity,()=>V(e))}async function fe(e){return $(e.installer.identity,()=>Y(e))}async function Y(e){const r=e.autoInstall!==!1;let i=await e.installer.status();return r&&["profile_missing","bridge_missing","bridge_update_required"].includes(i.readiness)&&(i=await e.installer.install()),i.readiness==="ready"&&!e.reloadManaged?i:V(e)}async function V(e){const r=e.installer,i=e.autoStart!==!1,t=e.readyTimeoutMs??O;let n=await r.status();if(e.reloadManaged&&(n=await z(r,n,t),n.readiness==="ready")||n.readiness==="ready")return n;if(!i){const l=I(n);if(l)throw l;return n}if(n.readiness==="profile_restart_required"&&n.endpointCount===0)await P(r,n.identity),n=await S(g,r,t),g(n)||await N(n.identity,"bridge endpoint did not appear");else if(n.readiness==="profile_restart_required"&&n.endpointCount>0&&n.runningBridgeVersion&&n.installedBridgeVersion){const l=y(n.identity),a=u(n.identity),w=a&&l.find(s=>s.pid===a.pid),b=n.runningBridgeVersion!==n.installedBridgeVersion?"bridge upgrade":"bridge content refresh";w&&a&&f(a.pid)?(d.info(c,`restarting connector-managed profile=${n.identity.profileName} pid=${a.pid} for ${b}`),await h(n.identity,a.pid)):d.info(c,`starting connector-managed profile=${n.identity.profileName} for ${b}; external profile processes are left untouched`),await P(r,n.identity),n=await S(g,r,t),g(n)||await N(n.identity,"bridge endpoint did not appear after upgrade restart")}if(n.readiness==="ready")return Q(n),n;const o=I(n);if(o)throw o;return n}async function z(e,r,i){const t=r.identity,n=u(t);if(!n||!f(n.pid))return r;const o=y(t);if(!o.some(w=>w.pid===n.pid)&&o.length>0)return r;d.info(c,`reloading connector-managed profile=${t.profileName} pid=${n.pid} after settings write`),await h(t,n.pid),await P(e,t);const a=await S(g,e,i);return g(a)||await N(t,"bridge endpoint did not appear after settings reload"),a}function Q(e){d.info(c,`bridge ready profile=${e.identity.profileName} endpoints=${e.endpointCount} bridge=${e.runningBridgeVersion}`)}async function P(e,r){const i=u(r);if(i&&f(i.pid)){if(y(r).some(x=>x.pid===i.pid)){d.info(c,`reusing connector-managed profile=${r.profileName} pid=${i.pid}`);return}d.warn(c,`restarting stuck connector-managed profile=${r.profileName} pid=${i.pid} (alive without endpoint)`),await h(r,i.pid)}else i&&D(r);const t=await G(e.command);if(!t)throw Object.assign(new Error("dsh is not installed or not on PATH"),{code:"dsh_missing"});const n=X(r),o=M(r);K(o,{recursive:!0,mode:448});const l=R(o,"managed-profile.log"),a=k(l,{flags:"a",mode:384}),w=W(r.dshHome),s=q(t,n,{cwd:r.profileRoot,env:w,stdio:["ignore","pipe","pipe"],detached:!0}).process;if(!s.pid)throw a.end(),Object.assign(new Error(`Failed to start DSH profile "${r.profileName}"`),{code:"profile_start_failed"});s.stdout?.pipe(a,{end:!1}),s.stderr?.pipe(a,{end:!1}),s.once("exit",(E,v)=>{d.warn(c,`managed profile exited profile=${r.profileName} pid=${s.pid} code=${E} signal=${v}`),p.get(r.profileKey)===s&&p.delete(r.profileKey),u(r)?.pid===s.pid&&D(r);try{a.end()}catch{}}),s.unref(),p.set(r.profileKey,s),Z(r,{schemaVersion:1,profileKey:r.profileKey,profileName:r.profileName,pid:s.pid,startedAt:new Date().toISOString(),command:t,args:n}),d.info(c,`started connector-managed profile=${r.profileName} pid=${s.pid} args=${n.join(" ")}`)}async function N(e,r){const i=u(e);i&&(d.warn(c,`stopping stuck connector-managed profile=${e.profileName} pid=${i.pid} reason=${r}`),await h(e,i.pid))}async function h(e,r){const i=p.get(e.profileKey);if(i?.pid===r){try{B(i,"SIGTERM")}catch{}p.delete(e.profileKey)}else if(f(r))try{process.kill(r,"SIGTERM")}catch{}const t=Date.now()+5e3;for(;Date.now()<t&&f(r);)await T(100);if(f(r))try{process.kill(r,"SIGKILL")}catch{}D(e)}function X(e){return U(e.profileRoot,e.profileName)?["--profile",e.profileName,"--port","0"]:["--profile",e.profileName]}async function S(e,r,i){const t=Date.now()+i;let n=await r.status();for(;Date.now()<t;){if(e(n))return n;const o=u(r.identity);if(o&&!f(o.pid))throw D(r.identity),Object.assign(new Error(`Connector-managed DSH profile "${r.identity.profileName}" exited before Bridge became ready`),{code:"profile_start_failed"});await T(J),n=await r.status()}return n}function _(e){return R(M(e),"managed-profile.json")}function u(e){try{const r=JSON.parse(C(_(e),"utf8"));return r.schemaVersion!==1||typeof r.pid!="number"||r.profileKey!==e.profileKey?null:r}catch{return null}}function Z(e,r){const i=M(e);K(i,{recursive:!0,mode:448});const t=_(e),n=`${t}.${process.pid}.tmp`;j(n,`${JSON.stringify(r,null,2)}
2
- `,{mode:384}),F(n,t)}function D(e){try{H(_(e),{force:!0})}catch{}}function f(e){try{return process.kill(e,0),!0}catch(r){return r.code==="EPERM"}}function T(e){return new Promise(r=>setTimeout(r,e))}function le(){m.clear();for(const e of p.values())try{e.pid&&B(e,"SIGKILL")}catch{}p.clear()}function pe(e){return A(_(e))}async function ue(e){const r=m.get(e.profileKey);r&&await r.promise.catch(()=>{})}async function ge(e,r=O){let i="failed";return await $(e.identity,async()=>(i=await ee(e,r),L(e,i==="restarted"?"ready":"profile_restart_required")),"queue"),i}async function ee(e,r){const i=e.identity,t=u(i);if(!t||!f(t.pid))return"not_managed";const n=y(i);if(n.length>0&&!n.some(o=>o.pid===t.pid))return"not_managed";try{return d.info(c,`restarting connector-managed profile=${i.profileName} pid=${t.pid} for plugin toggle`),await h(i,t.pid),await P(e,i),(await S(g,e,r)).readiness==="ready"?"restarted":"failed"}catch(o){return d.warn(c,`plugin-toggle restart failed profile=${i.profileName}: ${o instanceof Error?o.message:String(o)}`),"failed"}}function g(e){return e.readiness==="ready"||e.readiness==="bridge_incompatible"}function me(e,r){return $(e.identity,async()=>(await r,L(e,"ready")))}function L(e,r){return{readiness:r,command:e.command,commandPath:null,dshVersion:null,runningDshVersion:null,identity:e.identity,installedBridgeVersion:null,bundledBridgeVersion:"",runningBridgeVersion:null,endpointCount:0,compatibleDshVersions:[]}}export{ue as awaitDshProfileIdle,X as buildDshProfileBootArgs,ce as ensureDshBridgeReady,me as holdDshProfileInflightForTests,pe as managedProfileRecordExists,W as managedProfileSpawnEnv,fe as prepareDshProfileBridge,le as resetDshProfileSupervisorForTests,ge as restartManagedProfileIfOwned};
1
+ import{createWriteStream as k,existsSync as A,mkdirSync as K,readFileSync as C,renameSync as F,rmSync as H,writeFileSync as j}from"node:fs";import{join as R}from"node:path";import{log as d}from"../../core/log/index.js";import{resolveCliPath as G}from"../../core/util/cli-probe.js";import{killProcessGroup as B,spawnCommand as q}from"../../core/runtime/spawn.js";import{errorForDshBridgeReadiness as I}from"./bridge-installer.js";import{bridgeDiscoveryDirectory as N,discoverDshBridgeEndpoints as y,profileHasWebApp as U}from"./profile-resolver.js";const c="deepseek-harness-profile-supervisor",O=45e3,J=500;function W(e){return{...process.env,DSH_HOME:e}}const m=new Map,p=new Map;function $(e,r,i="coalesce"){const t=m.get(e.profileKey);if(t&&i==="coalesce")return t.promise;const o=(t?t.promise.catch(()=>{}).then(()=>r()):r()).finally(()=>{m.get(e.profileKey)?.promise===o&&m.delete(e.profileKey)});return m.set(e.profileKey,{promise:o}),o}async function ce(e){return $(e.installer.identity,()=>T(e))}async function fe(e){return $(e.installer.identity,()=>Y(e))}async function Y(e){const r=e.autoInstall!==!1;let i=await e.installer.status();return r&&["profile_missing","bridge_missing","bridge_update_required"].includes(i.readiness)&&(i=await e.installer.install()),i.readiness==="ready"&&!e.reloadManaged?i:T(e)}async function T(e){const r=e.installer,i=e.autoStart!==!1,t=e.readyTimeoutMs??O;let n=await r.status();if(e.reloadManaged&&(n=await z(r,n,t),n.readiness==="ready")||n.readiness==="ready")return n;if(!i){const l=I(n);if(l)throw l;return n}if(n.readiness==="profile_restart_required"&&n.endpointCount===0)await P(r,n.identity),n=await S(g,r,t),g(n)||await b(n.identity,"bridge endpoint did not appear");else if(n.readiness==="profile_restart_required"&&n.endpointCount>0&&n.runningBridgeVersion&&n.installedBridgeVersion){const l=y(n.identity),a=u(n.identity),w=a&&l.find(s=>s.pid===a.pid),M=n.runningBridgeVersion!==n.installedBridgeVersion?"bridge upgrade":"bridge content refresh";w&&a&&f(a.pid)?(d.info(c,`restarting connector-managed profile=${n.identity.profileName} pid=${a.pid} for ${M}`),await h(n.identity,a.pid)):d.info(c,`starting connector-managed profile=${n.identity.profileName} for ${M}; external profile processes are left untouched`),await P(r,n.identity),n=await S(g,r,t),g(n)||await b(n.identity,"bridge endpoint did not appear after upgrade restart")}if(n.readiness==="ready")return Q(n),n;const o=I(n);if(o)throw o;return n}async function z(e,r,i){const t=r.identity,n=u(t);if(!n||!f(n.pid))return r;const o=y(t);if(!o.some(w=>w.pid===n.pid)&&o.length>0)return r;d.info(c,`reloading connector-managed profile=${t.profileName} pid=${n.pid} after settings write`),await h(t,n.pid),await P(e,t);const a=await S(g,e,i);return g(a)||await b(t,"bridge endpoint did not appear after settings reload"),a}function Q(e){d.info(c,`bridge ready profile=${e.identity.profileName} endpoints=${e.endpointCount} bridge=${e.runningBridgeVersion}`)}async function P(e,r){const i=u(r);if(i&&f(i.pid)){if(y(r).some(x=>x.pid===i.pid)){d.info(c,`reusing connector-managed profile=${r.profileName} pid=${i.pid}`);return}d.warn(c,`restarting stuck connector-managed profile=${r.profileName} pid=${i.pid} (alive without endpoint)`),await h(r,i.pid)}else i&&D(r);const t=await G(e.command);if(!t)throw Object.assign(new Error("dsh is not installed or not on PATH"),{code:"dsh_missing"});const n=X(r),o=N(r);K(o,{recursive:!0,mode:448});const l=R(o,"managed-profile.log"),a=k(l,{flags:"a",mode:384}),w=W(r.dshHome),s=q(t,n,{cwd:r.profileRoot,env:w,stdio:["ignore","pipe","pipe"],detached:!0}).process;if(!s.pid)throw a.end(),Object.assign(new Error(`Failed to start DSH profile "${r.profileName}"`),{code:"profile_start_failed"});s.stdout?.pipe(a,{end:!1}),s.stderr?.pipe(a,{end:!1}),s.once("exit",(E,v)=>{d.warn(c,`managed profile exited profile=${r.profileName} pid=${s.pid} code=${E} signal=${v}`),p.get(r.profileKey)===s&&p.delete(r.profileKey),u(r)?.pid===s.pid&&D(r);try{a.end()}catch{}}),s.unref(),p.set(r.profileKey,s),Z(r,{schemaVersion:1,profileKey:r.profileKey,profileName:r.profileName,pid:s.pid,startedAt:new Date().toISOString(),command:t,args:n}),d.info(c,`started connector-managed profile=${r.profileName} pid=${s.pid} args=${n.join(" ")}`)}async function b(e,r){const i=u(e);i&&(d.warn(c,`stopping stuck connector-managed profile=${e.profileName} pid=${i.pid} reason=${r}`),await h(e,i.pid))}async function h(e,r){const i=p.get(e.profileKey);if(i?.pid===r){try{B(i,"SIGTERM")}catch{}p.delete(e.profileKey)}else if(f(r))try{process.kill(r,"SIGTERM")}catch{}const t=Date.now()+5e3;for(;Date.now()<t&&f(r);)await V(100);if(f(r))try{process.kill(r,"SIGKILL")}catch{}D(e)}function X(e){return U(e.profileRoot,e.profileName)?["--profile",e.profileName,"--port","0"]:["--profile",e.profileName]}async function S(e,r,i){const t=Date.now()+i;let n=await r.status();for(;Date.now()<t;){if(e(n))return n;const o=u(r.identity);if(o&&!f(o.pid))throw D(r.identity),Object.assign(new Error(`Connector-managed DSH profile "${r.identity.profileName}" exited before Bridge became ready`),{code:"profile_start_failed"});await V(J),n=await r.status()}return n}function _(e){return R(N(e),"managed-profile.json")}function u(e){try{const r=JSON.parse(C(_(e),"utf8"));return r.schemaVersion!==1||typeof r.pid!="number"||r.profileKey!==e.profileKey?null:r}catch{return null}}function Z(e,r){const i=N(e);K(i,{recursive:!0,mode:448});const t=_(e),n=`${t}.${process.pid}.tmp`;j(n,`${JSON.stringify(r,null,2)}
2
+ `,{mode:384}),F(n,t)}function D(e){try{H(_(e),{force:!0})}catch{}}function f(e){try{return process.kill(e,0),!0}catch(r){return r.code==="EPERM"}}function V(e){return new Promise(r=>setTimeout(r,e))}function le(){m.clear();for(const e of p.values())try{e.pid&&B(e,"SIGKILL")}catch{}p.clear()}function pe(e){return A(_(e))}async function ue(e){const r=m.get(e.profileKey);r&&await r.promise.catch(()=>{})}async function ge(e,r=O){let i="failed";return await $(e.identity,async()=>(i=await ee(e,r),L(e,i==="restarted"?"ready":"profile_restart_required")),"queue"),i}async function ee(e,r){const i=e.identity,t=u(i);if(!t||!f(t.pid))return"not_managed";const n=y(i);if(n.length>0&&!n.some(o=>o.pid===t.pid))return"not_managed";try{return d.info(c,`restarting connector-managed profile=${i.profileName} pid=${t.pid} for plugin toggle`),await h(i,t.pid),await P(e,i),(await S(g,e,r)).readiness==="ready"?"restarted":"failed"}catch(o){return d.warn(c,`plugin-toggle restart failed profile=${i.profileName}: ${o instanceof Error?o.message:String(o)}`),"failed"}}function g(e){return e.readiness==="ready"}function me(e,r){return $(e.identity,async()=>(await r,L(e,"ready")))}function L(e,r){return{readiness:r,command:e.command,commandPath:null,dshVersion:null,runningDshVersion:null,identity:e.identity,installedBridgeVersion:null,bundledBridgeVersion:"",runningBridgeVersion:null,endpointCount:0}}export{ue as awaitDshProfileIdle,X as buildDshProfileBootArgs,ce as ensureDshBridgeReady,me as holdDshProfileInflightForTests,pe as managedProfileRecordExists,W as managedProfileSpawnEnv,fe as prepareDshProfileBridge,le as resetDshProfileSupervisorForTests,ge as restartManagedProfileIfOwned};
@@ -0,0 +1 @@
1
+ import{existsSync as d,readFileSync as m,readdirSync as f,statSync as u}from"node:fs";import{join as a}from"node:path";import{parseSkillFrontmatter as k}from"../claude/skill-scanner.js";const o=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function c(s){const t=new Set,i=[];for(const e of s??[]){const n=String(e??"").trim();!n||t.has(n)||(t.add(n),i.push(n))}return i}function h(s){const t=new Set(c(s.enabledSkillIds)),i=new Map;let e;try{e=f(s.skillsDir,{withFileTypes:!0,encoding:"utf8"})}catch{return[]}for(const n of e.sort((l,r)=>l.name.localeCompare(r.name))){if(n.name.startsWith("."))continue;const l=S(s.skillsDir,n);if(l)try{const r=k(m(l,"utf8"));if(!o.test(r.name)||i.has(r.name))continue;i.set(r.name,{name:r.name,description:r.description,enabled:t.has(r.name)})}catch{}}return[...i.values()].sort((n,l)=>n.name.localeCompare(l.name))}function w(s){const t=String(s.name??"").trim();if(!o.test(t))throw Object.assign(new Error("Skill name must be kebab-case"),{code:"skill_invalid"});const i=h(s).find(e=>e.name===t);if(!i)throw Object.assign(new Error("Skill is not installed in the DSH skill library"),{code:"skill_not_found"});return i}function y(s,t,i){const e=c(s),n=String(t??"").trim();if(!o.test(n))throw Object.assign(new Error("Skill name must be kebab-case"),{code:"skill_invalid"});const l=e.includes(n);return i?l?{skillIds:e,changed:!1}:{skillIds:[...e,n],changed:!0}:l?{skillIds:e.filter(r=>r!==n),changed:!0}:{skillIds:e,changed:!1}}function S(s,t){const i=a(s,t.name);if(t.isFile()&&t.name.endsWith(".md"))return i;let e=t.isDirectory();if(!e&&t.isSymbolicLink())try{e=u(i).isDirectory()}catch{e=!1}if(!e)return;const n=a(i,"SKILL.md");return d(n)?n:void 0}export{h as listDshSkills,c as normalizeDshSkillIds,w as resolveDshSkill,y as updateDshSkillIds};
@@ -1 +1 @@
1
- import{DEFAULT_DSH_PROFILE_NAME as s,dshProfileDisplayName as c}from"./profile-resolver.js";const m="approval",u="enabled",g="high",E=16384,a="deepseek-official",l=Object.freeze([{id:"deepseek-v4-flash",displayName:"DeepSeek-V4-Flash",contextWindow:1e6},{id:"deepseek-v4-pro",displayName:"DeepSeek-V4-Pro",contextWindow:1e6}]),p="standard",_=Object.freeze([{id:"standard",displayName:"\u6807\u51C6\u6A21\u5F0F",description:"\u529F\u80FD\u5B8C\u6574\u7684\u7F16\u7801 Agent\uFF0C\u652F\u6301\u6587\u4EF6\u7F16\u8F91\u3001Shell\u3001\u6587\u4EF6\u4E0E\u7F51\u9875\u68C0\u7D22\u3001Skills\u3001\u8BA1\u5212\u3001\u76EE\u6807\u3001\u5B50\u4EE3\u7406\u548C\u5DE5\u4F5C\u6D41\u3002"},{id:"code",displayName:"PTC \u6A21\u5F0F",description:"\u5177\u5907\u6807\u51C6\u6A21\u5F0F\u7684\u5168\u90E8\u80FD\u529B\uFF0C\u5E76\u901A\u8FC7 Code Mode SDK \u5448\u73B0\u5DE5\u5177\uFF0C\u8BA9\u6A21\u578B\u7528\u4E00\u4E2A TypeScript \u7A0B\u5E8F\u7EC4\u5408\u591A\u6B65\u64CD\u4F5C\u3002"},{id:"minimal",displayName:"\u6781\u7B80\u6A21\u5F0F",description:"\u4EC5\u63D0\u4F9B\u6301\u4E45 bash \u4E0E str_replace_editor \u7684\u53CC\u5DE5\u5177\u7F16\u7801 Agent\u3002"},{id:"cordis",displayName:"\u521B\u9020\u6A21\u5F0F",description:"\u7528\u4E8E\u521B\u5EFA\u81EA\u5B9A\u4E49 Agent preset\uFF1A\u5177\u5907\u6807\u51C6\u6A21\u5F0F\u7684\u5168\u90E8\u80FD\u529B\uFF0C\u5E76\u63D0\u4F9B\u8FD0\u884C\u65F6\u68C0\u67E5\u3001\u63D2\u4EF6\u5B9E\u9A8C\u548C preset \u521B\u4F5C\u6307\u5BFC\u3002"}]);function h(e){return e==="full_auto"||e==="approval"?e:void 0}function N(e,r){return h(e)??h(r)??m}function v(e){return e==="enabled"||e==="disabled"?e:void 0}function b(e){return e==="high"||e==="max"?e:void 0}function P(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();return i?[{id:i,displayName:String(o.displayName??o.name??i)}]:[]}):[]}function k(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();if(!i)return[];const d=Number(o.contextWindow);return[{id:i,displayName:String(o.displayName??o.name??i),contextWindow:Number.isSafeInteger(d)&&d>0?d:1e6}]}):[]}function y(e){return e.fetched!==void 0?k(e.fetched):e.providerChanged?[]:[...e.current]}function L(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();if(!i||o.broken)return[];const d=String(o.description??"").trim();return[{id:i,displayName:String(o.displayName??o.name??i),...d?{description:d}:{}}]}):[]}const D=Object.freeze([{id:s,displayName:c(s),webApp:!0}]);function T(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();return i?[{id:i,displayName:String(o.displayName??o.name??c(i)),...o.webApp===!0?{webApp:!0}:{}}]:[]}):[]}function S(e,r){const o=String(e??"").trim();return o&&r.some(i=>i.id===o)?o:r.some(i=>i.id===p)?p:r[0]?.id||p}function f(e,r){const o=String(e??"").trim();return o&&r.some(i=>i.id===o)?o:r.some(i=>i.id===a)?a:r[0]?.id||a}function F(e){const r=String(e.requestedProviderId??"").trim();if(!!r&&e.liveProviders.some(t=>t.id===r))return{providerId:r,persistFallback:!1};if(r)return{providerId:r,persistFallback:!1};const i=String(e.liveSelectedProvider??"").trim();return{providerId:f(i||void 0,e.liveProviders),persistFallback:!0}}function R(e,r,o){const i=String(r??"").trim(),d=e.length>0?[...e]:[];if(i&&!d.some(t=>t.id===i)){const t=o.find(n=>n.id===i);t&&d.unshift(t)}return d}function M(e){const r=e.applied,o=e.state??(r?r.appliedRevision===e.desired.revision?"applied":"pending":"applied"),i=e.runtimeReadiness??"unknown",d=e.providers??[],t=e.presets??_,n=f(e.desired.providerId,d),x=S(e.desired.agentPreset,t),I=r!=null||o==="pending"||o==="failed";return{provider_id:n,model_id:e.desired.modelId,mode_id:e.desired.modeId,thinking_mode:v(e.desired.thinking)??u,reasoning_effort:b(e.desired.reasoningEffort)??g,agent_preset_id:x,agent_preset_locked:e.agentPresetLocked===!0,available_providers:[...d],available_models:[...e.models??l],available_presets:[...t],available_modes:[{id:"approval",label:"\u5BA1\u6279\uFF08\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF0C\u8D8A\u754C\u5931\u8D25\uFF09"},{id:"full_auto",label:"\u81EA\u52A8\uFF08\u5168\u6743\u9650\uFF09"}],settings_revision:e.desired.revision,...I?{applied_provider_id:r?.providerId??null,applied_model_id:r?.modelId??null,applied_mode_id:r?.modeId??null,applied_thinking_mode:r?.thinking??null,applied_reasoning_effort:r?.reasoningEffort??null,applied_settings_revision:r?.appliedRevision??null}:{},settings_state:o,settings_error_code:e.errorCode??null,context_window:e.contextWindow??null,provider_quota:e.providerQuota??null,dsh_integration_mode:e.integrationMode??"profile_bridge",dsh_profile:e.profileName??s,available_profiles:[...e.profiles??D],dsh_profile_locked:e.profileLocked===!0,dsh_profile_create:e.profileLocked!==!0&&e.profileCreate!==!1,dsh_plugins:[...e.plugins??[]],dsh_plugin_restart_required:e.pluginRestartRequired===!0,dsh_runtime_readiness:i,dsh_bridge_action_required:["dsh_missing","profile_missing","bridge_missing","bridge_update_required"].includes(i)?"install_bridge":i==="profile_restart_required"?"restart_profile":null,dsh_profile_restart_required:i==="profile_restart_required",dsh_bridge_capabilities:e.bridgeCapabilities??null}}function q(e){return e==="full_auto"?"danger-full-access":"workspace-write"}function w(e){const r=e.providers??[],o=f(e.providerId,r),i=[...e.models??l],d=String(e.modelId??"").trim()||i[0]?.id||l[0].id,t=e.modeId==="full_auto"?"full_auto":m;return{agent_preset_id:S(e.agentPreset,_),agent_preset_locked:e.agentPresetLocked===!0,available_presets:[..._],dsh_profile:e.profileName??s,available_profiles:[...e.profiles??D],dsh_profile_locked:e.profileLocked===!0,dsh_profile_create:e.profileLocked!==!0,dsh_plugins:[...e.plugins??[]],dsh_plugin_restart_required:e.pluginRestartRequired===!0,provider_id:o,model_id:d,mode_id:t,thinking_mode:v(e.thinking)??u,reasoning_effort:b(e.reasoningEffort)??g,available_providers:[...r],available_models:i,available_modes:[{id:"approval",label:"\u5BA1\u6279\uFF08\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF0C\u8D8A\u754C\u5931\u8D25\uFF09"},{id:"full_auto",label:"\u81EA\u52A8\uFF08\u5168\u6743\u9650\uFF09"}]}}export{E as DEFAULT_DSH_MAX_TOKENS,m as DEFAULT_DSH_MODE,l as DEFAULT_DSH_MODELS,_ as DEFAULT_DSH_PRESETS,p as DEFAULT_DSH_PRESET_ID,D as DEFAULT_DSH_PROFILES,a as DEFAULT_DSH_PROVIDER_ID,g as DEFAULT_DSH_REASONING_EFFORT,u as DEFAULT_DSH_THINKING,y as adoptDshProfileModels,F as adoptLiveDshProviderSelection,w as buildDshBindingToolbarMeta,M as buildDshToolbarMeta,h as normalizeDshModeId,k as normalizeDshModels,L as normalizeDshPresets,T as normalizeDshProfiles,P as normalizeDshProviders,b as normalizeDshReasoningEffort,v as normalizeDshThinking,q as permissionModeFor,S as resolveDshAgentPreset,N as resolveDshModeId,f as resolveDshProviderId,R as retainRequestedDshProvider};
1
+ import{DEFAULT_DSH_PROFILE_NAME as s,dshProfileDisplayName as c}from"./profile-resolver.js";const m="approval",g="enabled",u="high",E=16384,l="deepseek-official",a=Object.freeze([{id:"deepseek-v4-flash",displayName:"DeepSeek-V4-Flash",contextWindow:1e6},{id:"deepseek-v4-pro",displayName:"DeepSeek-V4-Pro",contextWindow:1e6}]),p="standard",_=Object.freeze([{id:"standard",displayName:"\u6807\u51C6\u6A21\u5F0F",description:"\u529F\u80FD\u5B8C\u6574\u7684\u7F16\u7801 Agent\uFF0C\u652F\u6301\u6587\u4EF6\u7F16\u8F91\u3001Shell\u3001\u6587\u4EF6\u4E0E\u7F51\u9875\u68C0\u7D22\u3001Skills\u3001\u8BA1\u5212\u3001\u76EE\u6807\u3001\u5B50\u4EE3\u7406\u548C\u5DE5\u4F5C\u6D41\u3002"},{id:"code",displayName:"PTC \u6A21\u5F0F",description:"\u5177\u5907\u6807\u51C6\u6A21\u5F0F\u7684\u5168\u90E8\u80FD\u529B\uFF0C\u5E76\u901A\u8FC7 Code Mode SDK \u5448\u73B0\u5DE5\u5177\uFF0C\u8BA9\u6A21\u578B\u7528\u4E00\u4E2A TypeScript \u7A0B\u5E8F\u7EC4\u5408\u591A\u6B65\u64CD\u4F5C\u3002"},{id:"minimal",displayName:"\u6781\u7B80\u6A21\u5F0F",description:"\u4EC5\u63D0\u4F9B\u6301\u4E45 bash \u4E0E str_replace_editor \u7684\u53CC\u5DE5\u5177\u7F16\u7801 Agent\u3002"},{id:"cordis",displayName:"\u521B\u9020\u6A21\u5F0F",description:"\u7528\u4E8E\u521B\u5EFA\u81EA\u5B9A\u4E49 Agent preset\uFF1A\u5177\u5907\u6807\u51C6\u6A21\u5F0F\u7684\u5168\u90E8\u80FD\u529B\uFF0C\u5E76\u63D0\u4F9B\u8FD0\u884C\u65F6\u68C0\u67E5\u3001\u63D2\u4EF6\u5B9E\u9A8C\u548C preset \u521B\u4F5C\u6307\u5BFC\u3002"}]);function h(e){return e==="full_auto"||e==="approval"?e:void 0}function N(e,r){return h(e)??h(r)??m}function v(e){return e==="enabled"||e==="disabled"?e:void 0}function b(e){return e==="high"||e==="max"?e:void 0}function P(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();return i?[{id:i,displayName:String(o.displayName??o.name??i)}]:[]}):[]}function I(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();if(!i)return[];const d=Number(o.contextWindow);return[{id:i,displayName:String(o.displayName??o.name??i),contextWindow:Number.isSafeInteger(d)&&d>0?d:1e6}]}):[]}function y(e){return e.fetched!==void 0?I(e.fetched):e.providerChanged?[]:[...e.current]}function L(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();if(!i||o.broken)return[];const d=String(o.description??"").trim();return[{id:i,displayName:String(o.displayName??o.name??i),...d?{description:d}:{}}]}):[]}const D=Object.freeze([{id:s,displayName:c(s),webApp:!0}]);function T(e){return Array.isArray(e)?e.flatMap(r=>{if(!r||typeof r!="object")return[];const o=r,i=String(o.id??"").trim();return i?[{id:i,displayName:String(o.displayName??o.name??c(i)),...o.webApp===!0?{webApp:!0}:{}}]:[]}):[]}function S(e,r){const o=String(e??"").trim();return o&&r.some(i=>i.id===o)?o:r.some(i=>i.id===p)?p:r[0]?.id||p}function f(e,r){const o=String(e??"").trim();return o&&r.some(i=>i.id===o)?o:r.some(i=>i.id===l)?l:r[0]?.id||l}function F(e){const r=String(e.requestedProviderId??"").trim();if(!!r&&e.liveProviders.some(t=>t.id===r))return{providerId:r,persistFallback:!1};if(r)return{providerId:r,persistFallback:!1};const i=String(e.liveSelectedProvider??"").trim();return{providerId:f(i||void 0,e.liveProviders),persistFallback:!0}}function R(e,r,o){const i=String(r??"").trim(),d=e.length>0?[...e]:[];if(i&&!d.some(t=>t.id===i)){const t=o.find(n=>n.id===i);t&&d.unshift(t)}return d}function M(e){const r=e.applied,o=e.state??(r?r.appliedRevision===e.desired.revision?"applied":"pending":"applied"),i=e.runtimeReadiness??"unknown",d=e.providers??[],t=e.presets??_,n=f(e.desired.providerId,d),x=S(e.desired.agentPreset,t),k=r!=null||o==="pending"||o==="failed";return{provider_id:n,model_id:e.desired.modelId,mode_id:e.desired.modeId,thinking_mode:v(e.desired.thinking)??g,reasoning_effort:b(e.desired.reasoningEffort)??u,agent_preset_id:x,agent_preset_locked:e.agentPresetLocked===!0,available_providers:[...d],available_models:[...e.models??a],available_presets:[...t],available_modes:[{id:"approval",label:"\u5BA1\u6279\uFF08\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF0C\u8D8A\u754C\u5931\u8D25\uFF09"},{id:"full_auto",label:"\u81EA\u52A8\uFF08\u5168\u6743\u9650\uFF09"}],settings_revision:e.desired.revision,...k?{applied_provider_id:r?.providerId??null,applied_model_id:r?.modelId??null,applied_mode_id:r?.modeId??null,applied_thinking_mode:r?.thinking??null,applied_reasoning_effort:r?.reasoningEffort??null,applied_settings_revision:r?.appliedRevision??null}:{},settings_state:o,settings_error_code:e.errorCode??null,context_window:e.contextWindow??null,provider_quota:e.providerQuota??null,dsh_integration_mode:e.integrationMode??"profile_bridge",dsh_profile:e.profileName??s,available_profiles:[...e.profiles??D],dsh_profile_locked:e.profileLocked===!0,dsh_profile_create:e.profileLocked!==!0&&e.profileCreate!==!1,dsh_plugins:[...e.plugins??[]],dsh_skills:[...e.skills??[]],dsh_plugin_restart_required:e.pluginRestartRequired===!0,dsh_runtime_readiness:i,dsh_bridge_action_required:["dsh_missing","profile_missing","bridge_missing","bridge_update_required"].includes(i)?"install_bridge":i==="profile_restart_required"?"restart_profile":null,dsh_profile_restart_required:i==="profile_restart_required",dsh_bridge_capabilities:e.bridgeCapabilities??null}}function q(e){return e==="full_auto"?"danger-full-access":"workspace-write"}function w(e){const r=e.providers??[],o=f(e.providerId,r),i=[...e.models??a],d=String(e.modelId??"").trim()||i[0]?.id||a[0].id,t=e.modeId==="full_auto"?"full_auto":m;return{agent_preset_id:S(e.agentPreset,_),agent_preset_locked:e.agentPresetLocked===!0,available_presets:[..._],dsh_profile:e.profileName??s,available_profiles:[...e.profiles??D],dsh_profile_locked:e.profileLocked===!0,dsh_profile_create:e.profileLocked!==!0,dsh_plugins:[...e.plugins??[]],dsh_skills:[...e.skills??[]],dsh_plugin_restart_required:e.pluginRestartRequired===!0,provider_id:o,model_id:d,mode_id:t,thinking_mode:v(e.thinking)??g,reasoning_effort:b(e.reasoningEffort)??u,available_providers:[...r],available_models:i,available_modes:[{id:"approval",label:"\u5BA1\u6279\uFF08\u5DE5\u4F5C\u533A\u5185\u81EA\u52A8\uFF0C\u8D8A\u754C\u5931\u8D25\uFF09"},{id:"full_auto",label:"\u81EA\u52A8\uFF08\u5168\u6743\u9650\uFF09"}]}}export{E as DEFAULT_DSH_MAX_TOKENS,m as DEFAULT_DSH_MODE,a as DEFAULT_DSH_MODELS,_ as DEFAULT_DSH_PRESETS,p as DEFAULT_DSH_PRESET_ID,D as DEFAULT_DSH_PROFILES,l as DEFAULT_DSH_PROVIDER_ID,u as DEFAULT_DSH_REASONING_EFFORT,g as DEFAULT_DSH_THINKING,y as adoptDshProfileModels,F as adoptLiveDshProviderSelection,w as buildDshBindingToolbarMeta,M as buildDshToolbarMeta,h as normalizeDshModeId,I as normalizeDshModels,L as normalizeDshPresets,T as normalizeDshProfiles,P as normalizeDshProviders,b as normalizeDshReasoningEffort,v as normalizeDshThinking,q as permissionModeFor,S as resolveDshAgentPreset,N as resolveDshModeId,f as resolveDshProviderId,R as retainRequestedDshProvider};
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "bridgeVersion": "3.30.0",
4
- "tarball": "grix-dsh-bridge-3.30.0.tgz",
5
- "size": 20937,
6
- "unpackedSize": 83231,
7
- "shasum": "53a293ed9a283270fcb12a56fb39df71964c0349",
8
- "integrity": "sha512-zAzovi04fwC/bxWhmcfowG1xfRtd76Myen7Ay+vVhb4cKFG27DLg0sEFDwvhxBUU+GgcbAnZG1oEBIJ7ETXflg=="
3
+ "bridgeVersion": "3.31.0",
4
+ "tarball": "grix-dsh-bridge-3.31.0.tgz",
5
+ "size": 21854,
6
+ "unpackedSize": 87099,
7
+ "shasum": "a54fe3ef596ad20141b9932512c28ce881bb19af",
8
+ "integrity": "sha512-srber3bjOc0QSwcpkU3e+7M591rpvP+QhWqlmjF65gglLyN/22/TA+SKdYhyYihVVD3Bj60Axzu/X2bH1Q0KDA=="
9
9
  }