@ycodium-ai/plugin-api 0.2.2169 → 0.2.2510

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/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@ycodium-ai/plugin-api",
3
- "version": "0.2.2169",
3
+ "version": "0.2.2510",
4
4
  "description": "Types and definePlugin for authoring Ycodium plugins. Zero runtime dependencies.",
5
5
  "keywords": [
6
- "ycodium",
7
- "ycodium-plugin"
6
+ "ycodium"
8
7
  ],
9
8
  "license": "UNLICENSED",
10
9
  "files": [
@@ -29,9 +28,9 @@
29
28
  "types": "./dist/tool-display.d.ts",
30
29
  "import": "./dist/tool-display.js"
31
30
  },
32
- "./source-metrics": {
33
- "types": "./dist/source-metrics.d.ts",
34
- "import": "./dist/source-metrics.js"
31
+ "./account-usage": {
32
+ "types": "./dist/account-usage.d.ts",
33
+ "import": "./dist/account-usage.js"
35
34
  },
36
35
  "./executor": {
37
36
  "types": "./dist/executor.d.ts",
@@ -45,6 +44,10 @@
45
44
  "types": "./dist/slots.d.ts",
46
45
  "import": "./dist/slots.js"
47
46
  },
47
+ "./provider-settings": {
48
+ "types": "./dist/provider-settings.d.ts",
49
+ "import": "./dist/provider-settings.js"
50
+ },
48
51
  "./ui.css": "./css/ui.css"
49
52
  },
50
53
  "publishConfig": {
@@ -1,376 +0,0 @@
1
- import type { ExecutorModelDialect } from "./executor.ts";
2
- /** 与 `ExecutorModelConnectivity.dialects` 同一闭集。 */
3
- export type PluginProtocolDialect = ExecutorModelDialect;
4
- /**
5
- * 翻译失败的原因。翻译函数抛出带 `reasonCode` 字段的错误时,宿主按它记账、回手:
6
- * `unsupported-request` 回 400(手的请求翻不了);另两个回 502(上游的流不对)。
7
- * 不带或不在这三个里的,按出错的环节归类:翻请求记前者,读流记 `invalid-upstream`。
8
- */
9
- export type PluginProtocolConversionFailure = "unsupported-request" | "invalid-upstream" | "truncated-stream";
10
- /**
11
- * 协议翻译对:手说 `from`,上游脑听 `to`(ADR-0030 §3.9)。
12
- *
13
- * 约束:纯 JSON 进、纯 JSON 出;无 I/O、无 Effect。`from` / `to` 必须是已声明方言。
14
- * 宿主对翻译过的请求一律要上游流式(逐块读 usage),所以 `translateRequest` 产出的
15
- * 上游请求体要自己写上流式开关;手要不要流式看手请求体里的 `stream`,由宿主判断。
16
- */
17
- export type PluginProtocolConversion = {
18
- readonly from: PluginProtocolDialect;
19
- readonly to: PluginProtocolDialect;
20
- readonly translateRequest: (json: unknown, model: string) => unknown;
21
- /**
22
- * 开流前调一次,拿手的原请求建 state,`translateStreamChunk` 第一块收到的就是它。
23
- * 有些还原只能靠原请求:被改写过的工具名、手要没要 usage 块。缺席时第一块收到 `undefined`。
24
- */
25
- readonly startStream?: (json: unknown, model: string) => unknown;
26
- readonly translateStreamChunk: (state: unknown, chunk: unknown) => {
27
- readonly chunks: ReadonlyArray<unknown>;
28
- readonly state: unknown;
29
- };
30
- readonly translateResponse: (json: unknown) => unknown;
31
- /**
32
- * 这一笔手请求里没有映射到上游的字段,写 JSON 路径(`logprobs`、`messages[].name`)。
33
- * 宿主随调用记录落下,不静默丢。静态清单写不全:手升级一版就多几个字段,今天没见过
34
- * 的字段也要报出来。缺席 = 这对翻译不报,宿主当作不知道。
35
- */
36
- readonly listUnmappedFields?: (json: unknown) => ReadonlyArray<string>;
37
- /**
38
- * 上游流到了终点时调一次:宿主按上游方言认终点(chat 的 `[DONE]`、Responses 的
39
- * `response.completed` / `incomplete` / `failed`、Anthropic 的 `message_stop`、两家的 `error`),
40
- * 终点之前断流由宿主判截断,走不到这里。`chunks` 是还要发给手的收尾块;`response` 是
41
- * 手要非流式时整体回给它的响应体。state 说明这一轮没完成时抛 `truncated-stream`,
42
- * 不伪造完成。
43
- *
44
- * 缺席时宿主不发收尾块,非流式响应体取 `translateResponse(最后一块)`。
45
- */
46
- readonly finishStream?: (state: unknown) => {
47
- readonly chunks: ReadonlyArray<unknown>;
48
- readonly response: unknown;
49
- };
50
- };
51
- /** 厂商知识是纯数据;凭据、HTTP 和缓存由宿主持有。 */
52
- export interface PluginMetricHeader {
53
- readonly credential: "accessToken" | "accountId";
54
- readonly prefix?: string;
55
- readonly optional?: boolean;
56
- }
57
- export type PluginMetricText = {
58
- readonly value: string;
59
- } | {
60
- readonly path: string;
61
- };
62
- export type PluginMetricUnit = {
63
- readonly kind: "money";
64
- readonly currency: PluginMetricText;
65
- readonly precision: number;
66
- } | {
67
- readonly kind: "credits" | "requests" | "tokens";
68
- readonly nativeUnit: string;
69
- } | {
70
- readonly kind: "percent";
71
- readonly direction: "used" | "remaining";
72
- };
73
- /** path 使用 JSON Pointer;缺失或不能解码的值保持未知。金额保留原生金额单位。 */
74
- export interface PluginMetricMapping {
75
- /**
76
- * 数值指针全都落空时按 0 算,而不是把整行丢掉。用在「窗口确实存在、只是还没用掉
77
- * 配额」的情况(厂商这时干脆不发那个百分比字段)。要与 `optional` 一起用。
78
- */
79
- readonly zeroWhenAbsent?: boolean;
80
- readonly id: string;
81
- readonly optional?: boolean;
82
- readonly rowsAt?: string;
83
- readonly idAt?: string;
84
- readonly kind: "balance" | "credits" | "quota-window" | "spend-cap" | "rate-limit";
85
- readonly scope: "account" | "org" | "project" | "key" | "endpoint" | "model-group" | "model" | "unknown";
86
- readonly unit: PluginMetricUnit;
87
- readonly usedAt?: string;
88
- readonly remainingAt?: string;
89
- readonly limitAt?: string;
90
- readonly unlimitedAt?: string;
91
- readonly labelAt?: string;
92
- readonly modelIdsAt?: string;
93
- readonly windowSecondsAt?: string;
94
- /**
95
- * 响应里没有、但厂商知识里有的两样:窗口的名字与长度。有 `*At` 指针时以响应为准。
96
- * `label` 是**标识**不是文案:宿主与界面按它查 catalog,查不到才把原文当文案显示。
97
- */
98
- readonly label?: string;
99
- readonly windowSeconds?: number;
100
- readonly resetsAt?: {
101
- readonly path: string;
102
- readonly format: "epoch-seconds" | "iso";
103
- };
104
- }
105
- export interface PluginSourceMetricRequest {
106
- readonly url: string;
107
- /** 缺席 = GET;POST 带 `body`(固定 JSON 文本,宿主原样发,不插值)。 */
108
- readonly method?: "GET" | "POST";
109
- readonly body?: string;
110
- readonly headers: Readonly<Record<string, string | PluginMetricHeader>>;
111
- }
112
- export interface PluginSourceMetricProbe {
113
- readonly id: string;
114
- readonly match: {
115
- readonly kind: "api";
116
- readonly baseUrls: readonly string[];
117
- /** 只对这几种凭据有效(订阅用量只认 oauth token);缺席 = 端点是什么凭据都试。 */
118
- readonly authKinds?: readonly ("bearer" | "api-key-header" | "oauth")[];
119
- } | {
120
- readonly kind: "native-account";
121
- /** 读哪一家的原生登录凭据;宿主按它选凭据文件与投递受众。 */
122
- readonly credentialKind: "codex-chatgpt" | "claude-oauth";
123
- };
124
- readonly request: PluginSourceMetricRequest;
125
- /**
126
- * 额外的请求。厂商把一份额度拆在几个地址上时用(Grok 的周窗口在
127
- * `?format=credits`、月窗口在 `/billing`),而一个来源只能匹配一个探针。
128
- *
129
- * 每条必须与主请求同源。取回来的内容挂在 `/@requests/<id>/body` 下,指针照常写;
130
- * 主请求的内容仍在根上。
131
- */
132
- readonly extraRequests?: readonly {
133
- readonly id: string;
134
- readonly request: PluginSourceMetricRequest;
135
- }[];
136
- readonly metrics: readonly PluginMetricMapping[];
137
- readonly ttlMs: number;
138
- readonly cooldownMs: number;
139
- }
140
- /**
141
- * 端点头引用凭据的哪一部分:只有 accountId。比 {@link PluginMetricHeader} 窄是有意的——
142
- * 探针发往宿主钉死的那一个 origin,端点的 baseUrl 是用户能改的,放开 accessToken 等于
143
- * 给预设开一条把订阅 token 送进任意请求头的通道。
144
- */
145
- export interface PluginEndpointCredentialHeader {
146
- readonly credential: "accountId";
147
- readonly prefix?: string;
148
- /** 这份凭据没有 accountId 时:true = 不发这个头,缺席/false = 这笔端点不兼容。 */
149
- readonly optional?: boolean;
150
- }
151
- export type PluginEndpointHeader = string | PluginEndpointCredentialHeader;
152
- export interface PluginModelEndpointPreset {
153
- readonly id: string;
154
- readonly label: string;
155
- readonly protocol: string;
156
- readonly baseUrl: string;
157
- readonly operationPath: string;
158
- readonly auth: {
159
- readonly kind: "bearer";
160
- readonly environmentVariable: string;
161
- } | {
162
- readonly kind: "api-key-header";
163
- readonly headerName: string;
164
- readonly environmentVariable: string;
165
- }
166
- /**
167
- * 只认本预设 oauth 流拿到的订阅账户、不收 API key 的端点(ChatGPT 订阅后端)。
168
- * 卡片不给它开填 key 的向导;登录或导入账户之后宿主按它建端点。
169
- */
170
- | {
171
- readonly kind: "oauth";
172
- };
173
- readonly headers: Readonly<Record<string, PluginEndpointHeader>>;
174
- /**
175
- * 哪几只手自己用的就是这家的 API key(契约表的 provider id,如 `dsh`)。Providers 名单上
176
- * 「登进 Ycodium」据此打开这条端点填 key 的向导。只写在填 key 的端点上;订阅端点的对应
177
- * 写在登录流上({@link PluginModelOAuthFlow.agentLogins})。
178
- */
179
- readonly agentLogins?: readonly string[];
180
- }
181
- /**
182
- * 订阅登录(OAuth + PKCE)的**厂商知识**。纯声明:没有函数、没有 I/O。
183
- *
184
- * 边界(ADR-0023 §10 / ADR-0030 §3.15):插件出「这家怎么登」——地址、client_id、
185
- * scope、请求体字段、响应里 token 在哪个 JSON Pointer;**拿到的 token 归宿主**,
186
- * 插件在整个流程里看不到 code、code_verifier、access token 或 refresh token。
187
- */
188
- export type PluginOAuthRuntimeValue = "client-id" | "client-secret" | "scope" | "redirect-uri" | "code" | "code-verifier" | "code-challenge" | "code-challenge-method" | "state" | "refresh-token"
189
- /** 设备码那一路:设备授权回包里的 `device_code`,换 token 时按它取。 */
190
- | "device-code";
191
- /** 字面量,或宿主在运行时填进去的那一个值。 */
192
- export type PluginOAuthValueSource = {
193
- readonly value: string;
194
- } | {
195
- readonly from: PluginOAuthRuntimeValue;
196
- };
197
- export interface PluginOAuthField {
198
- readonly name: string;
199
- readonly source: PluginOAuthValueSource;
200
- }
201
- /**
202
- * 一次 token 端点调用。`fields` **有序**:请求体键序是上游指纹的一部分,
203
- * 用 Record 声明会被重排,字节就对不上了。
204
- */
205
- export interface PluginOAuthRequest {
206
- readonly url: string;
207
- readonly encoding: "json" | "form";
208
- readonly headers: Readonly<Record<string, string>>;
209
- readonly fields: readonly PluginOAuthField[];
210
- }
211
- /** 过期时刻怎么读。`seconds-from-now` 指 `expires_in` 这类相对秒数。 */
212
- export interface PluginOAuthExpiry {
213
- readonly path: string;
214
- readonly format: "seconds-from-now" | "epoch-seconds" | "iso";
215
- }
216
- /**
217
- * 凭据文档里一个值在哪:JSON Pointer,或「先按 `jwt` 取出一段 JWT,再读它 payload 里
218
- * `claim` 指向的值」。OpenAI 把账户 id 与到期时刻放在 token 的 claim 里。宿主只读
219
- * claim、不验签,取到的只当身份标识与到期时刻用。
220
- */
221
- export type PluginCredentialValueRef = string | {
222
- readonly jwt: string;
223
- readonly claim: string;
224
- };
225
- /** 身份字段在哪。缺失或类型不符按未知处理,不猜。 */
226
- export interface PluginOAuthIdentityResponse {
227
- readonly accountIdAt?: PluginCredentialValueRef;
228
- readonly accountLabelAt?: PluginCredentialValueRef;
229
- readonly organizationIdAt?: PluginCredentialValueRef;
230
- readonly organizationLabelAt?: PluginCredentialValueRef;
231
- }
232
- /** token 响应:access token 是必需的,其余按身份字段处理。 */
233
- export interface PluginOAuthTokenResponse extends PluginOAuthIdentityResponse {
234
- readonly accessTokenAt: string;
235
- readonly refreshTokenAt?: string;
236
- readonly expiresAt?: PluginOAuthExpiry;
237
- }
238
- /** 换到 token 之后补一次账号身份;头里的凭据位置复用额度探针那套声明。 */
239
- export interface PluginOAuthIdentityRequest {
240
- readonly url: string;
241
- readonly headers: Readonly<Record<string, string | PluginMetricHeader>>;
242
- readonly response: PluginOAuthIdentityResponse;
243
- }
244
- export interface PluginOAuthPkce {
245
- readonly method: "S256";
246
- /** 随机字节数;base64url 后长度须落在 RFC 7636 的 43–128 之间。 */
247
- readonly verifierBytes: number;
248
- }
249
- /**
250
- * 设备码一路(RFC 8628)。没有浏览器回调:先 POST 一次拿到给人念的码与验证网址,
251
- * 宿主把它们交给界面,然后按上游给的间隔轮询 `exchange`(`grant_type` 写设备码那一种,
252
- * `device_code` 用 `{ from: "device-code" }` 引用第一次的回包)。
253
- */
254
- export interface PluginModelDeviceCodeFlow {
255
- /** 拿 device_code / user_code 的那一次 POST。 */
256
- readonly authorization: PluginOAuthRequest;
257
- /** 回包里各字段在哪。`verificationUriComplete` 是带码的直达链接,缺席就让人手输。 */
258
- readonly response: {
259
- readonly deviceCode: string;
260
- readonly userCode: string;
261
- readonly verificationUri: string;
262
- readonly verificationUriComplete?: string;
263
- readonly expiresIn?: string;
264
- readonly interval?: string;
265
- };
266
- /**
267
- * 上游没给 `interval` 时用它;给了就听上游的,但**不低于**这个值——0 间隔就是拿轮询
268
- * 打死对方,而 RFC 说的是「最小」等待,取大的那个仍然合规。
269
- */
270
- readonly pollIntervalMsFallback: number;
271
- /** 等人授权的上限。到点就放弃,不无限挂着一个待授权的设备码。 */
272
- readonly maxPollMs: number;
273
- }
274
- export interface PluginModelOAuthFlow {
275
- readonly id: string;
276
- readonly label: string;
277
- readonly clientId: string;
278
- /**
279
- * 「已安装应用」那类 OAuth 客户端的 secret。Google 这套要它。
280
- *
281
- * **它不是真秘密**,也不该被当成秘密对待:装在用户机器上的客户端没法藏住任何东西,
282
- * Google 自己的文档就说这类 secret「不被视为机密」。所以它跟 `clientId` 一样是插件
283
- * 的公开声明,跟用户的 token 完全两回事——后者从头到尾只在宿主内存里。
284
- *
285
- * 走 PKCE 的公开客户端(Claude 那种)不需要它,缺席即不发。
286
- */
287
- readonly clientSecret?: string;
288
- readonly scope: string;
289
- /**
290
- * 必须是 loopback http URL:授权码只能回到本机,宿主据此起回调服务器。
291
- *
292
- * 重定向一路必填;声明了 {@link PluginModelOAuthFlow.deviceCode} 的那家没有回调地址,
293
- * 这一块与 `authorize` 都要缺席——两路同时声明宿主会当成声明错误拒掉。
294
- */
295
- readonly redirectUri?: string;
296
- /**
297
- * 缺席即这家不用 PKCE。不是每家都上:Google 那套走 client_secret,参考实现整份
298
- * antigravity 目录里 `code_challenge` / `code_verifier` 零命中。
299
- */
300
- readonly pkce?: PluginOAuthPkce;
301
- /** 重定向一路必填:浏览器要去的那个授权地址。 */
302
- readonly authorize?: {
303
- readonly url: string;
304
- readonly query: readonly PluginOAuthField[];
305
- };
306
- /** 声明了它就是设备码一路(RFC 8628);与 `redirectUri` / `authorize` 互斥。 */
307
- readonly deviceCode?: PluginModelDeviceCodeFlow;
308
- readonly exchange: PluginOAuthRequest;
309
- readonly refresh: PluginOAuthRequest;
310
- readonly response: PluginOAuthTokenResponse;
311
- readonly identity?: PluginOAuthIdentityRequest;
312
- /** 过期前多久预刷。宿主的后台循环读它,不等 401。 */
313
- readonly refreshLeadMs: number;
314
- /**
315
- * 哪几只手在自己程序里登录的就是这个订阅(契约表的 provider id,如 `codex`、`claudeAgent`)。
316
- * Providers 名单上「登进 Ycodium」按它找到这条登录流;缺席 = 不对应任何手,按钮只把人
317
- * 带到模型来源页。
318
- */
319
- readonly agentLogins?: readonly string[];
320
- }
321
- /**
322
- * 哪些模型有这一档。按 models.dev 报的**事实**判,不按型号写表:`reasoning` 对上「支不支持
323
- * 推理」,`minContextWindow` 对上窗口大小;`models` 是正则源,只给少数某一族独有的档位用
324
- * (Anthropic 的快速模式只在 Opus 上)。缺席 = 这家所有模型都有。
325
- */
326
- export interface PluginModelOptionGate {
327
- readonly reasoning?: boolean;
328
- readonly minContextWindow?: number;
329
- readonly models?: readonly string[];
330
- }
331
- /**
332
- * 这家 API 的一档参数。跟手快照里的选项描述同形,多 `defaultValue`(不选时是哪一档,
333
- * 宿主填到 composer 的当前值上)和 `when`(哪些模型有)。按**协议**声明一套,不是按型号一张表。
334
- */
335
- export type PluginModelOption = {
336
- readonly id: string;
337
- readonly type: "boolean";
338
- readonly label: string;
339
- readonly defaultValue?: boolean;
340
- readonly when?: PluginModelOptionGate;
341
- } | {
342
- readonly id: string;
343
- readonly type: "select";
344
- readonly label: string;
345
- readonly options: readonly {
346
- readonly id: string;
347
- readonly label: string;
348
- }[];
349
- readonly defaultValue?: string;
350
- readonly when?: PluginModelOptionGate;
351
- };
352
- /**
353
- * 这家有哪些模型、各有什么档位。
354
- *
355
- * 模型名不写在插件里:`modelsDev` 说「我在 models.dev 里叫什么」(一家有几份互不相交的
356
- * 目录就列几个,如 z.ai 的普通与 Coding Plan),宿主拿本机留存的目录同步成来源的模型,
357
- * 用户随时手填补充。`exclude` 是正则源,把目录里混着的实时语音、转写这类不能当脑用的
358
- * 型号筛掉。
359
- */
360
- export interface PluginModelCatalog {
361
- readonly modelsDev: readonly string[];
362
- readonly exclude?: readonly string[];
363
- readonly options?: readonly PluginModelOption[];
364
- }
365
- export interface PluginModelPreset {
366
- readonly id: string;
367
- readonly label: string;
368
- readonly websiteUrl: string;
369
- readonly endpoints: readonly PluginModelEndpointPreset[];
370
- readonly probes: readonly PluginSourceMetricProbe[];
371
- /** 订阅登录流程;没有就不填,宿主按空处理。 */
372
- readonly oauth?: readonly PluginModelOAuthFlow[];
373
- /** 模型来源与档位;没有就不填,模型全靠手填、档位退回手的兜底。 */
374
- readonly models?: PluginModelCatalog;
375
- }
376
- //# sourceMappingURL=model-catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=model-catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":""}
@@ -1,158 +0,0 @@
1
- /**
2
- * `@ycodium-ai/plugin-api/source-metrics` —— 来源动态额度的**窄事实类型**。
3
- *
4
- * 本文件只含 `type` / `interface`,没有运行时值。字段是宿主 `SourceMetric` /
5
- * `SourceMetricsSnapshot` / `SourceMetricsCapability` 的结构子集:宿主模型必须
6
- * 可赋值到这里,反向不保证。不含格式化规则、缓存、轮询或查询策略。插件不得
7
- * import contracts / runtime;UI 组件用 `import type`。宿主按本文件构造
8
- * `ConversationComposerProps.sourceMetrics`。
9
- *
10
- * @module @ycodium-ai/plugin-api/source-metrics
11
- */
12
- export type SourceMetricsRefreshOutcome = "fresh" | "partial" | "joined-inflight" | "rate-limited" | "offline" | "unsupported" | "error";
13
- export type SourceMetricKind = "balance" | "credits" | "quota-window" | "spend-cap" | "rate-limit";
14
- export type SourceMetricsCapabilityStatus = "supported" | "unsupported" | "unknown";
15
- export type QuotaPoolScopeKind = "account" | "org" | "project" | "key" | "endpoint" | "model-group" | "model" | "unknown";
16
- export type SourceMetricProvenance = "reported" | "derived" | "estimated";
17
- export type SourceMetricStatus = "available" | "pending" | "unmeterable" | "expired" | "error";
18
- export type SourceMetricFreshness = "fresh" | "stale" | "unknown";
19
- /** 凭据身份:稳定 id + 单调 revision,不能用邮箱或路径代替。 */
20
- export interface SourceMetricsCredentialIdentity {
21
- readonly id: string;
22
- readonly revision: number;
23
- }
24
- export interface QuotaPoolScope {
25
- readonly kind: QuotaPoolScopeKind;
26
- readonly identity: string | null;
27
- readonly quotaPoolId: string | null;
28
- readonly credentialIdentity: SourceMetricsCredentialIdentity;
29
- }
30
- export type SourceMetricUnit = {
31
- readonly kind: "money";
32
- readonly currency: string;
33
- readonly precision: number;
34
- } | {
35
- readonly kind: "credits" | "requests" | "tokens";
36
- readonly nativeUnit: string;
37
- } | {
38
- readonly kind: "percent";
39
- readonly direction: "used" | "remaining";
40
- };
41
- export interface SourceMetricsCapability {
42
- readonly status: SourceMetricsCapabilityStatus;
43
- readonly readerId: string | null;
44
- readonly metrics: ReadonlyArray<{
45
- readonly kind: SourceMetricKind;
46
- readonly scopes: ReadonlyArray<QuotaPoolScopeKind>;
47
- }>;
48
- readonly nativeEvents: boolean;
49
- readonly ttlMs: number;
50
- readonly cooldownMs: number;
51
- }
52
- export interface SourceMetricWindow {
53
- readonly durationMs: number | null;
54
- readonly nativePeriod: string | null;
55
- }
56
- export interface SourceMetric {
57
- readonly metricId: string;
58
- readonly kind: SourceMetricKind;
59
- readonly scope: QuotaPoolScope;
60
- readonly endpointIds: ReadonlyArray<string>;
61
- readonly modelIds: ReadonlyArray<string>;
62
- readonly nativeLabel: string | null;
63
- readonly used: number | null;
64
- readonly remaining: number | null;
65
- readonly limit: number | null;
66
- readonly unit: SourceMetricUnit;
67
- readonly unlimited: boolean | null;
68
- readonly window: SourceMetricWindow | null;
69
- readonly resetsAt: string | null;
70
- readonly provenance: SourceMetricProvenance;
71
- readonly status: SourceMetricStatus;
72
- readonly freshness: SourceMetricFreshness;
73
- readonly providerObservedAt: string | null;
74
- readonly fetchedAt: string | null;
75
- readonly lastAttemptAt: string | null;
76
- readonly expiresAt: string | null;
77
- readonly retryAt: string | null;
78
- readonly errorReason: string | null;
79
- }
80
- export interface SourceMetricsSnapshot {
81
- readonly environmentId: string;
82
- readonly sourceId: string;
83
- readonly sourceConfigRevision: number;
84
- readonly credentialIdentity: SourceMetricsCredentialIdentity;
85
- readonly endpointIds: ReadonlyArray<string>;
86
- readonly modelIds: ReadonlyArray<string>;
87
- readonly quotaPoolIds: ReadonlyArray<string>;
88
- readonly snapshotRevision: number;
89
- readonly refreshing: boolean;
90
- readonly metrics: ReadonlyArray<SourceMetric>;
91
- }
92
- /** 手动刷新完成结果。进行中的合并由宿主返回 `joined-inflight`,插件不假装成功。 */
93
- export interface SourceMetricsRefreshResult {
94
- readonly outcome: SourceMetricsRefreshOutcome;
95
- readonly retryAt: string | null;
96
- }
97
- /**
98
- * 宿主 `ExecutionSelection` 的结构子集:迟到刷新按这份选择归属,不能只看 sourceId。
99
- */
100
- export interface SourceMetricsSelectionRef {
101
- readonly environmentId: string;
102
- readonly runtimeId: string;
103
- readonly sourceId: string;
104
- readonly profileId: string;
105
- readonly endpointId?: string | undefined;
106
- readonly expectedRevisions: {
107
- readonly runtime: number;
108
- readonly source: number;
109
- readonly profile: number;
110
- readonly endpoint?: number | undefined;
111
- };
112
- }
113
- /**
114
- * composer 额度区的宿主注入面。数据全部来自这份 props:插件不另建缓存、
115
- * 不轮询、不调 Usage 插件、不读默认机器账户。`onRefresh` 必须是宿主接上的
116
- * 真实查询;缺席整份 props,不要塞空回调。
117
- *
118
- * 顶层 `credentialIdentity` 在尚未取得凭据或不支持读取时为 null,界面不得
119
- * 发明身份 id。真 snapshot / metric 仍携带真实 identity。
120
- * `queryKey` 由宿主按完整选定范围与当前 source/endpoint revisions 生成,
121
- * 插件只当不透明刷新代次键,不展示、不解析。
122
- */
123
- export interface ConversationComposerSourceMetrics {
124
- readonly environmentId: string;
125
- /**
126
- * 观察范围。按**来源**读时是来源 id 与其配置 revision;按**实例**读(手自己的账号,
127
- * 不需要来源存在)时是合成的 `instance:<instanceId>` 与 revision 0——插件只当不透明
128
- * 的代次键,不解析、不展示。
129
- */
130
- readonly sourceId: string;
131
- readonly sourceConfigRevision: number;
132
- /** 按来源读时带着这次选择;按实例读时缺席(不属于任何来源)。 */
133
- readonly selection?: SourceMetricsSelectionRef | undefined;
134
- readonly queryKey: string;
135
- readonly credentialIdentity: SourceMetricsCredentialIdentity | null;
136
- readonly sourceLabel: string;
137
- readonly capability: SourceMetricsCapability;
138
- readonly snapshot: SourceMetricsSnapshot | null;
139
- readonly loading: boolean;
140
- readonly error: string | null;
141
- readonly isNextMessage: boolean;
142
- readonly onRefresh: () => Promise<SourceMetricsRefreshResult>;
143
- }
144
- /**
145
- * 按**实例**读到的自管登录额度(`ctx.providers.readInstanceMetrics`)。
146
- *
147
- * 与 composer 那份是同一份宿主快照:同一条探针、同一个缓存,插件不自己出网、不自己
148
- * 读凭据。`supported` 为 false 表示宿主认不得这只手的自管登录(或它被停用、已删除),
149
- * 此时不该为它出额度行;`reasonCode` 是宿主给的原因码,原样用于区分「没登录」与
150
- * 「读不到」。`metrics` 的 `nativeLabel` 是**标识**不是文案,界面自己查 catalog。
151
- */
152
- export interface PluginInstanceMetrics {
153
- readonly instanceId: string;
154
- readonly supported: boolean;
155
- readonly reasonCode: string | null;
156
- readonly metrics: ReadonlyArray<SourceMetric>;
157
- }
158
- //# sourceMappingURL=source-metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-metrics.d.ts","sourceRoot":"","sources":["../src/source-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * `@ycodium-ai/plugin-api/source-metrics` —— 来源动态额度的**窄事实类型**。
3
- *
4
- * 本文件只含 `type` / `interface`,没有运行时值。字段是宿主 `SourceMetric` /
5
- * `SourceMetricsSnapshot` / `SourceMetricsCapability` 的结构子集:宿主模型必须
6
- * 可赋值到这里,反向不保证。不含格式化规则、缓存、轮询或查询策略。插件不得
7
- * import contracts / runtime;UI 组件用 `import type`。宿主按本文件构造
8
- * `ConversationComposerProps.sourceMetrics`。
9
- *
10
- * @module @ycodium-ai/plugin-api/source-metrics
11
- */
12
- export {};
13
- //# sourceMappingURL=source-metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-metrics.js","sourceRoot":"","sources":["../src/source-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}