@dan-ai-studio/dshopencodego 0.1.38 → 0.1.39
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.en.md +11 -1
- package/README.md +11 -1
- package/lib/client.js +2 -2
- package/lib/index.js +1 -1
- package/lib/types/catalog/go-doc.d.ts +0 -2
- package/lib/types/catalog/go-doc.js +1 -1
- package/lib/types/catalog/index.d.ts +1 -1
- package/lib/types/catalog/metadata.d.ts +2 -1
- package/lib/types/catalog/protocol.d.ts +2 -1
- package/lib/types/catalog/service.d.ts +2 -1
- package/lib/types/config.d.ts +2 -9
- package/lib/types/config.js +4 -4
- package/lib/types/models.d.ts +0 -2
- package/lib/types/models.js +1 -1
- package/lib/types/update/check.d.ts +1 -1
- package/lib/types/usage/windows.d.ts +2 -1
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -128,13 +128,23 @@ A model that does not accept image input is rejected before the request is sent
|
|
|
128
128
|
|
|
129
129
|
Four evidence levels decide how a model is called, first hit wins:
|
|
130
130
|
|
|
131
|
-
1. **The
|
|
131
|
+
1. **The pi-ai catalog entry** — protocol plus wire quirks (DeepSeek's `thinkingFormat`, for example). This catalog is **compiled into the bundle**, so it only moves when the plugin is released.
|
|
132
132
|
2. **models.dev's per-model `provider.npm`** — `@ai-sdk/openai` → Responses, `@ai-sdk/anthropic` → Messages, absent → Chat Completions.
|
|
133
133
|
3. **Family rule** — `grok*`/`gpt*`/`muse-*` → Responses, everything else → Chat Completions.
|
|
134
134
|
4. **`modelProtocols` override** — always wins.
|
|
135
135
|
|
|
136
136
|
The gateway's `/v1/models` answers only *which* models exist, never *how* to call them. Inferred decisions are labelled in the settings page; override them with `modelProtocols`.
|
|
137
137
|
|
|
138
|
+
## A common question: does the provider adding or retiring a model need a plugin release?
|
|
139
|
+
|
|
140
|
+
**No — the model list is live.** The gateway's `/v1/models` is the only source of membership, and every catalog refresh (a 60-minute cache by default, or the Recheck button) takes it as the truth:
|
|
141
|
+
|
|
142
|
+
- a model the provider **adds** appears on the next refresh; if no metadata source describes it, it is labelled as inferred and can be pinned with `modelProtocols`;
|
|
143
|
+
- a model the provider **retires** disappears on the next refresh;
|
|
144
|
+
- the bundled catalog is **frozen at the plugin's version** and affects only the quality of the "how to call it" decision, never *which* models exist.
|
|
145
|
+
|
|
146
|
+
The only thing that waits on a plugin release is a missing wire quirk in the pi-ai catalog (DeepSeek's `thinkingFormat`, say) — the model itself is already usable.
|
|
147
|
+
|
|
138
148
|
## The model list in the settings page
|
|
139
149
|
|
|
140
150
|
The "OpenCode Go" section shows the live gateway catalog (the count follows the gateway) with, per model:
|
package/README.md
CHANGED
|
@@ -128,13 +128,23 @@ API Key 通过 Harness 凭证库提供(引用名 `OPENCODE_GO_API_KEY`),
|
|
|
128
128
|
|
|
129
129
|
一个模型"怎么调"由四级证据决定,先命中先赢:
|
|
130
130
|
|
|
131
|
-
1.
|
|
131
|
+
1. **pi-ai 内置目录的精确条目**——给出协议与线怪癖(如 DeepSeek 的 `thinkingFormat`)。该目录**编译进插件产物**,版本随插件发版更新,不会在运行时自行变化。
|
|
132
132
|
2. **models.dev 的每模型 `provider.npm`**——`@ai-sdk/openai` → Responses,`@ai-sdk/anthropic` → Messages,缺省 → Chat Completions。
|
|
133
133
|
3. **家族规则**——`grok*`/`gpt*`/`muse-*` → Responses,其余 → Chat Completions。
|
|
134
134
|
4. **`modelProtocols` 覆盖**——永远最高优先。
|
|
135
135
|
|
|
136
136
|
网关的 `/v1/models` 只回答"有哪些模型",不回答"怎么调"。被推断出来的模型会在设置页标注,判错时用 `modelProtocols` 覆盖即可。
|
|
137
137
|
|
|
138
|
+
## 一个常见疑问:官方增删模型后,需要等插件发版吗?
|
|
139
|
+
|
|
140
|
+
**不需要——模型列表是实时的。** 网关 `/v1/models` 是成员资格的唯一来源,每次刷新目录(默认 60 分钟缓存,或点「重新检查」)都会以它为准:
|
|
141
|
+
|
|
142
|
+
- 官方**新增**模型 → 下次刷新即出现,协议/容量若不在内置目录中则标为"推断"并可被 `modelProtocols` 覆盖;
|
|
143
|
+
- 官方**下线**模型 → 下次刷新即消失;
|
|
144
|
+
- 内置目录**冻结**在插件版本里,仅影响"怎么调"的推断质量,不影响"有哪些"。
|
|
145
|
+
|
|
146
|
+
只有当 pi-ai 内置目录**缺了某个模型的线怪癖**(如 DeepSeek 的 `thinkingFormat`)时,才需要等插件同步 pi-ai 的新版本——而模型本身早已可用。
|
|
147
|
+
|
|
138
148
|
## 设置页里的模型列表
|
|
139
149
|
|
|
140
150
|
设置页的「OpenCode Go」分区展示网关实时目录(数量随网关发布变化),并对每个模型给出:
|
package/lib/client.js
CHANGED
|
@@ -562,7 +562,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id) + "]")
|
|
|
562
562
|
style.textContent = ".d7lz0W_root{color:var(--dsw-alias-label-primary);flex-direction:column;gap:1.25rem;display:flex}.d7lz0W_title{margin:0;font-size:1.05rem}.d7lz0W_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:.8rem}.d7lz0W_warn{color:var(--dsw-alias-state-warn-primary);margin:0;font-size:.8rem}.d7lz0W_ok{color:var(--dsw-alias-state-success-primary);font-size:.8rem}.d7lz0W_block{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:.6rem;flex-direction:column;gap:.5rem;padding:.85rem;display:flex}.d7lz0W_row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.d7lz0W_row>strong{margin-right:auto}.d7lz0W_input{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);min-width:10rem;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;flex:14rem;padding:.35rem .5rem;font-size:.85rem}.d7lz0W_button{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:.35rem;padding:.35rem .7rem;font-size:.8rem}.d7lz0W_button:disabled{color:var(--dsw-alias-state-idle-primary);cursor:default}.d7lz0W_number{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:5rem;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;padding:.25rem .4rem;font-size:.8rem}.d7lz0W_select{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:100%;color:var(--dsw-alias-label-primary);font:inherit;border-radius:.35rem;padding:.25rem .4rem;font-size:.8rem}.d7lz0W_list{flex-direction:column;display:flex}.d7lz0W_item{border-top:1px solid var(--dsw-alias-border-l1);align-items:flex-start;gap:.5rem;padding:.45rem .15rem;display:flex}.d7lz0W_item input[type=checkbox]{accent-color:var(--dsw-alias-brand-primary);margin-top:.15rem}.d7lz0W_itemBody{flex-direction:column;gap:.15rem;min-width:0;display:flex}.d7lz0W_itemMain{flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.d7lz0W_itemMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:.75rem;font-size:.75rem;display:flex}.d7lz0W_itemModalities{color:var(--dsw-alias-label-secondary);font-size:.75rem}.d7lz0W_name{color:var(--dsw-alias-label-primary)}.d7lz0W_mono{color:var(--dsw-alias-label-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.d7lz0W_badge{color:var(--dsw-alias-brand-primary)}";
|
|
563
563
|
document.head.appendChild(style);
|
|
564
564
|
}
|
|
565
|
-
var section_default = { "
|
|
565
|
+
var section_default = { "item": "d7lz0W_item", "name": "d7lz0W_name", "input": "d7lz0W_input", "block": "d7lz0W_block", "number": "d7lz0W_number", "itemMeta": "d7lz0W_itemMeta", "itemModalities": "d7lz0W_itemModalities", "badge": "d7lz0W_badge", "ok": "d7lz0W_ok", "select": "d7lz0W_select", "row": "d7lz0W_row", "itemMain": "d7lz0W_itemMain", "list": "d7lz0W_list", "mono": "d7lz0W_mono", "itemBody": "d7lz0W_itemBody", "title": "d7lz0W_title", "warn": "d7lz0W_warn", "button": "d7lz0W_button", "root": "d7lz0W_root", "hint": "d7lz0W_hint" };
|
|
566
566
|
|
|
567
567
|
// src/client/Section.tsx
|
|
568
568
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1335,7 +1335,7 @@ if (!document.querySelector("style[data-plugin-css=" + JSON.stringify(id2) + "]"
|
|
|
1335
1335
|
style.textContent = ".mMNkkW_root{align-items:center;display:inline-flex;position:relative}.mMNkkW_trigger{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;white-space:nowrap;border-radius:999px;padding:.35rem .6rem;font-size:.8rem;line-height:1}.mMNkkW_trigger:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2)}.mMNkkW_panel{z-index:20;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-overlay);width:18rem;color:var(--dsw-alias-label-primary);border-radius:.6rem;flex-direction:column;gap:.6rem;padding:.75rem .85rem;display:flex;position:absolute;bottom:calc(100% + .5rem);right:0;box-shadow:0 8px 24px #0000002e}.mMNkkW_window{flex-direction:column;gap:.25rem;display:flex}.mMNkkW_row{justify-content:space-between;gap:.5rem;font-size:.85rem;display:flex}.mMNkkW_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:.75rem}.mMNkkW_progress{width:100%;height:.35rem;accent-color:var(--dsw-alias-brand-primary)}.mMNkkW_limited{color:var(--dsw-alias-state-warn-primary);font-size:.75rem}.mMNkkW_warning{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-label-primary);border-radius:.4rem;padding:.4rem .5rem;font-size:.75rem}.mMNkkW_retry{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;border-radius:.35rem;align-self:flex-start;padding:.25rem .5rem;font-size:.75rem}.mMNkkW_local{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:.2rem;padding-top:.5rem;display:flex}";
|
|
1336
1336
|
document.head.appendChild(style);
|
|
1337
1337
|
}
|
|
1338
|
-
var pill_default = { "
|
|
1338
|
+
var pill_default = { "hint": "mMNkkW_hint", "progress": "mMNkkW_progress", "root": "mMNkkW_root", "row": "mMNkkW_row", "trigger": "mMNkkW_trigger", "warning": "mMNkkW_warning", "limited": "mMNkkW_limited", "retry": "mMNkkW_retry", "panel": "mMNkkW_panel", "local": "mMNkkW_local", "window": "mMNkkW_window" };
|
|
1339
1339
|
|
|
1340
1340
|
// src/client/UsagePill.tsx
|
|
1341
1341
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
package/lib/index.js
CHANGED
|
@@ -45505,7 +45505,7 @@ function createUpdateChecker(deps) {
|
|
|
45505
45505
|
}
|
|
45506
45506
|
|
|
45507
45507
|
// src/update/version.ts
|
|
45508
|
-
var PLUGIN_VERSION = true ? "0.1.
|
|
45508
|
+
var PLUGIN_VERSION = true ? "0.1.39" : "0.0.0-dev";
|
|
45509
45509
|
|
|
45510
45510
|
// src/update/service.ts
|
|
45511
45511
|
import { TypertRemoteService as TypertRemoteService2 } from "@deepseek-ai/dsh-typert-protocol";
|
|
@@ -22,8 +22,6 @@ import type { WireProtocol } from './protocol.ts';
|
|
|
22
22
|
* same path and is tried when GitHub itself is unreachable.
|
|
23
23
|
*/
|
|
24
24
|
export declare const GO_DOC_URLS: readonly string[];
|
|
25
|
-
/** The document is about 30 KB; the cap leaves room without inviting a flood. */
|
|
26
|
-
export declare const GO_DOC_MAX_BYTES: number;
|
|
27
25
|
/** What one parse of the document yields. */
|
|
28
26
|
export interface GoDoc {
|
|
29
27
|
/** Per-model allowances, keyed by the gateway's model id. */
|
|
@@ -27,7 +27,7 @@ export const GO_DOC_URLS = [
|
|
|
27
27
|
'https://cdn.jsdelivr.net/gh/anomalyco/opencode@dev/packages/web/src/content/docs/go.mdx',
|
|
28
28
|
];
|
|
29
29
|
/** The document is about 30 KB; the cap leaves room without inviting a flood. */
|
|
30
|
-
|
|
30
|
+
const GO_DOC_MAX_BYTES = 1024 * 1024;
|
|
31
31
|
/** The protocol each documented endpoint path names. */
|
|
32
32
|
const ENDPOINT_PROTOCOLS = {
|
|
33
33
|
'/chat/completions': 'openai-completions',
|
|
@@ -50,7 +50,7 @@ export interface CatalogSnapshot {
|
|
|
50
50
|
readonly fetchedAtMs: number;
|
|
51
51
|
}
|
|
52
52
|
/** Observers the plugin logs through. */
|
|
53
|
-
|
|
53
|
+
interface CatalogObservers {
|
|
54
54
|
/** One source fell back to retained data. */
|
|
55
55
|
readonly onFallback?: (detail: {
|
|
56
56
|
url: string;
|
|
@@ -64,7 +64,7 @@ export interface ModelDefaults {
|
|
|
64
64
|
/** The base URL one protocol's SDK expects for this gateway. */
|
|
65
65
|
export declare function modelBaseURL(api: WireProtocol, baseURL: string): string;
|
|
66
66
|
/** Inputs the ladder needs beyond the document itself. */
|
|
67
|
-
|
|
67
|
+
interface MetadataSources {
|
|
68
68
|
/** Installed catalog entries by id, the first level of the ladder. */
|
|
69
69
|
readonly builtin: ReadonlyMap<string, Model<Api>>;
|
|
70
70
|
/** Route defaults for a model no source sizes. */
|
|
@@ -83,3 +83,4 @@ export interface MetadataSources {
|
|
|
83
83
|
export declare function readOnlineMetadata(body: unknown, sources: MetadataSources): OnlineMetadata;
|
|
84
84
|
/** Project one parsed model into the shape pi-ai's providers consume. */
|
|
85
85
|
export declare function toPiModel(facts: ModelFacts, baseURL: string): Model<Api>;
|
|
86
|
+
export {};
|
|
@@ -49,7 +49,7 @@ export declare function inferProtocol(id: string): WireProtocol;
|
|
|
49
49
|
/** Narrow an arbitrary configured string to a protocol this plugin can drive. */
|
|
50
50
|
export declare function asWireProtocol(value: string | undefined): WireProtocol | undefined;
|
|
51
51
|
/** One model's evidence, as gathered from the three automatic sources. */
|
|
52
|
-
|
|
52
|
+
interface ProtocolEvidence {
|
|
53
53
|
/** Protocol the installed pi-ai catalog declares for this exact id. */
|
|
54
54
|
readonly builtin?: WireProtocol;
|
|
55
55
|
/** Protocol models.dev names for this model, or its provider-level default. */
|
|
@@ -68,3 +68,4 @@ export interface ProtocolEvidence {
|
|
|
68
68
|
export declare function decideProtocol(id: string, evidence: ProtocolEvidence): ProtocolDecision | undefined;
|
|
69
69
|
/** The pi-ai API string for one wire protocol. */
|
|
70
70
|
export declare function piApiOf(api: WireProtocol): Api;
|
|
71
|
+
export {};
|
|
@@ -12,7 +12,7 @@ import { RemoteError, TypertRemoteService } from '@deepseek-ai/dsh-typert-protoc
|
|
|
12
12
|
import type { OpencodeGoCatalog } from './index.ts';
|
|
13
13
|
import type { CatalogReading } from './reading.ts';
|
|
14
14
|
/** Host inputs for the catalog service. */
|
|
15
|
-
|
|
15
|
+
interface CatalogServiceOptions {
|
|
16
16
|
/** The route's current catalog resolver. */
|
|
17
17
|
readonly catalog: () => OpencodeGoCatalog;
|
|
18
18
|
/** Current per-model visibility switches. */
|
|
@@ -30,3 +30,4 @@ export declare class OpencodeGoCatalogService extends TypertRemoteService {
|
|
|
30
30
|
}
|
|
31
31
|
/** The domain failure the settings page renders when a refresh cannot run. */
|
|
32
32
|
export declare function catalogFailure(error: unknown): RemoteError;
|
|
33
|
+
export {};
|
package/lib/types/config.d.ts
CHANGED
|
@@ -17,20 +17,12 @@ import z from '@deepseek-ai/schemastery';
|
|
|
17
17
|
export declare const DEFAULT_API_KEY_ENV = "OPENCODE_GO_API_KEY";
|
|
18
18
|
/** Requests and pickers share this cache lifetime; explicit discovery revalidates immediately. */
|
|
19
19
|
export declare const DEFAULT_REFRESH_MINUTES = 60;
|
|
20
|
-
/** Default maximum idle interval while one stream read is outstanding. */
|
|
21
|
-
export declare const DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300000;
|
|
22
|
-
/** Request-level bound on the base64-encoded image payload. */
|
|
23
|
-
export declare const DEFAULT_MAX_REQUEST_IMAGE_BYTES: number;
|
|
24
|
-
/** Total-pixel budget for one request image. */
|
|
25
|
-
export declare const DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET = 1440000;
|
|
26
|
-
/** Raw encoded-byte target for one request image before base64 expansion. */
|
|
27
|
-
export declare const DEFAULT_REQUEST_IMAGE_MAX_BYTES = 400000;
|
|
28
20
|
/**
|
|
29
21
|
* One model's configured capacities. Every field is optional so a deployment
|
|
30
22
|
* overrides only the value it needs; `null` explicitly selects the catalog
|
|
31
23
|
* value even when a lower layer supplies an override.
|
|
32
24
|
*/
|
|
33
|
-
|
|
25
|
+
interface OpencodeGoModelLimit {
|
|
34
26
|
/** Context window in tokens, overriding what the catalog advertised. */
|
|
35
27
|
contextWindow?: number | null;
|
|
36
28
|
/** Output cap per request, overriding what the catalog advertised. */
|
|
@@ -107,3 +99,4 @@ export declare function readConfig(config: LiveConfig): OpencodeGoConfig;
|
|
|
107
99
|
* @returns the normalized base URL without trailing slashes.
|
|
108
100
|
*/
|
|
109
101
|
export declare function assertBaseURL(raw: string): string;
|
|
102
|
+
export {};
|
package/lib/types/config.js
CHANGED
|
@@ -20,13 +20,13 @@ export const DEFAULT_API_KEY_ENV = 'OPENCODE_GO_API_KEY';
|
|
|
20
20
|
/** Requests and pickers share this cache lifetime; explicit discovery revalidates immediately. */
|
|
21
21
|
export const DEFAULT_REFRESH_MINUTES = 60;
|
|
22
22
|
/** Default maximum idle interval while one stream read is outstanding. */
|
|
23
|
-
|
|
23
|
+
const DEFAULT_STREAM_IDLE_TIMEOUT_MS = 300_000;
|
|
24
24
|
/** Request-level bound on the base64-encoded image payload. */
|
|
25
|
-
|
|
25
|
+
const DEFAULT_MAX_REQUEST_IMAGE_BYTES = 6 * 1024 * 1024;
|
|
26
26
|
/** Total-pixel budget for one request image. */
|
|
27
|
-
|
|
27
|
+
const DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET = 1_440_000;
|
|
28
28
|
/** Raw encoded-byte target for one request image before base64 expansion. */
|
|
29
|
-
|
|
29
|
+
const DEFAULT_REQUEST_IMAGE_MAX_BYTES = 400_000;
|
|
30
30
|
const fields = {
|
|
31
31
|
enabled: z.boolean().default(true),
|
|
32
32
|
modelVisibility: z.dict(z.boolean().required()).default({}),
|
package/lib/types/models.d.ts
CHANGED
|
@@ -87,8 +87,6 @@ export declare function recommendedIds(models: readonly Pick<ModelSummary, 'id'
|
|
|
87
87
|
export declare function isModelEnabled(model: Pick<ModelSummary, 'id' | 'deprecated' | 'configurationMissing' | 'recommended'>, visibility?: Readonly<Record<string, boolean>>): boolean;
|
|
88
88
|
/** A calendar date as models.dev states it, without a timezone. */
|
|
89
89
|
export declare function validReleaseDate(value: unknown): value is string;
|
|
90
|
-
/** Whether a model shipped within the last week. */
|
|
91
|
-
export declare function isNewModel(model: ModelSummary, now?: number): boolean;
|
|
92
90
|
/**
|
|
93
91
|
* Order models for display: newly shipped first, then the rest, then deprecated.
|
|
94
92
|
* Newest releases come first within the first group.
|
package/lib/types/models.js
CHANGED
|
@@ -69,7 +69,7 @@ export function validReleaseDate(value) {
|
|
|
69
69
|
&& Number.isFinite(Date.parse(value)) && new Date(value).toISOString().slice(0, 10) === value;
|
|
70
70
|
}
|
|
71
71
|
/** Whether a model shipped within the last week. */
|
|
72
|
-
|
|
72
|
+
function isNewModel(model, now = Date.now()) {
|
|
73
73
|
if (model.deprecated === true || !validReleaseDate(model.releaseDate))
|
|
74
74
|
return false;
|
|
75
75
|
const days = Math.floor(now / 86_400_000) - Date.parse(model.releaseDate) / 86_400_000;
|
|
@@ -61,7 +61,7 @@ export declare function isUpdateAvailable(current: string, latest: string | unde
|
|
|
61
61
|
/** Read the `version` field out of a registry `latest` document. */
|
|
62
62
|
export declare function parseLatestVersion(body: unknown): string | undefined;
|
|
63
63
|
/** Dependencies the check needs, injectable for tests. */
|
|
64
|
-
|
|
64
|
+
interface UpdateCheckDeps {
|
|
65
65
|
/** Running build's version (build-time constant in production). */
|
|
66
66
|
readonly currentVersion: string;
|
|
67
67
|
/** Fetch implementation; defaults to the global one. */
|
|
@@ -32,7 +32,7 @@ export interface GoUsageWindows {
|
|
|
32
32
|
*/
|
|
33
33
|
export declare function parseGoUsage(value: unknown): Omit<GoUsageWindows, 'source'>;
|
|
34
34
|
/** Inputs one usage read needs. */
|
|
35
|
-
|
|
35
|
+
interface UsageReadOptions {
|
|
36
36
|
/** Normalized gateway base URL. */
|
|
37
37
|
readonly baseURL: string;
|
|
38
38
|
/** Resolved credential; absence is reported as an unconfigured route. */
|
|
@@ -49,3 +49,4 @@ export interface UsageReadOptions {
|
|
|
49
49
|
* endpoint fails, or the body is not a usage document.
|
|
50
50
|
*/
|
|
51
51
|
export declare function readUsageWindows(options: UsageReadOptions): Promise<GoUsageWindows>;
|
|
52
|
+
export {};
|
package/package.json
CHANGED