@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,63 @@
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
+ /**
17
+ * TUI 主题原语(Neural Awakening,参照 hermes ui-tui theme.ts)——纯函数、
18
+ * 零状态、零依赖。
19
+ *
20
+ * - PALETTE:深黑蓝底 + 蓝/青语义色(primary/accent/ok/warn/error/muted);
21
+ * - ColorMode 三档:off(非 TTY / NO_COLOR / TERM=dumb → 字节直通,测试与
22
+ * 管道输出不变)、basic(16 色退化映射,老终端)、24bit(COLORTERM 或
23
+ * 现代 TERM);
24
+ * - paint() 是唯一着色入口;visibleWidth() 用字符扫描剥离 ANSI 并计入 CJK
25
+ * 双宽(**不用正则**——eslint no-control-regex 禁 ESC 字面量进正则)。
26
+ */
27
+ /** ESC 转义前缀(字符串字面量,不进正则)。 */
28
+ export declare const ESC = "\u001B";
29
+ export declare const PALETTE: {
30
+ readonly bg: "#0A0E14";
31
+ readonly primary: "#4FC3F7";
32
+ readonly accent: "#00BCD4";
33
+ readonly ok: "#81C784";
34
+ readonly warn: "#FFD54F";
35
+ readonly error: "#EF5350";
36
+ readonly muted: "#8FA3BF";
37
+ readonly text: "#E6EDF3";
38
+ };
39
+ export type ColorKey = keyof typeof PALETTE;
40
+ export type ColorMode = "off" | "basic" | "24bit";
41
+ export interface PaintOpts {
42
+ bold?: boolean;
43
+ dim?: boolean;
44
+ }
45
+ export declare function hexToRgb(hex: string): [number, number, number];
46
+ /** 24-bit 前景色 SGR:\x1b[38;2;R;G;Bm */
47
+ export declare function rgb(hex: string): string;
48
+ /** 16 色退化映射(basic 模式):按语义色就近映射到标准前景色。 */
49
+ export declare function rgbFg256(color: ColorKey): string;
50
+ /** 完整样式前缀(bold/dim 修饰 + 前景色 SGR,不含 reset);off 返回空串。 */
51
+ export declare function sgr(mode: ColorMode, color: ColorKey, opts?: PaintOpts): string;
52
+ /** 语义色 → 着色文本(sgr + reset);off 模式直通原文。 */
53
+ export declare function paint(text: string, mode: ColorMode, color: ColorKey, opts?: PaintOpts): string;
54
+ /** CJK 宽字符区间(Unicode East Asian Wide/Fullwidth 主要区段,零依赖表)。 */
55
+ export declare function isWide(ch: string): boolean;
56
+ /** 可见宽度:剥离 ANSI(本包产出的 CSI SGR 序列)后计数,CJK 记 2。 */
57
+ export declare function visibleWidth(text: string): number;
58
+ /**
59
+ * 颜色模式判定:off = 非 TTY / NO_COLOR / TERM=dumb;24bit = COLORTERM 声明
60
+ * truecolor/24bit,或 TERM 为现代终端(xterm/screen/tmux/kitty/alacritty/
61
+ * wezterm)且不带 -256color 后缀;其余(WSL 老终端/cmd)basic 16 色退化。
62
+ */
63
+ export declare function detectColorMode(env: Record<string, string | undefined>, outputIsTty: boolean): ColorMode;
@@ -0,0 +1,136 @@
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
+ /**
17
+ * TUI 主题原语(Neural Awakening,参照 hermes ui-tui theme.ts)——纯函数、
18
+ * 零状态、零依赖。
19
+ *
20
+ * - PALETTE:深黑蓝底 + 蓝/青语义色(primary/accent/ok/warn/error/muted);
21
+ * - ColorMode 三档:off(非 TTY / NO_COLOR / TERM=dumb → 字节直通,测试与
22
+ * 管道输出不变)、basic(16 色退化映射,老终端)、24bit(COLORTERM 或
23
+ * 现代 TERM);
24
+ * - paint() 是唯一着色入口;visibleWidth() 用字符扫描剥离 ANSI 并计入 CJK
25
+ * 双宽(**不用正则**——eslint no-control-regex 禁 ESC 字面量进正则)。
26
+ */
27
+ /** ESC 转义前缀(字符串字面量,不进正则)。 */
28
+ export const ESC = "\u001b";
29
+ export const PALETTE = {
30
+ bg: "#0A0E14", // 深黑蓝底
31
+ primary: "#4FC3F7", // 蓝:a2a/discover/记忆/模式/角色
32
+ accent: "#00BCD4", // 青:磋商/handoff/negotiate/prompt
33
+ ok: "#81C784", // 绿:已发送/注册
34
+ warn: "#FFD54F", // 黄:通知/建议
35
+ error: "#EF5350", // 红:任务失败
36
+ muted: "#8FA3BF", // 灰蓝:dim 文本/私有/系统记录/边框
37
+ text: "#E6EDF3", // 主文本
38
+ };
39
+ export function hexToRgb(hex) {
40
+ const value = hex.replace(/^#/, "");
41
+ const parsed = Number.parseInt(value, 16);
42
+ if (value.length !== 6 || Number.isNaN(parsed)) {
43
+ throw new TypeError(`invalid hex color: ${hex}`);
44
+ }
45
+ return [(parsed >> 16) & 0xff, (parsed >> 8) & 0xff, parsed & 0xff];
46
+ }
47
+ /** 24-bit 前景色 SGR:\x1b[38;2;R;G;Bm */
48
+ export function rgb(hex) {
49
+ const [r, g, b] = hexToRgb(hex);
50
+ return `${ESC}[38;2;${r};${g};${b}m`;
51
+ }
52
+ /** 16 色退化映射(basic 模式):按语义色就近映射到标准前景色。 */
53
+ export function rgbFg256(color) {
54
+ const table = {
55
+ bg: 40, // 黑底
56
+ primary: 34, // 蓝
57
+ accent: 36, // 青
58
+ ok: 32, // 绿
59
+ warn: 33, // 黄
60
+ error: 31, // 红
61
+ muted: 90, // 亮黑(灰)
62
+ text: 37, // 白
63
+ };
64
+ return `${ESC}[${table[color]}m`;
65
+ }
66
+ /** 完整样式前缀(bold/dim 修饰 + 前景色 SGR,不含 reset);off 返回空串。 */
67
+ export function sgr(mode, color, opts = {}) {
68
+ if (mode === "off")
69
+ return "";
70
+ const prefix = mode === "24bit" ? rgb(PALETTE[color]) : rgbFg256(color);
71
+ const style = `${opts.bold === true ? `${ESC}[1m` : ""}${opts.dim === true ? `${ESC}[2m` : ""}`;
72
+ return `${style}${prefix}`;
73
+ }
74
+ /** 语义色 → 着色文本(sgr + reset);off 模式直通原文。 */
75
+ export function paint(text, mode, color, opts = {}) {
76
+ if (mode === "off")
77
+ return text;
78
+ return `${sgr(mode, color, opts)}${text}${ESC}[0m`;
79
+ }
80
+ /** CJK 宽字符区间(Unicode East Asian Wide/Fullwidth 主要区段,零依赖表)。 */
81
+ export function isWide(ch) {
82
+ const code = ch.codePointAt(0) ?? 0;
83
+ return ((code >= 0x1100 && code <= 0x115f) ||
84
+ (code >= 0x2e80 && code <= 0x303e) ||
85
+ (code >= 0x3041 && code <= 0x33ff) ||
86
+ (code >= 0x3400 && code <= 0x4dbf) ||
87
+ (code >= 0x4e00 && code <= 0x9fff) ||
88
+ (code >= 0xf900 && code <= 0xfaff) ||
89
+ (code >= 0xfe30 && code <= 0xfe4f) ||
90
+ (code >= 0xff00 && code <= 0xff60) ||
91
+ (code >= 0xffe0 && code <= 0xffe6));
92
+ }
93
+ /** 可见宽度:剥离 ANSI(本包产出的 CSI SGR 序列)后计数,CJK 记 2。 */
94
+ export function visibleWidth(text) {
95
+ let width = 0;
96
+ for (let i = 0; i < text.length; i++) {
97
+ const ch = text[i];
98
+ if (ch === ESC) {
99
+ // 跳过 \x1b[…m(仅本包产出的 SGR 序列;遇非 m 终止符保守按字符继续)
100
+ const end = text.indexOf("m", i + 1);
101
+ if (end !== -1) {
102
+ i = end;
103
+ continue;
104
+ }
105
+ continue;
106
+ }
107
+ width += isWide(ch) ? 2 : 1;
108
+ }
109
+ return width;
110
+ }
111
+ /**
112
+ * 颜色模式判定:off = 非 TTY / NO_COLOR / TERM=dumb;24bit = COLORTERM 声明
113
+ * truecolor/24bit,或 TERM 为现代终端(xterm/screen/tmux/kitty/alacritty/
114
+ * wezterm)且不带 -256color 后缀;其余(WSL 老终端/cmd)basic 16 色退化。
115
+ */
116
+ export function detectColorMode(env, outputIsTty) {
117
+ if (!outputIsTty)
118
+ return "off";
119
+ if (env.NO_COLOR !== undefined && env.NO_COLOR !== "")
120
+ return "off";
121
+ const term = env.TERM ?? "";
122
+ if (term === "dumb")
123
+ return "off";
124
+ const colorTerm = env.COLORTERM ?? "";
125
+ if (colorTerm === "truecolor" || colorTerm === "24bit")
126
+ return "24bit";
127
+ // tmux/kitty/alacritty/wezterm 原生透传 truecolor(tmux-256color 亦然);
128
+ // xterm/screen 只有不带 -256color 后缀才算现代(否则 16 色退化)。
129
+ const truecolorTerminals = ["tmux", "kitty", "alacritty", "wezterm"];
130
+ if (truecolorTerminals.some((name) => term.startsWith(name)))
131
+ return "24bit";
132
+ if (/^(xterm|screen)/.test(term) && !term.includes("-256color"))
133
+ return "24bit";
134
+ return "basic";
135
+ }
136
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ # Buyer profile — real model (deepseek-v4-flash) against a local shopping-cli.
2
+ # Requires: SHOPPING_BUYER_TOKEN set (conversation-scoped buyer token) 与
3
+ # DEEPSEEK_API_KEY 环境变量(模型 key,可从 Hermes 环境继承)。
4
+ runtime_version: 0.6.0
5
+ protocol_version: shopping.negotiation/0.1
6
+ agent_id: buyer-agent:buyer-001
7
+ role: buyer
8
+ owner_id: buyer-001
9
+ commerce:
10
+ base_url: http://127.0.0.1:8765
11
+ token_env: SHOPPING_BUYER_TOKEN
12
+ backend: local_marketplace
13
+ model:
14
+ provider: deepseek
15
+ model: deepseek-v4-flash
16
+ api_key_env: DEEPSEEK_API_KEY
17
+ runtime:
18
+ mode: once
19
+ poll_interval_seconds: 5
20
+ turn_timeout_seconds: 90
21
+ max_model_steps: 4
22
+ max_retries: 2
23
+ buyer_policy:
24
+ target_skus:
25
+ - sku-001
26
+ quantity: 2
27
+ max_total_price_private: 200.00
28
+ acceptable_eta_latest: "2099-12-31T23:59:59+08:00"
29
+ required_after_sales_terms:
30
+ - policy:return-7d
31
+ auto_negotiate: true
32
+ human_review_on:
33
+ - budget_exceeded
34
+ - ambiguous_after_sales
@@ -0,0 +1,36 @@
1
+ # Buyer profile — deterministic fake model against a local shopping-cli.
2
+ # Requires: SHOPPING_BUYER_TOKEN set (conversation-scoped buyer token).
3
+ # buyer_policy is PRIVATE: the marketplace never sees these values; the
4
+ # local policy gate enforces them inside the submit tool before any write.
5
+ runtime_version: 0.6.0
6
+ protocol_version: shopping.negotiation/0.1
7
+ agent_id: buyer-agent:buyer-001
8
+ role: buyer
9
+ owner_id: buyer-001
10
+ commerce:
11
+ base_url: http://127.0.0.1:8765
12
+ token_env: SHOPPING_BUYER_TOKEN
13
+ backend: local_marketplace
14
+ model:
15
+ provider: fake
16
+ model: fake-buyer-model
17
+ runtime:
18
+ mode: once
19
+ poll_interval_seconds: 5
20
+ turn_timeout_seconds: 90
21
+ max_model_steps: 4
22
+ max_retries: 2
23
+ buyer_policy:
24
+ target_skus:
25
+ - sku-001
26
+ quantity: 2
27
+ max_total_price_private: 200.00
28
+ # Far-future deadline keeps the shipped example durable; the local gate
29
+ # still rejects anything later than this RFC3339 (timezone-required) time.
30
+ acceptable_eta_latest: "2099-12-31T23:59:59+08:00"
31
+ required_after_sales_terms:
32
+ - policy:return-7d
33
+ auto_negotiate: true
34
+ human_review_on:
35
+ - budget_exceeded
36
+ - ambiguous_after_sales
@@ -0,0 +1,40 @@
1
+ # Buyer profile — real model (OpenAI-compatible) against a local shopping-cli.
2
+ # Requires: SHOPPING_BUYER_TOKEN and MODEL_API_KEY set in the environment.
3
+ # Secrets are NEVER written into this file — only env var names.
4
+ # buyer_policy is PRIVATE: the marketplace never sees these values; the
5
+ # local policy gate enforces them inside the submit tool before any write.
6
+ runtime_version: 0.6.0
7
+ protocol_version: shopping.negotiation/0.1
8
+ agent_id: buyer-agent:buyer-001
9
+ role: buyer
10
+ owner_id: buyer-001
11
+ commerce:
12
+ base_url: http://127.0.0.1:8765
13
+ token_env: SHOPPING_BUYER_TOKEN
14
+ backend: local_marketplace
15
+ model:
16
+ provider: openai
17
+ model: gpt-4o-mini
18
+ api_key_env: MODEL_API_KEY
19
+ # api: openai-completions # optional override
20
+ # base_url: http://127.0.0.1:11434/v1 # optional OpenAI-compatible endpoint
21
+ runtime:
22
+ mode: once
23
+ poll_interval_seconds: 5
24
+ turn_timeout_seconds: 90
25
+ max_model_steps: 4
26
+ max_retries: 2
27
+ buyer_policy:
28
+ target_skus:
29
+ - sku-001
30
+ quantity: 2
31
+ max_total_price_private: 200.00
32
+ # Far-future deadline keeps the shipped example durable; the local gate
33
+ # still rejects anything later than this RFC3339 (timezone-required) time.
34
+ acceptable_eta_latest: "2099-12-31T23:59:59+08:00"
35
+ required_after_sales_terms:
36
+ - policy:return-7d
37
+ auto_negotiate: true
38
+ human_review_on:
39
+ - budget_exceeded
40
+ - ambiguous_after_sales
@@ -0,0 +1,32 @@
1
+ # Merchant profile — real model (deepseek-v4-flash) against a local shopping-cli.
2
+ # Requires: SHOPPING_AGENT_TOKEN set (agent token for merchant-001) 与
3
+ # DEEPSEEK_API_KEY 环境变量(模型 key,可从 Hermes 环境继承)。
4
+ runtime_version: 0.6.0
5
+ protocol_version: shopping.negotiation/0.1
6
+ agent_id: merchant-agent:merchant-001
7
+ role: merchant
8
+ owner_id: merchant-001
9
+ commerce:
10
+ base_url: http://127.0.0.1:8765
11
+ token_env: SHOPPING_AGENT_TOKEN
12
+ backend: local_marketplace
13
+ model:
14
+ provider: deepseek
15
+ model: deepseek-v4-flash
16
+ api_key_env: DEEPSEEK_API_KEY
17
+ runtime:
18
+ mode: once
19
+ poll_interval_seconds: 5
20
+ turn_timeout_seconds: 90
21
+ max_model_steps: 4
22
+ max_retries: 2
23
+ merchant_policy:
24
+ min_unit_price_private: 80.00
25
+ max_auto_discount_percent: 10
26
+ inventory_source: marketplace
27
+ quote_ttl_seconds: 300
28
+ auto_negotiate: true
29
+ human_review_on:
30
+ - below_floor
31
+ - exceptional_warranty
32
+ - suspicious_content
@@ -0,0 +1,31 @@
1
+ # Merchant profile — deterministic fake model against a local shopping-cli.
2
+ # Runs the full single-turn slice with zero model dependency.
3
+ # Requires: SHOPPING_AGENT_TOKEN set (agent token for merchant-001).
4
+ runtime_version: 0.6.0
5
+ protocol_version: shopping.negotiation/0.1
6
+ agent_id: merchant-agent:merchant-001
7
+ role: merchant
8
+ owner_id: merchant-001
9
+ commerce:
10
+ base_url: http://127.0.0.1:8765
11
+ token_env: SHOPPING_AGENT_TOKEN
12
+ backend: local_marketplace
13
+ model:
14
+ provider: fake
15
+ model: fake-merchant-model
16
+ runtime:
17
+ mode: once
18
+ poll_interval_seconds: 5
19
+ turn_timeout_seconds: 90
20
+ max_model_steps: 4
21
+ max_retries: 2
22
+ merchant_policy:
23
+ min_unit_price_private: 80.00
24
+ max_auto_discount_percent: 10
25
+ inventory_source: marketplace
26
+ quote_ttl_seconds: 300
27
+ auto_negotiate: true
28
+ human_review_on:
29
+ - below_floor
30
+ - exceptional_warranty
31
+ - suspicious_content
@@ -0,0 +1,34 @@
1
+ # Merchant profile — real model (OpenAI-compatible) against a local shopping-cli.
2
+ # Requires: SHOPPING_AGENT_TOKEN and MODEL_API_KEY set in the environment.
3
+ # Secrets are NEVER written into this file — only env var names.
4
+ runtime_version: 0.6.0
5
+ protocol_version: shopping.negotiation/0.1
6
+ agent_id: merchant-agent:merchant-001
7
+ role: merchant
8
+ owner_id: merchant-001
9
+ commerce:
10
+ base_url: http://127.0.0.1:8765
11
+ token_env: SHOPPING_AGENT_TOKEN
12
+ backend: local_marketplace
13
+ model:
14
+ provider: openai
15
+ model: gpt-4o-mini
16
+ api_key_env: MODEL_API_KEY
17
+ # api: openai-completions # optional override
18
+ # base_url: http://127.0.0.1:11434/v1 # optional OpenAI-compatible endpoint
19
+ runtime:
20
+ mode: once
21
+ poll_interval_seconds: 5
22
+ turn_timeout_seconds: 90
23
+ max_model_steps: 4
24
+ max_retries: 2
25
+ merchant_policy:
26
+ min_unit_price_private: 80.00
27
+ max_auto_discount_percent: 10
28
+ inventory_source: marketplace
29
+ quote_ttl_seconds: 300
30
+ auto_negotiate: true
31
+ human_review_on:
32
+ - below_floor
33
+ - exceptional_warranty
34
+ - suspicious_content
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@harrylabsj/kiwi",
3
+ "version": "0.6.0",
4
+ "description": "Kiwi: standalone A2A commerce negotiation agent runtime (Pi Agent Core + shopping-cli Commerce API)",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "engines": {
8
+ "node": ">=22"
9
+ },
10
+ "bin": {
11
+ "kiwi": "dist/cli.js"
12
+ },
13
+ "exports": {
14
+ ".": "./dist/cli.js",
15
+ "./package.json": "./package.json",
16
+ "./dist/*": "./dist/*"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "contracts",
21
+ "examples"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.build.json",
25
+ "typecheck": "tsc -p tsconfig.json --noEmit",
26
+ "lint": "eslint . --max-warnings=0",
27
+ "format": "prettier --write .",
28
+ "format:check": "prettier --check .",
29
+ "test": "vitest run",
30
+ "verify:package": "bash scripts/verify-package.sh",
31
+ "verify": "npm run lint && npm run typecheck && npm run build && npm run test && npm run verify:package",
32
+ "prepublishOnly": "npm run build"
33
+ },
34
+ "dependencies": {
35
+ "@earendil-works/pi-agent-core": "0.83.0",
36
+ "@earendil-works/pi-ai": "0.83.0",
37
+ "ajv": "8.20.0",
38
+ "ajv-formats": "3.0.1",
39
+ "yaml": "2.9.0"
40
+ },
41
+ "devDependencies": {
42
+ "@eslint/js": "^9.29.0",
43
+ "@types/node": "^24.0.0",
44
+ "@typescript-eslint/eslint-plugin": "^8.34.0",
45
+ "@typescript-eslint/parser": "^8.34.0",
46
+ "eslint": "^9.29.0",
47
+ "globals": "^17.9.0",
48
+ "prettier": "^3.5.3",
49
+ "typescript": "^5.8.3",
50
+ "vitest": "^3.2.4"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ }
55
+ }