@ckyueix/glm-usage 0.1.2 → 0.1.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/README.md +14 -4
- package/dist/index.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -8,6 +8,15 @@ Plan account bound to the session's current provider; clicking expands the
|
|
|
8
8
|
5-hour / weekly windows, remaining / total quota, reset times and the data
|
|
9
9
|
timestamp in your local timezone.
|
|
10
10
|
|
|
11
|
+
## 0.1.3
|
|
12
|
+
|
|
13
|
+
Widens the host requirement from the exact `0.2.1-rc.3` pin to the range
|
|
14
|
+
**`>=0.2.1-rc.2 <0.2.2-0`** — the 0.2.1 series from rc.2 onward, shared by
|
|
15
|
+
`engines.dsh` and the `@deepseek-ai/dsh` peer. Runtime code is unchanged from
|
|
16
|
+
0.1.2; the range reuses the existing rc.2 (0.1.1 production) and rc.3 (0.1.2
|
|
17
|
+
full acceptance) verification, and stays capped below 0.2.2 — hosts at 0.2.2
|
|
18
|
+
or later (including its prereleases) are refused until verified.
|
|
19
|
+
|
|
11
20
|
## 0.1.2
|
|
12
21
|
|
|
13
22
|
Updates the host requirement to DeepSeek Harness **0.2.1-rc.3**. The host's
|
|
@@ -42,12 +51,13 @@ package.
|
|
|
42
51
|
|
|
43
52
|
## Requirements
|
|
44
53
|
|
|
45
|
-
- DeepSeek Harness
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
- DeepSeek Harness **`>=0.2.1-rc.2 <0.2.2-0`** (`engines.dsh`, enforced by the
|
|
55
|
+
host's compatibility gate; covers 0.2.1-rc.2 / rc.3 / rc.4 / stable 0.2.1 —
|
|
56
|
+
versions below rc.2 and 0.2.2 or later are untested and refused).
|
|
48
57
|
- A configured GLM Coding Plan provider (Zhipu `open.bigmodel.cn` coding-plan
|
|
49
58
|
routes, e.g. the built-in `zai-coding-cn` China route or explicit
|
|
50
|
-
`openai-completions` profiles
|
|
59
|
+
`openai-completions` profiles, or `anthropic-messages` profiles on the official
|
|
60
|
+
`https://open.bigmodel.cn/api/anthropic` compatible surface).
|
|
51
61
|
|
|
52
62
|
Non-GLM providers render nothing; no request is made for them. Credentials are
|
|
53
63
|
resolved only inside the DSH host process and never reach the browser client.
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TypertRemoteService}from"@deepseek-ai/dsh-typert-protocol";import z from"@deepseek-ai/schemastery";var QUOTA_ENDPOINT="https://open.bigmodel.cn/api/monitor/usage/quota/limit",QuotaError=Object.freeze({BAD_JSON:"bad_json",API_REJECTED:"api_rejected",NO_DATA:"no_data",NO_WINDOWS:"no_windows"}),WINDOW_UNITS=Object.freeze({hours:3,week:6});function amountOf(value){return typeof value=="number"&&Number.isFinite(value)?value:typeof value=="string"&&value.trim()!==""&&Number.isFinite(Number(value))?Number(value):null}function usedPercentOf(value){let n=amountOf(value);return n===null||n<0||n>100?null:Math.round(n)}function projectLimit(item){if(typeof item!="object"||item===null||item.type!=="TOKENS_LIMIT"&&item.type!=="CREDIT_LIMIT")return null;let usedPercent=usedPercentOf(item.percentage);if(usedPercent===null)return null;let total=amountOf(item.usage),remaining=amountOf(item.remaining),resetRaw=amountOf(item.nextResetTime),resetMs=resetRaw!==null&&resetRaw>0?Math.round(resetRaw):null,active=usedPercent>0||resetMs!==null;return Object.freeze({type:item.type,usedPercent,...total!==null?{total}:{},...remaining!==null?{remaining}:{},...resetMs!==null?{resetMs}:{},active})}function pickWindow(items){let token=items.find(w=>w.type==="TOKENS_LIMIT");return token!==void 0?token:items.find(w=>w.type==="CREDIT_LIMIT")??null}function parseQuotaResponse(body){let parsed;try{let text=typeof body=="string"?body:new TextDecoder().decode(body);parsed=JSON.parse(text)}catch{return{ok:!1,error:QuotaError.BAD_JSON}}if(typeof parsed!="object"||parsed===null)return{ok:!1,error:QuotaError.BAD_JSON};if(parsed.success!==!0)return{ok:!1,error:QuotaError.API_REJECTED};let data=parsed.data;if(typeof data!="object"||data===null||Array.isArray(data))return{ok:!1,error:QuotaError.NO_DATA};let pairs=(Array.isArray(data.limits)?data.limits:[]).map(item=>[item,projectLimit(item)]).filter(([,window])=>window!==null),fiveHourRaw=[],weeklyRaw=[];for(let[item,window]of pairs){let unit=amountOf(item.unit),number_=amountOf(item.number);unit===WINDOW_UNITS.hours&&number_===5?fiveHourRaw.push(window):unit===WINDOW_UNITS.week&&weeklyRaw.push(window)}let fiveHour=pickWindow(fiveHourRaw),weekly=pickWindow(weeklyRaw);return fiveHour===null&&weekly===null?{ok:!1,error:QuotaError.NO_WINDOWS}:{ok:!0,level:typeof data.level=="string"&&data.level.length>0?data.level:null,windows:{fiveHour,weekly}}}function buildPayload(providerId,parsed,fetchedAt,{stale=!1}={}){let payload={status:"ok",provider:providerId,fetchedAt,stale,windows:{fiveHour:parsed.windows.fiveHour,weekly:parsed.windows.weekly}};return parsed.level!==null&&(payload.level=parsed.level),payload}var REMOTE_METHOD_DESCRIPTOR="@deepseek-ai/dsh-typert-protocol/remote-methods",Status=Object.freeze({OK:"ok",NOT_GLM:"not_glm",NO_CREDENTIAL:"no_credential",INVALID_PROVIDER:"invalid_provider",CONFIG_MISMATCH:"config_mismatch",CONFIG_UNVERIFIED:"config_unverified",FETCH_FAILED:"fetch_failed",BAD_RESPONSE:"bad_response"}),GLM_OFFICIAL_HOSTS=new Set(["open.bigmodel.cn"]),CHINA_CODING_PROVIDER="zai-coding-cn",CHINA_CODING_BASE_URL="https://open.bigmodel.cn/api/coding/paas/v4";function glmUrlEvidence(baseURL){if(baseURL===void 0||baseURL==="")return"unknown";let url;try{url=new URL(baseURL)}catch{return"no"}return url.protocol!=="https:"?"no":GLM_OFFICIAL_HOSTS.has(url.hostname)?"yes":"no"}var plain=value=>value!==null&&typeof value=="object"&&typeof value.get=="function"?value.get():value,GLM_API_KINDS=new Set(["zai","openai-completions"]),GlmQuotaService=class extends TypertRemoteService{static inject=[];static Config=z.object({providers:z.dict(z.string().pattern(/^[A-Z_][A-Z0-9_]*$/u)).default({}).volatile(),autoDiscover:z.boolean().default(!0).volatile(),ttlMs:z.natural().min(6e4).max(864e5).default(6e4).description("\u914D\u989D\u5237\u65B0\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09\uFF1A\u9ED8\u8BA4 60000\uFF1B\u6700\u5C0F 1 \u5206\u949F\uFF0C\u6700\u5927 24 \u5C0F\u65F6\u3002\u540C\u6B65\u63A7\u5236 Host \u7F13\u5B58\u548C\u53EF\u89C1\u9875\u9762\u5237\u65B0\u3002").volatile(),minIntervalMs:z.natural().min(1e3).default(6e4).volatile(),timeoutMs:z.natural().min(1e3).max(12e4).default(1e4).volatile()});cache=new Map;inFlight=new Map;lastAttempt=new Map;fetchImpl=globalThis.fetch;constructor(ctx,config){super(ctx,"glmQuota"),this.config=config,ctx.effect(()=>async()=>{for(let controller of this.inFlight.values())controller.abort(new Error("glm-quota: disposed"));this.inFlight.clear(),this.cache.clear()})}async get(providerId,options){return{...await this._get(providerId,options),ttlMs:this.config.ttlMs.get()}}async _get(providerId,options){if(typeof providerId!="string"||providerId.length===0||providerId.length>200)return{status:Status.INVALID_PROVIDER,provider:typeof providerId=="string"?providerId:"",reason:"invalid_provider"};let force=options!==null&&typeof options=="object"&&options.force===!0,cached=this.cache.get(providerId),now=Date.now();if(!force&&cached!==void 0&&now-cached.at<this.config.ttlMs.get())return{...cached.payload,stale:!1};let running=this.inFlight.get(providerId);if(running!==void 0)return running.promise.then(payload=>({...payload}));let attempt=this.lastAttempt.get(providerId);if(!force&&attempt!==void 0&&now-attempt<this.config.minIntervalMs.get())return cached!==void 0?{...cached.payload,stale:!0}:{status:Status.FETCH_FAILED,provider:providerId,reason:"cooldown"};let controller=new AbortController,entry={controller,promise:null};return this.inFlight.set(providerId,entry),this.lastAttempt.set(providerId,now),entry.promise=this._query(providerId,controller.signal,cached).then(payload=>(payload.status===Status.OK&&this.cache.set(providerId,{at:payload.fetchedAt,payload}),payload)).finally(()=>{this.inFlight.delete(providerId);try{this.ctx.emit("glm-quota/changed",{provider:providerId})}catch{}}),entry.promise}async _query(providerId,signal,cached){let gate=this._providerGate(providerId);if(!gate.allowed)return{status:gate.status,provider:providerId};let token=await this._resolveCredential(gate.ref);if(token===null)return{status:Status.NO_CREDENTIAL,provider:providerId,reason:gate.ref};try{let timeout=AbortSignal.timeout(this.config.timeoutMs.get()),combined=signal.aborted?signal:AbortSignal.any([signal,timeout]),body=await(await this.fetchImpl(QUOTA_ENDPOINT,{method:"GET",headers:{Authorization:token,Accept:"application/json","Accept-Language":"zh-CN,zh"},signal:combined})).text(),parsed=parseQuotaResponse(body);return parsed.ok?buildPayload(providerId,parsed,Date.now()):this._withStale({status:parsed.error===QuotaError.API_REJECTED?Status.BAD_RESPONSE:Status.FETCH_FAILED,provider:providerId,reason:parsed.error},cached)}catch(error){let reason=signal.aborted?"cancelled":error instanceof Error&&error.name==="TimeoutError"?"timeout":"network";return this._withStale({status:Status.FETCH_FAILED,provider:providerId,reason},cached)}}_withStale(payload,cached){return cached!==void 0?{...cached.payload,stale:!0,supersedes:payload}:payload}_providerGate(providerId){let configured=this.config.providers.get(),explicit=Object.prototype.hasOwnProperty.call(configured,providerId)?configured[providerId]:void 0,profile=null;try{profile=this._piAiProfile(providerId)}catch{profile=null}return explicit!==void 0?profile===null?{allowed:!1,status:Status.CONFIG_UNVERIFIED}:(typeof profile.apiKeyEnv=="string"&&profile.apiKeyEnv.length>0?profile.apiKeyEnv:void 0)!==explicit?{allowed:!1,status:Status.CONFIG_MISMATCH}:!profile.kindOk||profile.urlEvidence==="no"?{allowed:!1,status:Status.NOT_GLM}:{allowed:!0,ref:explicit}:this.config.autoDiscover.get()?profile===null?{allowed:!1,status:Status.NOT_GLM}:typeof profile.apiKeyEnv!="string"||profile.apiKeyEnv.length===0?{allowed:!1,status:Status.NOT_GLM}:!profile.kindOk||profile.urlEvidence!=="yes"?{allowed:!1,status:Status.NOT_GLM}:{allowed:!0,ref:profile.apiKeyEnv}:{allowed:!1,status:Status.NOT_GLM}}_piAiProfile(providerId){let llm=this.ctx.get("llm"),loader=this.ctx.get("loader");if(llm===void 0||loader===void 0||!llm.listProviders().some(row=>row.id===providerId))return null;let directory=llm.listConfigurableProviders().find(row=>row.provider===providerId);if(directory===void 0)return null;let entry=[...loader.entries()].find(row=>row.options.id===directory.settingsNs);if(entry?.fiber?.state!==2)return null;let profiles=entry.fiber.config?.providers?.get?.();if(profiles===null||typeof profiles!="object"||Array.isArray(profiles)||!Object.prototype.hasOwnProperty.call(profiles,providerId))return null;let profile=profiles[providerId];if(profile===null||typeof profile!="object"||Array.isArray(profile))return null;let apiKeyEnv=plain(profile.apiKeyEnv),api=plain(profile.api),baseURL=plain(profile.baseURL),nativeChinaDefault=providerId===CHINA_CODING_PROVIDER&&baseURL===void 0&&directory.declared===!1&&directory.error===void 0&&directory.defaultBaseURL===CHINA_CODING_BASE_URL;return{apiKeyEnv:typeof apiKeyEnv=="string"&&apiKeyEnv.length>0?apiKeyEnv:void 0,kindOk:api===void 0||GLM_API_KINDS.has(api),urlEvidence:nativeChinaDefault?"yes":typeof baseURL=="string"?glmUrlEvidence(baseURL):"unknown"}}async _resolveCredential(ref){let credentials=this.ctx.get("credentials");if(credentials!==void 0){let hit=await credentials.resolve(ref);return hit!==void 0&&typeof hit.value=="string"&&hit.value.length>0?hit.value:null}let ambient=process.env[ref];return typeof ambient=="string"&&ambient.length>0?ambient:null}};Object.defineProperty(GlmQuotaService.prototype,REMOTE_METHOD_DESCRIPTOR,{configurable:!0,value:Object.freeze({version:1,methods:Object.freeze([Object.freeze({method:"get",invocation:Object.freeze({kind:"direct"})})])})});export{Status,GlmQuotaService as default};
|
|
1
|
+
import{TypertRemoteService}from"@deepseek-ai/dsh-typert-protocol";import z from"@deepseek-ai/schemastery";var QUOTA_ENDPOINT="https://open.bigmodel.cn/api/monitor/usage/quota/limit",QuotaError=Object.freeze({BAD_JSON:"bad_json",API_REJECTED:"api_rejected",NO_DATA:"no_data",NO_WINDOWS:"no_windows"}),WINDOW_UNITS=Object.freeze({hours:3,week:6});function amountOf(value){return typeof value=="number"&&Number.isFinite(value)?value:typeof value=="string"&&value.trim()!==""&&Number.isFinite(Number(value))?Number(value):null}function usedPercentOf(value){let n=amountOf(value);return n===null||n<0||n>100?null:Math.round(n)}function projectLimit(item){if(typeof item!="object"||item===null||item.type!=="TOKENS_LIMIT"&&item.type!=="CREDIT_LIMIT")return null;let usedPercent=usedPercentOf(item.percentage);if(usedPercent===null)return null;let total=amountOf(item.usage),remaining=amountOf(item.remaining),resetRaw=amountOf(item.nextResetTime),resetMs=resetRaw!==null&&resetRaw>0?Math.round(resetRaw):null,active=usedPercent>0||resetMs!==null;return Object.freeze({type:item.type,usedPercent,...total!==null?{total}:{},...remaining!==null?{remaining}:{},...resetMs!==null?{resetMs}:{},active})}function pickWindow(items){let token=items.find(w=>w.type==="TOKENS_LIMIT");return token!==void 0?token:items.find(w=>w.type==="CREDIT_LIMIT")??null}function parseQuotaResponse(body){let parsed;try{let text=typeof body=="string"?body:new TextDecoder().decode(body);parsed=JSON.parse(text)}catch{return{ok:!1,error:QuotaError.BAD_JSON}}if(typeof parsed!="object"||parsed===null)return{ok:!1,error:QuotaError.BAD_JSON};if(parsed.success!==!0)return{ok:!1,error:QuotaError.API_REJECTED};let data=parsed.data;if(typeof data!="object"||data===null||Array.isArray(data))return{ok:!1,error:QuotaError.NO_DATA};let pairs=(Array.isArray(data.limits)?data.limits:[]).map(item=>[item,projectLimit(item)]).filter(([,window])=>window!==null),fiveHourRaw=[],weeklyRaw=[];for(let[item,window]of pairs){let unit=amountOf(item.unit),number_=amountOf(item.number);unit===WINDOW_UNITS.hours&&number_===5?fiveHourRaw.push(window):unit===WINDOW_UNITS.week&&weeklyRaw.push(window)}let fiveHour=pickWindow(fiveHourRaw),weekly=pickWindow(weeklyRaw);return fiveHour===null&&weekly===null?{ok:!1,error:QuotaError.NO_WINDOWS}:{ok:!0,level:typeof data.level=="string"&&data.level.length>0?data.level:null,windows:{fiveHour,weekly}}}function buildPayload(providerId,parsed,fetchedAt,{stale=!1}={}){let payload={status:"ok",provider:providerId,fetchedAt,stale,windows:{fiveHour:parsed.windows.fiveHour,weekly:parsed.windows.weekly}};return parsed.level!==null&&(payload.level=parsed.level),payload}var REMOTE_METHOD_DESCRIPTOR="@deepseek-ai/dsh-typert-protocol/remote-methods",Status=Object.freeze({OK:"ok",NOT_GLM:"not_glm",NO_CREDENTIAL:"no_credential",INVALID_PROVIDER:"invalid_provider",CONFIG_MISMATCH:"config_mismatch",CONFIG_UNVERIFIED:"config_unverified",FETCH_FAILED:"fetch_failed",BAD_RESPONSE:"bad_response"}),GLM_OFFICIAL_HOSTS=new Set(["open.bigmodel.cn"]),CHINA_CODING_PROVIDER="zai-coding-cn",CHINA_CODING_BASE_URL="https://open.bigmodel.cn/api/coding/paas/v4";function glmUrlEvidence(baseURL){if(baseURL===void 0||baseURL==="")return"unknown";let url;try{url=new URL(baseURL)}catch{return"no"}return url.protocol!=="https:"?"no":GLM_OFFICIAL_HOSTS.has(url.hostname)?"yes":"no"}var plain=value=>value!==null&&typeof value=="object"&&typeof value.get=="function"?value.get():value,GLM_API_KINDS=new Set(["zai","openai-completions","anthropic-messages"]),CODING_DEFAULT_KINDS=new Set(["zai","openai-completions"]),GlmQuotaService=class extends TypertRemoteService{static inject=[];static Config=z.object({providers:z.dict(z.string().pattern(/^[A-Z_][A-Z0-9_]*$/u)).default({}).volatile(),autoDiscover:z.boolean().default(!0).volatile(),ttlMs:z.natural().min(6e4).max(864e5).default(6e4).description("\u914D\u989D\u5237\u65B0\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09\uFF1A\u9ED8\u8BA4 60000\uFF1B\u6700\u5C0F 1 \u5206\u949F\uFF0C\u6700\u5927 24 \u5C0F\u65F6\u3002\u540C\u6B65\u63A7\u5236 Host \u7F13\u5B58\u548C\u53EF\u89C1\u9875\u9762\u5237\u65B0\u3002").volatile(),minIntervalMs:z.natural().min(1e3).default(6e4).volatile(),timeoutMs:z.natural().min(1e3).max(12e4).default(1e4).volatile()});cache=new Map;inFlight=new Map;lastAttempt=new Map;fetchImpl=globalThis.fetch;constructor(ctx,config){super(ctx,"glmQuota"),this.config=config,ctx.effect(()=>async()=>{for(let controller of this.inFlight.values())controller.abort(new Error("glm-quota: disposed"));this.inFlight.clear(),this.cache.clear()})}async get(providerId,options){return{...await this._get(providerId,options),ttlMs:this.config.ttlMs.get()}}async _get(providerId,options){if(typeof providerId!="string"||providerId.length===0||providerId.length>200)return{status:Status.INVALID_PROVIDER,provider:typeof providerId=="string"?providerId:"",reason:"invalid_provider"};let force=options!==null&&typeof options=="object"&&options.force===!0,cached=this.cache.get(providerId),now=Date.now();if(!force&&cached!==void 0&&now-cached.at<this.config.ttlMs.get())return{...cached.payload,stale:!1};let running=this.inFlight.get(providerId);if(running!==void 0)return running.promise.then(payload=>({...payload}));let attempt=this.lastAttempt.get(providerId);if(!force&&attempt!==void 0&&now-attempt<this.config.minIntervalMs.get())return cached!==void 0?{...cached.payload,stale:!0}:{status:Status.FETCH_FAILED,provider:providerId,reason:"cooldown"};let controller=new AbortController,entry={controller,promise:null};return this.inFlight.set(providerId,entry),this.lastAttempt.set(providerId,now),entry.promise=this._query(providerId,controller.signal,cached).then(payload=>(payload.status===Status.OK&&this.cache.set(providerId,{at:payload.fetchedAt,payload}),payload)).finally(()=>{this.inFlight.delete(providerId);try{this.ctx.emit("glm-quota/changed",{provider:providerId})}catch{}}),entry.promise}async _query(providerId,signal,cached){let gate=this._providerGate(providerId);if(!gate.allowed)return{status:gate.status,provider:providerId};let token=await this._resolveCredential(gate.ref);if(token===null)return{status:Status.NO_CREDENTIAL,provider:providerId,reason:gate.ref};try{let timeout=AbortSignal.timeout(this.config.timeoutMs.get()),combined=signal.aborted?signal:AbortSignal.any([signal,timeout]),body=await(await this.fetchImpl(QUOTA_ENDPOINT,{method:"GET",headers:{Authorization:token,Accept:"application/json","Accept-Language":"zh-CN,zh"},signal:combined})).text(),parsed=parseQuotaResponse(body);return parsed.ok?buildPayload(providerId,parsed,Date.now()):this._withStale({status:parsed.error===QuotaError.API_REJECTED?Status.BAD_RESPONSE:Status.FETCH_FAILED,provider:providerId,reason:parsed.error},cached)}catch(error){let reason=signal.aborted?"cancelled":error instanceof Error&&error.name==="TimeoutError"?"timeout":"network";return this._withStale({status:Status.FETCH_FAILED,provider:providerId,reason},cached)}}_withStale(payload,cached){return cached!==void 0?{...cached.payload,stale:!0,supersedes:payload}:payload}_providerGate(providerId){let configured=this.config.providers.get(),explicit=Object.prototype.hasOwnProperty.call(configured,providerId)?configured[providerId]:void 0,profile=null;try{profile=this._piAiProfile(providerId)}catch{profile=null}return explicit!==void 0?profile===null?{allowed:!1,status:Status.CONFIG_UNVERIFIED}:(typeof profile.apiKeyEnv=="string"&&profile.apiKeyEnv.length>0?profile.apiKeyEnv:void 0)!==explicit?{allowed:!1,status:Status.CONFIG_MISMATCH}:!profile.kindOk||profile.urlEvidence==="no"?{allowed:!1,status:Status.NOT_GLM}:{allowed:!0,ref:explicit}:this.config.autoDiscover.get()?profile===null?{allowed:!1,status:Status.NOT_GLM}:typeof profile.apiKeyEnv!="string"||profile.apiKeyEnv.length===0?{allowed:!1,status:Status.NOT_GLM}:!profile.kindOk||profile.urlEvidence!=="yes"?{allowed:!1,status:Status.NOT_GLM}:{allowed:!0,ref:profile.apiKeyEnv}:{allowed:!1,status:Status.NOT_GLM}}_piAiProfile(providerId){let llm=this.ctx.get("llm"),loader=this.ctx.get("loader");if(llm===void 0||loader===void 0||!llm.listProviders().some(row=>row.id===providerId))return null;let directory=llm.listConfigurableProviders().find(row=>row.provider===providerId);if(directory===void 0)return null;let entry=[...loader.entries()].find(row=>row.options.id===directory.settingsNs);if(entry?.fiber?.state!==2)return null;let profiles=entry.fiber.config?.providers?.get?.();if(profiles===null||typeof profiles!="object"||Array.isArray(profiles)||!Object.prototype.hasOwnProperty.call(profiles,providerId))return null;let profile=profiles[providerId];if(profile===null||typeof profile!="object"||Array.isArray(profile))return null;let apiKeyEnv=plain(profile.apiKeyEnv),api=plain(profile.api),baseURL=plain(profile.baseURL),nativeChinaDefault=providerId===CHINA_CODING_PROVIDER&&baseURL===void 0&&(api===void 0||CODING_DEFAULT_KINDS.has(api))&&directory.declared===!1&&directory.error===void 0&&directory.defaultBaseURL===CHINA_CODING_BASE_URL;return{apiKeyEnv:typeof apiKeyEnv=="string"&&apiKeyEnv.length>0?apiKeyEnv:void 0,kindOk:api===void 0||GLM_API_KINDS.has(api),urlEvidence:nativeChinaDefault?"yes":typeof baseURL=="string"?glmUrlEvidence(baseURL):"unknown"}}async _resolveCredential(ref){let credentials=this.ctx.get("credentials");if(credentials!==void 0){let hit=await credentials.resolve(ref);return hit!==void 0&&typeof hit.value=="string"&&hit.value.length>0?hit.value:null}let ambient=process.env[ref];return typeof ambient=="string"&&ambient.length>0?ambient:null}};Object.defineProperty(GlmQuotaService.prototype,REMOTE_METHOD_DESCRIPTOR,{configurable:!0,value:Object.freeze({version:1,methods:Object.freeze([Object.freeze({method:"get",invocation:Object.freeze({kind:"direct"})})])})});export{Status,GlmQuotaService as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckyueix/glm-usage",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "GLM Coding Plan usage pill for the DeepSeek Harness composer dock (dual-half: host quota reader + web client entry)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"LICENSE"
|
|
18
18
|
],
|
|
19
19
|
"engines": {
|
|
20
|
-
"dsh": "0.2.1-rc.
|
|
20
|
+
"dsh": ">=0.2.1-rc.2 <0.2.2-0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@deepseek-ai/dsh": "0.2.1-rc.
|
|
23
|
+
"@deepseek-ai/dsh": ">=0.2.1-rc.2 <0.2.2-0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.3",
|