@harrylabsj/kiwi 0.6.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 (636) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +150 -0
  3. package/contracts/candidate-agent-dto-1.0.README.md +39 -0
  4. package/contracts/candidate-agent-dto-1.0.schema.json +172 -0
  5. package/contracts/interop/kiwi-buyer-message-send.json +43 -0
  6. package/contracts/interop/knp-data-part-examples.json +243 -0
  7. package/contracts/kiwi-catalog/1.0/agent-record.schema.json +78 -0
  8. package/contracts/kiwi-catalog/1.0/listing-record.schema.json +88 -0
  9. package/contracts/kiwi-catalog/1.0/listing-search-result.schema.json +60 -0
  10. package/contracts/negotiation/1.0/schema.json +501 -0
  11. package/contracts/shopping.negotiation/0.1/capabilities.schema.json +47 -0
  12. package/contracts/shopping.negotiation/0.1/decision.schema.json +120 -0
  13. package/contracts/shopping.negotiation/0.1/policy-result.schema.json +52 -0
  14. package/contracts/shopping.negotiation/0.1/snapshot.schema.json +172 -0
  15. package/dist/a2a/client/client.d.ts +33 -0
  16. package/dist/a2a/client/client.js +161 -0
  17. package/dist/a2a/client/client.js.map +1 -0
  18. package/dist/a2a/client/error.d.ts +35 -0
  19. package/dist/a2a/client/error.js +34 -0
  20. package/dist/a2a/client/error.js.map +1 -0
  21. package/dist/a2a/client/index.d.ts +29 -0
  22. package/dist/a2a/client/index.js +26 -0
  23. package/dist/a2a/client/index.js.map +1 -0
  24. package/dist/a2a/client/jsonrpc.d.ts +49 -0
  25. package/dist/a2a/client/jsonrpc.js +85 -0
  26. package/dist/a2a/client/jsonrpc.js.map +1 -0
  27. package/dist/a2a/client/parse.d.ts +18 -0
  28. package/dist/a2a/client/parse.js +134 -0
  29. package/dist/a2a/client/parse.js.map +1 -0
  30. package/dist/a2a/client/types.d.ts +102 -0
  31. package/dist/a2a/client/types.js +26 -0
  32. package/dist/a2a/client/types.js.map +1 -0
  33. package/dist/a2a/client/url-policy.d.ts +44 -0
  34. package/dist/a2a/client/url-policy.js +242 -0
  35. package/dist/a2a/client/url-policy.js.map +1 -0
  36. package/dist/a2a/negotiate.d.ts +68 -0
  37. package/dist/a2a/negotiate.js +288 -0
  38. package/dist/a2a/negotiate.js.map +1 -0
  39. package/dist/a2a/node.d.ts +37 -0
  40. package/dist/a2a/node.js +155 -0
  41. package/dist/a2a/node.js.map +1 -0
  42. package/dist/a2a/server/auth.d.ts +38 -0
  43. package/dist/a2a/server/auth.js +112 -0
  44. package/dist/a2a/server/auth.js.map +1 -0
  45. package/dist/a2a/server/card.d.ts +19 -0
  46. package/dist/a2a/server/card.js +81 -0
  47. package/dist/a2a/server/card.js.map +1 -0
  48. package/dist/a2a/server/errors.d.ts +109 -0
  49. package/dist/a2a/server/errors.js +178 -0
  50. package/dist/a2a/server/errors.js.map +1 -0
  51. package/dist/a2a/server/handler.d.ts +22 -0
  52. package/dist/a2a/server/handler.js +57 -0
  53. package/dist/a2a/server/handler.js.map +1 -0
  54. package/dist/a2a/server/inbound-message.d.ts +37 -0
  55. package/dist/a2a/server/inbound-message.js +104 -0
  56. package/dist/a2a/server/inbound-message.js.map +1 -0
  57. package/dist/a2a/server/index.d.ts +43 -0
  58. package/dist/a2a/server/index.js +42 -0
  59. package/dist/a2a/server/index.js.map +1 -0
  60. package/dist/a2a/server/merchant-handler.d.ts +69 -0
  61. package/dist/a2a/server/merchant-handler.js +316 -0
  62. package/dist/a2a/server/merchant-handler.js.map +1 -0
  63. package/dist/a2a/server/pipeline.d.ts +69 -0
  64. package/dist/a2a/server/pipeline.js +329 -0
  65. package/dist/a2a/server/pipeline.js.map +1 -0
  66. package/dist/a2a/server/server.d.ts +64 -0
  67. package/dist/a2a/server/server.js +420 -0
  68. package/dist/a2a/server/server.js.map +1 -0
  69. package/dist/a2a/server/task-registry.d.ts +31 -0
  70. package/dist/a2a/server/task-registry.js +67 -0
  71. package/dist/a2a/server/task-registry.js.map +1 -0
  72. package/dist/a2a/server/throttle.d.ts +154 -0
  73. package/dist/a2a/server/throttle.js +289 -0
  74. package/dist/a2a/server/throttle.js.map +1 -0
  75. package/dist/a2a/server/types.d.ts +191 -0
  76. package/dist/a2a/server/types.js +17 -0
  77. package/dist/a2a/server/types.js.map +1 -0
  78. package/dist/a2a/server/ucp.d.ts +49 -0
  79. package/dist/a2a/server/ucp.js +85 -0
  80. package/dist/a2a/server/ucp.js.map +1 -0
  81. package/dist/a2a/task/index.d.ts +24 -0
  82. package/dist/a2a/task/index.js +22 -0
  83. package/dist/a2a/task/index.js.map +1 -0
  84. package/dist/a2a/task/ledger.d.ts +48 -0
  85. package/dist/a2a/task/ledger.js +65 -0
  86. package/dist/a2a/task/ledger.js.map +1 -0
  87. package/dist/a2a/task/poller.d.ts +93 -0
  88. package/dist/a2a/task/poller.js +184 -0
  89. package/dist/a2a/task/poller.js.map +1 -0
  90. package/dist/a2a/task/state.d.ts +72 -0
  91. package/dist/a2a/task/state.js +119 -0
  92. package/dist/a2a/task/state.js.map +1 -0
  93. package/dist/a2a/ucp-agent.d.ts +49 -0
  94. package/dist/a2a/ucp-agent.js +78 -0
  95. package/dist/a2a/ucp-agent.js.map +1 -0
  96. package/dist/agent/agent-db.d.ts +31 -0
  97. package/dist/agent/agent-db.js +91 -0
  98. package/dist/agent/agent-db.js.map +1 -0
  99. package/dist/agent/buyer/buyer-tools.d.ts +70 -0
  100. package/dist/agent/buyer/buyer-tools.js +1353 -0
  101. package/dist/agent/buyer/buyer-tools.js.map +1 -0
  102. package/dist/agent/buyer/ranker.d.ts +53 -0
  103. package/dist/agent/buyer/ranker.js +153 -0
  104. package/dist/agent/buyer/ranker.js.map +1 -0
  105. package/dist/agent/buyer/scheduler.d.ts +58 -0
  106. package/dist/agent/buyer/scheduler.js +317 -0
  107. package/dist/agent/buyer/scheduler.js.map +1 -0
  108. package/dist/agent/buyer/search-loop.d.ts +42 -0
  109. package/dist/agent/buyer/search-loop.js +280 -0
  110. package/dist/agent/buyer/search-loop.js.map +1 -0
  111. package/dist/agent/buyer/task-store.d.ts +178 -0
  112. package/dist/agent/buyer/task-store.js +637 -0
  113. package/dist/agent/buyer/task-store.js.map +1 -0
  114. package/dist/agent/buyer/types.d.ts +222 -0
  115. package/dist/agent/buyer/types.js +124 -0
  116. package/dist/agent/buyer/types.js.map +1 -0
  117. package/dist/agent/chat-tools.d.ts +41 -0
  118. package/dist/agent/chat-tools.js +193 -0
  119. package/dist/agent/chat-tools.js.map +1 -0
  120. package/dist/agent/chat-tui.d.ts +49 -0
  121. package/dist/agent/chat-tui.js +314 -0
  122. package/dist/agent/chat-tui.js.map +1 -0
  123. package/dist/agent/connector/fake-connector.d.ts +50 -0
  124. package/dist/agent/connector/fake-connector.js +138 -0
  125. package/dist/agent/connector/fake-connector.js.map +1 -0
  126. package/dist/agent/connector/http-connector.d.ts +49 -0
  127. package/dist/agent/connector/http-connector.js +208 -0
  128. package/dist/agent/connector/http-connector.js.map +1 -0
  129. package/dist/agent/connector/types.d.ts +103 -0
  130. package/dist/agent/connector/types.js +97 -0
  131. package/dist/agent/connector/types.js.map +1 -0
  132. package/dist/agent/fake-chat-model.d.ts +22 -0
  133. package/dist/agent/fake-chat-model.js +134 -0
  134. package/dist/agent/fake-chat-model.js.map +1 -0
  135. package/dist/agent/kernel.d.ts +258 -0
  136. package/dist/agent/kernel.js +1099 -0
  137. package/dist/agent/kernel.js.map +1 -0
  138. package/dist/agent/memory/schema.d.ts +32 -0
  139. package/dist/agent/memory/schema.js +291 -0
  140. package/dist/agent/memory/schema.js.map +1 -0
  141. package/dist/agent/memory/store.d.ts +193 -0
  142. package/dist/agent/memory/store.js +881 -0
  143. package/dist/agent/memory/store.js.map +1 -0
  144. package/dist/agent/memory/types.d.ts +139 -0
  145. package/dist/agent/memory/types.js +119 -0
  146. package/dist/agent/memory/types.js.map +1 -0
  147. package/dist/agent/memory/vault.d.ts +49 -0
  148. package/dist/agent/memory/vault.js +125 -0
  149. package/dist/agent/memory/vault.js.map +1 -0
  150. package/dist/agent/merchant/action-candidate.d.ts +106 -0
  151. package/dist/agent/merchant/action-candidate.js +241 -0
  152. package/dist/agent/merchant/action-candidate.js.map +1 -0
  153. package/dist/agent/merchant/credential-broker.d.ts +67 -0
  154. package/dist/agent/merchant/credential-broker.js +76 -0
  155. package/dist/agent/merchant/credential-broker.js.map +1 -0
  156. package/dist/agent/merchant/fake-merchant-client.d.ts +47 -0
  157. package/dist/agent/merchant/fake-merchant-client.js +143 -0
  158. package/dist/agent/merchant/fake-merchant-client.js.map +1 -0
  159. package/dist/agent/merchant/merchant-client.d.ts +49 -0
  160. package/dist/agent/merchant/merchant-client.js +186 -0
  161. package/dist/agent/merchant/merchant-client.js.map +1 -0
  162. package/dist/agent/merchant/merchant-tools.d.ts +74 -0
  163. package/dist/agent/merchant/merchant-tools.js +582 -0
  164. package/dist/agent/merchant/merchant-tools.js.map +1 -0
  165. package/dist/agent/merchant/types.d.ts +119 -0
  166. package/dist/agent/merchant/types.js +133 -0
  167. package/dist/agent/merchant/types.js.map +1 -0
  168. package/dist/agent/mode.d.ts +32 -0
  169. package/dist/agent/mode.js +34 -0
  170. package/dist/agent/mode.js.map +1 -0
  171. package/dist/agent/negotiation-chat.d.ts +81 -0
  172. package/dist/agent/negotiation-chat.js +330 -0
  173. package/dist/agent/negotiation-chat.js.map +1 -0
  174. package/dist/agent/session.d.ts +22 -0
  175. package/dist/agent/session.js +164 -0
  176. package/dist/agent/session.js.map +1 -0
  177. package/dist/agent/system-prompt.d.ts +26 -0
  178. package/dist/agent/system-prompt.js +77 -0
  179. package/dist/agent/system-prompt.js.map +1 -0
  180. package/dist/agent/write-gate.d.ts +98 -0
  181. package/dist/agent/write-gate.js +76 -0
  182. package/dist/agent/write-gate.js.map +1 -0
  183. package/dist/cli.d.ts +18 -0
  184. package/dist/cli.js +1139 -0
  185. package/dist/cli.js.map +1 -0
  186. package/dist/commerce/data-source.d.ts +88 -0
  187. package/dist/commerce/data-source.js +25 -0
  188. package/dist/commerce/data-source.js.map +1 -0
  189. package/dist/commerce/erp-source.d.ts +51 -0
  190. package/dist/commerce/erp-source.js +184 -0
  191. package/dist/commerce/erp-source.js.map +1 -0
  192. package/dist/commerce/fake-client.d.ts +167 -0
  193. package/dist/commerce/fake-client.js +549 -0
  194. package/dist/commerce/fake-client.js.map +1 -0
  195. package/dist/commerce/http-client.d.ts +73 -0
  196. package/dist/commerce/http-client.js +284 -0
  197. package/dist/commerce/http-client.js.map +1 -0
  198. package/dist/commerce/local-db-source.d.ts +50 -0
  199. package/dist/commerce/local-db-source.js +162 -0
  200. package/dist/commerce/local-db-source.js.map +1 -0
  201. package/dist/commerce/shopping-cli-source.d.ts +57 -0
  202. package/dist/commerce/shopping-cli-source.js +206 -0
  203. package/dist/commerce/shopping-cli-source.js.map +1 -0
  204. package/dist/commerce/types.d.ts +146 -0
  205. package/dist/commerce/types.js +31 -0
  206. package/dist/commerce/types.js.map +1 -0
  207. package/dist/config/profile.d.ts +122 -0
  208. package/dist/config/profile.js +386 -0
  209. package/dist/config/profile.js.map +1 -0
  210. package/dist/contracts/negotiation-schema.d.ts +28 -0
  211. package/dist/contracts/negotiation-schema.js +101 -0
  212. package/dist/contracts/negotiation-schema.js.map +1 -0
  213. package/dist/contracts/schemas.d.ts +31 -0
  214. package/dist/contracts/schemas.js +122 -0
  215. package/dist/contracts/schemas.js.map +1 -0
  216. package/dist/counterparty/a2a-direct/index.d.ts +41 -0
  217. package/dist/counterparty/a2a-direct/index.js +330 -0
  218. package/dist/counterparty/a2a-direct/index.js.map +1 -0
  219. package/dist/counterparty/channel.d.ts +200 -0
  220. package/dist/counterparty/channel.js +61 -0
  221. package/dist/counterparty/channel.js.map +1 -0
  222. package/dist/counterparty/index.d.ts +28 -0
  223. package/dist/counterparty/index.js +24 -0
  224. package/dist/counterparty/index.js.map +1 -0
  225. package/dist/counterparty/platform-api/index.d.ts +41 -0
  226. package/dist/counterparty/platform-api/index.js +65 -0
  227. package/dist/counterparty/platform-api/index.js.map +1 -0
  228. package/dist/counterparty/registry.d.ts +51 -0
  229. package/dist/counterparty/registry.js +71 -0
  230. package/dist/counterparty/registry.js.map +1 -0
  231. package/dist/counterparty/shopping-cli-hosted/index.d.ts +36 -0
  232. package/dist/counterparty/shopping-cli-hosted/index.js +337 -0
  233. package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -0
  234. package/dist/discovery/agent-card/error.d.ts +28 -0
  235. package/dist/discovery/agent-card/error.js +31 -0
  236. package/dist/discovery/agent-card/error.js.map +1 -0
  237. package/dist/discovery/agent-card/extensions.d.ts +20 -0
  238. package/dist/discovery/agent-card/extensions.js +59 -0
  239. package/dist/discovery/agent-card/extensions.js.map +1 -0
  240. package/dist/discovery/agent-card/index.d.ts +29 -0
  241. package/dist/discovery/agent-card/index.js +38 -0
  242. package/dist/discovery/agent-card/index.js.map +1 -0
  243. package/dist/discovery/agent-card/secrets.d.ts +30 -0
  244. package/dist/discovery/agent-card/secrets.js +240 -0
  245. package/dist/discovery/agent-card/secrets.js.map +1 -0
  246. package/dist/discovery/agent-card/types.d.ts +110 -0
  247. package/dist/discovery/agent-card/types.js +37 -0
  248. package/dist/discovery/agent-card/types.js.map +1 -0
  249. package/dist/discovery/agent-card/validate.d.ts +31 -0
  250. package/dist/discovery/agent-card/validate.js +210 -0
  251. package/dist/discovery/agent-card/validate.js.map +1 -0
  252. package/dist/discovery/capability/error.d.ts +23 -0
  253. package/dist/discovery/capability/error.js +28 -0
  254. package/dist/discovery/capability/error.js.map +1 -0
  255. package/dist/discovery/capability/index.d.ts +21 -0
  256. package/dist/discovery/capability/index.js +21 -0
  257. package/dist/discovery/capability/index.js.map +1 -0
  258. package/dist/discovery/capability/intersect.d.ts +56 -0
  259. package/dist/discovery/capability/intersect.js +137 -0
  260. package/dist/discovery/capability/intersect.js.map +1 -0
  261. package/dist/discovery/catalog-source/errors.d.ts +32 -0
  262. package/dist/discovery/catalog-source/errors.js +41 -0
  263. package/dist/discovery/catalog-source/errors.js.map +1 -0
  264. package/dist/discovery/catalog-source/index.d.ts +30 -0
  265. package/dist/discovery/catalog-source/index.js +29 -0
  266. package/dist/discovery/catalog-source/index.js.map +1 -0
  267. package/dist/discovery/catalog-source/kiwi-record.d.ts +183 -0
  268. package/dist/discovery/catalog-source/kiwi-record.js +72 -0
  269. package/dist/discovery/catalog-source/kiwi-record.js.map +1 -0
  270. package/dist/discovery/catalog-source/kiwi-schema.d.ts +33 -0
  271. package/dist/discovery/catalog-source/kiwi-schema.js +106 -0
  272. package/dist/discovery/catalog-source/kiwi-schema.js.map +1 -0
  273. package/dist/discovery/catalog-source/kiwi-source.d.ts +38 -0
  274. package/dist/discovery/catalog-source/kiwi-source.js +318 -0
  275. package/dist/discovery/catalog-source/kiwi-source.js.map +1 -0
  276. package/dist/discovery/catalog-source/register.d.ts +48 -0
  277. package/dist/discovery/catalog-source/register.js +83 -0
  278. package/dist/discovery/catalog-source/register.js.map +1 -0
  279. package/dist/discovery/catalog-source/schema.d.ts +21 -0
  280. package/dist/discovery/catalog-source/schema.js +63 -0
  281. package/dist/discovery/catalog-source/schema.js.map +1 -0
  282. package/dist/discovery/catalog-source/source.d.ts +45 -0
  283. package/dist/discovery/catalog-source/source.js +197 -0
  284. package/dist/discovery/catalog-source/source.js.map +1 -0
  285. package/dist/discovery/catalog-source/types.d.ts +122 -0
  286. package/dist/discovery/catalog-source/types.js +30 -0
  287. package/dist/discovery/catalog-source/types.js.map +1 -0
  288. package/dist/discovery/index.d.ts +25 -0
  289. package/dist/discovery/index.js +25 -0
  290. package/dist/discovery/index.js.map +1 -0
  291. package/dist/discovery/resolve.d.ts +175 -0
  292. package/dist/discovery/resolve.js +367 -0
  293. package/dist/discovery/resolve.js.map +1 -0
  294. package/dist/discovery/ucp/error.d.ts +25 -0
  295. package/dist/discovery/ucp/error.js +27 -0
  296. package/dist/discovery/ucp/error.js.map +1 -0
  297. package/dist/discovery/ucp/index.d.ts +33 -0
  298. package/dist/discovery/ucp/index.js +28 -0
  299. package/dist/discovery/ucp/index.js.map +1 -0
  300. package/dist/discovery/ucp/intersect.d.ts +148 -0
  301. package/dist/discovery/ucp/intersect.js +312 -0
  302. package/dist/discovery/ucp/intersect.js.map +1 -0
  303. package/dist/discovery/ucp/resolver.d.ts +62 -0
  304. package/dist/discovery/ucp/resolver.js +214 -0
  305. package/dist/discovery/ucp/resolver.js.map +1 -0
  306. package/dist/discovery/ucp/types.d.ts +97 -0
  307. package/dist/discovery/ucp/types.js +103 -0
  308. package/dist/discovery/ucp/types.js.map +1 -0
  309. package/dist/discovery/ucp/validate.d.ts +38 -0
  310. package/dist/discovery/ucp/validate.js +232 -0
  311. package/dist/discovery/ucp/validate.js.map +1 -0
  312. package/dist/discovery/ucp/vendor.d.ts +60 -0
  313. package/dist/discovery/ucp/vendor.js +61 -0
  314. package/dist/discovery/ucp/vendor.js.map +1 -0
  315. package/dist/doctor.d.ts +26 -0
  316. package/dist/doctor.js +113 -0
  317. package/dist/doctor.js.map +1 -0
  318. package/dist/exit-codes.d.ts +26 -0
  319. package/dist/exit-codes.js +27 -0
  320. package/dist/exit-codes.js.map +1 -0
  321. package/dist/fanout/disclosure.d.ts +138 -0
  322. package/dist/fanout/disclosure.js +188 -0
  323. package/dist/fanout/disclosure.js.map +1 -0
  324. package/dist/fanout/index.d.ts +32 -0
  325. package/dist/fanout/index.js +30 -0
  326. package/dist/fanout/index.js.map +1 -0
  327. package/dist/fanout/orchestrator.d.ts +153 -0
  328. package/dist/fanout/orchestrator.js +439 -0
  329. package/dist/fanout/orchestrator.js.map +1 -0
  330. package/dist/fanout/policy.d.ts +128 -0
  331. package/dist/fanout/policy.js +130 -0
  332. package/dist/fanout/policy.js.map +1 -0
  333. package/dist/handoff/acp-commerce.d.ts +58 -0
  334. package/dist/handoff/acp-commerce.js +69 -0
  335. package/dist/handoff/acp-commerce.js.map +1 -0
  336. package/dist/handoff/authorization.d.ts +127 -0
  337. package/dist/handoff/authorization.js +107 -0
  338. package/dist/handoff/authorization.js.map +1 -0
  339. package/dist/handoff/candidate.d.ts +94 -0
  340. package/dist/handoff/candidate.js +172 -0
  341. package/dist/handoff/candidate.js.map +1 -0
  342. package/dist/handoff/channel.d.ts +88 -0
  343. package/dist/handoff/channel.js +189 -0
  344. package/dist/handoff/channel.js.map +1 -0
  345. package/dist/handoff/completion.d.ts +44 -0
  346. package/dist/handoff/completion.js +136 -0
  347. package/dist/handoff/completion.js.map +1 -0
  348. package/dist/handoff/delivery.d.ts +59 -0
  349. package/dist/handoff/delivery.js +185 -0
  350. package/dist/handoff/delivery.js.map +1 -0
  351. package/dist/handoff/destination.d.ts +39 -0
  352. package/dist/handoff/destination.js +99 -0
  353. package/dist/handoff/destination.js.map +1 -0
  354. package/dist/handoff/errors.d.ts +34 -0
  355. package/dist/handoff/errors.js +47 -0
  356. package/dist/handoff/errors.js.map +1 -0
  357. package/dist/handoff/idempotency.d.ts +51 -0
  358. package/dist/handoff/idempotency.js +168 -0
  359. package/dist/handoff/idempotency.js.map +1 -0
  360. package/dist/handoff/index.d.ts +46 -0
  361. package/dist/handoff/index.js +48 -0
  362. package/dist/handoff/index.js.map +1 -0
  363. package/dist/handoff/ledger.d.ts +94 -0
  364. package/dist/handoff/ledger.js +195 -0
  365. package/dist/handoff/ledger.js.map +1 -0
  366. package/dist/handoff/lifecycle.d.ts +29 -0
  367. package/dist/handoff/lifecycle.js +102 -0
  368. package/dist/handoff/lifecycle.js.map +1 -0
  369. package/dist/handoff/metrics.d.ts +56 -0
  370. package/dist/handoff/metrics.js +78 -0
  371. package/dist/handoff/metrics.js.map +1 -0
  372. package/dist/handoff/operator-approval.d.ts +143 -0
  373. package/dist/handoff/operator-approval.js +287 -0
  374. package/dist/handoff/operator-approval.js.map +1 -0
  375. package/dist/handoff/order-record.d.ts +104 -0
  376. package/dist/handoff/order-record.js +235 -0
  377. package/dist/handoff/order-record.js.map +1 -0
  378. package/dist/handoff/package.d.ts +102 -0
  379. package/dist/handoff/package.js +132 -0
  380. package/dist/handoff/package.js.map +1 -0
  381. package/dist/handoff/transaction.d.ts +96 -0
  382. package/dist/handoff/transaction.js +263 -0
  383. package/dist/handoff/transaction.js.map +1 -0
  384. package/dist/handoff/ucp-checkout/cart-channel.d.ts +111 -0
  385. package/dist/handoff/ucp-checkout/cart-channel.js +370 -0
  386. package/dist/handoff/ucp-checkout/cart-channel.js.map +1 -0
  387. package/dist/handoff/ucp-checkout/cart-parse.d.ts +22 -0
  388. package/dist/handoff/ucp-checkout/cart-parse.js +102 -0
  389. package/dist/handoff/ucp-checkout/cart-parse.js.map +1 -0
  390. package/dist/handoff/ucp-checkout/cart-types.d.ts +93 -0
  391. package/dist/handoff/ucp-checkout/cart-types.js +38 -0
  392. package/dist/handoff/ucp-checkout/cart-types.js.map +1 -0
  393. package/dist/handoff/ucp-checkout/channel.d.ts +159 -0
  394. package/dist/handoff/ucp-checkout/channel.js +636 -0
  395. package/dist/handoff/ucp-checkout/channel.js.map +1 -0
  396. package/dist/handoff/ucp-checkout/client.d.ts +88 -0
  397. package/dist/handoff/ucp-checkout/client.js +228 -0
  398. package/dist/handoff/ucp-checkout/client.js.map +1 -0
  399. package/dist/handoff/ucp-checkout/endpoint.d.ts +36 -0
  400. package/dist/handoff/ucp-checkout/endpoint.js +145 -0
  401. package/dist/handoff/ucp-checkout/endpoint.js.map +1 -0
  402. package/dist/handoff/ucp-checkout/index.d.ts +35 -0
  403. package/dist/handoff/ucp-checkout/index.js +36 -0
  404. package/dist/handoff/ucp-checkout/index.js.map +1 -0
  405. package/dist/handoff/ucp-checkout/parse.d.ts +71 -0
  406. package/dist/handoff/ucp-checkout/parse.js +349 -0
  407. package/dist/handoff/ucp-checkout/parse.js.map +1 -0
  408. package/dist/handoff/ucp-checkout/totals.d.ts +41 -0
  409. package/dist/handoff/ucp-checkout/totals.js +36 -0
  410. package/dist/handoff/ucp-checkout/totals.js.map +1 -0
  411. package/dist/handoff/ucp-checkout/types.d.ts +149 -0
  412. package/dist/handoff/ucp-checkout/types.js +58 -0
  413. package/dist/handoff/ucp-checkout/types.js.map +1 -0
  414. package/dist/handoff/url-safety.d.ts +44 -0
  415. package/dist/handoff/url-safety.js +121 -0
  416. package/dist/handoff/url-safety.js.map +1 -0
  417. package/dist/i18n.d.ts +24 -0
  418. package/dist/i18n.js +27 -0
  419. package/dist/i18n.js.map +1 -0
  420. package/dist/negotiation/action-candidate.d.ts +97 -0
  421. package/dist/negotiation/action-candidate.js +160 -0
  422. package/dist/negotiation/action-candidate.js.map +1 -0
  423. package/dist/negotiation/condition/evaluator.d.ts +36 -0
  424. package/dist/negotiation/condition/evaluator.js +123 -0
  425. package/dist/negotiation/condition/evaluator.js.map +1 -0
  426. package/dist/negotiation/context-map/index.d.ts +23 -0
  427. package/dist/negotiation/context-map/index.js +22 -0
  428. package/dist/negotiation/context-map/index.js.map +1 -0
  429. package/dist/negotiation/context-map/store.d.ts +51 -0
  430. package/dist/negotiation/context-map/store.js +186 -0
  431. package/dist/negotiation/context-map/store.js.map +1 -0
  432. package/dist/negotiation/context-map/types.d.ts +29 -0
  433. package/dist/negotiation/context-map/types.js +57 -0
  434. package/dist/negotiation/context-map/types.js.map +1 -0
  435. package/dist/negotiation/domain/common.d.ts +95 -0
  436. package/dist/negotiation/domain/common.js +216 -0
  437. package/dist/negotiation/domain/common.js.map +1 -0
  438. package/dist/negotiation/domain/envelope.d.ts +55 -0
  439. package/dist/negotiation/domain/envelope.js +110 -0
  440. package/dist/negotiation/domain/envelope.js.map +1 -0
  441. package/dist/negotiation/domain/identifiers.d.ts +65 -0
  442. package/dist/negotiation/domain/identifiers.js +130 -0
  443. package/dist/negotiation/domain/identifiers.js.map +1 -0
  444. package/dist/negotiation/domain/objects.d.ts +149 -0
  445. package/dist/negotiation/domain/objects.js +335 -0
  446. package/dist/negotiation/domain/objects.js.map +1 -0
  447. package/dist/negotiation/idempotency/index.d.ts +26 -0
  448. package/dist/negotiation/idempotency/index.js +25 -0
  449. package/dist/negotiation/idempotency/index.js.map +1 -0
  450. package/dist/negotiation/idempotency/store.d.ts +52 -0
  451. package/dist/negotiation/idempotency/store.js +189 -0
  452. package/dist/negotiation/idempotency/store.js.map +1 -0
  453. package/dist/negotiation/idempotency/types.d.ts +102 -0
  454. package/dist/negotiation/idempotency/types.js +47 -0
  455. package/dist/negotiation/idempotency/types.js.map +1 -0
  456. package/dist/negotiation/jcs.d.ts +21 -0
  457. package/dist/negotiation/jcs.js +114 -0
  458. package/dist/negotiation/jcs.js.map +1 -0
  459. package/dist/negotiation/ledger/event.d.ts +142 -0
  460. package/dist/negotiation/ledger/event.js +206 -0
  461. package/dist/negotiation/ledger/event.js.map +1 -0
  462. package/dist/negotiation/ledger/index.d.ts +26 -0
  463. package/dist/negotiation/ledger/index.js +25 -0
  464. package/dist/negotiation/ledger/index.js.map +1 -0
  465. package/dist/negotiation/ledger/store.d.ts +97 -0
  466. package/dist/negotiation/ledger/store.js +338 -0
  467. package/dist/negotiation/ledger/store.js.map +1 -0
  468. package/dist/negotiation/prompt.d.ts +34 -0
  469. package/dist/negotiation/prompt.js +113 -0
  470. package/dist/negotiation/prompt.js.map +1 -0
  471. package/dist/negotiation/recovery/index.d.ts +26 -0
  472. package/dist/negotiation/recovery/index.js +24 -0
  473. package/dist/negotiation/recovery/index.js.map +1 -0
  474. package/dist/negotiation/recovery/outbound.d.ts +49 -0
  475. package/dist/negotiation/recovery/outbound.js +34 -0
  476. package/dist/negotiation/recovery/outbound.js.map +1 -0
  477. package/dist/negotiation/recovery/recover.d.ts +59 -0
  478. package/dist/negotiation/recovery/recover.js +486 -0
  479. package/dist/negotiation/recovery/recover.js.map +1 -0
  480. package/dist/negotiation/recovery/types.d.ts +85 -0
  481. package/dist/negotiation/recovery/types.js +17 -0
  482. package/dist/negotiation/recovery/types.js.map +1 -0
  483. package/dist/negotiation/state/phase.d.ts +70 -0
  484. package/dist/negotiation/state/phase.js +200 -0
  485. package/dist/negotiation/state/phase.js.map +1 -0
  486. package/dist/negotiation/types.d.ts +139 -0
  487. package/dist/negotiation/types.js +24 -0
  488. package/dist/negotiation/types.js.map +1 -0
  489. package/dist/net/safe-http.d.ts +54 -0
  490. package/dist/net/safe-http.js +116 -0
  491. package/dist/net/safe-http.js.map +1 -0
  492. package/dist/operator/controller.d.ts +181 -0
  493. package/dist/operator/controller.js +784 -0
  494. package/dist/operator/controller.js.map +1 -0
  495. package/dist/operator/runner.d.ts +128 -0
  496. package/dist/operator/runner.js +248 -0
  497. package/dist/operator/runner.js.map +1 -0
  498. package/dist/operator/store.d.ts +39 -0
  499. package/dist/operator/store.js +169 -0
  500. package/dist/operator/store.js.map +1 -0
  501. package/dist/operator/strategy.d.ts +54 -0
  502. package/dist/operator/strategy.js +249 -0
  503. package/dist/operator/strategy.js.map +1 -0
  504. package/dist/operator/tui.d.ts +27 -0
  505. package/dist/operator/tui.js +395 -0
  506. package/dist/operator/tui.js.map +1 -0
  507. package/dist/operator/types.d.ts +224 -0
  508. package/dist/operator/types.js +17 -0
  509. package/dist/operator/types.js.map +1 -0
  510. package/dist/product-buyer.d.ts +74 -0
  511. package/dist/product-buyer.js +161 -0
  512. package/dist/product-buyer.js.map +1 -0
  513. package/dist/product-cli.d.ts +56 -0
  514. package/dist/product-cli.js +175 -0
  515. package/dist/product-cli.js.map +1 -0
  516. package/dist/product-compat.d.ts +50 -0
  517. package/dist/product-compat.js +63 -0
  518. package/dist/product-compat.js.map +1 -0
  519. package/dist/product-init.d.ts +73 -0
  520. package/dist/product-init.js +203 -0
  521. package/dist/product-init.js.map +1 -0
  522. package/dist/product-publish.d.ts +85 -0
  523. package/dist/product-publish.js +216 -0
  524. package/dist/product-publish.js.map +1 -0
  525. package/dist/protocol/legacy-shopping-negotiation/adapter.d.ts +42 -0
  526. package/dist/protocol/legacy-shopping-negotiation/adapter.js +561 -0
  527. package/dist/protocol/legacy-shopping-negotiation/adapter.js.map +1 -0
  528. package/dist/protocol/legacy-shopping-negotiation/mapping.d.ts +78 -0
  529. package/dist/protocol/legacy-shopping-negotiation/mapping.js +321 -0
  530. package/dist/protocol/legacy-shopping-negotiation/mapping.js.map +1 -0
  531. package/dist/protocol/legacy-shopping-negotiation/money.d.ts +49 -0
  532. package/dist/protocol/legacy-shopping-negotiation/money.js +70 -0
  533. package/dist/protocol/legacy-shopping-negotiation/money.js.map +1 -0
  534. package/dist/protocol/legacy-shopping-negotiation/types.d.ts +107 -0
  535. package/dist/protocol/legacy-shopping-negotiation/types.js +34 -0
  536. package/dist/protocol/legacy-shopping-negotiation/types.js.map +1 -0
  537. package/dist/runtime/buyer-policy.d.ts +58 -0
  538. package/dist/runtime/buyer-policy.js +89 -0
  539. package/dist/runtime/buyer-policy.js.map +1 -0
  540. package/dist/runtime/fake-model.d.ts +77 -0
  541. package/dist/runtime/fake-model.js +307 -0
  542. package/dist/runtime/fake-model.js.map +1 -0
  543. package/dist/runtime/foreground.d.ts +56 -0
  544. package/dist/runtime/foreground.js +97 -0
  545. package/dist/runtime/foreground.js.map +1 -0
  546. package/dist/runtime/heartbeat.d.ts +36 -0
  547. package/dist/runtime/heartbeat.js +49 -0
  548. package/dist/runtime/heartbeat.js.map +1 -0
  549. package/dist/runtime/merchant-turn.d.ts +35 -0
  550. package/dist/runtime/merchant-turn.js +20 -0
  551. package/dist/runtime/merchant-turn.js.map +1 -0
  552. package/dist/runtime/model.d.ts +40 -0
  553. package/dist/runtime/model.js +86 -0
  554. package/dist/runtime/model.js.map +1 -0
  555. package/dist/runtime/negotiation-turn.d.ts +101 -0
  556. package/dist/runtime/negotiation-turn.js +317 -0
  557. package/dist/runtime/negotiation-turn.js.map +1 -0
  558. package/dist/runtime/tools.d.ts +64 -0
  559. package/dist/runtime/tools.js +236 -0
  560. package/dist/runtime/tools.js.map +1 -0
  561. package/dist/supervisor/init.d.ts +31 -0
  562. package/dist/supervisor/init.js +222 -0
  563. package/dist/supervisor/init.js.map +1 -0
  564. package/dist/supervisor/logs.d.ts +28 -0
  565. package/dist/supervisor/logs.js +101 -0
  566. package/dist/supervisor/logs.js.map +1 -0
  567. package/dist/supervisor/manage.d.ts +72 -0
  568. package/dist/supervisor/manage.js +419 -0
  569. package/dist/supervisor/manage.js.map +1 -0
  570. package/dist/supervisor/manifest.d.ts +69 -0
  571. package/dist/supervisor/manifest.js +209 -0
  572. package/dist/supervisor/manifest.js.map +1 -0
  573. package/dist/supervisor/stack-config.d.ts +79 -0
  574. package/dist/supervisor/stack-config.js +262 -0
  575. package/dist/supervisor/stack-config.js.map +1 -0
  576. package/dist/supervisor/wrapper.d.ts +17 -0
  577. package/dist/supervisor/wrapper.js +138 -0
  578. package/dist/supervisor/wrapper.js.map +1 -0
  579. package/dist/trust/identity/auth-verifier.d.ts +96 -0
  580. package/dist/trust/identity/auth-verifier.js +166 -0
  581. package/dist/trust/identity/auth-verifier.js.map +1 -0
  582. package/dist/trust/identity/identity-binding.d.ts +63 -0
  583. package/dist/trust/identity/identity-binding.js +59 -0
  584. package/dist/trust/identity/identity-binding.js.map +1 -0
  585. package/dist/trust/identity/index.d.ts +38 -0
  586. package/dist/trust/identity/index.js +31 -0
  587. package/dist/trust/identity/index.js.map +1 -0
  588. package/dist/trust/identity/jws.d.ts +64 -0
  589. package/dist/trust/identity/jws.js +178 -0
  590. package/dist/trust/identity/jws.js.map +1 -0
  591. package/dist/trust/identity/keys.d.ts +71 -0
  592. package/dist/trust/identity/keys.js +118 -0
  593. package/dist/trust/identity/keys.js.map +1 -0
  594. package/dist/trust/identity/message-signature.d.ts +105 -0
  595. package/dist/trust/identity/message-signature.js +297 -0
  596. package/dist/trust/identity/message-signature.js.map +1 -0
  597. package/dist/trust/identity/nonce.d.ts +45 -0
  598. package/dist/trust/identity/nonce.js +50 -0
  599. package/dist/trust/identity/nonce.js.map +1 -0
  600. package/dist/trust/identity/signature-base.d.ts +84 -0
  601. package/dist/trust/identity/signature-base.js +261 -0
  602. package/dist/trust/identity/signature-base.js.map +1 -0
  603. package/dist/trust/identity/trust-policy.d.ts +92 -0
  604. package/dist/trust/identity/trust-policy.js +95 -0
  605. package/dist/trust/identity/trust-policy.js.map +1 -0
  606. package/dist/trust/index.d.ts +21 -0
  607. package/dist/trust/index.js +22 -0
  608. package/dist/trust/index.js.map +1 -0
  609. package/dist/trust/records/evaluator.d.ts +76 -0
  610. package/dist/trust/records/evaluator.js +122 -0
  611. package/dist/trust/records/evaluator.js.map +1 -0
  612. package/dist/trust/records/index.d.ts +28 -0
  613. package/dist/trust/records/index.js +26 -0
  614. package/dist/trust/records/index.js.map +1 -0
  615. package/dist/trust/records/store.d.ts +75 -0
  616. package/dist/trust/records/store.js +339 -0
  617. package/dist/trust/records/store.js.map +1 -0
  618. package/dist/trust/records/types.d.ts +159 -0
  619. package/dist/trust/records/types.js +40 -0
  620. package/dist/trust/records/types.js.map +1 -0
  621. package/dist/tui/banner.d.ts +46 -0
  622. package/dist/tui/banner.js +99 -0
  623. package/dist/tui/banner.js.map +1 -0
  624. package/dist/tui/styles.d.ts +70 -0
  625. package/dist/tui/styles.js +197 -0
  626. package/dist/tui/styles.js.map +1 -0
  627. package/dist/tui/theme.d.ts +63 -0
  628. package/dist/tui/theme.js +136 -0
  629. package/dist/tui/theme.js.map +1 -0
  630. package/examples/profiles/buyer.deepseek.yaml +34 -0
  631. package/examples/profiles/buyer.fake.yaml +36 -0
  632. package/examples/profiles/buyer.local.yaml +40 -0
  633. package/examples/profiles/merchant.deepseek.yaml +32 -0
  634. package/examples/profiles/merchant.fake.yaml +31 -0
  635. package/examples/profiles/merchant.local.yaml +34 -0
  636. package/package.json +55 -0
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Copyright 2026 harrylabsj
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { buildNegotiationChatTools, writeGateText } from "../negotiation-chat.js";
17
+ import { requireScopeCredential } from "./credential-broker.js";
18
+ import { MerchantClientError } from "./types.js";
19
+ import { routeWriteCandidate } from "../write-gate.js";
20
+ function textResult(text, details) {
21
+ return { content: [{ type: "text", text }], details };
22
+ }
23
+ function errorText(err) {
24
+ if (err instanceof MerchantClientError) {
25
+ const kindLabel = {
26
+ auth: "凭据被拒或缺失",
27
+ not_found: "未找到",
28
+ validation: "参数或服务校验失败",
29
+ transient: "暂时性错误",
30
+ };
31
+ return `商家操作失败(${kindLabel[err.kind] ?? err.kind}):${err.message}`;
32
+ }
33
+ return `商家操作失败:${err instanceof Error ? err.message : String(err)}`;
34
+ }
35
+ function optString(value) {
36
+ return typeof value === "string" && value !== "" ? value : undefined;
37
+ }
38
+ function parseProductInput(value) {
39
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
40
+ throw new MerchantClientError("validation", "product 必须是对象");
41
+ }
42
+ const v = value;
43
+ const sku = optString(v.sku);
44
+ const title = optString(v.title);
45
+ const price = typeof v.price === "number" && Number.isFinite(v.price) ? v.price : undefined;
46
+ const stock = typeof v.stock === "number" && Number.isInteger(v.stock) ? v.stock : undefined;
47
+ const merchantId = optString(v.merchant_id);
48
+ if (sku === undefined || title === undefined || price === undefined || stock === undefined) {
49
+ throw new MerchantClientError("validation", "product 需要 sku / title / price / stock(merchant_id 可选)");
50
+ }
51
+ return {
52
+ sku,
53
+ merchant_id: merchantId ?? "",
54
+ title,
55
+ price,
56
+ stock,
57
+ ...(optString(v.currency) !== undefined ? { currency: v.currency } : {}),
58
+ ...(optString(v.category) !== undefined ? { category: v.category } : {}),
59
+ ...(Array.isArray(v.tags) ? { tags: v.tags.map(String) } : {}),
60
+ ...(optString(v.description) !== undefined ? { description: v.description } : {}),
61
+ ...(Array.isArray(v.delivery_attributes)
62
+ ? { delivery_attributes: v.delivery_attributes.map(String) }
63
+ : {}),
64
+ };
65
+ }
66
+ function parseChanges(value) {
67
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
68
+ throw new MerchantClientError("validation", "changes 必须是对象");
69
+ }
70
+ const v = value;
71
+ const patch = {};
72
+ if (typeof v.title === "string")
73
+ patch.title = v.title;
74
+ if (typeof v.price === "number" && Number.isFinite(v.price))
75
+ patch.price = v.price;
76
+ if (typeof v.stock === "number" && Number.isInteger(v.stock))
77
+ patch.stock = v.stock;
78
+ if (typeof v.currency === "string")
79
+ patch.currency = v.currency;
80
+ if (typeof v.category === "string")
81
+ patch.category = v.category;
82
+ if (Array.isArray(v.tags))
83
+ patch.tags = v.tags.map(String);
84
+ if (typeof v.description === "string")
85
+ patch.description = v.description;
86
+ if (Array.isArray(v.delivery_attributes))
87
+ patch.delivery_attributes = v.delivery_attributes.map(String);
88
+ if (typeof v.paused === "boolean")
89
+ patch.paused = v.paused;
90
+ return patch;
91
+ }
92
+ /** Public precondition snapshot of a product (no private values). */
93
+ function productPreconditions(product) {
94
+ return {
95
+ sku: product.sku,
96
+ merchant_id: product.merchant_id,
97
+ title: product.title,
98
+ price: product.price,
99
+ stock: product.stock,
100
+ paused: product.paused,
101
+ };
102
+ }
103
+ /**
104
+ * Autopilot escalation for catalog/inventory writes: anything outside the
105
+ * profile HardPolicy (private floor, max auto discount) needs a human. The
106
+ * reason never contains the private number.
107
+ */
108
+ function catalogEscalation(profile, args, current) {
109
+ const floor = profile.merchant_policy?.min_unit_price_private;
110
+ const maxDiscount = profile.merchant_policy?.max_auto_discount_percent;
111
+ const proposedPrice = typeof args.price === "number"
112
+ ? args.price
113
+ : typeof args.changes?.price === "number"
114
+ ? Number(args.changes.price)
115
+ : undefined;
116
+ if (floor !== undefined && proposedPrice !== undefined && proposedPrice < floor) {
117
+ return "新价格低于私有底价,需要人工批准。";
118
+ }
119
+ if (maxDiscount !== undefined && current !== undefined && proposedPrice !== undefined) {
120
+ const floorDiscount = current.price * (1 - maxDiscount / 100);
121
+ if (proposedPrice < floorDiscount) {
122
+ return "折扣超过最大自动折扣授权,需要人工批准。";
123
+ }
124
+ }
125
+ return undefined;
126
+ }
127
+ export function buildMerchantTools(deps) {
128
+ const { profile, merchantClient, broker, approvals, mode, now } = deps;
129
+ const ownerId = profile.owner_id;
130
+ const writeGateDeps = { mode, approvals, profile, now, registerPending: deps.registerPending };
131
+ // ---- read-only tools -------------------------------------------------------
132
+ const listProducts = {
133
+ name: "list_catalog_products",
134
+ label: "列出商品",
135
+ description: "列出商家自己的目录商品(只读;目录数据来自公开搜索端点,按本商家 owner 过滤)。",
136
+ parameters: {
137
+ type: "object",
138
+ properties: {},
139
+ additionalProperties: false,
140
+ },
141
+ execute: async (_id, _params) => {
142
+ try {
143
+ // Always the merchant's own catalog — never an arbitrary merchant_id.
144
+ if (deps.dataSource !== undefined) {
145
+ const facts = await deps.dataSource.getProducts({ limit: 100 });
146
+ const rows = facts.map((p) => ({
147
+ sku: p.sku,
148
+ title: p.title ?? "",
149
+ price: p.price_minor ?? 0,
150
+ stock: p.stock ?? null,
151
+ paused: false,
152
+ }));
153
+ return textResult(rows.length === 0 ? "目录为空。" : JSON.stringify(rows), {
154
+ count: rows.length,
155
+ source: "data-source",
156
+ });
157
+ }
158
+ const products = await merchantClient.listProducts(ownerId);
159
+ const rows = products.map((p) => ({
160
+ sku: p.sku,
161
+ title: p.title,
162
+ price: p.price,
163
+ stock: p.stock,
164
+ paused: p.paused,
165
+ }));
166
+ return textResult(rows.length === 0 ? "目录为空。" : JSON.stringify(rows), { count: rows.length });
167
+ }
168
+ catch (err) {
169
+ return textResult(errorText(err));
170
+ }
171
+ },
172
+ };
173
+ const getProduct = {
174
+ name: "get_catalog_product",
175
+ label: "读取商品",
176
+ description: "按 SKU 读取商家目录中的一个商品(只读)。",
177
+ parameters: {
178
+ type: "object",
179
+ properties: { sku: { type: "string" } },
180
+ required: ["sku"],
181
+ additionalProperties: false,
182
+ },
183
+ execute: async (_id, params) => {
184
+ try {
185
+ const { sku } = params;
186
+ const product = await merchantClient.getProduct(sku);
187
+ return textResult(JSON.stringify(productPreconditions(product)));
188
+ }
189
+ catch (err) {
190
+ return textResult(errorText(err));
191
+ }
192
+ },
193
+ };
194
+ const inventorySnapshot = {
195
+ name: "get_inventory_snapshot",
196
+ label: "库存快照",
197
+ description: "读取一个商品的当前库存快照(含观察时间,不是永恒事实)。",
198
+ parameters: {
199
+ type: "object",
200
+ properties: { sku: { type: "string" } },
201
+ required: ["sku"],
202
+ additionalProperties: false,
203
+ },
204
+ execute: async (_id, params) => {
205
+ try {
206
+ const { sku } = params;
207
+ const snapshot = await merchantClient.getInventorySnapshot(sku);
208
+ return textResult(JSON.stringify(snapshot));
209
+ }
210
+ catch (err) {
211
+ return textResult(errorText(err));
212
+ }
213
+ },
214
+ };
215
+ const listConsultations = {
216
+ name: "list_incoming_consultations",
217
+ label: "收到的咨询",
218
+ description: "列出商家收到的进行中咨询(磋商会话),含最新一条消息。",
219
+ parameters: {
220
+ type: "object",
221
+ properties: {},
222
+ additionalProperties: false,
223
+ },
224
+ execute: async (_id, _params) => {
225
+ try {
226
+ // Always this merchant's own consultations — never a caller-supplied id.
227
+ const consultations = await merchantClient.listIncomingConsultations(ownerId);
228
+ if (consultations.length === 0)
229
+ return textResult("当前没有进行中的咨询。");
230
+ return textResult(consultations
231
+ .map((c) => `· ${c.conversation_id} [${c.status}]${c.sku !== undefined ? ` ${c.sku}` : ""}:${c.last_message.slice(0, 120)}`)
232
+ .join("\n"), { count: consultations.length });
233
+ }
234
+ catch (err) {
235
+ return textResult(errorText(err));
236
+ }
237
+ },
238
+ };
239
+ const humanReviewQueue = {
240
+ name: "get_human_review_queue",
241
+ label: "人工处理队列",
242
+ description: "查看商家需要人工处理的队列(升级、超预算/超底价、转人工的磋商)。",
243
+ parameters: {
244
+ type: "object",
245
+ properties: {},
246
+ additionalProperties: false,
247
+ },
248
+ execute: async (_id, _params) => {
249
+ try {
250
+ const reviews = await merchantClient.getHumanReviewQueue(ownerId);
251
+ if (reviews.length === 0)
252
+ return textResult("人工处理队列为空。");
253
+ return textResult(reviews
254
+ .map((r) => `· #${String(r.review_id)} ${r.sku} [${r.severity}] ${r.reason}(${r.conversation_id})`)
255
+ .join("\n"), { count: reviews.length });
256
+ }
257
+ catch (err) {
258
+ return textResult(errorText(err));
259
+ }
260
+ },
261
+ };
262
+ // ---- write tools (approval-routed) -----------------------------------------
263
+ const createProduct = {
264
+ name: "create_product",
265
+ label: "创建商品",
266
+ description: "创建新商品(写操作)。需要 catalog 作用域凭据;supervised 模式生成审批候选,批准后才真正创建。",
267
+ parameters: {
268
+ type: "object",
269
+ properties: {
270
+ product: {
271
+ type: "object",
272
+ description: "sku/title/price/stock 必填;currency/category/tags/description 可选",
273
+ },
274
+ },
275
+ required: ["product"],
276
+ additionalProperties: false,
277
+ },
278
+ execute: async (_id, params) => {
279
+ const credential = requireScopeCredential(broker, "catalog");
280
+ if (!credential.ok)
281
+ return textResult(credential.reason);
282
+ try {
283
+ const input = parseProductInput(params.product);
284
+ // A merchant's own catalog write always belongs to THIS merchant: an
285
+ // omitted merchant_id must default to the profile owner, never empty.
286
+ const product = input.merchant_id === "" ? { ...input, merchant_id: ownerId } : input;
287
+ const args = { product: { ...product } };
288
+ const preconditions = { sku: product.sku, exists: false };
289
+ const escalation = catalogEscalation(profile, { ...product }, undefined);
290
+ const outcome = await routeWriteCandidate(writeGateDeps, {
291
+ tool: "create_product",
292
+ arguments: args,
293
+ preconditions,
294
+ risk: "write_catalog",
295
+ execute: (approvedArgs) => {
296
+ const p = approvedArgs.product;
297
+ return merchantClient.createProduct(p);
298
+ },
299
+ // Re-read existence: if another worker created the SKU meanwhile,
300
+ // the old approval is stale and the create is superseded.
301
+ readPreconditions: async () => {
302
+ let exists = false;
303
+ try {
304
+ await merchantClient.getProduct(product.sku);
305
+ exists = true;
306
+ }
307
+ catch {
308
+ exists = false;
309
+ }
310
+ return { sku: product.sku, exists };
311
+ },
312
+ autopilotEscalation: () => escalation,
313
+ });
314
+ return writeGateText(outcome);
315
+ }
316
+ catch (err) {
317
+ return textResult(errorText(err));
318
+ }
319
+ },
320
+ };
321
+ const updateProduct = {
322
+ name: "update_product",
323
+ label: "更新商品",
324
+ description: "更新商品的公开字段(title/price/stock/description 等,写操作)。supervised 模式生成审批候选。",
325
+ parameters: {
326
+ type: "object",
327
+ properties: {
328
+ sku: { type: "string" },
329
+ changes: { type: "object", description: "要修改的字段" },
330
+ reason: { type: "string" },
331
+ },
332
+ required: ["sku", "changes"],
333
+ additionalProperties: false,
334
+ },
335
+ execute: async (_id, params) => {
336
+ const credential = requireScopeCredential(broker, "catalog");
337
+ if (!credential.ok)
338
+ return textResult(credential.reason);
339
+ try {
340
+ const p = params;
341
+ const patch = parseChanges(p.changes);
342
+ if (Object.keys(patch).length === 0) {
343
+ return textResult("changes 没有任何可修改字段。");
344
+ }
345
+ let current;
346
+ try {
347
+ current = await merchantClient.getProduct(p.sku);
348
+ }
349
+ catch {
350
+ return textResult(`商品 ${p.sku} 不存在。`);
351
+ }
352
+ const args = { sku: p.sku, changes: { ...patch } };
353
+ const preconditions = productPreconditions(current);
354
+ const escalation = catalogEscalation(profile, args, current);
355
+ const outcome = await routeWriteCandidate(writeGateDeps, {
356
+ tool: "update_product",
357
+ arguments: args,
358
+ preconditions,
359
+ risk: "write_catalog",
360
+ execute: (approvedArgs) => {
361
+ const a = approvedArgs;
362
+ return merchantClient.updateProduct(a.sku, a.changes);
363
+ },
364
+ readPreconditions: async () => {
365
+ const fresh = await merchantClient.getProduct(p.sku);
366
+ return productPreconditions(fresh);
367
+ },
368
+ autopilotEscalation: () => escalation,
369
+ });
370
+ return writeGateText(outcome);
371
+ }
372
+ catch (err) {
373
+ return textResult(errorText(err));
374
+ }
375
+ },
376
+ };
377
+ const updateInventory = {
378
+ name: "update_inventory",
379
+ label: "更新库存",
380
+ description: "更新一个商品的库存数量(写操作,inventory 作用域凭据)。supervised 模式生成审批候选。",
381
+ parameters: {
382
+ type: "object",
383
+ properties: {
384
+ sku: { type: "string" },
385
+ stock: { type: "integer", description: "新的库存数量(>= 0)" },
386
+ reason: { type: "string" },
387
+ },
388
+ required: ["sku", "stock"],
389
+ additionalProperties: false,
390
+ },
391
+ execute: async (_id, params) => {
392
+ const credential = requireScopeCredential(broker, "inventory");
393
+ if (!credential.ok)
394
+ return textResult(credential.reason);
395
+ try {
396
+ const p = params;
397
+ if (!Number.isInteger(p.stock) || p.stock < 0) {
398
+ return textResult("stock 必须是非负整数。");
399
+ }
400
+ let current;
401
+ try {
402
+ current = await merchantClient.getProduct(p.sku);
403
+ }
404
+ catch {
405
+ return textResult(`商品 ${p.sku} 不存在。`);
406
+ }
407
+ const args = { sku: p.sku, stock: p.stock };
408
+ const preconditions = productPreconditions(current);
409
+ const outcome = await routeWriteCandidate(writeGateDeps, {
410
+ tool: "update_inventory",
411
+ arguments: args,
412
+ preconditions,
413
+ risk: "update_inventory",
414
+ execute: (approvedArgs) => {
415
+ const a = approvedArgs;
416
+ return merchantClient.updateInventory(a.sku, a.stock);
417
+ },
418
+ readPreconditions: async () => {
419
+ const fresh = await merchantClient.getProduct(p.sku);
420
+ return productPreconditions(fresh);
421
+ },
422
+ });
423
+ return writeGateText(outcome);
424
+ }
425
+ catch (err) {
426
+ return textResult(errorText(err));
427
+ }
428
+ },
429
+ };
430
+ const pauseListing = {
431
+ name: "pause_or_resume_listing",
432
+ label: "暂停/恢复上架",
433
+ description: "暂停或恢复一个商品的上架状态(写操作)。真实 shopping-cli 2.x 无 listing 端点,真实 Connector 会 fail closed;" +
434
+ "审批候选仍会生成与记录。",
435
+ parameters: {
436
+ type: "object",
437
+ properties: {
438
+ sku: { type: "string" },
439
+ paused: { type: "boolean", description: "true 暂停上架,false 恢复上架" },
440
+ reason: { type: "string" },
441
+ },
442
+ required: ["sku", "paused"],
443
+ additionalProperties: false,
444
+ },
445
+ execute: async (_id, params) => {
446
+ const credential = requireScopeCredential(broker, "catalog");
447
+ if (!credential.ok)
448
+ return textResult(credential.reason);
449
+ try {
450
+ const p = params;
451
+ let current;
452
+ try {
453
+ current = await merchantClient.getProduct(p.sku);
454
+ }
455
+ catch {
456
+ return textResult(`商品 ${p.sku} 不存在。`);
457
+ }
458
+ const args = { sku: p.sku, paused: p.paused };
459
+ const preconditions = productPreconditions(current);
460
+ const outcome = await routeWriteCandidate(writeGateDeps, {
461
+ tool: "pause_or_resume_listing",
462
+ arguments: args,
463
+ preconditions,
464
+ risk: "listing_pause",
465
+ execute: (approvedArgs) => {
466
+ const a = approvedArgs;
467
+ return merchantClient.pauseListing(a.sku, a.paused);
468
+ },
469
+ readPreconditions: async () => {
470
+ const fresh = await merchantClient.getProduct(p.sku);
471
+ return productPreconditions(fresh);
472
+ },
473
+ });
474
+ return writeGateText(outcome);
475
+ }
476
+ catch (err) {
477
+ return textResult(errorText(err));
478
+ }
479
+ },
480
+ };
481
+ const draftChange = {
482
+ name: "draft_product_change",
483
+ label: "商品变更草稿",
484
+ description: "为一个商品变更生成草稿候选(不立即执行,任何模式都不自动执行)。操作者批准后才会真正写入。",
485
+ parameters: {
486
+ type: "object",
487
+ properties: {
488
+ sku: { type: "string" },
489
+ changes: { type: "object", description: "计划修改的字段(title/price/stock/description 等)" },
490
+ reason: { type: "string" },
491
+ },
492
+ required: ["sku", "changes"],
493
+ additionalProperties: false,
494
+ },
495
+ execute: async (_id, params) => {
496
+ const credential = requireScopeCredential(broker, "catalog");
497
+ if (!credential.ok)
498
+ return textResult(credential.reason);
499
+ try {
500
+ const p = params;
501
+ const patch = parseChanges(p.changes);
502
+ if (Object.keys(patch).length === 0) {
503
+ return textResult("changes 没有任何可修改字段。");
504
+ }
505
+ let current;
506
+ try {
507
+ current = await merchantClient.getProduct(p.sku);
508
+ }
509
+ catch {
510
+ return textResult(`商品 ${p.sku} 不存在。`);
511
+ }
512
+ const args = { sku: p.sku, changes: { ...patch }, reason: optString(p.reason) ?? "" };
513
+ const outcome = await routeWriteCandidate(writeGateDeps, {
514
+ tool: "draft_product_change",
515
+ arguments: args,
516
+ preconditions: productPreconditions(current),
517
+ risk: "write_catalog",
518
+ // Drafts are ALWAYS pending (never auto-execute), even in autopilot.
519
+ force_pending: true,
520
+ execute: (approvedArgs) => {
521
+ const a = approvedArgs;
522
+ return merchantClient.updateProduct(a.sku, a.changes);
523
+ },
524
+ readPreconditions: async () => {
525
+ const fresh = await merchantClient.getProduct(p.sku);
526
+ return productPreconditions(fresh);
527
+ },
528
+ });
529
+ if (outcome.kind === "pending_approval") {
530
+ return textResult(`已生成变更草稿候选 ${outcome.candidate.candidate_id}(等待批准后才执行)。当前商品:` +
531
+ JSON.stringify(productPreconditions(current)), { candidate_id: outcome.candidate.candidate_id, status: "pending_approval" });
532
+ }
533
+ return writeGateText(outcome);
534
+ }
535
+ catch (err) {
536
+ return textResult(errorText(err));
537
+ }
538
+ },
539
+ };
540
+ const negotiationTools = deps.commerceClient !== undefined
541
+ ? buildNegotiationChatTools({
542
+ profile,
543
+ commerceClient: deps.commerceClient,
544
+ broker,
545
+ approvals,
546
+ mode,
547
+ now,
548
+ registerPending: deps.registerPending,
549
+ })
550
+ : [];
551
+ const viewPrivateThresholds = {
552
+ name: "view_private_thresholds",
553
+ label: "查看私密阈值",
554
+ description: "查看操作者(委托人)自己的私有阈值(成本/底价/利润目标,从加密 Vault 读取)。" +
555
+ "这些数值只对操作者本人可见;绝不能写进公开消息、对外报价文本、磋商 proposal 或日志。",
556
+ parameters: { type: "object", properties: {}, additionalProperties: false },
557
+ execute: async () => {
558
+ if (deps.privateValues === undefined) {
559
+ return textResult("当前环境未配置私密阈值读取能力。");
560
+ }
561
+ const values = deps.privateValues();
562
+ if (values.length === 0)
563
+ return textResult("暂无私密阈值记忆。");
564
+ return textResult(values.map((v) => `· ${v.key} = ${v.value}`).join("\n"), { count: values.length });
565
+ },
566
+ };
567
+ return [
568
+ listProducts,
569
+ getProduct,
570
+ inventorySnapshot,
571
+ listConsultations,
572
+ humanReviewQueue,
573
+ viewPrivateThresholds,
574
+ ...negotiationTools,
575
+ createProduct,
576
+ updateProduct,
577
+ updateInventory,
578
+ pauseListing,
579
+ draftChange,
580
+ ];
581
+ }
582
+ //# sourceMappingURL=merchant-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchant-tools.js","sourceRoot":"","sources":["../../../src/agent/merchant/merchant-tools.ts"],"names":[],"mappings":"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"}