@sema-agent/sdk 0.0.115 → 0.0.116

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.
@@ -15,4 +15,6 @@ export { requestDeviceCode, pollUntilApproved, refreshTokens, logoutRegistry, RE
15
15
  export { probeRegistryHealth, type RegistryHealthResult } from "./health.js";
16
16
  export { listScopes, switchScope, getEffective, REGISTRY_SCOPES_PATHS, type ScopesListResponse, type ScopeSwitchResponse, type EffectiveResult, } from "./scopes-effective.js";
17
17
  export { RegistryApiError, OAuthFlowError, type OAuthFlowErrorCode } from "./errors.js";
18
+ export { getMeConfig, putMeConfig, ConfigCasConflictError, type PersonalConfigDomain, type MeConfigValue, type MeConfigPut, type MeConfigPutResult, } from "./me-config.js";
19
+ export { getScopeConfigDraft, getScopeConfigPublished, putScopeConfigDraft, getPublishState, requestPublish, postFeedback, skillContentAddress, } from "./scope-config-feedback.js";
18
20
  //# 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,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"}
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;AACxF,OAAO,EACL,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
@@ -15,4 +15,6 @@ export { requestDeviceCode, pollUntilApproved, refreshTokens, logoutRegistry, RE
15
15
  export { probeRegistryHealth } from "./health.js";
16
16
  export { listScopes, switchScope, getEffective, REGISTRY_SCOPES_PATHS, } from "./scopes-effective.js";
17
17
  export { RegistryApiError, OAuthFlowError } from "./errors.js";
18
+ export { getMeConfig, putMeConfig, ConfigCasConflictError, } from "./me-config.js";
19
+ export { getScopeConfigDraft, getScopeConfigPublished, putScopeConfigDraft, getPublishState, requestPublish, postFeedback, skillContentAddress, } from "./scope-config-feedback.js";
18
20
  //# 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,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,GAItB,MAAM,uBAAuB,CAAC;AAC/B,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;AACxF,OAAO,EACL,WAAW,EACX,WAAW,EACX,sBAAsB,GAKvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { RegistryClient } from "./client.js";
2
+ /** 与壳 MeDomain 同值域;开放 string——registry 加域(如 plugins 之后的新域)SDK 不挡。 */
3
+ export type PersonalConfigDomain = "models" | "mcp" | "skills" | "plugins" | (string & {});
4
+ /** PUT 409:CAS 冲突——`currentUpdatedAt` 是服务端现值的锁(重 GET 后以它为 baseUpdatedAt 重试)。 */
5
+ export declare class ConfigCasConflictError extends Error {
6
+ readonly currentUpdatedAt: string | null;
7
+ constructor(currentUpdatedAt: string | null);
8
+ }
9
+ export interface MeConfigValue {
10
+ value: unknown;
11
+ updatedAt: string | null;
12
+ }
13
+ /** GET 个人域文档(managed 面传 `forUser`;403/404 的辖区语句 registry 原话直出在 RegistryApiError)。 */
14
+ export declare function getMeConfig(client: RegistryClient, domain: PersonalConfigDomain, opts?: {
15
+ forUser?: string;
16
+ signal?: AbortSignal;
17
+ }): Promise<MeConfigValue>;
18
+ export interface MeConfigPut {
19
+ value: unknown;
20
+ /** 变更摘要(registry 审计行)。 */
21
+ summary: string;
22
+ /** CAS 基线(上次 GET 的 updatedAt;首写 null)。 */
23
+ baseUpdatedAt: string | null;
24
+ }
25
+ export interface MeConfigPutResult {
26
+ ok: true;
27
+ scope: string;
28
+ updatedAt: string;
29
+ }
30
+ /** PUT 个人域文档(CAS)。409 ⇒ 无 `retryOn409` 时 typed 直抛;给了 merge 回调则
31
+ * 「refetch → merge(现值, 我值) → 以现值锁重 PUT」**一次**,再 409 上抛([1864] 逐字节奏)。
32
+ * 400 = registry DOMAIN_SCHEMAS 校验失败(zod issues 在 body,RegistryApiError.body 里可取)。 */
33
+ export declare function putMeConfig(client: RegistryClient, domain: PersonalConfigDomain, put: MeConfigPut, opts?: {
34
+ forUser?: string;
35
+ signal?: AbortSignal;
36
+ retryOn409?: {
37
+ merge: (currentValue: unknown, myValue: unknown) => unknown;
38
+ };
39
+ }): Promise<MeConfigPutResult>;
40
+ //# sourceMappingURL=me-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"me-config.d.ts","sourceRoot":"","sources":["../../src/registry/me-config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAK3F,gFAAgF;AAChF,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;gBAA/B,gBAAgB,EAAE,MAAM,GAAG,IAAI;CAIrD;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,qFAAqF;AACrF,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAQjK;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;uFAEuF;AACvF,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,WAAW,EAChB,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;KAAE,CAAA;CAAE,GAC9H,OAAO,CAAC,iBAAiB,CAAC,CAwB5B"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * G17 R3 — personal config(me/managed 两面)CAS 引擎([1864]§一坐标,壳 cloudResources.ts:214/262
3
+ * wire 真形亲读)。CAS 轴 = `updatedAt` 字符串乐观锁(⚠️ scopes 面的轴是 version 数字——两轴别混)。
4
+ * merge 是壳/端语义 ⇒ 回调注入,SDK 只做「409 → refetch → merge → 重 PUT **一次**」的节奏;二连
5
+ * 409 typed 上抛(无限重试=两个写者互相打转)。
6
+ */
7
+ import { RegistryApiError } from "./errors.js";
8
+ const personalPath = (domain, forUser) => forUser ? `/api/v1/users/${encodeURIComponent(forUser)}/config/${encodeURIComponent(domain)}` : `/api/v1/me/config/${encodeURIComponent(domain)}`;
9
+ /** PUT 409:CAS 冲突——`currentUpdatedAt` 是服务端现值的锁(重 GET 后以它为 baseUpdatedAt 重试)。 */
10
+ export class ConfigCasConflictError extends Error {
11
+ currentUpdatedAt;
12
+ constructor(currentUpdatedAt) {
13
+ super(`personal-config CAS conflict (currentUpdatedAt=${currentUpdatedAt ?? "unknown"}) — refetch, re-merge, retry with the fresh baseUpdatedAt`);
14
+ this.currentUpdatedAt = currentUpdatedAt;
15
+ this.name = "ConfigCasConflictError";
16
+ }
17
+ }
18
+ /** GET 个人域文档(managed 面传 `forUser`;403/404 的辖区语句 registry 原话直出在 RegistryApiError)。 */
19
+ export async function getMeConfig(client, domain, opts) {
20
+ const r = await client.requestRaw({ method: "GET", path: personalPath(domain, opts?.forUser), ...(opts?.signal ? { signal: opts.signal } : {}) });
21
+ if (r.status !== 200) {
22
+ const msg = r.body?.error;
23
+ throw new RegistryApiError(r.status, typeof msg === "string" ? msg : `personal-config read failed (HTTP ${r.status})`, r.body);
24
+ }
25
+ const b = r.body;
26
+ return { value: b.value ?? null, updatedAt: typeof b.updatedAt === "string" ? b.updatedAt : null };
27
+ }
28
+ /** PUT 个人域文档(CAS)。409 ⇒ 无 `retryOn409` 时 typed 直抛;给了 merge 回调则
29
+ * 「refetch → merge(现值, 我值) → 以现值锁重 PUT」**一次**,再 409 上抛([1864] 逐字节奏)。
30
+ * 400 = registry DOMAIN_SCHEMAS 校验失败(zod issues 在 body,RegistryApiError.body 里可取)。 */
31
+ export async function putMeConfig(client, domain, put, opts) {
32
+ const attempt = async (body) => {
33
+ const r = await client.requestRaw({ method: "PUT", path: personalPath(domain, opts?.forUser), body, ...(opts?.signal ? { signal: opts.signal } : {}) });
34
+ if (r.status === 409) {
35
+ const cur = r.body?.currentUpdatedAt;
36
+ return new ConfigCasConflictError(typeof cur === "string" ? cur : null);
37
+ }
38
+ const b = r.body;
39
+ if (r.status !== 200 || b?.ok !== true) {
40
+ const msg = r.body?.error;
41
+ throw new RegistryApiError(r.status, typeof msg === "string" ? msg : `personal-config write failed (HTTP ${r.status})`, r.body);
42
+ }
43
+ return { ok: true, scope: String(b.scope ?? ""), updatedAt: String(b.updatedAt ?? "") };
44
+ };
45
+ const first = await attempt(put);
46
+ if (!(first instanceof ConfigCasConflictError))
47
+ return first;
48
+ if (!opts?.retryOn409)
49
+ throw first;
50
+ // refetch-merge-once:现值+现锁 → 端语义 merge → 重 PUT 一次
51
+ const fresh = await getMeConfig(client, domain, { ...(opts.forUser ? { forUser: opts.forUser } : {}), ...(opts.signal ? { signal: opts.signal } : {}) });
52
+ const merged = opts.retryOn409.merge(fresh.value, put.value);
53
+ const second = await attempt({ value: merged, summary: put.summary, baseUpdatedAt: fresh.updatedAt });
54
+ if (second instanceof ConfigCasConflictError)
55
+ throw second; // 二连 409:上抛,绝不循环
56
+ return second;
57
+ }
58
+ //# sourceMappingURL=me-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"me-config.js","sourceRoot":"","sources":["../../src/registry/me-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { RegistryClient } from "./client.js";
2
+ import type { PersonalConfigDomain } from "./me-config.js";
3
+ /** DRAFT(工作区)读:{value, version}——version 即 PUT 的 CAS 基线。 */
4
+ export declare function getScopeConfigDraft(client: RegistryClient, space: string, domain: PersonalConfigDomain, opts?: {
5
+ signal?: AbortSignal;
6
+ }): Promise<{
7
+ value: unknown;
8
+ version: number;
9
+ }>;
10
+ /** PUBLISHED 快照读(members 实际拿到的):?source=published。 */
11
+ export declare function getScopeConfigPublished(client: RegistryClient, space: string, domain: PersonalConfigDomain, opts?: {
12
+ signal?: AbortSignal;
13
+ }): Promise<{
14
+ value: unknown;
15
+ published: boolean;
16
+ publishedAt?: string;
17
+ }>;
18
+ /** DRAFT 写(version-CAS)。409/400 等非 200 typed 直出(merge-retry 节奏留调用方——scope 面的
19
+ * 写者是发布工作流,自动 merge 比个人面更危险,SDK 不提供 retryOn409)。 */
20
+ export declare function putScopeConfigDraft(client: RegistryClient, space: string, domain: PersonalConfigDomain, put: {
21
+ value: unknown;
22
+ summary: string;
23
+ baseVersion: number;
24
+ }, opts?: {
25
+ signal?: AbortSignal;
26
+ }): Promise<{
27
+ ok: true;
28
+ version: number;
29
+ }>;
30
+ /** publish 状态读(pending 在 = 已有挂起请求,新请求开不了;字段 registry 原样直出)。 */
31
+ export declare function getPublishState(client: RegistryClient, space: string, opts?: {
32
+ signal?: AbortSignal;
33
+ }): Promise<{
34
+ published?: unknown;
35
+ pending?: unknown;
36
+ approvalsRequired: number;
37
+ }>;
38
+ /** 发布请求。判别结果:`published`(200,即时生效)| `pending`(202,审批闸空间——draft **未**生效,
39
+ * approvers 走 …/publish/approve;诚实判别位,消费方绝不许把 202 渲染成已发布)。 */
40
+ export declare function requestPublish(client: RegistryClient, space: string, opts?: {
41
+ signal?: AbortSignal;
42
+ }): Promise<{
43
+ status: "published" | "pending";
44
+ body: unknown;
45
+ }>;
46
+ /** POST /api/v1/feedback → {id}。body 开放域(壳的 FeedbackCenterSubmitData 投影自带;SDK 不重铸
47
+ * schema)。隐私闸(essential-traffic-only)是壳策略,调用前自查——SDK 不代判。响应无 id = 失败
48
+ * (壳同判据:「response did not return an id」)。 */
49
+ export declare function postFeedback(client: RegistryClient, body: Record<string, unknown>, opts?: {
50
+ signal?: AbortSignal;
51
+ }): Promise<{
52
+ id: string;
53
+ }>;
54
+ /** skills 域内容寻址:`sha256:<hex>`(壳 cloudConfigWire.sha256Address 同算法)。多端都要校验
55
+ * skills body 完整性 ⇒ 收编成跨平台纯 helper(web crypto,浏览器/Node ≥18 通用;async 因
56
+ * crypto.subtle 使然)。 */
57
+ export declare function skillContentAddress(content: string): Promise<string>;
58
+ //# sourceMappingURL=scope-config-feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-config-feedback.d.ts","sourceRoot":"","sources":["../../src/registry/scope-config-feedback.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAU3D,4DAA4D;AAC5D,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5L;AAED,sDAAsD;AACtD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAKzN;AAED;qDACqD;AACrD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9B,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAKxC;AAID,+DAA+D;AAC/D,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,CAK5L;AAED;+DAC+D;AAC/D,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAK7D;AAID;;8CAE8C;AAC9C,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAKlJ;AAID;;yBAEyB;AACzB,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1E"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * G17 R3 — scopes 层配置(draft/published 双读 + version-CAS 写 + publish 闸)与 feedback
3
+ * ([1864]§二 C2-9/C2-4;壳 cloudResources.ts teamConfig 族 + runPublish + feedbackCenterSink 族 wire 真形亲读)。
4
+ *
5
+ * ⚠️ CAS 轴:scopes 面 = **version 数字**(me 面是 updatedAt 字符串——两轴别混,[1864] 原话)。
6
+ * publish 语义:审批闸空间 POST 答 **202 pending**——诚实判别位,绝不装已发布(壳 runPublish 同句)。
7
+ * feedback 的隐私闸(isEssentialTrafficOnly)是壳策略,**留壳不进 SDK**。
8
+ */
9
+ import { RegistryApiError } from "./errors.js";
10
+ const scopeConfigPath = (space, domain) => `/api/v1/scopes/${encodeURIComponent(space)}/config/${encodeURIComponent(domain)}`;
11
+ const fail = (r, what) => {
12
+ const msg = r.body?.error;
13
+ throw new RegistryApiError(r.status, typeof msg === "string" ? msg : `${what} failed (HTTP ${r.status})`, r.body);
14
+ };
15
+ /** DRAFT(工作区)读:{value, version}——version 即 PUT 的 CAS 基线。 */
16
+ export async function getScopeConfigDraft(client, space, domain, opts) {
17
+ const r = await client.requestRaw({ method: "GET", path: scopeConfigPath(space, domain), ...(opts?.signal ? { signal: opts.signal } : {}) });
18
+ if (r.status !== 200)
19
+ fail(r, `scope-config draft read`);
20
+ const b = r.body;
21
+ return { value: b.value ?? null, version: typeof b.version === "number" ? b.version : 0 };
22
+ }
23
+ /** PUBLISHED 快照读(members 实际拿到的):?source=published。 */
24
+ export async function getScopeConfigPublished(client, space, domain, opts) {
25
+ const r = await client.requestRaw({ method: "GET", path: `${scopeConfigPath(space, domain)}?source=published`, ...(opts?.signal ? { signal: opts.signal } : {}) });
26
+ if (r.status !== 200)
27
+ fail(r, `scope-config published read`);
28
+ const b = r.body;
29
+ return { value: b.value ?? null, published: b.published === true, ...(typeof b.publishedAt === "string" ? { publishedAt: b.publishedAt } : {}) };
30
+ }
31
+ /** DRAFT 写(version-CAS)。409/400 等非 200 typed 直出(merge-retry 节奏留调用方——scope 面的
32
+ * 写者是发布工作流,自动 merge 比个人面更危险,SDK 不提供 retryOn409)。 */
33
+ export async function putScopeConfigDraft(client, space, domain, put, opts) {
34
+ const r = await client.requestRaw({ method: "PUT", path: scopeConfigPath(space, domain), body: put, ...(opts?.signal ? { signal: opts.signal } : {}) });
35
+ const b = r.body;
36
+ if (r.status !== 200 || b?.ok !== true)
37
+ fail(r, `scope-config draft write`);
38
+ return { ok: true, version: typeof b.version === "number" ? b.version : 0 };
39
+ }
40
+ const publishPath = (space) => `/api/v1/scopes/${encodeURIComponent(space)}/publish`;
41
+ /** publish 状态读(pending 在 = 已有挂起请求,新请求开不了;字段 registry 原样直出)。 */
42
+ export async function getPublishState(client, space, opts) {
43
+ const r = await client.requestRaw({ method: "GET", path: publishPath(space), ...(opts?.signal ? { signal: opts.signal } : {}) });
44
+ if (r.status !== 200)
45
+ fail(r, `publish-state read`);
46
+ const b = r.body;
47
+ return { published: b.published, pending: b.pending, approvalsRequired: typeof b.approvalsRequired === "number" ? b.approvalsRequired : 0 };
48
+ }
49
+ /** 发布请求。判别结果:`published`(200,即时生效)| `pending`(202,审批闸空间——draft **未**生效,
50
+ * approvers 走 …/publish/approve;诚实判别位,消费方绝不许把 202 渲染成已发布)。 */
51
+ export async function requestPublish(client, space, opts) {
52
+ const r = await client.requestRaw({ method: "POST", path: publishPath(space), body: {}, ...(opts?.signal ? { signal: opts.signal } : {}) });
53
+ if (r.status === 200)
54
+ return { status: "published", body: r.body };
55
+ if (r.status === 202)
56
+ return { status: "pending", body: r.body };
57
+ return fail(r, `publish request`);
58
+ }
59
+ // ── feedback(C2-4)──────────────────────────────────────────────────────────────────────────────────────
60
+ /** POST /api/v1/feedback → {id}。body 开放域(壳的 FeedbackCenterSubmitData 投影自带;SDK 不重铸
61
+ * schema)。隐私闸(essential-traffic-only)是壳策略,调用前自查——SDK 不代判。响应无 id = 失败
62
+ * (壳同判据:「response did not return an id」)。 */
63
+ export async function postFeedback(client, body, opts) {
64
+ const r = await client.requestRaw({ method: "POST", path: "/api/v1/feedback", body, ...(opts?.signal ? { signal: opts.signal } : {}) });
65
+ const id = r.body?.id;
66
+ if (r.status < 200 || r.status >= 300 || typeof id !== "string" || id.length === 0)
67
+ fail(r, `feedback post`);
68
+ return { id: id };
69
+ }
70
+ // ── skillContentAddress(C2-3 表态:进 SDK 作纯 helper)──────────────────────────────────────────────────
71
+ /** skills 域内容寻址:`sha256:<hex>`(壳 cloudConfigWire.sha256Address 同算法)。多端都要校验
72
+ * skills body 完整性 ⇒ 收编成跨平台纯 helper(web crypto,浏览器/Node ≥18 通用;async 因
73
+ * crypto.subtle 使然)。 */
74
+ export async function skillContentAddress(content) {
75
+ const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(content));
76
+ const hex = Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, "0")).join("");
77
+ return `sha256:${hex}`;
78
+ }
79
+ //# sourceMappingURL=scope-config-feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-config-feedback.js","sourceRoot":"","sources":["../../src/registry/scope-config-feedback.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,11 @@ export type EffectiveResult = {
36
36
  etag?: string;
37
37
  };
38
38
  /** GET /api/v1/effective(ETag 引擎):传上次的 `etag` ⇒ 带 If-None-Match,没变答 304 零 body。
39
+ * `principal` ⇒ `?principal=` query([1864] C2-10 管理面消费形:查看**别人**的生效配置)。
39
40
  * 走 RegistryClient 同一引擎(Bearer + 401 单飞 refresh 重试)——凭证生命周期不旁路。 */
40
41
  export declare function getEffective(client: RegistryClient, opts?: {
41
42
  etag?: string;
43
+ principal?: string;
42
44
  signal?: AbortSignal;
43
45
  }): Promise<EffectiveResult>;
44
46
  //# sourceMappingURL=scopes-effective.d.ts.map
@@ -1 +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"}
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;;oEAEoE;AACpE,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAYvJ"}
@@ -20,11 +20,12 @@ export async function switchScope(client, tokens, scope, opts) {
20
20
  return out;
21
21
  }
22
22
  /** GET /api/v1/effective(ETag 引擎):传上次的 `etag` ⇒ 带 If-None-Match,没变答 304 零 body。
23
+ * `principal` ⇒ `?principal=` query([1864] C2-10 管理面消费形:查看**别人**的生效配置)。
23
24
  * 走 RegistryClient 同一引擎(Bearer + 401 单飞 refresh 重试)——凭证生命周期不旁路。 */
24
25
  export async function getEffective(client, opts) {
25
26
  const r = await client.requestRaw({
26
27
  method: "GET",
27
- path: "/api/v1/effective",
28
+ path: `/api/v1/effective${opts?.principal ? `?principal=${encodeURIComponent(opts.principal)}` : ""}`,
28
29
  ...(opts?.etag ? { headers: { "if-none-match": opts.etag } } : {}),
29
30
  ...(opts?.signal ? { signal: opts.signal } : {}),
30
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scopes-effective.js","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scopes-effective.js","sourceRoot":"","sources":["../../src/registry/scopes-effective.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,oBAAoB;CACvB,CAAC;AAIX,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,MAAsB,EAAE,IAA+B;IAChF,OAAO,MAAM,CAAC,OAAO,CAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrJ,CAAC;AAED;;;kBAGkB;AAClB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,MAAqB,EACrB,KAAa,EACb,IAA+B;IAE/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAsB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpL,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,IAAI;QAAE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/F,OAAO,GAAG,CAAC;AACb,CAAC;AAKD;;oEAEoE;AACpE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB,EAAE,IAAkE;IAC3H,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QAChC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,oBAAoB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACrG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACtF,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrH,MAAM,GAAG,GAAI,CAAC,CAAC,IAAwC,EAAE,KAAK,CAAC;IAC/D,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5H,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/sdk",
3
- "version": "0.0.115",
3
+ "version": "0.0.116",
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",