@atxp/client 0.10.3 → 0.10.4
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/dist/_virtual/additionalItems.js +4 -0
- package/dist/_virtual/additionalItems.js.map +1 -0
- package/dist/_virtual/additionalItems2.js +4 -0
- package/dist/_virtual/additionalItems2.js.map +1 -0
- package/dist/_virtual/additionalProperties.js +4 -0
- package/dist/_virtual/additionalProperties.js.map +1 -0
- package/dist/_virtual/additionalProperties2.js +4 -0
- package/dist/_virtual/additionalProperties2.js.map +1 -0
- package/dist/_virtual/ajv.js +1 -1
- package/dist/_virtual/ajv2.js +4 -0
- package/dist/_virtual/ajv2.js.map +1 -0
- package/dist/_virtual/ajv3.js +4 -0
- package/dist/_virtual/ajv3.js.map +1 -0
- package/dist/_virtual/allOf.js +4 -0
- package/dist/_virtual/allOf.js.map +1 -0
- package/dist/_virtual/allOf2.js +4 -0
- package/dist/_virtual/allOf2.js.map +1 -0
- package/dist/_virtual/anyOf.js +4 -0
- package/dist/_virtual/anyOf.js.map +1 -0
- package/dist/_virtual/anyOf2.js +4 -0
- package/dist/_virtual/anyOf2.js.map +1 -0
- package/dist/_virtual/applicability.js +4 -0
- package/dist/_virtual/applicability.js.map +1 -0
- package/dist/_virtual/applicability2.js +4 -0
- package/dist/_virtual/applicability2.js.map +1 -0
- package/dist/_virtual/boolSchema.js +4 -0
- package/dist/_virtual/boolSchema.js.map +1 -0
- package/dist/_virtual/boolSchema2.js +4 -0
- package/dist/_virtual/boolSchema2.js.map +1 -0
- package/dist/_virtual/code.js +4 -0
- package/dist/_virtual/code.js.map +1 -0
- package/dist/_virtual/code2.js +4 -0
- package/dist/_virtual/code2.js.map +1 -0
- package/dist/_virtual/code3.js +4 -0
- package/dist/_virtual/code3.js.map +1 -0
- package/dist/_virtual/code4.js +4 -0
- package/dist/_virtual/code4.js.map +1 -0
- package/dist/_virtual/const.js +4 -0
- package/dist/_virtual/const.js.map +1 -0
- package/dist/_virtual/const2.js +4 -0
- package/dist/_virtual/const2.js.map +1 -0
- package/dist/_virtual/contains.js +4 -0
- package/dist/_virtual/contains.js.map +1 -0
- package/dist/_virtual/contains2.js +4 -0
- package/dist/_virtual/contains2.js.map +1 -0
- package/dist/_virtual/core.js +4 -0
- package/dist/_virtual/core.js.map +1 -0
- package/dist/_virtual/core2.js +4 -0
- package/dist/_virtual/core2.js.map +1 -0
- package/dist/_virtual/dataType.js +4 -0
- package/dist/_virtual/dataType.js.map +1 -0
- package/dist/_virtual/dataType2.js +4 -0
- package/dist/_virtual/dataType2.js.map +1 -0
- package/dist/_virtual/defaults.js +4 -0
- package/dist/_virtual/defaults.js.map +1 -0
- package/dist/_virtual/defaults2.js +4 -0
- package/dist/_virtual/defaults2.js.map +1 -0
- package/dist/_virtual/dependencies.js +4 -0
- package/dist/_virtual/dependencies.js.map +1 -0
- package/dist/_virtual/dependencies2.js +4 -0
- package/dist/_virtual/dependencies2.js.map +1 -0
- package/dist/_virtual/draft7.js +4 -0
- package/dist/_virtual/draft7.js.map +1 -0
- package/dist/_virtual/draft72.js +4 -0
- package/dist/_virtual/draft72.js.map +1 -0
- package/dist/_virtual/enum.js +4 -0
- package/dist/_virtual/enum.js.map +1 -0
- package/dist/_virtual/enum2.js +4 -0
- package/dist/_virtual/enum2.js.map +1 -0
- package/dist/_virtual/equal.js +4 -0
- package/dist/_virtual/equal.js.map +1 -0
- package/dist/_virtual/equal2.js +4 -0
- package/dist/_virtual/equal2.js.map +1 -0
- package/dist/_virtual/errors.js +4 -0
- package/dist/_virtual/errors.js.map +1 -0
- package/dist/_virtual/errors2.js +4 -0
- package/dist/_virtual/errors2.js.map +1 -0
- package/dist/_virtual/format.js +4 -0
- package/dist/_virtual/format.js.map +1 -0
- package/dist/_virtual/format2.js +4 -0
- package/dist/_virtual/format2.js.map +1 -0
- package/dist/_virtual/formats.js +4 -0
- package/dist/_virtual/formats.js.map +1 -0
- package/dist/_virtual/id.js +4 -0
- package/dist/_virtual/id.js.map +1 -0
- package/dist/_virtual/id2.js +4 -0
- package/dist/_virtual/id2.js.map +1 -0
- package/dist/_virtual/if.js +4 -0
- package/dist/_virtual/if.js.map +1 -0
- package/dist/_virtual/if2.js +4 -0
- package/dist/_virtual/if2.js.map +1 -0
- package/dist/_virtual/index.js +6 -2
- package/dist/_virtual/index.js.map +1 -1
- package/dist/_virtual/index10.js +4 -0
- package/dist/_virtual/index10.js.map +1 -0
- package/dist/_virtual/index11.js +4 -0
- package/dist/_virtual/index11.js.map +1 -0
- package/dist/_virtual/index12.js +4 -0
- package/dist/_virtual/index12.js.map +1 -0
- package/dist/_virtual/index13.js +4 -0
- package/dist/_virtual/index13.js.map +1 -0
- package/dist/_virtual/index14.js +4 -0
- package/dist/_virtual/index14.js.map +1 -0
- package/dist/_virtual/index15.js +4 -0
- package/dist/_virtual/index15.js.map +1 -0
- package/dist/_virtual/index16.js +4 -0
- package/dist/_virtual/index16.js.map +1 -0
- package/dist/_virtual/index17.js +4 -0
- package/dist/_virtual/index17.js.map +1 -0
- package/dist/_virtual/index18.js +4 -0
- package/dist/_virtual/index18.js.map +1 -0
- package/dist/_virtual/index19.js +4 -0
- package/dist/_virtual/index19.js.map +1 -0
- package/dist/_virtual/index2.js +4 -0
- package/dist/_virtual/index2.js.map +1 -0
- package/dist/_virtual/index20.js +4 -0
- package/dist/_virtual/index20.js.map +1 -0
- package/dist/_virtual/index21.js +4 -0
- package/dist/_virtual/index21.js.map +1 -0
- package/dist/_virtual/index3.js +4 -0
- package/dist/_virtual/index3.js.map +1 -0
- package/dist/_virtual/index4.js +4 -0
- package/dist/_virtual/index4.js.map +1 -0
- package/dist/_virtual/index5.js +4 -0
- package/dist/_virtual/index5.js.map +1 -0
- package/dist/_virtual/index6.js +4 -0
- package/dist/_virtual/index6.js.map +1 -0
- package/dist/_virtual/index7.js +4 -0
- package/dist/_virtual/index7.js.map +1 -0
- package/dist/_virtual/index8.js +4 -0
- package/dist/_virtual/index8.js.map +1 -0
- package/dist/_virtual/index9.js +4 -0
- package/dist/_virtual/index9.js.map +1 -0
- package/dist/_virtual/items.js +4 -0
- package/dist/_virtual/items.js.map +1 -0
- package/dist/_virtual/items2.js +4 -0
- package/dist/_virtual/items2.js.map +1 -0
- package/dist/_virtual/items2020.js +4 -0
- package/dist/_virtual/items2020.js.map +1 -0
- package/dist/_virtual/items20202.js +4 -0
- package/dist/_virtual/items20202.js.map +1 -0
- package/dist/_virtual/keyword.js +4 -0
- package/dist/_virtual/keyword.js.map +1 -0
- package/dist/_virtual/keyword2.js +4 -0
- package/dist/_virtual/keyword2.js.map +1 -0
- package/dist/_virtual/limit.js +4 -0
- package/dist/_virtual/limit.js.map +1 -0
- package/dist/_virtual/limitItems.js +4 -0
- package/dist/_virtual/limitItems.js.map +1 -0
- package/dist/_virtual/limitItems2.js +4 -0
- package/dist/_virtual/limitItems2.js.map +1 -0
- package/dist/_virtual/limitLength.js +4 -0
- package/dist/_virtual/limitLength.js.map +1 -0
- package/dist/_virtual/limitLength2.js +4 -0
- package/dist/_virtual/limitLength2.js.map +1 -0
- package/dist/_virtual/limitNumber.js +4 -0
- package/dist/_virtual/limitNumber.js.map +1 -0
- package/dist/_virtual/limitNumber2.js +4 -0
- package/dist/_virtual/limitNumber2.js.map +1 -0
- package/dist/_virtual/limitProperties.js +4 -0
- package/dist/_virtual/limitProperties.js.map +1 -0
- package/dist/_virtual/limitProperties2.js +4 -0
- package/dist/_virtual/limitProperties2.js.map +1 -0
- package/dist/_virtual/metadata.js +4 -0
- package/dist/_virtual/metadata.js.map +1 -0
- package/dist/_virtual/metadata2.js +4 -0
- package/dist/_virtual/metadata2.js.map +1 -0
- package/dist/_virtual/multipleOf.js +4 -0
- package/dist/_virtual/multipleOf.js.map +1 -0
- package/dist/_virtual/multipleOf2.js +4 -0
- package/dist/_virtual/multipleOf2.js.map +1 -0
- package/dist/_virtual/names.js +4 -0
- package/dist/_virtual/names.js.map +1 -0
- package/dist/_virtual/names2.js +4 -0
- package/dist/_virtual/names2.js.map +1 -0
- package/dist/_virtual/not.js +4 -0
- package/dist/_virtual/not.js.map +1 -0
- package/dist/_virtual/not2.js +4 -0
- package/dist/_virtual/not2.js.map +1 -0
- package/dist/_virtual/oneOf.js +4 -0
- package/dist/_virtual/oneOf.js.map +1 -0
- package/dist/_virtual/oneOf2.js +4 -0
- package/dist/_virtual/oneOf2.js.map +1 -0
- package/dist/_virtual/pattern.js +4 -0
- package/dist/_virtual/pattern.js.map +1 -0
- package/dist/_virtual/pattern2.js +4 -0
- package/dist/_virtual/pattern2.js.map +1 -0
- package/dist/_virtual/patternProperties.js +4 -0
- package/dist/_virtual/patternProperties.js.map +1 -0
- package/dist/_virtual/patternProperties2.js +4 -0
- package/dist/_virtual/patternProperties2.js.map +1 -0
- package/dist/_virtual/prefixItems.js +4 -0
- package/dist/_virtual/prefixItems.js.map +1 -0
- package/dist/_virtual/prefixItems2.js +4 -0
- package/dist/_virtual/prefixItems2.js.map +1 -0
- package/dist/_virtual/properties.js +4 -0
- package/dist/_virtual/properties.js.map +1 -0
- package/dist/_virtual/properties2.js +4 -0
- package/dist/_virtual/properties2.js.map +1 -0
- package/dist/_virtual/propertyNames.js +4 -0
- package/dist/_virtual/propertyNames.js.map +1 -0
- package/dist/_virtual/propertyNames2.js +4 -0
- package/dist/_virtual/propertyNames2.js.map +1 -0
- package/dist/_virtual/ref.js +4 -0
- package/dist/_virtual/ref.js.map +1 -0
- package/dist/_virtual/ref2.js +4 -0
- package/dist/_virtual/ref2.js.map +1 -0
- package/dist/_virtual/ref_error.js +4 -0
- package/dist/_virtual/ref_error.js.map +1 -0
- package/dist/_virtual/ref_error2.js +4 -0
- package/dist/_virtual/ref_error2.js.map +1 -0
- package/dist/_virtual/required.js +4 -0
- package/dist/_virtual/required.js.map +1 -0
- package/dist/_virtual/required2.js +4 -0
- package/dist/_virtual/required2.js.map +1 -0
- package/dist/_virtual/resolve.js +4 -0
- package/dist/_virtual/resolve.js.map +1 -0
- package/dist/_virtual/resolve2.js +4 -0
- package/dist/_virtual/resolve2.js.map +1 -0
- package/dist/_virtual/rules.js +4 -0
- package/dist/_virtual/rules.js.map +1 -0
- package/dist/_virtual/rules2.js +4 -0
- package/dist/_virtual/rules2.js.map +1 -0
- package/dist/_virtual/scope.js +4 -0
- package/dist/_virtual/scope.js.map +1 -0
- package/dist/_virtual/scope2.js +4 -0
- package/dist/_virtual/scope2.js.map +1 -0
- package/dist/_virtual/subschema.js +4 -0
- package/dist/_virtual/subschema.js.map +1 -0
- package/dist/_virtual/subschema2.js +4 -0
- package/dist/_virtual/subschema2.js.map +1 -0
- package/dist/_virtual/thenElse.js +4 -0
- package/dist/_virtual/thenElse.js.map +1 -0
- package/dist/_virtual/thenElse2.js +4 -0
- package/dist/_virtual/thenElse2.js.map +1 -0
- package/dist/_virtual/types.js +4 -0
- package/dist/_virtual/types.js.map +1 -0
- package/dist/_virtual/types2.js +4 -0
- package/dist/_virtual/types2.js.map +1 -0
- package/dist/_virtual/ucs2length.js +4 -0
- package/dist/_virtual/ucs2length.js.map +1 -0
- package/dist/_virtual/ucs2length2.js +4 -0
- package/dist/_virtual/ucs2length2.js.map +1 -0
- package/dist/_virtual/uniqueItems.js +4 -0
- package/dist/_virtual/uniqueItems.js.map +1 -0
- package/dist/_virtual/uniqueItems2.js +4 -0
- package/dist/_virtual/uniqueItems2.js.map +1 -0
- package/dist/_virtual/uri.js +4 -0
- package/dist/_virtual/uri.js.map +1 -0
- package/dist/_virtual/uri2.js +4 -0
- package/dist/_virtual/uri2.js.map +1 -0
- package/dist/_virtual/util.js +4 -0
- package/dist/_virtual/util.js.map +1 -0
- package/dist/_virtual/util2.js +4 -0
- package/dist/_virtual/util2.js.map +1 -0
- package/dist/_virtual/validation_error.js +4 -0
- package/dist/_virtual/validation_error.js.map +1 -0
- package/dist/_virtual/validation_error2.js +4 -0
- package/dist/_virtual/validation_error2.js.map +1 -0
- package/dist/atxpAccount.d.ts +20 -0
- package/dist/atxpAccount.d.ts.map +1 -0
- package/dist/atxpAccount.js +161 -0
- package/dist/atxpAccount.js.map +1 -0
- package/dist/atxpFetcher.d.ts.map +1 -1
- package/dist/atxpFetcher.js +3 -2
- package/dist/atxpFetcher.js.map +1 -1
- package/dist/base.cjs +34 -0
- package/dist/base.cjs.map +1 -0
- package/dist/base.d.ts +4 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +5 -0
- package/dist/base.js.map +1 -0
- package/dist/baseAccount.d.ts +20 -0
- package/dist/baseAccount.d.ts.map +1 -0
- package/dist/baseAccount.js +47 -0
- package/dist/baseAccount.js.map +1 -0
- package/dist/baseConstants.d.ts +10 -0
- package/dist/baseConstants.d.ts.map +1 -0
- package/dist/baseConstants.js +21 -0
- package/dist/baseConstants.js.map +1 -0
- package/dist/basePaymentMaker.d.ts +23 -0
- package/dist/basePaymentMaker.d.ts.map +1 -0
- package/dist/basePaymentMaker.js +169 -0
- package/dist/basePaymentMaker.js.map +1 -0
- package/dist/index.cjs +19885 -11547
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19885 -11547
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +277 -202
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +399 -65
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +195 -93
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.js +187 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +60 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +18 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js +25 -17
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +85 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +30 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js +3 -3
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +129 -123
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +785 -114
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js +41 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1207 -513
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +90 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/ajv.js +71 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/code.js +169 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/index.js +712 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/scope.js +157 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/errors.js +139 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/index.js +259 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/names.js +40 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/ref_error.js +24 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/resolve.js +169 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/rules.js +37 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/util.js +191 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/applicability.js +30 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/boolSchema.js +64 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/dataType.js +219 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/defaults.js +48 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/index.js +541 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/keyword.js +139 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/subschema.js +94 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/core.js +642 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/refs/data.json.js +31 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/refs/data.json.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +254 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/equal.js +19 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/ucs2length.js +35 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/uri.js +18 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/validation_error.js +22 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +62 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +121 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/allOf.js +35 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +24 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/contains.js +108 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +101 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/if.js +79 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/index.js +71 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/items.js +66 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/items2020.js +45 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/not.js +38 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +73 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +89 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +24 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/properties.js +69 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +51 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +25 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/code.js +145 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/id.js +21 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/index.js +29 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/ref.js +139 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/discriminator/index.js +120 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/discriminator/types.js +20 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/draft7.js +33 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/format/format.js +104 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/format/index.js +18 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/metadata.js +29 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/const.js +39 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/enum.js +62 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/index.js +54 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitItems.js +36 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitLength.js +41 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +39 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +36 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +38 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/pattern.js +37 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/required.js +93 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +79 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse/index.js +104 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/ajv.js +71 -0
- package/dist/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js +169 -0
- package/dist/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js +712 -0
- package/dist/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js +157 -0
- package/dist/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/errors.js +139 -0
- package/dist/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/index.js +259 -0
- package/dist/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/names.js +40 -0
- package/dist/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js +24 -0
- package/dist/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js +169 -0
- package/dist/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/rules.js +37 -0
- package/dist/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/util.js +191 -0
- package/dist/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js +30 -0
- package/dist/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js +64 -0
- package/dist/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js +219 -0
- package/dist/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js +48 -0
- package/dist/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js +541 -0
- package/dist/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js +139 -0
- package/dist/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js +94 -0
- package/dist/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/ajv/dist/core.js +642 -0
- package/dist/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/ajv/dist/refs/data.json.js +31 -0
- package/dist/node_modules/ajv/dist/refs/data.json.js.map +1 -0
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +254 -0
- package/dist/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/equal.js +19 -0
- package/dist/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js +35 -0
- package/dist/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js +18 -0
- package/dist/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js +22 -0
- package/dist/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +62 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +121 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js +35 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +24 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js +108 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +101 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js +79 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js +71 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js +66 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js +45 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js +38 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +73 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +89 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +24 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js +69 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +51 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +25 -0
- package/dist/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js +145 -0
- package/dist/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js +21 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js +29 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js +139 -0
- package/dist/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js +120 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js +20 -0
- package/dist/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js +33 -0
- package/dist/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js +104 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js +18 -0
- package/dist/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js +29 -0
- package/dist/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js +39 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js +62 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js +54 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js +36 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js +41 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +39 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +36 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +38 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js +37 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js +93 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +79 -0
- package/dist/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/formats.js +221 -0
- package/dist/node_modules/ajv-formats/dist/formats.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/index.js +53 -0
- package/dist/node_modules/ajv-formats/dist/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/dist/limit.js +84 -0
- package/dist/node_modules/ajv-formats/dist/limit.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/ajv.js +71 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/code.js +169 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/index.js +712 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/scope.js +157 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/errors.js +139 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/index.js +259 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/names.js +40 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/ref_error.js +24 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/resolve.js +169 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/rules.js +37 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/util.js +191 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/applicability.js +30 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/boolSchema.js +64 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/dataType.js +219 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/defaults.js +48 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/index.js +541 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/keyword.js +139 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/subschema.js +94 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/core.js +642 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/refs/data.json.js +31 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/refs/data.json.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/refs/json-schema-draft-07.json.js +254 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/equal.js +19 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/ucs2length.js +35 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/uri.js +18 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/validation_error.js +22 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +62 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +121 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/allOf.js +35 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +24 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/contains.js +108 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +101 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/if.js +79 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/index.js +71 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items.js +66 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items2020.js +45 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/not.js +38 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +73 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +89 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +24 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/properties.js +69 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +51 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +25 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/code.js +145 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/id.js +21 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/index.js +29 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/ref.js +139 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/index.js +120 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/types.js +20 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/draft7.js +33 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/format.js +104 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/index.js +18 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/metadata.js +29 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/const.js +39 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/enum.js +62 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/index.js +54 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitItems.js +36 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitLength.js +41 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +39 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +36 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +38 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/pattern.js +37 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/required.js +93 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +79 -0
- package/dist/node_modules/ajv-formats/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/ajv-formats/node_modules/json-schema-traverse/index.js +104 -0
- package/dist/node_modules/ajv-formats/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/fast-uri/index.js +353 -0
- package/dist/node_modules/fast-uri/index.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/schemes.js +279 -0
- package/dist/node_modules/fast-uri/lib/schemes.js.map +1 -0
- package/dist/node_modules/fast-uri/lib/utils.js +345 -0
- package/dist/node_modules/fast-uri/lib/utils.js.map +1 -0
- package/dist/node_modules/json-schema-traverse/index.js +6 -2
- package/dist/node_modules/json-schema-traverse/index.js.map +1 -1
- package/dist/node_modules/pkce-challenge/dist/index.browser.js +8 -5
- package/dist/node_modules/pkce-challenge/dist/index.browser.js.map +1 -1
- package/dist/node_modules/zod/v4/classic/coerce.js +9 -0
- package/dist/node_modules/zod/v4/classic/coerce.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/compat.js +8 -0
- package/dist/node_modules/zod/v4/classic/compat.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.js +44 -0
- package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.js +36 -0
- package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.js +10 -0
- package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +674 -0
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/api.js +468 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.js +413 -0
- package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/zod/v4/core/core.js +60 -0
- package/dist/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.js +86 -0
- package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.js +59 -0
- package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.js +81 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.js +1328 -0
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/util.js +335 -0
- package/dist/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.js +8 -0
- package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +2 -0
- package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
- package/dist/polygon.cjs +39 -0
- package/dist/polygon.cjs.map +1 -0
- package/dist/polygon.d.ts +1 -0
- package/dist/polygon.d.ts.map +1 -0
- package/dist/polygon.js +2 -0
- package/dist/polygon.js.map +1 -0
- package/dist/solana.cjs +20 -0
- package/dist/solana.cjs.map +1 -0
- package/dist/solana.d.ts +2 -0
- package/dist/solana.d.ts.map +1 -0
- package/dist/solana.js +3 -0
- package/dist/solana.js.map +1 -0
- package/dist/solanaAccount.d.ts +13 -0
- package/dist/solanaAccount.d.ts.map +1 -0
- package/dist/solanaAccount.js +34 -0
- package/dist/solanaAccount.js.map +1 -0
- package/dist/solanaPaymentMaker.d.ts +25 -0
- package/dist/solanaPaymentMaker.d.ts.map +1 -0
- package/dist/solanaPaymentMaker.js +108 -0
- package/dist/solanaPaymentMaker.js.map +1 -0
- package/dist/types.js +152 -0
- package/dist/types.js.map +1 -0
- package/dist/world.cjs +39 -0
- package/dist/world.cjs.map +1 -0
- package/dist/world.d.ts +1 -0
- package/dist/world.d.ts.map +1 -0
- package/dist/world.js +2 -0
- package/dist/world.js.map +1 -0
- package/package.json +9 -9
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { safeParse } from '../server/zod-compat.js';
|
|
2
|
+
import { CancelledNotificationSchema, ProgressNotificationSchema, PingRequestSchema, GetTaskRequestSchema, McpError, ErrorCode, GetTaskPayloadRequestSchema, ListTasksRequestSchema, CancelTaskRequestSchema, isJSONRPCResultResponse, isJSONRPCErrorResponse, isJSONRPCRequest, isJSONRPCNotification, RELATED_TASK_META_KEY, isTaskAugmentedRequestParams, CreateTaskResultSchema, GetTaskResultSchema, ListTasksResultSchema, CancelTaskResultSchema, TaskStatusNotificationSchema } from '../types.js';
|
|
3
|
+
import { isTerminal } from '../experimental/tasks/interfaces.js';
|
|
4
|
+
import { getMethodLiteral, parseWithCompat } from '../server/zod-json-schema-compat.js';
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* The default request timeout, in miliseconds.
|
|
@@ -19,16 +22,158 @@ class Protocol {
|
|
|
19
22
|
this._progressHandlers = new Map();
|
|
20
23
|
this._timeoutInfo = new Map();
|
|
21
24
|
this._pendingDebouncedNotifications = new Set();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
// Maps task IDs to progress tokens to keep handlers alive after CreateTaskResult
|
|
26
|
+
this._taskProgressTokens = new Map();
|
|
27
|
+
this._requestResolvers = new Map();
|
|
28
|
+
this.setNotificationHandler(CancelledNotificationSchema, notification => {
|
|
29
|
+
this._oncancel(notification);
|
|
25
30
|
});
|
|
26
|
-
this.setNotificationHandler(ProgressNotificationSchema,
|
|
31
|
+
this.setNotificationHandler(ProgressNotificationSchema, notification => {
|
|
27
32
|
this._onprogress(notification);
|
|
28
33
|
});
|
|
29
34
|
this.setRequestHandler(PingRequestSchema,
|
|
30
35
|
// Automatic pong by default.
|
|
31
|
-
|
|
36
|
+
_request => ({}));
|
|
37
|
+
// Install task handlers if TaskStore is provided
|
|
38
|
+
this._taskStore = _options?.taskStore;
|
|
39
|
+
this._taskMessageQueue = _options?.taskMessageQueue;
|
|
40
|
+
if (this._taskStore) {
|
|
41
|
+
this.setRequestHandler(GetTaskRequestSchema, async (request, extra) => {
|
|
42
|
+
const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId);
|
|
43
|
+
if (!task) {
|
|
44
|
+
throw new McpError(ErrorCode.InvalidParams, 'Failed to retrieve task: Task not found');
|
|
45
|
+
}
|
|
46
|
+
// Per spec: tasks/get responses SHALL NOT include related-task metadata
|
|
47
|
+
// as the taskId parameter is the source of truth
|
|
48
|
+
// @ts-expect-error SendResultT cannot contain GetTaskResult, but we include it in our derived types everywhere else
|
|
49
|
+
return {
|
|
50
|
+
...task
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
this.setRequestHandler(GetTaskPayloadRequestSchema, async (request, extra) => {
|
|
54
|
+
const handleTaskResult = async () => {
|
|
55
|
+
const taskId = request.params.taskId;
|
|
56
|
+
// Deliver queued messages
|
|
57
|
+
if (this._taskMessageQueue) {
|
|
58
|
+
let queuedMessage;
|
|
59
|
+
while ((queuedMessage = await this._taskMessageQueue.dequeue(taskId, extra.sessionId))) {
|
|
60
|
+
// Handle response and error messages by routing them to the appropriate resolver
|
|
61
|
+
if (queuedMessage.type === 'response' || queuedMessage.type === 'error') {
|
|
62
|
+
const message = queuedMessage.message;
|
|
63
|
+
const requestId = message.id;
|
|
64
|
+
// Lookup resolver in _requestResolvers map
|
|
65
|
+
const resolver = this._requestResolvers.get(requestId);
|
|
66
|
+
if (resolver) {
|
|
67
|
+
// Remove resolver from map after invocation
|
|
68
|
+
this._requestResolvers.delete(requestId);
|
|
69
|
+
// Invoke resolver with response or error
|
|
70
|
+
if (queuedMessage.type === 'response') {
|
|
71
|
+
resolver(message);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Convert JSONRPCError to McpError
|
|
75
|
+
const errorMessage = message;
|
|
76
|
+
const error = new McpError(errorMessage.error.code, errorMessage.error.message, errorMessage.error.data);
|
|
77
|
+
resolver(error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Handle missing resolver gracefully with error logging
|
|
82
|
+
const messageType = queuedMessage.type === 'response' ? 'Response' : 'Error';
|
|
83
|
+
this._onerror(new Error(`${messageType} handler missing for request ${requestId}`));
|
|
84
|
+
}
|
|
85
|
+
// Continue to next message
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
// Send the message on the response stream by passing the relatedRequestId
|
|
89
|
+
// This tells the transport to write the message to the tasks/result response stream
|
|
90
|
+
await this._transport?.send(queuedMessage.message, { relatedRequestId: extra.requestId });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Now check task status
|
|
94
|
+
const task = await this._taskStore.getTask(taskId, extra.sessionId);
|
|
95
|
+
if (!task) {
|
|
96
|
+
throw new McpError(ErrorCode.InvalidParams, `Task not found: ${taskId}`);
|
|
97
|
+
}
|
|
98
|
+
// Block if task is not terminal (we've already delivered all queued messages above)
|
|
99
|
+
if (!isTerminal(task.status)) {
|
|
100
|
+
// Wait for status change or new messages
|
|
101
|
+
await this._waitForTaskUpdate(taskId, extra.signal);
|
|
102
|
+
// After waking up, recursively call to deliver any new messages or result
|
|
103
|
+
return await handleTaskResult();
|
|
104
|
+
}
|
|
105
|
+
// If task is terminal, return the result
|
|
106
|
+
if (isTerminal(task.status)) {
|
|
107
|
+
const result = await this._taskStore.getTaskResult(taskId, extra.sessionId);
|
|
108
|
+
this._clearTaskQueue(taskId);
|
|
109
|
+
return {
|
|
110
|
+
...result,
|
|
111
|
+
_meta: {
|
|
112
|
+
...result._meta,
|
|
113
|
+
[RELATED_TASK_META_KEY]: {
|
|
114
|
+
taskId: taskId
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return await handleTaskResult();
|
|
120
|
+
};
|
|
121
|
+
return await handleTaskResult();
|
|
122
|
+
});
|
|
123
|
+
this.setRequestHandler(ListTasksRequestSchema, async (request, extra) => {
|
|
124
|
+
try {
|
|
125
|
+
const { tasks, nextCursor } = await this._taskStore.listTasks(request.params?.cursor, extra.sessionId);
|
|
126
|
+
// @ts-expect-error SendResultT cannot contain ListTasksResult, but we include it in our derived types everywhere else
|
|
127
|
+
return {
|
|
128
|
+
tasks,
|
|
129
|
+
nextCursor,
|
|
130
|
+
_meta: {}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw new McpError(ErrorCode.InvalidParams, `Failed to list tasks: ${error instanceof Error ? error.message : String(error)}`);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
this.setRequestHandler(CancelTaskRequestSchema, async (request, extra) => {
|
|
138
|
+
try {
|
|
139
|
+
// Get the current task to check if it's in a terminal state, in case the implementation is not atomic
|
|
140
|
+
const task = await this._taskStore.getTask(request.params.taskId, extra.sessionId);
|
|
141
|
+
if (!task) {
|
|
142
|
+
throw new McpError(ErrorCode.InvalidParams, `Task not found: ${request.params.taskId}`);
|
|
143
|
+
}
|
|
144
|
+
// Reject cancellation of terminal tasks
|
|
145
|
+
if (isTerminal(task.status)) {
|
|
146
|
+
throw new McpError(ErrorCode.InvalidParams, `Cannot cancel task in terminal status: ${task.status}`);
|
|
147
|
+
}
|
|
148
|
+
await this._taskStore.updateTaskStatus(request.params.taskId, 'cancelled', 'Client cancelled task execution.', extra.sessionId);
|
|
149
|
+
this._clearTaskQueue(request.params.taskId);
|
|
150
|
+
const cancelledTask = await this._taskStore.getTask(request.params.taskId, extra.sessionId);
|
|
151
|
+
if (!cancelledTask) {
|
|
152
|
+
// Task was deleted during cancellation (e.g., cleanup happened)
|
|
153
|
+
throw new McpError(ErrorCode.InvalidParams, `Task not found after cancellation: ${request.params.taskId}`);
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
_meta: {},
|
|
157
|
+
...cancelledTask
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
// Re-throw McpError as-is
|
|
162
|
+
if (error instanceof McpError) {
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
throw new McpError(ErrorCode.InvalidRequest, `Failed to cancel task: ${error instanceof Error ? error.message : String(error)}`);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async _oncancel(notification) {
|
|
171
|
+
if (!notification.params.requestId) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Handle request cancellation
|
|
175
|
+
const controller = this._requestHandlerAbortControllers.get(notification.params.requestId);
|
|
176
|
+
controller?.abort(notification.params.reason);
|
|
32
177
|
}
|
|
33
178
|
_setupTimeout(messageId, timeout, maxTotalTimeout, onTimeout, resetTimeoutOnProgress = false) {
|
|
34
179
|
this._timeoutInfo.set(messageId, {
|
|
@@ -47,7 +192,10 @@ class Protocol {
|
|
|
47
192
|
const totalElapsed = Date.now() - info.startTime;
|
|
48
193
|
if (info.maxTotalTimeout && totalElapsed >= info.maxTotalTimeout) {
|
|
49
194
|
this._timeoutInfo.delete(messageId);
|
|
50
|
-
throw
|
|
195
|
+
throw McpError.fromError(ErrorCode.RequestTimeout, 'Maximum total timeout exceeded', {
|
|
196
|
+
maxTotalTimeout: info.maxTotalTimeout,
|
|
197
|
+
totalElapsed
|
|
198
|
+
});
|
|
51
199
|
}
|
|
52
200
|
clearTimeout(info.timeoutId);
|
|
53
201
|
info.timeoutId = setTimeout(info.onTimeout, info.timeout);
|
|
@@ -66,22 +214,21 @@ class Protocol {
|
|
|
66
214
|
* The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.
|
|
67
215
|
*/
|
|
68
216
|
async connect(transport) {
|
|
69
|
-
var _a, _b, _c;
|
|
70
217
|
this._transport = transport;
|
|
71
|
-
const _onclose =
|
|
218
|
+
const _onclose = this.transport?.onclose;
|
|
72
219
|
this._transport.onclose = () => {
|
|
73
|
-
_onclose
|
|
220
|
+
_onclose?.();
|
|
74
221
|
this._onclose();
|
|
75
222
|
};
|
|
76
|
-
const _onerror =
|
|
223
|
+
const _onerror = this.transport?.onerror;
|
|
77
224
|
this._transport.onerror = (error) => {
|
|
78
|
-
_onerror
|
|
225
|
+
_onerror?.(error);
|
|
79
226
|
this._onerror(error);
|
|
80
227
|
};
|
|
81
|
-
const _onmessage =
|
|
228
|
+
const _onmessage = this._transport?.onmessage;
|
|
82
229
|
this._transport.onmessage = (message, extra) => {
|
|
83
|
-
_onmessage
|
|
84
|
-
if (
|
|
230
|
+
_onmessage?.(message, extra);
|
|
231
|
+
if (isJSONRPCResultResponse(message) || isJSONRPCErrorResponse(message)) {
|
|
85
232
|
this._onresponse(message);
|
|
86
233
|
}
|
|
87
234
|
else if (isJSONRPCRequest(message)) {
|
|
@@ -97,25 +244,23 @@ class Protocol {
|
|
|
97
244
|
await this._transport.start();
|
|
98
245
|
}
|
|
99
246
|
_onclose() {
|
|
100
|
-
var _a;
|
|
101
247
|
const responseHandlers = this._responseHandlers;
|
|
102
248
|
this._responseHandlers = new Map();
|
|
103
249
|
this._progressHandlers.clear();
|
|
250
|
+
this._taskProgressTokens.clear();
|
|
104
251
|
this._pendingDebouncedNotifications.clear();
|
|
252
|
+
const error = McpError.fromError(ErrorCode.ConnectionClosed, 'Connection closed');
|
|
105
253
|
this._transport = undefined;
|
|
106
|
-
|
|
107
|
-
const error = new McpError(ErrorCode.ConnectionClosed, "Connection closed");
|
|
254
|
+
this.onclose?.();
|
|
108
255
|
for (const handler of responseHandlers.values()) {
|
|
109
256
|
handler(error);
|
|
110
257
|
}
|
|
111
258
|
}
|
|
112
259
|
_onerror(error) {
|
|
113
|
-
|
|
114
|
-
(_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
260
|
+
this.onerror?.(error);
|
|
115
261
|
}
|
|
116
262
|
_onnotification(notification) {
|
|
117
|
-
|
|
118
|
-
const handler = (_a = this._notificationHandlers.get(notification.method)) !== null && _a !== void 0 ? _a : this.fallbackNotificationHandler;
|
|
263
|
+
const handler = this._notificationHandlers.get(notification.method) ?? this.fallbackNotificationHandler;
|
|
119
264
|
// Ignore notifications not being subscribed to.
|
|
120
265
|
if (handler === undefined) {
|
|
121
266
|
return;
|
|
@@ -123,65 +268,135 @@ class Protocol {
|
|
|
123
268
|
// Starting with Promise.resolve() puts any synchronous errors into the monad as well.
|
|
124
269
|
Promise.resolve()
|
|
125
270
|
.then(() => handler(notification))
|
|
126
|
-
.catch(
|
|
271
|
+
.catch(error => this._onerror(new Error(`Uncaught error in notification handler: ${error}`)));
|
|
127
272
|
}
|
|
128
273
|
_onrequest(request, extra) {
|
|
129
|
-
|
|
130
|
-
const handler = (_a = this._requestHandlers.get(request.method)) !== null && _a !== void 0 ? _a : this.fallbackRequestHandler;
|
|
274
|
+
const handler = this._requestHandlers.get(request.method) ?? this.fallbackRequestHandler;
|
|
131
275
|
// Capture the current transport at request time to ensure responses go to the correct client
|
|
132
276
|
const capturedTransport = this._transport;
|
|
277
|
+
// Extract taskId from request metadata if present (needed early for method not found case)
|
|
278
|
+
const relatedTaskId = request.params?._meta?.[RELATED_TASK_META_KEY]?.taskId;
|
|
133
279
|
if (handler === undefined) {
|
|
134
|
-
|
|
135
|
-
jsonrpc:
|
|
280
|
+
const errorResponse = {
|
|
281
|
+
jsonrpc: '2.0',
|
|
136
282
|
id: request.id,
|
|
137
283
|
error: {
|
|
138
284
|
code: ErrorCode.MethodNotFound,
|
|
139
|
-
message:
|
|
140
|
-
}
|
|
141
|
-
}
|
|
285
|
+
message: 'Method not found'
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
// Queue or send the error response based on whether this is a task-related request
|
|
289
|
+
if (relatedTaskId && this._taskMessageQueue) {
|
|
290
|
+
this._enqueueTaskMessage(relatedTaskId, {
|
|
291
|
+
type: 'error',
|
|
292
|
+
message: errorResponse,
|
|
293
|
+
timestamp: Date.now()
|
|
294
|
+
}, capturedTransport?.sessionId).catch(error => this._onerror(new Error(`Failed to enqueue error response: ${error}`)));
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
capturedTransport
|
|
298
|
+
?.send(errorResponse)
|
|
299
|
+
.catch(error => this._onerror(new Error(`Failed to send an error response: ${error}`)));
|
|
300
|
+
}
|
|
142
301
|
return;
|
|
143
302
|
}
|
|
144
303
|
const abortController = new AbortController();
|
|
145
304
|
this._requestHandlerAbortControllers.set(request.id, abortController);
|
|
305
|
+
const taskCreationParams = isTaskAugmentedRequestParams(request.params) ? request.params.task : undefined;
|
|
306
|
+
const taskStore = this._taskStore ? this.requestTaskStore(request, capturedTransport?.sessionId) : undefined;
|
|
146
307
|
const fullExtra = {
|
|
147
308
|
signal: abortController.signal,
|
|
148
|
-
sessionId: capturedTransport
|
|
149
|
-
_meta:
|
|
150
|
-
sendNotification: (notification) =>
|
|
151
|
-
|
|
152
|
-
|
|
309
|
+
sessionId: capturedTransport?.sessionId,
|
|
310
|
+
_meta: request.params?._meta,
|
|
311
|
+
sendNotification: async (notification) => {
|
|
312
|
+
// Include related-task metadata if this request is part of a task
|
|
313
|
+
const notificationOptions = { relatedRequestId: request.id };
|
|
314
|
+
if (relatedTaskId) {
|
|
315
|
+
notificationOptions.relatedTask = { taskId: relatedTaskId };
|
|
316
|
+
}
|
|
317
|
+
await this.notification(notification, notificationOptions);
|
|
318
|
+
},
|
|
319
|
+
sendRequest: async (r, resultSchema, options) => {
|
|
320
|
+
// Include related-task metadata if this request is part of a task
|
|
321
|
+
const requestOptions = { ...options, relatedRequestId: request.id };
|
|
322
|
+
if (relatedTaskId && !requestOptions.relatedTask) {
|
|
323
|
+
requestOptions.relatedTask = { taskId: relatedTaskId };
|
|
324
|
+
}
|
|
325
|
+
// Set task status to input_required when sending a request within a task context
|
|
326
|
+
// Use the taskId from options (explicit) or fall back to relatedTaskId (inherited)
|
|
327
|
+
const effectiveTaskId = requestOptions.relatedTask?.taskId ?? relatedTaskId;
|
|
328
|
+
if (effectiveTaskId && taskStore) {
|
|
329
|
+
await taskStore.updateTaskStatus(effectiveTaskId, 'input_required');
|
|
330
|
+
}
|
|
331
|
+
return await this.request(r, resultSchema, requestOptions);
|
|
332
|
+
},
|
|
333
|
+
authInfo: extra?.authInfo,
|
|
153
334
|
requestId: request.id,
|
|
154
|
-
requestInfo: extra
|
|
335
|
+
requestInfo: extra?.requestInfo,
|
|
336
|
+
taskId: relatedTaskId,
|
|
337
|
+
taskStore: taskStore,
|
|
338
|
+
taskRequestedTtl: taskCreationParams?.ttl,
|
|
339
|
+
closeSSEStream: extra?.closeSSEStream,
|
|
340
|
+
closeStandaloneSSEStream: extra?.closeStandaloneSSEStream
|
|
155
341
|
};
|
|
156
342
|
// Starting with Promise.resolve() puts any synchronous errors into the monad as well.
|
|
157
343
|
Promise.resolve()
|
|
344
|
+
.then(() => {
|
|
345
|
+
// If this request asked for task creation, check capability first
|
|
346
|
+
if (taskCreationParams) {
|
|
347
|
+
// Check if the request method supports task creation
|
|
348
|
+
this.assertTaskHandlerCapability(request.method);
|
|
349
|
+
}
|
|
350
|
+
})
|
|
158
351
|
.then(() => handler(request, fullExtra))
|
|
159
|
-
.then((result) => {
|
|
352
|
+
.then(async (result) => {
|
|
160
353
|
if (abortController.signal.aborted) {
|
|
354
|
+
// Request was cancelled
|
|
161
355
|
return;
|
|
162
356
|
}
|
|
163
|
-
|
|
357
|
+
const response = {
|
|
164
358
|
result,
|
|
165
|
-
jsonrpc:
|
|
166
|
-
id: request.id
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
359
|
+
jsonrpc: '2.0',
|
|
360
|
+
id: request.id
|
|
361
|
+
};
|
|
362
|
+
// Queue or send the response based on whether this is a task-related request
|
|
363
|
+
if (relatedTaskId && this._taskMessageQueue) {
|
|
364
|
+
await this._enqueueTaskMessage(relatedTaskId, {
|
|
365
|
+
type: 'response',
|
|
366
|
+
message: response,
|
|
367
|
+
timestamp: Date.now()
|
|
368
|
+
}, capturedTransport?.sessionId);
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
await capturedTransport?.send(response);
|
|
372
|
+
}
|
|
373
|
+
}, async (error) => {
|
|
170
374
|
if (abortController.signal.aborted) {
|
|
375
|
+
// Request was cancelled
|
|
171
376
|
return;
|
|
172
377
|
}
|
|
173
|
-
|
|
174
|
-
jsonrpc:
|
|
378
|
+
const errorResponse = {
|
|
379
|
+
jsonrpc: '2.0',
|
|
175
380
|
id: request.id,
|
|
176
381
|
error: {
|
|
177
|
-
code: Number.isSafeInteger(error[
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
382
|
+
code: Number.isSafeInteger(error['code']) ? error['code'] : ErrorCode.InternalError,
|
|
383
|
+
message: error.message ?? 'Internal error',
|
|
384
|
+
...(error['data'] !== undefined && { data: error['data'] })
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
// Queue or send the error response based on whether this is a task-related request
|
|
388
|
+
if (relatedTaskId && this._taskMessageQueue) {
|
|
389
|
+
await this._enqueueTaskMessage(relatedTaskId, {
|
|
390
|
+
type: 'error',
|
|
391
|
+
message: errorResponse,
|
|
392
|
+
timestamp: Date.now()
|
|
393
|
+
}, capturedTransport?.sessionId);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
await capturedTransport?.send(errorResponse);
|
|
397
|
+
}
|
|
183
398
|
})
|
|
184
|
-
.catch(
|
|
399
|
+
.catch(error => this._onerror(new Error(`Failed to send response: ${error}`)))
|
|
185
400
|
.finally(() => {
|
|
186
401
|
this._requestHandlerAbortControllers.delete(request.id);
|
|
187
402
|
});
|
|
@@ -201,6 +416,10 @@ class Protocol {
|
|
|
201
416
|
this._resetTimeout(messageId);
|
|
202
417
|
}
|
|
203
418
|
catch (error) {
|
|
419
|
+
// Clean up if maxTotalTimeout was exceeded
|
|
420
|
+
this._responseHandlers.delete(messageId);
|
|
421
|
+
this._progressHandlers.delete(messageId);
|
|
422
|
+
this._cleanupTimeout(messageId);
|
|
204
423
|
responseHandler(error);
|
|
205
424
|
return;
|
|
206
425
|
}
|
|
@@ -209,19 +428,46 @@ class Protocol {
|
|
|
209
428
|
}
|
|
210
429
|
_onresponse(response) {
|
|
211
430
|
const messageId = Number(response.id);
|
|
431
|
+
// Check if this is a response to a queued request
|
|
432
|
+
const resolver = this._requestResolvers.get(messageId);
|
|
433
|
+
if (resolver) {
|
|
434
|
+
this._requestResolvers.delete(messageId);
|
|
435
|
+
if (isJSONRPCResultResponse(response)) {
|
|
436
|
+
resolver(response);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
const error = new McpError(response.error.code, response.error.message, response.error.data);
|
|
440
|
+
resolver(error);
|
|
441
|
+
}
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
212
444
|
const handler = this._responseHandlers.get(messageId);
|
|
213
445
|
if (handler === undefined) {
|
|
214
446
|
this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`));
|
|
215
447
|
return;
|
|
216
448
|
}
|
|
217
449
|
this._responseHandlers.delete(messageId);
|
|
218
|
-
this._progressHandlers.delete(messageId);
|
|
219
450
|
this._cleanupTimeout(messageId);
|
|
220
|
-
|
|
451
|
+
// Keep progress handler alive for CreateTaskResult responses
|
|
452
|
+
let isTaskResponse = false;
|
|
453
|
+
if (isJSONRPCResultResponse(response) && response.result && typeof response.result === 'object') {
|
|
454
|
+
const result = response.result;
|
|
455
|
+
if (result.task && typeof result.task === 'object') {
|
|
456
|
+
const task = result.task;
|
|
457
|
+
if (typeof task.taskId === 'string') {
|
|
458
|
+
isTaskResponse = true;
|
|
459
|
+
this._taskProgressTokens.set(task.taskId, messageId);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
if (!isTaskResponse) {
|
|
464
|
+
this._progressHandlers.delete(messageId);
|
|
465
|
+
}
|
|
466
|
+
if (isJSONRPCResultResponse(response)) {
|
|
221
467
|
handler(response);
|
|
222
468
|
}
|
|
223
469
|
else {
|
|
224
|
-
const error =
|
|
470
|
+
const error = McpError.fromError(response.error.code, response.error.message, response.error.data);
|
|
225
471
|
handler(error);
|
|
226
472
|
}
|
|
227
473
|
}
|
|
@@ -232,101 +478,327 @@ class Protocol {
|
|
|
232
478
|
* Closes the connection.
|
|
233
479
|
*/
|
|
234
480
|
async close() {
|
|
235
|
-
|
|
236
|
-
await ((_a = this._transport) === null || _a === void 0 ? void 0 : _a.close());
|
|
481
|
+
await this._transport?.close();
|
|
237
482
|
}
|
|
238
483
|
/**
|
|
239
|
-
* Sends a request and
|
|
484
|
+
* Sends a request and returns an AsyncGenerator that yields response messages.
|
|
485
|
+
* The generator is guaranteed to end with either a 'result' or 'error' message.
|
|
486
|
+
*
|
|
487
|
+
* @example
|
|
488
|
+
* ```typescript
|
|
489
|
+
* const stream = protocol.requestStream(request, resultSchema, options);
|
|
490
|
+
* for await (const message of stream) {
|
|
491
|
+
* switch (message.type) {
|
|
492
|
+
* case 'taskCreated':
|
|
493
|
+
* console.log('Task created:', message.task.taskId);
|
|
494
|
+
* break;
|
|
495
|
+
* case 'taskStatus':
|
|
496
|
+
* console.log('Task status:', message.task.status);
|
|
497
|
+
* break;
|
|
498
|
+
* case 'result':
|
|
499
|
+
* console.log('Final result:', message.result);
|
|
500
|
+
* break;
|
|
501
|
+
* case 'error':
|
|
502
|
+
* console.error('Error:', message.error);
|
|
503
|
+
* break;
|
|
504
|
+
* }
|
|
505
|
+
* }
|
|
506
|
+
* ```
|
|
507
|
+
*
|
|
508
|
+
* @experimental Use `client.experimental.tasks.requestStream()` to access this method.
|
|
509
|
+
*/
|
|
510
|
+
async *requestStream(request, resultSchema, options) {
|
|
511
|
+
const { task } = options ?? {};
|
|
512
|
+
// For non-task requests, just yield the result
|
|
513
|
+
if (!task) {
|
|
514
|
+
try {
|
|
515
|
+
const result = await this.request(request, resultSchema, options);
|
|
516
|
+
yield { type: 'result', result };
|
|
517
|
+
}
|
|
518
|
+
catch (error) {
|
|
519
|
+
yield {
|
|
520
|
+
type: 'error',
|
|
521
|
+
error: error instanceof McpError ? error : new McpError(ErrorCode.InternalError, String(error))
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
// For task-augmented requests, we need to poll for status
|
|
527
|
+
// First, make the request to create the task
|
|
528
|
+
let taskId;
|
|
529
|
+
try {
|
|
530
|
+
// Send the request and get the CreateTaskResult
|
|
531
|
+
const createResult = await this.request(request, CreateTaskResultSchema, options);
|
|
532
|
+
// Extract taskId from the result
|
|
533
|
+
if (createResult.task) {
|
|
534
|
+
taskId = createResult.task.taskId;
|
|
535
|
+
yield { type: 'taskCreated', task: createResult.task };
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
throw new McpError(ErrorCode.InternalError, 'Task creation did not return a task');
|
|
539
|
+
}
|
|
540
|
+
// Poll for task completion
|
|
541
|
+
while (true) {
|
|
542
|
+
// Get current task status
|
|
543
|
+
const task = await this.getTask({ taskId }, options);
|
|
544
|
+
yield { type: 'taskStatus', task };
|
|
545
|
+
// Check if task is terminal
|
|
546
|
+
if (isTerminal(task.status)) {
|
|
547
|
+
if (task.status === 'completed') {
|
|
548
|
+
// Get the final result
|
|
549
|
+
const result = await this.getTaskResult({ taskId }, resultSchema, options);
|
|
550
|
+
yield { type: 'result', result };
|
|
551
|
+
}
|
|
552
|
+
else if (task.status === 'failed') {
|
|
553
|
+
yield {
|
|
554
|
+
type: 'error',
|
|
555
|
+
error: new McpError(ErrorCode.InternalError, `Task ${taskId} failed`)
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
else if (task.status === 'cancelled') {
|
|
559
|
+
yield {
|
|
560
|
+
type: 'error',
|
|
561
|
+
error: new McpError(ErrorCode.InternalError, `Task ${taskId} was cancelled`)
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
// When input_required, call tasks/result to deliver queued messages
|
|
567
|
+
// (elicitation, sampling) via SSE and block until terminal
|
|
568
|
+
if (task.status === 'input_required') {
|
|
569
|
+
const result = await this.getTaskResult({ taskId }, resultSchema, options);
|
|
570
|
+
yield { type: 'result', result };
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
// Wait before polling again
|
|
574
|
+
const pollInterval = task.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1000;
|
|
575
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
576
|
+
// Check if cancelled
|
|
577
|
+
options?.signal?.throwIfAborted();
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
catch (error) {
|
|
581
|
+
yield {
|
|
582
|
+
type: 'error',
|
|
583
|
+
error: error instanceof McpError ? error : new McpError(ErrorCode.InternalError, String(error))
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Sends a request and waits for a response.
|
|
240
589
|
*
|
|
241
590
|
* Do not use this method to emit notifications! Use notification() instead.
|
|
242
591
|
*/
|
|
243
592
|
request(request, resultSchema, options) {
|
|
244
|
-
const { relatedRequestId, resumptionToken, onresumptiontoken } = options
|
|
593
|
+
const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {};
|
|
594
|
+
// Send the request
|
|
245
595
|
return new Promise((resolve, reject) => {
|
|
246
|
-
|
|
596
|
+
const earlyReject = (error) => {
|
|
597
|
+
reject(error);
|
|
598
|
+
};
|
|
247
599
|
if (!this._transport) {
|
|
248
|
-
|
|
600
|
+
earlyReject(new Error('Not connected'));
|
|
249
601
|
return;
|
|
250
602
|
}
|
|
251
|
-
if (
|
|
252
|
-
|
|
603
|
+
if (this._options?.enforceStrictCapabilities === true) {
|
|
604
|
+
try {
|
|
605
|
+
this.assertCapabilityForMethod(request.method);
|
|
606
|
+
// If task creation is requested, also check task capabilities
|
|
607
|
+
if (task) {
|
|
608
|
+
this.assertTaskCapability(request.method);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
catch (e) {
|
|
612
|
+
earlyReject(e);
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
253
615
|
}
|
|
254
|
-
|
|
616
|
+
options?.signal?.throwIfAborted();
|
|
255
617
|
const messageId = this._requestMessageId++;
|
|
256
618
|
const jsonrpcRequest = {
|
|
257
619
|
...request,
|
|
258
|
-
jsonrpc:
|
|
259
|
-
id: messageId
|
|
620
|
+
jsonrpc: '2.0',
|
|
621
|
+
id: messageId
|
|
260
622
|
};
|
|
261
|
-
if (options
|
|
623
|
+
if (options?.onprogress) {
|
|
262
624
|
this._progressHandlers.set(messageId, options.onprogress);
|
|
263
625
|
jsonrpcRequest.params = {
|
|
264
626
|
...request.params,
|
|
265
627
|
_meta: {
|
|
266
|
-
...(
|
|
628
|
+
...(request.params?._meta || {}),
|
|
267
629
|
progressToken: messageId
|
|
268
|
-
}
|
|
630
|
+
}
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
// Augment with task creation parameters if provided
|
|
634
|
+
if (task) {
|
|
635
|
+
jsonrpcRequest.params = {
|
|
636
|
+
...jsonrpcRequest.params,
|
|
637
|
+
task: task
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
// Augment with related task metadata if relatedTask is provided
|
|
641
|
+
if (relatedTask) {
|
|
642
|
+
jsonrpcRequest.params = {
|
|
643
|
+
...jsonrpcRequest.params,
|
|
644
|
+
_meta: {
|
|
645
|
+
...(jsonrpcRequest.params?._meta || {}),
|
|
646
|
+
[RELATED_TASK_META_KEY]: relatedTask
|
|
647
|
+
}
|
|
269
648
|
};
|
|
270
649
|
}
|
|
271
650
|
const cancel = (reason) => {
|
|
272
|
-
var _a;
|
|
273
651
|
this._responseHandlers.delete(messageId);
|
|
274
652
|
this._progressHandlers.delete(messageId);
|
|
275
653
|
this._cleanupTimeout(messageId);
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
654
|
+
this._transport
|
|
655
|
+
?.send({
|
|
656
|
+
jsonrpc: '2.0',
|
|
657
|
+
method: 'notifications/cancelled',
|
|
279
658
|
params: {
|
|
280
659
|
requestId: messageId,
|
|
281
|
-
reason: String(reason)
|
|
282
|
-
}
|
|
283
|
-
}, { relatedRequestId, resumptionToken, onresumptiontoken })
|
|
284
|
-
|
|
660
|
+
reason: String(reason)
|
|
661
|
+
}
|
|
662
|
+
}, { relatedRequestId, resumptionToken, onresumptiontoken })
|
|
663
|
+
.catch(error => this._onerror(new Error(`Failed to send cancellation: ${error}`)));
|
|
664
|
+
// Wrap the reason in an McpError if it isn't already
|
|
665
|
+
const error = reason instanceof McpError ? reason : new McpError(ErrorCode.RequestTimeout, String(reason));
|
|
666
|
+
reject(error);
|
|
285
667
|
};
|
|
286
|
-
this._responseHandlers.set(messageId,
|
|
287
|
-
|
|
288
|
-
if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
|
|
668
|
+
this._responseHandlers.set(messageId, response => {
|
|
669
|
+
if (options?.signal?.aborted) {
|
|
289
670
|
return;
|
|
290
671
|
}
|
|
291
672
|
if (response instanceof Error) {
|
|
292
673
|
return reject(response);
|
|
293
674
|
}
|
|
294
675
|
try {
|
|
295
|
-
const
|
|
296
|
-
|
|
676
|
+
const parseResult = safeParse(resultSchema, response.result);
|
|
677
|
+
if (!parseResult.success) {
|
|
678
|
+
// Type guard: if success is false, error is guaranteed to exist
|
|
679
|
+
reject(parseResult.error);
|
|
680
|
+
}
|
|
681
|
+
else {
|
|
682
|
+
resolve(parseResult.data);
|
|
683
|
+
}
|
|
297
684
|
}
|
|
298
685
|
catch (error) {
|
|
299
686
|
reject(error);
|
|
300
687
|
}
|
|
301
688
|
});
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
cancel((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.reason);
|
|
305
|
-
});
|
|
306
|
-
const timeout = (_e = options === null || options === void 0 ? void 0 : options.timeout) !== null && _e !== void 0 ? _e : DEFAULT_REQUEST_TIMEOUT_MSEC;
|
|
307
|
-
const timeoutHandler = () => cancel(new McpError(ErrorCode.RequestTimeout, "Request timed out", { timeout }));
|
|
308
|
-
this._setupTimeout(messageId, timeout, options === null || options === void 0 ? void 0 : options.maxTotalTimeout, timeoutHandler, (_f = options === null || options === void 0 ? void 0 : options.resetTimeoutOnProgress) !== null && _f !== void 0 ? _f : false);
|
|
309
|
-
this._transport.send(jsonrpcRequest, { relatedRequestId, resumptionToken, onresumptiontoken }).catch((error) => {
|
|
310
|
-
this._cleanupTimeout(messageId);
|
|
311
|
-
reject(error);
|
|
689
|
+
options?.signal?.addEventListener('abort', () => {
|
|
690
|
+
cancel(options?.signal?.reason);
|
|
312
691
|
});
|
|
692
|
+
const timeout = options?.timeout ?? DEFAULT_REQUEST_TIMEOUT_MSEC;
|
|
693
|
+
const timeoutHandler = () => cancel(McpError.fromError(ErrorCode.RequestTimeout, 'Request timed out', { timeout }));
|
|
694
|
+
this._setupTimeout(messageId, timeout, options?.maxTotalTimeout, timeoutHandler, options?.resetTimeoutOnProgress ?? false);
|
|
695
|
+
// Queue request if related to a task
|
|
696
|
+
const relatedTaskId = relatedTask?.taskId;
|
|
697
|
+
if (relatedTaskId) {
|
|
698
|
+
// Store the response resolver for this request so responses can be routed back
|
|
699
|
+
const responseResolver = (response) => {
|
|
700
|
+
const handler = this._responseHandlers.get(messageId);
|
|
701
|
+
if (handler) {
|
|
702
|
+
handler(response);
|
|
703
|
+
}
|
|
704
|
+
else {
|
|
705
|
+
// Log error when resolver is missing, but don't fail
|
|
706
|
+
this._onerror(new Error(`Response handler missing for side-channeled request ${messageId}`));
|
|
707
|
+
}
|
|
708
|
+
};
|
|
709
|
+
this._requestResolvers.set(messageId, responseResolver);
|
|
710
|
+
this._enqueueTaskMessage(relatedTaskId, {
|
|
711
|
+
type: 'request',
|
|
712
|
+
message: jsonrpcRequest,
|
|
713
|
+
timestamp: Date.now()
|
|
714
|
+
}).catch(error => {
|
|
715
|
+
this._cleanupTimeout(messageId);
|
|
716
|
+
reject(error);
|
|
717
|
+
});
|
|
718
|
+
// Don't send through transport - queued messages are delivered via tasks/result only
|
|
719
|
+
// This prevents duplicate delivery for bidirectional transports
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
// No related task - send through transport normally
|
|
723
|
+
this._transport.send(jsonrpcRequest, { relatedRequestId, resumptionToken, onresumptiontoken }).catch(error => {
|
|
724
|
+
this._cleanupTimeout(messageId);
|
|
725
|
+
reject(error);
|
|
726
|
+
});
|
|
727
|
+
}
|
|
313
728
|
});
|
|
314
729
|
}
|
|
730
|
+
/**
|
|
731
|
+
* Gets the current status of a task.
|
|
732
|
+
*
|
|
733
|
+
* @experimental Use `client.experimental.tasks.getTask()` to access this method.
|
|
734
|
+
*/
|
|
735
|
+
async getTask(params, options) {
|
|
736
|
+
// @ts-expect-error SendRequestT cannot directly contain GetTaskRequest, but we ensure all type instantiations contain it anyways
|
|
737
|
+
return this.request({ method: 'tasks/get', params }, GetTaskResultSchema, options);
|
|
738
|
+
}
|
|
739
|
+
/**
|
|
740
|
+
* Retrieves the result of a completed task.
|
|
741
|
+
*
|
|
742
|
+
* @experimental Use `client.experimental.tasks.getTaskResult()` to access this method.
|
|
743
|
+
*/
|
|
744
|
+
async getTaskResult(params, resultSchema, options) {
|
|
745
|
+
// @ts-expect-error SendRequestT cannot directly contain GetTaskPayloadRequest, but we ensure all type instantiations contain it anyways
|
|
746
|
+
return this.request({ method: 'tasks/result', params }, resultSchema, options);
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Lists tasks, optionally starting from a pagination cursor.
|
|
750
|
+
*
|
|
751
|
+
* @experimental Use `client.experimental.tasks.listTasks()` to access this method.
|
|
752
|
+
*/
|
|
753
|
+
async listTasks(params, options) {
|
|
754
|
+
// @ts-expect-error SendRequestT cannot directly contain ListTasksRequest, but we ensure all type instantiations contain it anyways
|
|
755
|
+
return this.request({ method: 'tasks/list', params }, ListTasksResultSchema, options);
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
758
|
+
* Cancels a specific task.
|
|
759
|
+
*
|
|
760
|
+
* @experimental Use `client.experimental.tasks.cancelTask()` to access this method.
|
|
761
|
+
*/
|
|
762
|
+
async cancelTask(params, options) {
|
|
763
|
+
// @ts-expect-error SendRequestT cannot directly contain CancelTaskRequest, but we ensure all type instantiations contain it anyways
|
|
764
|
+
return this.request({ method: 'tasks/cancel', params }, CancelTaskResultSchema, options);
|
|
765
|
+
}
|
|
315
766
|
/**
|
|
316
767
|
* Emits a notification, which is a one-way message that does not expect a response.
|
|
317
768
|
*/
|
|
318
769
|
async notification(notification, options) {
|
|
319
|
-
var _a, _b;
|
|
320
770
|
if (!this._transport) {
|
|
321
|
-
throw new Error(
|
|
771
|
+
throw new Error('Not connected');
|
|
322
772
|
}
|
|
323
773
|
this.assertNotificationCapability(notification.method);
|
|
324
|
-
|
|
774
|
+
// Queue notification if related to a task
|
|
775
|
+
const relatedTaskId = options?.relatedTask?.taskId;
|
|
776
|
+
if (relatedTaskId) {
|
|
777
|
+
// Build the JSONRPC notification with metadata
|
|
778
|
+
const jsonrpcNotification = {
|
|
779
|
+
...notification,
|
|
780
|
+
jsonrpc: '2.0',
|
|
781
|
+
params: {
|
|
782
|
+
...notification.params,
|
|
783
|
+
_meta: {
|
|
784
|
+
...(notification.params?._meta || {}),
|
|
785
|
+
[RELATED_TASK_META_KEY]: options.relatedTask
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
};
|
|
789
|
+
await this._enqueueTaskMessage(relatedTaskId, {
|
|
790
|
+
type: 'notification',
|
|
791
|
+
message: jsonrpcNotification,
|
|
792
|
+
timestamp: Date.now()
|
|
793
|
+
});
|
|
794
|
+
// Don't send through transport - queued messages are delivered via tasks/result only
|
|
795
|
+
// This prevents duplicate delivery for bidirectional transports
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
const debouncedMethods = this._options?.debouncedNotificationMethods ?? [];
|
|
325
799
|
// A notification can only be debounced if it's in the list AND it's "simple"
|
|
326
|
-
// (i.e., has no parameters and no related request ID that could be lost).
|
|
327
|
-
const canDebounce = debouncedMethods.includes(notification.method)
|
|
328
|
-
&& !notification.params
|
|
329
|
-
&& !(options === null || options === void 0 ? void 0 : options.relatedRequestId);
|
|
800
|
+
// (i.e., has no parameters and no related request ID or related task that could be lost).
|
|
801
|
+
const canDebounce = debouncedMethods.includes(notification.method) && !notification.params && !options?.relatedRequestId && !options?.relatedTask;
|
|
330
802
|
if (canDebounce) {
|
|
331
803
|
// If a notification of this type is already scheduled, do nothing.
|
|
332
804
|
if (this._pendingDebouncedNotifications.has(notification.method)) {
|
|
@@ -337,28 +809,53 @@ class Protocol {
|
|
|
337
809
|
// Schedule the actual send to happen in the next microtask.
|
|
338
810
|
// This allows all synchronous calls in the current event loop tick to be coalesced.
|
|
339
811
|
Promise.resolve().then(() => {
|
|
340
|
-
var _a;
|
|
341
812
|
// Un-mark the notification so the next one can be scheduled.
|
|
342
813
|
this._pendingDebouncedNotifications.delete(notification.method);
|
|
343
814
|
// SAFETY CHECK: If the connection was closed while this was pending, abort.
|
|
344
815
|
if (!this._transport) {
|
|
345
816
|
return;
|
|
346
817
|
}
|
|
347
|
-
|
|
818
|
+
let jsonrpcNotification = {
|
|
348
819
|
...notification,
|
|
349
|
-
jsonrpc:
|
|
820
|
+
jsonrpc: '2.0'
|
|
350
821
|
};
|
|
822
|
+
// Augment with related task metadata if relatedTask is provided
|
|
823
|
+
if (options?.relatedTask) {
|
|
824
|
+
jsonrpcNotification = {
|
|
825
|
+
...jsonrpcNotification,
|
|
826
|
+
params: {
|
|
827
|
+
...jsonrpcNotification.params,
|
|
828
|
+
_meta: {
|
|
829
|
+
...(jsonrpcNotification.params?._meta || {}),
|
|
830
|
+
[RELATED_TASK_META_KEY]: options.relatedTask
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
};
|
|
834
|
+
}
|
|
351
835
|
// Send the notification, but don't await it here to avoid blocking.
|
|
352
836
|
// Handle potential errors with a .catch().
|
|
353
|
-
|
|
837
|
+
this._transport?.send(jsonrpcNotification, options).catch(error => this._onerror(error));
|
|
354
838
|
});
|
|
355
839
|
// Return immediately.
|
|
356
840
|
return;
|
|
357
841
|
}
|
|
358
|
-
|
|
842
|
+
let jsonrpcNotification = {
|
|
359
843
|
...notification,
|
|
360
|
-
jsonrpc:
|
|
844
|
+
jsonrpc: '2.0'
|
|
361
845
|
};
|
|
846
|
+
// Augment with related task metadata if relatedTask is provided
|
|
847
|
+
if (options?.relatedTask) {
|
|
848
|
+
jsonrpcNotification = {
|
|
849
|
+
...jsonrpcNotification,
|
|
850
|
+
params: {
|
|
851
|
+
...jsonrpcNotification.params,
|
|
852
|
+
_meta: {
|
|
853
|
+
...(jsonrpcNotification.params?._meta || {}),
|
|
854
|
+
[RELATED_TASK_META_KEY]: options.relatedTask
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
};
|
|
858
|
+
}
|
|
362
859
|
await this._transport.send(jsonrpcNotification, options);
|
|
363
860
|
}
|
|
364
861
|
/**
|
|
@@ -367,10 +864,11 @@ class Protocol {
|
|
|
367
864
|
* Note that this will replace any previous request handler for the same method.
|
|
368
865
|
*/
|
|
369
866
|
setRequestHandler(requestSchema, handler) {
|
|
370
|
-
const method = requestSchema
|
|
867
|
+
const method = getMethodLiteral(requestSchema);
|
|
371
868
|
this.assertRequestHandlerCapability(method);
|
|
372
869
|
this._requestHandlers.set(method, (request, extra) => {
|
|
373
|
-
|
|
870
|
+
const parsed = parseWithCompat(requestSchema, request);
|
|
871
|
+
return Promise.resolve(handler(parsed, extra));
|
|
374
872
|
});
|
|
375
873
|
}
|
|
376
874
|
/**
|
|
@@ -393,7 +891,11 @@ class Protocol {
|
|
|
393
891
|
* Note that this will replace any previous notification handler for the same method.
|
|
394
892
|
*/
|
|
395
893
|
setNotificationHandler(notificationSchema, handler) {
|
|
396
|
-
|
|
894
|
+
const method = getMethodLiteral(notificationSchema);
|
|
895
|
+
this._notificationHandlers.set(method, notification => {
|
|
896
|
+
const parsed = parseWithCompat(notificationSchema, notification);
|
|
897
|
+
return Promise.resolve(handler(parsed));
|
|
898
|
+
});
|
|
397
899
|
}
|
|
398
900
|
/**
|
|
399
901
|
* Removes the notification handler for the given method.
|
|
@@ -401,17 +903,186 @@ class Protocol {
|
|
|
401
903
|
removeNotificationHandler(method) {
|
|
402
904
|
this._notificationHandlers.delete(method);
|
|
403
905
|
}
|
|
906
|
+
/**
|
|
907
|
+
* Cleans up the progress handler associated with a task.
|
|
908
|
+
* This should be called when a task reaches a terminal status.
|
|
909
|
+
*/
|
|
910
|
+
_cleanupTaskProgressHandler(taskId) {
|
|
911
|
+
const progressToken = this._taskProgressTokens.get(taskId);
|
|
912
|
+
if (progressToken !== undefined) {
|
|
913
|
+
this._progressHandlers.delete(progressToken);
|
|
914
|
+
this._taskProgressTokens.delete(taskId);
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Enqueues a task-related message for side-channel delivery via tasks/result.
|
|
919
|
+
* @param taskId The task ID to associate the message with
|
|
920
|
+
* @param message The message to enqueue
|
|
921
|
+
* @param sessionId Optional session ID for binding the operation to a specific session
|
|
922
|
+
* @throws Error if taskStore is not configured or if enqueue fails (e.g., queue overflow)
|
|
923
|
+
*
|
|
924
|
+
* Note: If enqueue fails, it's the TaskMessageQueue implementation's responsibility to handle
|
|
925
|
+
* the error appropriately (e.g., by failing the task, logging, etc.). The Protocol layer
|
|
926
|
+
* simply propagates the error.
|
|
927
|
+
*/
|
|
928
|
+
async _enqueueTaskMessage(taskId, message, sessionId) {
|
|
929
|
+
// Task message queues are only used when taskStore is configured
|
|
930
|
+
if (!this._taskStore || !this._taskMessageQueue) {
|
|
931
|
+
throw new Error('Cannot enqueue task message: taskStore and taskMessageQueue are not configured');
|
|
932
|
+
}
|
|
933
|
+
const maxQueueSize = this._options?.maxTaskQueueSize;
|
|
934
|
+
await this._taskMessageQueue.enqueue(taskId, message, sessionId, maxQueueSize);
|
|
935
|
+
}
|
|
936
|
+
/**
|
|
937
|
+
* Clears the message queue for a task and rejects any pending request resolvers.
|
|
938
|
+
* @param taskId The task ID whose queue should be cleared
|
|
939
|
+
* @param sessionId Optional session ID for binding the operation to a specific session
|
|
940
|
+
*/
|
|
941
|
+
async _clearTaskQueue(taskId, sessionId) {
|
|
942
|
+
if (this._taskMessageQueue) {
|
|
943
|
+
// Reject any pending request resolvers
|
|
944
|
+
const messages = await this._taskMessageQueue.dequeueAll(taskId, sessionId);
|
|
945
|
+
for (const message of messages) {
|
|
946
|
+
if (message.type === 'request' && isJSONRPCRequest(message.message)) {
|
|
947
|
+
// Extract request ID from the message
|
|
948
|
+
const requestId = message.message.id;
|
|
949
|
+
const resolver = this._requestResolvers.get(requestId);
|
|
950
|
+
if (resolver) {
|
|
951
|
+
resolver(new McpError(ErrorCode.InternalError, 'Task cancelled or completed'));
|
|
952
|
+
this._requestResolvers.delete(requestId);
|
|
953
|
+
}
|
|
954
|
+
else {
|
|
955
|
+
// Log error when resolver is missing during cleanup for better observability
|
|
956
|
+
this._onerror(new Error(`Resolver missing for request ${requestId} during task ${taskId} cleanup`));
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
/**
|
|
963
|
+
* Waits for a task update (new messages or status change) with abort signal support.
|
|
964
|
+
* Uses polling to check for updates at the task's configured poll interval.
|
|
965
|
+
* @param taskId The task ID to wait for
|
|
966
|
+
* @param signal Abort signal to cancel the wait
|
|
967
|
+
* @returns Promise that resolves when an update occurs or rejects if aborted
|
|
968
|
+
*/
|
|
969
|
+
async _waitForTaskUpdate(taskId, signal) {
|
|
970
|
+
// Get the task's poll interval, falling back to default
|
|
971
|
+
let interval = this._options?.defaultTaskPollInterval ?? 1000;
|
|
972
|
+
try {
|
|
973
|
+
const task = await this._taskStore?.getTask(taskId);
|
|
974
|
+
if (task?.pollInterval) {
|
|
975
|
+
interval = task.pollInterval;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
catch {
|
|
979
|
+
// Use default interval if task lookup fails
|
|
980
|
+
}
|
|
981
|
+
return new Promise((resolve, reject) => {
|
|
982
|
+
if (signal.aborted) {
|
|
983
|
+
reject(new McpError(ErrorCode.InvalidRequest, 'Request cancelled'));
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
// Wait for the poll interval, then resolve so caller can check for updates
|
|
987
|
+
const timeoutId = setTimeout(resolve, interval);
|
|
988
|
+
// Clean up timeout and reject if aborted
|
|
989
|
+
signal.addEventListener('abort', () => {
|
|
990
|
+
clearTimeout(timeoutId);
|
|
991
|
+
reject(new McpError(ErrorCode.InvalidRequest, 'Request cancelled'));
|
|
992
|
+
}, { once: true });
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
requestTaskStore(request, sessionId) {
|
|
996
|
+
const taskStore = this._taskStore;
|
|
997
|
+
if (!taskStore) {
|
|
998
|
+
throw new Error('No task store configured');
|
|
999
|
+
}
|
|
1000
|
+
return {
|
|
1001
|
+
createTask: async (taskParams) => {
|
|
1002
|
+
if (!request) {
|
|
1003
|
+
throw new Error('No request provided');
|
|
1004
|
+
}
|
|
1005
|
+
return await taskStore.createTask(taskParams, request.id, {
|
|
1006
|
+
method: request.method,
|
|
1007
|
+
params: request.params
|
|
1008
|
+
}, sessionId);
|
|
1009
|
+
},
|
|
1010
|
+
getTask: async (taskId) => {
|
|
1011
|
+
const task = await taskStore.getTask(taskId, sessionId);
|
|
1012
|
+
if (!task) {
|
|
1013
|
+
throw new McpError(ErrorCode.InvalidParams, 'Failed to retrieve task: Task not found');
|
|
1014
|
+
}
|
|
1015
|
+
return task;
|
|
1016
|
+
},
|
|
1017
|
+
storeTaskResult: async (taskId, status, result) => {
|
|
1018
|
+
await taskStore.storeTaskResult(taskId, status, result, sessionId);
|
|
1019
|
+
// Get updated task state and send notification
|
|
1020
|
+
const task = await taskStore.getTask(taskId, sessionId);
|
|
1021
|
+
if (task) {
|
|
1022
|
+
const notification = TaskStatusNotificationSchema.parse({
|
|
1023
|
+
method: 'notifications/tasks/status',
|
|
1024
|
+
params: task
|
|
1025
|
+
});
|
|
1026
|
+
await this.notification(notification);
|
|
1027
|
+
if (isTerminal(task.status)) {
|
|
1028
|
+
this._cleanupTaskProgressHandler(taskId);
|
|
1029
|
+
// Don't clear queue here - it will be cleared after delivery via tasks/result
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
1033
|
+
getTaskResult: taskId => {
|
|
1034
|
+
return taskStore.getTaskResult(taskId, sessionId);
|
|
1035
|
+
},
|
|
1036
|
+
updateTaskStatus: async (taskId, status, statusMessage) => {
|
|
1037
|
+
// Check if task exists
|
|
1038
|
+
const task = await taskStore.getTask(taskId, sessionId);
|
|
1039
|
+
if (!task) {
|
|
1040
|
+
throw new McpError(ErrorCode.InvalidParams, `Task "${taskId}" not found - it may have been cleaned up`);
|
|
1041
|
+
}
|
|
1042
|
+
// Don't allow transitions from terminal states
|
|
1043
|
+
if (isTerminal(task.status)) {
|
|
1044
|
+
throw new McpError(ErrorCode.InvalidParams, `Cannot update task "${taskId}" from terminal status "${task.status}" to "${status}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);
|
|
1045
|
+
}
|
|
1046
|
+
await taskStore.updateTaskStatus(taskId, status, statusMessage, sessionId);
|
|
1047
|
+
// Get updated task state and send notification
|
|
1048
|
+
const updatedTask = await taskStore.getTask(taskId, sessionId);
|
|
1049
|
+
if (updatedTask) {
|
|
1050
|
+
const notification = TaskStatusNotificationSchema.parse({
|
|
1051
|
+
method: 'notifications/tasks/status',
|
|
1052
|
+
params: updatedTask
|
|
1053
|
+
});
|
|
1054
|
+
await this.notification(notification);
|
|
1055
|
+
if (isTerminal(updatedTask.status)) {
|
|
1056
|
+
this._cleanupTaskProgressHandler(taskId);
|
|
1057
|
+
// Don't clear queue here - it will be cleared after delivery via tasks/result
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
},
|
|
1061
|
+
listTasks: cursor => {
|
|
1062
|
+
return taskStore.listTasks(cursor, sessionId);
|
|
1063
|
+
}
|
|
1064
|
+
};
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
function isPlainObject(value) {
|
|
1068
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
404
1069
|
}
|
|
405
1070
|
function mergeCapabilities(base, additional) {
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
1071
|
+
const result = { ...base };
|
|
1072
|
+
for (const key in additional) {
|
|
1073
|
+
const k = key;
|
|
1074
|
+
const addValue = additional[k];
|
|
1075
|
+
if (addValue === undefined)
|
|
1076
|
+
continue;
|
|
1077
|
+
const baseValue = result[k];
|
|
1078
|
+
if (isPlainObject(baseValue) && isPlainObject(addValue)) {
|
|
1079
|
+
result[k] = { ...baseValue, ...addValue };
|
|
409
1080
|
}
|
|
410
1081
|
else {
|
|
411
|
-
|
|
1082
|
+
result[k] = addValue;
|
|
412
1083
|
}
|
|
413
|
-
|
|
414
|
-
|
|
1084
|
+
}
|
|
1085
|
+
return result;
|
|
415
1086
|
}
|
|
416
1087
|
|
|
417
1088
|
export { DEFAULT_REQUEST_TIMEOUT_MSEC, Protocol, mergeCapabilities };
|