@harrylabsj/kiwi 0.6.0 → 0.6.2
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 +21 -0
- package/contracts/candidate-agent-dto-1.0.README.md +12 -8
- package/contracts/conformance/python-service/README.md +19 -0
- package/contracts/conformance/python-service/run.py +134 -0
- package/contracts/kiwi-catalog/1.0/listing-record.schema.json +11 -1
- package/contracts/kiwi-contracts.lock.json +7 -0
- package/contracts/manifest.json +61 -0
- package/contracts/vectors/candidate-agent.invalid-private-field.json +7 -0
- package/contracts/vectors/candidate-agent.valid.json +26 -0
- package/dist/a2a/client/client.js +39 -34
- package/dist/a2a/client/client.js.map +1 -1
- package/dist/a2a/client/url-policy.d.ts +8 -1
- package/dist/a2a/client/url-policy.js +18 -2
- package/dist/a2a/client/url-policy.js.map +1 -1
- package/dist/a2a/clock.d.ts +30 -0
- package/dist/a2a/clock.js +39 -0
- package/dist/a2a/clock.js.map +1 -0
- package/dist/a2a/negotiate.d.ts +6 -0
- package/dist/a2a/negotiate.js +10 -12
- package/dist/a2a/negotiate.js.map +1 -1
- package/dist/a2a/node.d.ts +23 -3
- package/dist/a2a/node.js +128 -18
- package/dist/a2a/node.js.map +1 -1
- package/dist/a2a/server/merchant-handler.d.ts +4 -0
- package/dist/a2a/server/merchant-handler.js +238 -25
- package/dist/a2a/server/merchant-handler.js.map +1 -1
- package/dist/a2a/server/pipeline.d.ts +17 -0
- package/dist/a2a/server/pipeline.js +89 -1
- package/dist/a2a/server/pipeline.js.map +1 -1
- package/dist/a2a/server/ucp.d.ts +30 -2
- package/dist/a2a/server/ucp.js +23 -14
- package/dist/a2a/server/ucp.js.map +1 -1
- package/dist/agent/agent-db.js +5 -0
- package/dist/agent/agent-db.js.map +1 -1
- package/dist/agent/buyer/buyer-tools.d.ts +5 -0
- package/dist/agent/buyer/buyer-tools.js +8 -1
- package/dist/agent/buyer/buyer-tools.js.map +1 -1
- package/dist/agent/buyer/types.d.ts +0 -25
- package/dist/agent/buyer/types.js.map +1 -1
- package/dist/agent/kernel-builder.d.ts +27 -0
- package/dist/agent/kernel-builder.js +180 -0
- package/dist/agent/kernel-builder.js.map +1 -0
- package/dist/agent/kernel.d.ts +6 -0
- package/dist/agent/kernel.js +95 -8
- package/dist/agent/kernel.js.map +1 -1
- package/dist/agent/memory/store.d.ts +5 -0
- package/dist/agent/memory/store.js +29 -1
- package/dist/agent/memory/store.js.map +1 -1
- package/dist/agent/merchant/action-candidate.js +15 -1
- package/dist/agent/merchant/action-candidate.js.map +1 -1
- package/dist/agent/merchant/merchant-client.js +22 -4
- package/dist/agent/merchant/merchant-client.js.map +1 -1
- package/dist/agent/merchant/types.d.ts +5 -2
- package/dist/agent/merchant/types.js +6 -2
- package/dist/agent/merchant/types.js.map +1 -1
- package/dist/agent/negotiation-chat.js +34 -14
- package/dist/agent/negotiation-chat.js.map +1 -1
- package/dist/cli.d.ts +56 -0
- package/dist/cli.js +141 -156
- package/dist/cli.js.map +1 -1
- package/dist/commerce/data-source.d.ts +7 -3
- package/dist/commerce/data-source.js.map +1 -1
- package/dist/commerce/http-client.js +35 -31
- package/dist/commerce/http-client.js.map +1 -1
- package/dist/commerce/shopping-cli-source.js +66 -48
- package/dist/commerce/shopping-cli-source.js.map +1 -1
- package/dist/config/profile.d.ts +7 -0
- package/dist/config/profile.js +23 -0
- package/dist/config/profile.js.map +1 -1
- package/dist/counterparty/a2a-direct/index.d.ts +5 -0
- package/dist/counterparty/a2a-direct/index.js +24 -0
- package/dist/counterparty/a2a-direct/index.js.map +1 -1
- package/dist/counterparty/shopping-cli-hosted/index.js +52 -19
- package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-record.d.ts +3 -0
- package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
- package/dist/discovery/catalog-source/kiwi-source.js +46 -36
- package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
- package/dist/discovery/catalog-source/register.d.ts +6 -0
- package/dist/discovery/catalog-source/register.js +27 -8
- package/dist/discovery/catalog-source/register.js.map +1 -1
- package/dist/discovery/catalog-source/source.js +39 -35
- package/dist/discovery/catalog-source/source.js.map +1 -1
- package/dist/discovery/resolve.d.ts +15 -0
- package/dist/discovery/resolve.js +59 -35
- package/dist/discovery/resolve.js.map +1 -1
- package/dist/discovery/ucp/index.d.ts +1 -1
- package/dist/discovery/ucp/index.js +1 -1
- package/dist/discovery/ucp/index.js.map +1 -1
- package/dist/discovery/ucp/resolver.d.ts +5 -0
- package/dist/discovery/ucp/resolver.js +65 -38
- package/dist/discovery/ucp/resolver.js.map +1 -1
- package/dist/discovery/ucp/vendor.d.ts +1 -1
- package/dist/discovery/ucp/vendor.js +1 -1
- package/dist/handoff/delivery.d.ts +4 -2
- package/dist/handoff/delivery.js +6 -1
- package/dist/handoff/delivery.js.map +1 -1
- package/dist/handoff/errors.d.ts +1 -1
- package/dist/handoff/errors.js +1 -0
- package/dist/handoff/errors.js.map +1 -1
- package/dist/handoff/idempotency.d.ts +10 -1
- package/dist/handoff/idempotency.js +13 -3
- package/dist/handoff/idempotency.js.map +1 -1
- package/dist/handoff/index.d.ts +1 -1
- package/dist/handoff/index.js +1 -1
- package/dist/handoff/index.js.map +1 -1
- package/dist/handoff/ledger.d.ts +9 -0
- package/dist/handoff/ledger.js +66 -0
- package/dist/handoff/ledger.js.map +1 -1
- package/dist/handoff/transaction.d.ts +21 -3
- package/dist/handoff/transaction.js +50 -11
- package/dist/handoff/transaction.js.map +1 -1
- package/dist/handoff/ucp-checkout/channel.js +15 -10
- package/dist/handoff/ucp-checkout/channel.js.map +1 -1
- package/dist/negotiation/jcs.js +11 -8
- package/dist/negotiation/jcs.js.map +1 -1
- package/dist/negotiation/lease/store.d.ts +25 -0
- package/dist/negotiation/lease/store.js +101 -0
- package/dist/negotiation/lease/store.js.map +1 -0
- package/dist/negotiation/recovery/recover.js +25 -1
- package/dist/negotiation/recovery/recover.js.map +1 -1
- package/dist/negotiation/state/phase.js +12 -4
- package/dist/negotiation/state/phase.js.map +1 -1
- package/dist/operator/runner.d.ts +11 -0
- package/dist/operator/runner.js +20 -1
- package/dist/operator/runner.js.map +1 -1
- package/dist/product-catalog.d.ts +43 -0
- package/dist/product-catalog.js +60 -0
- package/dist/product-catalog.js.map +1 -0
- package/dist/product-cli.d.ts +1 -1
- package/dist/product-cli.js +1 -1
- package/dist/product-publish.d.ts +15 -17
- package/dist/product-publish.js +279 -46
- package/dist/product-publish.js.map +1 -1
- package/dist/supervisor/stack-config.d.ts +6 -1
- package/dist/supervisor/stack-config.js +11 -3
- package/dist/supervisor/stack-config.js.map +1 -1
- package/dist/trust/identity/message-signature.js +17 -0
- package/dist/trust/identity/message-signature.js.map +1 -1
- package/dist/weixin/channel.d.ts +89 -0
- package/dist/weixin/channel.js +370 -0
- package/dist/weixin/channel.js.map +1 -0
- package/dist/weixin/cli-weixin.d.ts +29 -0
- package/dist/weixin/cli-weixin.js +130 -0
- package/dist/weixin/cli-weixin.js.map +1 -0
- package/dist/weixin/credentials.d.ts +33 -0
- package/dist/weixin/credentials.js +107 -0
- package/dist/weixin/credentials.js.map +1 -0
- package/dist/weixin/ilink-client.d.ts +44 -0
- package/dist/weixin/ilink-client.js +287 -0
- package/dist/weixin/ilink-client.js.map +1 -0
- package/dist/weixin/login.d.ts +37 -0
- package/dist/weixin/login.js +93 -0
- package/dist/weixin/login.js.map +1 -0
- package/dist/weixin/qr.d.ts +26 -0
- package/dist/weixin/qr.js +525 -0
- package/dist/weixin/qr.js.map +1 -0
- package/dist/weixin/types.d.ts +114 -0
- package/dist/weixin/types.js +48 -0
- package/dist/weixin/types.js.map +1 -0
- package/package.json +12 -2
- package/dist/commerce/erp-source.d.ts +0 -51
- package/dist/commerce/erp-source.js +0 -184
- package/dist/commerce/erp-source.js.map +0 -1
- package/dist/commerce/local-db-source.d.ts +0 -50
- package/dist/commerce/local-db-source.js +0 -162
- package/dist/commerce/local-db-source.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/discovery/catalog-source/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/discovery/catalog-source/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,46 +116,50 @@ export class ShoppingCliCatalogSource {
|
|
|
116
116
|
const controller = new AbortController();
|
|
117
117
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
118
118
|
let response;
|
|
119
|
-
try {
|
|
120
|
-
response = await fetchImpl(url, {
|
|
121
|
-
// 出站加固:绝不跟随重定向(3xx 目标不经过校验,且可能转发 Bearer 头)。
|
|
122
|
-
redirect: "manual",
|
|
123
|
-
signal: controller.signal,
|
|
124
|
-
headers: {
|
|
125
|
-
accept: "application/json",
|
|
126
|
-
...(this.deps.authToken !== undefined
|
|
127
|
-
? { authorization: `Bearer ${this.deps.authToken}` }
|
|
128
|
-
: {}),
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
const name = err?.name;
|
|
134
|
-
const detail = err instanceof Error ? err.message : String(err);
|
|
135
|
-
throw new CatalogSourceError("request_failed", name === "AbortError"
|
|
136
|
-
? `catalog request timed out after ${timeoutMs}ms: ${url}`
|
|
137
|
-
: `catalog request failed: ${url} (${detail})`);
|
|
138
|
-
}
|
|
139
|
-
if (isRedirectResponse(response)) {
|
|
140
|
-
throw new CatalogSourceError("request_failed", `catalog request must not follow redirects (HTTP ${response.status} from ${url})`);
|
|
141
|
-
}
|
|
142
|
-
if (!response.ok) {
|
|
143
|
-
throw new CatalogSourceError("request_failed", `catalog request returned HTTP ${response.status} from ${url}`);
|
|
144
|
-
}
|
|
145
119
|
let raw;
|
|
146
120
|
try {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
121
|
+
try {
|
|
122
|
+
response = await fetchImpl(url, {
|
|
123
|
+
// 出站加固:绝不跟随重定向(3xx 目标不经过校验,且可能转发 Bearer 头)。
|
|
124
|
+
redirect: "manual",
|
|
125
|
+
signal: controller.signal,
|
|
126
|
+
headers: {
|
|
127
|
+
accept: "application/json",
|
|
128
|
+
...(this.deps.authToken !== undefined
|
|
129
|
+
? { authorization: `Bearer ${this.deps.authToken}` }
|
|
130
|
+
: {}),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const name = err?.name;
|
|
136
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
137
|
+
throw new CatalogSourceError("request_failed", name === "AbortError"
|
|
138
|
+
? `catalog request timed out after ${timeoutMs}ms: ${url}`
|
|
139
|
+
: `catalog request failed: ${url} (${detail})`);
|
|
140
|
+
}
|
|
141
|
+
if (isRedirectResponse(response)) {
|
|
142
|
+
throw new CatalogSourceError("request_failed", `catalog request must not follow redirects (HTTP ${response.status} from ${url})`);
|
|
143
|
+
}
|
|
144
|
+
if (!response.ok) {
|
|
145
|
+
throw new CatalogSourceError("request_failed", `catalog request returned HTTP ${response.status} from ${url}`);
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
// 响应体读取在超时覆盖内 + 大小上限(出站加固)。
|
|
149
|
+
raw = await readJsonBody(response, { signal: controller.signal });
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
if (controller.signal.aborted) {
|
|
153
|
+
throw new CatalogSourceError("request_failed", `catalog request timed out after ${timeoutMs}ms while reading response: ${url}`);
|
|
154
|
+
}
|
|
155
|
+
throw new CatalogSourceError("response_invalid", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
156
|
+
? `catalog response from ${url}: ${err.message}`
|
|
157
|
+
: `catalog response from ${url} is not valid JSON`);
|
|
153
158
|
}
|
|
154
|
-
throw new CatalogSourceError("response_invalid", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
155
|
-
? `catalog response from ${url}: ${err.message}`
|
|
156
|
-
: `catalog response from ${url} is not valid JSON`);
|
|
157
159
|
}
|
|
158
160
|
finally {
|
|
161
|
+
// 审查 P2-02:所有路径(fetch 拒绝 / redirect / 非 2xx / body 读失败)
|
|
162
|
+
// 都清理超时 timer——此前只有 body 读的 finally 清理。
|
|
159
163
|
clearTimeout(timer);
|
|
160
164
|
}
|
|
161
165
|
return raw;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/discovery/catalog-source/source.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/discovery/catalog-source/source.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,12 @@
|
|
|
42
42
|
*
|
|
43
43
|
* 全部失败路径抛 DiscoveryError(fail-closed,§4.6)。
|
|
44
44
|
*
|
|
45
|
+
* SSRF 策略:远程 Agent Card URL 的 fetch 默认拒绝 loopback(127.0.0.1 /
|
|
46
|
+
* ::1 / localhost),A2A direct interface 默认拒绝 loopback/私网/保留网段;
|
|
47
|
+
* `DiscoveryDeps.allowLoopback: true` 显式放行本地开发的**字面** loopback
|
|
48
|
+
* (localhost / 127.0.0.1 / ::1)。公共主机名解析到 loopback(DNS rebinding)
|
|
49
|
+
* 与私网/保留网段始终拒绝,不被本开关放宽。
|
|
50
|
+
*
|
|
45
51
|
* v2.3(设计 §21 / MVP Slice A/B):DiscoveryDeps.catalog 可选配置后启用
|
|
46
52
|
* resolveViaCatalog —— 通过 shopping-cli Commerce Agent Catalog 发现候选并升级为
|
|
47
53
|
* CounterpartyProfile。catalog 候选不是已证明的在线身份(契约 §1),升级路径
|
|
@@ -106,6 +112,15 @@ export interface DiscoveryDeps {
|
|
|
106
112
|
resolveIp?: (hostname: string) => Promise<string[]>;
|
|
107
113
|
/** 跳过 SSRF DNS 复查(仅测试/受控环境;生产缺省 false)。 */
|
|
108
114
|
skipDnsCheck?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* 允许 loopback 目标(远程 Agent Card URL 的 fetch 与 A2A direct interface)。
|
|
117
|
+
* 缺省 false,fail-closed:远程 Agent Card 不得把发现过程或通道候选指向
|
|
118
|
+
* loopback。仅显式传 true 放行本地开发的**字面** loopback(localhost /
|
|
119
|
+
* 127.0.0.1 / ::1);公共主机名解析到 loopback(DNS rebinding)与私网/保留
|
|
120
|
+
* 网段(RFC1918、link-local、CGNAT、metadata 等)始终拒绝,不被本开关放开
|
|
121
|
+
* —— HTTPS/userinfo/重定向/DNS rebinding 约束不因本开关放宽。
|
|
122
|
+
*/
|
|
123
|
+
allowLoopback?: boolean;
|
|
109
124
|
/**
|
|
110
125
|
* UCP 集成(WP3):domain 输入先试 `/.well-known/ucp`,失败回退
|
|
111
126
|
* `/.well-known/agent-card.json`。缺省启用(不传即用默认 resolver);
|
|
@@ -42,6 +42,12 @@
|
|
|
42
42
|
*
|
|
43
43
|
* 全部失败路径抛 DiscoveryError(fail-closed,§4.6)。
|
|
44
44
|
*
|
|
45
|
+
* SSRF 策略:远程 Agent Card URL 的 fetch 默认拒绝 loopback(127.0.0.1 /
|
|
46
|
+
* ::1 / localhost),A2A direct interface 默认拒绝 loopback/私网/保留网段;
|
|
47
|
+
* `DiscoveryDeps.allowLoopback: true` 显式放行本地开发的**字面** loopback
|
|
48
|
+
* (localhost / 127.0.0.1 / ::1)。公共主机名解析到 loopback(DNS rebinding)
|
|
49
|
+
* 与私网/保留网段始终拒绝,不被本开关放宽。
|
|
50
|
+
*
|
|
45
51
|
* v2.3(设计 §21 / MVP Slice A/B):DiscoveryDeps.catalog 可选配置后启用
|
|
46
52
|
* resolveViaCatalog —— 通过 shopping-cli Commerce Agent Catalog 发现候选并升级为
|
|
47
53
|
* CounterpartyProfile。catalog 候选不是已证明的在线身份(契约 §1),升级路径
|
|
@@ -53,7 +59,7 @@ import { UcpResolver } from "./ucp/resolver.js";
|
|
|
53
59
|
import { isUcpError } from "./ucp/error.js";
|
|
54
60
|
import { computeCapabilityIntersection, intersectionView } from "./ucp/intersect.js";
|
|
55
61
|
import { normalizeHostingMode } from "./catalog-source/index.js";
|
|
56
|
-
import { assertResolvableTargetUrl, assertSafeTargetUrl
|
|
62
|
+
import { assertResolvableTargetUrl, assertSafeTargetUrl } from "../a2a/client/url-policy.js";
|
|
57
63
|
import { readJsonBody, SafeHttpError } from "../net/safe-http.js";
|
|
58
64
|
export class DiscoveryError extends Error {
|
|
59
65
|
code;
|
|
@@ -159,12 +165,15 @@ export class AgentDiscovery {
|
|
|
159
165
|
}
|
|
160
166
|
async fetchCard(url) {
|
|
161
167
|
// SSRF 防护(与 UCP resolver 同级,catalog 驱动的 agent_card_url 同样受保护):
|
|
162
|
-
// 1. 静态校验(scheme/userinfo
|
|
163
|
-
//
|
|
168
|
+
// 1. 静态校验(scheme/userinfo/保留网段;loopback 默认拒绝,
|
|
169
|
+
// deps.allowLoopback 只放行字面 localhost/127.0.0.1/::1 本地开发);
|
|
170
|
+
// 2. 请求前 DNS 复查(主机名解析的每个 IP 过保留网段判定,防 rebinding;
|
|
171
|
+
// 公共主机名解析到 loopback 始终拒绝——allowLoopback 只作用于上述静态
|
|
172
|
+
// 字面判定,不放宽 DNS rebinding,也不放宽私网/保留网段);
|
|
164
173
|
// 3. 不跟随重定向(redirect:"manual",3xx → 拒绝)。
|
|
165
174
|
let safeUrl;
|
|
166
175
|
try {
|
|
167
|
-
safeUrl = assertSafeTargetUrl(url);
|
|
176
|
+
safeUrl = assertSafeTargetUrl(url, { allowLoopback: this.deps.allowLoopback === true });
|
|
168
177
|
await assertResolvableTargetUrl(safeUrl, {
|
|
169
178
|
skipDnsCheck: this.deps.skipDnsCheck,
|
|
170
179
|
resolveIp: this.deps.resolveIp,
|
|
@@ -178,39 +187,43 @@ export class AgentDiscovery {
|
|
|
178
187
|
const controller = new AbortController();
|
|
179
188
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
180
189
|
let response;
|
|
181
|
-
try {
|
|
182
|
-
response = await fetchImpl(safeUrl.href, {
|
|
183
|
-
redirect: "manual",
|
|
184
|
-
signal: controller.signal,
|
|
185
|
-
headers: { accept: "application/json" },
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
catch (err) {
|
|
189
|
-
throw new DiscoveryError("card_fetch_failed", `failed to fetch Agent Card from ${url}: ${err instanceof Error ? err.message : String(err)}`);
|
|
190
|
-
}
|
|
191
|
-
if (response.redirected ||
|
|
192
|
-
response.type === "opaqueredirect" ||
|
|
193
|
-
(response.status >= 300 && response.status < 400)) {
|
|
194
|
-
throw new DiscoveryError("card_fetch_failed", `Agent Card fetch must not follow redirects (HTTP ${response.status} from ${url})`);
|
|
195
|
-
}
|
|
196
|
-
if (!response.ok) {
|
|
197
|
-
throw new DiscoveryError("card_fetch_failed", `Agent Card fetch returned HTTP ${response.status} from ${url}`);
|
|
198
|
-
}
|
|
199
190
|
let raw;
|
|
200
191
|
try {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
192
|
+
try {
|
|
193
|
+
response = await fetchImpl(safeUrl.href, {
|
|
194
|
+
redirect: "manual",
|
|
195
|
+
signal: controller.signal,
|
|
196
|
+
headers: { accept: "application/json" },
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
throw new DiscoveryError("card_fetch_failed", `failed to fetch Agent Card from ${url}: ${err instanceof Error ? err.message : String(err)}`);
|
|
201
|
+
}
|
|
202
|
+
if (response.redirected ||
|
|
203
|
+
response.type === "opaqueredirect" ||
|
|
204
|
+
(response.status >= 300 && response.status < 400)) {
|
|
205
|
+
throw new DiscoveryError("card_fetch_failed", `Agent Card fetch must not follow redirects (HTTP ${response.status} from ${url})`);
|
|
206
|
+
}
|
|
207
|
+
if (!response.ok) {
|
|
208
|
+
throw new DiscoveryError("card_fetch_failed", `Agent Card fetch returned HTTP ${response.status} from ${url}`);
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
// 响应体读取在超时覆盖内 + 大小上限(出站加固:对端停滞 body 或回传
|
|
212
|
+
// 巨量 body 都不能挂起/打爆本进程)。
|
|
213
|
+
raw = await readJsonBody(response, { signal: controller.signal });
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
if (controller.signal.aborted) {
|
|
217
|
+
throw new DiscoveryError("card_fetch_failed", `Agent Card fetch timed out after ${timeoutMs}ms: ${url}`);
|
|
218
|
+
}
|
|
219
|
+
throw new DiscoveryError("card_fetch_failed", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
220
|
+
? `Agent Card response from ${url}: ${err.message}`
|
|
221
|
+
: `Agent Card response from ${url} is not valid JSON`);
|
|
208
222
|
}
|
|
209
|
-
throw new DiscoveryError("card_fetch_failed", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
210
|
-
? `Agent Card response from ${url}: ${err.message}`
|
|
211
|
-
: `Agent Card response from ${url} is not valid JSON`);
|
|
212
223
|
}
|
|
213
224
|
finally {
|
|
225
|
+
// 审查 P2-02:所有路径(fetch 拒绝 / redirect / 非 2xx / body 读失败)
|
|
226
|
+
// 都清理超时 timer——此前只有 body 读的 finally 清理。
|
|
214
227
|
clearTimeout(timer);
|
|
215
228
|
}
|
|
216
229
|
return raw;
|
|
@@ -219,12 +232,21 @@ export class AgentDiscovery {
|
|
|
219
232
|
const org = card.provider.organization;
|
|
220
233
|
return org.length > 0 ? org : card.name;
|
|
221
234
|
}
|
|
222
|
-
channelCandidates(card) {
|
|
235
|
+
channelCandidates(card, allowLoopback) {
|
|
223
236
|
const local = this.deps.localInterfaces ?? DEFAULT_LOCAL_INTERFACES;
|
|
224
237
|
const intersection = intersectCapabilities(local, card);
|
|
225
238
|
const candidates = [];
|
|
226
239
|
if (intersection.selected !== undefined) {
|
|
227
|
-
|
|
240
|
+
try {
|
|
241
|
+
// A remote Agent Card must not turn a legitimate discovery into a
|
|
242
|
+
// request to localhost/loopback. Local cards remain usable for dev.
|
|
243
|
+
const safe = assertSafeTargetUrl(intersection.selected.url, { allowLoopback });
|
|
244
|
+
candidates.push({ kind: "a2a-direct", url: safe.href });
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
// Keep the candidate list fail-closed; hosted/platform candidates may
|
|
248
|
+
// still be used when explicitly configured.
|
|
249
|
+
}
|
|
228
250
|
}
|
|
229
251
|
if (this.deps.hosted?.configured === true) {
|
|
230
252
|
candidates.push({ kind: "shopping-cli-hosted", config_id: this.deps.hosted.config_id });
|
|
@@ -285,7 +307,9 @@ export class AgentDiscovery {
|
|
|
285
307
|
}
|
|
286
308
|
throw new DiscoveryError("card_invalid", `Agent Card failed validation: ${err instanceof Error ? err.message : String(err)}`);
|
|
287
309
|
}
|
|
288
|
-
|
|
310
|
+
// direct 通道候选的 loopback 放行只由 deps.allowLoopback 决定(缺省 false):
|
|
311
|
+
// 远程 card 返回 loopback interface → fail-closed;本地开发显式传 true 放行。
|
|
312
|
+
const { intersection, candidates } = this.channelCandidates(card, this.deps.allowLoopback === true);
|
|
289
313
|
if (candidates.length === 0) {
|
|
290
314
|
throw new DiscoveryError("no_channel_candidate", `no usable channel candidate for Agent Card "${card.name}": no compatible A2A binding and no hosted/platform configured (fail-closed)`);
|
|
291
315
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/discovery/resolve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/discovery/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export { computeCapabilityIntersection, intersectionView, requireCapabilitiesCom
|
|
|
25
25
|
export type { ActiveCapability, CapabilityExclusionReason, CapabilityIntersectionResult, ExcludedCapability, RequiresValidationResult, UcpIntersectionView, UcpRequiresConstraint, UcpRequiresVersionBounds, UcpCapabilityWithRequires, } from "./intersect.js";
|
|
26
26
|
export { validateUcpProfile } from "./validate.js";
|
|
27
27
|
export type { UcpRejectedEntry, UcpRejectionCode, UcpValidationResult } from "./validate.js";
|
|
28
|
-
export { UcpResolver, parseCacheControl, WELL_KNOWN_UCP_PATH } from "./resolver.js";
|
|
28
|
+
export { UcpResolver, MAX_CACHE_ENTRIES, parseCacheControl, WELL_KNOWN_UCP_PATH } from "./resolver.js";
|
|
29
29
|
export type { CacheControlParse, UcpResolveInput, UcpResolveResult, UcpResolverOptions, } from "./resolver.js";
|
|
30
30
|
export { buildKiwiNegotiationCapability, buildKiwiVendorProfile, KIWI_NEGOTIATION_SCHEMA_PATH, KIWI_NEGOTIATION_SPEC_PATH, KIWI_VENDOR_AUTHORITY, KIWI_VENDOR_CAPABILITY_NAME, KIWI_VENDOR_SERVICE_NAME, } from "./vendor.js";
|
|
31
31
|
export type { KiwiVendorBuildOptions, KiwiVendorCapability, KiwiVendorProfileOptions, } from "./vendor.js";
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
export { UcpError, isUcpError } from "./error.js";
|
|
23
23
|
export { computeCapabilityIntersection, intersectionView, requireCapabilitiesCompatible, selectRelevantCapabilities, validateRequiresConstraint, } from "./intersect.js";
|
|
24
24
|
export { validateUcpProfile } from "./validate.js";
|
|
25
|
-
export { UcpResolver, parseCacheControl, WELL_KNOWN_UCP_PATH } from "./resolver.js";
|
|
25
|
+
export { UcpResolver, MAX_CACHE_ENTRIES, parseCacheControl, WELL_KNOWN_UCP_PATH } from "./resolver.js";
|
|
26
26
|
export { buildKiwiNegotiationCapability, buildKiwiVendorProfile, KIWI_NEGOTIATION_SCHEMA_PATH, KIWI_NEGOTIATION_SPEC_PATH, KIWI_VENDOR_AUTHORITY, KIWI_VENDOR_CAPABILITY_NAME, KIWI_VENDOR_SERVICE_NAME, } from "./vendor.js";
|
|
27
27
|
export { UCP_TRANSPORTS, isDnsLabel, isHttpsUrl, originHostFor, parseCapabilityNamespace, parseServiceNamespace, reverseDomainToAuthority, } from "./types.js";
|
|
28
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/ucp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/ucp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOvG,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,EACtB,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
@@ -51,11 +51,16 @@ export interface CacheControlParse {
|
|
|
51
51
|
maxAge?: number;
|
|
52
52
|
}
|
|
53
53
|
export declare function parseCacheControl(header: string | null): CacheControlParse;
|
|
54
|
+
/** 缓存上限(评审项 L3 / 审查 P2-03:此前无驱逐,发现大量对端后内存永久
|
|
55
|
+
* 累积;现超限即清过期 + 逐出最旧,容量严格有界)。 */
|
|
56
|
+
export declare const MAX_CACHE_ENTRIES = 512;
|
|
54
57
|
export declare class UcpResolver {
|
|
55
58
|
private readonly deps;
|
|
56
59
|
private readonly cache;
|
|
57
60
|
constructor(deps?: UcpResolverOptions);
|
|
58
61
|
clearCache(): void;
|
|
62
|
+
/** 缓存条目数(诊断/测试用)。 */
|
|
63
|
+
cacheSize(): number;
|
|
59
64
|
private now;
|
|
60
65
|
private profileUrlFor;
|
|
61
66
|
resolve(input: UcpResolveInput): Promise<UcpResolveResult>;
|
|
@@ -64,8 +64,9 @@ function mapUnsafe(err) {
|
|
|
64
64
|
const detail = err instanceof Error ? err.message : String(err);
|
|
65
65
|
return new UcpError("unsafe_target", `UCP profile target rejected: ${detail}`);
|
|
66
66
|
}
|
|
67
|
-
/** 缓存上限(评审项 L3
|
|
68
|
-
|
|
67
|
+
/** 缓存上限(评审项 L3 / 审查 P2-03:此前无驱逐,发现大量对端后内存永久
|
|
68
|
+
* 累积;现超限即清过期 + 逐出最旧,容量严格有界)。 */
|
|
69
|
+
export const MAX_CACHE_ENTRIES = 512;
|
|
69
70
|
export class UcpResolver {
|
|
70
71
|
deps;
|
|
71
72
|
cache = new Map();
|
|
@@ -75,6 +76,10 @@ export class UcpResolver {
|
|
|
75
76
|
clearCache() {
|
|
76
77
|
this.cache.clear();
|
|
77
78
|
}
|
|
79
|
+
/** 缓存条目数(诊断/测试用)。 */
|
|
80
|
+
cacheSize() {
|
|
81
|
+
return this.cache.size;
|
|
82
|
+
}
|
|
78
83
|
now() {
|
|
79
84
|
return this.deps.now?.() ?? Date.now();
|
|
80
85
|
}
|
|
@@ -139,45 +144,50 @@ export class UcpResolver {
|
|
|
139
144
|
const controller = new AbortController();
|
|
140
145
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
141
146
|
let response;
|
|
142
|
-
|
|
143
|
-
response = await fetchImpl(url, {
|
|
144
|
-
redirect: "manual",
|
|
145
|
-
signal: controller.signal,
|
|
146
|
-
headers: { accept: "application/json" },
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
catch (err) {
|
|
150
|
-
if (controller.signal.aborted) {
|
|
151
|
-
throw new UcpError("profile_unreachable", `UCP profile fetch timed out after ${timeoutMs}ms`);
|
|
152
|
-
}
|
|
153
|
-
throw new UcpError("profile_unreachable", `UCP profile fetch failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
154
|
-
}
|
|
155
|
-
if (response.redirected ||
|
|
156
|
-
response.type === "opaqueredirect" ||
|
|
157
|
-
(response.status >= 300 && response.status < 400)) {
|
|
158
|
-
throw new UcpError("profile_redirect", `UCP profile fetch must not follow redirects (HTTP ${response.status})`);
|
|
159
|
-
}
|
|
160
|
-
if (response.status < 200 || response.status >= 300) {
|
|
161
|
-
throw new UcpError("profile_bad_status", `UCP profile fetch returned HTTP ${response.status}`);
|
|
162
|
-
}
|
|
163
|
-
const cacheControl = parseCacheControl(response.headers.get("cache-control"));
|
|
164
|
-
if (!cacheControl.ok) {
|
|
165
|
-
throw new UcpError("profile_cache_control", cacheControl.reason ?? "invalid Cache-Control");
|
|
166
|
-
}
|
|
147
|
+
let cacheControl;
|
|
167
148
|
let raw;
|
|
168
149
|
try {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
150
|
+
try {
|
|
151
|
+
response = await fetchImpl(url, {
|
|
152
|
+
redirect: "manual",
|
|
153
|
+
signal: controller.signal,
|
|
154
|
+
headers: { accept: "application/json" },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (controller.signal.aborted) {
|
|
159
|
+
throw new UcpError("profile_unreachable", `UCP profile fetch timed out after ${timeoutMs}ms`);
|
|
160
|
+
}
|
|
161
|
+
throw new UcpError("profile_unreachable", `UCP profile fetch failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
162
|
+
}
|
|
163
|
+
if (response.redirected ||
|
|
164
|
+
response.type === "opaqueredirect" ||
|
|
165
|
+
(response.status >= 300 && response.status < 400)) {
|
|
166
|
+
throw new UcpError("profile_redirect", `UCP profile fetch must not follow redirects (HTTP ${response.status})`);
|
|
167
|
+
}
|
|
168
|
+
if (response.status < 200 || response.status >= 300) {
|
|
169
|
+
throw new UcpError("profile_bad_status", `UCP profile fetch returned HTTP ${response.status}`);
|
|
170
|
+
}
|
|
171
|
+
cacheControl = parseCacheControl(response.headers.get("cache-control"));
|
|
172
|
+
if (!cacheControl.ok) {
|
|
173
|
+
throw new UcpError("profile_cache_control", cacheControl.reason ?? "invalid Cache-Control");
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
// 响应体读取在超时覆盖内 + 大小上限(出站加固)。
|
|
177
|
+
raw = await readJsonBody(response, { signal: controller.signal });
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (controller.signal.aborted) {
|
|
181
|
+
throw new UcpError("profile_unreachable", `UCP profile fetch timed out after ${timeoutMs}ms`);
|
|
182
|
+
}
|
|
183
|
+
throw new UcpError("profile_malformed", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
184
|
+
? err.message
|
|
185
|
+
: "UCP profile response is not valid JSON");
|
|
175
186
|
}
|
|
176
|
-
throw new UcpError("profile_malformed", err instanceof SafeHttpError && err.code === "response_too_large"
|
|
177
|
-
? err.message
|
|
178
|
-
: "UCP profile response is not valid JSON");
|
|
179
187
|
}
|
|
180
188
|
finally {
|
|
189
|
+
// 审查 P2-02:所有路径(fetch 拒绝 / redirect / 非 2xx / Cache-Control
|
|
190
|
+
// 非法 / body 读失败)都清理超时 timer——此前只有 body 读的 finally 清理。
|
|
181
191
|
clearTimeout(timer);
|
|
182
192
|
}
|
|
183
193
|
let validation;
|
|
@@ -200,12 +210,29 @@ export class UcpResolver {
|
|
|
200
210
|
cached: false,
|
|
201
211
|
rawProfile: raw,
|
|
202
212
|
};
|
|
203
|
-
//
|
|
213
|
+
// 防无界增长(审查 P2-03):容量严格有界——超限时先清除全部过期条目,
|
|
214
|
+
// 仍超限则逐出最早过期(近似 LRU 的最旧条目)腾位。此前只清过期条目,
|
|
215
|
+
// 全为有效条目时新 URL 仍会写入 → 缓存可无限增长。发现大量对端后内存
|
|
216
|
+
// 不再永久累积。
|
|
204
217
|
if (this.cache.size >= MAX_CACHE_ENTRIES) {
|
|
218
|
+
const nowMs = this.now();
|
|
205
219
|
for (const [key, entry] of this.cache) {
|
|
206
|
-
if (entry.expiresAt <=
|
|
220
|
+
if (entry.expiresAt <= nowMs)
|
|
207
221
|
this.cache.delete(key);
|
|
208
222
|
}
|
|
223
|
+
while (this.cache.size >= MAX_CACHE_ENTRIES) {
|
|
224
|
+
let oldestKey;
|
|
225
|
+
let oldestExpires = Number.POSITIVE_INFINITY;
|
|
226
|
+
for (const [key, entry] of this.cache) {
|
|
227
|
+
if (entry.expiresAt < oldestExpires) {
|
|
228
|
+
oldestExpires = entry.expiresAt;
|
|
229
|
+
oldestKey = key;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (oldestKey === undefined)
|
|
233
|
+
break;
|
|
234
|
+
this.cache.delete(oldestKey);
|
|
235
|
+
}
|
|
209
236
|
}
|
|
210
237
|
this.cache.set(url, { result, expiresAt: fetchedAt + ttlMs });
|
|
211
238
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/discovery/ucp/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAInD,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAwChC,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC;IAChF,CAAC;IACD,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,gBAAgB,GAAG,IAAI,EAAE,CAAC;QAClE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,oCAAoC,gBAAgB,GAAG,IAAI,SAAS,MAAM,GAAG;SACtF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,QAAQ,CAAC,eAAe,EAAE,gCAAgC,MAAM,EAAE,CAAC,CAAC;AACjF,CAAC;AAOD
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/discovery/ucp/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import type { UcpCapabilityDeclaration, UcpProfile } from "./types.js";
|
|
29
29
|
/**
|
|
30
|
-
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com`
|
|
30
|
+
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com` 为 Kiwi 项目实际控制域名
|
|
31
31
|
* (harrylabsj.com 的子域);spec / schema 须托管在该域名上(UCP origin 绑定)。
|
|
32
32
|
*/
|
|
33
33
|
export declare const KIWI_VENDOR_AUTHORITY = "kiwi.harrylabsj.com";
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
|
-
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com`
|
|
17
|
+
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com` 为 Kiwi 项目实际控制域名
|
|
18
18
|
* (harrylabsj.com 的子域);spec / schema 须托管在该域名上(UCP origin 绑定)。
|
|
19
19
|
*/
|
|
20
20
|
export const KIWI_VENDOR_AUTHORITY = "kiwi.harrylabsj.com";
|
|
@@ -30,8 +30,10 @@ export interface OpenEvidence {
|
|
|
30
30
|
}
|
|
31
31
|
/** 从 Ledger 交付事件投影交付状态(纯函数,最后事件胜出)。 */
|
|
32
32
|
export declare function deliveryState(events: readonly Pick<LedgerEvent, "event_kind" | "event_id">[]): HandoffDeliveryState | undefined;
|
|
33
|
-
/** 迁移校验:非法转换抛 schemaError(fail-closed)。
|
|
34
|
-
|
|
33
|
+
/** 迁移校验:非法转换抛 schemaError(fail-closed)。
|
|
34
|
+
* `handoff_delivery_failed` 是审计事件(KTH rev0.3 §9:交付失败在 handoff
|
|
35
|
+
* 创建前落账),不产生观察状态、保留前态——不参与迁移校验。 */
|
|
36
|
+
export declare function transitionDeliveryState(current: HandoffDeliveryState | undefined, eventKind: HandoffDeliveryEventKind): HandoffDeliveryState | undefined;
|
|
35
37
|
export declare function isHandoffDeliveryEventKind(kind: string): kind is HandoffDeliveryEventKind;
|
|
36
38
|
/** 校验打开证据(fail-closed):kind 白名单 + handoff_id 绑定 + RFC 3339。 */
|
|
37
39
|
export declare function validateOpenEvidence(value: unknown, path?: string): OpenEvidence;
|