@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.
Files changed (167) hide show
  1. package/README.md +21 -0
  2. package/contracts/candidate-agent-dto-1.0.README.md +12 -8
  3. package/contracts/conformance/python-service/README.md +19 -0
  4. package/contracts/conformance/python-service/run.py +134 -0
  5. package/contracts/kiwi-catalog/1.0/listing-record.schema.json +11 -1
  6. package/contracts/kiwi-contracts.lock.json +7 -0
  7. package/contracts/manifest.json +61 -0
  8. package/contracts/vectors/candidate-agent.invalid-private-field.json +7 -0
  9. package/contracts/vectors/candidate-agent.valid.json +26 -0
  10. package/dist/a2a/client/client.js +39 -34
  11. package/dist/a2a/client/client.js.map +1 -1
  12. package/dist/a2a/client/url-policy.d.ts +8 -1
  13. package/dist/a2a/client/url-policy.js +18 -2
  14. package/dist/a2a/client/url-policy.js.map +1 -1
  15. package/dist/a2a/clock.d.ts +30 -0
  16. package/dist/a2a/clock.js +39 -0
  17. package/dist/a2a/clock.js.map +1 -0
  18. package/dist/a2a/negotiate.d.ts +6 -0
  19. package/dist/a2a/negotiate.js +10 -12
  20. package/dist/a2a/negotiate.js.map +1 -1
  21. package/dist/a2a/node.d.ts +23 -3
  22. package/dist/a2a/node.js +128 -18
  23. package/dist/a2a/node.js.map +1 -1
  24. package/dist/a2a/server/merchant-handler.d.ts +4 -0
  25. package/dist/a2a/server/merchant-handler.js +238 -25
  26. package/dist/a2a/server/merchant-handler.js.map +1 -1
  27. package/dist/a2a/server/pipeline.d.ts +17 -0
  28. package/dist/a2a/server/pipeline.js +89 -1
  29. package/dist/a2a/server/pipeline.js.map +1 -1
  30. package/dist/a2a/server/ucp.d.ts +30 -2
  31. package/dist/a2a/server/ucp.js +23 -14
  32. package/dist/a2a/server/ucp.js.map +1 -1
  33. package/dist/agent/agent-db.js +5 -0
  34. package/dist/agent/agent-db.js.map +1 -1
  35. package/dist/agent/buyer/buyer-tools.d.ts +5 -0
  36. package/dist/agent/buyer/buyer-tools.js +8 -1
  37. package/dist/agent/buyer/buyer-tools.js.map +1 -1
  38. package/dist/agent/buyer/types.d.ts +0 -25
  39. package/dist/agent/buyer/types.js.map +1 -1
  40. package/dist/agent/kernel-builder.d.ts +27 -0
  41. package/dist/agent/kernel-builder.js +180 -0
  42. package/dist/agent/kernel-builder.js.map +1 -0
  43. package/dist/agent/kernel.d.ts +6 -0
  44. package/dist/agent/kernel.js +95 -8
  45. package/dist/agent/kernel.js.map +1 -1
  46. package/dist/agent/memory/store.d.ts +5 -0
  47. package/dist/agent/memory/store.js +29 -1
  48. package/dist/agent/memory/store.js.map +1 -1
  49. package/dist/agent/merchant/action-candidate.js +15 -1
  50. package/dist/agent/merchant/action-candidate.js.map +1 -1
  51. package/dist/agent/merchant/merchant-client.js +22 -4
  52. package/dist/agent/merchant/merchant-client.js.map +1 -1
  53. package/dist/agent/merchant/types.d.ts +5 -2
  54. package/dist/agent/merchant/types.js +6 -2
  55. package/dist/agent/merchant/types.js.map +1 -1
  56. package/dist/agent/negotiation-chat.js +34 -14
  57. package/dist/agent/negotiation-chat.js.map +1 -1
  58. package/dist/cli.d.ts +56 -0
  59. package/dist/cli.js +141 -156
  60. package/dist/cli.js.map +1 -1
  61. package/dist/commerce/data-source.d.ts +7 -3
  62. package/dist/commerce/data-source.js.map +1 -1
  63. package/dist/commerce/http-client.js +35 -31
  64. package/dist/commerce/http-client.js.map +1 -1
  65. package/dist/commerce/shopping-cli-source.js +66 -48
  66. package/dist/commerce/shopping-cli-source.js.map +1 -1
  67. package/dist/config/profile.d.ts +7 -0
  68. package/dist/config/profile.js +23 -0
  69. package/dist/config/profile.js.map +1 -1
  70. package/dist/counterparty/a2a-direct/index.d.ts +5 -0
  71. package/dist/counterparty/a2a-direct/index.js +24 -0
  72. package/dist/counterparty/a2a-direct/index.js.map +1 -1
  73. package/dist/counterparty/shopping-cli-hosted/index.js +52 -19
  74. package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -1
  75. package/dist/discovery/catalog-source/kiwi-record.d.ts +3 -0
  76. package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
  77. package/dist/discovery/catalog-source/kiwi-source.js +46 -36
  78. package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
  79. package/dist/discovery/catalog-source/register.d.ts +6 -0
  80. package/dist/discovery/catalog-source/register.js +27 -8
  81. package/dist/discovery/catalog-source/register.js.map +1 -1
  82. package/dist/discovery/catalog-source/source.js +39 -35
  83. package/dist/discovery/catalog-source/source.js.map +1 -1
  84. package/dist/discovery/resolve.d.ts +15 -0
  85. package/dist/discovery/resolve.js +59 -35
  86. package/dist/discovery/resolve.js.map +1 -1
  87. package/dist/discovery/ucp/index.d.ts +1 -1
  88. package/dist/discovery/ucp/index.js +1 -1
  89. package/dist/discovery/ucp/index.js.map +1 -1
  90. package/dist/discovery/ucp/resolver.d.ts +5 -0
  91. package/dist/discovery/ucp/resolver.js +65 -38
  92. package/dist/discovery/ucp/resolver.js.map +1 -1
  93. package/dist/discovery/ucp/vendor.d.ts +1 -1
  94. package/dist/discovery/ucp/vendor.js +1 -1
  95. package/dist/handoff/delivery.d.ts +4 -2
  96. package/dist/handoff/delivery.js +6 -1
  97. package/dist/handoff/delivery.js.map +1 -1
  98. package/dist/handoff/errors.d.ts +1 -1
  99. package/dist/handoff/errors.js +1 -0
  100. package/dist/handoff/errors.js.map +1 -1
  101. package/dist/handoff/idempotency.d.ts +10 -1
  102. package/dist/handoff/idempotency.js +13 -3
  103. package/dist/handoff/idempotency.js.map +1 -1
  104. package/dist/handoff/index.d.ts +1 -1
  105. package/dist/handoff/index.js +1 -1
  106. package/dist/handoff/index.js.map +1 -1
  107. package/dist/handoff/ledger.d.ts +9 -0
  108. package/dist/handoff/ledger.js +66 -0
  109. package/dist/handoff/ledger.js.map +1 -1
  110. package/dist/handoff/transaction.d.ts +21 -3
  111. package/dist/handoff/transaction.js +50 -11
  112. package/dist/handoff/transaction.js.map +1 -1
  113. package/dist/handoff/ucp-checkout/channel.js +15 -10
  114. package/dist/handoff/ucp-checkout/channel.js.map +1 -1
  115. package/dist/negotiation/jcs.js +11 -8
  116. package/dist/negotiation/jcs.js.map +1 -1
  117. package/dist/negotiation/lease/store.d.ts +25 -0
  118. package/dist/negotiation/lease/store.js +101 -0
  119. package/dist/negotiation/lease/store.js.map +1 -0
  120. package/dist/negotiation/recovery/recover.js +25 -1
  121. package/dist/negotiation/recovery/recover.js.map +1 -1
  122. package/dist/negotiation/state/phase.js +12 -4
  123. package/dist/negotiation/state/phase.js.map +1 -1
  124. package/dist/operator/runner.d.ts +11 -0
  125. package/dist/operator/runner.js +20 -1
  126. package/dist/operator/runner.js.map +1 -1
  127. package/dist/product-catalog.d.ts +43 -0
  128. package/dist/product-catalog.js +60 -0
  129. package/dist/product-catalog.js.map +1 -0
  130. package/dist/product-cli.d.ts +1 -1
  131. package/dist/product-cli.js +1 -1
  132. package/dist/product-publish.d.ts +15 -17
  133. package/dist/product-publish.js +279 -46
  134. package/dist/product-publish.js.map +1 -1
  135. package/dist/supervisor/stack-config.d.ts +6 -1
  136. package/dist/supervisor/stack-config.js +11 -3
  137. package/dist/supervisor/stack-config.js.map +1 -1
  138. package/dist/trust/identity/message-signature.js +17 -0
  139. package/dist/trust/identity/message-signature.js.map +1 -1
  140. package/dist/weixin/channel.d.ts +89 -0
  141. package/dist/weixin/channel.js +370 -0
  142. package/dist/weixin/channel.js.map +1 -0
  143. package/dist/weixin/cli-weixin.d.ts +29 -0
  144. package/dist/weixin/cli-weixin.js +130 -0
  145. package/dist/weixin/cli-weixin.js.map +1 -0
  146. package/dist/weixin/credentials.d.ts +33 -0
  147. package/dist/weixin/credentials.js +107 -0
  148. package/dist/weixin/credentials.js.map +1 -0
  149. package/dist/weixin/ilink-client.d.ts +44 -0
  150. package/dist/weixin/ilink-client.js +287 -0
  151. package/dist/weixin/ilink-client.js.map +1 -0
  152. package/dist/weixin/login.d.ts +37 -0
  153. package/dist/weixin/login.js +93 -0
  154. package/dist/weixin/login.js.map +1 -0
  155. package/dist/weixin/qr.d.ts +26 -0
  156. package/dist/weixin/qr.js +525 -0
  157. package/dist/weixin/qr.js.map +1 -0
  158. package/dist/weixin/types.d.ts +114 -0
  159. package/dist/weixin/types.js +48 -0
  160. package/dist/weixin/types.js.map +1 -0
  161. package/package.json +12 -2
  162. package/dist/commerce/erp-source.d.ts +0 -51
  163. package/dist/commerce/erp-source.js +0 -184
  164. package/dist/commerce/erp-source.js.map +0 -1
  165. package/dist/commerce/local-db-source.d.ts +0 -50
  166. package/dist/commerce/local-db-source.js +0 -162
  167. 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":"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"}
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
- raw = await readJsonBody(response, { signal: controller.signal });
149
- }
150
- catch (err) {
151
- if (controller.signal.aborted) {
152
- throw new CatalogSourceError("request_failed", `catalog request timed out after ${timeoutMs}ms while reading response: ${url}`);
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, } from "../a2a/client/url-policy.js";
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/保留网段/loopback http 例外);
163
- // 2. 请求前 DNS 复查(主机名解析的每个 IP 过保留网段判定,防 rebinding);
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
- // 响应体读取在超时覆盖内 + 大小上限(出站加固:对端停滞 body 或回传
202
- // 巨量 body 都不能挂起/打爆本进程)。
203
- raw = await readJsonBody(response, { signal: controller.signal });
204
- }
205
- catch (err) {
206
- if (controller.signal.aborted) {
207
- throw new DiscoveryError("card_fetch_failed", `Agent Card fetch timed out after ${timeoutMs}ms: ${url}`);
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
- candidates.push({ kind: "a2a-direct", url: intersection.selected.url });
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
- const { intersection, candidates } = this.channelCandidates(card);
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;AAOpF,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"}
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
- const MAX_CACHE_ENTRIES = 512;
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
- try {
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
- raw = await readJsonBody(response, { signal: controller.signal });
171
- }
172
- catch (err) {
173
- if (controller.signal.aborted) {
174
- throw new UcpError("profile_unreachable", `UCP profile fetch timed out after ${timeoutMs}ms`);
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 <= this.now())
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":"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"}
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
- export declare function transitionDeliveryState(current: HandoffDeliveryState | undefined, eventKind: HandoffDeliveryEventKind): HandoffDeliveryState;
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;