grix-connector 4.14.0 → 4.14.1
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.
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"bridgeVersion": "4.14.
|
|
4
|
-
"tarball": "grix-dsh-bridge-4.14.
|
|
5
|
-
"size":
|
|
3
|
+
"bridgeVersion": "4.14.1",
|
|
4
|
+
"tarball": "grix-dsh-bridge-4.14.1.tgz",
|
|
5
|
+
"size": 24155,
|
|
6
6
|
"unpackedSize": 96521,
|
|
7
|
-
"shasum": "
|
|
8
|
-
"integrity": "sha512-
|
|
7
|
+
"shasum": "0978ca4383c3442fc3191b18fb38b31ef0dfab94",
|
|
8
|
+
"integrity": "sha512-l889rKJNE1oO8mxswipjksVd4WgX7xTvNuIVckuzsuSHoq386Nq6nxdORate+fLO/ZmFMpFDhGidW/8BCN1KHQ=="
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ClaudeAdapter as
|
|
1
|
+
import{ClaudeAdapter as x}from"../adapter/claude/index.js";import{getCachedModels as L}from"../adapter/claude/model-list.js";import{SESSION_CONTROL_ERROR_CODES as R,SESSION_MODE_IDS as _}from"../adapter/claude/protocol-contract.js";import{CursorAdapter as I,CURSOR_MODE_OPTIONS as Q}from"../adapter/cursor/index.js";import{getCachedAgyModels as b,resolveAgyToolbarModelId as p}from"../adapter/agy/model-list.js";import{getCachedAgyQuotaInfo as S,refreshAgyQuotaInfo as y}from"../adapter/agy/quota.js";import{normalizeClaudeEffort as T,CLAUDE_EFFORT_LEVELS as w}from"../core/config/claude-direct-env.js";import{resolveToolbarSelection as m}from"./toolbar-selection.js";import{log as M}from"../core/log/index.js";const k=["isRateLimitsCacheFresh","isGrixRelayActive","getFreshClaudeRateLimitState","maybeQueryProviderQuota","providerQuotaToRateLimits","normalizeClaudeModeId","resolveSessionModelId","resolveCursorSessionModeId","resolveClaudeSessionEffort","resolveClaudeSessionModeId","currentClaudeModeId","buildAgyToolbarMeta","buildAgyQuotaMeta","sendAgyBindingCard"],U=["name","config","aibotHandle","pool","bindingStore","globalConfigStore","providerResolver","cachedClaudeRateLimitState","cachedProviderQuota","cachedProviderQuotaSampledAtMs"];function $(e,i){return String(i??"").trim().toLowerCase()===_.approval?_.approval:_.fullAuto}function G(e,i,t,d){const r=Array.isArray(d?.options)?d.options:[];if(r.length===0)return;const l=e.bindingStore.get(i)?.cwd??"",u={};if(t==="model"){u.available_models=r.map(a=>({id:a.id,displayName:a.label}));const c=r.find(a=>a.current);c&&(u.model_id=c.id)}else if(t==="mode"){u.available_modes=r.map(a=>({id:a.id,displayName:a.label}));const c=r.find(a=>a.current);c&&(u.mode_id=c.id)}else u[`${t}_options`]=r;e.aibotHandle.sendUpdateBindingCard({session_id:i,worker_status:"ready",cwd:l,meta:u})}function A(e){return e.config.adapterType??"acp"}function J(e,i){return m(e,A(e),i,"model")}function q(e,i){return m(e,A(e),i,"mode")}function V(e,i){return m(e,"cursor",i,"mode")}function W(e,i){return m(e,"claude",i,"effort")}function j(e,i){return m(e,"claude",i,"mode")}function K(e,i){return e.normalizeClaudeModeId(e.resolveClaudeSessionModeId(i))}function X(e,i){const t=e.pool.getSlot(i);if(t?.adapter instanceof I)return t.adapter.getToolbarMeta(i);const d=e.bindingStore.getModelId(i)??"auto",r=e.resolveCursorSessionModeId(i)??"full_auto";return{model_id:d,mode_id:r,currentModelId:d,currentModeId:r,available_models:[],available_modes:Q.map(n=>({...n}))}}function C(e){return!e?.agyConversationId}function Y(e,i,t){const d=e.bindingStore.get(i);if(!d)return;const r=b(e.config.agent.command),n=r.length>0?r[0].id:"";let l=p(e.resolveSessionModelId(i)||"",r)||n;r.length>0&&!r.some(c=>c.id===l)&&(l=n);const u=t??S(e.config.agent.command);return{model_id:l,currentModelId:l,model_switchable:C(d),available_models:r.map(c=>({id:c.id,displayName:c.displayName})),...e.buildAgyQuotaMeta(u)}}function Z(e,i){const t={rate_limits:null,extra_limits:null};return i.rateLimits&&(t.rate_limits={primary:i.rateLimits.primary,secondary:i.rateLimits.secondary,sampledAt:i.sampledAt??Date.now()},i.rateLimits.extras&&i.rateLimits.extras.length>0&&(t.extra_limits=i.rateLimits.extras)),{...t,...i.plan!==void 0&&{plan:i.plan},...i.quota_exhausted!==void 0&&{quota_exhausted:i.quota_exhausted},...i.quota_reset_at!==void 0&&{quota_reset_at:i.quota_reset_at},...i.available_credits!==void 0&&{available_credits:i.available_credits}}}function h(e,i,t,d){const r=d??e.buildAgyToolbarMeta(i);return e.aibotHandle.sendUpdateBindingCard({session_id:i,worker_status:"ready",cwd:t,...r?{meta:r}:{}}),r}async function ee(e,i,t=!1){const d=await y(e.config.agent.command,t),r=e.bindingStore.get(i);return r?.cwd&&e.sendAgyBindingCard(i,r.cwd,e.buildAgyToolbarMeta(i,d)),d}async function ie(e,i,t){const d=i.params??{},r=b(e.config.agent.command),n=p(String(d.model_id??d.modelId??""),r);if(!t){e.aibotHandle.sendLocalActionResult({action_id:i.action_id,status:"failed",error_code:"session_id_required",error_msg:"session_id is required for set_model"});return}if(!n){e.aibotHandle.sendLocalActionResult({action_id:i.action_id,status:"failed",error_code:"set_model_invalid",error_msg:"model_id is required"});return}const l=e.bindingStore.get(t);if(!l?.cwd){e.aibotHandle.sendLocalActionResult({action_id:i.action_id,status:"failed",error_code:R.bindingMissing,error_msg:"session binding was not found"});return}if(!C(l)){const c=p(e.resolveSessionModelId(t)||l.modelId||"",r)||l.modelId||"";if(n!==c){e.aibotHandle.sendLocalActionResult({action_id:i.action_id,status:"failed",error_code:"set_model_locked",error_msg:"\u5F53\u524D\u4F1A\u8BDD\u5DF2\u5F00\u59CB\uFF0Cagy \u6A21\u578B\u4E0D\u53EF\u4E2D\u9014\u5207\u6362\uFF1B\u8BF7\u65B0\u5F00\u8BDD\u9898\u540E\u518D\u9009\u6A21\u578B"}),e.sendAgyBindingCard(t,l.cwd,e.buildAgyToolbarMeta(t));return}}l.modelId!==n&&(e.bindingStore.setModelId(t,n),e.globalConfigStore?.set(e.name,{modelId:n}));const u=await y(e.config.agent.command,!0).catch(()=>S(e.config.agent.command));e.sendAgyBindingCard(t,l.cwd,e.buildAgyToolbarMeta(t,u)),e.aibotHandle.sendLocalActionResult({action_id:i.action_id,status:"ok",result:{outcome:"model_set",model_id:n,binding:{cwd:l.cwd,model_id:n}}})}function re(e,i){if(!e.bindingStore.get(i))return;const d=L(),r=d.length>0?d[0].id:"";let n=e.resolveSessionModelId(i)||r;d.length>0&&!d.some(o=>o.id===n)&&(n=r);const l=e.currentClaudeModeId(i);let u;try{const o=e.providerResolver?e.providerResolver():e.config.agent.provider;u=T(o?.effort)}catch{}const c=e.resolveClaudeSessionEffort(i)??u??"auto",a={model_id:n,mode_id:l,currentModelId:n,currentModeId:l,available_efforts:[...w],effort:c,reasoning_effort:c,available_models:d.map(o=>({id:o.id,displayName:o.displayName}))},v=e.pool.getSlot(i),s=v?.adapter instanceof x?v.adapter.getSessionState():null;(s?.rateLimits?.fiveHour||s?.rateLimits?.sevenDay)&&(e.cachedClaudeRateLimitState=s);const f=e.isGrixRelayActive(),g=f?null:s??e.getFreshClaudeRateLimitState();if(g){const o=g.rateLimits;o&&(o.fiveHour||o.sevenDay)&&(a.rate_limits={...o.fiveHour?{fiveHour:o.fiveHour}:{},...o.sevenDay?{sevenDay:o.sevenDay}:{},sampledAt:g.sampledAt||Date.now()})}if(f){a.rate_limits=null;const o=e.cachedProviderQuota?.success&&e.cachedProviderQuota.provider==="grix"?e.cachedProviderQuota:null;a.provider_quota=o,(!o||!e.isRateLimitsCacheFresh(e.cachedProviderQuotaSampledAtMs))&&e.maybeQueryProviderQuota().catch(()=>{})}else a.provider_quota=null;if(s){const o=s.contextWindow;o.usedPercentage!=null&&(a.context_window={usedPercentage:o.usedPercentage,remainingPercentage:o.remainingPercentage})}if(!f&&!a.rate_limits&&e.cachedProviderQuota?.success&&e.cachedProviderQuota.provider!=="grix"){e.isRateLimitsCacheFresh(e.cachedProviderQuotaSampledAtMs)||e.maybeQueryProviderQuota().catch(()=>{});const o=e.providerQuotaToRateLimits(e.cachedProviderQuota);o&&(a.rate_limits=o),M.info(e.name,`[toolbar-meta] provider quota fallback: hasCached=${!!e.cachedProviderQuota} fromProvider=${JSON.stringify(o)}`)}return a.rate_limits&&M.info(e.name,`[toolbar-meta] rate_limits included: ${JSON.stringify(a.rate_limits)}`),a}export{U as TOOLBAR_META_HOST_FIELDS,k as TOOLBAR_META_HOST_METHODS,Z as buildAgyQuotaMeta,Y as buildAgyToolbarMeta,re as buildClaudeToolbarMeta,X as buildCursorToolbarMeta,K as currentClaudeModeId,ie as handleAgySetModel,G as handleExecCommandOptions,C as isAgyModelSwitchable,$ as normalizeClaudeModeId,ee as refreshAndPushAgyQuota,W as resolveClaudeSessionEffort,j as resolveClaudeSessionModeId,V as resolveCursorSessionModeId,q as resolveSessionModeId,J as resolveSessionModelId,h as sendAgyBindingCard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function a(
|
|
1
|
+
function a(t){const o=new Set([`http://127.0.0.1:${t.serverPort}`,`http://localhost:${t.serverPort}`,...t.allowedOrigins]),e=new Set([`127.0.0.1:${t.serverPort}`,`localhost:${t.serverPort}`,...t.allowedHosts]);return{validateRequest(s){const r=i(s,o);if(!r.ok)return r;const n=l(s,e);return n.ok?{ok:!0}:n}}}function i(t,o){const e=t.headers.origin;return e?o.has(e)?{ok:!0}:{ok:!1,statusCode:403,message:`Origin not allowed: ${e}`}:{ok:!0}}function l(t,o){const e=t.headers.host;return e?o.has(e)?{ok:!0}:{ok:!1,statusCode:403,message:`Host not allowed: ${e}`}:{ok:!1,statusCode:403,message:"Missing Host header"}}export{a as createSecurityPolicy};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grix-connector",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.1",
|
|
4
4
|
"description": "Connect local AI coding agents (Claude, Codex, Gemini, Qwen, DeepSeek, Cursor, OpenCode, Pi, OpenHuman, Reasonix) to the Grix scheduling platform. Also serves as an OpenClaw plugin for Grix channel transport.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
Binary file
|