@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,561 @@
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
+ * LegacyNegotiationAdapter — shopping.negotiation/0.1 ↔ KNP/1.0 双向转译
18
+ * (基线 §35 Legacy Migration / 子规范 §32 / 基线 §36 不变量 22)。
19
+ *
20
+ * 转译规则:
21
+ * lossless → translate
22
+ * lossy → fail closed
23
+ * unsupported → human/fallback
24
+ *
25
+ * 每一条路径都返回结构化 TranslationResult;所有「补默认值 / 丢弃字段 /
26
+ * legacy-extension / identity」都逐条记录在 notes 里,调用方可见,绝不静默。
27
+ *
28
+ * 权限不扩大(不变量 22):本适配器是纯数据转译,不执行 side effect;
29
+ * 不把 legacy 消息提升为 KNP 更高权限语义 —— legacy 无 ConditionalOffer,
30
+ * 本适配器从不伪造 conditions;legacy accept 只映射为 KNP accept_nonbinding
31
+ * (非绑定),永不生成带订单/支付/库存副作用的 agreement artifact。
32
+ *
33
+ * 放置:src/protocol/legacy-shopping-negotiation/(基线 §38 推荐结构:
34
+ * protocol/legacy-shopping-negotiation 与 kiwi-negotiation 分居)。
35
+ */
36
+ import { validateAgainst } from "../../contracts/schemas.js";
37
+ import { contentDigest } from "../../negotiation/jcs.js";
38
+ import { finalizeEnvelope, validateEnvelope, verifyEnvelopeDigest, } from "../../negotiation/domain/envelope.js";
39
+ import { PROTOCOL_VERSION, } from "../../negotiation/types.js";
40
+ import { KNP_TO_LEGACY_ACTION, LEGACY_TO_KNP_ACTION, decisionContentSeed, deterministicId, knpMessageIdToLegacy, legacyMessageIdToKnp, offerIdOfLegacyMessage, proposalToTerms, termsToProposal, } from "./mapping.js";
41
+ import { currencyExponent } from "./money.js";
42
+ import { failClosed, requiresHuman, translated } from "./types.js";
43
+ const note = (kind, path, detail) => ({
44
+ kind,
45
+ path,
46
+ detail,
47
+ });
48
+ /** KNP/1.0 不允许的 legacy 消息额外字段(frozen contract additionalProperties: false)。 */
49
+ const SNAPSHOT_MESSAGE_KEYS = new Set([
50
+ "id",
51
+ "sender_role",
52
+ "created_at",
53
+ "action",
54
+ "public_message",
55
+ "proposal",
56
+ ]);
57
+ const LEGACY_DECISION_ACTIONS = ["ask", "propose", "counter", "accept_nonbinding", "decline", "escalate"];
58
+ function defaultNow() {
59
+ return new Date().toISOString();
60
+ }
61
+ function isRfc3339(value) {
62
+ return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/.test(value);
63
+ }
64
+ function assertLegacyMessageShape(value) {
65
+ for (const key of Object.keys(value)) {
66
+ if (!SNAPSHOT_MESSAGE_KEYS.has(key)) {
67
+ return `unknown field "${key}": legacy snapshot message is frozen and closes additionalProperties`;
68
+ }
69
+ }
70
+ if (typeof value.id !== "number" || !Number.isInteger(value.id) || value.id < 1) {
71
+ return "id must be a positive integer";
72
+ }
73
+ if (value.sender_role !== "buyer" && value.sender_role !== "merchant") {
74
+ return "sender_role must be buyer|merchant";
75
+ }
76
+ if (typeof value.created_at !== "string" || !isRfc3339(value.created_at)) {
77
+ return "created_at must be an RFC 3339 string";
78
+ }
79
+ if (typeof value.public_message !== "string") {
80
+ return "public_message must be a string";
81
+ }
82
+ if (value.action !== undefined && value.action !== null) {
83
+ if (typeof value.action !== "string" || !LEGACY_DECISION_ACTIONS.includes(value.action)) {
84
+ return `action must be one of ${LEGACY_DECISION_ACTIONS.join("|")}`;
85
+ }
86
+ }
87
+ return null;
88
+ }
89
+ /**
90
+ * shopping.negotiation/0.1 ↔ KNP/1.0 适配器。
91
+ *
92
+ * 纯数据转换:任何路径都不执行写入/发送;调用方负责把结果交给对应通道。
93
+ */
94
+ export class LegacyNegotiationAdapter {
95
+ opts;
96
+ constructor(opts = {}) {
97
+ this.opts = opts;
98
+ }
99
+ now() {
100
+ return this.opts.now === undefined ? defaultNow() : this.opts.now();
101
+ }
102
+ exponentOf(currency) {
103
+ return this.opts.currencyExponentOf === undefined
104
+ ? currencyExponent(currency)
105
+ : this.opts.currencyExponentOf(currency);
106
+ }
107
+ // -------------------------------------------------------------------------
108
+ // legacy decision → KNP envelope(§35 legacy→KNP 方向)
109
+ // -------------------------------------------------------------------------
110
+ legacyDecisionToEnvelope(decision, ctx) {
111
+ const validation = validateAgainst("decision", decision);
112
+ if (validation.length > 0) {
113
+ return failClosed(`legacy decision failed shopping.negotiation/0.1 schema: ${validation.join("; ")}`);
114
+ }
115
+ if (decision.request_human_review) {
116
+ return requiresHuman("decision.request_human_review=true routes the legacy decision to human review; KNP/1.0 has no wire-level equivalent — do not translate a human-flagged decision into an auto-processable KNP action");
117
+ }
118
+ const mappedAction = LEGACY_TO_KNP_ACTION[decision.action];
119
+ if (mappedAction === "requires_human") {
120
+ return requiresHuman(`legacy action "${decision.action}" has no KNP/1.0 equivalent (KNP has no escalate); route to human`);
121
+ }
122
+ const action = mappedAction;
123
+ const notes = [
124
+ note("mapped", "decision.conversation_id", "mapped to envelope.negotiation_id (opaque string)"),
125
+ ];
126
+ if (decision.proposal !== undefined &&
127
+ action !== "offer" &&
128
+ action !== "counter_offer") {
129
+ notes.push(note("dropped", "decision.proposal", `legacy action "${decision.action}" is not offer-like; the attached proposal is not translated (KNP ${action} payload has no terms)`));
130
+ }
131
+ if (decision.in_reply_to_message_id >= 1) {
132
+ notes.push(note("identity", "decision.in_reply_to_message_id", `encoded to envelope.in_reply_to "${legacyMessageIdToKnp(decision.in_reply_to_message_id)}" (reversible)`));
133
+ }
134
+ const publicMessage = mergeOpenIssues(decision.public_message, decision.open_issues);
135
+ const payloadResult = this.buildDecisionPayload(decision, action, ctx, notes, publicMessage);
136
+ if (!payloadResult.ok) {
137
+ return payloadResult.error;
138
+ }
139
+ const seed = decisionContentSeed(decision.conversation_id, action, decision.in_reply_to_message_id, payloadResult.termsForId, publicMessage);
140
+ notes.push(note("default", "envelope.exchange_id", `generated deterministically (${deterministicId("ex", seed)}); legacy carries no exchange id`), note("default", "envelope.message_id", `generated deterministically (${deterministicId("msg", seed)}); stable across retries of the same decision`), note("default", "envelope.created_at", "legacy decision carries no created_at; filled from adapter clock"));
141
+ if (decision.open_issues.length > 0) {
142
+ notes.push(note("extension", "decision.open_issues", "open_issues preserved as envelope.public_message text (KNP/1.0 has no open-issue list); the array shape is not recovered on the way back"));
143
+ }
144
+ if (decision.confidence !== undefined) {
145
+ notes.push(note("dropped", "decision.confidence", "confidence is an internal model signal; KNP/1.0 has no field for it"));
146
+ }
147
+ if (decision.reason_codes.length > 0) {
148
+ notes.push(note("dropped", "decision.reason_codes", "reason_codes are internal policy codes; KNP/1.0 has no field for them"));
149
+ }
150
+ const envelope = finalizeEnvelope({
151
+ capability: ctx.capability,
152
+ protocol_version: "1.0",
153
+ negotiation_id: decision.conversation_id,
154
+ exchange_id: deterministicId("ex", seed),
155
+ message_id: deterministicId("msg", seed),
156
+ in_reply_to: decision.in_reply_to_message_id >= 1
157
+ ? legacyMessageIdToKnp(decision.in_reply_to_message_id)
158
+ : undefined,
159
+ actor: ctx.actor,
160
+ action,
161
+ created_at: ctx.created_at ?? this.now(),
162
+ payload: payloadResult.payload,
163
+ public_message: publicMessage,
164
+ });
165
+ return translated(envelope, notes);
166
+ }
167
+ buildDecisionPayload(decision, action, ctx, notes, publicMessage) {
168
+ switch (action) {
169
+ case "inquiry": {
170
+ const payload = {
171
+ type: "inquiry",
172
+ subject: ctx.current_sku === undefined ? undefined : { sku: ctx.current_sku },
173
+ questions: [],
174
+ };
175
+ return { ok: true, payload, termsForId: undefined };
176
+ }
177
+ case "offer":
178
+ case "counter_offer": {
179
+ if (decision.proposal === undefined) {
180
+ return {
181
+ ok: false,
182
+ error: failClosed(`legacy action "${decision.action}" requires a proposal; decision carries none`),
183
+ };
184
+ }
185
+ const converted = proposalToTerms(decision.proposal, (c) => this.exponentOf(c));
186
+ if (!converted.ok) {
187
+ return { ok: false, error: failClosed(converted.reason) };
188
+ }
189
+ notes.push(...converted.notes);
190
+ const terms = converted.value;
191
+ const offerId = deterministicId("off", decisionContentSeed(decision.conversation_id, action, decision.in_reply_to_message_id, terms, publicMessage));
192
+ notes.push(note("default", "payload.offer_id", `generated deterministically from decision content (${offerId}); legacy decision has no offer_id before the gateway assigns a message id`));
193
+ if (action === "counter_offer") {
194
+ const respondingTo = offerIdOfLegacyMessage(decision.in_reply_to_message_id);
195
+ notes.push(note("identity", "payload.responding_to_offer_id", `derived from in_reply_to_message_id (${respondingTo}); the message being countered is the offer carrier`));
196
+ const payload = {
197
+ type: "counter_offer",
198
+ offer_id: offerId,
199
+ responding_to_offer_id: respondingTo,
200
+ proposed_terms: terms,
201
+ };
202
+ return { ok: true, payload, termsForId: terms };
203
+ }
204
+ const payload = { type: "offer", offer_id: offerId, terms };
205
+ return { ok: true, payload, termsForId: terms };
206
+ }
207
+ case "accept_nonbinding": {
208
+ const acceptedTerms = ctx.resolveAcceptedTerms?.(decision.conversation_id, decision.in_reply_to_message_id);
209
+ if (acceptedTerms === undefined || acceptedTerms === null) {
210
+ return {
211
+ ok: false,
212
+ error: failClosed("legacy accept_nonbinding cannot be translated: the accepted offer terms are required to compute terms_digest (§15); provide ctx.resolveAcceptedTerms"),
213
+ };
214
+ }
215
+ const offerId = offerIdOfLegacyMessage(decision.in_reply_to_message_id);
216
+ notes.push(note("identity", "payload.offer_id", `derived from in_reply_to_message_id (${offerId})`), note("identity", "payload.terms_digest", "computed from resolved accepted offer terms (§19.3); legacy accept does not carry the accepted terms"));
217
+ const payload = {
218
+ type: "accept_nonbinding",
219
+ offer_id: offerId,
220
+ terms_digest: contentDigest(acceptedTerms),
221
+ };
222
+ return { ok: true, payload, termsForId: acceptedTerms };
223
+ }
224
+ case "decline": {
225
+ const targetMessageId = legacyMessageIdToKnp(decision.in_reply_to_message_id);
226
+ const targetOfferId = offerIdOfLegacyMessage(decision.in_reply_to_message_id);
227
+ notes.push(note("identity", "payload.target_message_id", `encoded from in_reply_to_message_id (${targetMessageId})`), note("identity", "payload.target_offer_id", `derived from in_reply_to_message_id (${targetOfferId})`), note("default", "payload.scope", 'legacy decline is offer-scoped (declines the current proposal, negotiation stays open); defaulted to scope="offer"'));
228
+ const payload = {
229
+ type: "decline",
230
+ target_message_id: targetMessageId,
231
+ target_offer_id: targetOfferId,
232
+ scope: "offer",
233
+ };
234
+ return { ok: true, payload, termsForId: undefined };
235
+ }
236
+ default:
237
+ return {
238
+ ok: false,
239
+ error: failClosed(`legacy action "${decision.action}" maps to unsupported KNP action ${action}`),
240
+ };
241
+ }
242
+ }
243
+ // -------------------------------------------------------------------------
244
+ // KNP envelope → legacy decision(§35 KNP→legacy 方向)
245
+ // -------------------------------------------------------------------------
246
+ envelopeToLegacyDecision(envelope) {
247
+ const validated = this.validateKnpEnvelope(envelope);
248
+ if (!validated.ok)
249
+ return validated.error;
250
+ const mapped = KNP_TO_LEGACY_ACTION[envelope.action];
251
+ if (mapped === "fail_closed") {
252
+ return failClosed(`KNP action "${envelope.action}" cannot be expressed in shopping.negotiation/0.1: ${failClosedReason(envelope.action)} (protected semantics must not be silently dropped)`);
253
+ }
254
+ if (mapped === "requires_human") {
255
+ return requiresHuman(`KNP action "${envelope.action}" is unsupported by shopping.negotiation/0.1; route to human`);
256
+ }
257
+ const notes = [
258
+ note("identity", "envelope.actor", `actor="${envelope.actor}" MUST be asserted by the legacy transport (token-bound); shopping.negotiation/0.1 decisions carry no role field`),
259
+ note("dropped", "envelope.message_id", "KNP message_id is a string; legacy decisions carry no message id"),
260
+ note("dropped", "envelope.exchange_id", "legacy decisions carry no exchange id"),
261
+ note("dropped", "envelope.digest", "digest is verified by the adapter; the value itself is not expressible in legacy"),
262
+ note("dropped", "envelope.capability", "legacy decisions carry no capability id"),
263
+ note("dropped", "envelope.created_at", "legacy decisions carry no created_at"),
264
+ note("default", "decision.reason_codes", "KNP/1.0 has no reason_codes; defaulted to []"),
265
+ note("default", "decision.request_human_review", "KNP/1.0 has no human-review flag; defaulted to false"),
266
+ ];
267
+ let inReplyTo;
268
+ if (envelope.action === "decline") {
269
+ if (envelope.payload.type !== "decline") {
270
+ return failClosed("KNP envelope action/payload mismatch (action=decline but payload is not a decline)");
271
+ }
272
+ if (envelope.payload.scope === "negotiation") {
273
+ return failClosed("KNP decline scope=negotiation is not expressible in shopping.negotiation/0.1: legacy decline is offer-scoped only");
274
+ }
275
+ const target = knpMessageIdToLegacy(envelope.payload.target_message_id);
276
+ if (target === null || target < 1) {
277
+ return failClosed(`KNP decline target_message_id "${envelope.payload.target_message_id}" cannot be mapped to a legacy message id (identity)`);
278
+ }
279
+ inReplyTo = target;
280
+ notes.push(note("dropped", "payload.target_offer_id", "legacy decisions carry no target_offer_id"), note("mapped", "payload.target_message_id", `mapped to decision.in_reply_to_message_id (${inReplyTo})`));
281
+ }
282
+ else {
283
+ if (envelope.in_reply_to === undefined) {
284
+ return failClosed("legacy decision requires in_reply_to_message_id; KNP envelope has no in_reply_to");
285
+ }
286
+ const decoded = knpMessageIdToLegacy(envelope.in_reply_to);
287
+ if (decoded === null || decoded < 1) {
288
+ return failClosed(`KNP in_reply_to "${envelope.in_reply_to}" cannot be mapped to a legacy message id (identity)`);
289
+ }
290
+ inReplyTo = decoded;
291
+ notes.push(note("mapped", "envelope.in_reply_to", `mapped to decision.in_reply_to_message_id (${inReplyTo})`));
292
+ }
293
+ // KNP 无 open-issue 列表;clarification/inquiry 的结构化 questions 以自由文本
294
+ // 保留进 decision.open_issues(结构丢失但内容保留,记录 note —— 非静默)。
295
+ let openIssues = [];
296
+ if (envelope.action === "clarification" && envelope.payload.type === "clarification") {
297
+ openIssues = envelope.payload.questions.map((q) => q.reason === undefined ? q.field : `${q.field}: ${q.reason}`);
298
+ notes.push(note("extension", "payload.questions", "clarification questions flattened to decision.open_issues free text (field/reason structure dropped)"));
299
+ }
300
+ else if (envelope.action === "inquiry" &&
301
+ envelope.payload.type === "inquiry" &&
302
+ (envelope.payload.questions?.length ?? 0) > 0) {
303
+ openIssues = (envelope.payload.questions ?? []).map((q) => q.code);
304
+ notes.push(note("extension", "payload.questions", "inquiry question codes preserved as decision.open_issues free text"));
305
+ }
306
+ let proposal;
307
+ if (envelope.action === "offer" || envelope.action === "counter_offer") {
308
+ const terms = offerLikeTerms(envelope);
309
+ if (terms === undefined) {
310
+ return failClosed("KNP envelope action/payload mismatch for offer-like action");
311
+ }
312
+ const converted = termsToProposal(terms, (c) => this.exponentOf(c));
313
+ if (!converted.ok) {
314
+ return failClosed(converted.reason);
315
+ }
316
+ proposal = converted.value;
317
+ notes.push(...converted.notes);
318
+ notes.push(envelope.action === "offer"
319
+ ? note("dropped", "payload.offer_id", "legacy proposal carries no offer_id; the gateway resolves the current proposal")
320
+ : note("dropped", "payload.offer_id", "legacy proposal carries no offer_id"));
321
+ if (envelope.action === "counter_offer") {
322
+ notes.push(note("dropped", "payload.responding_to_offer_id", "legacy counter carries no responding offer reference; in_reply_to_message_id encodes the countered message"));
323
+ }
324
+ }
325
+ if (envelope.action === "accept_nonbinding" && envelope.payload.type === "accept_nonbinding") {
326
+ notes.push(note("dropped", "payload.offer_id", "legacy accept decision carries no offer_id; the gateway resolves the accepted proposal"), note("dropped", "payload.terms_digest", "legacy accept decision carries no terms_digest"));
327
+ }
328
+ if (openIssues.length === 0) {
329
+ notes.push(note("default", "decision.open_issues", "KNP/1.0 has no open-issue list; defaulted to []"));
330
+ }
331
+ const decision = {
332
+ protocol_version: PROTOCOL_VERSION,
333
+ conversation_id: envelope.negotiation_id,
334
+ in_reply_to_message_id: inReplyTo,
335
+ action: mapped,
336
+ ...(proposal === undefined ? {} : { proposal }),
337
+ open_issues: openIssues,
338
+ public_message: envelope.public_message ?? "",
339
+ reason_codes: [],
340
+ request_human_review: false,
341
+ };
342
+ if (envelope.public_message === undefined) {
343
+ notes.push(note("default", "envelope.public_message", 'KNP public_message is optional; defaulted to ""'));
344
+ }
345
+ return translated(decision, notes);
346
+ }
347
+ // -------------------------------------------------------------------------
348
+ // legacy snapshot message ↔ KNP envelope
349
+ // -------------------------------------------------------------------------
350
+ legacyMessageToEnvelope(message, ctx) {
351
+ const shapeError = assertLegacyMessageShape(message);
352
+ if (shapeError !== null) {
353
+ return failClosed(`legacy snapshot message failed shopping.negotiation/0.1 shape: ${shapeError}`);
354
+ }
355
+ if (message.action === undefined) {
356
+ return failClosed("legacy snapshot message has no action; cannot translate to a KNP action");
357
+ }
358
+ if (message.action === "escalate") {
359
+ return requiresHuman('legacy message action "escalate" has no KNP/1.0 equivalent; route to human');
360
+ }
361
+ const action = LEGACY_TO_KNP_ACTION[message.action];
362
+ if (action === "requires_human") {
363
+ return requiresHuman(`legacy message action "${message.action}" has no KNP/1.0 equivalent`);
364
+ }
365
+ const notes = [
366
+ note("identity", "message.id", `encoded to envelope.message_id "${legacyMessageIdToKnp(message.id)}" (reversible)`),
367
+ note("mapped", "message.sender_role", `mapped to envelope.actor (${message.sender_role})`),
368
+ ];
369
+ if (message.proposal !== undefined && message.proposal !== null && action !== "offer" && action !== "counter_offer") {
370
+ notes.push(note("dropped", "message.proposal", `legacy message action "${message.action}" is not offer-like; the attached proposal is not translated`));
371
+ }
372
+ let payload;
373
+ let termsForId;
374
+ if (action === "offer" || action === "counter_offer") {
375
+ if (message.proposal === undefined || message.proposal === null) {
376
+ return failClosed(`legacy message action "${message.action}" requires a proposal; message carries none`);
377
+ }
378
+ const converted = proposalToTerms(message.proposal, (c) => this.exponentOf(c));
379
+ if (!converted.ok)
380
+ return failClosed(converted.reason);
381
+ notes.push(...converted.notes);
382
+ termsForId = converted.value;
383
+ const offerId = offerIdOfLegacyMessage(message.id);
384
+ notes.push(note("identity", "payload.offer_id", `derived from message.id (${offerId}) — the offer this message carries`));
385
+ if (action === "offer") {
386
+ payload = { type: "offer", offer_id: offerId, terms: converted.value };
387
+ }
388
+ else {
389
+ const target = this.legacyReplyTarget(ctx);
390
+ if (target === null) {
391
+ return failClosed("legacy counter message cannot be translated: its countered offer reference is unknown without ctx.in_reply_to");
392
+ }
393
+ payload = {
394
+ type: "counter_offer",
395
+ offer_id: offerId,
396
+ responding_to_offer_id: offerIdOfLegacyMessage(target),
397
+ proposed_terms: converted.value,
398
+ };
399
+ }
400
+ }
401
+ else if (action === "inquiry") {
402
+ payload = {
403
+ type: "inquiry",
404
+ subject: ctx.current_sku === undefined ? undefined : { sku: ctx.current_sku },
405
+ questions: [],
406
+ };
407
+ }
408
+ else if (action === "decline") {
409
+ const target = this.legacyReplyTarget(ctx);
410
+ if (target === null) {
411
+ return failClosed("legacy decline message cannot be translated: its target message is unknown without ctx.in_reply_to");
412
+ }
413
+ payload = {
414
+ type: "decline",
415
+ target_message_id: legacyMessageIdToKnp(target),
416
+ target_offer_id: offerIdOfLegacyMessage(target),
417
+ scope: "offer",
418
+ };
419
+ notes.push(note("identity", "payload.target_message_id", `target derived from ctx.in_reply_to (msg_legacy_${target})`), note("default", "payload.scope", 'legacy decline is offer-scoped; defaulted to scope="offer"'));
420
+ }
421
+ else {
422
+ // accept_nonbinding message
423
+ const acceptedTerms = ctx.resolveAcceptedTerms?.(ctx.conversation_id, message.id);
424
+ if (acceptedTerms === undefined || acceptedTerms === null) {
425
+ return failClosed("legacy accept_nonbinding message cannot be translated: the accepted offer terms are required for terms_digest (§15); provide ctx.resolveAcceptedTerms");
426
+ }
427
+ const target = this.legacyReplyTarget(ctx);
428
+ if (target === null) {
429
+ return failClosed("legacy accept_nonbinding message cannot be translated: the accepted offer reference is unknown without ctx.in_reply_to");
430
+ }
431
+ payload = {
432
+ type: "accept_nonbinding",
433
+ offer_id: offerIdOfLegacyMessage(target),
434
+ terms_digest: contentDigest(acceptedTerms),
435
+ };
436
+ notes.push(note("identity", "payload.offer_id", `accepted offer derived from ctx.in_reply_to (off_legacy_${target})`), note("identity", "payload.terms_digest", "computed from resolved accepted offer terms (§19.3)"));
437
+ }
438
+ const seed = decisionContentSeed(ctx.conversation_id, action, message.id, termsForId, message.public_message);
439
+ const envelope = finalizeEnvelope({
440
+ capability: ctx.capability,
441
+ protocol_version: "1.0",
442
+ negotiation_id: ctx.conversation_id,
443
+ exchange_id: deterministicId("ex", seed),
444
+ message_id: legacyMessageIdToKnp(message.id),
445
+ in_reply_to: ctx.in_reply_to,
446
+ actor: message.sender_role,
447
+ action,
448
+ created_at: message.created_at,
449
+ payload,
450
+ public_message: message.public_message,
451
+ });
452
+ return translated(envelope, notes);
453
+ }
454
+ envelopeToLegacyMessage(envelope) {
455
+ const validated = this.validateKnpEnvelope(envelope);
456
+ if (!validated.ok)
457
+ return validated.error;
458
+ const id = knpMessageIdToLegacy(envelope.message_id);
459
+ if (id === null || id < 1) {
460
+ return failClosed(`KNP message_id "${envelope.message_id}" cannot be mapped to a legacy message id (identity)`);
461
+ }
462
+ const mapped = KNP_TO_LEGACY_ACTION[envelope.action];
463
+ if (mapped === "fail_closed") {
464
+ return failClosed(`KNP action "${envelope.action}" cannot be expressed as a shopping.negotiation/0.1 message: ${failClosedReason(envelope.action)}`);
465
+ }
466
+ if (mapped === "requires_human") {
467
+ return requiresHuman(`KNP action "${envelope.action}" is unsupported by shopping.negotiation/0.1; route to human`);
468
+ }
469
+ const notes = [
470
+ note("identity", "envelope.actor", `actor="${envelope.actor}" MUST be asserted by the legacy transport`),
471
+ note("dropped", "envelope.digest", "digest is not expressible in a legacy snapshot message"),
472
+ note("dropped", "envelope.exchange_id", "legacy messages carry no exchange id"),
473
+ note("dropped", "envelope.capability", "legacy messages carry no capability id"),
474
+ ];
475
+ let proposal = null;
476
+ if (envelope.action === "offer" || envelope.action === "counter_offer") {
477
+ const terms = offerLikeTerms(envelope);
478
+ if (terms === undefined) {
479
+ return failClosed("KNP envelope action/payload mismatch for offer-like action");
480
+ }
481
+ const converted = termsToProposal(terms, (c) => this.exponentOf(c));
482
+ if (!converted.ok)
483
+ return failClosed(converted.reason);
484
+ proposal = converted.value;
485
+ notes.push(...converted.notes);
486
+ }
487
+ if (envelope.payload.type === "clarification" &&
488
+ envelope.payload.questions.length > 0) {
489
+ notes.push(note("dropped", "payload.questions", "legacy snapshot messages carry no open-issue list; clarification questions are not preserved as a message (public_message carries the free text)"));
490
+ }
491
+ const message = {
492
+ id,
493
+ sender_role: envelope.actor,
494
+ created_at: envelope.created_at,
495
+ action: mapped,
496
+ public_message: envelope.public_message ?? "",
497
+ proposal,
498
+ };
499
+ if (envelope.public_message === undefined) {
500
+ notes.push(note("default", "envelope.public_message", 'KNP public_message is optional; defaulted to ""'));
501
+ }
502
+ return translated(message, notes);
503
+ }
504
+ // -------------------------------------------------------------------------
505
+ // Agreement artifact → legacy(受保护:agreement 语义,恒 fail-closed)
506
+ // -------------------------------------------------------------------------
507
+ agreementToLegacyPolicyResult(agreement) {
508
+ return failClosed(`shopping.negotiation/0.1 has no agreement artifact: cannot express agreement_id=${agreement.agreement_id}, ` +
509
+ `accepted_offer_id=${agreement.accepted_offer_id}, terms_digest, agreed_terms, accepted_by, ` +
510
+ `binding_effect, and the creates_order/reserves_inventory/authorizes_payment=false flags ` +
511
+ "(§35: agreement semantics must not be silently dropped; route to human)");
512
+ }
513
+ // -------------------------------------------------------------------------
514
+ // helpers
515
+ // -------------------------------------------------------------------------
516
+ validateKnpEnvelope(envelope) {
517
+ try {
518
+ validateEnvelope(envelope);
519
+ }
520
+ catch (e) {
521
+ return {
522
+ ok: false,
523
+ error: failClosed(`KNP envelope failed validation: ${e instanceof Error ? e.message : String(e)}`),
524
+ };
525
+ }
526
+ if (!verifyEnvelopeDigest(envelope)) {
527
+ return {
528
+ ok: false,
529
+ error: failClosed("KNP envelope digest does not match its content (tampered or stale)"),
530
+ };
531
+ }
532
+ return { ok: true };
533
+ }
534
+ legacyReplyTarget(ctx) {
535
+ if (ctx.in_reply_to === undefined)
536
+ return null;
537
+ return knpMessageIdToLegacy(ctx.in_reply_to);
538
+ }
539
+ }
540
+ function mergeOpenIssues(publicMessage, openIssues) {
541
+ if (openIssues.length === 0)
542
+ return publicMessage;
543
+ const issuesText = openIssues.join("; ");
544
+ return publicMessage.length === 0 ? issuesText : `${publicMessage} | ${issuesText}`;
545
+ }
546
+ function offerLikeTerms(envelope) {
547
+ if (envelope.payload.type === "offer")
548
+ return envelope.payload.terms;
549
+ if (envelope.payload.type === "counter_offer")
550
+ return envelope.payload.proposed_terms;
551
+ return undefined;
552
+ }
553
+ function failClosedReason(action) {
554
+ switch (action) {
555
+ case "conditional_offer":
556
+ return "KNP conditional semantics (conditions) have no legacy representation";
557
+ default:
558
+ return `KNP action ${action} has no legacy representation`;
559
+ }
560
+ }
561
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/protocol/legacy-shopping-negotiation/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAQ9C,OAAO,EACL,gBAAgB,GAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,IAAI,GAAG,CAAC,IAA6B,EAAE,IAAY,EAAE,MAAc,EAAmB,EAAE,CAAC,CAAC;IAC9F,IAAI;IACJ,IAAI;IACJ,MAAM;CACP,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,IAAI;IACJ,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,gBAAgB;IAChB,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE1G,SAAS,UAAU;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,kEAAkE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA8B;IAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,kBAAkB,GAAG,sEAAsE,CAAC;QACrG,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAChF,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;QACtE,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACzE,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACxD,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACxF,OAAO,yBAAyB,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IAEhB;IADnB,YACmB,OAGb,EAAE;QAHW,SAAI,GAAJ,IAAI,CAGf;IACL,CAAC;IAEI,GAAG;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACtE,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS;YAC/C,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,4EAA4E;IAC5E,oDAAoD;IACpD,4EAA4E;IAE5E,wBAAwB,CACtB,QAA6B,EAC7B,GAAuB;QAEvB,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,2DAA2D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;YAClC,OAAO,aAAa,CAClB,qMAAqM,CACtM,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,aAAa,CAClB,kBAAkB,QAAQ,CAAC,MAAM,mEAAmE,CACrG,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,YAAY,CAAC;QAE5B,MAAM,KAAK,GAAsB;YAC/B,IAAI,CAAC,QAAQ,EAAE,0BAA0B,EAAE,mDAAmD,CAAC;SAChG,CAAC;QACF,IACE,QAAQ,CAAC,QAAQ,KAAK,SAAS;YAC/B,MAAM,KAAK,OAAO;YAClB,MAAM,KAAK,eAAe,EAC1B,CAAC;YACD,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,mBAAmB,EACnB,kBAAkB,QAAQ,CAAC,MAAM,qEAAqE,MAAM,wBAAwB,CACrI,CACF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,sBAAsB,IAAI,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CACR,IAAI,CACF,UAAU,EACV,iCAAiC,EACjC,oCAAoC,oBAAoB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,gBAAgB,CAC1G,CACF,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrF,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7F,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,aAAa,CAAC,KAAK,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAC9B,QAAQ,CAAC,eAAe,EACxB,MAAM,EACN,QAAQ,CAAC,sBAAsB,EAC/B,aAAa,CAAC,UAAU,EACxB,aAAa,CACd,CAAC;QACF,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,sBAAsB,EACtB,gCAAgC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,kCAAkC,CAC9F,EACD,IAAI,CACF,SAAS,EACT,qBAAqB,EACrB,gCAAgC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,+CAA+C,CAC5G,EACD,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,kEAAkE,CAAC,CAC3G,CAAC;QACF,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CACR,IAAI,CACF,WAAW,EACX,sBAAsB,EACtB,0IAA0I,CAC3I,CACF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,qEAAqE,CAAC,CAC9G,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,uEAAuE,CAAC,CAClH,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAChC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,QAAQ,CAAC,eAAe;YACxC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;YACxC,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;YACxC,WAAW,EACT,QAAQ,CAAC,sBAAsB,IAAI,CAAC;gBAClC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACvD,CAAC,CAAC,SAAS;YACf,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM;YACN,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YACxC,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,cAAc,EAAE,aAAa;SAC9B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAEO,oBAAoB,CAC1B,QAA6B,EAC7B,MAAyB,EACzB,GAAuB,EACvB,KAAwB,EACxB,aAAqB;QAIrB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAuB;oBAClC,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC7E,SAAS,EAAE,EAAE;iBACd,CAAC;gBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YACtD,CAAC;YACD,KAAK,OAAO,CAAC;YACb,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACpC,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,KAAK,EAAE,UAAU,CACf,kBAAkB,QAAQ,CAAC,MAAM,8CAA8C,CAChF;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChF,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;oBAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC9B,MAAM,OAAO,GAAG,eAAe,CAC7B,KAAK,EACL,mBAAmB,CACjB,QAAQ,CAAC,eAAe,EACxB,MAAM,EACN,QAAQ,CAAC,sBAAsB,EAC/B,KAAK,EACL,aAAa,CACd,CACF,CAAC;gBACF,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,kBAAkB,EAClB,sDAAsD,OAAO,4EAA4E,CAC1I,CACF,CAAC;gBACF,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;oBAC/B,MAAM,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;oBAC7E,KAAK,CAAC,IAAI,CACR,IAAI,CACF,UAAU,EACV,gCAAgC,EAChC,wCAAwC,YAAY,qDAAqD,CAC1G,CACF,CAAC;oBACF,MAAM,OAAO,GAAuB;wBAClC,IAAI,EAAE,eAAe;wBACrB,QAAQ,EAAE,OAAO;wBACjB,sBAAsB,EAAE,YAAY;wBACpC,cAAc,EAAE,KAAK;qBACtB,CAAC;oBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;gBAClD,CAAC;gBACD,MAAM,OAAO,GAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBAChF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YAClD,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAC9C,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,sBAAsB,CAChC,CAAC;gBACF,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC1D,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,KAAK,EAAE,UAAU,CACf,sJAAsJ,CACvJ;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;gBACxE,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,wCAAwC,OAAO,GAAG,CAAC,EACxF,IAAI,CACF,UAAU,EACV,sBAAsB,EACtB,sGAAsG,CACvG,CACF,CAAC;gBACF,MAAM,OAAO,GAAuB;oBAClC,IAAI,EAAE,mBAAmB;oBACzB,QAAQ,EAAE,OAAO;oBACjB,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC;iBAC3C,CAAC;gBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;YAC1D,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,eAAe,GAAG,oBAAoB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;gBAC9E,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;gBAC9E,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,EAAE,2BAA2B,EAAE,wCAAwC,eAAe,GAAG,CAAC,EACzG,IAAI,CAAC,UAAU,EAAE,yBAAyB,EAAE,wCAAwC,aAAa,GAAG,CAAC,EACrG,IAAI,CACF,SAAS,EACT,eAAe,EACf,oHAAoH,CACrH,CACF,CAAC;gBACF,MAAM,OAAO,GAAuB;oBAClC,IAAI,EAAE,SAAS;oBACf,iBAAiB,EAAE,eAAe;oBAClC,eAAe,EAAE,aAAa;oBAC9B,KAAK,EAAE,OAAO;iBACf,CAAC;gBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;YACtD,CAAC;YACD;gBACE,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,UAAU,CAAC,kBAAkB,QAAQ,CAAC,MAAM,oCAAoC,MAAM,EAAE,CAAC;iBACjG,CAAC;QACN,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,oDAAoD;IACpD,4EAA4E;IAE5E,wBAAwB,CAAC,QAA6B;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC;QAE1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,OAAO,UAAU,CACf,eAAe,QAAQ,CAAC,MAAM,sDAAsD,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,qDAAqD,CAC3K,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,aAAa,CAClB,eAAe,QAAQ,CAAC,MAAM,8DAA8D,CAC7F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAsB;YAC/B,IAAI,CACF,UAAU,EACV,gBAAgB,EAChB,UAAU,QAAQ,CAAC,KAAK,kHAAkH,CAC3I;YACD,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,kEAAkE,CAAC;YAC1G,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,uCAAuC,CAAC;YAChF,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,kFAAkF,CAAC;YACtH,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,yCAAyC,CAAC;YACjF,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,sCAAsC,CAAC;YAC9E,IAAI,CAAC,SAAS,EAAE,uBAAuB,EAAE,8CAA8C,CAAC;YACxF,IAAI,CAAC,SAAS,EAAE,+BAA+B,EAAE,sDAAsD,CAAC;SACzG,CAAC;QAEF,IAAI,SAAiB,CAAC;QACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,OAAO,UAAU,CAAC,oFAAoF,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC7C,OAAO,UAAU,CACf,mHAAmH,CACpH,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACxE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,UAAU,CACf,kCAAkC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,sDAAsD,CAC3H,CAAC;YACJ,CAAC;YACD,SAAS,GAAG,MAAM,CAAC;YACnB,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,EAAE,yBAAyB,EAAE,2CAA2C,CAAC,EACvF,IAAI,CAAC,QAAQ,EAAE,2BAA2B,EAAE,8CAA8C,SAAS,GAAG,CAAC,CACxG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,UAAU,CACf,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3D,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,UAAU,CACf,oBAAoB,QAAQ,CAAC,WAAW,sDAAsD,CAC/F,CAAC;YACJ,CAAC;YACD,SAAS,GAAG,OAAO,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,8CAA8C,SAAS,GAAG,CAAC,CAAC,CAAC;QACjH,CAAC;QAED,iEAAiE;QACjE,sDAAsD;QACtD,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrF,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAC7D,CAAC;YACF,KAAK,CAAC,IAAI,CACR,IAAI,CACF,WAAW,EACX,mBAAmB,EACnB,sGAAsG,CACvG,CACF,CAAC;QACJ,CAAC;aAAM,IACL,QAAQ,CAAC,MAAM,KAAK,SAAS;YAC7B,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;YACnC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAC7C,CAAC;YACD,UAAU,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,CACR,IAAI,CACF,WAAW,EACX,mBAAmB,EACnB,oEAAoE,CACrE,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAA8B,CAAC;QACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,UAAU,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;gBAClB,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,MAAM,KAAK,OAAO;gBACzB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,gFAAgF,CAAC;gBACvH,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,qCAAqC,CAAC,CAC/E,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,gCAAgC,EAChC,4GAA4G,CAC7G,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC7F,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,kBAAkB,EAClB,wFAAwF,CACzF,EACD,IAAI,CACF,SAAS,EACT,sBAAsB,EACtB,gDAAgD,CACjD,CACF,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,iDAAiD,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,MAAM,QAAQ,GAAwB;YACpC,gBAAgB,EAAE,gBAAgB;YAClC,eAAe,EAAE,QAAQ,CAAC,cAAc;YACxC,sBAAsB,EAAE,SAAS;YACjC,MAAM,EAAE,MAAM;YACd,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/C,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,EAAE;YAC7C,YAAY,EAAE,EAAE;YAChB,oBAAoB,EAAE,KAAK;SAC5B,CAAC;QACF,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,EAAE,iDAAiD,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,4EAA4E;IAC5E,yCAAyC;IACzC,4EAA4E;IAE5E,uBAAuB,CACrB,OAAwB,EACxB,GAAyB;QAEzB,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAA6C,CAAC,CAAC;QAC3F,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,UAAU,CAAC,kEAAkE,UAAU,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,UAAU,CAAC,yEAAyE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,aAAa,CAClB,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC,0BAA0B,OAAO,CAAC,MAAM,6BAA6B,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,KAAK,GAAsB;YAC/B,IAAI,CACF,UAAU,EACV,YAAY,EACZ,mCAAmC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,gBAAgB,CACpF;YACD,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,6BAA6B,OAAO,CAAC,WAAW,GAAG,CAAC;SAC3F,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YACpH,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,kBAAkB,EAClB,0BAA0B,OAAO,CAAC,MAAM,8DAA8D,CACvG,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAA2B,CAAC;QAChC,IAAI,UAA+B,CAAC;QACpC,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAChE,OAAO,UAAU,CACf,0BAA0B,OAAO,CAAC,MAAM,6CAA6C,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS,CAAC,EAAE;gBAAE,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;YAC7B,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,4BAA4B,OAAO,oCAAoC,CAAC,CAC9G,CAAC;YACF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,UAAU,CACf,+GAA+G,CAChH,CAAC;gBACJ,CAAC;gBACD,OAAO,GAAG;oBACR,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,OAAO;oBACjB,sBAAsB,EAAE,sBAAsB,CAAC,MAAM,CAAC;oBACtD,cAAc,EAAE,SAAS,CAAC,KAAK;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC7E,SAAS,EAAE,EAAE;aACd,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,UAAU,CACf,oGAAoG,CACrG,CAAC;YACJ,CAAC;YACD,OAAO,GAAG;gBACR,IAAI,EAAE,SAAS;gBACf,iBAAiB,EAAE,oBAAoB,CAAC,MAAM,CAAC;gBAC/C,eAAe,EAAE,sBAAsB,CAAC,MAAM,CAAC;gBAC/C,KAAK,EAAE,OAAO;aACf,CAAC;YACF,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,EAAE,2BAA2B,EAAE,mDAAmD,MAAM,GAAG,CAAC,EAC3G,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,4DAA4D,CAAC,CAC/F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAClF,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC1D,OAAO,UAAU,CACf,uJAAuJ,CACxJ,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,UAAU,CACf,wHAAwH,CACzH,CAAC;YACJ,CAAC;YACD,OAAO,GAAG;gBACR,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC;gBACxC,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC;aAC3C,CAAC;YACF,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,2DAA2D,MAAM,GAAG,CAAC,EAC1G,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,qDAAqD,CAAC,CAChG,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAC9B,GAAG,CAAC,eAAe,EACnB,MAAM,EACN,OAAO,CAAC,EAAE,EACV,UAAU,EACV,OAAO,CAAC,cAAc,CACvB,CAAC;QACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC;YAChC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;YACxC,UAAU,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,OAAO,CAAC,WAAW;YAC1B,MAAM;YACN,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO;YACP,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,uBAAuB,CAAC,QAA6B;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC;QAE1C,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,UAAU,CACf,mBAAmB,QAAQ,CAAC,UAAU,sDAAsD,CAC7F,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC7B,OAAO,UAAU,CACf,eAAe,QAAQ,CAAC,MAAM,gEAAgE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAClI,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,aAAa,CAClB,eAAe,QAAQ,CAAC,MAAM,8DAA8D,CAC7F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAsB;YAC/B,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,QAAQ,CAAC,KAAK,4CAA4C,CAAC;YACxG,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,wDAAwD,CAAC;YAC5F,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,sCAAsC,CAAC;YAC/E,IAAI,CAAC,SAAS,EAAE,qBAAqB,EAAE,wCAAwC,CAAC;SACjF,CAAC;QAEF,IAAI,QAAQ,GAAoB,IAAI,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACvE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,UAAU,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,EAAE;gBAAE,OAAO,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IACE,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe;YACzC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EACrC,CAAC;YACD,KAAK,CAAC,IAAI,CACR,IAAI,CACF,SAAS,EACT,mBAAmB,EACnB,kJAAkJ,CACnJ,CACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAoB;YAC/B,EAAE;YACF,WAAW,EAAE,QAAQ,CAAC,KAAK;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,MAAM,EAAE,MAAM;YACd,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,EAAE;YAC7C,QAAQ;SACT,CAAC;QACF,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,EAAE,iDAAiD,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,4EAA4E;IAC5E,8DAA8D;IAC9D,4EAA4E;IAE5E,6BAA6B,CAC3B,SAAsC;QAEtC,OAAO,UAAU,CACf,mFAAmF,SAAS,CAAC,YAAY,IAAI;YAC3G,qBAAqB,SAAS,CAAC,iBAAiB,6CAA6C;YAC7F,0FAA0F;YAC1F,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,UAAU;IACV,4EAA4E;IAEpE,mBAAmB,CACzB,QAA6B;QAE7B,IAAI,CAAC;YACH,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,UAAU,CACf,mCAAmC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAChF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,UAAU,CAAC,oEAAoE,CAAC;aACxF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAEO,iBAAiB,CAAC,GAAyB;QACjD,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAC/C,OAAO,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,SAAS,eAAe,CAAC,aAAqB,EAAE,UAAoB;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa,MAAM,UAAU,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,cAAc,CAAC,QAA6B;IACnD,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;IACrE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;IACtF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyB;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,mBAAmB;YACtB,OAAO,sEAAsE,CAAC;QAChF;YACE,OAAO,cAAc,MAAM,+BAA+B,CAAC;IAC/D,CAAC;AACH,CAAC"}