@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.
- package/LICENSE +201 -0
- package/README.md +150 -0
- package/contracts/candidate-agent-dto-1.0.README.md +39 -0
- package/contracts/candidate-agent-dto-1.0.schema.json +172 -0
- package/contracts/interop/kiwi-buyer-message-send.json +43 -0
- package/contracts/interop/knp-data-part-examples.json +243 -0
- package/contracts/kiwi-catalog/1.0/agent-record.schema.json +78 -0
- package/contracts/kiwi-catalog/1.0/listing-record.schema.json +88 -0
- package/contracts/kiwi-catalog/1.0/listing-search-result.schema.json +60 -0
- package/contracts/negotiation/1.0/schema.json +501 -0
- package/contracts/shopping.negotiation/0.1/capabilities.schema.json +47 -0
- package/contracts/shopping.negotiation/0.1/decision.schema.json +120 -0
- package/contracts/shopping.negotiation/0.1/policy-result.schema.json +52 -0
- package/contracts/shopping.negotiation/0.1/snapshot.schema.json +172 -0
- package/dist/a2a/client/client.d.ts +33 -0
- package/dist/a2a/client/client.js +161 -0
- package/dist/a2a/client/client.js.map +1 -0
- package/dist/a2a/client/error.d.ts +35 -0
- package/dist/a2a/client/error.js +34 -0
- package/dist/a2a/client/error.js.map +1 -0
- package/dist/a2a/client/index.d.ts +29 -0
- package/dist/a2a/client/index.js +26 -0
- package/dist/a2a/client/index.js.map +1 -0
- package/dist/a2a/client/jsonrpc.d.ts +49 -0
- package/dist/a2a/client/jsonrpc.js +85 -0
- package/dist/a2a/client/jsonrpc.js.map +1 -0
- package/dist/a2a/client/parse.d.ts +18 -0
- package/dist/a2a/client/parse.js +134 -0
- package/dist/a2a/client/parse.js.map +1 -0
- package/dist/a2a/client/types.d.ts +102 -0
- package/dist/a2a/client/types.js +26 -0
- package/dist/a2a/client/types.js.map +1 -0
- package/dist/a2a/client/url-policy.d.ts +44 -0
- package/dist/a2a/client/url-policy.js +242 -0
- package/dist/a2a/client/url-policy.js.map +1 -0
- package/dist/a2a/negotiate.d.ts +68 -0
- package/dist/a2a/negotiate.js +288 -0
- package/dist/a2a/negotiate.js.map +1 -0
- package/dist/a2a/node.d.ts +37 -0
- package/dist/a2a/node.js +155 -0
- package/dist/a2a/node.js.map +1 -0
- package/dist/a2a/server/auth.d.ts +38 -0
- package/dist/a2a/server/auth.js +112 -0
- package/dist/a2a/server/auth.js.map +1 -0
- package/dist/a2a/server/card.d.ts +19 -0
- package/dist/a2a/server/card.js +81 -0
- package/dist/a2a/server/card.js.map +1 -0
- package/dist/a2a/server/errors.d.ts +109 -0
- package/dist/a2a/server/errors.js +178 -0
- package/dist/a2a/server/errors.js.map +1 -0
- package/dist/a2a/server/handler.d.ts +22 -0
- package/dist/a2a/server/handler.js +57 -0
- package/dist/a2a/server/handler.js.map +1 -0
- package/dist/a2a/server/inbound-message.d.ts +37 -0
- package/dist/a2a/server/inbound-message.js +104 -0
- package/dist/a2a/server/inbound-message.js.map +1 -0
- package/dist/a2a/server/index.d.ts +43 -0
- package/dist/a2a/server/index.js +42 -0
- package/dist/a2a/server/index.js.map +1 -0
- package/dist/a2a/server/merchant-handler.d.ts +69 -0
- package/dist/a2a/server/merchant-handler.js +316 -0
- package/dist/a2a/server/merchant-handler.js.map +1 -0
- package/dist/a2a/server/pipeline.d.ts +69 -0
- package/dist/a2a/server/pipeline.js +329 -0
- package/dist/a2a/server/pipeline.js.map +1 -0
- package/dist/a2a/server/server.d.ts +64 -0
- package/dist/a2a/server/server.js +420 -0
- package/dist/a2a/server/server.js.map +1 -0
- package/dist/a2a/server/task-registry.d.ts +31 -0
- package/dist/a2a/server/task-registry.js +67 -0
- package/dist/a2a/server/task-registry.js.map +1 -0
- package/dist/a2a/server/throttle.d.ts +154 -0
- package/dist/a2a/server/throttle.js +289 -0
- package/dist/a2a/server/throttle.js.map +1 -0
- package/dist/a2a/server/types.d.ts +191 -0
- package/dist/a2a/server/types.js +17 -0
- package/dist/a2a/server/types.js.map +1 -0
- package/dist/a2a/server/ucp.d.ts +49 -0
- package/dist/a2a/server/ucp.js +85 -0
- package/dist/a2a/server/ucp.js.map +1 -0
- package/dist/a2a/task/index.d.ts +24 -0
- package/dist/a2a/task/index.js +22 -0
- package/dist/a2a/task/index.js.map +1 -0
- package/dist/a2a/task/ledger.d.ts +48 -0
- package/dist/a2a/task/ledger.js +65 -0
- package/dist/a2a/task/ledger.js.map +1 -0
- package/dist/a2a/task/poller.d.ts +93 -0
- package/dist/a2a/task/poller.js +184 -0
- package/dist/a2a/task/poller.js.map +1 -0
- package/dist/a2a/task/state.d.ts +72 -0
- package/dist/a2a/task/state.js +119 -0
- package/dist/a2a/task/state.js.map +1 -0
- package/dist/a2a/ucp-agent.d.ts +49 -0
- package/dist/a2a/ucp-agent.js +78 -0
- package/dist/a2a/ucp-agent.js.map +1 -0
- package/dist/agent/agent-db.d.ts +31 -0
- package/dist/agent/agent-db.js +91 -0
- package/dist/agent/agent-db.js.map +1 -0
- package/dist/agent/buyer/buyer-tools.d.ts +70 -0
- package/dist/agent/buyer/buyer-tools.js +1353 -0
- package/dist/agent/buyer/buyer-tools.js.map +1 -0
- package/dist/agent/buyer/ranker.d.ts +53 -0
- package/dist/agent/buyer/ranker.js +153 -0
- package/dist/agent/buyer/ranker.js.map +1 -0
- package/dist/agent/buyer/scheduler.d.ts +58 -0
- package/dist/agent/buyer/scheduler.js +317 -0
- package/dist/agent/buyer/scheduler.js.map +1 -0
- package/dist/agent/buyer/search-loop.d.ts +42 -0
- package/dist/agent/buyer/search-loop.js +280 -0
- package/dist/agent/buyer/search-loop.js.map +1 -0
- package/dist/agent/buyer/task-store.d.ts +178 -0
- package/dist/agent/buyer/task-store.js +637 -0
- package/dist/agent/buyer/task-store.js.map +1 -0
- package/dist/agent/buyer/types.d.ts +222 -0
- package/dist/agent/buyer/types.js +124 -0
- package/dist/agent/buyer/types.js.map +1 -0
- package/dist/agent/chat-tools.d.ts +41 -0
- package/dist/agent/chat-tools.js +193 -0
- package/dist/agent/chat-tools.js.map +1 -0
- package/dist/agent/chat-tui.d.ts +49 -0
- package/dist/agent/chat-tui.js +314 -0
- package/dist/agent/chat-tui.js.map +1 -0
- package/dist/agent/connector/fake-connector.d.ts +50 -0
- package/dist/agent/connector/fake-connector.js +138 -0
- package/dist/agent/connector/fake-connector.js.map +1 -0
- package/dist/agent/connector/http-connector.d.ts +49 -0
- package/dist/agent/connector/http-connector.js +208 -0
- package/dist/agent/connector/http-connector.js.map +1 -0
- package/dist/agent/connector/types.d.ts +103 -0
- package/dist/agent/connector/types.js +97 -0
- package/dist/agent/connector/types.js.map +1 -0
- package/dist/agent/fake-chat-model.d.ts +22 -0
- package/dist/agent/fake-chat-model.js +134 -0
- package/dist/agent/fake-chat-model.js.map +1 -0
- package/dist/agent/kernel.d.ts +258 -0
- package/dist/agent/kernel.js +1099 -0
- package/dist/agent/kernel.js.map +1 -0
- package/dist/agent/memory/schema.d.ts +32 -0
- package/dist/agent/memory/schema.js +291 -0
- package/dist/agent/memory/schema.js.map +1 -0
- package/dist/agent/memory/store.d.ts +193 -0
- package/dist/agent/memory/store.js +881 -0
- package/dist/agent/memory/store.js.map +1 -0
- package/dist/agent/memory/types.d.ts +139 -0
- package/dist/agent/memory/types.js +119 -0
- package/dist/agent/memory/types.js.map +1 -0
- package/dist/agent/memory/vault.d.ts +49 -0
- package/dist/agent/memory/vault.js +125 -0
- package/dist/agent/memory/vault.js.map +1 -0
- package/dist/agent/merchant/action-candidate.d.ts +106 -0
- package/dist/agent/merchant/action-candidate.js +241 -0
- package/dist/agent/merchant/action-candidate.js.map +1 -0
- package/dist/agent/merchant/credential-broker.d.ts +67 -0
- package/dist/agent/merchant/credential-broker.js +76 -0
- package/dist/agent/merchant/credential-broker.js.map +1 -0
- package/dist/agent/merchant/fake-merchant-client.d.ts +47 -0
- package/dist/agent/merchant/fake-merchant-client.js +143 -0
- package/dist/agent/merchant/fake-merchant-client.js.map +1 -0
- package/dist/agent/merchant/merchant-client.d.ts +49 -0
- package/dist/agent/merchant/merchant-client.js +186 -0
- package/dist/agent/merchant/merchant-client.js.map +1 -0
- package/dist/agent/merchant/merchant-tools.d.ts +74 -0
- package/dist/agent/merchant/merchant-tools.js +582 -0
- package/dist/agent/merchant/merchant-tools.js.map +1 -0
- package/dist/agent/merchant/types.d.ts +119 -0
- package/dist/agent/merchant/types.js +133 -0
- package/dist/agent/merchant/types.js.map +1 -0
- package/dist/agent/mode.d.ts +32 -0
- package/dist/agent/mode.js +34 -0
- package/dist/agent/mode.js.map +1 -0
- package/dist/agent/negotiation-chat.d.ts +81 -0
- package/dist/agent/negotiation-chat.js +330 -0
- package/dist/agent/negotiation-chat.js.map +1 -0
- package/dist/agent/session.d.ts +22 -0
- package/dist/agent/session.js +164 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +26 -0
- package/dist/agent/system-prompt.js +77 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/write-gate.d.ts +98 -0
- package/dist/agent/write-gate.js +76 -0
- package/dist/agent/write-gate.js.map +1 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.js +1139 -0
- package/dist/cli.js.map +1 -0
- package/dist/commerce/data-source.d.ts +88 -0
- package/dist/commerce/data-source.js +25 -0
- package/dist/commerce/data-source.js.map +1 -0
- package/dist/commerce/erp-source.d.ts +51 -0
- package/dist/commerce/erp-source.js +184 -0
- package/dist/commerce/erp-source.js.map +1 -0
- package/dist/commerce/fake-client.d.ts +167 -0
- package/dist/commerce/fake-client.js +549 -0
- package/dist/commerce/fake-client.js.map +1 -0
- package/dist/commerce/http-client.d.ts +73 -0
- package/dist/commerce/http-client.js +284 -0
- package/dist/commerce/http-client.js.map +1 -0
- package/dist/commerce/local-db-source.d.ts +50 -0
- package/dist/commerce/local-db-source.js +162 -0
- package/dist/commerce/local-db-source.js.map +1 -0
- package/dist/commerce/shopping-cli-source.d.ts +57 -0
- package/dist/commerce/shopping-cli-source.js +206 -0
- package/dist/commerce/shopping-cli-source.js.map +1 -0
- package/dist/commerce/types.d.ts +146 -0
- package/dist/commerce/types.js +31 -0
- package/dist/commerce/types.js.map +1 -0
- package/dist/config/profile.d.ts +122 -0
- package/dist/config/profile.js +386 -0
- package/dist/config/profile.js.map +1 -0
- package/dist/contracts/negotiation-schema.d.ts +28 -0
- package/dist/contracts/negotiation-schema.js +101 -0
- package/dist/contracts/negotiation-schema.js.map +1 -0
- package/dist/contracts/schemas.d.ts +31 -0
- package/dist/contracts/schemas.js +122 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/counterparty/a2a-direct/index.d.ts +41 -0
- package/dist/counterparty/a2a-direct/index.js +330 -0
- package/dist/counterparty/a2a-direct/index.js.map +1 -0
- package/dist/counterparty/channel.d.ts +200 -0
- package/dist/counterparty/channel.js +61 -0
- package/dist/counterparty/channel.js.map +1 -0
- package/dist/counterparty/index.d.ts +28 -0
- package/dist/counterparty/index.js +24 -0
- package/dist/counterparty/index.js.map +1 -0
- package/dist/counterparty/platform-api/index.d.ts +41 -0
- package/dist/counterparty/platform-api/index.js +65 -0
- package/dist/counterparty/platform-api/index.js.map +1 -0
- package/dist/counterparty/registry.d.ts +51 -0
- package/dist/counterparty/registry.js +71 -0
- package/dist/counterparty/registry.js.map +1 -0
- package/dist/counterparty/shopping-cli-hosted/index.d.ts +36 -0
- package/dist/counterparty/shopping-cli-hosted/index.js +337 -0
- package/dist/counterparty/shopping-cli-hosted/index.js.map +1 -0
- package/dist/discovery/agent-card/error.d.ts +28 -0
- package/dist/discovery/agent-card/error.js +31 -0
- package/dist/discovery/agent-card/error.js.map +1 -0
- package/dist/discovery/agent-card/extensions.d.ts +20 -0
- package/dist/discovery/agent-card/extensions.js +59 -0
- package/dist/discovery/agent-card/extensions.js.map +1 -0
- package/dist/discovery/agent-card/index.d.ts +29 -0
- package/dist/discovery/agent-card/index.js +38 -0
- package/dist/discovery/agent-card/index.js.map +1 -0
- package/dist/discovery/agent-card/secrets.d.ts +30 -0
- package/dist/discovery/agent-card/secrets.js +240 -0
- package/dist/discovery/agent-card/secrets.js.map +1 -0
- package/dist/discovery/agent-card/types.d.ts +110 -0
- package/dist/discovery/agent-card/types.js +37 -0
- package/dist/discovery/agent-card/types.js.map +1 -0
- package/dist/discovery/agent-card/validate.d.ts +31 -0
- package/dist/discovery/agent-card/validate.js +210 -0
- package/dist/discovery/agent-card/validate.js.map +1 -0
- package/dist/discovery/capability/error.d.ts +23 -0
- package/dist/discovery/capability/error.js +28 -0
- package/dist/discovery/capability/error.js.map +1 -0
- package/dist/discovery/capability/index.d.ts +21 -0
- package/dist/discovery/capability/index.js +21 -0
- package/dist/discovery/capability/index.js.map +1 -0
- package/dist/discovery/capability/intersect.d.ts +56 -0
- package/dist/discovery/capability/intersect.js +137 -0
- package/dist/discovery/capability/intersect.js.map +1 -0
- package/dist/discovery/catalog-source/errors.d.ts +32 -0
- package/dist/discovery/catalog-source/errors.js +41 -0
- package/dist/discovery/catalog-source/errors.js.map +1 -0
- package/dist/discovery/catalog-source/index.d.ts +30 -0
- package/dist/discovery/catalog-source/index.js +29 -0
- package/dist/discovery/catalog-source/index.js.map +1 -0
- package/dist/discovery/catalog-source/kiwi-record.d.ts +183 -0
- package/dist/discovery/catalog-source/kiwi-record.js +72 -0
- package/dist/discovery/catalog-source/kiwi-record.js.map +1 -0
- package/dist/discovery/catalog-source/kiwi-schema.d.ts +33 -0
- package/dist/discovery/catalog-source/kiwi-schema.js +106 -0
- package/dist/discovery/catalog-source/kiwi-schema.js.map +1 -0
- package/dist/discovery/catalog-source/kiwi-source.d.ts +38 -0
- package/dist/discovery/catalog-source/kiwi-source.js +318 -0
- package/dist/discovery/catalog-source/kiwi-source.js.map +1 -0
- package/dist/discovery/catalog-source/register.d.ts +48 -0
- package/dist/discovery/catalog-source/register.js +83 -0
- package/dist/discovery/catalog-source/register.js.map +1 -0
- package/dist/discovery/catalog-source/schema.d.ts +21 -0
- package/dist/discovery/catalog-source/schema.js +63 -0
- package/dist/discovery/catalog-source/schema.js.map +1 -0
- package/dist/discovery/catalog-source/source.d.ts +45 -0
- package/dist/discovery/catalog-source/source.js +197 -0
- package/dist/discovery/catalog-source/source.js.map +1 -0
- package/dist/discovery/catalog-source/types.d.ts +122 -0
- package/dist/discovery/catalog-source/types.js +30 -0
- package/dist/discovery/catalog-source/types.js.map +1 -0
- package/dist/discovery/index.d.ts +25 -0
- package/dist/discovery/index.js +25 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/resolve.d.ts +175 -0
- package/dist/discovery/resolve.js +367 -0
- package/dist/discovery/resolve.js.map +1 -0
- package/dist/discovery/ucp/error.d.ts +25 -0
- package/dist/discovery/ucp/error.js +27 -0
- package/dist/discovery/ucp/error.js.map +1 -0
- package/dist/discovery/ucp/index.d.ts +33 -0
- package/dist/discovery/ucp/index.js +28 -0
- package/dist/discovery/ucp/index.js.map +1 -0
- package/dist/discovery/ucp/intersect.d.ts +148 -0
- package/dist/discovery/ucp/intersect.js +312 -0
- package/dist/discovery/ucp/intersect.js.map +1 -0
- package/dist/discovery/ucp/resolver.d.ts +62 -0
- package/dist/discovery/ucp/resolver.js +214 -0
- package/dist/discovery/ucp/resolver.js.map +1 -0
- package/dist/discovery/ucp/types.d.ts +97 -0
- package/dist/discovery/ucp/types.js +103 -0
- package/dist/discovery/ucp/types.js.map +1 -0
- package/dist/discovery/ucp/validate.d.ts +38 -0
- package/dist/discovery/ucp/validate.js +232 -0
- package/dist/discovery/ucp/validate.js.map +1 -0
- package/dist/discovery/ucp/vendor.d.ts +60 -0
- package/dist/discovery/ucp/vendor.js +61 -0
- package/dist/discovery/ucp/vendor.js.map +1 -0
- package/dist/doctor.d.ts +26 -0
- package/dist/doctor.js +113 -0
- package/dist/doctor.js.map +1 -0
- package/dist/exit-codes.d.ts +26 -0
- package/dist/exit-codes.js +27 -0
- package/dist/exit-codes.js.map +1 -0
- package/dist/fanout/disclosure.d.ts +138 -0
- package/dist/fanout/disclosure.js +188 -0
- package/dist/fanout/disclosure.js.map +1 -0
- package/dist/fanout/index.d.ts +32 -0
- package/dist/fanout/index.js +30 -0
- package/dist/fanout/index.js.map +1 -0
- package/dist/fanout/orchestrator.d.ts +153 -0
- package/dist/fanout/orchestrator.js +439 -0
- package/dist/fanout/orchestrator.js.map +1 -0
- package/dist/fanout/policy.d.ts +128 -0
- package/dist/fanout/policy.js +130 -0
- package/dist/fanout/policy.js.map +1 -0
- package/dist/handoff/acp-commerce.d.ts +58 -0
- package/dist/handoff/acp-commerce.js +69 -0
- package/dist/handoff/acp-commerce.js.map +1 -0
- package/dist/handoff/authorization.d.ts +127 -0
- package/dist/handoff/authorization.js +107 -0
- package/dist/handoff/authorization.js.map +1 -0
- package/dist/handoff/candidate.d.ts +94 -0
- package/dist/handoff/candidate.js +172 -0
- package/dist/handoff/candidate.js.map +1 -0
- package/dist/handoff/channel.d.ts +88 -0
- package/dist/handoff/channel.js +189 -0
- package/dist/handoff/channel.js.map +1 -0
- package/dist/handoff/completion.d.ts +44 -0
- package/dist/handoff/completion.js +136 -0
- package/dist/handoff/completion.js.map +1 -0
- package/dist/handoff/delivery.d.ts +59 -0
- package/dist/handoff/delivery.js +185 -0
- package/dist/handoff/delivery.js.map +1 -0
- package/dist/handoff/destination.d.ts +39 -0
- package/dist/handoff/destination.js +99 -0
- package/dist/handoff/destination.js.map +1 -0
- package/dist/handoff/errors.d.ts +34 -0
- package/dist/handoff/errors.js +47 -0
- package/dist/handoff/errors.js.map +1 -0
- package/dist/handoff/idempotency.d.ts +51 -0
- package/dist/handoff/idempotency.js +168 -0
- package/dist/handoff/idempotency.js.map +1 -0
- package/dist/handoff/index.d.ts +46 -0
- package/dist/handoff/index.js +48 -0
- package/dist/handoff/index.js.map +1 -0
- package/dist/handoff/ledger.d.ts +94 -0
- package/dist/handoff/ledger.js +195 -0
- package/dist/handoff/ledger.js.map +1 -0
- package/dist/handoff/lifecycle.d.ts +29 -0
- package/dist/handoff/lifecycle.js +102 -0
- package/dist/handoff/lifecycle.js.map +1 -0
- package/dist/handoff/metrics.d.ts +56 -0
- package/dist/handoff/metrics.js +78 -0
- package/dist/handoff/metrics.js.map +1 -0
- package/dist/handoff/operator-approval.d.ts +143 -0
- package/dist/handoff/operator-approval.js +287 -0
- package/dist/handoff/operator-approval.js.map +1 -0
- package/dist/handoff/order-record.d.ts +104 -0
- package/dist/handoff/order-record.js +235 -0
- package/dist/handoff/order-record.js.map +1 -0
- package/dist/handoff/package.d.ts +102 -0
- package/dist/handoff/package.js +132 -0
- package/dist/handoff/package.js.map +1 -0
- package/dist/handoff/transaction.d.ts +96 -0
- package/dist/handoff/transaction.js +263 -0
- package/dist/handoff/transaction.js.map +1 -0
- package/dist/handoff/ucp-checkout/cart-channel.d.ts +111 -0
- package/dist/handoff/ucp-checkout/cart-channel.js +370 -0
- package/dist/handoff/ucp-checkout/cart-channel.js.map +1 -0
- package/dist/handoff/ucp-checkout/cart-parse.d.ts +22 -0
- package/dist/handoff/ucp-checkout/cart-parse.js +102 -0
- package/dist/handoff/ucp-checkout/cart-parse.js.map +1 -0
- package/dist/handoff/ucp-checkout/cart-types.d.ts +93 -0
- package/dist/handoff/ucp-checkout/cart-types.js +38 -0
- package/dist/handoff/ucp-checkout/cart-types.js.map +1 -0
- package/dist/handoff/ucp-checkout/channel.d.ts +159 -0
- package/dist/handoff/ucp-checkout/channel.js +636 -0
- package/dist/handoff/ucp-checkout/channel.js.map +1 -0
- package/dist/handoff/ucp-checkout/client.d.ts +88 -0
- package/dist/handoff/ucp-checkout/client.js +228 -0
- package/dist/handoff/ucp-checkout/client.js.map +1 -0
- package/dist/handoff/ucp-checkout/endpoint.d.ts +36 -0
- package/dist/handoff/ucp-checkout/endpoint.js +145 -0
- package/dist/handoff/ucp-checkout/endpoint.js.map +1 -0
- package/dist/handoff/ucp-checkout/index.d.ts +35 -0
- package/dist/handoff/ucp-checkout/index.js +36 -0
- package/dist/handoff/ucp-checkout/index.js.map +1 -0
- package/dist/handoff/ucp-checkout/parse.d.ts +71 -0
- package/dist/handoff/ucp-checkout/parse.js +349 -0
- package/dist/handoff/ucp-checkout/parse.js.map +1 -0
- package/dist/handoff/ucp-checkout/totals.d.ts +41 -0
- package/dist/handoff/ucp-checkout/totals.js +36 -0
- package/dist/handoff/ucp-checkout/totals.js.map +1 -0
- package/dist/handoff/ucp-checkout/types.d.ts +149 -0
- package/dist/handoff/ucp-checkout/types.js +58 -0
- package/dist/handoff/ucp-checkout/types.js.map +1 -0
- package/dist/handoff/url-safety.d.ts +44 -0
- package/dist/handoff/url-safety.js +121 -0
- package/dist/handoff/url-safety.js.map +1 -0
- package/dist/i18n.d.ts +24 -0
- package/dist/i18n.js +27 -0
- package/dist/i18n.js.map +1 -0
- package/dist/negotiation/action-candidate.d.ts +97 -0
- package/dist/negotiation/action-candidate.js +160 -0
- package/dist/negotiation/action-candidate.js.map +1 -0
- package/dist/negotiation/condition/evaluator.d.ts +36 -0
- package/dist/negotiation/condition/evaluator.js +123 -0
- package/dist/negotiation/condition/evaluator.js.map +1 -0
- package/dist/negotiation/context-map/index.d.ts +23 -0
- package/dist/negotiation/context-map/index.js +22 -0
- package/dist/negotiation/context-map/index.js.map +1 -0
- package/dist/negotiation/context-map/store.d.ts +51 -0
- package/dist/negotiation/context-map/store.js +186 -0
- package/dist/negotiation/context-map/store.js.map +1 -0
- package/dist/negotiation/context-map/types.d.ts +29 -0
- package/dist/negotiation/context-map/types.js +57 -0
- package/dist/negotiation/context-map/types.js.map +1 -0
- package/dist/negotiation/domain/common.d.ts +95 -0
- package/dist/negotiation/domain/common.js +216 -0
- package/dist/negotiation/domain/common.js.map +1 -0
- package/dist/negotiation/domain/envelope.d.ts +55 -0
- package/dist/negotiation/domain/envelope.js +110 -0
- package/dist/negotiation/domain/envelope.js.map +1 -0
- package/dist/negotiation/domain/identifiers.d.ts +65 -0
- package/dist/negotiation/domain/identifiers.js +130 -0
- package/dist/negotiation/domain/identifiers.js.map +1 -0
- package/dist/negotiation/domain/objects.d.ts +149 -0
- package/dist/negotiation/domain/objects.js +335 -0
- package/dist/negotiation/domain/objects.js.map +1 -0
- package/dist/negotiation/idempotency/index.d.ts +26 -0
- package/dist/negotiation/idempotency/index.js +25 -0
- package/dist/negotiation/idempotency/index.js.map +1 -0
- package/dist/negotiation/idempotency/store.d.ts +52 -0
- package/dist/negotiation/idempotency/store.js +189 -0
- package/dist/negotiation/idempotency/store.js.map +1 -0
- package/dist/negotiation/idempotency/types.d.ts +102 -0
- package/dist/negotiation/idempotency/types.js +47 -0
- package/dist/negotiation/idempotency/types.js.map +1 -0
- package/dist/negotiation/jcs.d.ts +21 -0
- package/dist/negotiation/jcs.js +114 -0
- package/dist/negotiation/jcs.js.map +1 -0
- package/dist/negotiation/ledger/event.d.ts +142 -0
- package/dist/negotiation/ledger/event.js +206 -0
- package/dist/negotiation/ledger/event.js.map +1 -0
- package/dist/negotiation/ledger/index.d.ts +26 -0
- package/dist/negotiation/ledger/index.js +25 -0
- package/dist/negotiation/ledger/index.js.map +1 -0
- package/dist/negotiation/ledger/store.d.ts +97 -0
- package/dist/negotiation/ledger/store.js +338 -0
- package/dist/negotiation/ledger/store.js.map +1 -0
- package/dist/negotiation/prompt.d.ts +34 -0
- package/dist/negotiation/prompt.js +113 -0
- package/dist/negotiation/prompt.js.map +1 -0
- package/dist/negotiation/recovery/index.d.ts +26 -0
- package/dist/negotiation/recovery/index.js +24 -0
- package/dist/negotiation/recovery/index.js.map +1 -0
- package/dist/negotiation/recovery/outbound.d.ts +49 -0
- package/dist/negotiation/recovery/outbound.js +34 -0
- package/dist/negotiation/recovery/outbound.js.map +1 -0
- package/dist/negotiation/recovery/recover.d.ts +59 -0
- package/dist/negotiation/recovery/recover.js +486 -0
- package/dist/negotiation/recovery/recover.js.map +1 -0
- package/dist/negotiation/recovery/types.d.ts +85 -0
- package/dist/negotiation/recovery/types.js +17 -0
- package/dist/negotiation/recovery/types.js.map +1 -0
- package/dist/negotiation/state/phase.d.ts +70 -0
- package/dist/negotiation/state/phase.js +200 -0
- package/dist/negotiation/state/phase.js.map +1 -0
- package/dist/negotiation/types.d.ts +139 -0
- package/dist/negotiation/types.js +24 -0
- package/dist/negotiation/types.js.map +1 -0
- package/dist/net/safe-http.d.ts +54 -0
- package/dist/net/safe-http.js +116 -0
- package/dist/net/safe-http.js.map +1 -0
- package/dist/operator/controller.d.ts +181 -0
- package/dist/operator/controller.js +784 -0
- package/dist/operator/controller.js.map +1 -0
- package/dist/operator/runner.d.ts +128 -0
- package/dist/operator/runner.js +248 -0
- package/dist/operator/runner.js.map +1 -0
- package/dist/operator/store.d.ts +39 -0
- package/dist/operator/store.js +169 -0
- package/dist/operator/store.js.map +1 -0
- package/dist/operator/strategy.d.ts +54 -0
- package/dist/operator/strategy.js +249 -0
- package/dist/operator/strategy.js.map +1 -0
- package/dist/operator/tui.d.ts +27 -0
- package/dist/operator/tui.js +395 -0
- package/dist/operator/tui.js.map +1 -0
- package/dist/operator/types.d.ts +224 -0
- package/dist/operator/types.js +17 -0
- package/dist/operator/types.js.map +1 -0
- package/dist/product-buyer.d.ts +74 -0
- package/dist/product-buyer.js +161 -0
- package/dist/product-buyer.js.map +1 -0
- package/dist/product-cli.d.ts +56 -0
- package/dist/product-cli.js +175 -0
- package/dist/product-cli.js.map +1 -0
- package/dist/product-compat.d.ts +50 -0
- package/dist/product-compat.js +63 -0
- package/dist/product-compat.js.map +1 -0
- package/dist/product-init.d.ts +73 -0
- package/dist/product-init.js +203 -0
- package/dist/product-init.js.map +1 -0
- package/dist/product-publish.d.ts +85 -0
- package/dist/product-publish.js +216 -0
- package/dist/product-publish.js.map +1 -0
- package/dist/protocol/legacy-shopping-negotiation/adapter.d.ts +42 -0
- package/dist/protocol/legacy-shopping-negotiation/adapter.js +561 -0
- package/dist/protocol/legacy-shopping-negotiation/adapter.js.map +1 -0
- package/dist/protocol/legacy-shopping-negotiation/mapping.d.ts +78 -0
- package/dist/protocol/legacy-shopping-negotiation/mapping.js +321 -0
- package/dist/protocol/legacy-shopping-negotiation/mapping.js.map +1 -0
- package/dist/protocol/legacy-shopping-negotiation/money.d.ts +49 -0
- package/dist/protocol/legacy-shopping-negotiation/money.js +70 -0
- package/dist/protocol/legacy-shopping-negotiation/money.js.map +1 -0
- package/dist/protocol/legacy-shopping-negotiation/types.d.ts +107 -0
- package/dist/protocol/legacy-shopping-negotiation/types.js +34 -0
- package/dist/protocol/legacy-shopping-negotiation/types.js.map +1 -0
- package/dist/runtime/buyer-policy.d.ts +58 -0
- package/dist/runtime/buyer-policy.js +89 -0
- package/dist/runtime/buyer-policy.js.map +1 -0
- package/dist/runtime/fake-model.d.ts +77 -0
- package/dist/runtime/fake-model.js +307 -0
- package/dist/runtime/fake-model.js.map +1 -0
- package/dist/runtime/foreground.d.ts +56 -0
- package/dist/runtime/foreground.js +97 -0
- package/dist/runtime/foreground.js.map +1 -0
- package/dist/runtime/heartbeat.d.ts +36 -0
- package/dist/runtime/heartbeat.js +49 -0
- package/dist/runtime/heartbeat.js.map +1 -0
- package/dist/runtime/merchant-turn.d.ts +35 -0
- package/dist/runtime/merchant-turn.js +20 -0
- package/dist/runtime/merchant-turn.js.map +1 -0
- package/dist/runtime/model.d.ts +40 -0
- package/dist/runtime/model.js +86 -0
- package/dist/runtime/model.js.map +1 -0
- package/dist/runtime/negotiation-turn.d.ts +101 -0
- package/dist/runtime/negotiation-turn.js +317 -0
- package/dist/runtime/negotiation-turn.js.map +1 -0
- package/dist/runtime/tools.d.ts +64 -0
- package/dist/runtime/tools.js +236 -0
- package/dist/runtime/tools.js.map +1 -0
- package/dist/supervisor/init.d.ts +31 -0
- package/dist/supervisor/init.js +222 -0
- package/dist/supervisor/init.js.map +1 -0
- package/dist/supervisor/logs.d.ts +28 -0
- package/dist/supervisor/logs.js +101 -0
- package/dist/supervisor/logs.js.map +1 -0
- package/dist/supervisor/manage.d.ts +72 -0
- package/dist/supervisor/manage.js +419 -0
- package/dist/supervisor/manage.js.map +1 -0
- package/dist/supervisor/manifest.d.ts +69 -0
- package/dist/supervisor/manifest.js +209 -0
- package/dist/supervisor/manifest.js.map +1 -0
- package/dist/supervisor/stack-config.d.ts +79 -0
- package/dist/supervisor/stack-config.js +262 -0
- package/dist/supervisor/stack-config.js.map +1 -0
- package/dist/supervisor/wrapper.d.ts +17 -0
- package/dist/supervisor/wrapper.js +138 -0
- package/dist/supervisor/wrapper.js.map +1 -0
- package/dist/trust/identity/auth-verifier.d.ts +96 -0
- package/dist/trust/identity/auth-verifier.js +166 -0
- package/dist/trust/identity/auth-verifier.js.map +1 -0
- package/dist/trust/identity/identity-binding.d.ts +63 -0
- package/dist/trust/identity/identity-binding.js +59 -0
- package/dist/trust/identity/identity-binding.js.map +1 -0
- package/dist/trust/identity/index.d.ts +38 -0
- package/dist/trust/identity/index.js +31 -0
- package/dist/trust/identity/index.js.map +1 -0
- package/dist/trust/identity/jws.d.ts +64 -0
- package/dist/trust/identity/jws.js +178 -0
- package/dist/trust/identity/jws.js.map +1 -0
- package/dist/trust/identity/keys.d.ts +71 -0
- package/dist/trust/identity/keys.js +118 -0
- package/dist/trust/identity/keys.js.map +1 -0
- package/dist/trust/identity/message-signature.d.ts +105 -0
- package/dist/trust/identity/message-signature.js +297 -0
- package/dist/trust/identity/message-signature.js.map +1 -0
- package/dist/trust/identity/nonce.d.ts +45 -0
- package/dist/trust/identity/nonce.js +50 -0
- package/dist/trust/identity/nonce.js.map +1 -0
- package/dist/trust/identity/signature-base.d.ts +84 -0
- package/dist/trust/identity/signature-base.js +261 -0
- package/dist/trust/identity/signature-base.js.map +1 -0
- package/dist/trust/identity/trust-policy.d.ts +92 -0
- package/dist/trust/identity/trust-policy.js +95 -0
- package/dist/trust/identity/trust-policy.js.map +1 -0
- package/dist/trust/index.d.ts +21 -0
- package/dist/trust/index.js +22 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/records/evaluator.d.ts +76 -0
- package/dist/trust/records/evaluator.js +122 -0
- package/dist/trust/records/evaluator.js.map +1 -0
- package/dist/trust/records/index.d.ts +28 -0
- package/dist/trust/records/index.js +26 -0
- package/dist/trust/records/index.js.map +1 -0
- package/dist/trust/records/store.d.ts +75 -0
- package/dist/trust/records/store.js +339 -0
- package/dist/trust/records/store.js.map +1 -0
- package/dist/trust/records/types.d.ts +159 -0
- package/dist/trust/records/types.js +40 -0
- package/dist/trust/records/types.js.map +1 -0
- package/dist/tui/banner.d.ts +46 -0
- package/dist/tui/banner.js +99 -0
- package/dist/tui/banner.js.map +1 -0
- package/dist/tui/styles.d.ts +70 -0
- package/dist/tui/styles.js +197 -0
- package/dist/tui/styles.js.map +1 -0
- package/dist/tui/theme.d.ts +63 -0
- package/dist/tui/theme.js +136 -0
- package/dist/tui/theme.js.map +1 -0
- package/examples/profiles/buyer.deepseek.yaml +34 -0
- package/examples/profiles/buyer.fake.yaml +36 -0
- package/examples/profiles/buyer.local.yaml +40 -0
- package/examples/profiles/merchant.deepseek.yaml +32 -0
- package/examples/profiles/merchant.fake.yaml +31 -0
- package/examples/profiles/merchant.local.yaml +34 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/operator/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC,OAAO,EACL,cAAc,GAQf,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,qBAAqB,GAAiB,YAAY,CAAC;AAEhE,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAC5B,QAA6B,EAC7B,IAAkB,EAClB,OAAqB;IAErB,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC;IAC5C,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,gBAAgB,CAAC;IACnD,sEAAsE;IACtE,IAAI,QAAQ,CAAC,oBAAoB,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,gBAAgB,CAAC;IAC7F,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,GAAG;QAAE,OAAO,gBAAgB,CAAC;IAC9D,MAAM,QAAQ,GACZ,OAAO,CAAC,IAAI,KAAK,OAAO;QACtB,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,IAAI,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC3F,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC1B,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,KAAK,EAAE;YACL,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;YACnB,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;SACb;QACD,WAAW,EAAE,CAAC;KACf,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB,EAAE,WAAmB;IACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAClF,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,KAAoB;IAC5E,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IACvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,kBAAkB;YACrB,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,yBAAyB;YAC5B,sEAAsE;YACtE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzC,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrD,CAAC;YACD,MAAM;QACR,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpC,oEAAoE;YACpE,qEAAqE;YACrE,iEAAiE;YACjE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzF,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,UAAU,EAAE,KAAK,CAAC,WAAW;iBAC9B,CAAC,CAAC;gBACH,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,yBAAyB;YAC5B,OAAO,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YACpC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,cAAc;YACjB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM;QACR,KAAK,oBAAoB;YACvB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,MAAM;QACR,KAAK,qBAAqB;YACxB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,MAAM;QACR,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACxD,KAAK,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;YACtC,IAAI,SAAS,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;gBACzC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;YACvF,CAAC;iBAAM,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC7C,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;YAClF,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,SAAS;gBAAE,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC;YAC7C,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,SAAS;gBAAE,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC;YAC7C,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpD,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;YAC5B,MAAM;QACR,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,SAAS;gBAAE,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;YAC/C,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpD,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,SAAS;gBAAE,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC;YAC9C,KAAK,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;oBAC7C,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC/B,CAAC;qBAAM,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,SAAS,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;oBAChF,mEAAmE;oBACnE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC/B,CAAC;YACH,CAAC;YACD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpD,uEAAuE;YACvE,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YACxF,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AA8DD,MAAM,OAAO,kBAAkB;IACpB,OAAO,CAAe;IACd,KAAK,CAAqB;IAC1B,MAAM,CAAiB;IACvB,MAAM,CAAoB;IAC1B,GAAG,CAAe;IAClB,MAAM,CAAS;IACf,KAAK,CAAgB;IACrB,SAAS,GAAoB,EAAE,CAAC;IACjD,oEAAoE;IACnD,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjE,wEAAwE;IACvD,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IACxD,+EAA+E;IAC9D,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,6EAA6E;IAC7E,sBAAsB,CAAU;IACxB,QAAQ,GAAG,CAAC,CAAC;IACb,YAAY,GAAG,CAAC,CAAC;IAEzB,YAAY,OAAkC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,oBAAoB,EAAE,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,MAAM,CAAC;QAClF,sEAAsE;QACtE,oEAAoE;QACpE,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,oEAAoE;QACpE,2BAA2B;QAC3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACvD,IACE,SAAS,CAAC,MAAM,KAAK,mBAAmB;gBACxC,SAAS,CAAC,MAAM,KAAK,aAAa;gBAClC,SAAS,CAAC,MAAM,KAAK,UAAU;gBAC/B,SAAS,CAAC,MAAM,KAAK,WAAW,EAChC,CAAC;gBACD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAEpE,QAAQ,CAAC,UAA2B;QAQ1C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,OAAO;YACL,wEAAwE;YACxE,oEAAoE;YACpE,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC5D,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU;SACX,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAAoB;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,eAAe;QACrB,MAAM,OAAO,GAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC;YAC5D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC/C,4DAA4D;gBAC5D,sDAAsD;gBACtD,IACE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;oBAC5C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAC9B,CAAC;oBACD,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,IAAI;wBAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,qBAAqB,GAAG,GAAG,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,sBAAsB,KAAK,SAAS,EAAE,CAAC;YACvE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,sBAAsB,CAAC;YAChE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC/C,IACE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;oBAC5C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EACjC,CAAC;oBACD,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,IAAI;wBAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,iEAAiE;YACjE,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,oDAAoD;aAC7D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;aACxC,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,0DAA0D;YAC1D,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC5B,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,OAAO,CAAC,IAAkB,EAAE,OAAiC;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,IAAI,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnF,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACtD,sEAAsE;QACtE,IAAI,IAAI,KAAK,WAAW,IAAI,OAAO,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,IAAI;gBACJ,MAAM,EAAE,8CAA8C;aACvD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;SAC5B,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,8EAA8E;IAE9E;;;OAGG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC7E,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;QAC9E,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,yCAAyC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzC,cAAc,EAAE,IAAI,CAAC,kBAAkB;YACvC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAE1C,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QACvB,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAc;YAC3B,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK;YACL,MAAM,EACJ,KAAK,KAAK,gBAAgB;gBACxB,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,KAAK,KAAK,aAAa;oBACvB,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,UAAU;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,QAAQ,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzC,sEAAsE;QACtE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,EAAE,SAAS,EAAE;SACvB,CAAC,CAAC;QAEH,IAAI,KAAK,KAAK,gBAAgB;YAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;QAChF,IAAI,KAAK,KAAK,aAAa;YAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;QAExE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,MAAM,GAA+C;gBACzD,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,WAAW;gBACzB,aAAa,EAAE,SAAS,CAAC,aAAa;aACvC,CAAC;YACF,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YACjF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QACvF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,WAAmB;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,WAAW,EAAE,EAAE,CAAC;QAC1E,8EAA8E;QAC9E,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QACzD,CAAC;QACD,yEAAyE;QACzE,iEAAiE;QACjE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uCAAuC;YACvC,kDAAkD;YAClD,oDAAoD;YACpD,+CAA+C;YAC/C,gDAAgD;YAChD,uCAAuC;YACvC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC3E,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE;oBACP,YAAY,EAAE,WAAW;oBACzB,UAAU,EAAE,QAAQ;oBACpB,MAAM,EAAE,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAC5E;aACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACpF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,qEAAqE;YACrE,qEAAqE;YACrE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,gBAAgB,GAKlB;YACF,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;YACjC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;SAC5C,CAAC;QACF,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnD,gBAAgB,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,YAAY,EAAE,WAAW;gBACzB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5F;SACF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAElC,MAAM,MAAM,GAA2C;YACrD,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;YAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,OAAO,CAAC,WAAoB;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtE,MAAM,EAAE,GACN,WAAW;YACX,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB;gBAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAClC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,MAAM,EACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc;oBACzC,CAAC,CAAC,+CAA+C;oBACjD,CAAC,CAAC,WAAW;aAClB,CAAC;QACJ,CAAC;QACD,IACE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB;YAChD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,KAAK,EAAE,EACvC,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACnF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAChD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEO,kBAAkB,CAAC,WAAoB;QAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9F,IAAI,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,MAAM,CAAC,WAAoB,EAAE,MAAe;QAChD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/D,MAAM,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IACE,CAAC,SAAS;YACV,CAAC,SAAS,CAAC,MAAM,KAAK,mBAAmB,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,EAChF,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SAC3E,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,6BAA6B,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE;SACpF,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,WAAoB;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC5E,MAAM,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IACE,CAAC,SAAS;YACV,CAAC,SAAS,CAAC,MAAM,KAAK,mBAAmB,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,EAChF,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACtD,CAAC;QAED,wEAAwE;QACxE,wEAAwE;QACxE,kEAAkE;QAClE,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACnE,IACE,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,KAAK,CAAC,IAAI,KAAK,WAAW;YAC1B,KAAK,CAAC,IAAI,KAAK,cAAc;YAC7B,KAAK,CAAC,IAAI,KAAK,MAAM,EACrB,CAAC;YACD,0DAA0D;YAC1D,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE;aACrD,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,MAAM,EACJ,yBAAyB,KAAK,CAAC,OAAO,UAAU;wBAChD,2DAA2D;iBAC9D,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,OAAO,UAAU,EAAE,CAAC;YACvE,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,UAAU;aAC7C,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;SACpD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACnF,CAAC,CAAC;QAEH,4EAA4E;QAC5E,MAAM,IAAI,CAAC,MAAM,CAAC;YAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;SAChD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IAE9E,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,8EAA8E;IAE9E,GAAG;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAC7C,CAAC;QACF,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,UAAU;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,UAAU;gBAC7B,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;YACjC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;YAClD,iBAAiB,EAAE,UAAU;SAC9B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,CAAC,KAAK,GAAG,EAAE;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK;QACH,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC;IAED,gFAAgF;IAEhF;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnE,MAAM,MAAM,GAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,0CAA0C,CAAC,CAAC;gBAChF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE;oBACP,YAAY,EAAE,SAAS;oBACvB,UAAU,EAAE,WAAW;oBACvB,MAAM,EAAE,mBAAmB;iBAC5B;aACF,CAAC,CAAC;YACH,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
* NegotiationRunner — the safe v0.2.0 seam between the operator control
|
|
18
|
+
* plane and the negotiation runtime (follow-up §3).
|
|
19
|
+
*
|
|
20
|
+
* Fully pausing the existing runNegotiationTurn would be a large unsafe
|
|
21
|
+
* rewrite, so instead the turn is split at the candidate boundary:
|
|
22
|
+
*
|
|
23
|
+
* prepare(): claim + snapshot + generate an UNTRUSTED candidate decision.
|
|
24
|
+
* No Commerce write happens here.
|
|
25
|
+
* submit(): the single formal write path — buyer local policy gate, then
|
|
26
|
+
* CommerceClient.submitNegotiationDecision with the content-
|
|
27
|
+
* addressed idempotency key, then claim settlement. Nothing is
|
|
28
|
+
* faked: every write goes through the CommerceClient boundary.
|
|
29
|
+
* abandon(): best-effort claim release for candidates that will not be
|
|
30
|
+
* submitted (reject / revise / shutdown). Never completes.
|
|
31
|
+
*
|
|
32
|
+
* DeterministicNegotiationRunner is the v0.2.0 adapter: it derives the
|
|
33
|
+
* candidate with the same pure rule functions as the fake model
|
|
34
|
+
* (runtime/fake-model.ts), so the TUI works offline against a real gateway
|
|
35
|
+
* or the FakeCommerceClient. NEXT INTEGRATION HOOK: a PiNegotiationRunner
|
|
36
|
+
* that generates the candidate with the embedded Pi loop (and later
|
|
37
|
+
* Hermes/OpenClaw ACP backends) while keeping this prepare/submit contract.
|
|
38
|
+
*/
|
|
39
|
+
import type { AgentProfile } from "../config/profile.js";
|
|
40
|
+
import { type CommerceClient } from "../commerce/types.js";
|
|
41
|
+
import { type NegotiationDecision, type PolicyResult } from "../negotiation/types.js";
|
|
42
|
+
import type { CandidateBinding, StrategyDirective } from "./types.js";
|
|
43
|
+
import type { DecisionHints } from "../runtime/fake-model.js";
|
|
44
|
+
/** A claimed turn with a generated, not-yet-submitted candidate decision. */
|
|
45
|
+
export interface PreparedCandidate {
|
|
46
|
+
binding: CandidateBinding;
|
|
47
|
+
decision: NegotiationDecision;
|
|
48
|
+
/** Concise decision-summary lines (no chain-of-thought, no private numbers). */
|
|
49
|
+
analysis: string[];
|
|
50
|
+
conversation_status: string;
|
|
51
|
+
/** Last counterpart public message, for the TUI transcript pane. */
|
|
52
|
+
counterpart_message?: string;
|
|
53
|
+
/** Last counterpart message's action, if any (for consensus detection). */
|
|
54
|
+
counterpart_action?: NegotiationDecision["action"];
|
|
55
|
+
}
|
|
56
|
+
export interface SubmitOutcome {
|
|
57
|
+
policy_result: PolicyResult;
|
|
58
|
+
/** completed = gateway accepted/escalated and claim completed; failed = claim failed. */
|
|
59
|
+
settlement: "completed" | "failed";
|
|
60
|
+
}
|
|
61
|
+
export interface NegotiationRunner {
|
|
62
|
+
/**
|
|
63
|
+
* Claim the next pending message and generate a candidate. No write.
|
|
64
|
+
* `skipMessageIds` excludes messages the operator rejected this session;
|
|
65
|
+
* they stay reclaimable for later runs (abandoned, never completed).
|
|
66
|
+
* `directives` are the applied session/turn strategy directives that guide
|
|
67
|
+
* candidate generation (design §7) — the compiled hints never widen the
|
|
68
|
+
* profile's HardPolicy, which the gates re-check at submit time.
|
|
69
|
+
*/
|
|
70
|
+
prepare(options?: {
|
|
71
|
+
skipMessageIds?: ReadonlySet<number>;
|
|
72
|
+
directives?: readonly StrategyDirective[];
|
|
73
|
+
}): Promise<PreparedCandidate | undefined>;
|
|
74
|
+
/** Submit an approved candidate through the Commerce boundary and settle. */
|
|
75
|
+
submit(prepared: Pick<PreparedCandidate, "binding" | "decision">): Promise<SubmitOutcome>;
|
|
76
|
+
/** Best-effort abandon of the claim behind a candidate. Never completes. */
|
|
77
|
+
abandon(prepared: Pick<PreparedCandidate, "binding">, reason: string): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Start claim heartbeats while a candidate sits awaiting approval (design
|
|
80
|
+
* §10): the claim must not be stolen by stale recovery during a long human
|
|
81
|
+
* decision. Stop before submit/abandon.
|
|
82
|
+
*/
|
|
83
|
+
startHeartbeat(prepared: Pick<PreparedCandidate, "binding">): void;
|
|
84
|
+
stopHeartbeat(): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Translate the applied strategy directives into structured generation
|
|
88
|
+
* hints for the deterministic backends (design §7). Rules mirror
|
|
89
|
+
* StrategyEngine.compile: budget/floor/quantity directives carry numbers,
|
|
90
|
+
* soft preferences are recognized by their wording. Unmatched preferences
|
|
91
|
+
* stay recorded and visible (/strategy, /why) but have no rule-based effect
|
|
92
|
+
* in the deterministic backend — an LLM backend (v0.2.1) consumes them.
|
|
93
|
+
*/
|
|
94
|
+
export declare function compileDirectiveHints(directives: readonly StrategyDirective[]): DecisionHints;
|
|
95
|
+
/**
|
|
96
|
+
* Clamp compiled hints to the profile's HardPolicy (design §7.1): directives
|
|
97
|
+
* may only NARROW the envelope the deterministic backend works with. A
|
|
98
|
+
* confirmed relax directive stays recorded (/strategy, /why) but its hint is
|
|
99
|
+
* clamped here, so generation can never exceed what the submit-time gates
|
|
100
|
+
* (buyer local policy + gateway policy gate) enforce from the profile.
|
|
101
|
+
*/
|
|
102
|
+
export declare function clampHintsToHardPolicy(profile: AgentProfile, hints: DecisionHints): DecisionHints;
|
|
103
|
+
/**
|
|
104
|
+
* v0.2.0 deterministic adapter. Candidate generation reuses the pure
|
|
105
|
+
* rule-based decision functions; submission reuses the same gates as the
|
|
106
|
+
* headless turn (buyer local policy -> gateway policy gate -> settlement).
|
|
107
|
+
*/
|
|
108
|
+
export interface DeterministicRunnerOptions {
|
|
109
|
+
/** Claim-heartbeat cadence while awaiting approval (defaults to runtime value). */
|
|
110
|
+
heartbeatIntervalMs?: number;
|
|
111
|
+
}
|
|
112
|
+
export declare class DeterministicNegotiationRunner implements NegotiationRunner {
|
|
113
|
+
private readonly profile;
|
|
114
|
+
private readonly client;
|
|
115
|
+
private readonly heartbeatIntervalMs;
|
|
116
|
+
private heartbeat?;
|
|
117
|
+
constructor(profile: AgentProfile, client: CommerceClient, options?: DeterministicRunnerOptions);
|
|
118
|
+
startHeartbeat(prepared: Pick<PreparedCandidate, "binding">): void;
|
|
119
|
+
stopHeartbeat(): Promise<void>;
|
|
120
|
+
prepare(options?: {
|
|
121
|
+
skipMessageIds?: ReadonlySet<number>;
|
|
122
|
+
directives?: readonly StrategyDirective[];
|
|
123
|
+
/** Direct hints (e.g. task-derived quantity/target/budget), merged over directives. */
|
|
124
|
+
hints?: DecisionHints;
|
|
125
|
+
}): Promise<PreparedCandidate | undefined>;
|
|
126
|
+
submit(prepared: Pick<PreparedCandidate, "binding" | "decision">): Promise<SubmitOutcome>;
|
|
127
|
+
abandon(prepared: Pick<PreparedCandidate, "binding">, reason: string): Promise<void>;
|
|
128
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 harrylabsj
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { idempotencyKey } from "../commerce/types.js";
|
|
17
|
+
import { PROTOCOL_VERSION, } from "../negotiation/types.js";
|
|
18
|
+
import { checkBuyerLocalPolicy, localBuyerPolicyResult } from "../runtime/buyer-policy.js";
|
|
19
|
+
import { HEARTBEAT_INTERVAL_MS } from "../runtime/negotiation-turn.js";
|
|
20
|
+
import { startClaimHeartbeat } from "../runtime/heartbeat.js";
|
|
21
|
+
import { deterministicBuyerDecision, deterministicMerchantDecision, } from "../runtime/fake-model.js";
|
|
22
|
+
import { submitIdempotencyKey } from "../runtime/tools.js";
|
|
23
|
+
/**
|
|
24
|
+
* Translate the applied strategy directives into structured generation
|
|
25
|
+
* hints for the deterministic backends (design §7). Rules mirror
|
|
26
|
+
* StrategyEngine.compile: budget/floor/quantity directives carry numbers,
|
|
27
|
+
* soft preferences are recognized by their wording. Unmatched preferences
|
|
28
|
+
* stay recorded and visible (/strategy, /why) but have no rule-based effect
|
|
29
|
+
* in the deterministic backend — an LLM backend (v0.2.1) consumes them.
|
|
30
|
+
*/
|
|
31
|
+
export function compileDirectiveHints(directives) {
|
|
32
|
+
const hints = {};
|
|
33
|
+
for (const directive of directives) {
|
|
34
|
+
// Numeric budget/floor hints only come from tighten/relax constraint
|
|
35
|
+
// directives — a soft_preference mentioning 预算/底价 must not override.
|
|
36
|
+
if ((directive.kind === "tighten" || directive.kind === "relax") &&
|
|
37
|
+
/预算|budget/i.test(directive.directive)) {
|
|
38
|
+
const amount = /\d+(?:\.\d+)?/.exec(directive.directive);
|
|
39
|
+
if (amount !== null)
|
|
40
|
+
hints.buyer_max_total_price = Number(amount[0]);
|
|
41
|
+
}
|
|
42
|
+
if ((directive.kind === "tighten" || directive.kind === "relax") &&
|
|
43
|
+
/底价|最低价|floor/i.test(directive.directive)) {
|
|
44
|
+
const amount = /\d+(?:\.\d+)?/.exec(directive.directive);
|
|
45
|
+
if (amount !== null)
|
|
46
|
+
hints.merchant_min_unit_price = Number(amount[0]);
|
|
47
|
+
}
|
|
48
|
+
if (/最多(买|要)?\s*\d+|at most \d+/i.test(directive.directive)) {
|
|
49
|
+
const amount = /\d+/.exec(directive.directive);
|
|
50
|
+
if (amount !== null) {
|
|
51
|
+
const cap = Number(amount[0]);
|
|
52
|
+
// A degenerate cap ("最多买 0 件") would produce 0-quantity quotes.
|
|
53
|
+
if (cap >= 1) {
|
|
54
|
+
hints.quantity_cap = Math.min(hints.quantity_cap ?? Number.POSITIVE_INFINITY, cap);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (/包邮|免运费|免配送费|free shipping/i.test(directive.directive)) {
|
|
59
|
+
hints.prefer_free_shipping = true;
|
|
60
|
+
}
|
|
61
|
+
if (/只问|先问|仅询问|only ask|just ask/i.test(directive.directive)) {
|
|
62
|
+
hints.ask_only = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return hints;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Clamp compiled hints to the profile's HardPolicy (design §7.1): directives
|
|
69
|
+
* may only NARROW the envelope the deterministic backend works with. A
|
|
70
|
+
* confirmed relax directive stays recorded (/strategy, /why) but its hint is
|
|
71
|
+
* clamped here, so generation can never exceed what the submit-time gates
|
|
72
|
+
* (buyer local policy + gateway policy gate) enforce from the profile.
|
|
73
|
+
*/
|
|
74
|
+
export function clampHintsToHardPolicy(profile, hints) {
|
|
75
|
+
const clamped = { ...hints };
|
|
76
|
+
const budget = profile.buyer_policy?.max_total_price_private;
|
|
77
|
+
if (clamped.buyer_max_total_price !== undefined && budget !== undefined) {
|
|
78
|
+
clamped.buyer_max_total_price = Math.min(clamped.buyer_max_total_price, budget);
|
|
79
|
+
}
|
|
80
|
+
const floor = profile.merchant_policy?.min_unit_price_private;
|
|
81
|
+
if (clamped.merchant_min_unit_price !== undefined && floor !== undefined) {
|
|
82
|
+
clamped.merchant_min_unit_price = Math.max(clamped.merchant_min_unit_price, floor);
|
|
83
|
+
}
|
|
84
|
+
return clamped;
|
|
85
|
+
}
|
|
86
|
+
/** Concise, private-number-free decision summary lines for the TUI. */
|
|
87
|
+
function buildAnalysis(profile, snapshot, decision) {
|
|
88
|
+
const lines = [];
|
|
89
|
+
const proposal = decision.proposal;
|
|
90
|
+
if (profile.role === "buyer" && profile.buyer_policy && proposal) {
|
|
91
|
+
const policy = profile.buyer_policy;
|
|
92
|
+
const total = proposal.unit_price * proposal.quantity + proposal.delivery.fee;
|
|
93
|
+
lines.push(total <= policy.max_total_price_private ? "总价在私有预算约束内" : "总价超出私有预算约束");
|
|
94
|
+
const etaOk = Date.parse(proposal.delivery.eta_end) <= Date.parse(policy.acceptable_eta_latest);
|
|
95
|
+
lines.push(etaOk ? "交期在可接受范围内" : "交期超出可接受范围");
|
|
96
|
+
const refs = new Set(proposal.after_sales_policy_refs);
|
|
97
|
+
const missing = policy.required_after_sales_terms.filter((term) => !refs.has(term));
|
|
98
|
+
lines.push(missing.length === 0 ? "售后条款满足要求" : `售后条款缺少 ${missing.length} 项必需条款`);
|
|
99
|
+
}
|
|
100
|
+
if (profile.role === "merchant" && proposal) {
|
|
101
|
+
const floor = profile.merchant_policy?.min_unit_price_private;
|
|
102
|
+
if (floor !== undefined) {
|
|
103
|
+
lines.push(proposal.unit_price >= floor ? "报价不低于私有底价" : "报价低于私有底价,将被策略门拦截");
|
|
104
|
+
}
|
|
105
|
+
lines.push(proposal.quantity <= snapshot.stock.quantity ? "库存数量可满足" : "库存不足,无法满足该数量");
|
|
106
|
+
}
|
|
107
|
+
if (decision.action === "escalate")
|
|
108
|
+
lines.push("建议转人工处理");
|
|
109
|
+
if (decision.action === "decline")
|
|
110
|
+
lines.push("建议拒绝当前磋商");
|
|
111
|
+
lines.push(`理由代码: ${decision.reason_codes.join(", ") || "无"}`);
|
|
112
|
+
return lines;
|
|
113
|
+
}
|
|
114
|
+
export class DeterministicNegotiationRunner {
|
|
115
|
+
profile;
|
|
116
|
+
client;
|
|
117
|
+
heartbeatIntervalMs;
|
|
118
|
+
heartbeat;
|
|
119
|
+
constructor(profile, client, options) {
|
|
120
|
+
this.profile = profile;
|
|
121
|
+
this.client = client;
|
|
122
|
+
this.heartbeatIntervalMs = options?.heartbeatIntervalMs ?? HEARTBEAT_INTERVAL_MS;
|
|
123
|
+
}
|
|
124
|
+
startHeartbeat(prepared) {
|
|
125
|
+
// Never stack beaters: a newer claim supersedes the older one's heartbeat.
|
|
126
|
+
this.heartbeat?.stop();
|
|
127
|
+
this.heartbeat = startClaimHeartbeat(this.client, prepared.binding.message_id, this.heartbeatIntervalMs);
|
|
128
|
+
}
|
|
129
|
+
async stopHeartbeat() {
|
|
130
|
+
const beat = this.heartbeat;
|
|
131
|
+
this.heartbeat = undefined;
|
|
132
|
+
await beat?.stop();
|
|
133
|
+
}
|
|
134
|
+
async prepare(options) {
|
|
135
|
+
const pending = await this.client.listPendingMessages();
|
|
136
|
+
const target = pending.find((m) => options?.skipMessageIds?.has(m.message_id) !== true);
|
|
137
|
+
if (!target)
|
|
138
|
+
return undefined;
|
|
139
|
+
const idem = idempotencyKey(this.profile.agent_id, target.message_id, PROTOCOL_VERSION);
|
|
140
|
+
const claim = await this.client.claimMessage({
|
|
141
|
+
conversation_id: target.conversation_id,
|
|
142
|
+
message_id: target.message_id,
|
|
143
|
+
idempotency_key: idem,
|
|
144
|
+
});
|
|
145
|
+
if (!claim.claimed)
|
|
146
|
+
return undefined;
|
|
147
|
+
// Any failure AFTER the claim must release it — a stuck processing claim
|
|
148
|
+
// would silently block this message from ever being re-pending.
|
|
149
|
+
const release = (err) => {
|
|
150
|
+
void this.client
|
|
151
|
+
.abandonClaim({
|
|
152
|
+
message_id: target.message_id,
|
|
153
|
+
idempotency_key: idem,
|
|
154
|
+
error: `prepare failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
155
|
+
})
|
|
156
|
+
.catch(() => undefined);
|
|
157
|
+
throw err;
|
|
158
|
+
};
|
|
159
|
+
const snapshot = await this.client
|
|
160
|
+
.getNegotiationSnapshot({
|
|
161
|
+
conversation_id: target.conversation_id,
|
|
162
|
+
message_id: target.message_id,
|
|
163
|
+
})
|
|
164
|
+
.catch(release);
|
|
165
|
+
// Seed with the profile's private floor so the merchant decision always
|
|
166
|
+
// knows its floor (convergence: accept a counter at/above the floor).
|
|
167
|
+
const profileHints = {};
|
|
168
|
+
if (this.profile.role === "merchant" &&
|
|
169
|
+
this.profile.merchant_policy?.min_unit_price_private !== undefined) {
|
|
170
|
+
profileHints.merchant_min_unit_price = this.profile.merchant_policy.min_unit_price_private;
|
|
171
|
+
}
|
|
172
|
+
const hints = clampHintsToHardPolicy(this.profile, { ...profileHints, ...compileDirectiveHints(options?.directives ?? []), ...options?.hints });
|
|
173
|
+
const decision = this.profile.role === "buyer"
|
|
174
|
+
? deterministicBuyerDecision(snapshot, this.profile.buyer_policy ?? {
|
|
175
|
+
max_total_price_private: Number.POSITIVE_INFINITY,
|
|
176
|
+
acceptable_eta_latest: "9999-12-31T23:59:59Z",
|
|
177
|
+
required_after_sales_terms: [],
|
|
178
|
+
}, hints)
|
|
179
|
+
: deterministicMerchantDecision(snapshot, this.profile.merchant_policy?.quote_ttl_seconds ?? 300, hints);
|
|
180
|
+
const counterpart = [...snapshot.messages]
|
|
181
|
+
.reverse()
|
|
182
|
+
.find((m) => m.sender_role !== snapshot.role);
|
|
183
|
+
const prepared = {
|
|
184
|
+
binding: {
|
|
185
|
+
conversation_id: target.conversation_id,
|
|
186
|
+
message_id: target.message_id,
|
|
187
|
+
idempotency_key: idem,
|
|
188
|
+
},
|
|
189
|
+
decision,
|
|
190
|
+
analysis: buildAnalysis(this.profile, snapshot, decision),
|
|
191
|
+
conversation_status: snapshot.conversation.status,
|
|
192
|
+
};
|
|
193
|
+
if (counterpart !== undefined) {
|
|
194
|
+
prepared.counterpart_message = counterpart.public_message;
|
|
195
|
+
if (counterpart.action !== undefined)
|
|
196
|
+
prepared.counterpart_action = counterpart.action;
|
|
197
|
+
}
|
|
198
|
+
return prepared;
|
|
199
|
+
}
|
|
200
|
+
async submit(prepared) {
|
|
201
|
+
const { binding, decision } = prepared;
|
|
202
|
+
// Buyer local private policy gate first (same as runtime/tools.ts): a
|
|
203
|
+
// violation never reaches the gateway and never leaks private numbers.
|
|
204
|
+
if (this.profile.role === "buyer" && this.profile.buyer_policy) {
|
|
205
|
+
const violation = checkBuyerLocalPolicy(decision, this.profile.buyer_policy);
|
|
206
|
+
if (violation) {
|
|
207
|
+
const local = localBuyerPolicyResult(binding.conversation_id, violation, 0);
|
|
208
|
+
await this.client.failClaim({
|
|
209
|
+
message_id: binding.message_id,
|
|
210
|
+
idempotency_key: binding.idempotency_key,
|
|
211
|
+
error: `local policy rejected: ${violation.reason_codes.join(", ")}`,
|
|
212
|
+
});
|
|
213
|
+
return { policy_result: local, settlement: "failed" };
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const result = await this.client.submitNegotiationDecision({
|
|
217
|
+
decision,
|
|
218
|
+
idempotency_key: submitIdempotencyKey(binding.idempotency_key, decision),
|
|
219
|
+
});
|
|
220
|
+
if (result.result === "accepted" || result.result === "human_required") {
|
|
221
|
+
await this.client.completeClaim({
|
|
222
|
+
message_id: binding.message_id,
|
|
223
|
+
idempotency_key: binding.idempotency_key,
|
|
224
|
+
});
|
|
225
|
+
return { policy_result: result, settlement: "completed" };
|
|
226
|
+
}
|
|
227
|
+
await this.client.failClaim({
|
|
228
|
+
message_id: binding.message_id,
|
|
229
|
+
idempotency_key: binding.idempotency_key,
|
|
230
|
+
error: `policy rejected: ${result.public_reason}`,
|
|
231
|
+
});
|
|
232
|
+
return { policy_result: result, settlement: "failed" };
|
|
233
|
+
}
|
|
234
|
+
async abandon(prepared, reason) {
|
|
235
|
+
// Best-effort: the 300s stale-claim TTL stays the backstop if this fails.
|
|
236
|
+
try {
|
|
237
|
+
await this.client.abandonClaim({
|
|
238
|
+
message_id: prepared.binding.message_id,
|
|
239
|
+
idempotency_key: prepared.binding.idempotency_key,
|
|
240
|
+
error: reason,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// Abandon must never mask the operator-facing outcome.
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/operator/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 harrylabsj
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import type { OperatorEvent } from "./types.js";
|
|
17
|
+
export interface OperatorEventStore {
|
|
18
|
+
append(event: OperatorEvent): Promise<void>;
|
|
19
|
+
readAll(): Promise<OperatorEvent[]>;
|
|
20
|
+
}
|
|
21
|
+
export declare class OperatorStoreError extends Error {
|
|
22
|
+
constructor(message: string);
|
|
23
|
+
}
|
|
24
|
+
/** Refuse to persist events that look like they carry credentials. */
|
|
25
|
+
export declare function assertEventRedacted(event: OperatorEvent): void;
|
|
26
|
+
/** JSONL file store. File 0600, directory 0700 (design §14). */
|
|
27
|
+
export declare class FileOperatorEventStore implements OperatorEventStore {
|
|
28
|
+
readonly dir: string;
|
|
29
|
+
private readonly file;
|
|
30
|
+
constructor(dir: string);
|
|
31
|
+
append(event: OperatorEvent): Promise<void>;
|
|
32
|
+
readAll(): Promise<OperatorEvent[]>;
|
|
33
|
+
}
|
|
34
|
+
/** In-memory store for tests and embedded use. Same redaction rules. */
|
|
35
|
+
export declare class InMemoryOperatorEventStore implements OperatorEventStore {
|
|
36
|
+
private readonly events;
|
|
37
|
+
append(event: OperatorEvent): Promise<void>;
|
|
38
|
+
readAll(): Promise<OperatorEvent[]>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
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
|
+
* Append-only operator event persistence (design §6, §14).
|
|
18
|
+
*
|
|
19
|
+
* The store is injectable: FileOperatorEventStore for the real TUI (JSONL,
|
|
20
|
+
* directory 0700 / file 0600), InMemoryOperatorEventStore for tests.
|
|
21
|
+
*
|
|
22
|
+
* Two fail-closed rules:
|
|
23
|
+
* - append refuses any event carrying a secret-like value (token, API key,
|
|
24
|
+
* password, Bearer string) — secrets must never enter the event log;
|
|
25
|
+
* - readAll refuses a corrupted or shape-invalid log instead of guessing —
|
|
26
|
+
* a damaged private store means the operator session does not load.
|
|
27
|
+
*/
|
|
28
|
+
import { promises as fsp } from "node:fs";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
export class OperatorStoreError extends Error {
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = "OperatorStoreError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const SECRET_KEY = /(api[_-]?key|token|secret|password|authorization|credential)/i;
|
|
37
|
+
const BEARER_VALUE = /bearer\s+\S+/i;
|
|
38
|
+
// Credential-shaped values, wherever they appear in a string: OpenAI-style
|
|
39
|
+
// sk- keys and shopping-cli token names. Fail closed like the named-key scan.
|
|
40
|
+
const CREDENTIAL_VALUE = /sk-[A-Za-z0-9_-]{6,}|shopping_(merchant|buyer|agent|admin)_[A-Za-z0-9_-]+/i;
|
|
41
|
+
/** Depth-first scan for secret-like content; returns the offending path. */
|
|
42
|
+
function scanForSecrets(value, at) {
|
|
43
|
+
if (typeof value === "string") {
|
|
44
|
+
return BEARER_VALUE.test(value) || CREDENTIAL_VALUE.test(value) ? at : undefined;
|
|
45
|
+
}
|
|
46
|
+
if (Array.isArray(value)) {
|
|
47
|
+
for (let i = 0; i < value.length; i++) {
|
|
48
|
+
const hit = scanForSecrets(value[i], `${at}[${i}]`);
|
|
49
|
+
if (hit !== undefined)
|
|
50
|
+
return hit;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
if (value !== null && typeof value === "object") {
|
|
55
|
+
for (const [key, v] of Object.entries(value)) {
|
|
56
|
+
const keyPath = at === "" ? key : `${at}.${key}`;
|
|
57
|
+
if (SECRET_KEY.test(key) && typeof v === "string" && v.length > 0)
|
|
58
|
+
return keyPath;
|
|
59
|
+
const hit = scanForSecrets(v, keyPath);
|
|
60
|
+
if (hit !== undefined)
|
|
61
|
+
return hit;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
/** Refuse to persist events that look like they carry credentials. */
|
|
67
|
+
export function assertEventRedacted(event) {
|
|
68
|
+
const hit = scanForSecrets(event, "");
|
|
69
|
+
if (hit !== undefined) {
|
|
70
|
+
throw new OperatorStoreError(`operator event carries a secret-like value at "${hit || "(root)"}"; refusing to persist`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function isOperatorEvent(value) {
|
|
74
|
+
if (value === null || typeof value !== "object")
|
|
75
|
+
return false;
|
|
76
|
+
const v = value;
|
|
77
|
+
return (typeof v.event_id === "string" &&
|
|
78
|
+
typeof v.occurred_at === "string" &&
|
|
79
|
+
typeof v.agent_id === "string" &&
|
|
80
|
+
typeof v.type === "string" &&
|
|
81
|
+
typeof v.visibility === "string" &&
|
|
82
|
+
typeof v.payload === "object" &&
|
|
83
|
+
v.payload !== null);
|
|
84
|
+
}
|
|
85
|
+
/** Known event types (design §6). An unknown type fails closed on load. */
|
|
86
|
+
const KNOWN_EVENT_TYPES = new Set([
|
|
87
|
+
"operator.message",
|
|
88
|
+
"strategy.patch.proposed",
|
|
89
|
+
"strategy.patch.applied",
|
|
90
|
+
"strategy.patch.rejected",
|
|
91
|
+
"mode.changed",
|
|
92
|
+
"negotiation.paused",
|
|
93
|
+
"negotiation.resumed",
|
|
94
|
+
"candidate.generated",
|
|
95
|
+
"candidate.approved",
|
|
96
|
+
"candidate.rejected",
|
|
97
|
+
"candidate.revised",
|
|
98
|
+
"decision.submitted",
|
|
99
|
+
"turn.settled",
|
|
100
|
+
]);
|
|
101
|
+
/** JSONL file store. File 0600, directory 0700 (design §14). */
|
|
102
|
+
export class FileOperatorEventStore {
|
|
103
|
+
dir;
|
|
104
|
+
file;
|
|
105
|
+
constructor(dir) {
|
|
106
|
+
this.dir = dir;
|
|
107
|
+
this.file = path.join(dir, "operator-events.jsonl");
|
|
108
|
+
}
|
|
109
|
+
async append(event) {
|
|
110
|
+
assertEventRedacted(event);
|
|
111
|
+
await fsp.mkdir(this.dir, { recursive: true, mode: 0o700 });
|
|
112
|
+
// mkdir/open modes only apply at creation: enforce them on pre-existing
|
|
113
|
+
// paths too (e.g. a dir or log left at 0755/0644 by another tool).
|
|
114
|
+
await fsp.chmod(this.dir, 0o700);
|
|
115
|
+
const handle = await fsp.open(this.file, "a", 0o600);
|
|
116
|
+
try {
|
|
117
|
+
await handle.chmod(0o600);
|
|
118
|
+
await handle.write(`${JSON.stringify(event)}\n`);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await handle.close();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async readAll() {
|
|
125
|
+
let raw;
|
|
126
|
+
try {
|
|
127
|
+
raw = await fsp.readFile(this.file, "utf-8");
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (err.code === "ENOENT")
|
|
131
|
+
return [];
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
134
|
+
const events = [];
|
|
135
|
+
const lines = raw.split("\n");
|
|
136
|
+
for (let i = 0; i < lines.length; i++) {
|
|
137
|
+
const line = lines[i];
|
|
138
|
+
if (line === undefined || line.trim() === "")
|
|
139
|
+
continue;
|
|
140
|
+
let parsed;
|
|
141
|
+
try {
|
|
142
|
+
parsed = JSON.parse(line);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw new OperatorStoreError(`operator event log corrupted at line ${i + 1}; refusing to load (fail closed)`);
|
|
146
|
+
}
|
|
147
|
+
if (!isOperatorEvent(parsed)) {
|
|
148
|
+
throw new OperatorStoreError(`operator event log line ${i + 1} is not a valid event; refusing to load (fail closed)`);
|
|
149
|
+
}
|
|
150
|
+
if (!KNOWN_EVENT_TYPES.has(parsed.type)) {
|
|
151
|
+
throw new OperatorStoreError(`operator event log line ${i + 1} has unknown type "${parsed.type}"; refusing to load (fail closed)`);
|
|
152
|
+
}
|
|
153
|
+
events.push(parsed);
|
|
154
|
+
}
|
|
155
|
+
return events;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** In-memory store for tests and embedded use. Same redaction rules. */
|
|
159
|
+
export class InMemoryOperatorEventStore {
|
|
160
|
+
events = [];
|
|
161
|
+
async append(event) {
|
|
162
|
+
assertEventRedacted(event);
|
|
163
|
+
this.events.push(event);
|
|
164
|
+
}
|
|
165
|
+
readAll() {
|
|
166
|
+
return Promise.resolve([...this.events]);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=store.js.map
|