@psnext/slingcli 2.5.20260724-1 → 2.5.20260727-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/bin/sling.js +1 -1
  2. package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +66 -28
  3. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +133 -15
  4. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js +7 -2
  5. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js +28 -14
  6. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.browser.js +1 -0
  7. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.js +3 -0
  8. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.js +8 -0
  9. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js +1 -1
  10. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +3 -3
  11. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.browser.js +9 -0
  12. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js +5 -1
  13. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js +1 -0
  14. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js +12 -6
  15. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js +2 -1
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js +1 -1
  17. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +10 -1
  18. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +10 -0
  19. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/detectBufferParsing.js +18 -0
  20. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/BufferJsonShapeDeserializer.js +13 -15
  21. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/ByteJsonShapeSerializer.js +27 -17
  22. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js +22 -3
  23. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/needsReviver.js +41 -0
  24. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +33 -13
  25. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/writeKey.js +3 -0
  26. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js +4 -0
  27. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +2 -1
  28. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.browser.d.ts +6 -0
  29. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.d.ts +7 -0
  30. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.d.ts +13 -0
  31. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts +1 -1
  32. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +22 -6
  33. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.browser.d.ts +11 -0
  34. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts +7 -1
  35. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +4 -0
  36. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +22 -6
  37. package/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts +2 -1
  38. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/detectBufferParsing.d.ts +1 -0
  39. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/ByteJsonShapeSerializer.d.ts +0 -2
  40. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/needsReviver.d.ts +11 -0
  41. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts +7 -2
  42. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/writeKey.d.ts +4 -0
  43. package/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts +7 -4
  44. package/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts +21 -61
  45. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts +27 -13
  46. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts +16 -4
  47. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts +14 -5
  48. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts +5 -16
  49. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +11 -4
  50. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.browser.d.ts +47 -107
  51. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +39 -112
  52. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.native.d.ts +48 -107
  53. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/longPollMiddleware.d.ts +14 -13
  54. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-host-header/hostHeaderMiddleware.d.ts +35 -25
  55. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-logger/loggerMiddleware.d.ts +4 -14
  56. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/configuration.d.ts +6 -2
  57. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.browser.d.ts +5 -2
  58. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/getRecursionDetectionPlugin.d.ts +5 -2
  59. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.browser.d.ts +6 -2
  60. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.d.ts +10 -2
  61. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-recursion-detection/recursionDetectionMiddleware.native.d.ts +6 -2
  62. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-user-agent/check-features.d.ts +20 -16
  63. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-user-agent/configurations.d.ts +44 -21
  64. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-user-agent/constants.d.ts +7 -7
  65. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-user-agent/encode-features.d.ts +5 -2
  66. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/middleware-user-agent/user-agent-middleware.d.ts +18 -18
  67. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/region-config-resolver/awsRegionConfig.d.ts +11 -8
  68. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/region-config-resolver/extensions.d.ts +16 -14
  69. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/region-config-resolver/stsRegionDefaultResolver.browser.d.ts +4 -1
  70. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/region-config-resolver/stsRegionDefaultResolver.d.ts +14 -7
  71. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/region-config-resolver/stsRegionDefaultResolver.native.d.ts +4 -1
  72. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +7 -6
  73. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts +12 -6
  74. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts +7 -6
  75. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/aws.d.ts +2 -2
  76. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/isVirtualHostableS3Bucket.d.ts +5 -4
  77. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/parseArn.d.ts +7 -2
  78. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/partition.d.ts +38 -28
  79. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/aws/partitions.d.ts +638 -647
  80. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/lib/isIpAddress.d.ts +1 -1
  81. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/resolveDefaultAwsRegionalEndpointsConfig.d.ts +56 -29
  82. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/resolveEndpoint.d.ts +1 -1
  83. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/EndpointError.d.ts +1 -1
  84. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/EndpointRuleObject.d.ts +1 -6
  85. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/ErrorRuleObject.d.ts +1 -1
  86. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/RuleSetObject.d.ts +1 -1
  87. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/TreeRuleObject.d.ts +1 -1
  88. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-endpoints/types/shared.d.ts +1 -12
  89. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/configurations.d.ts +7 -4
  90. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/createUserAgentStringParsingProvider.d.ts +14 -7
  91. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.browser.d.ts +2 -7
  92. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.d.ts +27 -18
  93. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-browser/defaultUserAgent.native.d.ts +18 -13
  94. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-node/crt-availability.d.ts +8 -3
  95. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-node/defaultUserAgent.d.ts +28 -17
  96. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-node/getRuntimeUserAgentPair.d.ts +6 -2
  97. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-node/is-crt-available.d.ts +5 -2
  98. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/util-user-agent-node/nodeAppIdConfigOptions.d.ts +13 -4
  99. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts +10 -9
  100. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts +44 -37
  101. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts +5 -2
  102. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.browser.d.ts +6 -0
  103. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/clock-skew-defaults.d.ts +7 -0
  104. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/clock-skew-node-config.d.ts +13 -0
  105. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts +7 -23
  106. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts +38 -13
  107. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts +133 -56
  108. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.browser.d.ts +11 -0
  109. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts +9 -24
  110. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts +8 -1
  111. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts +6 -1
  112. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts +8 -1
  113. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts +8 -1
  114. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts +26 -4
  115. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts +4 -3
  116. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts +9 -1
  117. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts +8 -5
  118. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts +74 -40
  119. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts +24 -9
  120. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts +25 -36
  121. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts +18 -3
  122. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts +2 -5
  123. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts +22 -27
  124. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts +22 -21
  125. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts +22 -21
  126. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts +29 -49
  127. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts +36 -49
  128. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts +19 -13
  129. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts +13 -13
  130. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +28 -18
  131. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts +7 -1
  132. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/detectBufferParsing.d.ts +1 -0
  133. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/BufferJsonShapeDeserializer.d.ts +29 -14
  134. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/ByteJsonShapeSerializer.d.ts +57 -30
  135. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts +21 -7
  136. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts +15 -7
  137. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/needsReviver.d.ts +11 -0
  138. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts +22 -9
  139. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts +27 -18
  140. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts +49 -57
  141. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts +13 -7
  142. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts +16 -21
  143. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/writeKey.d.ts +4 -0
  144. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts +31 -47
  145. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts +14 -17
  146. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts +20 -15
  147. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts +21 -21
  148. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts +13 -4
  149. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts +6 -1
  150. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/index.d.ts +3 -3
  151. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/util-arn-parser/arn.d.ts +32 -14
  152. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/util-format-url/format-url.d.ts +2 -4
  153. package/node_modules/@aws-sdk/core/package.json +10 -6
  154. package/node_modules/@aws-sdk/credential-provider-env/package.json +3 -3
  155. package/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler/package.json +2 -2
  156. package/node_modules/@aws-sdk/credential-provider-http/package.json +5 -5
  157. package/node_modules/@aws-sdk/credential-provider-ini/package.json +11 -11
  158. package/node_modules/@aws-sdk/credential-provider-login/package.json +4 -4
  159. package/node_modules/@aws-sdk/credential-provider-node/package.json +9 -9
  160. package/node_modules/@aws-sdk/credential-provider-process/package.json +3 -3
  161. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +4 -4
  162. package/node_modules/@aws-sdk/credential-provider-sso/package.json +5 -5
  163. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +4 -4
  164. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +2 -2
  165. package/node_modules/@aws-sdk/middleware-eventstream/package.json +2 -2
  166. package/node_modules/@aws-sdk/middleware-websocket/package.json +5 -5
  167. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  168. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  169. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  170. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  171. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  172. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts +2 -0
  173. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts +2 -0
  174. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts +2 -0
  175. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts +2 -0
  176. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts +2 -0
  177. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts +2 -0
  178. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts +2 -0
  179. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts +2 -0
  180. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts +2 -0
  181. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts +2 -0
  182. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts +2 -0
  183. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts +2 -0
  184. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +2 -0
  185. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +2 -0
  186. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +2 -0
  187. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts +2 -0
  188. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts +2 -0
  189. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts +2 -0
  190. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts +2 -0
  191. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts +2 -0
  192. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts +2 -0
  193. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts +2 -0
  194. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts +2 -0
  195. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts +2 -0
  196. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts +2 -0
  197. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts +2 -0
  198. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts +2 -0
  199. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +2 -0
  200. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +2 -0
  201. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +2 -0
  202. package/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler/package.json +2 -2
  203. package/node_modules/@aws-sdk/nested-clients/package.json +6 -6
  204. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +2 -2
  205. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +14 -4
  206. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +14 -4
  207. package/node_modules/@aws-sdk/xml-builder/package.json +1 -1
  208. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +17 -4
  209. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +8 -2
  210. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +118 -11
  211. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js +132 -0
  212. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit-diff.js +386 -0
  213. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js +95 -0
  214. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js +46 -0
  215. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/image.js +106 -0
  216. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/index.js +5 -0
  217. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js +26 -0
  218. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js +110 -0
  219. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/tool-context.js +2 -0
  220. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +31 -0
  221. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +90 -35
  222. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js +10 -4
  223. package/node_modules/@earendil-works/pi-agent-core/dist/index.js +1 -0
  224. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -2
  225. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +26 -10
  226. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +21 -8
  227. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +25 -13
  228. package/node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.js +100 -0
  229. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +7 -11
  230. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js +17 -3
  231. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +7 -11
  232. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +13 -9
  233. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +68 -27
  234. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +131 -34
  235. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +173 -66
  236. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +29 -7
  237. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +8 -3
  238. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js +5 -0
  239. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.js +222 -0
  240. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js +37 -35
  241. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +11 -1
  242. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js +2 -0
  243. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +9 -3
  244. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +15 -0
  245. package/node_modules/@earendil-works/pi-ai/dist/model-catalog.js +4 -0
  246. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +5 -3
  247. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +2 -1
  248. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.js +2 -1
  249. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +30 -3
  250. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +2 -1
  251. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.js +2 -1
  252. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js +2 -1
  253. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +2 -1
  254. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.js +2 -1
  255. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  256. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  257. package/node_modules/@earendil-works/pi-ai/dist/providers/data/ant-ling.json +1 -1
  258. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  259. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  260. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cerebras.json +1 -1
  261. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  262. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
  263. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  264. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  265. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  266. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google-vertex.json +1 -1
  267. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
  268. package/node_modules/@earendil-works/pi-ai/dist/providers/data/groq.json +1 -1
  269. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  270. package/node_modules/@earendil-works/pi-ai/dist/providers/data/kimi-coding.json +1 -1
  271. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax-cn.json +1 -1
  272. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax.json +1 -1
  273. package/node_modules/@earendil-works/pi-ai/dist/providers/data/mistral.json +1 -1
  274. package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai-cn.json +1 -1
  275. package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai.json +1 -1
  276. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  277. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  278. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  279. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  280. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  281. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  282. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  283. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  284. package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
  285. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  286. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xai.json +1 -1
  287. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  288. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  289. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  290. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi.json +1 -1
  291. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  292. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  293. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js +2 -1
  294. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +2 -1
  295. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +2 -1
  296. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.models.js +2 -1
  297. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.js +2 -1
  298. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +2 -1
  299. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.js +2 -1
  300. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js +2 -1
  301. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.js +2 -1
  302. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.js +2 -1
  303. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js +2 -1
  304. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai-cn.models.js +2 -1
  305. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai.models.js +2 -1
  306. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js +2 -1
  307. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js +2 -1
  308. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.js +2 -1
  309. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +2 -1
  310. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +2 -1
  311. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter-images.js +10 -2
  312. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js +10 -2
  313. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +2 -1
  314. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.models.js +2 -1
  315. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.models.js +2 -1
  316. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js +2 -1
  317. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +2 -1
  318. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.js +2 -1
  319. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +2 -1
  320. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +2 -1
  321. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +2 -1
  322. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +2 -1
  323. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js +2 -1
  324. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js +2 -1
  325. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +8 -3
  326. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js +94 -0
  327. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +3 -0
  328. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  329. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +1 -0
  330. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js +1 -1
  331. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/startup-ui.js +1 -1
  332. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +7 -8
  333. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +11 -3
  334. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +4 -0
  335. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-config.js +6 -0
  336. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +2 -2
  337. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +20 -3
  338. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-runtime.js +3 -5
  339. package/node_modules/@earendil-works/pi-coding-agent/dist/core/remote-catalog-provider.js +24 -11
  340. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +3 -0
  341. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +1 -1
  342. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +34 -5
  343. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.js +3 -1
  344. package/node_modules/@earendil-works/pi-coding-agent/dist/extensions/llama/provider.js +7 -2
  345. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.js +10 -2
  346. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.js +16 -46
  347. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js +22 -13
  348. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/external-editor.js +37 -0
  349. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +67 -74
  350. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +1 -0
  351. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js +19 -8
  352. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js +3 -1
  353. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +16 -15
  354. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -4
  355. package/node_modules/@earendil-works/pi-server/package.json +2 -2
  356. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +15 -12
  357. package/node_modules/@earendil-works/pi-tui/dist/tui.js +6 -3
  358. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  359. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.browser.js +1 -0
  360. package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js +1 -0
  361. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +2 -2
  362. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +2 -2
  363. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -2
  364. package/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/constants.js +1 -0
  365. package/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js +2 -2
  366. package/node_modules/@smithy/core/dist-types/submodules/retry/service-error-classification/constants.d.ts +1 -0
  367. package/node_modules/@smithy/core/dist-types/ts3.4/submodules/retry/service-error-classification/constants.d.ts +1 -0
  368. package/node_modules/@smithy/core/package.json +1 -1
  369. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  370. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  371. package/node_modules/@smithy/signature-v4/package.json +2 -2
  372. package/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  373. package/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  374. package/node_modules/gaxios/package.json +1 -1
  375. package/node_modules/google-auth-library/build/src/auth/googleauth.js +24 -19
  376. package/node_modules/google-auth-library/package.json +1 -1
  377. package/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  378. package/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  379. package/node_modules/undici/lib/core/request.js +12 -1
  380. package/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  381. package/node_modules/undici/lib/handler/cache-handler.js +246 -64
  382. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  383. package/node_modules/undici/lib/handler/retry-handler.js +24 -0
  384. package/node_modules/undici/lib/interceptor/cache.js +159 -52
  385. package/node_modules/undici/lib/util/cache.js +324 -62
  386. package/node_modules/undici/lib/util/date.js +23 -6
  387. package/node_modules/undici/lib/web/cookies/util.js +79 -9
  388. package/node_modules/undici/package.json +1 -1
  389. package/package.json +7 -7
  390. package/sling-default-packages.json +2 -1
  391. package/slingshot/index.js +337 -339
@@ -0,0 +1,222 @@
1
+ /**
2
+ * OpenRouter OAuth PKCE flow.
3
+ *
4
+ * OpenRouter exchanges an authorization code for a permanent, user-controlled
5
+ * API key rather than an expiring access/refresh token pair. The callback is
6
+ * handled by a one-shot loopback server on an ephemeral port.
7
+ *
8
+ * NOTE: This module uses Node.js http.createServer for the OAuth callback server.
9
+ * It is only intended for CLI use, not browser environments.
10
+ */
11
+ import { createServer } from "node:http";
12
+ import { getProviderEnvValue } from "../../utils/provider-env.js";
13
+ import { oauthErrorHtml, oauthSuccessHtml } from "./oauth-page.js";
14
+ import { generatePKCE } from "./pkce.js";
15
+ const AUTHORIZE_URL = "https://openrouter.ai/auth";
16
+ const TOKEN_URL = "https://openrouter.ai/api/v1/auth/keys";
17
+ const LOGIN_TIMEOUT_MS = 5 * 60 * 1000;
18
+ const TOKEN_EXCHANGE_TIMEOUT_MS = 30_000;
19
+ function getCallbackHost() {
20
+ return getProviderEnvValue("PI_OAUTH_CALLBACK_HOST") || "127.0.0.1";
21
+ }
22
+ function sendHtml(response, status, html) {
23
+ response.statusCode = status;
24
+ response.setHeader("content-type", "text/html; charset=utf-8");
25
+ response.setHeader("cache-control", "no-store");
26
+ response.end(html);
27
+ }
28
+ function errorDetail(body) {
29
+ if (typeof body.error_description === "string")
30
+ return body.error_description;
31
+ if (typeof body.message === "string")
32
+ return body.message;
33
+ if (typeof body.error === "string")
34
+ return body.error;
35
+ if (body.error && typeof body.error === "object" && !Array.isArray(body.error)) {
36
+ const message = body.error.message;
37
+ if (typeof message === "string")
38
+ return message;
39
+ }
40
+ return undefined;
41
+ }
42
+ async function exchangeAuthorizationCode(code, verifier, signal) {
43
+ if (signal?.aborted)
44
+ throw new Error("Login cancelled");
45
+ const controller = new AbortController();
46
+ const onAbort = () => controller.abort(signal?.reason);
47
+ signal?.addEventListener("abort", onAbort, { once: true });
48
+ const timeout = setTimeout(() => controller.abort(new Error("OpenRouter OAuth token exchange timed out")), TOKEN_EXCHANGE_TIMEOUT_MS);
49
+ let response;
50
+ let body = {};
51
+ try {
52
+ response = await fetch(TOKEN_URL, {
53
+ method: "POST",
54
+ headers: { accept: "application/json", "content-type": "application/json" },
55
+ body: JSON.stringify({ code, code_verifier: verifier, code_challenge_method: "S256" }),
56
+ signal: controller.signal,
57
+ });
58
+ try {
59
+ const parsed = (await response.json());
60
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed))
61
+ body = parsed;
62
+ }
63
+ catch {
64
+ if (response.ok)
65
+ throw new Error("OpenRouter OAuth returned invalid JSON");
66
+ }
67
+ }
68
+ catch (error) {
69
+ if (signal?.aborted)
70
+ throw new Error("Login cancelled");
71
+ if (controller.signal.aborted)
72
+ throw new Error("OpenRouter OAuth token exchange timed out");
73
+ throw error;
74
+ }
75
+ finally {
76
+ clearTimeout(timeout);
77
+ signal?.removeEventListener("abort", onAbort);
78
+ }
79
+ if (!response.ok) {
80
+ const detail = errorDetail(body);
81
+ throw new Error(`OpenRouter OAuth key exchange failed (HTTP ${response.status})${detail ? `: ${detail}` : ""}`);
82
+ }
83
+ if (typeof body.key !== "string" || body.key.length === 0) {
84
+ throw new Error('OpenRouter OAuth response carries no "key"');
85
+ }
86
+ return {
87
+ type: "oauth",
88
+ access: body.key,
89
+ refresh: "",
90
+ expires: Number.MAX_SAFE_INTEGER,
91
+ };
92
+ }
93
+ async function startCallbackServer(callbackPath, verifier, signal) {
94
+ if (signal?.aborted)
95
+ throw new Error("Login cancelled");
96
+ const callbackHost = getCallbackHost();
97
+ let resolveCredential = () => { };
98
+ let rejectCredential = () => { };
99
+ const credential = new Promise((resolve, reject) => {
100
+ resolveCredential = resolve;
101
+ rejectCredential = reject;
102
+ });
103
+ let server;
104
+ let claimed = false;
105
+ let settled = false;
106
+ let timeout;
107
+ let onAbort;
108
+ const finish = (result) => {
109
+ if (settled)
110
+ return;
111
+ settled = true;
112
+ if (timeout)
113
+ clearTimeout(timeout);
114
+ if (onAbort)
115
+ signal?.removeEventListener("abort", onAbort);
116
+ server.close();
117
+ if ("credential" in result)
118
+ resolveCredential(result.credential);
119
+ else
120
+ rejectCredential(result.error);
121
+ };
122
+ server = createServer((request, response) => {
123
+ void (async () => {
124
+ const requestUrl = new URL(request.url ?? "/", `http://${callbackHost}`);
125
+ if (request.method !== "GET" || requestUrl.pathname !== callbackPath) {
126
+ sendHtml(response, 404, oauthErrorHtml("OAuth callback route not found."));
127
+ return;
128
+ }
129
+ if (claimed || settled) {
130
+ sendHtml(response, 409, oauthErrorHtml("This OAuth callback has already been used."));
131
+ return;
132
+ }
133
+ const oauthError = requestUrl.searchParams.get("error");
134
+ if (oauthError) {
135
+ const description = requestUrl.searchParams.get("error_description") ?? oauthError;
136
+ sendHtml(response, 400, oauthErrorHtml("OpenRouter authorization was denied.", description));
137
+ finish({ error: new Error(`OpenRouter authorization failed: ${description}`) });
138
+ return;
139
+ }
140
+ const code = requestUrl.searchParams.get("code");
141
+ if (!code) {
142
+ sendHtml(response, 400, oauthErrorHtml("OpenRouter returned no authorization code."));
143
+ return;
144
+ }
145
+ claimed = true;
146
+ try {
147
+ const result = await exchangeAuthorizationCode(code, verifier, signal);
148
+ sendHtml(response, 200, oauthSuccessHtml("Signed in to OpenRouter. You may now close this page."));
149
+ finish({ credential: result });
150
+ }
151
+ catch (error) {
152
+ const message = error instanceof Error ? error.message : "Unknown token exchange error";
153
+ sendHtml(response, 502, oauthErrorHtml("OpenRouter key exchange failed.", message));
154
+ finish({ error: error instanceof Error ? error : new Error(message) });
155
+ }
156
+ })();
157
+ });
158
+ await new Promise((resolve, reject) => {
159
+ server.once("error", reject);
160
+ server.listen(0, callbackHost, () => {
161
+ server.removeListener("error", reject);
162
+ resolve();
163
+ });
164
+ });
165
+ server.on("error", (error) => finish({ error }));
166
+ onAbort = () => finish({ error: new Error("Login cancelled") });
167
+ signal?.addEventListener("abort", onAbort, { once: true });
168
+ if (signal?.aborted) {
169
+ signal.removeEventListener("abort", onAbort);
170
+ server.close();
171
+ throw new Error("Login cancelled");
172
+ }
173
+ timeout = setTimeout(() => finish({ error: new Error("OpenRouter OAuth login timed out") }), LOGIN_TIMEOUT_MS);
174
+ const address = server.address();
175
+ if (!address || typeof address === "string") {
176
+ finish({ error: new Error("Could not determine the OpenRouter OAuth callback port") });
177
+ throw new Error("Could not determine the OpenRouter OAuth callback port");
178
+ }
179
+ return {
180
+ callbackUrl: `http://${callbackHost}:${address.port}${callbackPath}`,
181
+ credential,
182
+ close: () => finish({ error: new Error("Login cancelled") }),
183
+ };
184
+ }
185
+ async function loginOpenRouter(interaction) {
186
+ const { verifier, challenge } = await generatePKCE();
187
+ const callbackPath = `/oauth/callback/${crypto.randomUUID()}`;
188
+ const callback = await startCallbackServer(callbackPath, verifier, interaction.signal);
189
+ const authorizeUrl = new URL(AUTHORIZE_URL);
190
+ authorizeUrl.search = new URLSearchParams({
191
+ callback_url: callback.callbackUrl,
192
+ code_challenge: challenge,
193
+ code_challenge_method: "S256",
194
+ }).toString();
195
+ interaction.notify({
196
+ type: "progress",
197
+ message: `Listening for OpenRouter OAuth callback on ${callback.callbackUrl}`,
198
+ });
199
+ interaction.notify({
200
+ type: "auth_url",
201
+ url: authorizeUrl.toString(),
202
+ instructions: "Complete sign-in in your browser.",
203
+ });
204
+ try {
205
+ return await callback.credential;
206
+ }
207
+ finally {
208
+ callback.close();
209
+ }
210
+ }
211
+ export const openRouterOAuth = {
212
+ name: "OpenRouter OAuth",
213
+ loginLabel: "Sign in with OpenRouter",
214
+ login: loginOpenRouter,
215
+ async refresh(credential) {
216
+ return credential;
217
+ },
218
+ async toAuth(credential) {
219
+ return { apiKey: credential.access };
220
+ },
221
+ };
222
+ //# sourceMappingURL=openrouter.js.map
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Radius gateway OAuth flow.
3
3
  *
4
- * Radius is a pi-messages gateway. OAuth endpoints are discovered from the
5
- * gateway (`/v1/oauth`); model catalog loading is owned by the Radius provider.
4
+ * Radius is a pi-messages gateway. OAuth client APIs live on the configured
5
+ * gateway; only the interactive browser authorization endpoint is discovered.
6
+ * Model catalog loading is owned by the Radius provider.
6
7
  *
7
8
  * NOTE: This module uses node:http for the OAuth callback server.
8
9
  * It is only intended for CLI use, not browser environments.
@@ -25,14 +26,21 @@ const REDIRECT_URI = `http://${CALLBACK_HOST}:${CALLBACK_PORT}${CALLBACK_PATH}`;
25
26
  const TOKEN_EXPIRY_SKEW_MS = 60_000;
26
27
  const LOGIN_METHOD_BROWSER = "browser";
27
28
  const LOGIN_METHOD_DEVICE_CODE = "device-code";
28
- async function loadRadiusOAuthConfig(gateway) {
29
+ const OAUTH_CLIENT_ID = "pi-gateway";
30
+ const OAUTH_SCOPE = "gateway offline_access";
31
+ const OAUTH_DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
32
+ async function loadRadiusOAuthDiscovery(gateway) {
29
33
  const response = await fetch(new URL("/v1/oauth", gateway), {
30
34
  headers: { accept: "application/json" },
31
35
  });
32
36
  if (!response.ok) {
33
37
  throw new Error(`Could not load Radius OAuth config from ${gateway}: ${response.status} ${await response.text()}`);
34
38
  }
35
- return (await response.json());
39
+ const discovery = (await response.json());
40
+ if (typeof discovery.authorizationEndpoint !== "string") {
41
+ throw new Error(`Invalid Radius OAuth config from ${gateway}`);
42
+ }
43
+ return { authorizationEndpoint: discovery.authorizationEndpoint };
36
44
  }
37
45
  class OAuthResponseError extends Error {
38
46
  status;
@@ -64,10 +72,10 @@ async function readOAuthResponseError(response, message) {
64
72
  }
65
73
  return new OAuthResponseError(response.status, oauthError, description, message);
66
74
  }
67
- async function requestOAuthToken(oauth, body, signal) {
75
+ async function requestOAuthToken(gateway, body, signal) {
68
76
  let response;
69
77
  try {
70
- response = await fetch(oauth.tokenEndpoint, {
78
+ response = await fetch(new URL("/v1/oauth/token", gateway), {
71
79
  method: "POST",
72
80
  headers: { accept: "application/json", "content-type": "application/x-www-form-urlencoded" },
73
81
  body,
@@ -157,15 +165,15 @@ function startOAuthCallbackServer(expectedState, signal) {
157
165
  });
158
166
  });
159
167
  }
160
- async function loginWithBrowser(oauth, interaction) {
168
+ async function loginWithBrowser(gateway, authorizationEndpoint, interaction) {
161
169
  const { verifier, challenge } = await generatePKCE();
162
170
  const state = crypto.randomUUID();
163
- const authorizeUrl = new URL(oauth.authorizationEndpoint);
171
+ const authorizeUrl = new URL(authorizationEndpoint);
164
172
  authorizeUrl.search = new URLSearchParams({
165
173
  response_type: "code",
166
- client_id: oauth.clientId,
174
+ client_id: OAUTH_CLIENT_ID,
167
175
  redirect_uri: REDIRECT_URI,
168
- scope: oauth.scope,
176
+ scope: OAUTH_SCOPE,
169
177
  code_challenge: challenge,
170
178
  code_challenge_method: "S256",
171
179
  handoff: "url",
@@ -186,9 +194,9 @@ async function loginWithBrowser(oauth, interaction) {
186
194
  }
187
195
  throw new Error("OAuth callback did not complete.");
188
196
  }
189
- return await requestOAuthToken(oauth, new URLSearchParams({
197
+ return await requestOAuthToken(gateway, new URLSearchParams({
190
198
  grant_type: "authorization_code",
191
- client_id: oauth.clientId,
199
+ client_id: OAUTH_CLIENT_ID,
192
200
  redirect_uri: REDIRECT_URI,
193
201
  code,
194
202
  code_verifier: verifier,
@@ -198,13 +206,13 @@ async function loginWithBrowser(oauth, interaction) {
198
206
  callbackServer.close();
199
207
  }
200
208
  }
201
- async function requestDeviceAuthorization(oauth, signal) {
209
+ async function requestDeviceAuthorization(gateway, signal) {
202
210
  let response;
203
211
  try {
204
- response = await fetch(oauth.deviceAuthorizationEndpoint, {
212
+ response = await fetch(new URL("/v1/oauth/device", gateway), {
205
213
  method: "POST",
206
214
  headers: { accept: "application/json", "content-type": "application/x-www-form-urlencoded" },
207
- body: new URLSearchParams({ client_id: oauth.clientId, scope: oauth.scope }),
215
+ body: new URLSearchParams({ client_id: OAUTH_CLIENT_ID, scope: OAUTH_SCOPE }),
208
216
  signal,
209
217
  });
210
218
  }
@@ -218,24 +226,23 @@ async function requestDeviceAuthorization(oauth, signal) {
218
226
  throw await readOAuthResponseError(response, "Radius OAuth device authorization failed");
219
227
  }
220
228
  const data = (await response.json());
221
- if (!data.device_code || !data.user_code || !data.expires_in) {
229
+ if (!data.device_code || !data.user_code || !data.verification_uri || !data.expires_in) {
222
230
  throw new Error("Radius OAuth device authorization response is missing required fields");
223
231
  }
224
232
  return {
225
233
  device_code: data.device_code,
226
234
  user_code: data.user_code,
227
235
  verification_uri: data.verification_uri,
228
- verification_uri_complete: data.verification_uri_complete,
229
236
  expires_in: data.expires_in,
230
237
  interval: data.interval,
231
238
  };
232
239
  }
233
- async function loginWithDeviceCode(oauth, interaction) {
234
- const device = await requestDeviceAuthorization(oauth, interaction.signal);
240
+ async function loginWithDeviceCode(gateway, interaction) {
241
+ const device = await requestDeviceAuthorization(gateway, interaction.signal);
235
242
  interaction.notify({
236
243
  type: "device_code",
237
244
  userCode: device.user_code,
238
- verificationUri: device.verification_uri || oauth.verificationEndpoint,
245
+ verificationUri: device.verification_uri,
239
246
  intervalSeconds: device.interval,
240
247
  expiresInSeconds: device.expires_in,
241
248
  });
@@ -245,9 +252,9 @@ async function loginWithDeviceCode(oauth, interaction) {
245
252
  signal: interaction.signal,
246
253
  poll: async () => {
247
254
  try {
248
- const credentials = await requestOAuthToken(oauth, new URLSearchParams({
249
- grant_type: oauth.deviceCodeGrantType,
250
- client_id: oauth.clientId,
255
+ const credentials = await requestOAuthToken(gateway, new URLSearchParams({
256
+ grant_type: OAUTH_DEVICE_CODE_GRANT_TYPE,
257
+ client_id: OAUTH_CLIENT_ID,
251
258
  device_code: device.device_code,
252
259
  }), interaction.signal);
253
260
  return { status: "complete", value: credentials };
@@ -277,7 +284,6 @@ export function createRadiusOAuth(options) {
277
284
  return {
278
285
  name: options.name,
279
286
  async login(interaction) {
280
- const oauth = await loadRadiusOAuthConfig(gateway);
281
287
  const loginMethod = await interaction.prompt({
282
288
  type: "select",
283
289
  message: `Sign in to ${options.name}:`,
@@ -289,23 +295,19 @@ export function createRadiusOAuth(options) {
289
295
  },
290
296
  ],
291
297
  });
292
- let credential;
293
298
  if (loginMethod === LOGIN_METHOD_DEVICE_CODE) {
294
- credential = await loginWithDeviceCode(oauth, interaction);
295
- }
296
- else if (loginMethod === LOGIN_METHOD_BROWSER) {
297
- credential = await loginWithBrowser(oauth, interaction);
299
+ return loginWithDeviceCode(gateway, interaction);
298
300
  }
299
- else {
300
- throw new Error(`Unknown ${options.name} sign-in method: ${loginMethod}`);
301
+ if (loginMethod === LOGIN_METHOD_BROWSER) {
302
+ const discovery = await loadRadiusOAuthDiscovery(gateway);
303
+ return loginWithBrowser(gateway, discovery.authorizationEndpoint, interaction);
301
304
  }
302
- return credential;
305
+ throw new Error(`Unknown ${options.name} sign-in method: ${loginMethod}`);
303
306
  },
304
307
  async refresh(credential, signal) {
305
- const oauth = await loadRadiusOAuthConfig(gateway);
306
- const refreshed = await requestOAuthToken(oauth, new URLSearchParams({
308
+ const refreshed = await requestOAuthToken(gateway, new URLSearchParams({
307
309
  grant_type: "refresh_token",
308
- client_id: oauth.clientId,
310
+ client_id: OAUTH_CLIENT_ID,
309
311
  refresh_token: credential.refresh,
310
312
  }), signal);
311
313
  return refreshed;
@@ -1,11 +1,21 @@
1
+ import { formatThrownValue } from "../utils/diagnostics.js";
1
2
  export class ModelsError extends Error {
2
3
  code;
3
4
  constructor(code, message, options) {
4
- super(message, options);
5
+ super(withCauseDetail(message, options?.cause), options);
5
6
  this.name = "ModelsError";
6
7
  this.code = code;
7
8
  }
8
9
  }
10
+ /** Callers surface `error.message` only, so keep the underlying reason in it. */
11
+ function withCauseDetail(message, cause) {
12
+ if (cause === undefined || cause === null)
13
+ return message;
14
+ const detail = formatThrownValue(cause).trim();
15
+ if (!detail || message.includes(detail))
16
+ return message;
17
+ return `${message}: ${detail}`;
18
+ }
9
19
  /**
10
20
  * Auth resolution shared by the `Models` and `ImagesModels` collections.
11
21
  * A stored credential owns the provider: ambient/env is consulted only when
@@ -3,6 +3,7 @@ import { githubCopilotOAuth } from "./auth/oauth/github-copilot.js";
3
3
  import { kimiCodingOAuth } from "./auth/oauth/kimi-coding.js";
4
4
  import { registerBundledOAuthFlowLoaders } from "./auth/oauth/load.js";
5
5
  import { openaiCodexOAuth } from "./auth/oauth/openai-codex.js";
6
+ import { openRouterOAuth } from "./auth/oauth/openrouter.js";
6
7
  import { createRadiusOAuth } from "./auth/oauth/radius.js";
7
8
  import { xaiOAuth } from "./auth/oauth/xai.js";
8
9
  /** Register OAuth flows statically embedded in the standalone Bun binary. */
@@ -11,6 +12,7 @@ export function registerBunOAuthFlows() {
11
12
  anthropic: () => anthropicOAuth,
12
13
  openaiCodex: () => openaiCodexOAuth,
13
14
  githubCopilot: () => githubCopilotOAuth,
15
+ openrouter: () => openRouterOAuth,
14
16
  kimiCoding: () => kimiCodingOAuth,
15
17
  xai: () => xaiOAuth,
16
18
  radius: createRadiusOAuth,
@@ -27,6 +27,9 @@ if (typeof process !== "undefined" && (process.versions?.node || process.version
27
27
  });
28
28
  }
29
29
  import { getProviderEnvValue } from "./utils/provider-env.js";
30
+ export const ANTHROPIC_AUTH_TOKEN_ENV = "ANTHROPIC_AUTH_TOKEN";
31
+ export const ANTHROPIC_OAUTH_TOKEN_ENV = "ANTHROPIC_OAUTH_TOKEN";
32
+ export const ANTHROPIC_API_KEY_ENV = "ANTHROPIC_API_KEY";
30
33
  let cachedVertexAdcCredentialsExists = null;
31
34
  function hasVertexAdcCredentials(env) {
32
35
  const explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;
@@ -61,9 +64,10 @@ function getApiKeyEnvVars(provider) {
61
64
  if (provider === "github-copilot") {
62
65
  return ["COPILOT_GITHUB_TOKEN"];
63
66
  }
64
- // ANTHROPIC_OAUTH_TOKEN takes precedence over ANTHROPIC_API_KEY
67
+ // ANTHROPIC_AUTH_TOKEN participates in env discovery/status, but
68
+ // getEnvApiKey() skips it because requests must pass it as Authorization: Bearer.
65
69
  if (provider === "anthropic") {
66
- return ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"];
70
+ return [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];
67
71
  }
68
72
  const envMap = {
69
73
  "ant-ling": "ANT_LING_API_KEY",
@@ -114,7 +118,9 @@ export function findEnvKeys(provider, env) {
114
118
  export function getEnvApiKey(provider, env) {
115
119
  const envKeys = findEnvKeys(provider, env);
116
120
  if (envKeys?.[0]) {
117
- return getProviderEnvValue(envKeys[0], env);
121
+ const apiKeyEnv = provider === "anthropic" ? envKeys.find((key) => key !== ANTHROPIC_AUTH_TOKEN_ENV) : envKeys[0];
122
+ if (apiKeyEnv)
123
+ return getProviderEnvValue(apiKeyEnv, env);
118
124
  }
119
125
  // Vertex AI supports either an explicit API key or Application Default Credentials.
120
126
  // Auth is configured via `gcloud auth application-default login`.
@@ -227,6 +227,21 @@ export const IMAGE_MODELS = {
227
227
  cacheWrite: 0,
228
228
  },
229
229
  },
230
+ "microsoft/mai-image-2.5-pro": {
231
+ id: "microsoft/mai-image-2.5-pro",
232
+ name: "Microsoft: MAI-Image-2.5 Pro",
233
+ api: "openrouter-images",
234
+ provider: "openrouter",
235
+ baseUrl: "https://openrouter.ai/api/v1",
236
+ input: ["text", "image"],
237
+ output: ["image"],
238
+ cost: {
239
+ input: 5,
240
+ output: 0,
241
+ cacheRead: 0,
242
+ cacheWrite: 0,
243
+ },
244
+ },
230
245
  "openai/gpt-5-image": {
231
246
  id: "openai/gpt-5-image",
232
247
  name: "OpenAI: GPT-5 Image",
@@ -0,0 +1,4 @@
1
+ export function flattenModelCatalog(_provider, groups) {
2
+ return Object.assign({}, ...Object.values(groups));
3
+ }
4
+ //# sourceMappingURL=model-catalog.js.map
@@ -8,6 +8,7 @@ import { azureOpenAIResponsesProvider } from "./azure-openai-responses.js";
8
8
  import { cerebrasProvider } from "./cerebras.js";
9
9
  import { cloudflareAIGatewayProvider } from "./cloudflare-ai-gateway.js";
10
10
  import { cloudflareWorkersAIProvider } from "./cloudflare-workers-ai.js";
11
+ import modelDataManifest from "./data/.manifest.json" with { type: "json" };
11
12
  import { deepseekProvider } from "./deepseek.js";
12
13
  import { fireworksProvider } from "./fireworks.js";
13
14
  import { githubCopilotProvider } from "./github-copilot.js";
@@ -49,9 +50,10 @@ export function getBuiltinModel(provider, modelId) {
49
50
  export function getBuiltinProviders() {
50
51
  return Object.keys(MODELS);
51
52
  }
52
- /** URL of a generated provider catalog, used to compare its mtime with remote catalogs during development. */
53
- export function getBuiltinModelDataUrl(provider) {
54
- return new URL(`./data/${provider}.json`, import.meta.url);
53
+ /** Generation timestamp shared by all built-in provider catalogs. */
54
+ export function getBuiltinModelDataGeneratedAt() {
55
+ const generatedAt = Date.parse(modelDataManifest.generatedAt);
56
+ return Number.isNaN(generatedAt) ? undefined : generatedAt;
55
57
  }
56
58
  export function getBuiltinModels(provider) {
57
59
  const models = MODELS[provider];
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/amazon-bedrock.json" with { type: "json" };
4
- export const AMAZON_BEDROCK_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const AMAZON_BEDROCK_MODELS = flattenModelCatalog("amazon-bedrock", values);
5
6
  //# sourceMappingURL=amazon-bedrock.models.js.map
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/ant-ling.json" with { type: "json" };
4
- export const ANT_LING_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const ANT_LING_MODELS = flattenModelCatalog("ant-ling", values);
5
6
  //# sourceMappingURL=ant-ling.models.js.map
@@ -1,16 +1,43 @@
1
1
  import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
2
- import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
2
+ import { lazyOAuth } from "../auth/helpers.js";
3
3
  import { loadAnthropicOAuth } from "../auth/oauth/load.js";
4
+ import { ANTHROPIC_API_KEY_ENV, ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV } from "../env-api-keys.js";
4
5
  import { createProvider } from "../models.js";
5
6
  import { ANTHROPIC_MODELS } from "./anthropic.models.js";
7
+ function anthropicApiKeyAuth() {
8
+ return {
9
+ name: "Anthropic API key",
10
+ login: async (interaction) => ({
11
+ type: "api_key",
12
+ key: await interaction.prompt({ type: "secret", message: "Enter Anthropic API key" }),
13
+ }),
14
+ resolve: async ({ ctx, credential }) => {
15
+ if (credential?.key) {
16
+ return { auth: { apiKey: credential.key }, env: credential.env, source: "stored credential" };
17
+ }
18
+ const authToken = await ctx.env(ANTHROPIC_AUTH_TOKEN_ENV);
19
+ if (authToken) {
20
+ return {
21
+ auth: { headers: { Authorization: `Bearer ${authToken}` } },
22
+ source: ANTHROPIC_AUTH_TOKEN_ENV,
23
+ };
24
+ }
25
+ for (const envVar of [ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV]) {
26
+ const apiKey = await ctx.env(envVar);
27
+ if (apiKey)
28
+ return { auth: { apiKey }, source: envVar };
29
+ }
30
+ return undefined;
31
+ },
32
+ };
33
+ }
6
34
  export function anthropicProvider() {
7
35
  return createProvider({
8
36
  id: "anthropic",
9
37
  name: "Anthropic",
10
38
  baseUrl: "https://api.anthropic.com",
11
39
  auth: {
12
- // ANTHROPIC_OAUTH_TOKEN takes precedence over ANTHROPIC_API_KEY
13
- apiKey: envApiKeyAuth("Anthropic API key", ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"]),
40
+ apiKey: anthropicApiKeyAuth(),
14
41
  oauth: lazyOAuth({ name: "Anthropic (Claude Pro/Max)", load: loadAnthropicOAuth }),
15
42
  },
16
43
  models: Object.values(ANTHROPIC_MODELS),
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/anthropic.json" with { type: "json" };
4
- export const ANTHROPIC_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const ANTHROPIC_MODELS = flattenModelCatalog("anthropic", values);
5
6
  //# sourceMappingURL=anthropic.models.js.map
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/azure-openai-responses.json" with { type: "json" };
4
- export const AZURE_OPENAI_RESPONSES_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const AZURE_OPENAI_RESPONSES_MODELS = flattenModelCatalog("azure-openai-responses", values);
5
6
  //# sourceMappingURL=azure-openai-responses.models.js.map
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/cerebras.json" with { type: "json" };
4
- export const CEREBRAS_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const CEREBRAS_MODELS = flattenModelCatalog("cerebras", values);
5
6
  //# sourceMappingURL=cerebras.models.js.map
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/cloudflare-ai-gateway.json" with { type: "json" };
4
- export const CLOUDFLARE_AI_GATEWAY_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const CLOUDFLARE_AI_GATEWAY_MODELS = flattenModelCatalog("cloudflare-ai-gateway", values);
5
6
  //# sourceMappingURL=cloudflare-ai-gateway.models.js.map
@@ -1,5 +1,6 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
3
  import values from "./data/cloudflare-workers-ai.json" with { type: "json" };
4
- export const CLOUDFLARE_WORKERS_AI_MODELS = values;
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const CLOUDFLARE_WORKERS_AI_MODELS = flattenModelCatalog("cloudflare-workers-ai", values);
5
6
  //# sourceMappingURL=cloudflare-workers-ai.models.js.map