@sema-agent/sdk 0.0.114 → 0.0.115

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.
@@ -25,6 +25,13 @@ export declare class RegistryClient {
25
25
  private refreshInFlight;
26
26
  constructor(config: RegistryClientConfig);
27
27
  request<T>(opts: RegistryRequestOptions): Promise<T>;
28
+ /** 非抛的原始面(R2 的条件请求用:304/412 等**语义状态**要直出给调用方判别,不是错误)。
29
+ * 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。 */
30
+ requestRaw(opts: RegistryRequestOptions): Promise<{
31
+ status: number;
32
+ body: unknown;
33
+ headers: Headers;
34
+ }>;
28
35
  private refreshOnce;
29
36
  private rawRequest;
30
37
  private settle;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC;uEACmE;IACnE,OAAO,CAAC,eAAe,CAA+B;gBAE1C,MAAM,EAAE,oBAAoB;IAOlC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQ1D,OAAO,CAAC,WAAW;YASL,UAAU;IA0BxB,OAAO,CAAC,MAAM;CAKf"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC;uEACmE;IACnE,OAAO,CAAC,eAAe,CAA+B;gBAE1C,MAAM,EAAE,oBAAoB;IAOlC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D;qEACiE;IAC3D,UAAU,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAQ5G,OAAO,CAAC,WAAW;YASL,UAAU;IA0BxB,OAAO,CAAC,MAAM;CAKf"}
@@ -25,12 +25,17 @@ export class RegistryClient {
25
25
  this.timeoutMs = config.timeoutMs ?? 30_000;
26
26
  }
27
27
  async request(opts) {
28
+ return this.settle(await this.requestRaw(opts));
29
+ }
30
+ /** 非抛的原始面(R2 的条件请求用:304/412 等**语义状态**要直出给调用方判别,不是错误)。
31
+ * 401 仍在这里走 single-flight refresh + 重试一次——凭证生命周期对所有面统一,绝不旁路。 */
32
+ async requestRaw(opts) {
28
33
  const first = await this.rawRequest(opts);
29
34
  if (first.status !== 401)
30
- return this.settle(first);
31
- // 401 → single-flight refresh → 原请求重试一次(仅一次:重试仍 401 = 服务端真拒,typed 直出)。
35
+ return first;
36
+ // 401 → single-flight refresh → 原请求重试一次(仅一次:重试仍 401 = 服务端真拒)。
32
37
  await this.refreshOnce(opts.signal);
33
- return this.settle(await this.rawRequest(opts));
38
+ return this.rawRequest(opts);
34
39
  }
35
40
  refreshOnce(signal) {
36
41
  if (!this.refreshInFlight) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/registry/client.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,6 @@ export { RegistryClient, type RegistryClientConfig, type RegistryRequestOptions
13
13
  export { InMemoryTokenProvider, type TokenProvider, type RegistryTokens } from "./token-provider.js";
14
14
  export { requestDeviceCode, pollUntilApproved, refreshTokens, logoutRegistry, REGISTRY_AUTH_PATHS, REGISTRY_DEVICE_GRANT_TYPE, type DeviceCodeResponse, type TokenGrantResponse, } from "./auth.js";
15
15
  export { probeRegistryHealth, type RegistryHealthResult } from "./health.js";
16
+ export { listScopes, switchScope, getEffective, REGISTRY_SCOPES_PATHS, type ScopesListResponse, type ScopeSwitchResponse, type EffectiveResult, } from "./scopes-effective.js";
16
17
  export { RegistryApiError, OAuthFlowError, type OAuthFlowErrorCode } from "./errors.js";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -13,5 +13,6 @@ export { RegistryClient } from "./client.js";
13
13
  export { InMemoryTokenProvider } from "./token-provider.js";
14
14
  export { requestDeviceCode, pollUntilApproved, refreshTokens, logoutRegistry, REGISTRY_AUTH_PATHS, REGISTRY_DEVICE_GRANT_TYPE, } from "./auth.js";
15
15
  export { probeRegistryHealth } from "./health.js";
16
+ export { listScopes, switchScope, getEffective, REGISTRY_SCOPES_PATHS, } from "./scopes-effective.js";
16
17
  export { RegistryApiError, OAuthFlowError } from "./errors.js";
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAA0D,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAA2C,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,GAG3B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAA6B,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAA0D,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAA2C,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,GAG3B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAA6B,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,GAItB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * G17 R2 — scopes(list/switch)+ effective 条件 GET(ETag/304 引擎)。
3
+ *
4
+ * 契约单源同 R1 纪律:scopes 真身 = `@sema-agent/registry-core` api/scopes.ts(type-only import +
5
+ * 路径常量值拷贝,同源锚测试对账)。effective 的 body 是**开放域**(壳/桌面各自投影;[1833]
6
+ * 「一棵树 4 份手抄」要收敛的是**条件 GET 引擎**,不是 body schema)⇒ 这里不造 schema。
7
+ * me.config CAS:cli 的消费坐标未到手,诚实不造——候坐标进 R3。
8
+ */
9
+ import type { ScopesListResponse, ScopeSwitchResponse } from "@sema-agent/registry-core";
10
+ import type { RegistryClient } from "./client.js";
11
+ import type { TokenProvider } from "./token-provider.js";
12
+ /** 值拷贝 ← registry-core SCOPES_V1_PATHS(同源锚测试对账)。 */
13
+ export declare const REGISTRY_SCOPES_PATHS: {
14
+ readonly scopes: "/api/v1/scopes";
15
+ readonly authScope: "/api/v1/auth/scope";
16
+ };
17
+ export type { ScopesListResponse, ScopeSwitchResponse };
18
+ /** GET /api/v1/scopes — 调用者可行动的 scope 列表(带各处的 effective role)。 */
19
+ export declare function listScopes(client: RegistryClient, opts?: {
20
+ signal?: AbortSignal;
21
+ }): Promise<ScopesListResponse>;
22
+ /** POST /api/v1/auth/scope — 换活跃 scope,铸一个绑定新 scope 的 access token。
23
+ * 🔴 关键语义(registry-core 成文):响应**只带 access_token,不带 refresh_token**(refresh grant
24
+ * 不动)⇒ 这里 set 时必须**保旧 refreshToken**——照抄 grant 形写 set 会把 refresh 清成 undefined,
25
+ * 下一次续期即登出事故。 */
26
+ export declare function switchScope(client: RegistryClient, tokens: TokenProvider, scope: string, opts?: {
27
+ signal?: AbortSignal;
28
+ }): Promise<ScopeSwitchResponse>;
29
+ /** effective 条件 GET 的判别结果:200=新 body(+etag 供下次条件请求);304=没变(复用你的缓存)。 */
30
+ export type EffectiveResult = {
31
+ status: 200;
32
+ etag?: string;
33
+ body: unknown;
34
+ } | {
35
+ status: 304;
36
+ etag?: string;
37
+ };
38
+ /** GET /api/v1/effective(ETag 引擎):传上次的 `etag` ⇒ 带 If-None-Match,没变答 304 零 body。
39
+ * 走 RegistryClient 同一引擎(Bearer + 401 单飞 refresh 重试)——凭证生命周期不旁路。 */
40
+ export declare function getEffective(client: RegistryClient, opts?: {
41
+ etag?: string;
42
+ signal?: AbortSignal;
43
+ }): Promise<EffectiveResult>;
44
+ //# sourceMappingURL=scopes-effective.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes-effective.d.ts","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,oDAAoD;AACpD,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;AAExD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE/G;AAED;;;kBAGkB;AAClB,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7G;oEACoE;AACpE,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAYnI"}
@@ -0,0 +1,39 @@
1
+ import { RegistryApiError } from "./errors.js";
2
+ /** 值拷贝 ← registry-core SCOPES_V1_PATHS(同源锚测试对账)。 */
3
+ export const REGISTRY_SCOPES_PATHS = {
4
+ scopes: "/api/v1/scopes",
5
+ authScope: "/api/v1/auth/scope",
6
+ };
7
+ /** GET /api/v1/scopes — 调用者可行动的 scope 列表(带各处的 effective role)。 */
8
+ export function listScopes(client, opts) {
9
+ return client.request({ method: "GET", path: REGISTRY_SCOPES_PATHS.scopes, ...(opts?.signal ? { signal: opts.signal } : {}) });
10
+ }
11
+ /** POST /api/v1/auth/scope — 换活跃 scope,铸一个绑定新 scope 的 access token。
12
+ * 🔴 关键语义(registry-core 成文):响应**只带 access_token,不带 refresh_token**(refresh grant
13
+ * 不动)⇒ 这里 set 时必须**保旧 refreshToken**——照抄 grant 形写 set 会把 refresh 清成 undefined,
14
+ * 下一次续期即登出事故。 */
15
+ export async function switchScope(client, tokens, scope, opts) {
16
+ const out = await client.request({ method: "POST", path: REGISTRY_SCOPES_PATHS.authScope, body: { scope }, ...(opts?.signal ? { signal: opts.signal } : {}) });
17
+ const held = await tokens.get();
18
+ if (held)
19
+ await tokens.set({ accessToken: out.access_token, refreshToken: held.refreshToken });
20
+ return out;
21
+ }
22
+ /** GET /api/v1/effective(ETag 引擎):传上次的 `etag` ⇒ 带 If-None-Match,没变答 304 零 body。
23
+ * 走 RegistryClient 同一引擎(Bearer + 401 单飞 refresh 重试)——凭证生命周期不旁路。 */
24
+ export async function getEffective(client, opts) {
25
+ const r = await client.requestRaw({
26
+ method: "GET",
27
+ path: "/api/v1/effective",
28
+ ...(opts?.etag ? { headers: { "if-none-match": opts.etag } } : {}),
29
+ ...(opts?.signal ? { signal: opts.signal } : {}),
30
+ });
31
+ const etag = r.headers.get("etag") ?? undefined;
32
+ if (r.status === 304)
33
+ return { status: 304, ...(etag !== undefined ? { etag } : {}) };
34
+ if (r.status >= 200 && r.status < 300)
35
+ return { status: 200, ...(etag !== undefined ? { etag } : {}), body: r.body };
36
+ const msg = r.body?.error;
37
+ throw new RegistryApiError(r.status, typeof msg === "string" ? msg : `effective fetch failed (HTTP ${r.status})`, r.body);
38
+ }
39
+ //# sourceMappingURL=scopes-effective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes-effective.js","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/sdk",
3
- "version": "0.0.114",
3
+ "version": "0.0.115",
4
4
  "description": "Typed, zero-runtime-dependency SDK for the Sema agent fleet usage plane. The shared substrate for all doors (CC/Codex MCP façade + web). Server-side only — tokens never enter the browser.",
5
5
  "type": "module",
6
6
  "license": "BUSL-1.1",