@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,232 @@
|
|
|
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
|
+
* UCP Profile 运行时校验(UCP 2026-04-08 platform MUST validate 语义)。
|
|
18
|
+
*
|
|
19
|
+
* 两层校验:
|
|
20
|
+
* 1. 硬结构错误(profile 非对象、ucp 缺失、ucp.version 非 YYYY-MM-DD、services /
|
|
21
|
+
* capabilities 非对象、signing_keys 非对象数组)→ 抛 UcpError("profile_malformed"),
|
|
22
|
+
* 整份 profile 拒绝(fail-closed,§4.6);
|
|
23
|
+
* 2. 逐条校验(namespace 三段式、transport 枚举、a2a endpoint MUST 指向 Agent Card
|
|
24
|
+
* URL、spec/schema origin 与 namespace authority 绑定)→ 越权/非法的那一条
|
|
25
|
+
* capability 或 service 被丢弃并在 `rejected` 中记录,其余合法条目照常保留——
|
|
26
|
+
* UCP 要求 platform 只使用能验证通过的条目,而不是整份 profile 连带失败。
|
|
27
|
+
*
|
|
28
|
+
* forward-compat:未知字段(顶层 / ucp 内 / 条目内)原样保留,不做 additionalProperties
|
|
29
|
+
* 拒绝。
|
|
30
|
+
*/
|
|
31
|
+
import { UcpError } from "./error.js";
|
|
32
|
+
import { UCP_TRANSPORTS, isHttpsUrl, originHostFor, parseCapabilityNamespace, parseServiceNamespace, } from "./types.js";
|
|
33
|
+
const SPEC_DATE_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
34
|
+
function isValidSpecDate(s) {
|
|
35
|
+
const match = SPEC_DATE_RE.exec(s);
|
|
36
|
+
if (match === null)
|
|
37
|
+
return false;
|
|
38
|
+
const year = Number(match[1]);
|
|
39
|
+
const month = Number(match[2]);
|
|
40
|
+
const day = Number(match[3]);
|
|
41
|
+
const date = new Date(Date.UTC(year, month - 1, day));
|
|
42
|
+
return (date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day);
|
|
43
|
+
}
|
|
44
|
+
function requireObject(value, path) {
|
|
45
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
46
|
+
throw new UcpError("profile_malformed", `${path} must be an object`);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function requireArray(value, path) {
|
|
51
|
+
if (!Array.isArray(value)) {
|
|
52
|
+
throw new UcpError("profile_malformed", `${path} must be an array`);
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
function reject(rejected, kind, name, index, path, code, message) {
|
|
57
|
+
rejected.push({ kind, name, index, path, code, message });
|
|
58
|
+
}
|
|
59
|
+
function validateServiceEntry(value, path, authorityHost, rejected, name, index) {
|
|
60
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
61
|
+
reject(rejected, "service", name, index, path, "entry_malformed", `${path} must be an object`);
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const obj = value;
|
|
65
|
+
const decl = { ...obj };
|
|
66
|
+
const version = obj.version;
|
|
67
|
+
if (typeof version !== "string" || version.length === 0) {
|
|
68
|
+
reject(rejected, "service", name, index, path, "entry_malformed", `${path}/version must be a non-empty string`);
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
decl.version = version;
|
|
72
|
+
const spec = obj.spec;
|
|
73
|
+
if (!isHttpsUrl(spec)) {
|
|
74
|
+
reject(rejected, "service", name, index, path, "spec_invalid", `${path}/spec must be an https URL`);
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
if (originHostFor(spec) !== authorityHost) {
|
|
78
|
+
reject(rejected, "service", name, index, path, "spec_origin_mismatch", `${path}/spec origin ${originHostFor(spec)} must equal namespace authority ${authorityHost}`);
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
decl.spec = spec;
|
|
82
|
+
const transport = obj.transport;
|
|
83
|
+
if (typeof transport !== "string" || !UCP_TRANSPORTS.includes(transport)) {
|
|
84
|
+
reject(rejected, "service", name, index, path, "transport_unsupported", `${path}/transport must be one of ${UCP_TRANSPORTS.join(" | ")} (got ${String(transport)})`);
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
decl.transport = transport;
|
|
88
|
+
const endpoint = obj.endpoint;
|
|
89
|
+
if (endpoint !== undefined) {
|
|
90
|
+
if (!isHttpsUrl(endpoint)) {
|
|
91
|
+
reject(rejected, "service", name, index, path, "endpoint_invalid", `${path}/endpoint must be an https URL`);
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
decl.endpoint = endpoint;
|
|
95
|
+
}
|
|
96
|
+
if (decl.transport === "a2a" && decl.endpoint === undefined) {
|
|
97
|
+
reject(rejected, "service", name, index, path, "a2a_endpoint_required", `${path}: a2a transport requires an endpoint pointing to the Agent Card URL`);
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const schema = obj.schema;
|
|
101
|
+
if (schema !== undefined) {
|
|
102
|
+
if (!isHttpsUrl(schema)) {
|
|
103
|
+
reject(rejected, "service", name, index, path, "schema_invalid", `${path}/schema must be an https URL`);
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
if (originHostFor(schema) !== authorityHost) {
|
|
107
|
+
reject(rejected, "service", name, index, path, "schema_origin_mismatch", `${path}/schema origin ${originHostFor(schema)} must equal namespace authority ${authorityHost}`);
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
decl.schema = schema;
|
|
111
|
+
}
|
|
112
|
+
return decl;
|
|
113
|
+
}
|
|
114
|
+
function validateCapabilityEntry(value, path, authorityHost, rejected, name, index) {
|
|
115
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
116
|
+
reject(rejected, "capability", name, index, path, "entry_malformed", `${path} must be an object`);
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
const obj = value;
|
|
120
|
+
const decl = { ...obj };
|
|
121
|
+
const version = obj.version;
|
|
122
|
+
if (typeof version !== "string" || version.length === 0) {
|
|
123
|
+
reject(rejected, "capability", name, index, path, "entry_malformed", `${path}/version must be a non-empty string`);
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
decl.version = version;
|
|
127
|
+
const spec = obj.spec;
|
|
128
|
+
if (!isHttpsUrl(spec)) {
|
|
129
|
+
reject(rejected, "capability", name, index, path, "spec_invalid", `${path}/spec must be an https URL`);
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
if (originHostFor(spec) !== authorityHost) {
|
|
133
|
+
reject(rejected, "capability", name, index, path, "spec_origin_mismatch", `${path}/spec origin ${originHostFor(spec)} must equal namespace authority ${authorityHost}`);
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
decl.spec = spec;
|
|
137
|
+
const schema = obj.schema;
|
|
138
|
+
if (!isHttpsUrl(schema)) {
|
|
139
|
+
reject(rejected, "capability", name, index, path, "schema_invalid", `${path}/schema must be an https URL`);
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
if (originHostFor(schema) !== authorityHost) {
|
|
143
|
+
reject(rejected, "capability", name, index, path, "schema_origin_mismatch", `${path}/schema origin ${originHostFor(schema)} must equal namespace authority ${authorityHost}`);
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
decl.schema = schema;
|
|
147
|
+
if (obj.extends !== undefined) {
|
|
148
|
+
const ext = obj.extends;
|
|
149
|
+
const valid = (typeof ext === "string" && ext.length > 0) ||
|
|
150
|
+
(Array.isArray(ext) && ext.length > 0 && ext.every((e) => typeof e === "string" && e.length > 0));
|
|
151
|
+
if (!valid) {
|
|
152
|
+
reject(rejected, "capability", name, index, path, "extends_invalid", `${path}/extends must be a non-empty string or non-empty array of strings`);
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
decl.extends = ext;
|
|
156
|
+
}
|
|
157
|
+
return decl;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 运行时校验。返回 `{ profile, rejected }`;硬结构错误抛 UcpError("profile_malformed")。
|
|
161
|
+
* profile 是过滤后的可用版本(非法条目剔除、未知字段保留)。
|
|
162
|
+
*/
|
|
163
|
+
export function validateUcpProfile(value) {
|
|
164
|
+
const root = requireObject(value, "/");
|
|
165
|
+
const ucpRaw = root.ucp;
|
|
166
|
+
if (ucpRaw === undefined) {
|
|
167
|
+
throw new UcpError("profile_malformed", "/ucp must be present");
|
|
168
|
+
}
|
|
169
|
+
const ucp = requireObject(ucpRaw, "/ucp");
|
|
170
|
+
const version = ucp.version;
|
|
171
|
+
if (typeof version !== "string" || !isValidSpecDate(version)) {
|
|
172
|
+
throw new UcpError("profile_malformed", `/ucp/version must be a YYYY-MM-DD spec date (got ${String(version)})`);
|
|
173
|
+
}
|
|
174
|
+
const rejected = [];
|
|
175
|
+
const ucpOut = { ...ucp, version };
|
|
176
|
+
if (ucp.services !== undefined) {
|
|
177
|
+
const services = requireObject(ucp.services, "/ucp/services");
|
|
178
|
+
const out = {};
|
|
179
|
+
for (const [name, entries] of Object.entries(services)) {
|
|
180
|
+
const ns = parseServiceNamespace(name);
|
|
181
|
+
if (ns === undefined) {
|
|
182
|
+
reject(rejected, "service", name, -1, `/ucp/services/${name}`, "namespace_invalid", `service name "${name}" is not a valid {reverse-domain}.{service} namespace`);
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const arr = requireArray(entries, `/ucp/services/${name}`);
|
|
186
|
+
const kept = [];
|
|
187
|
+
arr.forEach((entry, i) => {
|
|
188
|
+
const decl = validateServiceEntry(entry, `/ucp/services/${name}/${i}`, ns.authorityHost, rejected, name, i);
|
|
189
|
+
if (decl !== undefined)
|
|
190
|
+
kept.push(decl);
|
|
191
|
+
});
|
|
192
|
+
if (kept.length > 0)
|
|
193
|
+
out[name] = kept;
|
|
194
|
+
}
|
|
195
|
+
ucpOut.services = out;
|
|
196
|
+
}
|
|
197
|
+
if (ucp.capabilities !== undefined) {
|
|
198
|
+
const capabilities = requireObject(ucp.capabilities, "/ucp/capabilities");
|
|
199
|
+
const out = {};
|
|
200
|
+
for (const [name, entries] of Object.entries(capabilities)) {
|
|
201
|
+
const ns = parseCapabilityNamespace(name);
|
|
202
|
+
if (ns === undefined) {
|
|
203
|
+
reject(rejected, "capability", name, -1, `/ucp/capabilities/${name}`, "namespace_invalid", `capability name "${name}" is not a valid {reverse-domain}.{service}.{capability} namespace`);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
const arr = requireArray(entries, `/ucp/capabilities/${name}`);
|
|
207
|
+
const kept = [];
|
|
208
|
+
arr.forEach((entry, i) => {
|
|
209
|
+
const decl = validateCapabilityEntry(entry, `/ucp/capabilities/${name}/${i}`, ns.authorityHost, rejected, name, i);
|
|
210
|
+
if (decl !== undefined)
|
|
211
|
+
kept.push(decl);
|
|
212
|
+
});
|
|
213
|
+
if (kept.length > 0)
|
|
214
|
+
out[name] = kept;
|
|
215
|
+
}
|
|
216
|
+
ucpOut.capabilities = out;
|
|
217
|
+
}
|
|
218
|
+
const profileOut = { ...root, ucp: ucpOut };
|
|
219
|
+
if (root.signing_keys !== undefined) {
|
|
220
|
+
const keys = requireArray(root.signing_keys, "/signing_keys");
|
|
221
|
+
const outKeys = [];
|
|
222
|
+
for (const key of keys) {
|
|
223
|
+
if (key === null || typeof key !== "object" || Array.isArray(key)) {
|
|
224
|
+
throw new UcpError("profile_malformed", "/signing_keys entries must be objects");
|
|
225
|
+
}
|
|
226
|
+
outKeys.push(key);
|
|
227
|
+
}
|
|
228
|
+
profileOut.signing_keys = outKeys;
|
|
229
|
+
}
|
|
230
|
+
return { profile: profileOut, rejected };
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/discovery/ucp/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
* Kiwi vendor capability 构造器(基线 §8.3 / §25.2 / §43)。
|
|
18
|
+
*
|
|
19
|
+
* capability 名:`com.harrylabsj.kiwi.shopping.negotiation`(真实 authority
|
|
20
|
+
* `kiwi.harrylabsj.com`,对齐 §8.2 的 A2A Extension URI)。**生产发布前 MUST 把
|
|
21
|
+
* authority 与 capability/service 名替换为 Kiwi 实际控制域名对应的 reverse-domain
|
|
22
|
+
* namespace,并在该域名上真实托管 spec / schema**(§8.3,spec / schema origin 由
|
|
23
|
+
* 构造器按 authority 推导,替换后自动满足 origin 绑定)。
|
|
24
|
+
*
|
|
25
|
+
* spec 用 §8.2 Extension URI;schema 用同 origin 的 JSON Schema 地址。negotiation 是
|
|
26
|
+
* Vendor Root Capability(不带 extends,§25.2)。
|
|
27
|
+
*/
|
|
28
|
+
import type { UcpCapabilityDeclaration, UcpProfile } from "./types.js";
|
|
29
|
+
/**
|
|
30
|
+
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com` 为东哥实际控制域名
|
|
31
|
+
* (harrylabsj.com 的子域);spec / schema 须托管在该域名上(UCP origin 绑定)。
|
|
32
|
+
*/
|
|
33
|
+
export declare const KIWI_VENDOR_AUTHORITY = "kiwi.harrylabsj.com";
|
|
34
|
+
export declare const KIWI_VENDOR_SERVICE_NAME = "com.harrylabsj.kiwi.shopping";
|
|
35
|
+
export declare const KIWI_VENDOR_CAPABILITY_NAME = "com.harrylabsj.kiwi.shopping.negotiation";
|
|
36
|
+
export declare const KIWI_NEGOTIATION_SPEC_PATH = "/a2a/extensions/negotiation/1.0";
|
|
37
|
+
export declare const KIWI_NEGOTIATION_SCHEMA_PATH = "/schemas/negotiation/1.0/schema.json";
|
|
38
|
+
export interface KiwiVendorBuildOptions {
|
|
39
|
+
/** 实际控制域名的 reverse-domain authority(默认 kiwi.harrylabsj.com)。 */
|
|
40
|
+
authority?: string;
|
|
41
|
+
/** 声明版本(默认 "1.0")。 */
|
|
42
|
+
version?: string;
|
|
43
|
+
/** capability 名(默认 com.harrylabsj.kiwi.shopping.negotiation)。换 authority 时必须同步替换。 */
|
|
44
|
+
capabilityName?: string;
|
|
45
|
+
/** service 名(默认 com.harrylabsj.kiwi.shopping)。换 authority 时必须同步替换。 */
|
|
46
|
+
serviceName?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface KiwiVendorCapability {
|
|
49
|
+
name: string;
|
|
50
|
+
declaration: UcpCapabilityDeclaration;
|
|
51
|
+
}
|
|
52
|
+
export declare function buildKiwiNegotiationCapability(opts?: KiwiVendorBuildOptions): KiwiVendorCapability;
|
|
53
|
+
export interface KiwiVendorProfileOptions extends KiwiVendorBuildOptions {
|
|
54
|
+
/** 本机 A2A 服务的 Agent Card URL(a2a transport endpoint,基线 §25)。 */
|
|
55
|
+
agentCardUrl: string;
|
|
56
|
+
/** ucp.version spec family 日期(默认 2026-04-08,§43 pin)。 */
|
|
57
|
+
ucpVersion?: string;
|
|
58
|
+
}
|
|
59
|
+
/** 组装完整的 Kiwi vendor UCP Profile(merchant 侧发布用,后续 WP2 服务端直接复用)。 */
|
|
60
|
+
export declare function buildKiwiVendorProfile(opts: KiwiVendorProfileOptions): UcpProfile;
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
* 真实 authority(§8.2 / §8.3)。`kiwi.harrylabsj.com` 为东哥实际控制域名
|
|
18
|
+
* (harrylabsj.com 的子域);spec / schema 须托管在该域名上(UCP origin 绑定)。
|
|
19
|
+
*/
|
|
20
|
+
export const KIWI_VENDOR_AUTHORITY = "kiwi.harrylabsj.com";
|
|
21
|
+
export const KIWI_VENDOR_SERVICE_NAME = "com.harrylabsj.kiwi.shopping";
|
|
22
|
+
export const KIWI_VENDOR_CAPABILITY_NAME = "com.harrylabsj.kiwi.shopping.negotiation";
|
|
23
|
+
export const KIWI_NEGOTIATION_SPEC_PATH = "/a2a/extensions/negotiation/1.0";
|
|
24
|
+
export const KIWI_NEGOTIATION_SCHEMA_PATH = "/schemas/negotiation/1.0/schema.json";
|
|
25
|
+
export function buildKiwiNegotiationCapability(opts = {}) {
|
|
26
|
+
const authority = opts.authority ?? KIWI_VENDOR_AUTHORITY;
|
|
27
|
+
const name = opts.capabilityName ?? KIWI_VENDOR_CAPABILITY_NAME;
|
|
28
|
+
return {
|
|
29
|
+
name,
|
|
30
|
+
declaration: {
|
|
31
|
+
version: opts.version ?? "1.0",
|
|
32
|
+
spec: `https://${authority}${KIWI_NEGOTIATION_SPEC_PATH}`,
|
|
33
|
+
schema: `https://${authority}${KIWI_NEGOTIATION_SCHEMA_PATH}`,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** 组装完整的 Kiwi vendor UCP Profile(merchant 侧发布用,后续 WP2 服务端直接复用)。 */
|
|
38
|
+
export function buildKiwiVendorProfile(opts) {
|
|
39
|
+
const authority = opts.authority ?? KIWI_VENDOR_AUTHORITY;
|
|
40
|
+
const serviceName = opts.serviceName ?? KIWI_VENDOR_SERVICE_NAME;
|
|
41
|
+
const capability = buildKiwiNegotiationCapability(opts);
|
|
42
|
+
return {
|
|
43
|
+
ucp: {
|
|
44
|
+
version: opts.ucpVersion ?? "2026-04-08",
|
|
45
|
+
services: {
|
|
46
|
+
[serviceName]: [
|
|
47
|
+
{
|
|
48
|
+
version: "1.0",
|
|
49
|
+
spec: `https://${authority}${KIWI_NEGOTIATION_SPEC_PATH}`,
|
|
50
|
+
transport: "a2a",
|
|
51
|
+
endpoint: opts.agentCardUrl,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
capabilities: {
|
|
56
|
+
[capability.name]: [capability.declaration],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=vendor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../../src/discovery/ucp/vendor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,0CAA0C,CAAC;AACtF,MAAM,CAAC,MAAM,0BAA0B,GAAG,iCAAiC,CAAC;AAC5E,MAAM,CAAC,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;AAkBnF,MAAM,UAAU,8BAA8B,CAC5C,OAA+B,EAAE;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,IAAI,2BAA2B,CAAC;IAChE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;YAC9B,IAAI,EAAE,WAAW,SAAS,GAAG,0BAA0B,EAAE;YACzD,MAAM,EAAE,WAAW,SAAS,GAAG,4BAA4B,EAAE;SAC9D;KACF,CAAC;AACJ,CAAC;AASD,mEAAmE;AACnE,MAAM,UAAU,sBAAsB,CAAC,IAA8B;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,wBAAwB,CAAC;IACjE,MAAM,UAAU,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO;QACL,GAAG,EAAE;YACH,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,YAAY;YACxC,QAAQ,EAAE;gBACR,CAAC,WAAW,CAAC,EAAE;oBACb;wBACE,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,WAAW,SAAS,GAAG,0BAA0B,EAAE;wBACzD,SAAS,EAAE,KAAK;wBAChB,QAAQ,EAAE,IAAI,CAAC,YAAY;qBAC5B;iBACF;aACF;YACD,YAAY,EAAE;gBACZ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;aAC5C;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
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 { CommerceClient } from "./commerce/types.js";
|
|
17
|
+
export interface DoctorCheck {
|
|
18
|
+
name: string;
|
|
19
|
+
ok: boolean;
|
|
20
|
+
detail: string;
|
|
21
|
+
}
|
|
22
|
+
export interface DoctorReport {
|
|
23
|
+
ok: boolean;
|
|
24
|
+
checks: DoctorCheck[];
|
|
25
|
+
}
|
|
26
|
+
export declare function runDoctor(profilePath: string, client?: CommerceClient): Promise<DoctorReport>;
|
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
* `kiwi doctor` — read-only diagnostics. Never performs negotiation writes
|
|
18
|
+
* and never prints secret values.
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync } from "node:fs";
|
|
21
|
+
import { parse as parseYaml } from "yaml";
|
|
22
|
+
import { findInlineSecrets, loadProfile, ProfileError, } from "./config/profile.js";
|
|
23
|
+
import { CommerceError } from "./commerce/types.js";
|
|
24
|
+
import { PROTOCOL_VERSION } from "./negotiation/types.js";
|
|
25
|
+
import { toolAllowlistForRole } from "./runtime/tools.js";
|
|
26
|
+
import { buildModel, isFakeProvider } from "./runtime/model.js";
|
|
27
|
+
export function runDoctor(profilePath, client) {
|
|
28
|
+
const checks = [];
|
|
29
|
+
const add = (name, ok, detail) => {
|
|
30
|
+
checks.push({ name, ok, detail });
|
|
31
|
+
};
|
|
32
|
+
// 1. Profile loads and validates.
|
|
33
|
+
let profile;
|
|
34
|
+
try {
|
|
35
|
+
profile = loadProfile(profilePath);
|
|
36
|
+
add("profile", true, `${profile.agent_id} role=${profile.role}`);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (err instanceof ProfileError) {
|
|
40
|
+
add("profile", false, err.message);
|
|
41
|
+
return Promise.resolve({ ok: false, checks });
|
|
42
|
+
}
|
|
43
|
+
throw err;
|
|
44
|
+
}
|
|
45
|
+
// 2. No inline secrets in the profile file.
|
|
46
|
+
try {
|
|
47
|
+
const raw = parseYaml(readFileSync(profilePath, "utf-8"));
|
|
48
|
+
const leaks = findInlineSecrets(raw);
|
|
49
|
+
add("secrets", leaks.length === 0, leaks.length === 0
|
|
50
|
+
? "secrets referenced via env vars only"
|
|
51
|
+
: `possible inline secrets at: ${leaks.join(", ")}`);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
add("secrets", false, "could not re-parse profile for secret scan");
|
|
55
|
+
}
|
|
56
|
+
// 3. Env vars present (presence only — values are never read or printed).
|
|
57
|
+
const tokenSet = Boolean(process.env[profile.commerce.token_env]);
|
|
58
|
+
add("commerce_token_env", tokenSet, tokenSet ? `${profile.commerce.token_env} is set` : `${profile.commerce.token_env} is NOT set`);
|
|
59
|
+
if (!isFakeProvider(profile) && profile.model.api_key_env !== undefined) {
|
|
60
|
+
const keySet = Boolean(process.env[profile.model.api_key_env]);
|
|
61
|
+
add("model_api_key_env", keySet, keySet ? `${profile.model.api_key_env} is set` : `${profile.model.api_key_env} is NOT set`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
add("model_api_key_env", true, isFakeProvider(profile) ? "fake provider: no key needed" : "no api_key_env configured");
|
|
65
|
+
}
|
|
66
|
+
// 4. Model resolution.
|
|
67
|
+
try {
|
|
68
|
+
const model = buildModel(profile);
|
|
69
|
+
add("model", true, `provider=${model.provider} api=${model.api} model=${model.id}`);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
add("model", false, err instanceof Error ? err.message : String(err));
|
|
73
|
+
}
|
|
74
|
+
// 5. Tool allowlist.
|
|
75
|
+
add("tools", true, `allowlist: ${toolAllowlistForRole(profile.role).join(", ")}`);
|
|
76
|
+
// 6. Commerce API health + protocol/capability compatibility.
|
|
77
|
+
return (async () => {
|
|
78
|
+
if (client) {
|
|
79
|
+
try {
|
|
80
|
+
const health = await client.health();
|
|
81
|
+
add("commerce_health", health.ok, health.ok
|
|
82
|
+
? `${health.service ?? "commerce"} ${health.version ?? ""}`.trim()
|
|
83
|
+
: "health check failed");
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
add("commerce_health", false, describeError(err));
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const caps = await client.getCapabilities();
|
|
90
|
+
const protoOk = caps.protocol_versions.includes(PROTOCOL_VERSION);
|
|
91
|
+
add("protocol", protoOk, protoOk
|
|
92
|
+
? `gateway supports ${PROTOCOL_VERSION}`
|
|
93
|
+
: `gateway protocols: ${caps.protocol_versions.join(", ")}`);
|
|
94
|
+
const missing = ["consultation_read", "consultation_write", "inventory_read"].filter((c) => !caps.capabilities[c]);
|
|
95
|
+
add("capabilities", missing.length === 0 && caps.capabilities.orders === false, missing.length === 0
|
|
96
|
+
? caps.capabilities.orders === false
|
|
97
|
+
? "required capabilities present; orders=false (no-order boundary)"
|
|
98
|
+
: "orders capability must be false"
|
|
99
|
+
: `missing capabilities: ${missing.join(", ")}`);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
add("capabilities", false, describeError(err));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { ok: checks.every((c) => c.ok), checks };
|
|
106
|
+
})();
|
|
107
|
+
}
|
|
108
|
+
function describeError(err) {
|
|
109
|
+
if (err instanceof CommerceError)
|
|
110
|
+
return `${err.kind}: ${err.message}`;
|
|
111
|
+
return err instanceof Error ? err.message : String(err);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
* Exit codes (design §12.4).
|
|
18
|
+
*/
|
|
19
|
+
export declare const EXIT: {
|
|
20
|
+
readonly OK: 0;
|
|
21
|
+
readonly CONFIG: 2;
|
|
22
|
+
readonly AUTH: 3;
|
|
23
|
+
readonly MODEL: 4;
|
|
24
|
+
readonly HUMAN: 5;
|
|
25
|
+
readonly TRANSIENT: 10;
|
|
26
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
* Exit codes (design §12.4).
|
|
18
|
+
*/
|
|
19
|
+
export const EXIT = {
|
|
20
|
+
OK: 0,
|
|
21
|
+
CONFIG: 2,
|
|
22
|
+
AUTH: 3,
|
|
23
|
+
MODEL: 4,
|
|
24
|
+
HUMAN: 5,
|
|
25
|
+
TRANSIENT: 10,
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=exit-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,EAAE;CACL,CAAC"}
|