@harrylabsj/kiwi 0.6.1 → 0.7.0

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 (151) hide show
  1. package/README.md +28 -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 +20 -2
  22. package/dist/a2a/node.js +165 -19
  23. package/dist/a2a/node.js.map +1 -1
  24. package/dist/a2a/server/auth.js +11 -2
  25. package/dist/a2a/server/auth.js.map +1 -1
  26. package/dist/a2a/server/merchant-handler.d.ts +4 -0
  27. package/dist/a2a/server/merchant-handler.js +283 -27
  28. package/dist/a2a/server/merchant-handler.js.map +1 -1
  29. package/dist/a2a/server/pipeline.d.ts +17 -0
  30. package/dist/a2a/server/pipeline.js +89 -1
  31. package/dist/a2a/server/pipeline.js.map +1 -1
  32. package/dist/a2a/server/ucp.d.ts +30 -2
  33. package/dist/a2a/server/ucp.js +23 -14
  34. package/dist/a2a/server/ucp.js.map +1 -1
  35. package/dist/agent/agent-db.js +5 -0
  36. package/dist/agent/agent-db.js.map +1 -1
  37. package/dist/agent/buyer/buyer-tools.d.ts +5 -0
  38. package/dist/agent/buyer/buyer-tools.js +75 -7
  39. package/dist/agent/buyer/buyer-tools.js.map +1 -1
  40. package/dist/agent/buyer/search-loop.d.ts +3 -0
  41. package/dist/agent/buyer/search-loop.js +129 -0
  42. package/dist/agent/buyer/search-loop.js.map +1 -1
  43. package/dist/agent/buyer/task-store.d.ts +2 -0
  44. package/dist/agent/buyer/task-store.js +11 -7
  45. package/dist/agent/buyer/task-store.js.map +1 -1
  46. package/dist/agent/kernel.d.ts +6 -0
  47. package/dist/agent/kernel.js +100 -10
  48. package/dist/agent/kernel.js.map +1 -1
  49. package/dist/agent/memory/schema.d.ts +1 -1
  50. package/dist/agent/memory/schema.js +7 -1
  51. package/dist/agent/memory/schema.js.map +1 -1
  52. package/dist/agent/memory/store.d.ts +5 -0
  53. package/dist/agent/memory/store.js +29 -1
  54. package/dist/agent/memory/store.js.map +1 -1
  55. package/dist/agent/merchant/action-candidate.js +15 -1
  56. package/dist/agent/merchant/action-candidate.js.map +1 -1
  57. package/dist/agent/merchant/merchant-client.js +22 -4
  58. package/dist/agent/merchant/merchant-client.js.map +1 -1
  59. package/dist/agent/merchant/types.d.ts +5 -2
  60. package/dist/agent/merchant/types.js +6 -2
  61. package/dist/agent/merchant/types.js.map +1 -1
  62. package/dist/agent/negotiation-chat.js +34 -14
  63. package/dist/agent/negotiation-chat.js.map +1 -1
  64. package/dist/cli.d.ts +56 -0
  65. package/dist/cli.js +51 -3
  66. package/dist/cli.js.map +1 -1
  67. package/dist/commerce/data-source.d.ts +3 -0
  68. package/dist/commerce/data-source.js.map +1 -1
  69. package/dist/commerce/http-client.js +35 -31
  70. package/dist/commerce/http-client.js.map +1 -1
  71. package/dist/commerce/shopping-cli-source.js +63 -46
  72. package/dist/commerce/shopping-cli-source.js.map +1 -1
  73. package/dist/counterparty/a2a-direct/index.d.ts +5 -0
  74. package/dist/counterparty/a2a-direct/index.js +24 -0
  75. package/dist/counterparty/a2a-direct/index.js.map +1 -1
  76. package/dist/counterparty/shopping-cli-hosted/index.js +52 -19
  77. package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -1
  78. package/dist/discovery/catalog-source/kiwi-record.d.ts +2 -0
  79. package/dist/discovery/catalog-source/kiwi-record.js.map +1 -1
  80. package/dist/discovery/catalog-source/kiwi-source.js +39 -35
  81. package/dist/discovery/catalog-source/kiwi-source.js.map +1 -1
  82. package/dist/discovery/catalog-source/register.js +12 -1
  83. package/dist/discovery/catalog-source/register.js.map +1 -1
  84. package/dist/discovery/catalog-source/source.js +39 -35
  85. package/dist/discovery/catalog-source/source.js.map +1 -1
  86. package/dist/discovery/resolve.d.ts +15 -0
  87. package/dist/discovery/resolve.js +59 -35
  88. package/dist/discovery/resolve.js.map +1 -1
  89. package/dist/discovery/ucp/index.d.ts +1 -1
  90. package/dist/discovery/ucp/index.js +1 -1
  91. package/dist/discovery/ucp/index.js.map +1 -1
  92. package/dist/discovery/ucp/resolver.d.ts +5 -0
  93. package/dist/discovery/ucp/resolver.js +65 -38
  94. package/dist/discovery/ucp/resolver.js.map +1 -1
  95. package/dist/discovery/ucp/vendor.d.ts +1 -1
  96. package/dist/discovery/ucp/vendor.js +1 -1
  97. package/dist/handoff/delivery.d.ts +4 -2
  98. package/dist/handoff/delivery.js +6 -1
  99. package/dist/handoff/delivery.js.map +1 -1
  100. package/dist/handoff/index.d.ts +1 -1
  101. package/dist/handoff/index.js +1 -1
  102. package/dist/handoff/index.js.map +1 -1
  103. package/dist/handoff/ledger.d.ts +9 -0
  104. package/dist/handoff/ledger.js +66 -0
  105. package/dist/handoff/ledger.js.map +1 -1
  106. package/dist/handoff/transaction.d.ts +21 -3
  107. package/dist/handoff/transaction.js +37 -5
  108. package/dist/handoff/transaction.js.map +1 -1
  109. package/dist/handoff/ucp-checkout/channel.js +15 -10
  110. package/dist/handoff/ucp-checkout/channel.js.map +1 -1
  111. package/dist/negotiation/jcs.js +11 -8
  112. package/dist/negotiation/jcs.js.map +1 -1
  113. package/dist/negotiation/lease/store.d.ts +25 -0
  114. package/dist/negotiation/lease/store.js +101 -0
  115. package/dist/negotiation/lease/store.js.map +1 -0
  116. package/dist/negotiation/recovery/recover.js +25 -1
  117. package/dist/negotiation/recovery/recover.js.map +1 -1
  118. package/dist/operator/runner.d.ts +11 -0
  119. package/dist/operator/runner.js +20 -1
  120. package/dist/operator/runner.js.map +1 -1
  121. package/dist/product-catalog.d.ts +1 -1
  122. package/dist/product-catalog.js +3 -3
  123. package/dist/product-catalog.js.map +1 -1
  124. package/dist/product-cli.d.ts +1 -1
  125. package/dist/product-cli.js +1 -1
  126. package/dist/product-publish.d.ts +5 -0
  127. package/dist/product-publish.js +112 -7
  128. package/dist/product-publish.js.map +1 -1
  129. package/dist/supervisor/stack-config.d.ts +6 -1
  130. package/dist/supervisor/stack-config.js +11 -3
  131. package/dist/supervisor/stack-config.js.map +1 -1
  132. package/dist/trust/identity/message-signature.js +17 -0
  133. package/dist/trust/identity/message-signature.js.map +1 -1
  134. package/dist/weixin/channel.d.ts +2 -0
  135. package/dist/weixin/channel.js +17 -3
  136. package/dist/weixin/channel.js.map +1 -1
  137. package/dist/weixin/cli-weixin.js +2 -0
  138. package/dist/weixin/cli-weixin.js.map +1 -1
  139. package/dist/weixin/ilink-client.d.ts +1 -1
  140. package/dist/weixin/ilink-client.js +26 -1
  141. package/dist/weixin/ilink-client.js.map +1 -1
  142. package/dist/weixin/login.d.ts +3 -0
  143. package/dist/weixin/login.js +1 -1
  144. package/dist/weixin/login.js.map +1 -1
  145. package/package.json +9 -2
  146. package/dist/commerce/erp-source.d.ts +0 -51
  147. package/dist/commerce/erp-source.js +0 -184
  148. package/dist/commerce/erp-source.js.map +0 -1
  149. package/dist/commerce/local-db-source.d.ts +0 -50
  150. package/dist/commerce/local-db-source.js +0 -162
  151. package/dist/commerce/local-db-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/a2a/server/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/a2a/server/pipeline.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,27 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ /**
17
+ * UCP Profile 服务化(WP3,基线 §25 / §8.3 / §43)。
18
+ *
19
+ * merchant 侧从 AgentCardConfig 生成 UCP Profile 并在 `GET /.well-known/ucp`
20
+ * 上发布(UCP 规范强制的标准发现入口)。
21
+ *
22
+ * **单一 canonical 模型(审查 P1-03)**:UCP Profile 的领域模型只以
23
+ * `discovery/ucp/types.ts` 的 `UcpProfile`(`ucp: { version, services,
24
+ * capabilities }`)为准,构造入口统一走 `buildKiwiVendorProfile`(AgentCardConfig
25
+ * → UcpProfile 的唯一 adapter)。`buildUcpProfile` 产物强制过 `validateUcpProfile`
26
+ * 自洽校验(round-trip 不变量,fail-closed:被拒条目存在即抛错,不发布坏
27
+ * profile)——不允许发布侧另立一套顶层形状与校验器分叉。
28
+ *
29
+ * 条目元数据(version / spec / schema)由构造器补齐:capability 声明携带
30
+ * version + spec + schema(origin 与 namespace authority 绑定),service 声明
31
+ * 携带 version + spec + a2a transport + endpoint(指向本 server 的 Agent Card
32
+ * URL)。
33
+ *
34
+ * 响应头 Cache-Control 由 buildUcpProfile 计算(`public, max-age=N`,N>=60)。
35
+ * 零新增依赖。
36
+ */
16
37
  import { WELL_KNOWN_UCP_PATH } from "../../discovery/ucp/resolver.js";
17
38
  import type { UcpProfile } from "../../discovery/ucp/types.js";
18
39
  import type { AgentCardConfig } from "./types.js";
@@ -38,12 +59,19 @@ export interface UcpPublishOptions {
38
59
  }
39
60
  /** buildUcpProfile 的产物:可发布 profile + 计算好的 Cache-Control 头。 */
40
61
  export interface BuiltUcpProfile {
62
+ /** canonical UcpProfile(已过 validateUcpProfile,无被拒条目)。 */
41
63
  profile: UcpProfile;
42
64
  cacheControl: string;
43
65
  maxAgeSeconds: number;
44
66
  }
45
67
  /**
46
- * 从本地 Agent Card 配置生成 UCP Profile。构建结果强制过 validateUcpProfile
47
- * 自洽校验(fail-closed:被拒条目存在即抛错,不发布坏 profile)。
68
+ * 从本地 Agent Card 配置生成 canonical UCP Profile(发布侧)。
69
+ *
70
+ * 构造走唯一 adapter `buildKiwiVendorProfile`(capability / service 声明补齐
71
+ * version / spec / schema 元数据),产物再强制过 `validateUcpProfile`
72
+ * (round-trip 不变量,审查 P1-03):任何被拒条目 → 抛错,不发布坏 profile。
73
+ * a2a service 的 endpoint 指向本 server 的 Agent Card URL,因此 baseUrl 必须
74
+ * 是 https(UCP 规范);http baseUrl 会被 validateUcpProfile 以 endpoint_invalid
75
+ * 拒绝(fail-closed)。
48
76
  */
49
77
  export declare function buildUcpProfile(config: AgentCardConfig, opts?: UcpPublishOptions): BuiltUcpProfile;
@@ -17,25 +17,26 @@
17
17
  * UCP Profile 服务化(WP3,基线 §25 / §8.3 / §43)。
18
18
  *
19
19
  * merchant 侧从 AgentCardConfig 生成 UCP Profile 并在 `GET /.well-known/ucp`
20
- * 上发布(UCP 规范强制的标准发现入口):
20
+ * 上发布(UCP 规范强制的标准发现入口)。
21
21
  *
22
- * - a2a service transport:endpoint 指向本 server 的 Agent Card well-known
23
- * URL(`<baseUrl>/.well-known/agent-card.json`),基线 §25;
24
- * - Kiwi vendor capability:`com.harrylabsj.kiwi.shopping.negotiation`(§8.3,
25
- * 真实 authority `kiwi.harrylabsj.com`,spec/schema 需托管在该域名上)。
22
+ * **单一 canonical 模型(审查 P1-03)**:UCP Profile 的领域模型只以
23
+ * `discovery/ucp/types.ts` 的 `UcpProfile`(`ucp: { version, services,
24
+ * capabilities }`)为准,构造入口统一走 `buildKiwiVendorProfile`(AgentCardConfig
25
+ * UcpProfile 的唯一 adapter)。`buildUcpProfile` 产物强制过 `validateUcpProfile`
26
+ * 自洽校验(round-trip 不变量,fail-closed:被拒条目存在即抛错,不发布坏
27
+ * profile)——不允许发布侧另立一套顶层形状与校验器分叉。
26
28
  *
27
- * 不声明任何 `dev.ucp.*` capability:该 namespace UCP 治理机构保留,vendor
28
- * 不得占用(`dev.ucp.shopping.*` 官方 capability checkout / cart / order /
29
- * fulfillment / discount);Kiwi 协商能力以 Vendor Root Capability 形态发布(§25.2)。
29
+ * 条目元数据(version / spec / schema)由构造器补齐:capability 声明携带
30
+ * version + spec + schema(origin namespace authority 绑定),service 声明
31
+ * 携带 version + spec + a2a transport + endpoint(指向本 server 的 Agent Card
32
+ * URL)。
30
33
  *
31
- * 构建结果强制过 validateUcpProfile 自洽校验(fail-closed:过不了校验就不发)。
32
34
  * 响应头 Cache-Control 由 buildUcpProfile 计算(`public, max-age=N`,N>=60)。
33
- *
34
35
  * 零新增依赖。
35
36
  */
37
+ import { WELL_KNOWN_UCP_PATH } from "../../discovery/ucp/resolver.js";
36
38
  import { buildKiwiVendorProfile } from "../../discovery/ucp/vendor.js";
37
39
  import { validateUcpProfile } from "../../discovery/ucp/validate.js";
38
- import { WELL_KNOWN_UCP_PATH } from "../../discovery/ucp/resolver.js";
39
40
  export { WELL_KNOWN_UCP_PATH };
40
41
  const DEFAULT_WELL_KNOWN_AGENT_CARD_PATH = "/.well-known/agent-card.json";
41
42
  const DEFAULT_MAX_AGE_SECONDS = 300;
@@ -57,8 +58,14 @@ function requireHttpUrl(value, field) {
57
58
  return url;
58
59
  }
59
60
  /**
60
- * 从本地 Agent Card 配置生成 UCP Profile。构建结果强制过 validateUcpProfile
61
- * 自洽校验(fail-closed:被拒条目存在即抛错,不发布坏 profile)。
61
+ * 从本地 Agent Card 配置生成 canonical UCP Profile(发布侧)。
62
+ *
63
+ * 构造走唯一 adapter `buildKiwiVendorProfile`(capability / service 声明补齐
64
+ * version / spec / schema 元数据),产物再强制过 `validateUcpProfile`
65
+ * (round-trip 不变量,审查 P1-03):任何被拒条目 → 抛错,不发布坏 profile。
66
+ * a2a service 的 endpoint 指向本 server 的 Agent Card URL,因此 baseUrl 必须
67
+ * 是 https(UCP 规范);http baseUrl 会被 validateUcpProfile 以 endpoint_invalid
68
+ * 拒绝(fail-closed)。
62
69
  */
63
70
  export function buildUcpProfile(config, opts = {}) {
64
71
  const baseUrl = requireHttpUrl(config.baseUrl, "baseUrl");
@@ -69,10 +76,12 @@ export function buildUcpProfile(config, opts = {}) {
69
76
  const wellKnownPath = opts.wellKnownPath ?? DEFAULT_WELL_KNOWN_AGENT_CARD_PATH;
70
77
  const agentCardUrl = new URL(wellKnownPath, baseUrl).href;
71
78
  const profile = buildKiwiVendorProfile({ agentCardUrl, ...opts.vendor });
79
+ // 审查 P1-03:buildUcpProfile 产物必须能 round-trip 过 validateUcpProfile
80
+ // (canonical model 的权威校验)。构造器产物不被直接信任,fail-closed。
72
81
  const validation = validateUcpProfile(profile);
73
82
  if (validation.rejected.length > 0) {
74
83
  const detail = validation.rejected
75
- .map((r) => `${r.name} (${r.code})`)
84
+ .map((r) => `${r.kind}:${r.name} (${r.code})`)
76
85
  .join("; ");
77
86
  throw new Error(`UCP profile failed validation: ${detail}`);
78
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ucp.js","sourceRoot":"","sources":["../../../src/a2a/server/ucp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,kCAAkC,GAAG,8BAA8B,CAAC;AAC1E,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AA8B/B,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,8BAA8B,KAAK,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,gCAAgC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,wCAAwC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAuB,EACvB,OAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,2DAA2D,mBAAmB,SAAS,aAAa,GAAG,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,kCAAkC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1D,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzE,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,YAAY,EAAE,mBAAmB,aAAa,EAAE;QAChD,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ucp.js","sourceRoot":"","sources":["../../../src/a2a/server/ucp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,kCAAkC,GAAG,8BAA8B,CAAC;AAC1E,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AA+B/B,SAAS,cAAc,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,8BAA8B,KAAK,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,gCAAgC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,wCAAwC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAuB,EACvB,OAA0B,EAAE;IAE5B,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,2DAA2D,mBAAmB,SAAS,aAAa,GAAG,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,kCAAkC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1D,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzE,iEAAiE;IACjE,mDAAmD;IACnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;aAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,YAAY,EAAE,mBAAmB,aAAa,EAAE;QAChD,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -73,6 +73,11 @@ export function openAgentDatabase(dbPath) {
73
73
  chmodSync(dbPath, 0o600);
74
74
  try {
75
75
  db.exec("PRAGMA foreign_keys = ON");
76
+ // 审查 P3:WAL + busy_timeout——同身份多 worker 双开同一 state.sqlite
77
+ // 时同步写此前直接 SQLITE_BUSY 抛错(node:sqlite 不自动重试);WAL 下
78
+ // 读写并发 + 5s 等待让跨进程写有合理竞争窗口。
79
+ db.exec("PRAGMA journal_mode = WAL");
80
+ db.exec("PRAGMA busy_timeout = 5000");
76
81
  migrateMemorySchema(db);
77
82
  }
78
83
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-db.js","sourceRoot":"","sources":["../../src/agent/agent-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-db.js","sourceRoot":"","sources":["../../src/agent/agent-db.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,11 @@ export interface BuyerToolDeps {
38
38
  registerPending?: WriteGateDeps["registerPending"];
39
39
  /** agent catalog base URL(`negotiate_buyer_task` 的 A2A 商家发现用)。 */
40
40
  catalog?: string;
41
+ /**
42
+ * 本地开发 loopback 放行(透传给 negotiateWithAgent → AgentDiscovery;
43
+ * 缺省 false,fail-closed)。仅测试/本地联调环境显式传 true。
44
+ */
45
+ allowLoopback?: boolean;
41
46
  /**
42
47
  * kiwi-catalog listing 源(rev1.5 CD #27 Product-first)。注入时挂载
43
48
  * `search_listings` / `shortlist_listing` 工具;缺失时工具不挂载
@@ -20,6 +20,7 @@
20
20
  */
21
21
  import { createHash } from "node:crypto";
22
22
  import { DESTINATION_TYPES, HandoffIdempotencyStore, HandoffEventStore, createHandoffCandidate, defaultUrlSafety, executeHandoff, validateDestination, } from "../../handoff/index.js";
23
+ import { toMinorUnits as losslessToMinorUnits } from "../../protocol/legacy-shopping-negotiation/money.js";
23
24
  import { contentDigest } from "../../negotiation/jcs.js";
24
25
  import { requireScopeCredential } from "../merchant/credential-broker.js";
25
26
  import { NEGOTIATE_DEAL_PRICE_MINOR, NEGOTIATE_DELIVERY_BEFORE, NEGOTIATE_SKU, negotiateWithAgent, summarizeNegotiation, } from "../../a2a/negotiate.js";
@@ -200,6 +201,7 @@ async function executeNegotiateBuyerTask(deps, args) {
200
201
  const sku = intent.category ?? intent.query_text ?? NEGOTIATE_SKU;
201
202
  const result = await negotiateWithAgent({
202
203
  catalog: deps.catalog,
204
+ allowLoopback: deps.allowLoopback === true,
203
205
  // CD #27:listing → owner_agent_id → getRecord → fresh verify 全链,
204
206
  // 与 search_listings 同一注入源(历史教训:只注入 search 面不注入磋商面)。
205
207
  ...(deps.catalogSource !== undefined ? { catalogSource: deps.catalogSource } : {}),
@@ -209,7 +211,12 @@ async function executeNegotiateBuyerTask(deps, args) {
209
211
  sku,
210
212
  quantity: intent.quantity ?? 1,
211
213
  dealPriceMinor: intent.target_unit_price !== undefined
212
- ? Math.round(intent.target_unit_price * 100)
214
+ ? (() => {
215
+ // 审查 BUG-04:目标价 major→minor 必须 lossless——静默舍入会把
216
+ // 错误的目标价写进 buyer 出价(fail-closed:lossy 时用缺省价)。
217
+ const converted = losslessToMinorUnits(intent.target_unit_price, 2);
218
+ return converted.lossless ? converted.amount_minor : NEGOTIATE_DEAL_PRICE_MINOR;
219
+ })()
213
220
  : NEGOTIATE_DEAL_PRICE_MINOR,
214
221
  deliveryBefore: intent.needed_by ?? NEGOTIATE_DELIVERY_BEFORE,
215
222
  senderIdentity: deps.profile.agent_id,
@@ -504,7 +511,7 @@ export function buildBuyerTools(deps) {
504
511
  `约束: ${JSON.stringify(redactConstraints(task.constraints))}`,
505
512
  ...candidates.map((c) => {
506
513
  const reasons = c.rejection_reasons.length > 0 ? ` 排除: ${c.rejection_reasons.join(";")}` : "";
507
- return `· ${c.candidate_id} [${c.candidate_status}/${c.eligibility}] ${c.sku ?? c.external_product_id} score=${c.score?.toFixed(3) ?? "-"}${reasons}`;
514
+ return `· ${c.candidate_id} [${c.candidate_status}/${c.eligibility}] ${c.sku ?? c.external_product_id} score=${c.score?.toFixed(3) ?? "-"}${c.owner_agent_id !== undefined ? ` owner=${c.owner_agent_id}` : ""}${reasons}`;
508
515
  }),
509
516
  ];
510
517
  // 磋商链接(marketplace 或 A2A 直连)——磋商结果对模型可见。
@@ -616,17 +623,24 @@ export function buildBuyerTools(deps) {
616
623
  status: "ready",
617
624
  });
618
625
  }
619
- const cycle = await runSearchCycle({ store, connector, now }, task.task_id, `tool:${uuidv7()}`);
626
+ const cycle = await runSearchCycle({
627
+ store,
628
+ connector,
629
+ now,
630
+ // CD #28:配置 catalog 时任务搜索优先走 catalog listings。
631
+ ...(deps.catalogSource !== undefined ? { catalogSource: deps.catalogSource } : {}),
632
+ }, task.task_id, `tool:${uuidv7()}`);
620
633
  current = cycle.task;
621
634
  if (cycle.outcome === "shortlist_ready") {
622
635
  const lines = cycle.shortlist.map(({ candidate }) => {
623
636
  const top = candidate.score_explanation?.dimensions
624
637
  .slice()
625
638
  .sort((a, b) => b.weight * b.score - a.weight * a.score)[0];
626
- return `· ${candidate.candidate_id} ${candidate.sku}(${(candidate.score ?? 0).toFixed(2)})${top !== undefined ? ` 主要加分: ${top.dimension} ${top.note}` : ""}`;
639
+ return `· ${candidate.candidate_id} ${candidate.sku}(${(candidate.score ?? 0).toFixed(2)})${candidate.owner_agent_id !== undefined ? ` owner=${candidate.owner_agent_id}` : ""}${top !== undefined ? ` 主要加分: ${top.dimension} ${top.note}` : ""}`;
627
640
  });
628
641
  return textResult(`搜索完成,${cycle.shortlist.length} 个候选待你选择:\n${lines.join("\n")}\n` +
629
- `用 select_product_nonbinding 可形成非绑定选定(不是下单)。`, { task_id: task.task_id, status: current.status });
642
+ `用 select_product_nonbinding 可形成非绑定选定(不是下单);` +
643
+ `catalog 候选可先 negotiate_buyer_task 与 owner Agent 磋商。`, { task_id: task.task_id, status: current.status });
630
644
  }
631
645
  if (cycle.outcome === "tracking") {
632
646
  return textResult(`暂无满足条件的候选,已转入跟踪(${task.task_id}),条件满足时会通知你。`, { task_id: task.task_id, status: current.status });
@@ -676,7 +690,12 @@ export function buildBuyerTools(deps) {
676
690
  origin: "user",
677
691
  idempotency_key: `${updated.task_id}:re-search:${uuidv7()}`,
678
692
  });
679
- const cycle = await runSearchCycle({ store, connector, now }, searching.task_id, `tool:${uuidv7()}`);
693
+ const cycle = await runSearchCycle({
694
+ store,
695
+ connector,
696
+ now,
697
+ ...(deps.catalogSource !== undefined ? { catalogSource: deps.catalogSource } : {}),
698
+ }, searching.task_id, `tool:${uuidv7()}`);
680
699
  return textResult(`约束已更新并重新搜索(结果:${cycle.outcome})。`);
681
700
  }
682
701
  return textResult(`约束已更新(任务 ${updated.task_id},当前 ${updated.status}),下次搜索生效。`);
@@ -1022,7 +1041,13 @@ export function buildBuyerTools(deps) {
1022
1041
  if (agreement === undefined) {
1023
1042
  return textResult("任务记录缺少 agreement 快照(磋商未完成或 terms 未持久化)。");
1024
1043
  }
1025
- const destination = validateDestination({ type: p.destination_type, ref: p.destination_ref });
1044
+ // 商家声明的每商品成交入口优先(listing handoff_destination_ref,
1045
+ // shortlistListing 写入任务候选事件):有声明就用商家的,LLM 现编的
1046
+ // destination_ref 不覆盖商家权威声明(跨仓契约 v0.4 §9)。
1047
+ const declared = taskDeclaredHandoff(deps.store.taskEvents(p.task_id));
1048
+ const destination = declared?.ref !== undefined
1049
+ ? validateDestination({ type: declared.type ?? p.destination_type, ref: declared.ref })
1050
+ : validateDestination({ type: p.destination_type, ref: p.destination_ref });
1026
1051
  // 协议级去重:同一磋商、同一目的地已交付过 → 拒绝(LLM 重试会生成
1027
1052
  // 新候选 → 新 digest,绕过 (candidate_id, digest) 幂等键,导致同协议
1028
1053
  // 二次交付/二次 URL 探测、negotiation_to_handoff_rate 虚高)。
@@ -1144,6 +1169,14 @@ export function buildBuyerTools(deps) {
1144
1169
  listing_freshness_state: r.listing.listing_freshness_state,
1145
1170
  authority: r.authority,
1146
1171
  requires_direct_confirmation: r.requires_direct_confirmation,
1172
+ // 商家声明的每商品成交入口透出(P3-11):shortlist_listing /
1173
+ // handoff_agreement 优先用商家声明,不用 LLM 现编目的地。有值才输出。
1174
+ ...(r.listing.handoff_destination_types !== undefined
1175
+ ? { handoff_destination_types: r.listing.handoff_destination_types }
1176
+ : {}),
1177
+ ...(r.listing.handoff_destination_ref !== undefined
1178
+ ? { handoff_destination_ref: r.listing.handoff_destination_ref }
1179
+ : {}),
1147
1180
  }));
1148
1181
  return textResult(JSON.stringify(rows), { count: rows.length });
1149
1182
  }
@@ -1165,6 +1198,15 @@ export function buildBuyerTools(deps) {
1165
1198
  owner_agent_id: { type: "string" },
1166
1199
  title: { type: "string" },
1167
1200
  sku: { type: "string" },
1201
+ handoff_destination_types: {
1202
+ type: "array",
1203
+ items: { type: "string" },
1204
+ description: "商家声明的 KTH destination_type(来自 listing,KTH 词表)",
1205
+ },
1206
+ handoff_destination_ref: {
1207
+ type: "string",
1208
+ description: "商家声明的每商品成交入口(listing handoff_destination_ref;URL 类为 https URL,联系/会话类为 opaque ref)",
1209
+ },
1168
1210
  },
1169
1211
  required: ["task_id", "listing_id", "owner_agent_id"],
1170
1212
  additionalProperties: false,
@@ -1192,6 +1234,9 @@ export function buildBuyerTools(deps) {
1192
1234
  owner_agent_id: p.owner_agent_id,
1193
1235
  listing_title: p.title ?? null,
1194
1236
  source: "kiwi-catalog",
1237
+ // 商家声明的每商品成交入口(handoff_agreement 优先用,不现编)。
1238
+ handoff_destination_types: p.handoff_destination_types ?? null,
1239
+ handoff_destination_ref: p.handoff_destination_ref ?? null,
1195
1240
  }, "model", `shortlist:${p.task_id}:${p.listing_id}:${uuidv7()}`);
1196
1241
  return textResult(JSON.stringify({
1197
1242
  candidate_id: candidate.candidate_id,
@@ -1228,6 +1273,29 @@ export function buildBuyerTools(deps) {
1228
1273
  * 从任务事件流重建 agreement 快照(handoff 的 agreementReader 权威源;
1229
1274
  * 取最新 status_changed 事件的 payload —— negotiate 成功时落 agreed_terms)。
1230
1275
  */
1276
+ /** 从任务事件取商家声明的每商品成交入口(shortlistListing 写入)。 */
1277
+ function taskDeclaredHandoff(events) {
1278
+ for (let i = events.length - 1; i >= 0; i--) {
1279
+ const event = events[i];
1280
+ if (event === undefined)
1281
+ continue;
1282
+ if (event.type !== "candidate_shortlisted")
1283
+ continue;
1284
+ const ref = event.payload.handoff_destination_ref;
1285
+ if (typeof ref === "string" && ref.trim() !== "") {
1286
+ const types = event.payload.handoff_destination_types;
1287
+ return {
1288
+ type: typeof types === "string"
1289
+ ? types
1290
+ : Array.isArray(types) && types.length > 0
1291
+ ? String(types[0])
1292
+ : undefined,
1293
+ ref: ref.trim(),
1294
+ };
1295
+ }
1296
+ }
1297
+ return undefined;
1298
+ }
1231
1299
  function agreementFromTask(events) {
1232
1300
  let merchantDomain;
1233
1301
  for (let i = events.length - 1; i >= 0; i--) {