diff --git a/.github/scripts/check-mdx-frontmatter.js b/.github/scripts/check-mdx-frontmatter.cjs similarity index 57% rename from .github/scripts/check-mdx-frontmatter.js rename to .github/scripts/check-mdx-frontmatter.cjs index b714a8b8..838d2ce1 100644 --- a/.github/scripts/check-mdx-frontmatter.js +++ b/.github/scripts/check-mdx-frontmatter.cjs @@ -10,6 +10,9 @@ let totalFilesChecked = 0; let totalFilesValid = 0; let totalFilesInvalid = 0; +// List of validators to run +const validators = [checkDescriptionLength, checkTitleLength]; + // List of folders to exclude (relative to mdxDir) const excludedFolders = ["-ARCHIVE-", "api-reference", "llm-university"]; @@ -31,30 +34,62 @@ async function shouldExcludeFile(filePath) { } async function checkDescriptionLength(filePath) { - totalFilesChecked++; const fileContent = await fs.readFile(filePath, "utf8"); const { data } = matter(fileContent); + const minDescriptionLength = 50; + const maxDescriptionLength = 160; if (!data.description) { - console.log(`File "${filePath}" is missing a description.`); - totalFilesInvalid++; + console.error(`File "${filePath}" is missing a description.`); return false; } const descriptionLength = data.description.length; - if (descriptionLength < 50 || descriptionLength > 160) { - console.log( - `File "${filePath}" has an invalid description length: ${descriptionLength} characters.` + if (descriptionLength < minDescriptionLength || descriptionLength > maxDescriptionLength) { + console.error( + `File "${filePath}" has an invalid description length: ${descriptionLength} characters. ` + + `Description should be between ${minDescriptionLength}-${maxDescriptionLength} characters.` ); - totalFilesInvalid++; return false; } - totalFilesValid++; return true; } + +async function checkTitleLength(filePath) { + // these two files are layout files + // and we don't expect to have title in them + const filesToExclude = ["index.mdx", "cookbooks.mdx"]; + + const fileContent = await fs.readFile(filePath, "utf8"); + const { data } = matter(fileContent); + const minTitleLength = 30; + const maxTitleLength = 60; + + filePath = path.relative(mdxDir, filePath); + + if (!data.title) { + if (filesToExclude.includes(filePath)) { + return true; + } + console.error(`File "${filePath}" is missing a title.`); + return false; + } + + const titleLength = data.title.length; + if (titleLength < minTitleLength || titleLength > maxTitleLength) { + console.warn( + `File "${filePath}" has an invalid title length: ${titleLength} characters. ` + + `Title should be between ${minTitleLength}-${maxTitleLength} characters.` + ); + return true; + } + + return true; +} + async function checkMDXFiles(dirPath) { let allFilesValid = true; const files = await fs.readdir(dirPath); @@ -77,9 +112,22 @@ async function checkMDXFiles(dirPath) { console.log(`Skipping excluded file: ${fullPath}`); continue; } - const isValid = await checkDescriptionLength(fullPath); + let isValid = true; + + for (const validate of validators) { + const fileIsValid = await validate(fullPath); + if (!fileIsValid) { + isValid = false; + } + } + + totalFilesChecked++; if (!isValid) { allFilesValid = false; + totalFilesInvalid++; + } + else { + totalFilesValid++; } } } @@ -98,12 +146,12 @@ async function checkMDXFiles(dirPath) { if (!allFilesValid) { console.error( - "Some files have invalid or missing descriptions. Meta description needing to be 50-160 characters" + "Some files have invalid or missing content." ); process.exit(1); // Fail if any file is invalid } else { console.log( - "All files have a valid description length in the frontmatter." + "All files a valid for frontmatter." ); } })(); diff --git a/.github/scripts/check_python_code_snippets.py b/.github/scripts/check_python_code_snippets.py new file mode 100755 index 00000000..ecd519bc --- /dev/null +++ b/.github/scripts/check_python_code_snippets.py @@ -0,0 +1,86 @@ +import os +import re +from pathlib import Path +import black + +DEFAULT_LINE_LENGTH = 70 +BASE_DIR = Path(__file__).resolve().parent +MDX_DIR = BASE_DIR / "../../fern/pages" +FILE_PATTERN = re.compile(r"\.mdx$") + + +def find_files_by_pattern(directory, pattern): + """ + Finds all files in the given directory that match the provided regex pattern. + """ + directory = Path(directory).resolve() + if not directory.is_dir(): + raise ValueError(f"Provided directory {directory} is not valid.") + return [f for f in directory.rglob('*') if f.is_file() and pattern.search(f.name)] + + +def format_python_snippets_in_mdx(file_path, line_length=DEFAULT_LINE_LENGTH): + """ + Formats Python code snippets inside MDX files using Black. + """ + black_mode = black.FileMode(line_length=line_length) + code_block_pattern = re.compile(r"```python\n(.*?)\n```", re.DOTALL) + + with open(file_path, 'r', encoding='utf-8') as file: + original_content = file.read() + + def format_with_black(match): + code = match.group(1) + formatted_code = black.format_str(code, mode=black_mode) + return f"```python\n{formatted_code.strip()}\n```" + + new_content = code_block_pattern.sub(format_with_black, original_content) + + with open(file_path, 'w', encoding='utf-8') as file: + file.write(new_content) + + return original_content, new_content + + +def process_mdx_files(directory, file_pattern, line_length=DEFAULT_LINE_LENGTH, check_changes=False): + """ + Processes all MDX files in the directory, formatting Python code snippets. + + Args: + directory (Path or str): Path to the directory containing MDX files. + file_pattern (re.Pattern): Regex pattern to match MDX files. + line_length (int): Line length to use for Black formatting. + check_changes (bool): If True, raises an exception if changes are detected. + """ + matching_files = find_files_by_pattern(directory, file_pattern) + files_changed = [] + + for file_path in matching_files: + original_content, new_content = format_python_snippets_in_mdx(file_path, line_length) + + if original_content != new_content: + files_changed.append(file_path) + + if check_changes and files_changed: + raise RuntimeError( + f"The following files were modified during the run:\n" + + "\n".join(str(file) for file in files_changed) + ) + + +if __name__ == "__main__": + import sys + + path = sys.argv[1] if len(sys.argv) > 1 else MDX_DIR + line_length = int(sys.argv[2]) if len(sys.argv) > 2 else DEFAULT_LINE_LENGTH + check_changes = os.getenv("CI") == "true" # Set to True in CI pipeline + + if Path(path).is_dir(): + process_mdx_files(path, FILE_PATTERN, line_length, check_changes) + elif Path(path).is_file(): + if FILE_PATTERN.search(path): + process_mdx_files(Path(path).parent, FILE_PATTERN, line_length, check_changes) + else: + print("The specified file does not match the MDX pattern.") + else: + print("Provided path is not valid.") diff --git a/.github/workflows/check-mdx-frontmatter.yml b/.github/workflows/check-mdx-frontmatter.yml index dcf134ea..ae23f208 100644 --- a/.github/workflows/check-mdx-frontmatter.yml +++ b/.github/workflows/check-mdx-frontmatter.yml @@ -26,4 +26,4 @@ jobs: run: pnpm install - name: Run MDX frontmatter check - run: node .github/scripts/check-mdx-frontmatter.js + run: node .github/scripts/check-mdx-frontmatter.cjs diff --git a/.github/workflows/check-python-code-snippets.yml b/.github/workflows/check-python-code-snippets.yml new file mode 100644 index 00000000..d02620dc --- /dev/null +++ b/.github/workflows/check-python-code-snippets.yml @@ -0,0 +1,39 @@ +name: check-python-code-snippets + +on: + pull_request: + branches: + - main + paths: + - 'fern/pages/**/*.mdx' + - 'fern/pages/**/**/*.mdx' + +jobs: + run: + runs-on: ubuntu-latest + permissions: write-all + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Install Poetry + shell: bash + run: | + pipx install poetry + + - name: Install Project Dependencies with Poetry + shell: bash + run: | + poetry install + + - name: Run Python MDX Snippet Formatter + shell: bash + env: + CI: true + run: poetry run python .github/scripts/check_python_code_snippets.py fern/pages diff --git a/.github/workflows/snippet-ci.yml b/.github/workflows/snippet-ci.yml new file mode 100644 index 00000000..f33f7608 --- /dev/null +++ b/.github/workflows/snippet-ci.yml @@ -0,0 +1,40 @@ +name: snippet-ci + +on: + pull_request: {} + push: + branches: + - main + +jobs: + run: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Install Dependencies + shell: bash + run: pnpm install + + - name: Set up python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: poetry install + run: | + python -m pip install --upgrade pip + python -m pip install poetry + poetry install + + - name: Run snippet tests + continue-on-error: true + env: + CO_API_KEY: ${{ secrets.COHERE_TOKEN }} + run: pnpm run --filter snippet-tester test diff --git a/cohere-openapi.yaml b/cohere-openapi.yaml index 7a4a5a45..a657002e 100644 --- a/cohere-openapi.yaml +++ b/cohere-openapi.yaml @@ -5825,12 +5825,12 @@ paths: - STRICT - NONE description: | - Used to select the [safety instruction](/docs/safety-modes) inserted into the prompt. Defaults to `CONTEXTUAL`. + Used to select the [safety instruction](https://docs.cohere.com/docs/safety-modes) inserted into the prompt. Defaults to `CONTEXTUAL`. When `NONE` is specified, the safety instruction will be omitted. Safety modes are not yet configurable in combination with `tools`, `tool_results` and `documents` parameters. - **Note**: This parameter is only compatible with models [Command R 08-2024](/docs/command-r#august-2024-release), [Command R+ 08-2024](/docs/command-r-plus#august-2024-release) and newer. + **Note**: This parameter is only compatible with models [Command R 08-2024](https://docs.cohere.com/docs/command-r#august-2024-release), [Command R+ 08-2024](https://docs.cohere.com/docs/command-r-plus#august-2024-release) and newer. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments responses: @@ -5885,7 +5885,7 @@ paths: required: - id - finish_reason - - messages + - message properties: id: type: string @@ -5897,6 +5897,10 @@ paths: $ref: "#/components/schemas/AssistantMessageResponse" usage: $ref: "#/components/schemas/Usage" + logprobs: + type: array + items: + $ref: "#/components/schemas/LogprobItem" response-stream: description: StreamedChatResponse is returned in streaming mode (specified with `stream=True` in the request). @@ -5910,6 +5914,7 @@ paths: - $ref: "#/components/schemas/ChatToolCallDeltaEvent" - $ref: "#/components/schemas/ChatToolCallEndEvent" - $ref: "#/components/schemas/ChatMessageEndEvent" + - $ref: "#/components/schemas/ChatDebugEvent" discriminator: propertyName: type mapping: @@ -5924,6 +5929,7 @@ paths: citation-start: "#/components/schemas/CitationStartEvent" citation-end: "#/components/schemas/CitationEndEvent" message-end: "#/components/schemas/ChatMessageEndEvent" + debug: "#/components/schemas/ChatDebugEvent" description: | Generates a text response to a user message and streams it down, token by token. To learn how to use the Chat API with streaming follow our [Text Generation guides](https://docs.cohere.com/v2/docs/chat-api). @@ -5939,7 +5945,21 @@ paths: - messages - model properties: + stream: + description: | + Defaults to `false`. + + When `true`, the response will be a SSE stream of events. The final event will contain the complete response, and will have an `event_type` of `"stream-end"`. + + Streaming is beneficial for user interfaces that render the contents of the response piece by piece, as it gets generated. + + Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments + type: boolean + x-fern-audiences: + - public model: + x-fern-audiences: + - public type: string description: The name of a compatible [Cohere model](https://docs.cohere.com/v2/docs/models) (such as @@ -5947,8 +5967,12 @@ paths: [fine-tuned](https://docs.cohere.com/v2/docs/chat-fine-tuning) model. messages: + x-fern-audiences: + - public $ref: "#/components/schemas/ChatMessages" tools: + x-fern-audiences: + - public type: array items: $ref: "#/components/schemas/ToolV2" @@ -5956,7 +5980,18 @@ paths: A list of available tools (functions) that the model may suggest invoking before producing a text response. When `tools` is passed (without `tool_results`), the `text` content in the response will be empty and the `tool_calls` field in the response will be populated with a list of tool calls that need to be made. If no calls need to be made, the `tool_calls` array will be empty. + strict_tools: + x-fern-audiences: + - public + x-fern-availability: beta + type: boolean + description: | + When set to `true`, tool calls in the Assistant message will be forced to follow the tool definition strictly. Learn more in the [Structured Outputs (Tools) guide](https://docs.cohere.com/docs/structured-outputs-json#structured-outputs-tools). + + **Note**: The first few requests with a new set of tools will take longer to process. documents: + x-fern-audiences: + - public type: array items: oneOf: @@ -5965,10 +6000,16 @@ paths: description: | A list of relevant documents that the model can cite to generate a more accurate reply. Each document is either a string or document object with content and metadata. citation_options: + x-fern-audiences: + - public $ref: "#/components/schemas/CitationOptions" response_format: + x-fern-audiences: + - public $ref: "#/components/schemas/ResponseFormatV2" safety_mode: + x-fern-audiences: + - public enum: - CONTEXTUAL - STRICT @@ -5981,18 +6022,24 @@ paths: **Note**: This parameter is only compatible with models [Command R 08-2024](https://docs.cohere.com/v2/docs/command-r#august-2024-release), [Command R+ 08-2024](https://docs.cohere.com/v2/docs/command-r-plus#august-2024-release) and newer. max_tokens: + x-fern-audiences: + - public type: integer description: | The maximum number of tokens the model will generate as part of the response. **Note**: Setting a low value may result in incomplete generations. stop_sequences: + x-fern-audiences: + - public type: array items: type: string description: | A list of up to 5 strings that the model will use to stop generation. If the model generates a string that matches any of the strings in the list, it will stop generating tokens and return the generated text up to that point not including the stop sequence. temperature: + x-fern-audiences: + - public type: number format: float minimum: 0 @@ -6004,6 +6051,8 @@ paths: Randomness can be further maximized by increasing the value of the `p` parameter. seed: + x-fern-audiences: + - public type: integer minimum: 0 maximum: 18446744073709552000 @@ -6013,27 +6062,35 @@ paths: seed and parameters should return the same result. However, determinism cannot be totally guaranteed. frequency_penalty: + x-fern-audiences: + - public type: number format: float description: | Defaults to `0.0`, min value of `0.0`, max value of `1.0`. Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. presence_penalty: + x-fern-audiences: + - public type: number format: float description: | Defaults to `0.0`, min value of `0.0`, max value of `1.0`. Used to reduce repetitiveness of generated tokens. Similar to `frequency_penalty`, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. k: + x-fern-audiences: + - public type: number format: float default: 0 minimum: 0 maximum: 500 description: | - Ensures only the top `k` most likely tokens are considered for generation at each step. + Ensures that only the top `k` most likely tokens are considered for generation at each step. When `k` is set to `0`, k-sampling is disabled. Defaults to `0`, min value of `0`, max value of `500`. p: + x-fern-audiences: + - public type: number format: float default: 0.75 @@ -6042,6 +6099,12 @@ paths: description: | Ensures that only the most likely tokens, with total probability mass of `p`, are considered for generation at each step. If both `k` and `p` are enabled, `p` acts after `k`. Defaults to `0.75`. min value of `0.01`, max value of `0.99`. + logprobs: + x-fern-audiences: + - public + type: boolean + description: | + Defaults to `false`. When set to `true`, the log probabilities of the generated tokens will be included in the response. responses: "200": description: OK @@ -6187,7 +6250,7 @@ paths: } - sdk: curl name: Default - code: |- + code: | curl --request POST \ --url https://api.cohere.com/v2/chat \ --header 'accept: application/json' \ @@ -6200,7 +6263,7 @@ paths: "role": "user", "content": "Hello world!" } - ], + ] }' request: model: "command-r" @@ -7085,7 +7148,7 @@ paths: } - sdk: curl name: Streaming - code: |- + code: | curl --request POST \ --url https://api.cohere.com/v2/chat \ --header 'accept: application/json' \ @@ -7099,7 +7162,7 @@ paths: "role": "user", "content": "Hello world!" } - ], + ] }' request: model: "command-r" @@ -7286,7 +7349,7 @@ paths: import cohere - co = cohere.Client() + co = cohere.ClientV2() response = co.chat( @@ -7825,11 +7888,7 @@ paths: $ref: "#/components/schemas/GenerateStreamedResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -7856,7 +7915,7 @@ paths: $ref: "#/components/responses/GatewayTimeout" description: | - This API is marked as "Legacy" and is no longer maintained. Follow the [migration guide](/docs/migrating-from-cogenerate-to-cochat) to start using the Chat API. + This API is marked as "Legacy" and is no longer maintained. Follow the [migration guide](https://docs.cohere.com/docs/migrating-from-cogenerate-to-cochat) to start using the Chat API. Generates realistic text conditioned on a given input. requestBody: @@ -7882,7 +7941,7 @@ paths: - public description: |- The identifier of the model to generate with. Currently available models are `command` (default), `command-nightly` (experimental), `command-light`, and `command-light-nightly` (experimental). - Smaller, "light" models are faster, while larger models will perform better. [Custom models](/docs/training-custom-models) can also be supplied with their full ID. + Smaller, "light" models are faster, while larger models will perform better. [Custom models](https://docs.cohere.com/docs/training-custom-models) can also be supplied with their full ID. writeOnly: true num_generations: type: integer @@ -8201,9 +8260,7 @@ paths: public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); - URL url = - URI.toUrl( - "https://cohere.com/favicon-32x32.png"); + URL url = URI.toUrl("https://cohere.com/favicon-32x32.png"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect(); @@ -11499,11 +11556,7 @@ paths: embeddings_by_type: "#/components/schemas/EmbedByTypeResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -11533,7 +11586,7 @@ paths: Embeddings can be used to create classifiers as well as empower semantic search. To learn more about embeddings, see the embedding page. - If you want to learn more how to use the embedding model, have a look at the [Semantic Search Guide](/docs/semantic-search). + If you want to learn more how to use the embedding model, have a look at the [Semantic Search Guide](https://docs.cohere.com/docs/semantic-search). requestBody: content: application/json: @@ -11579,7 +11632,7 @@ paths: description: |- Defaults to embed-english-v2.0 - The identifier of the model. Smaller "light" models are faster, while larger models will perform better. [Custom models](/docs/training-custom-models) can also be supplied with their full ID. + The identifier of the model. Smaller "light" models are faster, while larger models will perform better. [Custom models](https://docs.cohere.com/docs/training-custom-models) can also be supplied with their full ID. Available models and corresponding embedding dimensions: @@ -11760,6 +11813,16 @@ paths: package embedv2post; /* (C)2024 */ + import com.cohere.api.Cohere; + + import com.cohere.api.resources.v2.requests.V2EmbedRequest; + + import com.cohere.api.types.EmbedByTypeResponse; + + import com.cohere.api.types.EmbedInputType; + + import com.cohere.api.types.EmbeddingType; + import java.io.InputStream; import java.net.HttpURLConnection; @@ -11773,24 +11836,11 @@ paths: import java.util.List; - import com.cohere.api.Cohere; - - import com.cohere.api.resources.v2.requests.V2EmbedRequest; - - import com.cohere.api.types.EmbedByTypeResponse; - - import com.cohere.api.types.EmbedInputType; - - import com.cohere.api.types.EmbeddingType; - - public class EmbedImagePost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); - URL url = - URI.toUrl( - "https://cohere.com/favicon-32x32.png"); + URL url = URI.toUrl("https://cohere.com/favicon-32x32.png"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect(); @@ -12968,9 +13018,6 @@ paths: package embedv2post; /* (C)2024 */ - import java.util.List; - - import com.cohere.api.Cohere; import com.cohere.api.resources.v2.requests.V2EmbedRequest; @@ -12979,6 +13026,8 @@ paths: import com.cohere.api.types.EmbedInputType; + import java.util.List; + public class EmbedPost { public static void main(String[] args) { @@ -15093,11 +15142,7 @@ paths: $ref: "#/components/schemas/EmbedByTypeResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -15127,7 +15172,7 @@ paths: Embeddings can be used to create text classifiers as well as empower semantic search. To learn more about embeddings, see the embedding page. - If you want to learn more how to use the embedding model, have a look at the [Semantic Search Guide](/docs/semantic-search). + If you want to learn more how to use the embedding model, have a look at the [Semantic Search Guide](https://docs.cohere.com/docs/semantic-search). requestBody: content: application/json: @@ -15177,7 +15222,7 @@ paths: description: |- Defaults to embed-english-v2.0 - The identifier of the model. Smaller "light" models are faster, while larger models will perform better. [Custom models](/docs/training-custom-models) can also be supplied with their full ID. + The identifier of the model. Smaller "light" models are faster, while larger models will perform better. [Custom models](https://docs.cohere.com/docs/training-custom-models) can also be supplied with their full ID. Available models and corresponding embedding dimensions: @@ -15201,7 +15246,7 @@ paths: items: $ref: "#/components/schemas/EmbeddingType" description: |- - Specifies the types of embeddings you want to get back. Not required and default is None, which returns the Embed Floats response type. Can be one or more of the following types. + Specifies the types of embeddings you want to get back. Can be one or more of the following types. * `"float"`: Use this when you want to get back the default float embeddings. Valid for all models. * `"int8"`: Use this when you want to get back signed int8 embeddings. Valid for only v3 models. @@ -15318,19 +15363,13 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.embedjobs.requests.CreateEmbedJobRequest; - + import com.cohere.api.resources.embedjobs.requests.CreateEmbedJobRequest; import com.cohere.api.types.CreateEmbedJobResponse; - import com.cohere.api.types.EmbedInputType; - public class EmbedJobsPost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); @@ -15385,11 +15424,7 @@ paths: $ref: "#/components/schemas/CreateEmbedJobResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -15534,11 +15569,7 @@ paths: $ref: "#/components/schemas/ListEmbedJobResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -15684,11 +15715,7 @@ paths: $ref: "#/components/schemas/EmbedJob" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning message for potentially incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -15819,11 +15846,7 @@ paths: description: OK headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -15965,9 +15988,7 @@ paths: type: string x-fern-audiences: - public - description: "The identifier of the model to use, one of : - `rerank-english-v3.0`, `rerank-multilingual-v3.0`, - `rerank-english-v2.0`, `rerank-multilingual-v2.0`" + description: The identifier of the model to use, eg `rerank-v3.5`. query: type: string x-fern-audiences: @@ -16062,7 +16083,7 @@ paths: {String: "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages."}, {String: "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district."}, }, - Model: cohere.String("rerank-english-v3.0"), + Model: cohere.String("rerank-v3.5"), }, ) @@ -16095,12 +16116,12 @@ paths: text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', }, { - text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', + text: 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', }, ], query: 'What is the capital of the United States?', topN: 3, - model: 'rerank-english-v3.0', + model: 'rerank-v3.5', }); console.log(rerank); @@ -16119,12 +16140,12 @@ paths: "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] response = co.rerank( - model="rerank-english-v3.0", + model="rerank-v3.5", query="What is the capital of the United States?", documents=docs, top_n=3, @@ -16142,26 +16163,21 @@ paths: co = cohere.AsyncClient() - docs = [ - "Carson City is the capital city of the American state of Nevada.", - "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", - "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", - ] - - - async def main(): response = await co.rerank( - model="rerank-english-v2.0", + model="rerank-v3.5", query="What is the capital of the United States?", - documents=docs, + documents=[ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + ], top_n=3, ) print(response) - asyncio.run(main()) - sdk: java name: Cohere java SDK @@ -16211,13 +16227,13 @@ paths: + " capital of the United States. It is" + " a federal district."), RerankRequestDocumentsItem.of( - "Capital punishment (the death penalty) has" + "Capital punishment has" + " existed in the United States since" + " beforethe United States was a" + " country. As of 2017, capital" + " punishment is legal in 30 of the 50" + " states."))) - .model("rerank-english-v3.0") + .model("rerank-english-v3.5") .topN(3) .build()); @@ -16233,14 +16249,14 @@ paths: --header 'content-type: application/json' \ --header "Authorization: bearer $CO_API_KEY" \ --data '{ - "model": "rerank-english-v3.0", + "model": "rerank-v3.5", "query": "What is the capital of the United States?", "top_n": 3, "documents": ["Carson City is the capital city of the American state of Nevada.", "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' request: documents: @@ -16253,12 +16269,12 @@ paths: - text: Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. - - text: Capital punishment (the death penalty) has existed in the United States - since beforethe United States was a country. As of 2017, - capital punishment is legal in 30 of the 50 states. + - text: Capital punishment has existed in the United States since beforethe United + States was a country. As of 2017, capital punishment is legal + in 30 of the 50 states. query: What is the capital of the United States? top_n: 3 - model: rerank-english-v3.0 + model: rerank-v3.5 response: body: id: 8bc745a3-7871-4597-822e-18c95d5df48c @@ -16308,20 +16324,6 @@ paths: x-fern-audiences: - public properties: - document: - type: object - x-fern-audiences: - - public - description: If `return_documents` is set as `false` this will return none, if - `true` it will return the documents passed in - properties: - text: - type: string - x-fern-audiences: - - public - description: The text of the document to rerank - required: - - text index: type: integer x-fern-audiences: @@ -16388,9 +16390,7 @@ paths: type: string x-fern-audiences: - public - description: "The identifier of the model to use, one of : - `rerank-english-v3.0`, `rerank-multilingual-v3.0`, - `rerank-english-v2.0`, `rerank-multilingual-v2.0`" + description: The identifier of the model to use, eg `rerank-v3.5`. query: type: string x-fern-audiences: @@ -16401,54 +16401,28 @@ paths: x-fern-audiences: - public description: |- - A list of document objects or strings to rerank. - If a document is provided the text fields is required and all other fields will be preserved in the response. + A list of texts that will be compared to the `query`. + For optimal performance we recommend against sending more than 1,000 documents in a single request. - The total max chunks (length of documents * max_chunks_per_doc) must be less than 10000. + **Note**: long documents will automatically be truncated to the value of `max_tokens_per_doc`. - We recommend a maximum of 1,000 documents for optimal endpoint performance. + **Note**: structured data should be formatted as YAML strings for best performance. items: - oneOf: - - type: string - - $ref: "#/components/schemas/RerankDocument" + type: string top_n: type: integer x-fern-audiences: - public minimum: 1 - description: The number of most relevant documents or indices to return, - defaults to the length of the documents - rank_fields: - type: array - x-fern-audiences: - - public - items: - type: string - x-fern-audiences: - - public - description: If a JSON object is provided, you can specify which keys you would - like to have considered for reranking. The model will rerank - based on order of the fields passed in (i.e. - rank_fields=['title','author','text'] will rerank using the - values in title, author, text sequentially. If the length - of title, author, and text exceeds the context length of the - model, the chunking will not re-consider earlier fields). If - not provided, the model will use the default text field for - ranking. - return_documents: - type: boolean - x-fern-audiences: - - public - default: false - description: |- - - If false, returns results without the doc text - the api will return a list of {index, relevance score} where index is inferred from the list passed into the request. - - If true, returns results with the doc text passed in - the api will return an ordered list of {index, text, relevance score} where index + text refers to the list passed into the request. - max_chunks_per_doc: + description: Limits the number of returned rerank results to the specified + value. If not passed, all the rerank results will be + returned. + max_tokens_per_doc: type: integer x-fern-audiences: - public - description: The maximum number of chunks to produce internally from a document - default: 10 + description: Defaults to `4096`. Long documents will be automatically truncated + to the specified number of tokens. required: - query - documents @@ -16470,23 +16444,15 @@ paths: (async () => { const rerank = await cohere.v2.rerank({ documents: [ - { text: 'Carson City is the capital city of the American state of Nevada.' }, - { - text: 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', - }, - { - text: 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', - }, - { - text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', - }, - { - text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', - }, + 'Carson City is the capital city of the American state of Nevada.', + 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', + 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', + 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', + 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', ], query: 'What is the capital of the United States?', topN: 3, - model: 'rerank-english-v3.0', + model: 'rerank-v3.5', }); console.log(rerank); @@ -16505,12 +16471,12 @@ paths: "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] response = co.rerank( - model="rerank-english-v3.0", + model="rerank-v3.5", query="What is the capital of the United States?", documents=docs, top_n=3, @@ -16528,22 +16494,18 @@ paths: co = cohere.AsyncClientV2() - docs = [ - "Carson City is the capital city of the American state of Nevada.", - "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", - "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", - ] - - - async def main(): response = await co.rerank( - model="rerank-english-v2.0", + model="rerank-v3.5", query="What is the capital of the United States?", - documents=docs, - top_n=3, + documents=[ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + ], + top_n=3 ) print(response) @@ -16558,9 +16520,6 @@ paths: import com.cohere.api.resources.v2.requests.V2RerankRequest; - import - com.cohere.api.resources.v2.types.V2RerankRequestDocumentsItem; - import com.cohere.api.resources.v2.types.V2RerankResponse; import java.util.List; @@ -16575,44 +16534,22 @@ paths: .v2() .rerank( V2RerankRequest.builder() - .model("rerank-english-v3.0") + .model("rerank-v3.5") .query("What is the capital of the United States?") .documents( List.of( - V2RerankRequestDocumentsItem.of( - "Carson City is the capital city of" - + " the American state of" - + " Nevada."), - V2RerankRequestDocumentsItem.of( - "The Commonwealth of the Northern" - + " Mariana Islands is a group" - + " of islands in the Pacific" - + " Ocean. Its capital is" - + " Saipan."), - V2RerankRequestDocumentsItem.of( - "Capitalization or capitalisation" - + " in English grammar is the" - + " use of a capital letter at" - + " the start of a word." - + " English usage varies from" - + " capitalization in other" - + " languages."), - V2RerankRequestDocumentsItem.of( - "Washington, D.C. (also known as" - + " simply Washington or D.C.," - + " and officially as the" - + " District of Columbia) is" - + " the capital of the United" - + " States. It is a federal" - + " district."), - V2RerankRequestDocumentsItem.of( - "Capital punishment (the death" - + " penalty) has existed in the" - + " United States since" - + " beforethe United States was" - + " a country. As of 2017," - + " capital punishment is legal" - + " in 30 of the 50 states."))) + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands" + + " in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a" + + " capital letter at the start of a word. English usage varies" + + " from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and" + + " officially as the District of Columbia) is the capital of the" + + " United States. It is a federal district.", + "Capital punishment has existed in the United States since before the" + + " United States was a country. As of 2017, capital punishment is" + + " legal in 30 of the 50 states.")) .topN(3) .build()); @@ -16628,32 +16565,32 @@ paths: --header 'content-type: application/json' \ --header "Authorization: bearer $CO_API_KEY" \ --data '{ - "model": "rerank-english-v3.0", + "model": "rerank-v3.5", "query": "What is the capital of the United States?", "top_n": 3, "documents": ["Carson City is the capital city of the American state of Nevada.", "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' request: documents: - - text: Carson City is the capital city of the American state of Nevada. - - text: The Commonwealth of the Northern Mariana Islands is a group of islands in - the Pacific Ocean. Its capital is Saipan. - - text: Capitalization or capitalisation in English grammar is the use of a - capital letter at the start of a word. English usage varies - from capitalization in other languages. - - text: Washington, D.C. (also known as simply Washington or D.C., and officially - as the District of Columbia) is the capital of the United - States. It is a federal district. - - text: Capital punishment (the death penalty) has existed in the United States - since beforethe United States was a country. As of 2017, - capital punishment is legal in 30 of the 50 states. + - Carson City is the capital city of the American state of Nevada. + - The Commonwealth of the Northern Mariana Islands is a group of + islands in the Pacific Ocean. Its capital is Saipan. + - Capitalization or capitalisation in English grammar is the use + of a capital letter at the start of a word. English usage varies + from capitalization in other languages. + - Washington, D.C. (also known as simply Washington or D.C., and + officially as the District of Columbia) is the capital of the + United States. It is a federal district. + - Capital punishment has existed in the United States since + beforethe United States was a country. As of 2017, capital + punishment is legal in 30 of the 50 states. query: What is the capital of the United States? top_n: 3 - model: rerank-english-v3.0 + model: rerank-v3.5 response: body: id: 07734bd2-2473-4f07-94e1-0d9f0e6843cf @@ -16667,10 +16604,7 @@ paths: meta: api_version: version: '2' - is_experimental: true - warnings: - - You are using an experimental version, for more information - please refer to https://docs.cohere.com/versioning-reference + is_experimental: false billed_units: search_units: 1 /v1/classify: @@ -17427,22 +17361,14 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.datasets.requests.DatasetsCreateRequest; - - import - com.cohere.api.resources.datasets.types.DatasetsCreateResponse; - + import com.cohere.api.resources.datasets.requests.DatasetsCreateRequest; + import com.cohere.api.resources.datasets.types.DatasetsCreateResponse; import com.cohere.api.types.DatasetType; - import java.util.Optional; - public class DatasetPost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); @@ -17779,14 +17705,10 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.datasets.types.DatasetsGetUsageResponse; - + import com.cohere.api.resources.datasets.types.DatasetsGetUsageResponse; public class DatasetUsageGet { public static void main(String[] args) { @@ -18394,11 +18316,7 @@ paths: description: OK headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" content: application/json: schema: @@ -18446,7 +18364,7 @@ paths: $ref: "#/components/responses/GatewayTimeout" description: | - This API is marked as "Legacy" and is no longer maintained. Follow the [migration guide](/docs/migrating-from-cogenerate-to-cochat) to start using the Chat API. + This API is marked as "Legacy" and is no longer maintained. Follow the [migration guide](https://docs.cohere.com/docs/migrating-from-cogenerate-to-cochat) to start using the Chat API. Generates a summary in English for a given text. requestBody: @@ -18696,11 +18614,7 @@ paths: description: OK headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" content: application/json: schema: @@ -18958,11 +18872,7 @@ paths: description: OK headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" content: application/json: schema: @@ -19313,17 +19223,12 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.connectors.requests.CreateConnectorRequest; - + import com.cohere.api.resources.connectors.requests.CreateConnectorRequest; import com.cohere.api.types.CreateConnectorResponse; - public class ConnectorCreate { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); @@ -19635,14 +19540,10 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.connectors.requests.UpdateConnectorRequest; - + import com.cohere.api.resources.connectors.requests.UpdateConnectorRequest; public class ConnectorPatch { public static void main(String[] args) { @@ -19949,17 +19850,12 @@ paths: asyncio.run(main()) - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.connectors.requests.ConnectorsOAuthAuthorizeRequest; - + import com.cohere.api.resources.connectors.requests.ConnectorsOAuthAuthorizeRequest; import com.cohere.api.types.OAuthAuthorizeResponse; - public class ConnectorsIdOauthAuthorizePost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); @@ -20029,11 +19925,7 @@ paths: $ref: "#/components/schemas/GetModelResponse" headers: X-API-Warning: - schema: - type: string - x-fern-audiences: - - public - description: Warning description for incorrect usage of the API + $ref: "#/components/headers/ApiWarning" "400": $ref: "#/components/responses/BadRequest" "401": @@ -20395,17 +20287,12 @@ paths: - code-samples: - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - package finetuning; - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.finetuning.finetuning.types.ListFinetunedModelsResponse; - + import com.cohere.api.resources.finetuning.finetuning.types.ListFinetunedModelsResponse; public class ListFinetunedModels { public static void main(String[] args) { @@ -20834,7 +20721,8 @@ paths: last_used: type: string format: date-time - description: Timestamp for the latest request to this fine-tuned model. + description: "Deprecated: Timestamp for the latest request to this fine-tuned + model." readOnly: true title: Information about the fine-tuned model. Must contain name and settings. required: @@ -20845,29 +20733,16 @@ paths: - code-samples: - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - package finetuning; - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.finetuning.finetuning.types.BaseModel; - - import - com.cohere.api.resources.finetuning.finetuning.types.BaseType; - - import - com.cohere.api.resources.finetuning.finetuning.types.Settings; - - import - com.cohere.api.resources.finetuning.finetuning.types.UpdateFinetunedModelResponse; - - import - com.cohere.api.resources.finetuning.requests.FinetuningUpdateFinetunedModelRequest; - + import com.cohere.api.resources.finetuning.finetuning.types.BaseModel; + import com.cohere.api.resources.finetuning.finetuning.types.BaseType; + import com.cohere.api.resources.finetuning.finetuning.types.Settings; + import com.cohere.api.resources.finetuning.finetuning.types.UpdateFinetunedModelResponse; + import com.cohere.api.resources.finetuning.requests.FinetuningUpdateFinetunedModelRequest; public class UpdateFinetunedModel { public static void main(String[] args) { @@ -21072,17 +20947,12 @@ paths: - code-samples: - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - package finetuning; - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.finetuning.finetuning.types.GetFinetunedModelResponse; - + import com.cohere.api.resources.finetuning.finetuning.types.GetFinetunedModelResponse; public class GetFinetunedModel { public static void main(String[] args) { @@ -21410,17 +21280,12 @@ paths: - code-samples: - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - package finetuning; - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.finetuning.finetuning.types.ListEventsResponse; - + import com.cohere.api.resources.finetuning.finetuning.types.ListEventsResponse; public class ListEvents { public static void main(String[] args) { @@ -21605,17 +21470,12 @@ paths: - code-samples: - sdk: java name: Cohere java SDK - code: > + code: | /* (C)2024 */ - package finetuning; - import com.cohere.api.Cohere; - - import - com.cohere.api.resources.finetuning.finetuning.types.ListTrainingStepMetricsResponse; - + import com.cohere.api.resources.finetuning.finetuning.types.ListTrainingStepMetricsResponse; public class ListTrainingStepMetrics { public static void main(String[] args) { @@ -21952,7 +21812,7 @@ components: schema: x-fern-availability: beta description: | - A JSON schema object that the output will adhere to. There are some restrictions we have on the schema, refer to [our guide](/docs/structured-outputs-json#schema-constraints) for more information. + A JSON schema object that the output will adhere to. There are some restrictions we have on the schema, refer to [our guide](https://docs.cohere.com/docs/structured-outputs-json#schema-constraints) for more information. Example (required name and age object): ```json { @@ -22821,7 +22681,7 @@ components: $ref: "#/components/schemas/ResponseFormatTypeV2" json_schema: description: | - A [JSON schema](https://json-schema.org/overview/what-is-jsonschema) object that the output will adhere to. There are some restrictions we have on the schema, refer to [our guide](/docs/structured-outputs-json#schema-constraints) for more information. + A [JSON schema](https://json-schema.org/overview/what-is-jsonschema) object that the output will adhere to. There are some restrictions we have on the schema, refer to [our guide](https://docs.cohere.com/docs/structured-outputs-json#schema-constraints) for more information. Example (required name and age object): ```json { @@ -22940,11 +22800,32 @@ components: type: number description: | The number of tokens produced by the model. + LogprobItem: + type: object + required: + - token + - token_ids + - logprob + properties: + text: + type: string + description: The text chunk for which the log probabilities was calculated. + token_ids: + type: array + description: The token ids of each token used to construct the text chunk. + items: + type: integer + logprobs: + type: array + description: The log probability of each token used to construct the text chunk. + items: + type: number + format: float ChatResponse: required: - id - finish_reason - - messages + - message properties: id: type: string @@ -22956,6 +22837,10 @@ components: $ref: "#/components/schemas/AssistantMessageResponse" usage: $ref: "#/components/schemas/Usage" + logprobs: + type: array + items: + $ref: "#/components/schemas/LogprobItem" ChatStreamEventType: description: The streamed event types required: @@ -23038,6 +22923,8 @@ components: properties: text: type: string + logprobs: + $ref: "#/components/schemas/LogprobItem" ChatContentEndEvent: description: A streamed delta event which signifies that the content block has ended. allOf: @@ -23164,6 +23051,7 @@ components: - $ref: "#/components/schemas/ChatToolCallDeltaEvent" - $ref: "#/components/schemas/ChatToolCallEndEvent" - $ref: "#/components/schemas/ChatMessageEndEvent" + - $ref: "#/components/schemas/ChatDebugEvent" discriminator: propertyName: type mapping: @@ -23178,6 +23066,7 @@ components: citation-start: "#/components/schemas/CitationStartEvent" citation-end: "#/components/schemas/CitationEndEvent" message-end: "#/components/schemas/ChatMessageEndEvent" + debug: "#/components/schemas/ChatDebugEvent" SingleGeneration: type: object properties: @@ -23207,9 +23096,10 @@ components: `ALL`. The likelihood refers to the average log-likelihood of the entire specified string, which is useful for [evaluating the performance of your model](likelihood-eval), especially if you've - created a [custom model](/docs/training-custom-models). Individual - token likelihoods provide the log-likelihood of each token. The - first token will not have a likelihood. + created a [custom + model](https://docs.cohere.com/docs/training-custom-models). + Individual token likelihoods provide the log-likelihood of each + token. The first token will not have a likelihood. items: type: object x-fern-audiences: @@ -27144,7 +27034,7 @@ components: - STRATEGY_UNSPECIFIED: Unspecified strategy. - STRATEGY_VANILLA: Deprecated: Serve the fine-tuned model on a dedicated GPU. - - STRATEGY_TFEW: Serve the fine-tuned model on a shared GPU. + - STRATEGY_TFEW: Deprecated: Serve the fine-tuned model on a shared GPU. x-fern-sdk-group-name: - finetuning - finetuning @@ -27298,12 +27188,12 @@ components: - STATUS_UNSPECIFIED: Unspecified status. - STATUS_FINETUNING: The fine-tuned model is being fine-tuned. - - STATUS_DEPLOYING_API: The fine-tuned model is being deployed. + - STATUS_DEPLOYING_API: Deprecated: The fine-tuned model is being deployed. - STATUS_READY: The fine-tuned model is ready to receive requests. - STATUS_FAILED: The fine-tuned model failed. - STATUS_DELETED: The fine-tuned model was deleted. - - STATUS_TEMPORARILY_OFFLINE: The fine-tuned model is temporarily unavailable. - - STATUS_PAUSED: The fine-tuned model is paused (Vanilla only). + - STATUS_TEMPORARILY_OFFLINE: Deprecated: The fine-tuned model is temporarily unavailable. + - STATUS_PAUSED: Deprecated: The fine-tuned model is paused (Vanilla only). - STATUS_QUEUED: The fine-tuned model is queued for training. x-fern-sdk-group-name: - finetuning @@ -27351,7 +27241,8 @@ components: last_used: type: string format: date-time - description: read-only. Timestamp for the latest request to this fine-tuned model. + description: "read-only. Deprecated: Timestamp for the latest request to this + fine-tuned model." readOnly: true description: This resource represents a fine-tuned model. required: @@ -27643,3 +27534,13 @@ components: properties: data: type: string + headers: + ApiWarning: + description: The name of the project that is making the request. + x-fern-audiences: + - public + schema: + type: string + required: false + example: Parameter xyz is deprecated, for more information please refer to + https://docs.cohere.com/versioning-reference diff --git a/fern/docs.yml b/fern/docs.yml index 6c957709..7c989930 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -156,7 +156,7 @@ redirects: destination: "/docs/overview-rag-connectors" permanent: true - source: "/docs/reranking" - destination: "/docs/overview" + destination: "/docs/rerank-overview" permanent: true - source: "/reference/rerank-1" destination: "/reference/rerank" @@ -571,6 +571,15 @@ redirects: - source: /docs/data-statement destination: /docs/usage-guidelines permanent: true + - source: /docs/usage-guidelines + destination: /docs/usage-policy + permanent: true + - source: /docs/structured-outputs-json + destination: /docs/structured-outputs + permanent: true + - source: /v1/docs/structured-outputs-json + destination: /v1/docs/structured-outputs + permanent: true - source: /v2/v2/:slug* destination: /v2/:slug* permanent: true diff --git a/fern/pages/changelog/2024-11-27-structured-outputs-tools.mdx b/fern/pages/changelog/2024-11-27-structured-outputs-tools.mdx new file mode 100644 index 00000000..a08ce9c6 --- /dev/null +++ b/fern/pages/changelog/2024-11-27-structured-outputs-tools.mdx @@ -0,0 +1,16 @@ +--- +title: "Structured Outputs support for tool use" +slug: "changelog/structured-outputs-tools" +createdAt: "Wed Nov 27 2024" +hidden: false +description: >- + Structured Outputs now supports both JSON and tool use scenarios. +--- + +Today, we're pleased to announce that we have added Structured Outputs support for tool use in the Chat API. + +In addition to supporting Structured Outputs with JSON generation via the `response_format` parameter, Structured Outputs will be available with Tools as well via the `strict_tools` parameter. + +Setting `strict_tools` to `true` ensures that tool calls will follow the provided tool schema exactly. This means the tool calls are guaranteed to adhere to the tool names, parameter names, parameter data types, and required parameters, without the risk of hallucinations. + +See the [Structured Outputs documentation](https://docs.cohere.com/v2/docs/structured-outputs#structured-outputs-tools) to learn more. diff --git a/fern/pages/changelog/2024-12-02-Rerank-v3.5-is-released.mdx b/fern/pages/changelog/2024-12-02-Rerank-v3.5-is-released.mdx new file mode 100644 index 00000000..f83bb398 --- /dev/null +++ b/fern/pages/changelog/2024-12-02-Rerank-v3.5-is-released.mdx @@ -0,0 +1,37 @@ +--- +title: "Announcing Rerank-v3.5" +slug: "changelog/rerank-v3.5" +createdAt: "Mon Dec 2 2024 00:00:00 (MST)" +hidden: false +description: >- + Release announcment for Rerank 3.5 - our new state of the art model for ranking. +--- + +We're pleased to announce the release of [Rerank 3.5](/docs/rerank-2) our newest and most performant foundational model for ranking. Rerank 3.5 has a context length of 4096, SOTA performance on Multilingual Retrieval tasks and Reasoning Capabilities. In addition, Rerank 3.5 has SOTA performance on BEIR and domains such as Finance, E-commerce, Hospitality, Project Management, and Email/Messaging Retrieval tasks. + +In the rest of these release notes, we’ll provide more details about changes to the api. + +## Technical Details + +### API Changes: + +Along with the model, we are releasing V2 of the Rerank API. It includes the following major changes: +- `model` is now a required parameter +- `max_chunks_per_doc` has been replaced by `max_tokens_per_doc`; `max_tokens_per_doc` will determine the maximum amount of tokens a document can have before truncation. The default value for `max_tokens_per_doc` is 4096. +- support for passing a list of objects for the `documents` parameter has been removed - if your documents contain structured data, for best performance we recommend formatting them as [YAML strings](/docs/rerank-overview#example-with-structured-data). + +Example request + +```Text cURL +POST https://api.cohere.ai/v2/rerank +{ + "model": "rerank-v3.5", + "query": "What is the capital of the United States?", + "top_n": 3, + "documents": ["Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] +} +``` \ No newline at end of file diff --git a/fern/pages/cohere-api/about.mdx b/fern/pages/cohere-api/about.mdx index 6037e3de..8ed2a794 100644 --- a/fern/pages/cohere-api/about.mdx +++ b/fern/pages/cohere-api/about.mdx @@ -32,15 +32,9 @@ python -m pip install cohere --upgrade import cohere co = cohere.ClientV2("<>") - response = co.chat( - model="command-r-plus", - messages=[ - { - "role": "user", - "content": "hello world!" - } - ] + model="command-r-plus", + messages=[{"role": "user", "content": "hello world!"}] ) print(response) diff --git a/fern/pages/cookbooks.mdx b/fern/pages/cookbooks.mdx index 49fc7cd5..9259fba1 100644 --- a/fern/pages/cookbooks.mdx +++ b/fern/pages/cookbooks.mdx @@ -136,6 +136,14 @@ export const agentCards = [ href: "/page/sql-agent", authors: [shaan], }, + { + title: "SQL Agent with Cohere and LangChain (i-5O Case Study)", + description: + "Build a SQL agent with Cohere and LangChain in the manufacturing industry.", + imageSrc: "https://fern-image-hosting.s3.amazonaws.com/cohere/bad278b-Community_Demo_2.png", + tags: ["agents"], + href: "/page/sql-agent-cohere-langchain", + }, { title: "Financial CSV Agent with Native Multi-Step Cohere API", description: diff --git a/fern/pages/cookbooks/convfinqa-finetuning-wandb.mdx b/fern/pages/cookbooks/convfinqa-finetuning-wandb.mdx index 90a0c1ff..d4e29412 100644 --- a/fern/pages/cookbooks/convfinqa-finetuning-wandb.mdx +++ b/fern/pages/cookbooks/convfinqa-finetuning-wandb.mdx @@ -46,12 +46,19 @@ If you dont already have [Cohere Python SDK](https://github.com/cohere-ai/cohere ```python import os import cohere -from cohere.finetuning import Hyperparameters, Settings, WandbConfig, FinetunedModel, BaseModel +from cohere.finetuning import ( + Hyperparameters, + Settings, + WandbConfig, + FinetunedModel, + BaseModel, +) -os.environ['COHERE_API_KEY'] = "" # fill in your Cohere API key here +# fill in your Cohere API key here +os.environ["COHERE_API_KEY"] = "" # instantiate the Cohere client -co = cohere.Client(os.environ['COHERE_API_KEY']) +co = cohere.Client(os.environ["COHERE_API_KEY"]) ``` ## Dataset @@ -67,20 +74,37 @@ Following is an example datapoint from the finetuning data. ```python { - "messages": - [ - {"role": "System", "content": "stock-based awards under the plan stock options 2013 marathon grants stock options under the 2007 plan and previously granted options under the 2003 plan .\nmarathon 2019s stock options represent the right to purchase shares of common stock at the fair market value of the common stock on the date of grant .\nthrough 2004 , certain stock options were granted under the 2003 plan with a tandem stock appreciation right , which allows the recipient to instead elect to receive cash and/or common stock equal to the excess of the fair market value of shares of common stock , as determined in accordance with the 2003 plan , over the option price of the shares .\nin general , stock options granted under the 2007 plan and the 2003 plan vest ratably over a three-year period and have a maximum term of ten years from the date they are granted .\nstock appreciation rights 2013 prior to 2005 , marathon granted sars under the 2003 plan .\nno stock appreciation rights have been granted under the 2007 plan .\nsimilar to stock options , stock appreciation rights represent the right to receive a payment equal to the excess of the fair market value of shares of common stock on the date the right is exercised over the grant price .\nunder the 2003 plan , certain sars were granted as stock-settled sars and others were granted in tandem with stock options .\nin general , sars granted under the 2003 plan vest ratably over a three-year period and have a maximum term of ten years from the date they are granted .\nstock-based performance awards 2013 prior to 2005 , marathon granted stock-based performance awards under the 2003 plan .\nno stock-based performance awards have been granted under the 2007 plan .\nbeginning in 2005 , marathon discontinued granting stock-based performance awards and instead now grants cash-settled performance units to officers .\nall stock-based performance awards granted under the 2003 plan have either vested or been forfeited .\nas a result , there are no outstanding stock-based performance awards .\nrestricted stock 2013 marathon grants restricted stock and restricted stock units under the 2007 plan and previously granted such awards under the 2003 plan .\nin 2005 , the compensation committee began granting time-based restricted stock to certain u.s.-based officers of marathon and its consolidated subsidiaries as part of their annual long-term incentive package .\nthe restricted stock awards to officers vest three years from the date of grant , contingent on the recipient 2019s continued employment .\nmarathon also grants restricted stock to certain non-officer employees and restricted stock units to certain international employees ( 201crestricted stock awards 201d ) , based on their performance within certain guidelines and for retention purposes .\nthe restricted stock awards to non-officers generally vest in one-third increments over a three-year period , contingent on the recipient 2019s continued employment .\nprior to vesting , all restricted stock recipients have the right to vote such stock and receive dividends thereon .\nthe non-vested shares are not transferable and are held by marathon 2019s transfer agent .\ncommon stock units 2013 marathon maintains an equity compensation program for its non-employee directors under the 2007 plan and previously maintained such a program under the 2003 plan .\nall non-employee directors other than the chairman receive annual grants of common stock units , and they are required to hold those units until they leave the board of directors .\nwhen dividends are paid on marathon common stock , directors receive dividend equivalents in the form of additional common stock units .\nstock-based compensation expense 2013 total employee stock-based compensation expense was $ 80 million , $ 83 million and $ 111 million in 2007 , 2006 and 2005 .\nthe total related income tax benefits were $ 29 million , $ 31 million and $ 39 million .\nin 2007 and 2006 , cash received upon exercise of stock option awards was $ 27 million and $ 50 million .\ntax benefits realized for deductions during 2007 and 2006 that were in excess of the stock-based compensation expense recorded for options exercised and other stock-based awards vested during the period totaled $ 30 million and $ 36 million .\ncash settlements of stock option awards totaled $ 1 million and $ 3 million in 2007 and 2006 .\nstock option awards granted 2013 during 2007 , 2006 and 2005 , marathon granted stock option awards to both officer and non-officer employees .\nthe weighted average grant date fair value of these awards was based on the following black-scholes assumptions: .\nThe weighted average exercise price per share of 2007, 2006, 2005 are $ 60.94, $ 37.84, $ 25.14. The expected annual dividends per share of 2007, 2006, 2005 are $ 0.96, $ 0.80, $ 0.66. The expected life in years of 2007, 2006, 2005 are 5.0, 5.1, 5.5. The expected volatility of 2007, 2006, 2005 are 27% ( 27 % ), 28% ( 28 % ), 28% ( 28 % ). The risk-free interest rate of 2007, 2006, 2005 are 4.1% ( 4.1 % ), 5.0% ( 5.0 % ), 3.8% ( 3.8 % ). The weighted average grant date fair value of stock option awards granted of 2007, 2006, 2005 are $ 17.24, $ 10.19, $ 6.15.\n."}, - {"role": "User", "content": "what was the weighted average exercise price per share in 2007?"}, - {"role": "Chatbot", "content": "60.94"}, - {"role": "User", "content": "and what was it in 2005?"}, - {"role": "Chatbot", "content": "25.14"}, - {"role": "User", "content": "what was, then, the change over the years?"}, - {"role": "Chatbot", "content": "subtract(60.94, 25.14)"}, - {"role": "User", "content": "what was the weighted average exercise price per share in 2005?"}, - {"role": "Chatbot", "content": "25.14"}, - {"role": "User", "content": "and how much does that change represent in relation to this 2005 weighted average exercise price?"}, - {"role": "Chatbot", "content": "subtract(60.94, 25.14), divide(#0, 25.14)"} - ] + "messages": [ + { + "role": "System", + "content": "stock-based awards under the plan stock options 2013 marathon grants stock options under the 2007 plan and previously granted options under the 2003 plan .\nmarathon 2019s stock options represent the right to purchase shares of common stock at the fair market value of the common stock on the date of grant .\nthrough 2004 , certain stock options were granted under the 2003 plan with a tandem stock appreciation right , which allows the recipient to instead elect to receive cash and/or common stock equal to the excess of the fair market value of shares of common stock , as determined in accordance with the 2003 plan , over the option price of the shares .\nin general , stock options granted under the 2007 plan and the 2003 plan vest ratably over a three-year period and have a maximum term of ten years from the date they are granted .\nstock appreciation rights 2013 prior to 2005 , marathon granted sars under the 2003 plan .\nno stock appreciation rights have been granted under the 2007 plan .\nsimilar to stock options , stock appreciation rights represent the right to receive a payment equal to the excess of the fair market value of shares of common stock on the date the right is exercised over the grant price .\nunder the 2003 plan , certain sars were granted as stock-settled sars and others were granted in tandem with stock options .\nin general , sars granted under the 2003 plan vest ratably over a three-year period and have a maximum term of ten years from the date they are granted .\nstock-based performance awards 2013 prior to 2005 , marathon granted stock-based performance awards under the 2003 plan .\nno stock-based performance awards have been granted under the 2007 plan .\nbeginning in 2005 , marathon discontinued granting stock-based performance awards and instead now grants cash-settled performance units to officers .\nall stock-based performance awards granted under the 2003 plan have either vested or been forfeited .\nas a result , there are no outstanding stock-based performance awards .\nrestricted stock 2013 marathon grants restricted stock and restricted stock units under the 2007 plan and previously granted such awards under the 2003 plan .\nin 2005 , the compensation committee began granting time-based restricted stock to certain u.s.-based officers of marathon and its consolidated subsidiaries as part of their annual long-term incentive package .\nthe restricted stock awards to officers vest three years from the date of grant , contingent on the recipient 2019s continued employment .\nmarathon also grants restricted stock to certain non-officer employees and restricted stock units to certain international employees ( 201crestricted stock awards 201d ) , based on their performance within certain guidelines and for retention purposes .\nthe restricted stock awards to non-officers generally vest in one-third increments over a three-year period , contingent on the recipient 2019s continued employment .\nprior to vesting , all restricted stock recipients have the right to vote such stock and receive dividends thereon .\nthe non-vested shares are not transferable and are held by marathon 2019s transfer agent .\ncommon stock units 2013 marathon maintains an equity compensation program for its non-employee directors under the 2007 plan and previously maintained such a program under the 2003 plan .\nall non-employee directors other than the chairman receive annual grants of common stock units , and they are required to hold those units until they leave the board of directors .\nwhen dividends are paid on marathon common stock , directors receive dividend equivalents in the form of additional common stock units .\nstock-based compensation expense 2013 total employee stock-based compensation expense was $ 80 million , $ 83 million and $ 111 million in 2007 , 2006 and 2005 .\nthe total related income tax benefits were $ 29 million , $ 31 million and $ 39 million .\nin 2007 and 2006 , cash received upon exercise of stock option awards was $ 27 million and $ 50 million .\ntax benefits realized for deductions during 2007 and 2006 that were in excess of the stock-based compensation expense recorded for options exercised and other stock-based awards vested during the period totaled $ 30 million and $ 36 million .\ncash settlements of stock option awards totaled $ 1 million and $ 3 million in 2007 and 2006 .\nstock option awards granted 2013 during 2007 , 2006 and 2005 , marathon granted stock option awards to both officer and non-officer employees .\nthe weighted average grant date fair value of these awards was based on the following black-scholes assumptions: .\nThe weighted average exercise price per share of 2007, 2006, 2005 are $ 60.94, $ 37.84, $ 25.14. The expected annual dividends per share of 2007, 2006, 2005 are $ 0.96, $ 0.80, $ 0.66. The expected life in years of 2007, 2006, 2005 are 5.0, 5.1, 5.5. The expected volatility of 2007, 2006, 2005 are 27% ( 27 % ), 28% ( 28 % ), 28% ( 28 % ). The risk-free interest rate of 2007, 2006, 2005 are 4.1% ( 4.1 % ), 5.0% ( 5.0 % ), 3.8% ( 3.8 % ). The weighted average grant date fair value of stock option awards granted of 2007, 2006, 2005 are $ 17.24, $ 10.19, $ 6.15.\n.", + }, + { + "role": "User", + "content": "what was the weighted average exercise price per share in 2007?", + }, + {"role": "Chatbot", "content": "60.94"}, + {"role": "User", "content": "and what was it in 2005?"}, + {"role": "Chatbot", "content": "25.14"}, + { + "role": "User", + "content": "what was, then, the change over the years?", + }, + {"role": "Chatbot", "content": "subtract(60.94, 25.14)"}, + { + "role": "User", + "content": "what was the weighted average exercise price per share in 2005?", + }, + {"role": "Chatbot", "content": "25.14"}, + { + "role": "User", + "content": "and how much does that change represent in relation to this 2005 weighted average exercise price?", + }, + { + "role": "Chatbot", + "content": "subtract(60.94, 25.14), divide(#0, 25.14)", + }, + ] } ``` @@ -97,19 +121,24 @@ We use the [Datasets API](https://docs.cohere.com/reference/create-dataset) to u ```python -chat_dataset = co.datasets.create(name="cfqa-ft-dataset", - data=open("data/convfinqa-train-chat.jsonl", "rb"), - eval_data=open("data/convfinqa-eval-chat.jsonl", "rb"), - type="chat-finetune-input") -print(chat_dataset.id) # we will use this id to refer to the dataset when creating a finetuning job - +chat_dataset = co.datasets.create( + name="cfqa-ft-dataset", + data=open("data/convfinqa-train-chat.jsonl", "rb"), + eval_data=open("data/convfinqa-eval-chat.jsonl", "rb"), + type="chat-finetune-input", +) +print( + chat_dataset.id +) # we will use this id to refer to the dataset when creating a finetuning job ``` Whenever a dataset is created, the data is validated asynchronously. This validation is kicked off automatically on the backend, and must be completed before we can use this dataset for finetuning. You can find more info on interpreting the errors, if you get any, [here](https://docs.cohere.com/docs/datasets#dataset-validation). ```python -co.wait(chat_dataset) # wait for the dataset to be processed and validated +co.wait( + chat_dataset +) # wait for the dataset to be processed and validated ``` ## Start finetuning @@ -123,9 +152,9 @@ There are several hyperparameters that you can modify to get the most out of you ```python hp_config = Hyperparameters( - train_batch_size=16, - train_epochs=1, - learning_rate=0.0001, + train_batch_size=16, + train_epochs=1, + learning_rate=0.0001, ) ``` @@ -139,7 +168,7 @@ For chat finetuning, we support WandB integration which allows you to monitor th wnb_config = WandbConfig( project="test-project", api_key="", - entity="test-entity", # must be a valid enitity associated with the provided API key + entity="test-entity", # must be a valid enitity associated with the provided API key ) ``` @@ -150,19 +179,21 @@ With the dataset, hyperparameters, and the wandb configurations ready, we can cr ```python cfqa_finetune = co.finetuning.create_finetuned_model( - request=FinetunedModel( - name="cfqa-command-r-ft", - settings=Settings( - base_model=BaseModel( - base_type="BASE_TYPE_CHAT", # specifies this is a chat finetuning - ), - dataset_id=chat_dataset.id, # the id of the dataset we created above - hyperparameters=hp_config, - wandb=wnb_config, + request=FinetunedModel( + name="cfqa-command-r-ft", + settings=Settings( + base_model=BaseModel( + base_type="BASE_TYPE_CHAT", # specifies this is a chat finetuning + ), + dataset_id=chat_dataset.id, # the id of the dataset we created above + hyperparameters=hp_config, + wandb=wnb_config, + ), ), - ), ) -print(cfqa_finetune.finetuned_model.id) # we will use this id to refer to the finetuned model when making predictions/getting status/etc. +print( + cfqa_finetune.finetuned_model.id +) # we will use this id to refer to the finetuned model when making predictions/getting status/etc. ``` ## Check finetuning status @@ -171,8 +202,12 @@ Once the finetuning job finishes and the finetuned model is ready to use, you wi ```python -response = co.finetuning.get_finetuned_model(cfqa_finetune.finetuned_model.id) -print(response.finetuned_model.status) # when the job finished this will be STATUS_READY +response = co.finetuning.get_finetuned_model( + cfqa_finetune.finetuned_model.id +) +print( + response.finetuned_model.status +) # when the job finished this will be STATUS_READY ``` You may view the fine-tuning job loss curves via the Weights and Biases dashboard. It will be available via the following URL once the training starts: `https://wandb.ai///runs/`. We log the following to WandB: @@ -190,7 +225,8 @@ Once the training job finished you can also check the validation metrics as foll ```python train_step_metrics = co.finetuning.list_training_step_metrics( - finetuned_model_id=cfqa_finetune.finetuned_model.id) + finetuned_model_id=cfqa_finetune.finetuned_model.id +) for metric in train_step_metrics.step_metrics: print(metric.metrics) @@ -203,15 +239,21 @@ Once your model completes training, you can call it via co.chat() and pass your ```python response = co.chat( - message="what was the total african and us net undeveloped acres expiring in 2016?", - chat_history=[ - {"role": "System", "message": "in the ordinary course of business , based on our evaluations of certain geologic trends and prospective economics , we have allowed certain lease acreage to expire and may allow additional acreage to expire in the future .\nif production is not established or we take no other action to extend the terms of the leases , licenses or concessions , undeveloped acreage listed in the table below will expire over the next three years .\nwe plan to continue the terms of certain of these licenses and concession areas or retain leases through operational or administrative actions ; however , the majority of the undeveloped acres associated with other africa as listed in the table below pertains to our licenses in ethiopia and kenya , for which we executed agreements in 2015 to sell .\nthe kenya transaction closed in february 2016 and the ethiopia transaction is expected to close in the first quarter of 2016 .\nsee item 8 .\nfinancial statements and supplementary data - note 5 to the consolidated financial statements for additional information about this disposition .\nnet undeveloped acres expiring year ended december 31 .\nThe u.s . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 68, 89, 128. The e.g . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 92, 36. The other africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4352, 854. The total africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4444, 890. The other international of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 2014, 2014. The total of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 257, 4533, 1018.\n."}, - {"role": "User", "message": "what percentage of undeveloped acres were in the us in 2018?"}, - {"role": "Chatbot", "message": "divide(128, 1018)"} - # {"role": "User", "message": "what was the total african and us net undeveloped acres expiring in 2016?"}, # this is input as the main query above - # {"role": "Chatbot", "message": "add(189, 68)"}, # this is the ground truth answer - ], - model=cfqa_finetune.finetuned_model.id+"-ft" + message="what was the total african and us net undeveloped acres expiring in 2016?", + chat_history=[ + { + "role": "System", + "message": "in the ordinary course of business , based on our evaluations of certain geologic trends and prospective economics , we have allowed certain lease acreage to expire and may allow additional acreage to expire in the future .\nif production is not established or we take no other action to extend the terms of the leases , licenses or concessions , undeveloped acreage listed in the table below will expire over the next three years .\nwe plan to continue the terms of certain of these licenses and concession areas or retain leases through operational or administrative actions ; however , the majority of the undeveloped acres associated with other africa as listed in the table below pertains to our licenses in ethiopia and kenya , for which we executed agreements in 2015 to sell .\nthe kenya transaction closed in february 2016 and the ethiopia transaction is expected to close in the first quarter of 2016 .\nsee item 8 .\nfinancial statements and supplementary data - note 5 to the consolidated financial statements for additional information about this disposition .\nnet undeveloped acres expiring year ended december 31 .\nThe u.s . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 68, 89, 128. The e.g . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 92, 36. The other africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4352, 854. The total africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4444, 890. The other international of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 2014, 2014. The total of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 257, 4533, 1018.\n.", + }, + { + "role": "User", + "message": "what percentage of undeveloped acres were in the us in 2018?", + }, + {"role": "Chatbot", "message": "divide(128, 1018)"}, + # {"role": "User", "message": "what was the total african and us net undeveloped acres expiring in 2016?"}, # this is input as the main query above + # {"role": "Chatbot", "message": "add(189, 68)"}, # this is the ground truth answer + ], + model=cfqa_finetune.finetuned_model.id + "-ft", ) print("#### Model response ####") print(response.text) @@ -230,15 +272,21 @@ The response object is described in detail [here](https://docs.cohere.com/refere ```python base_response = co.chat( - message="what was the total african and us net undeveloped acres expiring in 2016?", - chat_history=[ - {"role": "System", "message": "in the ordinary course of business , based on our evaluations of certain geologic trends and prospective economics , we have allowed certain lease acreage to expire and may allow additional acreage to expire in the future .\nif production is not established or we take no other action to extend the terms of the leases , licenses or concessions , undeveloped acreage listed in the table below will expire over the next three years .\nwe plan to continue the terms of certain of these licenses and concession areas or retain leases through operational or administrative actions ; however , the majority of the undeveloped acres associated with other africa as listed in the table below pertains to our licenses in ethiopia and kenya , for which we executed agreements in 2015 to sell .\nthe kenya transaction closed in february 2016 and the ethiopia transaction is expected to close in the first quarter of 2016 .\nsee item 8 .\nfinancial statements and supplementary data - note 5 to the consolidated financial statements for additional information about this disposition .\nnet undeveloped acres expiring year ended december 31 .\nThe u.s . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 68, 89, 128. The e.g . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 92, 36. The other africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4352, 854. The total africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4444, 890. The other international of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 2014, 2014. The total of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 257, 4533, 1018.\n."}, - {"role": "User", "message": "what percentage of undeveloped acres were in the us in 2018?"}, - {"role": "Chatbot", "message": "divide(128, 1018)"} - # {"role": "User", "message": "what was the total african and us net undeveloped acres expiring in 2016?"}, # this is input as the main query above - # {"role": "Chatbot", "message": "add(189, 68)"}, # this is the ground truth answer - ], - model="command-r-08-2024" + message="what was the total african and us net undeveloped acres expiring in 2016?", + chat_history=[ + { + "role": "System", + "message": "in the ordinary course of business , based on our evaluations of certain geologic trends and prospective economics , we have allowed certain lease acreage to expire and may allow additional acreage to expire in the future .\nif production is not established or we take no other action to extend the terms of the leases , licenses or concessions , undeveloped acreage listed in the table below will expire over the next three years .\nwe plan to continue the terms of certain of these licenses and concession areas or retain leases through operational or administrative actions ; however , the majority of the undeveloped acres associated with other africa as listed in the table below pertains to our licenses in ethiopia and kenya , for which we executed agreements in 2015 to sell .\nthe kenya transaction closed in february 2016 and the ethiopia transaction is expected to close in the first quarter of 2016 .\nsee item 8 .\nfinancial statements and supplementary data - note 5 to the consolidated financial statements for additional information about this disposition .\nnet undeveloped acres expiring year ended december 31 .\nThe u.s . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 68, 89, 128. The e.g . of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 92, 36. The other africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4352, 854. The total africa of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 189, 4444, 890. The other international of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 2014, 2014, 2014. The total of net undeveloped acres expiring year ended december 31 , 2016, net undeveloped acres expiring year ended december 31 , 2017, net undeveloped acres expiring year ended december 31 , 2018 are 257, 4533, 1018.\n.", + }, + { + "role": "User", + "message": "what percentage of undeveloped acres were in the us in 2018?", + }, + {"role": "Chatbot", "message": "divide(128, 1018)"}, + # {"role": "User", "message": "what was the total african and us net undeveloped acres expiring in 2016?"}, # this is input as the main query above + # {"role": "Chatbot", "message": "add(189, 68)"}, # this is the ground truth answer + ], + model="command-r-08-2024", ) print("#### Model response ####") print(base_response.text) diff --git a/fern/pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx b/fern/pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx index 5090fb79..d82b98ac 100644 --- a/fern/pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx +++ b/fern/pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx @@ -71,8 +71,8 @@ To subscribe to the algorithm: Install the Python packages you will use below and import them. For example, you can run the command below to install `cohere` if you haven't done so. -```python -!pip install "cohere>=5.11.0" +```sh +pip install "cohere>=5.11.0" ``` @@ -100,7 +100,9 @@ Finally, you need to set all the following variables using your own information. region = "" # Get the arn of the bring your own finetuning algorithm by region -cohere_package = "cohere-command-r-v2-byoft-8370167e649c32a1a5f00267cd334c2c" +cohere_package = ( + "cohere-command-r-v2-byoft-8370167e649c32a1a5f00267cd334c2c" +) algorithm_map = { "us-east-1": f"arn:aws:sagemaker:us-east-1:865070037744:algorithm/{cohere_package}", "us-east-2": f"arn:aws:sagemaker:us-east-2:057799348421:algorithm/{cohere_package}", @@ -150,12 +152,18 @@ from peft import PeftModel from transformers import CohereForCausalLM -def load_and_merge_model(base_model_name_or_path: str, adapter_weights_dir: str): +def load_and_merge_model( + base_model_name_or_path: str, adapter_weights_dir: str +): """ Load the base model and the model finetuned by PEFT, and merge the adapter weights to the base weights to get a model with merged weights """ - base_model = CohereForCausalLM.from_pretrained(base_model_name_or_path) - peft_model = PeftModel.from_pretrained(base_model, adapter_weights_dir) + base_model = CohereForCausalLM.from_pretrained( + base_model_name_or_path + ) + peft_model = PeftModel.from_pretrained( + base_model, adapter_weights_dir + ) merged_model = peft_model.merge_and_unload() return merged_model @@ -165,17 +173,23 @@ def save_hf_model(output_dir: str, model, tokenizer=None, args=None): Save a HuggingFace model (and optionally tokenizer as well as additional args) to a local directory """ os.makedirs(output_dir, exist_ok=True) - model.save_pretrained(output_dir, state_dict=None, safe_serialization=True) + model.save_pretrained( + output_dir, state_dict=None, safe_serialization=True + ) if tokenizer is not None: tokenizer.save_pretrained(output_dir) if args is not None: - torch.save(args, os.path.join(output_dir, "training_args.bin")) + torch.save( + args, os.path.join(output_dir, "training_args.bin") + ) ``` ```python # Get the merged model from adapter weights -merged_model = load_and_merge_model("CohereForAI/c4ai-command-r-08-2024", adapter_weights_dir) +merged_model = load_and_merge_model( + "CohereForAI/c4ai-command-r-08-2024", adapter_weights_dir +) # Save the merged weights to your local directory save_hf_model(merged_weights_dir, merged_model) @@ -186,9 +200,10 @@ save_hf_model(merged_weights_dir, merged_model) ```python -%%time sess = sage.Session() -merged_weights = S3Uploader.upload(merged_weights_dir, s3_checkpoint_dir, sagemaker_session=sess) +merged_weights = S3Uploader.upload( + merged_weights_dir, s3_checkpoint_dir, sagemaker_session=sess +) print("merged_weights", merged_weights) ``` @@ -199,7 +214,6 @@ Create Cohere client and use it to export the merged weights to the TensorRT-LLM ```python -%%time co = cohere.SagemakerClient(aws_region=region) co.sagemaker_finetuning.export_finetune( arn=arn, @@ -218,7 +232,6 @@ The Cohere client provides a built-in method to create an endpoint for inference ```python -%%time co.sagemaker_finetuning.create_endpoint( arn=arn, endpoint_name=endpoint_name, @@ -237,7 +250,9 @@ Now, you can perform real-time inference by calling the endpoint you just deploy ```python # If the endpoint is already deployed, you can directly connect to it -co.sagemaker_finetuning.connect_to_endpoint(endpoint_name=endpoint_name) +co.sagemaker_finetuning.connect_to_endpoint( + endpoint_name=endpoint_name +) message = "Classify the following text as either very negative, negative, neutral, positive or very positive: mr. deeds is , as comedy goes , very silly -- and in the best way." result = co.sagemaker_finetuning.chat(message=message) @@ -260,7 +275,9 @@ for line in tqdm(open(eval_data_path).readlines()): question_answer_json = json.loads(line) question = question_answer_json["messages"][0]["content"] answer = question_answer_json["messages"][1]["content"] - model_ans = co.sagemaker_finetuning.chat(message=question, temperature=0).text + model_ans = co.sagemaker_finetuning.chat( + message=question, temperature=0 + ).text if model_ans == answer: correct += 1 diff --git a/fern/pages/cookbooks/finetune-on-sagemaker.mdx b/fern/pages/cookbooks/finetune-on-sagemaker.mdx index 8690d757..329cee60 100644 --- a/fern/pages/cookbooks/finetune-on-sagemaker.mdx +++ b/fern/pages/cookbooks/finetune-on-sagemaker.mdx @@ -58,10 +58,11 @@ To subscribe to the model algorithm: 2. On the AWS Marketplace listing, click on the **Continue to Subscribe** button. 3. On the **Subscribe to this software** page, review and click on **"Accept Offer"** if you and your organization agrees with EULA, pricing, and support terms. On the "Configure and launch" page, make sure ARN displayed in your region match with the ARN in the following cell. +```sh +pip install "cohere>=5.11.0" +``` ```python -!pip install "cohere>=5.11.0" - import cohere import boto3 import sagemaker as sage @@ -89,7 +90,9 @@ algorithm_map = { "ap-south-1": f"arn:aws:sagemaker:ap-south-1:077584701553:algorithm/{cohere_package}", } if region not in algorithm_map.keys(): - raise Exception(f"Current boto3 session region {region} is not supported.") + raise Exception( + f"Current boto3 session region {region} is not supported." + ) arn = algorithm_map[region] ``` @@ -147,9 +150,13 @@ sess = sage.Session() # TODO[Optional]: change it to your data # You can download following example datasets from https://github.com/cohere-ai/notebooks/tree/main/notebooks/data and upload them # to the root of this juyter notebook -train_dataset = S3Uploader.upload("./scienceQA_train.jsonl", s3_data_dir, sagemaker_session=sess) +train_dataset = S3Uploader.upload( + "./scienceQA_train.jsonl", s3_data_dir, sagemaker_session=sess +) # optional eval dataset -eval_dataset = S3Uploader.upload("./scienceQA_eval.jsonl", s3_data_dir, sagemaker_session=sess) +eval_dataset = S3Uploader.upload( + "./scienceQA_eval.jsonl", s3_data_dir, sagemaker_session=sess +) print("traint_dataset", train_dataset) print("eval_dataset", eval_dataset) ``` @@ -166,7 +173,7 @@ Specify a directory on S3 where finetuned models should be stored. **Make sure y ```python # TODO update this with a custom S3 path # DO NOT add a trailing slash at the end -s3_models_dir = f"s3://..." +s3_models_dir = f"s3://..." ``` Create Cohere client: @@ -230,7 +237,8 @@ Create fine-tuning jobs for the uploaded datasets. Add a field for `eval_data` i ```python finetune_name = "test-finetune" -co.sagemaker_finetuning.create_finetune(arn=arn, +co.sagemaker_finetuning.create_finetune( + arn=arn, name=finetune_name, train_data=train_dataset, eval_data=eval_dataset, @@ -254,13 +262,14 @@ The Cohere AWS SDK provides a built-in method for creating an endpoint for infer ```python -endpoint_name="test-finetune" -co.sagemaker_finetuning.create_endpoint(arn=arn, - endpoint_name=endpoint_name, - s3_models_dir=s3_models_dir, - recreate=True, - instance_type="ml.p4de.24xlarge", - role="ServiceRoleSagemaker", +endpoint_name = "test-finetune" +co.sagemaker_finetuning.create_endpoint( + arn=arn, + endpoint_name=endpoint_name, + s3_models_dir=s3_models_dir, + recreate=True, + instance_type="ml.p4de.24xlarge", + role="ServiceRoleSagemaker", ) # If the endpoint is already created, you just need to connect to it @@ -285,16 +294,21 @@ print(result) ```python import json from tqdm import tqdm + total = 0 correct = 0 -for line in tqdm(open('./sample_finetune_scienceQA_eval.jsonl').readlines()): +for line in tqdm( + open("./sample_finetune_scienceQA_eval.jsonl").readlines() +): total += 1 question_answer_json = json.loads(line) question = question_answer_json["messages"][0]["content"] answer = question_answer_json["messages"][1]["content"] - model_ans = co.sagemaker_finetuning.chat(message=question, temperature=0).text + model_ans = co.sagemaker_finetuning.chat( + message=question, temperature=0 + ).text if model_ans == answer: - correct +=1 + correct += 1 print(f"Accuracy of finetuned model is %.3f" % (correct / total)) ``` diff --git a/fern/pages/cookbooks/rag-cohere-mongodb.mdx b/fern/pages/cookbooks/rag-cohere-mongodb.mdx index ee1700a9..a033294a 100644 --- a/fern/pages/cookbooks/rag-cohere-mongodb.mdx +++ b/fern/pages/cookbooks/rag-cohere-mongodb.mdx @@ -52,8 +52,8 @@ Libraries: -```python -!pip install --quiet datasets tqdm cohere pymongo +```sh +pip install --quiet datasets tqdm cohere pymongo ``` @@ -102,7 +102,11 @@ from datasets import load_dataset # Make sure you have an Hugging Face token(HF_TOKEN) in your development environemnt before running the code below # How to get a token: https://huggingface.co/docs/hub/en/security-tokens # https://huggingface.co/datasets/MongoDB/fake_tech_companies_market_reports -dataset = load_dataset("MongoDB/fake_tech_companies_market_reports", split="train", streaming=True) +dataset = load_dataset( + "MongoDB/fake_tech_companies_market_reports", + split="train", + streaming=True, +) dataset_df = dataset.take(100) # Convert the dataset to a pandas dataframe @@ -176,29 +180,31 @@ dataset_df.head(5) ```python # Data Preparation def combine_attributes(row): - combined = f"{row['company']} {row['sector']} " + combined = f"{row['company']} {row['sector']} " - # Add reports information - for report in row['reports']: - combined += f"{report['year']} {report['title']} {report['author']} {report['content']} " + # Add reports information + for report in row["reports"]: + combined += f"{report['year']} {report['title']} {report['author']} {report['content']} " - # Add recent news information - for news in row['recent_news']: - combined += f"{news['headline']} {news['summary']} " + # Add recent news information + for news in row["recent_news"]: + combined += f"{news['headline']} {news['summary']} " - return combined.strip() + return combined.strip() ``` ```python # Add the new column 'combined_attributes' -dataset_df['combined_attributes'] = dataset_df.apply(combine_attributes, axis=1) +dataset_df["combined_attributes"] = dataset_df.apply( + combine_attributes, axis=1 +) ``` ```python # Display the first few rows of the updated dataframe -dataset_df[['company', 'ticker', 'combined_attributes']].head() +dataset_df[["company", "ticker", "combined_attributes"]].head() ```
@@ -251,24 +257,30 @@ dataset_df[['company', 'ticker', 'combined_attributes']].head() ```python from tqdm import tqdm -def get_embedding(text: str, input_type: str="search_document") -> list[float]: - if not text.strip(): - print("Attempted to get embedding for empty text.") - return [] - model = "embed-english-v3.0" - response = co.embed( - texts=[text], - model=model, - input_type=input_type, # Used for embeddings of search queries run against a vector DB to find relevant documents - embedding_types=['float'] - ) +def get_embedding( + text: str, input_type: str = "search_document" +) -> list[float]: + if not text.strip(): + print("Attempted to get embedding for empty text.") + return [] + + model = "embed-english-v3.0" + response = co.embed( + texts=[text], + model=model, + input_type=input_type, # Used for embeddings of search queries run against a vector DB to find relevant documents + embedding_types=["float"], + ) + + return response.embeddings.float[0] - return response.embeddings.float[0] # Apply the embedding function with a progress bar tqdm.pandas(desc="Generating embeddings") -dataset_df["embedding"] = dataset_df['combined_attributes'].progress_apply(get_embedding) +dataset_df["embedding"] = dataset_df[ + "combined_attributes" +].progress_apply(get_embedding) print(f"We just computed {len(dataset_df['embedding'])} embeddings.") ``` @@ -392,6 +404,7 @@ Follow MongoDB’s [steps to get the connection](https://www.mongodb.com/docs/ma ```python import os + os.environ["MONGO_URI"] = "" ``` @@ -399,25 +412,29 @@ os.environ["MONGO_URI"] = "" ```python import pymongo + def get_mongo_client(mongo_uri): - """Establish and validate connection to the MongoDB.""" + """Establish and validate connection to the MongoDB.""" + + client = pymongo.MongoClient( + mongo_uri, appname="devrel.showcase.rag.cohere_mongodb.python" + ) - client = pymongo.MongoClient(mongo_uri, appname="devrel.showcase.rag.cohere_mongodb.python") + # Validate the connection + ping_result = client.admin.command("ping") + if ping_result.get("ok") == 1.0: + # Connection successful + print("Connection to MongoDB successful") + return client + else: + print("Connection to MongoDB failed") + return None - # Validate the connection - ping_result = client.admin.command('ping') - if ping_result.get('ok') == 1.0: - # Connection successful - print("Connection to MongoDB successful") - return client - else: - print("Connection to MongoDB failed") - return None MONGO_URI = os.environ["MONGO_URI"] if not MONGO_URI: - print("MONGO_URI not set in environment variables") + print("MONGO_URI not set in environment variables") mongo_client = get_mongo_client(MONGO_URI) @@ -461,7 +478,7 @@ MongoDB's Document model and its compatibility with Python dictionaries offer se ![](../../assets/images/rag-cohere-mongodb-4.png) ```python -documents = dataset_df.to_dict('records') +documents = dataset_df.to_dict("records") collection.insert_many(documents) print("Data ingestion into MongoDB completed") @@ -499,56 +516,57 @@ Common stages include: ```python def vector_search(user_query, collection): - """ - Perform a vector search in the MongoDB collection based on the user query. - - Args: - user_query (str): The user's query string. - collection (MongoCollection): The MongoDB collection to search. - - Returns: - list: A list of matching documents. - """ - - # Generate embedding for the user query - query_embedding = get_embedding(user_query, input_type="search_query") - - if query_embedding is None: - return "Invalid query or embedding generation failed." - - # Define the vector search pipeline - vector_search_stage = { - "$vectorSearch": { - "index": "vector_index", - "queryVector": query_embedding, - "path": "embedding", - "numCandidates": 150, # Number of candidate matches to consider - "limit": 5 # Return top 4 matches + """ + Perform a vector search in the MongoDB collection based on the user query. + + Args: + user_query (str): The user's query string. + collection (MongoCollection): The MongoDB collection to search. + + Returns: + list: A list of matching documents. + """ + + # Generate embedding for the user query + query_embedding = get_embedding( + user_query, input_type="search_query" + ) + + if query_embedding is None: + return "Invalid query or embedding generation failed." + + # Define the vector search pipeline + vector_search_stage = { + "$vectorSearch": { + "index": "vector_index", + "queryVector": query_embedding, + "path": "embedding", + "numCandidates": 150, # Number of candidate matches to consider + "limit": 5, # Return top 4 matches + } } - } - - unset_stage = { - "$unset": "embedding" # Exclude the 'embedding' field from the results - } - - project_stage = { - "$project": { - "_id": 0, # Exclude the _id field - "company": 1, # Include the plot field - "reports": 1, # Include the title field - "combined_attributes": 1, # Include the genres field - "score": { - "$meta": "vectorSearchScore" # Include the search score - } + + unset_stage = { + "$unset": "embedding" # Exclude the 'embedding' field from the results } - } - pipeline = [vector_search_stage, unset_stage, project_stage] + project_stage = { + "$project": { + "_id": 0, # Exclude the _id field + "company": 1, # Include the plot field + "reports": 1, # Include the title field + "combined_attributes": 1, # Include the genres field + "score": { + "$meta": "vectorSearchScore" # Include the search score + }, + } + } - # Execute the search - results = collection.aggregate(pipeline) - return list(results) + pipeline = [vector_search_stage, unset_stage, project_stage] + # Execute the search + results = collection.aggregate(pipeline) + return list(results) ``` ## Step 7: Add the Cohere Reranker @@ -557,7 +575,6 @@ Cohere rerank functions as a second stage search that can improve the precision ![](../../assets/images/rag-cohere-mongodb-6.png) ```python - def rerank_documents(query: str, documents, top_n: int = 3): # Perform reranking with Cohere ReRank Model try: @@ -566,26 +583,31 @@ def rerank_documents(query: str, documents, top_n: int = 3): query=query, documents=documents, top_n=top_n, - rank_fields=["company", "reports", "combined_attributes"] + rank_fields=["company", "reports", "combined_attributes"], ) # Extract the top reranked documents top_documents_after_rerank = [] for result in response.results: original_doc = documents[result.index] - top_documents_after_rerank.append({ - 'company': original_doc['company'], - 'combined_attributes': original_doc['combined_attributes'], - 'reports': original_doc['reports'], - 'vector_search_score': original_doc['score'], - 'relevance_score': result.relevance_score - }) + top_documents_after_rerank.append( + { + "company": original_doc["company"], + "combined_attributes": original_doc[ + "combined_attributes" + ], + "reports": original_doc["reports"], + "vector_search_score": original_doc["score"], + "relevance_score": result.relevance_score, + } + ) return top_documents_after_rerank except Exception as e: print(f"An error occurred during reranking: {e}") - return documents[:top_n] # Return top N documents without reranking + # Return top N documents without reranking + return documents[:top_n] ``` @@ -700,21 +722,22 @@ pd.DataFrame(reranked_documents).head() ```python def format_documents_for_chat(documents): - return [ - { - "company": doc['company'], - # "reports": doc['reports'], - "combined_attributes": doc['combined_attributes'] - } - for doc in documents - ] + return [ + { + "company": doc["company"], + # "reports": doc['reports'], + "combined_attributes": doc["combined_attributes"], + } + for doc in documents + ] + # Generating response with Cohere Command R response = co.chat( - message=query, - documents=format_documents_for_chat(reranked_documents), - model="command-r-plus", - temperature=0.3 + message=query, + documents=format_documents_for_chat(reranked_documents), + model="command-r-plus", + temperature=0.3, ) print("Final answer:") @@ -742,7 +765,7 @@ print(response.text) ```python for cite in response.citations: - print(cite) + print(cite) ``` ``` @@ -784,129 +807,176 @@ start=1465 end=1528 text='Attracting and retaining skilled talent in a competiti ```python from typing import Dict, Optional, List -class CohereChat: - def __init__(self, cohere_client, system: str = "", database: str = "cohere_chat", - main_collection: str = "main_collection", history_params: Optional[Dict[str, str]] = None): - self.co = cohere_client - self.system = system - self.history_params = history_params or {} +class CohereChat: - # Use the connection string from history_params - self.client = pymongo.MongoClient(self.history_params.get('connection_string', 'mongodb://localhost:27017/')) + def __init__( + self, + cohere_client, + system: str = "", + database: str = "cohere_chat", + main_collection: str = "main_collection", + history_params: Optional[Dict[str, str]] = None, + ): + self.co = cohere_client + self.system = system + self.history_params = history_params or {} + + # Use the connection string from history_params + self.client = pymongo.MongoClient( + self.history_params.get( + "connection_string", "mongodb://localhost:27017/" + ) + ) - # Use the database parameter - self.db = self.client[database] + # Use the database parameter + self.db = self.client[database] - # Use the main_collection parameter - self.main_collection = self.db[main_collection] + # Use the main_collection parameter + self.main_collection = self.db[main_collection] - # Use the history_collection from history_params, or default to "chat_history" - self.history_collection = self.db[self.history_params.get('history_collection', 'chat_history')] + # Use the history_collection from history_params, or default to "chat_history" + self.history_collection = self.db[ + self.history_params.get( + "history_collection", "chat_history" + ) + ] - # Use the session_id from history_params, or default to "default_session" - self.session_id = self.history_params.get('session_id', 'default_session') + # Use the session_id from history_params, or default to "default_session" + self.session_id = self.history_params.get( + "session_id", "default_session" + ) def add_to_history(self, message: str, prefix: str = ""): - self.history_collection.insert_one({ - 'session_id': self.session_id, - 'message': message, - 'prefix': prefix - }) + self.history_collection.insert_one( + { + "session_id": self.session_id, + "message": message, + "prefix": prefix, + } + ) def get_chat_history(self) -> List[Dict[str, str]]: - history = self.history_collection.find({'session_id': self.session_id}).sort('_id', 1) - return [{"role": "user" if item['prefix'] == "USER" else "chatbot", "message": item['message']} for item in history] - - def rerank_documents(self, query: str, documents: List[Dict], top_n: int = 3) -> List[Dict]: - rerank_docs = [ - { - 'company': doc['company'], - 'combined_attributes': doc['combined_attributes'] - } - for doc in documents - if doc['combined_attributes'].strip() - ] - - if not rerank_docs: - print("No valid documents to rerank.") - return [] - - try: - response = self.co.rerank( - query=query, - documents=rerank_docs, - top_n=top_n, - model="rerank-english-v3.0", - rank_fields=["company", "combined_attributes"] - ) - - top_documents_after_rerank = [ - { - 'company': rerank_docs[result.index]['company'], - 'combined_attributes': rerank_docs[result.index]['combined_attributes'], - 'relevance_score': result.relevance_score - } - for result in response.results - ] - - print(f"\nHere are the top {top_n} documents after rerank:") - for doc in top_documents_after_rerank: - print(f"== {doc['company']} (Relevance: {doc['relevance_score']:.4f})") - - return top_documents_after_rerank - - except Exception as e: - print(f"An error occurred during reranking: {e}") - return documents[:top_n] - - def format_documents_for_chat(self, documents: List[Dict]) -> List[Dict]: - return [ - { - "company": doc['company'], - "combined_attributes": doc['combined_attributes'] - } - for doc in documents - ] + history = self.history_collection.find( + {"session_id": self.session_id} + ).sort("_id", 1) + return [ + { + "role": ( + "user" if item["prefix"] == "USER" else "chatbot" + ), + "message": item["message"], + } + for item in history + ] + + def rerank_documents( + self, query: str, documents: List[Dict], top_n: int = 3 + ) -> List[Dict]: + rerank_docs = [ + { + "company": doc["company"], + "combined_attributes": doc["combined_attributes"], + } + for doc in documents + if doc["combined_attributes"].strip() + ] + + if not rerank_docs: + print("No valid documents to rerank.") + return [] + + try: + response = self.co.rerank( + query=query, + documents=rerank_docs, + top_n=top_n, + model="rerank-english-v3.0", + rank_fields=["company", "combined_attributes"], + ) + + top_documents_after_rerank = [ + { + "company": rerank_docs[result.index]["company"], + "combined_attributes": rerank_docs[result.index][ + "combined_attributes" + ], + "relevance_score": result.relevance_score, + } + for result in response.results + ] + + print( + f"\nHere are the top {top_n} documents after rerank:" + ) + for doc in top_documents_after_rerank: + print( + f"== {doc['company']} (Relevance: {doc['relevance_score']:.4f})" + ) + + return top_documents_after_rerank + + except Exception as e: + print(f"An error occurred during reranking: {e}") + return documents[:top_n] + + def format_documents_for_chat( + self, documents: List[Dict] + ) -> List[Dict]: + return [ + { + "company": doc["company"], + "combined_attributes": doc["combined_attributes"], + } + for doc in documents + ] def send_message(self, message: str, vector_search_func) -> str: - self.add_to_history(message, "USER") + self.add_to_history(message, "USER") - # Perform vector search - search_results = vector_search_func(message, self.main_collection) + # Perform vector search + search_results = vector_search_func( + message, self.main_collection + ) - # Rerank the search results - reranked_documents = self.rerank_documents(message, search_results) + # Rerank the search results + reranked_documents = self.rerank_documents( + message, search_results + ) - # Format documents for chat - formatted_documents = self.format_documents_for_chat(reranked_documents) + # Format documents for chat + formatted_documents = self.format_documents_for_chat( + reranked_documents + ) - # Generate response using Cohere chat - response = self.co.chat( - chat_history=self.get_chat_history(), - message=message, - documents=formatted_documents, - model="command-r-plus", - temperature=0.3 - ) + # Generate response using Cohere chat + response = self.co.chat( + chat_history=self.get_chat_history(), + message=message, + documents=formatted_documents, + model="command-r-plus", + temperature=0.3, + ) - result = response.text - self.add_to_history(result, "CHATBOT") + result = response.text + self.add_to_history(result, "CHATBOT") - print("Final answer:") - print(result) + print("Final answer:") + print(result) - print("\nCitations:") - for cite in response.citations: - print(cite) + print("\nCitations:") + for cite in response.citations: + print(cite) - return result + return result def show_history(self): - history = self.history_collection.find({'session_id': self.session_id}).sort('_id', 1) - for item in history: - print(f"{item['prefix']}: {item['message']}") - print("-------------------------") + history = self.history_collection.find( + {"session_id": self.session_id} + ).sort("_id", 1) + for item in history: + print(f"{item['prefix']}: {item['message']}") + print("-------------------------") ``` @@ -918,14 +988,16 @@ chat = CohereChat( database=DB_NAME, main_collection=COLLECTION_NAME, history_params={ - 'connection_string': MONGO_URI, - 'history_collection': "chat_history", - 'session_id': 2 - } + "connection_string": MONGO_URI, + "history_collection": "chat_history", + "session_id": 2, + }, ) # Send a message -response = chat.send_message("What is the best investment to make why?", vector_search) +response = chat.send_message( + "What is the best investment to make why?", vector_search +) ``` ``` diff --git a/fern/pages/cookbooks/rerank-demo.mdx b/fern/pages/cookbooks/rerank-demo.mdx index 35d0d96d..e654dd82 100644 --- a/fern/pages/cookbooks/rerank-demo.mdx +++ b/fern/pages/cookbooks/rerank-demo.mdx @@ -3,7 +3,7 @@ title: Demo of Rerank slug: /page/rerank-demo description: "This page contains a basic tutorial on how Cohere's ReRank models work and how to use them." -image: "../../assets/images/f1cc130-cohere_meta_image.jpg" +image: "../../assets/images/f1cc130-cohere_meta_image.jpg" keywords: "Cohere, ReRank" --- @@ -70,7 +70,7 @@ docs = [ "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", "West Virginia is a state in the Appalachian region of the United States. Its capital and largest city is Charleston. It is often abbreviated W. Va. or simply WV.", - "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", + "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", "North Dakota is a state in the United States. 672,591 people lived in North Dakota in the year 2010. The capital and seat of government is Bismarck.", "Kentucky is a state in the United States. Its capital is Frankfort. It touches the states of Missouri (by the Mississippi River), Illinois, Indiana, Ohio, West Virginia (by the Ohio River), Tennessee and Virginia. There are many rivers in Kentucky", "Micronesia, officially the Federated States of Micronesia, is an island nation in the Pacific Ocean, northeast of Papua New Guinea. The country is a sovereign state in free association with the United States. The capital city of Federated States of Micronesia is Palikir.", @@ -97,7 +97,7 @@ Relevance Score: 1.00 Document Rank: 2, Document Index: 5 -Document: Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. +Document: Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. Relevance Score: 0.75 @@ -246,7 +246,7 @@ search(query = "What is the capital of the United States?") ```txt title="Output" Input question: What is the capital of the United States? Top-3 lexical search (BM25) hits - 16.264 Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. + 16.264 Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. 15.124 In 1783, it was the capital of the United States for a few months. 14.476 New York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital. diff --git a/fern/pages/cookbooks/sql-agent-cohere-langchain.mdx b/fern/pages/cookbooks/sql-agent-cohere-langchain.mdx new file mode 100644 index 00000000..da48e945 --- /dev/null +++ b/fern/pages/cookbooks/sql-agent-cohere-langchain.mdx @@ -0,0 +1,591 @@ +--- +title: SQL Agent with Cohere and LangChain (i-5O Case Study) +slug: /page/sql-agent-cohere-langchain + +description: "This page contains a tutorial on how to build a SQL agent with Cohere and LangChain in the manufacturing industry." +image: "../../assets/images/f1cc130-cohere_meta_image.jpg" +keywords: "Cohere, automatic SQL generation, code generation, AI agents" +--- + +import { AuthorsContainer } from "../../components/authors-container"; +import { CookbookHeader } from "../../components/cookbook-header"; + + + +*This notebook was created in collaboration with [i-5O](https://i-5o.ai/)* + +This tutorial demonstrates how to create a SQL agent using Cohere and LangChain. The agent can translate natural language queries coming from users into SQL, and execute them against a database. This powerful combination allows for intuitive interaction with databases without requiring direct SQL knowledge. + +Key topics covered: +1. Setting up the necessary libraries and environment +2. Connecting to a SQLite database +3. Configuring the LangChain SQL Toolkit +4. Creating a custom prompt template with few-shot examples +5. Building and running the SQL agent + +By the end of this tutorial, you'll have a functional SQL agent that can answer questions about your data using natural language. + + +This tutorial uses a mocked up data of a manufacturing environment where a product item's production is tracked across multiple stations, allowing for analysis of production efficiency, station performance, and individual item progress through the manufacturing process. This is modelled after a real customer use case. + +The database contains two tables: +- The `product_tracking` table records the movement of items through different zones in manufacturing stations, including start and end times, station names, and product IDs. +- The `status` table logs the operational status of stations, including timestamps, station names, and whether they are productive or in downtime. + + +**Table of contents** +- [Import the required libraries](#toc1_1_) +- [Load the database](#toc1_2_) +- [Setup the LangChain SQL Toolkit](#toc1_3_) +- [Create a prompt template with few shot examples](#toc1_4_) +- [Create the agent](#toc1_5_) +- [Run the agent](#toc1_6_) + + +## [Import the required libraries](#toc0_) + +First, let's import the necessary libraries for creating a SQL agent using Cohere and LangChain. These libraries enable natural language interaction with databases and provide tools for building AI-powered agents. + + +```python PYTHON +import os + +os.environ["COHERE_API_KEY"] = "" +``` + + +```python PYTHON +! pip install faiss-gpu -qq +``` + + +```python PYTHON +! pip install langchain-core langchain-cohere langchain-community +``` + +```python PYTHON +from langchain.agents import AgentExecutor +from langchain_cohere import create_sql_agent +from langchain_core.prompts import ChatPromptTemplate +from langchain_cohere.chat_models import ChatCohere +from langchain_community.utilities.sql_database import SQLDatabase +from langchain_community.agent_toolkits import SQLDatabaseToolkit +from langchain_community.vectorstores import FAISS +from langchain_core.example_selectors import SemanticSimilarityExampleSelector +from langchain_cohere import CohereEmbeddings +from datetime import datetime, timedelta +import os +import json +``` + + +## [Load the database](#toc0_) + +Next, we load the database for our manufacturing data. + +We create an in-memory SQLite database using SQL scripts for the `product_tracking` and `status` tables. You can get the [SQL tables here](https://github.com/cohere-ai/notebooks/tree/main/notebooks/agents/i-5O-sql-agent). + +We then create a SQLDatabase instance, which will be used by our LangChain tools and agents to interact with the data. + + +```python PYTHON +import sqlite3 +import os + +from langchain_community.utilities.sql_database import SQLDatabase +from sqlalchemy import create_engine +from sqlalchemy.pool import StaticPool + +def get_engine_for_manufacturing_db(): + """Create an in-memory database with the manufacturing data tables.""" + connection = sqlite3.connect(":memory:", check_same_thread=False) + + # Read and execute the SQL scripts + for sql_file in ['product_tracking.sql', 'status.sql']: + with open(sql_file, 'r') as file: + sql_script = file.read() + connection.executescript(sql_script) + + return create_engine( + "sqlite://", + creator=lambda: connection, + poolclass=StaticPool, + connect_args={"check_same_thread": False}, + ) + +# Create the engine +engine = get_engine_for_manufacturing_db() + +# Create the SQLDatabase instance +db = SQLDatabase(engine) + +# Now you can use this db instance with your LangChain tools and agents +``` + + +```python PYTHON +# Test the connection +db.run("SELECT * FROM status LIMIT 5;") +``` + +``` +"[('2024-05-09 19:28:00', 'Canada/Toronto', '2024-05-09', '19', '28', 'stn3', 'downtime'), ('2024-04-21 06:57:00', 'Canada/Toronto', '2024-04-21', '6', '57', 'stn3', 'productive'), ('2024-04-11 23:52:00', 'Canada/Toronto', '2024-04-11', '23', '52', 'stn4', 'productive'), ('2024-04-03 21:52:00', 'Canada/Toronto', '2024-04-03', '21', '52', 'stn2', 'downtime'), ('2024-04-30 05:01:00', 'Canada/Toronto', '2024-04-30', '5', '1', 'stn4', 'productive')]" +``` + + + +```python PYTHON +# Test the connection +db.run("SELECT * FROM product_tracking LIMIT 5;") +``` + +``` +"[('2024-05-27 17:22:00', '2024-05-27 17:57:00', 'Canada/Toronto', '2024-05-27', '17', 'stn2', 'wip', '187', '35'), ('2024-04-26 15:56:00', '2024-04-26 17:56:00', 'Canada/Toronto', '2024-04-26', '15', 'stn4', 'wip', '299', '120'), ('2024-04-12 04:36:00', '2024-04-12 05:12:00', 'Canada/Toronto', '2024-04-12', '4', 'stn3', 'wip', '60', '36'), ('2024-04-19 15:15:00', '2024-04-19 15:22:00', 'Canada/Toronto', '2024-04-19', '15', 'stn4', 'wait', '227', '7'), ('2024-04-24 19:10:00', '2024-04-24 21:07:00', 'Canada/Toronto', '2024-04-24', '19', 'stn4', 'wait', '169', '117')]" +``` + + +## [Setup the LangChain SQL Toolkit](#toc0_) + +Next, we initialize the LangChain SQL Toolkit and sets up the language model to use Cohere's model. This prepares the necessary components for querying the SQL database using natural language. + + + +```python PYTHON +## Define model to use +import os + +MODEL="command-r-plus-08-2024" +llm = ChatCohere(model=MODEL, + temperature=0.1, + verbose=True, + cohere_api_key=os.getenv("COHERE_API_KEY")) + + +toolkit = SQLDatabaseToolkit(db=db, llm=llm) +context = toolkit.get_context() +tools = toolkit.get_tools() + +print('**List of pre-defined Langchain Tools**') +print([tool.name for tool in tools]) +``` +``` +**List of pre-defined Langchain Tools** +['sql_db_query', 'sql_db_schema', 'sql_db_list_tables', 'sql_db_query_checker'] +``` + +## [Create a prompt template with few shot examples](#toc0_) + +Next, we create a prompt template with few-shot examples. Few-shot examples are used to provide the model with context and improve its performance on specific tasks. In this case, we'll prepare examples of natural language queries and their corresponding SQL queries to help the model generate accurate SQL statements for our database. + +In this example, we use `SemanticSimilarityExampleSelector` to select the top k examples that are most similar to an input query out of all the examples available. + + +```python PYTHON +examples = [ + { + "input": "What was the average processing time for all stations on April 3rd 2024?", + "query": "SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND zone = 'wip' GROUP BY station_name ORDER BY station_name;", + }, + { + "input": "What was the average processing time for all stations on April 3rd 2024 between 4pm and 6pm?", + "query": "SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND CAST(hour AS INTEGER) BETWEEN 16 AND 18 AND zone = 'wip' GROUP BY station_name ORDER BY station_name;", + }, + { + "input": "What was the average processing time for stn4 on April 3rd 2024?", + "query": "SELECT AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND station_name = 'stn4' AND zone = 'wip';", + }, + { + "input": "How much downtime did stn2 have on April 3rd 2024?", + "query": "SELECT COUNT(*) AS downtime_count FROM status WHERE date = '2024-04-03' AND station_name = 'stn2' AND station_status = 'downtime';", + }, + { + "input": "What were the productive time and downtime numbers for all stations on April 3rd 2024?", + "query": "SELECT station_name, station_status, COUNT(*) as total_time FROM status WHERE date = '2024-04-03' GROUP BY station_name, station_status;", + }, + { + "input": "What was the bottleneck station on April 3rd 2024?", + "query": "SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND zone = 'wip' GROUP BY station_name ORDER BY avg_processing_time DESC LIMIT 1;", + }, + { + "input": "Which percentage of the time was stn5 down in the last week of May?", + "query": "SELECT SUM(CASE WHEN station_status = 'downtime' THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS percentage_downtime FROM status WHERE station_name = 'stn5' AND date >= '2024-05-25' AND date <= '2024-05-31';", + }, +] +``` + + +```python PYTHON +example_selector = SemanticSimilarityExampleSelector.from_examples( + examples, + CohereEmbeddings(cohere_api_key=os.getenv("COHERE_API_KEY"), + model="embed-english-v3.0"), + FAISS, + k=5, + input_keys=["input"], +) +``` + + +```python PYTHON +from langchain_core.prompts import ( + ChatPromptTemplate, + FewShotPromptTemplate, + MessagesPlaceholder, + PromptTemplate, + SystemMessagePromptTemplate, +) + +system_prefix = """You are an agent designed to interact with a SQL database. +You are an expert at answering questions about manufacturing data. +Given an input question, create a syntactically correct {dialect} query to run, then look at the results of the query and return the answer. +Always start with checking the schema of the available tables. +Unless the user specifies a specific number of examples they wish to obtain, always limit your query to at most {top_k} results. +You can order the results by a relevant column to return the most interesting examples in the database. +Never query for all the columns from a specific table, only ask for the relevant columns given the question. +You have access to tools for interacting with the database. +Only use the given tools. Only use the information returned by the tools to construct your final answer. +You MUST double check your query before executing it. If you get an error while executing a query, rewrite the query and try again. + +DO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database. + +The current date is {date}. + +For questions regarding productive time, downtime, productive or productivity, use minutes as units. + +For questions regarding productive time, downtime, productive or productivity use the status table. + +For questions regarding processing time and average processing time, use minutes as units. + +For questions regarding bottlenecks, processing time and average processing time use the product_tracking table. + +If the question does not seem related to the database, just return "I don't know" as the answer. + +Here are some examples of user inputs and their corresponding SQL queries:""" + +few_shot_prompt = FewShotPromptTemplate( + example_selector=example_selector, + example_prompt=PromptTemplate.from_template( + "User input: {input}\nSQL query: {query}" + ), + input_variables=["input", "dialect", "top_k","date"], + prefix=system_prefix, + suffix="", +) +``` + + +```python PYTHON +full_prompt = ChatPromptTemplate.from_messages( + [ + SystemMessagePromptTemplate(prompt=few_shot_prompt), + ("human", "{input}"), + MessagesPlaceholder("agent_scratchpad"), + ] +) +``` + + +```python PYTHON +# Example formatted prompt +prompt_val = full_prompt.invoke( + { + "input": "What was the productive time for all stations today?", + "top_k": 5, + "dialect": "SQLite", + "date":datetime.now(), + "agent_scratchpad": [], + } +) +print(prompt_val.to_string()) +``` +``` +System: You are an agent designed to interact with a SQL database. +You are an expert at answering questions about manufacturing data. +Given an input question, create a syntactically correct SQLite query to run, then look at the results of the query and return the answer. +Always start with checking the schema of the available tables. +Unless the user specifies a specific number of examples they wish to obtain, always limit your query to at most 5 results. +You can order the results by a relevant column to return the most interesting examples in the database. +Never query for all the columns from a specific table, only ask for the relevant columns given the question. +You have access to tools for interacting with the database. +Only use the given tools. Only use the information returned by the tools to construct your final answer. +You MUST double check your query before executing it. If you get an error while executing a query, rewrite the query and try again. + +DO NOT make any DML statements (INSERT, UPDATE, DELETE, DROP etc.) to the database. + +The current date is 2024-10-10 09:40:22.052973. + +For questions regarding productive time, downtime, productive or productivity, use minutes as units. + +For questions regarding productive time, downtime, productive or productivity use the status table. + +For questions regarding processing time and average processing time, use minutes as units. + +For questions regarding bottlenecks, processing time and average processing time use the product_tracking table. + +If the question does not seem related to the database, just return "I don't know" as the answer. + +Here are some examples of user inputs and their corresponding SQL queries: + +User input: What were the productive time and downtime numbers for all stations on April 3rd 2024? +SQL query: SELECT station_name, station_status, COUNT(*) as total_time FROM status WHERE date = '2024-04-03' GROUP BY station_name, station_status; + +User input: What was the average processing time for all stations on April 3rd 2024? +SQL query: SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND zone = 'wip' GROUP BY station_name ORDER BY station_name; + +User input: What was the average processing time for all stations on April 3rd 2024 between 4pm and 6pm? +SQL query: SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND CAST(hour AS INTEGER) BETWEEN 16 AND 18 AND zone = 'wip' GROUP BY station_name ORDER BY station_name; + +User input: What was the bottleneck station on April 3rd 2024? +SQL query: SELECT station_name, AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND zone = 'wip' GROUP BY station_name ORDER BY avg_processing_time DESC LIMIT 1; + +User input: What was the average processing time for stn4 on April 3rd 2024? +SQL query: SELECT AVG(CAST(duration AS INTEGER)) AS avg_processing_time FROM product_tracking WHERE date = '2024-04-03' AND station_name = 'stn4' AND zone = 'wip'; +Human: What was the productive time for all stations today? +``` + +## [Create the agent](#toc0_) + +Next, we create an instance of the SQL agent using the LangChain framework, specifically using `create_sql_agent`. + +This agent will be capable of interpreting natural language queries, converting them into SQL queries, and executing them against our database. The agent uses the LLM we defined earlier, along with the SQL toolkit and the custom prompt we created. + + +```python PYTHON +agent = create_sql_agent( + llm=llm, + toolkit=toolkit, + prompt=full_prompt, + verbose=True +) +``` + +## [Run the agent](#toc0_) + +Now, we can run the agent and test it with a few different queries. + + +```python PYTHON +# %%time +output=agent.invoke({ + "input": "What was the total downtime for each station during the month of May 2024?", + "date": datetime.now() +}) +print(output['output']) + +# Answer: stn2: 1 minute(s), stn3: 2 minute(s)stn5: 4 minute(s) +``` + +``` +> Entering new Cohere SQL Agent Executor chain... + +Invoking: `sql_db_list_tables` with `{}` +responded: I will first check the schema of the available tables. Then, I will write and execute a query to find the total downtime for each station during the month of May 2024. + +product_tracking, status +Invoking: `sql_db_schema` with `{'table_names': 'product_tracking, status'}` +responded: I have found that the relevant tables are 'product_tracking' and 'status'. I will now check the schema of these tables. + + +CREATE TABLE product_tracking ( + timestamp_start TEXT, + timestamp_end TEXT, + timezone TEXT, + date TEXT, + hour TEXT, + station_name TEXT, + zone TEXT, + product_id TEXT, + duration TEXT +) + +/* +3 rows from product_tracking table: +timestamp_start timestamp_end timezone date hour station_name zone product_id duration +2024-05-27 17:22:00 2024-05-27 17:57:00 Canada/Toronto 2024-05-27 17 stn2 wip 187 35 +2024-04-26 15:56:00 2024-04-26 17:56:00 Canada/Toronto 2024-04-26 15 stn4 wip 299 120 +2024-04-12 04:36:00 2024-04-12 05:12:00 Canada/Toronto 2024-04-12 4 stn3 wip 60 36 +*/ + + +CREATE TABLE status ( + timestamp_event TEXT, + timezone TEXT, + date TEXT, + hour TEXT, + minute TEXT, + station_name TEXT, + station_status TEXT +) + +/* +3 rows from status table: +timestamp_event timezone date hour minute station_name station_status +2024-05-09 19:28:00 Canada/Toronto 2024-05-09 19 28 stn3 downtime +2024-04-21 06:57:00 Canada/Toronto 2024-04-21 6 57 stn3 productive +2024-04-11 23:52:00 Canada/Toronto 2024-04-11 23 52 stn4 productive +*/ +Invoking: `sql_db_query_checker` with `{'query': "SELECT station_name, COUNT(*) as total_downtime FROM status WHERE date LIKE '2024-05-%' AND station_status = 'downtime' GROUP BY station_name;"}` +responded: I have found that the 'status' table contains the 'station_name' and 'station_status' columns, which are relevant to the user's request. I will now write and execute a query to find the total downtime for each station during the month of May 2024. + +```sql +SELECT station_name, COUNT(*) as total_downtime FROM status WHERE date LIKE '2024-05-%' AND station_status = 'downtime' GROUP BY station_name; +``` +Invoking: `sql_db_query` with `{'query': "SELECT station_name, COUNT(*) as total_downtime FROM status WHERE date LIKE '2024-05-%' AND station_status = 'downtime' GROUP BY station_name;"}` +responded: I have checked the query and it is correct. I will now execute it. + +[('stn2', 1), ('stn3', 2), ('stn5', 4)]The total downtime for each station during the month of May 2024 was: + +| station_name | total_downtime | +|---|---| +| stn2 | 1 | +| stn3 | 2 | +| stn5 | 4 | + +> Finished chain. +The total downtime for each station during the month of May 2024 was: + +| station_name | total_downtime | +|---|---| +| stn2 | 1 | +| stn3 | 2 | +| stn5 | 4 | +``` + + +```python PYTHON +output=agent.invoke({ + "input": "What is the average processing duration at stn5 in the wip zone?", + "date": datetime.now() +}) +print(output['output']) + +# Answer: 39.17 minutes +``` +``` +> Entering new Cohere SQL Agent Executor chain... + +Invoking: `sql_db_list_tables` with `{}` +responded: I will first check the schema of the available tables. Then, I will write and execute a query to find the average processing duration at stn5 in the wip zone. + +product_tracking, status +Invoking: `sql_db_schema` with `{'table_names': 'product_tracking'}` +responded: The available tables are product_tracking and status. + +I will now write and execute a query to find the average processing duration at stn5 in the wip zone. + + +CREATE TABLE product_tracking ( + timestamp_start TEXT, + timestamp_end TEXT, + timezone TEXT, + date TEXT, + hour TEXT, + station_name TEXT, + zone TEXT, + product_id TEXT, + duration TEXT +) + +/* +3 rows from product_tracking table: +timestamp_start timestamp_end timezone date hour station_name zone product_id duration +2024-05-27 17:22:00 2024-05-27 17:57:00 Canada/Toronto 2024-05-27 17 stn2 wip 187 35 +2024-04-26 15:56:00 2024-04-26 17:56:00 Canada/Toronto 2024-04-26 15 stn4 wip 299 120 +2024-04-12 04:36:00 2024-04-12 05:12:00 Canada/Toronto 2024-04-12 4 stn3 wip 60 36 +*/ +Invoking: `sql_db_query_checker` with `{'query': "SELECT AVG(CAST(duration AS INTEGER)) AS avg_processing_duration FROM product_tracking WHERE station_name = 'stn5' AND zone = 'wip';"}` +responded: The available tables are product_tracking and status. + +I will now write and execute a query to find the average processing duration at stn5 in the wip zone. + +SELECT AVG(CAST(duration AS INTEGER)) AS avg_processing_duration FROM product_tracking WHERE station_name = 'stn5' AND zone = 'wip'; +Invoking: `sql_db_query` with `{'query': "SELECT AVG(CAST(duration AS INTEGER)) AS avg_processing_duration FROM product_tracking WHERE station_name = 'stn5' AND zone = 'wip';"}` +responded: The available tables are product_tracking and status. + +I will now write and execute a query to find the average processing duration at stn5 in the wip zone. + +[(39.166666666666664,)]The average processing duration at stn5 in the wip zone is 39.17 minutes. + +> Finished chain. +The average processing duration at stn5 in the wip zone is 39.17 minutes. +``` + + +```python PYTHON +output=agent.invoke({ + "input": "Which station had the highest total duration in the wait zone?", + "date": datetime.now() +}) +print(output['output']) + +# Answer: stn4 - 251 minutes + +``` + +``` +> Entering new Cohere SQL Agent Executor chain... + +Invoking: `sql_db_list_tables` with `{}` +responded: I will first check the schema of the available tables. Then I will write and execute a query to find the station with the highest total duration in the wait zone. + +product_tracking, status +Invoking: `sql_db_schema` with `{'table_names': 'product_tracking, status'}` +responded: I have found that the relevant tables are product_tracking and status. I will now write and execute a query to find the station with the highest total duration in the wait zone. + + +CREATE TABLE product_tracking ( + timestamp_start TEXT, + timestamp_end TEXT, + timezone TEXT, + date TEXT, + hour TEXT, + station_name TEXT, + zone TEXT, + product_id TEXT, + duration TEXT +) + +/* +3 rows from product_tracking table: +timestamp_start timestamp_end timezone date hour station_name zone product_id duration +2024-05-27 17:22:00 2024-05-27 17:57:00 Canada/Toronto 2024-05-27 17 stn2 wip 187 35 +2024-04-26 15:56:00 2024-04-26 17:56:00 Canada/Toronto 2024-04-26 15 stn4 wip 299 120 +2024-04-12 04:36:00 2024-04-12 05:12:00 Canada/Toronto 2024-04-12 4 stn3 wip 60 36 +*/ + + +CREATE TABLE status ( + timestamp_event TEXT, + timezone TEXT, + date TEXT, + hour TEXT, + minute TEXT, + station_name TEXT, + station_status TEXT +) + +/* +3 rows from status table: +timestamp_event timezone date hour minute station_name station_status +2024-05-09 19:28:00 Canada/Toronto 2024-05-09 19 28 stn3 downtime +2024-04-21 06:57:00 Canada/Toronto 2024-04-21 6 57 stn3 productive +2024-04-11 23:52:00 Canada/Toronto 2024-04-11 23 52 stn4 productive +*/ +Invoking: `sql_db_query_checker` with `{'query': "SELECT station_name, SUM(CAST(duration AS INTEGER)) AS total_duration FROM product_tracking WHERE zone = 'wait' GROUP BY station_name ORDER BY total_duration DESC LIMIT 1;"}` +responded: I have found that the relevant columns are zone and duration in the product_tracking table. I will now write and execute a query to find the station with the highest total duration in the wait zone. + +```sql +SELECT station_name, SUM(CAST(duration AS INTEGER)) AS total_duration FROM product_tracking WHERE zone = 'wait' GROUP BY station_name ORDER BY total_duration DESC LIMIT 1; +``` +Invoking: `sql_db_query` with `{'query': "SELECT station_name, SUM(CAST(duration AS INTEGER)) AS total_duration FROM product_tracking WHERE zone = 'wait' GROUP BY station_name ORDER BY total_duration DESC LIMIT 1;"}` +responded: I have checked the query and it is correct. I will now execute it. + +[('stn4', 251)]The station with the highest total duration in the wait zone is stn4, with a total duration of 251 minutes. + +> Finished chain. +The station with the highest total duration in the wait zone is stn4, with a total duration of 251 minutes. +``` + +## Conclusion +This tutorial demonstrated how to create a SQL agent using Cohere and LangChain. The agent can translate natural language queries coming from users into SQL, and execute them against a database. This powerful combination allows for intuitive interaction with databases without requiring direct SQL knowledge. + diff --git a/fern/pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx b/fern/pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx index 9b2a475a..7252b484 100644 --- a/fern/pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx +++ b/fern/pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx @@ -100,6 +100,27 @@ result = co.chat(message="Write a LinkedIn post about starting a career in tech: print(result) ``` +## Access Via Amazon SageMaker Jumpstart + +Cohere's models are also available on Amazon SageMaker Jumpstart, which makes it easy to access the models with just a few clicks. + +To access Cohere's models on SageMaker Jumpstart, follow these steps: + +- In the AWS Console, go to Amazon SageMaker and click `Studio`. +- Then, click `Open Studio`. If you don't see this option, you first need to create a user profile. +- This will bring you to the SageMaker Studio page. Look for `Prebuilt and automated solutions` and select `JumpStart`. +- A list of models will appear. To look for Cohere models, type "cohere" in the search bar. +- Select any Cohere model and you will find details about the model and links to further resources. +- You can try out the model by going to the `Notebooks` tab, where you can launch the notebook in JupyterLab. + +If you have any questions about this process, reach out to support@cohere.com. + +## Optimize your Inference Latencies + +By default, SageMaker endpoints have a random routing strategy. This means that requests coming to the model endpoints are forwarded to the machine learning instances randomly, which can cause latency issues in applications focused on generative AI. In 2023, the SageMaker platform introduced a `RoutingStrategy` parameter allowing you to use the ‘least outstanding requests’ (LOR) approach to routing. With LOR, SageMaker monitors the load of the instances behind your endpoint as well as the models or inference components that are deployed on each instance, then optimally routes requests to the instance that is best suited to serve it. + +LOR has shown an improvement in latency under various conditions, and you can find more details [here](https://aws.amazon.com/blogs/machine-learning/minimize-real-time-inference-latency-by-using-amazon-sagemaker-routing-strategies/). + ## Next Steps With your selected configuration and Product ARN available, you now have everything you need to integrate with Cohere’s model offerings on SageMaker. diff --git a/fern/pages/deployment-options/cohere-on-microsoft-azure.mdx b/fern/pages/deployment-options/cohere-on-microsoft-azure.mdx index 7dfa1ad5..c469987a 100644 --- a/fern/pages/deployment-options/cohere-on-microsoft-azure.mdx +++ b/fern/pages/deployment-options/cohere-on-microsoft-azure.mdx @@ -13,7 +13,7 @@ updatedAt: "Wed May 01 2024 16:11:36 GMT+0000 (Coordinated Universal Time)" --- In an effort to make our language-model capabilities more widely available, we've partnered with a few major platforms to create hosted versions of our offerings. -In this article, you learn how to use [Azure AI Studio](https://ai.azure.com/) to deploy both the Cohere Command models and the Cohere Embed models on Microsoft's Azure cloud computing platform. +In this article, you learn how to use [Azure AI Foundry](https://ai.azure.com/) to deploy both the Cohere Command models and the Cohere Embed models on Microsoft's Azure cloud computing platform. You can read more about Azure AI Foundry in its documentation[here](https://learn.microsoft.com/en-us/azure/ai-studio/what-is-ai-studio). The following six models are available through Azure AI Studio with pay-as-you-go, token-based billing: @@ -22,7 +22,7 @@ The following six models are available through Azure AI Studio with pay-as-you-g - Embed v3 - English - Embed v3 - Multilingual - Cohere Rerank V3 (English) -- Cohere Rerank V3 (multilingual) +- Cohere Rerank V3 (Multilingual) ## Prerequisites @@ -140,7 +140,7 @@ except urllib.error.HTTPError as error: print(error.read().decode("utf8", "ignore")) ``` -## ReRank +## Rerank We currently exposes the `v1/rerank` endpoint for inference with both Rerank 3 - English and Rerank 3 - Multilingual. For more information on using the APIs, see the [reference](https://learn.microsoft.com/en-us/azure/ai-studio/how-to/deploy-models-cohere-rerank#rerank-api-reference-for-cohere-rerank-models-deployed-as-a-service) section. @@ -199,8 +199,97 @@ response = co.rerank( ) ``` -## A Note on SDKs +## Using the Cohere SDK -You should be aware that it's possible to use the cohere SDK client to consume Azure AI deployments. Here are example notes for [Command](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-cmdR.ipynb) and [Embed](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-embed.ipynb). +You can use the Cohere SDK client to consume Cohere models that are deployed via Azure AI Foundry. This means you can leverage the SDK's features such as RAG, tool use, structured outputs, and more. + +The following are a few examples on how to use the SDK for the different models. + +### Setup +```python PYTHON +# pip install cohere + +import cohere + +# For Command models +co_chat = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - https://Cohere-command-r-plus-08-2024-xyz.eastus.models.ai.azure.com/ +) + +# For Embed models +co_embed = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - hhttps://cohere-embed-v3-multilingual-xyz.eastus.models.ai.azure.com/ +) + +# For Rerank models +co_rerank = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - hhttps://cohere-rerank-v3-multilingual-xyz.eastus.models.ai.azure.com/ +) +``` + +### Chat +```python PYTHON +message = "I'm joining a new startup called Co1t today. Could you help me write a short introduction message to my teammates." + +response = co_chat.chat(message=message) + +print(response) +``` +### RAG +```python PYTHON +faqs_short = [ + { + "text": "Reimbursing Travel Expenses: Easily manage your travel expenses by submitting them through our finance tool. Approvals are prompt and straightforward." + }, + { + "text": "Health and Wellness Benefits: We care about your well-being and offer gym memberships, on-site yoga classes, and comprehensive health insurance." + }, +] + +query = "Are there fitness-related perks?" + +response = co_chat.chat(message=query, documents=faqs_short) + +print(response) +``` + +### Embed +```python PYTHON +docs = [ + "Joining Slack Channels: You will receive an invite via email. Be sure to join relevant channels to stay informed and engaged.", + "Finding Coffee Spots: For your caffeine fix, head to the break room's coffee machine or cross the street to the café for artisan coffee.", +] + +doc_emb = co_embed.embed( + input_type="search_document", + texts=docs, +).embeddings +``` + +### Rerank +```python PYTHON +faqs_short = [ + { + "text": "Reimbursing Travel Expenses: Easily manage your travel expenses by submitting them through our finance tool. Approvals are prompt and straightforward." + }, + { + "text": "Working from Abroad: Working remotely from another country is possible. Simply coordinate with your manager and ensure your availability during core hours." + }, + { + "text": "Health and Wellness Benefits: We care about your well-being and offer gym memberships, on-site yoga classes, and comprehensive health insurance." + }, +] + +query = "Are there fitness-related perks?" + +results = co_rerank.rerank( + query=query, documents=faqs_short, top_n=2, model="rerank-english-v3.0" +) +``` + +Here are some other examples for [Command](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-cmdR.ipynb) and [Embed](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-embed.ipynb). The important thing to understand is that our new and existing customers can call the models from Azure while still leveraging their integration with the Cohere SDK. diff --git a/fern/pages/deployment-options/cohere-works-everywhere.mdx b/fern/pages/deployment-options/cohere-works-everywhere.mdx index 1a96466c..205a794b 100644 --- a/fern/pages/deployment-options/cohere-works-everywhere.mdx +++ b/fern/pages/deployment-options/cohere-works-everywhere.mdx @@ -22,10 +22,10 @@ The table below summarizes the environments in which Cohere models can be deploy | sdk | [Cohere platform](/reference/about) | [Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere.html) | Sagemaker | Azure | OCI | Private Deployment | | ------------------------------------------------------------ | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------- | --------------------------- | -------------------------- | ------------------------------ | -| [Typescript](https://github.com/cohere-ai/cohere-typescript) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | -| [Python](https://github.com/cohere-ai/cohere-python) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | -| [Go](https://github.com/cohere-ai/cohere-go) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon](#) | [✅ docs](#cohere-platform) | -| [Java](https://github.com/cohere-ai/cohere-java) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | +| [Typescript](https://github.com/cohere-ai/cohere-typescript) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | +| [Python](https://github.com/cohere-ai/cohere-python) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | +| [Go](https://github.com/cohere-ai/cohere-go) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon](#) | [✅ docs](#private-deployment) | +| [Java](https://github.com/cohere-ai/cohere-java) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | ## Feature support @@ -161,6 +161,125 @@ public class ChatPost { ``` +#### Private Deployment + + +```typescript TS +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClient({ + token: '', + base_url='' +}); + +(async () => { + const response = await cohere.chat({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + console.log(response); +})(); +``` +```python PYTHON +import cohere + +co = cohere.Client(api_key="", + base_url="") + +response = co.chat( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], +) + +print(response) +``` +```go GO +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient( + client.WithBaseURL(""), + ) + + resp, err := co.Chat( + context.TODO(), + &cohere.ChatRequest{ + ChatHistory: []*cohere.ChatMessage{ + { + Role: cohere.ChatMessageRoleUser, + Message: "Who discovered gravity?", + }, + { + Role: cohere.ChatMessageRoleChatbot, + Message: "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }}, + Message: "What year was he born?", + Connectors: []*cohere.ChatConnector{ + {Id: "web-search"}, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} +``` +```java JAVA +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatRequest; +import com.cohere.api.types.ChatMessage; +import com.cohere.api.types.Message; +import com.cohere.api.types.NonStreamedChatResponse; + +import java.util.List; + + +public class ChatPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("Your API key").clientName("snippet").build(); + Cohere cohere = Cohere.builder().environment(Environment.custom("")).clientName("snippet").build(); + + NonStreamedChatResponse response = cohere.chat( + ChatRequest.builder() + .message("What year was he born?") + .chatHistory( + List.of(Message.user(ChatMessage.builder().message("Who discovered gravity?").build()), + Message.chatbot(ChatMessage.builder().message("The man who is widely credited with discovering gravity is Sir Isaac Newton").build()))).build()); + + System.out.println(response); + } +} +``` + + #### Bedrock diff --git a/fern/pages/deployment-options/oracle-cloud-infrastructure-oci.mdx b/fern/pages/deployment-options/oracle-cloud-infrastructure-oci.mdx index 7c0418d0..5e316f17 100644 --- a/fern/pages/deployment-options/oracle-cloud-infrastructure-oci.mdx +++ b/fern/pages/deployment-options/oracle-cloud-infrastructure-oci.mdx @@ -15,8 +15,6 @@ In an effort to make our language-model capabilities more widely available, we'v Here, you'll learn how to use Oracle Cloud Infrastructure (OCI) to deploy both the Cohere Command and the Cohere Embed models on the AWS cloud computing platform. The following models are available on OCI: -- Command -- Command light - Command R+ - Command R - Embed English v3 @@ -24,7 +22,9 @@ Here, you'll learn how to use Oracle Cloud Infrastructure (OCI) to deploy both t - Embed Multilingual v3 - Embed Multilingual v3 light -We also support fine-tuning for Command R, Command and Command light on OCI. +We also support fine-tuning for Command R (`command-r-04-2024` and `command-r-08-2024`) on OCI. + +For the most updated list of available models, see the [OCI documentation](https://docs.oracle.com/en-us/iaas/Content/generative-ai/pretrained-models.htm). ## Working With Cohere Models on OCI diff --git a/fern/pages/deployment-options/single-container-on-private-clouds.mdx b/fern/pages/deployment-options/single-container-on-private-clouds.mdx index 8f6a2ec6..ca8f9d44 100644 --- a/fern/pages/deployment-options/single-container-on-private-clouds.mdx +++ b/fern/pages/deployment-options/single-container-on-private-clouds.mdx @@ -59,7 +59,7 @@ Once you can pull the image from the registry, run a test workload to validate t To test the container image with Docker, you should have a machine with the following installed: -- Nvidia drivers installed on host (the latest tested version is 545). +- [Nvidia drivers](https://github.com/NVIDIA/open-gpu-kernel-modules) installed on host (the latest tested version is 545). - [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) and corresponding configuration for docker/containerd. #### Example Usage @@ -245,7 +245,7 @@ You'll note that final example includes documents that the Command model can use Deploying to Kubernetes requires nodes with the following installed: -- Nvidia drivers - latest tested version is currently 545. +- [Nvidia drivers](https://github.com/NVIDIA/open-gpu-kernel-modules) - latest tested version is currently 545. - [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) and corresponding configuration for docker/containerd. - [nvidia-device-plugin](https://github.com/NVIDIA/k8s-device-plugin) to make GPUs available to Kubernetes. diff --git a/fern/pages/fine-tuning/rerank-fine-tuning/rerank-understanding-the-results.mdx b/fern/pages/fine-tuning/rerank-fine-tuning/rerank-understanding-the-results.mdx index a47305d9..8a7930ab 100644 --- a/fern/pages/fine-tuning/rerank-fine-tuning/rerank-understanding-the-results.mdx +++ b/fern/pages/fine-tuning/rerank-fine-tuning/rerank-understanding-the-results.mdx @@ -34,7 +34,7 @@ MRR stands for [Mean Reciprocal Rank](https://en.wikipedia.org/wiki/Mean_recipr | QUERY | PASSAGES / DOCUMENTS | FIRST RELEVANT RESPONSE | RANK | RECIPROCAL RANK | | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ---- | --------------- | | When was George Washington born? | `{George Washington was born at Popes Creek in Westmoreland County, in the British colony of Virginia.,Washington, D.C., formally the District of Columbia and commonly called Washington or D.C., is the capital city of the United States., George Washington was born in 1732.}` | `George Washington was born in 1732.` | 3 | `1/3` | -| What is the capital of the United States? | `{Capital punishment (the death penalty) has existed in the United States since before the United States was a country. ,Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States.}` | `Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States` | 2 | `1/2` | +| What is the capital of the United States? | `{Capital punishment has existed in the United States since before the United States was a country. ,Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States.}` | `Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States` | 2 | `1/2` | Given these two samples we could calculate the mean reciprocal rank as `((1/3)+(1/2))/2=5/12`or 0.42. diff --git a/fern/pages/get-started/datasets.mdx b/fern/pages/get-started/datasets.mdx index 910d1854..0b492347 100644 --- a/fern/pages/get-started/datasets.mdx +++ b/fern/pages/get-started/datasets.mdx @@ -43,7 +43,8 @@ Import dependencies and set up the Cohere client. ```python PYTHON import cohere -co = cohere.Client(api_key='Your API key') + +co = cohere.Client(api_key="Your API key") ``` (All the rest of the examples on this page will be in Python, but you can find more detailed instructions for getting set up by checking out the Github repositories for [Python](https://github.com/cohere-ai/cohere-python), [Typescript](https://github.com/cohere-ai/cohere-typescript), and [Go](https://github.com/cohere-ai/cohere-go).) @@ -52,7 +53,7 @@ co = cohere.Client(api_key='Your API key') Datasets are created by uploading files, specifying both a `name` for the dataset and the dataset `type`. -The file extension and file contents have to match the requirements for the selected dataset `type`. See the table below to learn more about the supported dataset types. +The file extension and file contents have to match the requirements for the selected dataset `type`. See the [table below](#supported-dataset-types) to learn more about the supported dataset types. The dataset `name` is useful when browsing the datasets you've uploaded. In addition to its name, each dataset will also be assigned a unique `id` when it's created. @@ -60,9 +61,10 @@ Here is an example code snippet illustrating the process of creating a dataset, ```python PYTHON my_dataset = co.datasets.create( - name="shakespeare", - data=open("./shakespeare.jsonl", "rb"), - type="chat-finetune-input") + name="shakespeare", + data=open("./shakespeare.jsonl", "rb"), + type="chat-finetune-input", +) print(my_dataset.id) ``` @@ -101,7 +103,7 @@ The Dataset API will preserve metadata if specified at time of upload. During th #### Sample Dataset Input Format -```json JSON +```text JSONL {"wiki_id": 69407798, "url": "https://en.wikipedia.org/wiki?curid=69407798", "views": 5674.4492597435465, "langs": 38, "title": "Deaths in 2022", "text": "The following notable deaths occurred in 2022. Names are reported under the date of death, in alphabetical order. A typical entry reports information in the following sequence:", "paragraph_id": 0, "id": 0} {"wiki_id": 3524766, "url": "https://en.wikipedia.org/wiki?curid=3524766", "views": 5409.5609619796405, "title": "YouTube", "text": "YouTube is a global online video sharing and social media platform headquartered in San Bruno, California. It was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google, and is the second most visited website, after Google Search. YouTube has more than 2.5 billion monthly users who collectively watch more than one billion hours of videos each day. , videos were being uploaded at a rate of more than 500 hours of content per minute.", "paragraph_id": 0, "id": 1} ``` @@ -110,14 +112,14 @@ As seen in the above example, the following would be a valid `create_dataset` ca ```python PYTHON # Upload a dataset for embed jobs -ds=co.datasets.create( - name='sample_file', - # insert your file path here - you can upload it on the right - we accept .csv and jsonl files - data=open('embed_jobs_sample_data.jsonl', 'rb'), - keep_fields=['wiki_id','url','views','title'], - optional_fields=['langs'], - type="embed-input" - ) +ds = co.datasets.create( + name="sample_file", + # insert your file path here - you can upload it on the right - we accept .csv and jsonl files + data=open("embed_jobs_sample_data.jsonl", "rb"), + keep_fields=["wiki_id", "url", "views", "title"], + optional_fields=["langs"], + type="embed-input", +) # wait for the dataset to finish validation print(co.wait(ds)) @@ -132,23 +134,23 @@ In the example below, we will create a new dataset and upload an evaluation set ```python PYTHON # create a dataset my_dataset = co.datasets.create( - name="shakespeare", - type="chat-finetune-input", - data=open("./shakespeare.jsonl", "rb"), - eval_data=open("./shakespeare-eval.jsonl", "rb") + name="shakespeare", + type="chat-finetune-input", + data=open("./shakespeare.jsonl", "rb"), + eval_data=open("./shakespeare-eval.jsonl", "rb"), ) co.wait(my_dataset) # start training a custom model using the dataset co.finetuning.create_finetuned_model( - request=FinetunedModel( + request=FinetunedModel( name="shakespearean-model", settings=Settings( base_model=BaseModel( base_type="BASE_TYPE_CHAT", ), - dataset_id=my_dataset.id + dataset_id=my_dataset.id, ), ) ) @@ -175,11 +177,13 @@ Datasets of type `chat-finetune-input`, for example, are expected to have a json "role": "Chatbot", "content": "Time magazines top 10 cover stories in the last 10 years were:\\n\\n1. Volodymyr Zelenskyy\\n2. Elon Musk\\n3. Martin Luther King Jr.\\n4. How Earth Survived\\n5. Her Lasting Impact\\n6. Nothing to See Here\\n7. Meltdown\\n8. Deal With It\\n9. The Top of America\\n10. Bitter Pill" } + ] } ``` The following table describes the types of datasets supported by the Dataset API: +#### Supported Dataset Types | Dataset Type | Description | Schema | Rules | Task Type | Status | File Types Supported | Are Metadata Fields Supported? | Sample File | |----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|---------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `single-label-classification-finetune-input` | A file containing text and a single label (class) for each text | `text:string label:string` | You must include 40 valid train examples, with five examples per label. A label cannot be present in all examples There must be 24 valid evaluation examples. | Classification Fine-tuning | Supported | `csv` and `jsonl` | No | [Art classification file](https://drive.google.com/file/d/15-CchSiALUQwto4b-yAMWhdUqz8vfwQ1/view?usp=drive_link) | @@ -203,12 +207,16 @@ my_dataset = my_dataset_response.dataset # print each entry in the dataset for record in my_dataset: - print(record) + print(record) # save the dataset as jsonl -co.utils.save_dataset(dataset=my_dataset, filepath='./path/to/new/file.jsonl') +co.utils.save_dataset( + dataset=my_dataset, filepath="./path/to/new/file.jsonl" +) # or save the dataset as csv -co.utils.save_dataset(dataset=my_dataset, filepath='./path/to/new/file.csv') +co.utils.save_dataset( + dataset=my_dataset, filepath="./path/to/new/file.csv" +) ``` ### Deleting a dataset diff --git a/fern/pages/going-to-production/deprecations.mdx b/fern/pages/going-to-production/deprecations.mdx new file mode 100644 index 00000000..c3583486 --- /dev/null +++ b/fern/pages/going-to-production/deprecations.mdx @@ -0,0 +1,44 @@ +--- +title: Deprecations +slug: docs/deprecations +hidden: false +description: >- + Learn about Cohere's deprecation policies and recommended replacements +image: ../../assets/images/4f186df-cohere_docs_preview_image_1200x630_copy.jpg +keywords: 'Cohere API, large language models, generative AI' +createdAt: 'Wed Nov 27 2024 00:00:00 GMT+0000 (Coordinated Universal Time)' +updatedAt: 'Wed Nov 27 2024 00:00:00 GMT+0000 (Coordinated Universal Time)' +--- +Find information around deprecated endpoints and models with their recommended replacements. + +## Overview +As Cohere launches safer and more capable models, we will regularly retire old models. Applications relying on Cohere's models may need occasional updates to keep working. Impacted customers will always be notified via email and in our documentation along with blog posts. +This page lists all API deprecations, along with recommended replacements. + +Cohere uses the following terms to describe the lifecycle of our models: +- **Active:** The model and endpoint are fully supported and recommended for use. +- **Legacy:** The model and endpoints will no longer receive updates and may be deprecated in the future. +- **Deprecated:** The model and endpoints are no longer available to new customers but remain available to existing users until retirement. (An existing user is defined as anyone who has used the model or endpoint within 90 days of the deprecation announcement.) A shutdown date will be assigned at that time. +- **Shutdown:** The model and endpoint are no longer available for users. Requests to shutdown models and endpoints will fail. + +## Migrating to replacements +Once a model is deprecated, it is imperative to migrate all usage to a suitable replacement before the shutdown date. Requests to models and endpoints past the shutdown date will fail. +To ensure a smooth transition, we recommend thorough testing of your applications with the new models well before the shutdown date. If your team requires assistance, do not hesitate to reach out to support@cohere.ai. + +## Deprecation History +All deprecations are listed below with the most recent announcements at the top. + +### 2024-12-02: Rerank v2.0 +On December 2nd, 2024, we announced the release of Rerank-v3.5 along with the deprecation of the Rerank-v2.0 model family. +Fine-tuned models created from these base models are not affected by this deprecation. + +| Shutdown Date| Deprecated Model| Deprecated Model Price| Recommended Replacement| +|--------------|-----------------|-----------------------|------------------------| +| 2025-03-31 | `rerank-english-v2.0` | $1.00 / 1K searches | `rerank-v3.5`| +| 2025-03-31 | `rerank-multilingual-v2.0` | $1.00 / 1K searches | `rerank-v3.5`| + +# Best Practices: +1. Regularly check our documentation for updates on announcements regarding the status of models. +2. Test applications with newer models well before the shutdown date of your current model. +3. Update any production code to use an active model as soon as possible. +4. Contact support@cohere.ai if you need any assistance with migration or have any questions. \ No newline at end of file diff --git a/fern/pages/integrations/cohere-and-langchain/chat-on-langchain.mdx b/fern/pages/integrations/cohere-and-langchain/chat-on-langchain.mdx index cadd73c1..651717bb 100644 --- a/fern/pages/integrations/cohere-and-langchain/chat-on-langchain.mdx +++ b/fern/pages/integrations/cohere-and-langchain/chat-on-langchain.mdx @@ -283,4 +283,14 @@ llm = ChatCohere(cohere_api_key="COHERE_API_KEY", chain = load_summarize_chain(llm, chain_type="stuff") chain.invoke({"input_documents": docs}) +``` + +### Using LangChain on Private Deployments + +You can use LangChain with privately deployed Cohere models. To use it, specify your model deployment URL in the `base_url` parameter. + +```python PYTHON +llm = ChatCohere(base_url=, + cohere_api_key="COHERE_API_KEY", + model="MODEL_NAME") ``` \ No newline at end of file diff --git a/fern/pages/integrations/cohere-and-langchain/embed-on-langchain.mdx b/fern/pages/integrations/cohere-and-langchain/embed-on-langchain.mdx index c341107f..47d2e82d 100644 --- a/fern/pages/integrations/cohere-and-langchain/embed-on-langchain.mdx +++ b/fern/pages/integrations/cohere-and-langchain/embed-on-langchain.mdx @@ -111,3 +111,12 @@ embeddings = BedrockEmbeddings( embeddings.embed_query("This is a content of the document") ``` +### Using LangChain on Private Deployments + +You can use LangChain with privately deployed Cohere models. To use it, specify your model deployment URL in the `base_url` parameter. + +```python PYTHON +llm = CohereEmbeddings(base_url=, + cohere_api_key="COHERE_API_KEY", + model="MODEL_NAME") +``` \ No newline at end of file diff --git a/fern/pages/integrations/cohere-and-langchain/rerank-on-langchain.mdx b/fern/pages/integrations/cohere-and-langchain/rerank-on-langchain.mdx index c62a7eb9..f6efd02f 100644 --- a/fern/pages/integrations/cohere-and-langchain/rerank-on-langchain.mdx +++ b/fern/pages/integrations/cohere-and-langchain/rerank-on-langchain.mdx @@ -84,3 +84,13 @@ citations = docs[-1].metadata['citations'] print("Citations:") print(citations) ``` + +### Using LangChain on Private Deployments + +You can use LangChain with privately deployed Cohere models. To use it, specify your model deployment URL in the `base_url` parameter. + +```python PYTHON +llm = CohereRerank(base_url=, + cohere_api_key="COHERE_API_KEY", + model="MODEL_NAME") +``` \ No newline at end of file diff --git a/fern/pages/models/aya.mdx b/fern/pages/models/aya.mdx new file mode 100644 index 00000000..5a98186c --- /dev/null +++ b/fern/pages/models/aya.mdx @@ -0,0 +1,73 @@ +--- +title: Aya Family of Models +slug: "docs/aya" +hidden: false +description: >- + Understand Cohere for AI's groundbreaking multilingual Aya models, which aim to bring many more languages into generative AI. +image: ../../assets/images/6c1b0e4-cohere_meta_image.jpg +keywords: 'Cohere AI, multilingual large language models, generative AI' +createdAt: 'Thu Nov 21 2024 14:18:00 MST (U.S. Mountain Time)' +updatedAt: '' +--- + +[Aya](https://cohere.com/research/aya) is a family of multilingual large language models that are designed to expand the number of languages covered by generative AI. Its 8-billion and 32-billion parameter “Expanse” offerings are optimized to perform well in these 23 languages: Arabic, Chinese (simplified & traditional), Czech, Dutch, English, French, German, Greek, Hebrew, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Persian, Polish, Portuguese, Romanian, Russian, Spanish, Turkish, Ukrainian, and Vietnamese. + +## Model Details +| Model Name | Description | Modality | Context Length | Maximum Output Tokens | Endpoints | +|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|----------------|-----------------------|------------------------------------------------------| +| `c4ai-aya-expanse-8b` | Aya Expanse is a highly performant 8B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | +| `c4ai-aya-expanse-32b` | Aya Expanse is a highly performant 32B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 128k | 4k | [Chat](/reference/chat) | + + +## How Can I Get Access to the Aya Models? +If you want to test Aya, you have three options. First (and simplest), you can use the [Cohere playground](https://dashboard.cohere.com/playground/chat) or [Hugging Face Space](https://huggingface.co/spaces/CohereForAI/aya_expanse) to play around with them and see what they’re capable of. + +Second, you can use the [Cohere Chat API](https://docs.cohere.com/v2/docs/chat-api) to work with Aya programmatically. Here’s a very lightweight example of using the Cohere SDK to create a Spanish-language tutor with Aya that tells a story with simple Spanish vocabulary (NOTE: you’ll need an API key to run this code, and if you haven’t installed the Cohere SDK you can do that with `pip install cohere`). + +```python PYTHON +import cohere +co=cohere.ClientV2() + +response=co.chat( + model='c4ai-aya-expanse-32b', + messages=[ + { + "role" : "user", + "content" : "Eres un gran profesor de español. ¿Puedes escribirme una historia que ilustre vocabulario sencillo en español?" + } + ] +) + +print(response.message.content[0].text) +``` + +And here’s an example output (remember: these models are stochastic, and what you see might look quite different). + +```python PYTHON +¡Claro! Aquí te presento una historia corta que utiliza vocabulario sencillo en español: + +**La aventura de María en el mercado** + +Era una mañana soleada y María, una joven curiosa, decidió explorar el mercado local de su pueblo. Al entrar, se encontró con un mundo lleno de colores y aromas fascinantes. + +En uno de los puestos, vio una montaña de frutas brillantes. Había manzanas rojas como la grana, naranjas naranjas como el atardecer, y plátanos amarillos como el sol. María eligió una manzana crujiente y le pidió al vendedor que le enseñara cómo pelar una naranja. + +Caminando por los pasillos, se topó con una señora que vendía flores. Las rosas rojas olían a dulce miel, y los claveles blancos parecían pequeñas nubes. María compró un ramo de margaritas para decorar su habitación. + +Más adelante, un señor amable ofrecía quesos de diferentes sabores. María probó un queso suave y cremoso que le encantó. También compró un poco de pan fresco para acompañarlo. + +En la sección de artesanías, encontró un artista que tallaba hermosos platos de madera. María admiró su trabajo y aprendió la palabra "tallar", que significaba dar forma a la madera con cuidado. + +Al final de su aventura, María se sintió feliz y orgullosa de haber descubierto tantas cosas nuevas. Había aprendido vocabulario relacionado con los colores, los sabores, las texturas y las artes. El mercado se había convertido en un lugar mágico donde la simplicidad de las palabras se unía a la riqueza de las experiencias. + +Espero que esta historia te sea útil para ilustrar vocabulario sencillo en español. ¡Puedes adaptar y expandir la trama según tus necesidades! +``` + +Finally, you can directly download the raw models for research purposes because Cohere For AI has released [Aya Expanse 8B](https://huggingface.co/CohereForAI/aya-expanse-8b) and [Aya Expanse 32B](https://huggingface.co/CohereForAI/aya-expanse-32b) as open-weight models, through HuggingFace. What’s more, the massively multilingual instruction data used for development of these models has been [made available](https://huggingface.co/datasets/CohereForAI/aya_collection) for download as well. + +## Find More +We hope you’ve found this as fascinating as we do! If you want to see more substantial projects you can check out these notebooks ([source](https://huggingface.co/CohereForAI/aya-expanse-32b)): + +- [Multilingual Writing Assistant](https://colab.research.google.com/drive/1SRLWQ0HdYN_NbRMVVUHTDXb-LSMZWF60) +- [AyaMCooking](https://colab.research.google.com/drive/1-cnn4LXYoZ4ARBpnsjQM3sU7egOL_fLB?usp=sharing) +- [Multilingual Question-Answering System](https://colab.research.google.com/drive/1bbB8hzyzCJbfMVjsZPeh4yNEALJFGNQy?usp=sharing) diff --git a/fern/pages/models/models.mdx b/fern/pages/models/models.mdx index 75de7478..d06af7e4 100644 --- a/fern/pages/models/models.mdx +++ b/fern/pages/models/models.mdx @@ -46,11 +46,11 @@ Command is Cohere's default generation model that takes a user instruction (or c | `command-r-03-2024` | Command R is an instruction-following conversational model that performs language tasks at a higher quality, more reliably, and with a longer context than previous models. It can be used for complex workflows like code generation, retrieval augmented generation (RAG), tool use, and agents. | Text | 128k | 4k | [Chat](/reference/chat) | | `command-r` | `command-r` is an alias for `command-r-03-2024`, so if you use `command-r` in the API, that's the model you're pointing to. | Text | 128k | 4k | [Chat](/reference/chat) | | `command` | An instruction-following conversational model that performs language tasks with high quality, more reliably and with a longer context than our base generative models. | Text | 4k | 4k | [Chat](/reference/chat),
[Summarize](/reference/summarize) | -| `command-nightly` | To reduce the time between major releases, we put out nightly versions of command models. For `command`, that is `command-nightly`.

Be advised that `command-nightly` is the latest, most experimental, and (possibly) unstable version of its default counterpart. Nightly releases are updated regularly, without warning, and are not recommended for production use. | Text | 128k | 128k | [Chat](/reference/chat) | +| `command-nightly` | To reduce the time between major releases, we put out nightly versions of command models. For `command`, that is `command-nightly`.

Be advised that `command-nightly` is the latest, most experimental, and (possibly) unstable version of its default counterpart. Nightly releases are updated regularly, without warning, and are not recommended for production use. | Text | 128k | 4k | [Chat](/reference/chat) | | `command-light` | A smaller, faster version of `command`. Almost as capable, but a lot faster. | Text | 4k | 4k | [Chat](/reference/chat),
[Summarize](/reference/summarize-2) | | `command-light-nightly` | To reduce the time between major releases, we put out nightly versions of command models. For `command-light`, that is `command-light-nightly`.

Be advised that `command-light-nightly` is the latest, most experimental, and (possibly) unstable version of its default counterpart. Nightly releases are updated regularly, without warning, and are not recommended for production use. | Text | 4k | 4k | [Chat](/reference/chat) | | `c4ai-aya-expanse-8b` | Aya Expanse is a highly performant 8B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | -| `c4ai-aya-expanse-32b` | Aya Expanse is a highly performant 32B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | +| `c4ai-aya-expanse-32b` | Aya Expanse is a highly performant 32B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 128k | 4k | [Chat](/reference/chat) | ### Using Command Models on Different Platforms @@ -106,11 +106,10 @@ The Rerank model can improve created models by re-organizing their results based | Model Name | Description | Modalities | Context Length | Endpoints | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------------|---------------------------- | +| `rerank-v3.5` | A model that allows for re-ranking English Language documents and semi-structured data (JSON). This model has a context length of 4096 tokens. | Text | 4k | [Rerank](/reference/rerank) | | `rerank-english-v3.0` | A model that allows for re-ranking English Language documents and semi-structured data (JSON). This model has a context length of 4096 tokens. | Text | 4k | [Rerank](/reference/rerank) | | `rerank-multilingual-v3.0` | A model for documents and semi-structure data (JSON) that are not in English. Supports the same languages as embed-multilingual-v3.0. This model has a context length of 4096 tokens. | Text | 4k | [Rerank](/reference/rerank) | -| | | | | | -| `rerank-english-v2.0` | A model that allows for re-ranking English language documents. | Text | 512 | [Rerank](/reference/rerank) | -| `rerank-multilingual-v2.0` | A model for documents that are not in English. Supports the same languages as `embed-multilingual-v3.0`. | Text | 512 | [Rerank](/reference/rerank) | + ### Using Rerank Models on Different Platforms @@ -118,10 +117,10 @@ In this table, we provide some important context for using Cohere Rerank models | Model Name | Amazon Bedrock Model ID | Amazon SageMaker | Azure AI Studio Model ID | Oracle OCI Generative AI Service | | :------------------------- | :---------------------- | :-------------------- | :----------------------- | :------------------------------- | -| `rerank-english-v3.0` | Not yet available | Unique per deployment | Not yet available | N/A | -| `rerank-multilingual-v3.0` | Not yet available | Unique per deployment | Not yet available | N/A | -| `rerank-english-v2.0` | N/A | N/A | N/A | N/A | -| `rerank-multilingual-v2.0` | N/A | N/A | N/A | N/A | +| `rerank-v3.5` | cohere.rerank-v3-5:0 | Unique per deployment | Not yet available | N/A | +| `rerank-english-v3.0` | N/A | Unique per deployment | Not yet available | N/A | +| `rerank-multilingual-v3.0` | N/A | Unique per deployment | Not yet available | N/A | +
diff --git a/fern/pages/models/rerank-2.mdx b/fern/pages/models/rerank-2.mdx index 1d07199c..9ae174a6 100644 --- a/fern/pages/models/rerank-2.mdx +++ b/fern/pages/models/rerank-2.mdx @@ -4,7 +4,7 @@ slug: "docs/rerank-2" hidden: false -description: "This page describes how Cohere's ReRank models work and how to use them." +description: "This page describes how Cohere's Rerank models work and how to use them." image: "../../assets/images/f1cc130-cohere_meta_image.jpg" keywords: "Cohere, language models, rerank models" @@ -13,13 +13,13 @@ updatedAt: "Mon Apr 08 2024 17:42:11 GMT+0000 (Coordinated Universal Time)" --- Rerank models sort text inputs by semantic relevance to a specified query. They are often used to sort search results returned from an existing search solution. Learn more about using Rerank in the [best practices guide](/docs/reranking-best-practices). -| Latest Model | Description | Modality | Max Tokens | Endpoints | -| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------|------------|-------------------| -| `rerank-english-v3.0` | A model that allows for re-ranking English Language documents and semi-structured data (JSON). This model has a context length of 4096 tokens. | Text | N/A | [Rerank](/reference/rerank) | -| `rerank-multilingual-v3.0` | A model for documents and semi-structure data (JSON) that are not in English. Supports the same languages as `embed-multilingual-v3.0`. This model has a context length of 4096 tokens.| Text | N/A | [Rerank](/reference/rerank) | -| `rerank-english-v2.0` | A model that allows for re-ranking English language documents. This model has a context length of 512 tokens. | Text | N/A | [Rerank](/reference/rerank) | -| `rerank-multilingual-v2.0` | A model for documents that are not in English. Supports the same languages as `embed-multilingual-v3.0`. This model has a context length of 512 tokens. | Text | N/A | [Rerank](/reference/rerank) | +| Latest Model | Description | Modality | Endpoints | +| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---------|-----------------------------| +| `rerank-v3.5` | A model for documents and semi-structured data (JSON). State-of-the-art performance in English and non-English languages; supports the same languages as embed-multilingual-v3.0. This model has a context length of 4096 tokens| Text | [Rerank](/reference/rerank) | +| `rerank-english-v3.0` | A model that allows for re-ranking English Language documents and semi-structured data (JSON). This model has a context length of 4096 tokens. | Text | [Rerank](/reference/rerank) | +| `rerank-multilingual-v3.0` | A model for documents and semi-structure data (JSON) that are not in English. Supports the same languages as `embed-multilingual-v3.0`. This model has a context length of 4096 tokens. | Text | [Rerank](/reference/rerank) | + -Rerank accepts full strings and than tokens, so the token limit works a little differently. Rerank will automatically chunk documents longer than 4096 tokens, and there is therefore no explicit limit to how long a document can be when using rerank. See our [best practice guide](/docs/reranking-best-practices) for more info about formatting documents for the Rerank endpoint. +For each document included in a request, Rerank combines the tokens from the query with the tokens from the document and the combined total counts toward the context limit for a single document. If the combined number of tokens from the query and a given document exceeds the model’s context length for a single document, the document will automatically get chunked and processed in multiple inferences. See our [best practice guide](/docs/reranking-best-practices) for more info about formatting documents for the Rerank endpoint. diff --git a/fern/pages/models/the-command-family-of-models/command-r.mdx b/fern/pages/models/the-command-family-of-models/command-r.mdx index 81d0efa8..6e35d2ba 100644 --- a/fern/pages/models/the-command-family-of-models/command-r.mdx +++ b/fern/pages/models/the-command-family-of-models/command-r.mdx @@ -25,8 +25,6 @@ For information on toxicity, safety, and using this model responsibly check out | `command-r-08-2024` | `command-r-08-2024` is an update of the Command R model, delivered in August 2024. | Text | 128k | 4k | [Chat](/reference/chat) | | | `command-r-03-2024` | Command R is an instruction-following conversational model that performs language tasks at a higher quality, more reliably, and with a longer context than previous models. It can be used for complex workflows like code generation, retrieval augmented generation (RAG), tool use, and agents. | Text | 128k | 4k | [Chat](/reference/chat) | | | `command-r` | `command-r` is an alias for `command-r-03-2024`, so if you use `command-r` in the API, that's the model you're pointing to. | Text | 128k | 4k | [Chat](/reference/chat) | | -| `c4ai-aya-expanse-8b` | Aya Expanse is a highly performant 8B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | -| `c4ai-aya-expanse-32b` | Aya Expanse is a highly performant 32B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | ## Command R August 2024 Release Cohere's flagship text-generation models, Command R and Command R+, received a substantial update in August 2024. We chose to designate these models with time stamps, so in the API Command R 08-2024 is accesible with `command-r-08-2024`. diff --git a/fern/pages/responsible-use/responsible-use.mdx b/fern/pages/responsible-use/responsible-use.mdx index c18e0c88..0edf882c 100644 --- a/fern/pages/responsible-use/responsible-use.mdx +++ b/fern/pages/responsible-use/responsible-use.mdx @@ -2,10 +2,10 @@ title: "Command R and Command R+ Model Card" slug: "docs/responsible-use" -hidden: false -description: This doc provides guidelines for using Cohere generation models ethically and constructively. +hidden: false +description: This doc provides guidelines for using Cohere generation models ethically and constructively. -image: "../../assets/images/5d25315-cohere_docs_preview_image_1200x630_copy.jpg" +image: "../../assets/images/5d25315-cohere_docs_preview_image_1200x630_copy.jpg" keywords: "AI safety, AI risk, responsible AI" createdAt: "Thu Sep 01 2022 19:22:12 GMT+0000 (Coordinated Universal Time)" @@ -15,22 +15,22 @@ This documentation aims to guide developers in using language models constructiv [NOTE: This page was updated on October 31st, 2024.] -## Safety Benchmarks +## Safety Benchmarks -The safety of our Command R and Command R+ models has been evaluated on the BOLD (Biases in Open-ended Language Generation) dataset (Dhamala et al, 2021), which contains nearly 24,000 prompts testing for biases based on profession, gender, race, religion, and political ideology. +The safety of our Command R and Command R+ models has been evaluated on the BOLD (Biases in Open-ended Language Generation) dataset (Dhamala et al, 2021), which contains nearly 24,000 prompts testing for biases based on profession, gender, race, religion, and political ideology. -Overall, both models show a lack of bias, with generations that are very rarely toxic. That said, there remain some differences in bias between the two, as measured by their respective sentiment and regard for "Gender" and "Religion" categories. Command R+, the more powerful model, tends to display slightly less bias than Command R. +Overall, both models show a lack of bias, with generations that are very rarely toxic. That said, there remain some differences in bias between the two, as measured by their respective sentiment and regard for "Gender" and "Religion" categories. Command R+, the more powerful model, tends to display slightly less bias than Command R. -Below, we report differences in privileged vs. minoritised groups for gender, race, and religion. +Below, we report differences in privileged vs. minoritised groups for gender, race, and religion. ![](../../assets/images/responsible_use_1.png) -## Intended Use Cases +## Intended Use Cases Command R models are trained for sophisticated text generation—which can include natural text, summarization, code, and markdown—as well as to support complex [Retrieval Augmented Generation](https://docs.cohere.com/docs/retrieval-augmented-generation-rag) (RAG) and [tool-use](https://docs.cohere.com/docs/tool-use) tasks. Command R models support 23 languages, including 10 languages that are key to global business (English, French, Spanish, Italian, German, Portuguese, Japanese, Korean, Chinese, Arabic). While it has strong performance on these ten languages, the other 13 are lower-resource and less rigorously evaluated. -## Unintended and Prohibited Use Cases +## Unintended and Prohibited Use Cases We do not recommend using the Command R models on their own for decisions that could have a significant impact on individuals, including those related to access to financial services, employment, and housing. Cohere’s [Usage Guidelines](https://cohere.com/responsibility) and customer agreements contain details about prohibited use cases, like social scoring, inciting violence or harm, and misinformation or other political manipulation. @@ -52,15 +52,15 @@ We have put safeguards in place to avoid generating harmful text, and while they Language models capture problematic associations and stereotypes that are prominent on the internet and society at large. They should not be used to make decisions about individuals or the groups they belong to. For example, it can be dangerous to use Generation model outputs in CV ranking systems due to known biases (Nadeem et al., 2020). ## Technical Notes -Now, we'll discuss some details of our underlying models that should be kept in mind. +Now, we'll discuss some details of our underlying models that should be kept in mind. -### Language Limitations +### Language Limitations This model is designed to excel at English, French, Spanish, Italian, German, Portuguese, Japanese, Korean, Chinese, and Arabic, and to generate in 13 other languages well. It will sometimes respond in other languages, but the generations are unlikely to be reliable. -### Sampling Parameters +### Sampling Parameters A model's generation quality is highly dependent on its sampling parameters. Please consult [the documentation](https://docs.cohere.com/docs/advanced-generation-hyperparameters) for details about each parameter and tune the values used for your application. Parameters may require re-tuning upon a new model release. -### Prompt Engineering +### Prompt Engineering Performance quality on generation tasks may increase when examples are provided as part of the system prompt. See [the documentation](https://docs.cohere.com/docs/crafting-effective-prompts) for examples on how to do this. @@ -73,4 +73,4 @@ The examples in this section are not comprehensive; they are meant to be more mo by members of the public, on social media or any other channel. - **Generation of misinformation and other harmful content:** The generation of news or other articles which manipulate public opinion, or any content which aims to incite hate or mischaracterize a group of people. -- **Human-outside-the-loop:** The generation of text that could be used to make important decisions about people, without a human-in-the-loop. \ No newline at end of file +- **Human-outside-the-loop:** The generation of text that could be used to make important decisions about people, without a human-in-the-loop. \ No newline at end of file diff --git a/fern/pages/responsible-use/responsible-use/usage-guidelines.mdx b/fern/pages/responsible-use/responsible-use/usage-guidelines.mdx index 0b52f6c5..0aef38b0 100644 --- a/fern/pages/responsible-use/responsible-use/usage-guidelines.mdx +++ b/fern/pages/responsible-use/responsible-use/usage-guidelines.mdx @@ -1,6 +1,6 @@ --- -title: "Usage Guidelines" -slug: "docs/usage-guidelines" +title: "Usage Policy" +slug: "docs/usage-policy" hidden: true description: "Developers must outline and get approval for their use case to access the Cohere API, understanding the models and limitations. They should refer to model cards for detailed information and document potential harms of their application. Certain use cases, such as violence, hate speech, fraud, and privacy violations, are strictly prohibited." @@ -8,61 +8,39 @@ image: "../../../assets/images/da0a0ac-cohere_docs_preview_image_1200x630_copy.j keywords: "Cohere API" createdAt: "Thu Sep 01 2022 19:24:15 GMT+0000 (Coordinated Universal Time)" -updatedAt: "Tue Apr 02 2024 10:30:48 GMT+0000 (Coordinated Universal Time)" +updatedAt: "Fr Nov 29 2024 09::48 GMT+0000 (Coordinated Universal Time)" --- -To use our API, every developer must clearly outline their use case and have it approved by Cohere through our application process. The application requires thoroughly understanding our models and their limitations, which will change as the models improve. Beyond these Usage Guidelines, you should refer to the Generation and Representation model cards for detailed information about each model. +(This document was updated on 11/21/2024) -By understanding the language models that power our API endpoints, being aware of their limitations, and documenting your development practices, you can do great things with the Cohere Platform. +Our Usage Policy applies to all Cohere products and services, including Cohere models, software, applications, and application programming interface (collectively *“Cohere Services”*). -### 1\. Comprehend Cohere +The Usage Policy sets out universal requirements that apply to all users of the Cohere Services, and specific additional requirements that apply to users who create customer applications that integrate Cohere Services (each, a *“Customer Application”*). -(Qiu et al., 2020) describes the history, technical aspects, and applications of pre-trained language models like the ones which power the Cohere Platform. We recommend reading this survey and other language modeling research to learn what kinds of knowledge are encoded in language models and how to use their outputs responsibly in downstream tasks. +We may update this Usage Policy from time to time by posting an updated version on our website. -Language models might encode the following: +If we learn that you have violated this Usage Policy or are otherwise misusing or abusing Cohere Services, we are entitled to restrict, suspend, or terminate your access to the Cohere Services. If you become aware of a violation of this Usage Policy, including by any Outputs, please notify us immediately at safety@cohere.com. If you are using the Cohere Services in our SaaS Platform, you can also report issues by using the thumbs down button on an Output. “Outputs” means any information, text, image, audio or video content artificially created by Cohere Services. -- **Linguistic information** such as subject-verb agreement, part-of-speech, and other simple syntactic structures (Liu et al., 2019;Hewitt et al., 2019). -- **World knowledge,** including relational and commonsense knowledge such as where famous individuals were born or the color of the sky, limited by what is contained in the training data. -- **Social biases,** such as stereotypes common on the internet or in Western culture (May et al., 2019). +## Universal Requirements -### 2\. Document your Application +You must not use the Cohere Services to engage in, facilitate, or promote any of the following prohibited activities. Descriptions of prohibited activities are illustrative, not exhaustive. -We encourage careful consideration and documentation of the potential harms of any application developed using the Cohere Platform. If you build an application that uses model outputs, please provide your users a link to the corresponding model card, explaining how your application uses its output. For example, if you trained a downstream classifier using the `embed` endpoint, users should be provided with thorough documentation (such as model cards and data statements) of that classifier's training procedure and behavior. +- **Child Sexual Exploitation and Sexually Explicit Content Involving Minors**. Any activity that exploits, abuses, or endangers children, or otherwise compromises the safety of children; or any generation, creation, sharing, or facilitation of sexually explicit content involving minors, including pornographic content or content intended for sexual arousal or gratification. We will report child sexual abuse material that we become aware of to competent authorities and other organizations as appropriate. +- **Incitement of Violence or Harm.** Any use of the Cohere Services that (1) incites violence, threats, extremism, or terrorism; (2) glorifies or facilitates self-harm; (3) is sexually exploitative or abusive; (4) constitutes hate speech; or (5) promotes or glorifies racism, discrimination, hatred, or abuse, against any group or individual based on protected characteristics like race, ethnicity, national origin, religion, disability, sexual orientation, gender, or gender identity. +- **Illegal Activities.** Any illegal activity, or other violation of applicable law, including providing instructions on how to commit crimes, facilitating illegal activities or intentionally generating Outputs that may infringe, violate, or misappropriate the intellectual property rights of a third party. +- **Weapons and Controlled Substances.** Any activities that relate to the production, sale, trafficking, or marketing of weapons or controlled substances. +- **Compromising Privacy or Identity.** Violation of a person’s privacy rights or applicable privacy regulations, including unlawful access to or tracking of a person’s physical location; unlawful social scoring; real-time identification of a person or inference of emotions or protected characteristics of a person such as race or political opinions based on biometric data (including facial recognition); or other unauthorized access to personal information. +- **Compromising Security.** Use of the Cohere Services to (1) compromise security or attempt to gain unauthorized access to computer systems or networks; (2) generate or propagate spam or carry out phishing or social engineering campaigns; (3) create or process any viruses or other computer programming routines that may damage, detrimentally interfere with, surreptitiously intercept, or expropriate any system or data; or (4) otherwise violate the integrity, availability, or confidentiality of a user, network, computing device, communications system, or software application. +- **Surveillance and Predictive Policing.** Any activities involving illegal profiling or surveillance, including spyware or communications surveillance, untargeted scraping of facial images to create or expand a facial recognition database, or predictive policing, i.e., assessing or predicting the risks of a person committing a criminal offence. +- **Fraudulent, Abusive, Misleading, or Deceptive Practices.** Use of the Cohere Services to (1) generate inauthentic content representing real persons, places, entities, events, or objects that could falsely appear as authentic or truthful (so-called “deep fakes”) or as having been created by a human (e.g., fake reviews) in a manner that is misleading, deceiving or harmful to persons, groups, or entities; (2) engage in academic dishonesty; (3) deploy subliminal or purposefully deceptive techniques to distort behaviour or impair decision-making in a manner that is reasonably likely to cause significant harm; or (4) engage in deceptive or abusive practices that exploit vulnerabilities such as age, socio-economic status, or disability (e.g. misleading advertising, exploitative lending or debt collection practices, or high-pressure sales tactics). +- **Misinformation and Political Campaigning/Lobbying.** Creation or promotion of harmful misinformation and disinformation, including defamatory or libelous content and political propaganda; attempting to manipulate public opinion on issues such as health, safety, government policies, laws, or political campaigns or politicians; or deterring people from participating in or otherwise attempting to disrupt democratic processes, including misrepresenting voting processes or qualifications and discouraging voting. +- **Abusing Cohere Services.** Any activities that aim to (1) circumvent, disable or otherwise interfere with security, safety or technical features or protocols; (2) exploit a vulnerability; or (3) otherwise intentionally bypass restrictions of the Cohere Services, including through jailbreaking, prompt injection attacks, or automation to circumvent bans or usage limitations. +- **High Risk Activities.** Activities (1) where the use or failure of the Cohere Services could reasonably be expected to result in death, harm to psychological or physical health or safety, or severe environmental or property damage; or (2) that use the Cohere Services for automated determinations about individuals in domains that affect their rights, safety, or access to essential services and benefits (e.g., employment, education, healthcare, migration, housing, law enforcement, legal advice/decisions, or financial or insurance products or services). For the avoidance of doubt, backoffice uses (e.g., document summarization, transcription, internal knowledge agents, etc.) are not considered High Risk Activities under this Usage Policy. -### 3\. Understand and Prevent Disallowed Use Cases +## Customer Application Requirements -The Cohere Platform may not be used for any of the following purposes. The description for each disallowed use case is illustrative but **not exhaustive**; Cohere reserves the right to terminate access for harms which are not listed at our sole discretion. +You must ensure your Customer Application complies with the Universal Requirements of this Usage Policy and that users of your Customer Application understand and are required to comply with substantially similar requirements. -- **Violence and threats:** - - **Violence/Incitement**: Actions that threaten, encourage, or incite violence against anyone, directly or indirectly. - - **Self-harm**: Promoting or glorifying acts of self-harm, such as cutting, eating disorders like anorexia or bulimia, and suicide. - - **Sexual exploitation**: Promoting or celebrating sexual exploitation, including the sexualization of minors. - - **Hate speech**: Promoting hatred or glorifying abuse against people based on characteristics like race, ethnicity, national origin, religion, disability, disease, age, sexual orientation, gender, or gender identity. -- **Antisocial and antidemocratic uses:** - - **Harassment:** Bullying, threatening, shaming, or doxxing. - - **Insensitivity**: Belittling victims of serious physical or emotional harm (even if unintentional). - - **Intentional sowing of division**: Sharing of divisive generated content in order to turn a community against itself. - - **Harmful belief perpetuation**: Perpetuating racism, or sexism (even if unintentional). - - **Applications that aim to characterize identity:** Attempting to characterize gender, race, or ethnicity. - - **Graphic depictions**: Distribution of sexually explicit acts, torture, or abuse. - - **Political manipulation**: Attempting to influence political decisions, or opinions. -- **Deceit:** - - **Fraud**: Catfishing, phishing, or attempting to circumvent the law. - - **Spam**: Sending unsolicited email and messages, or manipulating search engines. - - **Misrepresentation**: Representing raw generations as coming from humans, using supervised generations with false identities, or a single person using generations with many identities that appear to be independent. - - **Misinformation**: Creating or promoting harmful false claims about government policies, or public figures, including applications founded on unscientific premises. -- **Attacks on security or privacy:** - - **Security breaches**: Spearphishing. - - **Privacy violations**: Model attacks to extract personal information. -- **Unsafe unsupervised uses:** - - **Social media**: Posting content to social platforms in an automated way. - - **No transparency**: Applications that do not disclose that the content is generated through automated means. -- **Decision-making**: - - AI-based social scoring for general purposes done by public authorities; using output toward larger decision-making systems that will influence actions, decisions, or policies without a human in the loop. - - **Classification of individuals**: Applications that classify and/or profile people based on protected characteristics, or infer those characteristics from text written about them or by them. -- **Other**: - - **Intentional manipulative redirection of attention**: Sharing positive generated content in order to direct attention away from harmful actions. - - **Plagiarism**: Tools that promote academic dishonesty. +If your Customer Application is public-facing and interacts with human users (including consumers), like chatbots and interactive AI agents, you must: (1) disclose to the users that they are interacting with an AI system rather than a human; and (2) if the Customer Application interacts with minors, comply with any specific child safety regulations and implement appropriate additional safety controls such as age verification and content moderation. -Usages which appear to violate our guidelines should be reported within 24 hours to Cohere by contacting us at [safety@cohere.ai](mailto:safety@cohere.ai). - -**Note about adversarial attacks:** Intentional stress testing of the API and adversarial attacks are allowable, but violative generations must be disclosed here, [reported immediately](https://ai8x92z50km.typeform.com/to/EI7d26j6#user_id=xxxxx&organization_id=xxxxx), and must not be used for any purpose except for documenting the result of such attacks in a responsible manner. +## Research Exceptions +Cohere encourages responsible security and safety research. Limited exceptions to our Usage Policy are possible for research purposes if specifically authorized by us or permitted in accordance with our Responsible Disclosure Policy applicable to security research. For safety-related research that falls outside the scope of our [Responsible Disclosure Policy](https://trustcenter.cohere.com/) or to report a model safety issue, please contact safety@cohere.com. diff --git a/fern/pages/text-embeddings/reranking/overview.mdx b/fern/pages/text-embeddings/reranking/overview.mdx index 243bcac5..b119737f 100644 --- a/fern/pages/text-embeddings/reranking/overview.mdx +++ b/fern/pages/text-embeddings/reranking/overview.mdx @@ -1,11 +1,11 @@ --- title: "Rerank Overview" -slug: "docs/overview" +slug: "docs/rerank-overview" hidden: false description: "This page describes how Cohere's Rerank models work." -image: "../../../assets/images/f1cc130-cohere_meta_image.jpg" +image: "../../../assets/images/f1cc130-cohere_meta_image.jpg" keywords: "Cohere, reranking models, large language models" createdAt: "Thu May 23 2024 04:39:27 GMT+0000 (Coordinated Universal Time)" @@ -13,13 +13,13 @@ updatedAt: "Thu May 30 2024 15:15:29 GMT+0000 (Coordinated Universal Time)" --- ## How Rerank Works -The [Rerank API endpoint](/reference/rerank-1), powered by the [Rerank models](/docs/rerank-2), is a simple and very powerful tool for semantic search. Given a `query` and a list of `documents`, Rerank indexes the documents from most to least semantically relevant to the query. +The [Rerank API endpoint](/reference/rerank-1), powered by the [Rerank models](/docs/rerank-2), is a simple and very powerful tool for semantic search. Given a `query` and a list of `documents`, Rerank indexes the documents from most to least semantically relevant to the query. ## Get Started ### Example with Texts -In the example below, we use the [Rerank API endpoint](/reference/rerank-1) to index the list of `docs` from most to least relevant to the query `"What is the capital of the United States?"`. +In the example below, we use the [Rerank API endpoint](/reference/rerank-1) to index the list of `documents` from most to least relevant to the query ` What is the capital of the United States?`. **Request** @@ -35,8 +35,8 @@ docs = [ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.", "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", - "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."] -results = co.rerank(model="rerank-english-v3.0", query=query, documents=docs, top_n=5, return_documents=True) + "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."] +results = co.rerank(model="rerank-v3.5", query=query, documents=docs, top_n=5, return_documents=True) ``` **Response** @@ -54,7 +54,7 @@ results = co.rerank(model="rerank-english-v3.0", query=query, documents=docs, to }, { "document": { - "text": "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment." + "text": "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment." }, "index": 4, "relevance_score": 0.7516481 @@ -102,77 +102,108 @@ Alternatively, you can pass in a JSON object and specify the fields you'd like t ```python PYTHON query = "What is the capital of the United States?" docs = [ - {"Title":"Facts about Carson City","Content":"Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274."}, - {"Title":"The Commonwealth of Northern Mariana Islands","Content":"The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan."}, - {"Title":"The Capital of United States Virgin Islands","Content":"Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas."}, - {"Title":"Washington D.C.","Content":"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America."}, - {"Title":"Capital Punishment in the US","Content":"Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."}] -results = co.rerank(model="rerank-english-v3.0", query=query, documents=docs, rank_fields=['Title','Content'],top_n=5, return_documents=True) + {"Title": "Facts about Carson City","Content": "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274."}, + {"Title": "The Commonwealth of Northern Mariana Islands","Content": "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan."}, + {"Title": "The Capital of United States Virgin Islands","Content": "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas."}, + {"Title": "Washington D.C.","Content":"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America."}, + {"Title": "Capital Punishment in the US","Content": "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."} + ] +results = co.rerank(model="rerank-v3.5", query=query, documents=docs, rank_fields=['Title','Content'],top_n=5, return_documents=True) ``` -In the `docs` parameter, we are passing in a list of objects which have the key values: `[Title ,Content]`. As part of the Rerank call, we are specifying which keys to rank over, as well as the order in which the key value pairs should be considered. +In the `docs` parameter, we are passing in a list of objects which have the key values: `['Title' ,'Content']`. As part of the Rerank call, we are specifying which keys to rank over, as well as the order in which the key value pairs should be considered. ```python PYTHON { - "id": "75a94aa7-6761-4a64-a2ae-4bc0a62bc601", - "results": [ - { - "document": { - "Content": "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", - "Title": "Washington D.C." - }, - "index": 3, - "relevance_score": 0.9987405 - }, - { - "document": { - "Content": "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", - "Title": "Capital Punishment in the US" - }, - "index": 4, - "relevance_score": 0.5011778 - }, - { - "document": { - "Content": "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", - "Title": "The Capital of United States Virgin Islands" - }, - "index": 2, - "relevance_score": 0.10070161 - }, - { - "document": { - "Content": "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.", - "Title": "The Commonwealth of Northern Mariana Islands" - }, - "index": 1, - "relevance_score": 0.03197956 - }, - { - "document": { - "Content": "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.", - "Title": "Facts about Carson City" - }, - "index": 0, - "relevance_score": 0.019456575 - } - ], - "meta": { - "api_version": { - "version": "2022-12-06" - }, - "billed_units": { - "search_units": 1 - } - } + id='e8f55f3f-d86e-47d7-9b24-7feb18286505', + results=[ + RerankResponseResultsItem( + document=RerankResponseResultsItemDocument( + text=None, + Content=( + 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) ' + 'is the capital of the United States. It is a federal district. The President of the USA and many major ' + 'national government offices are in the territory. This makes it the political center of the United States of America.' + ), + Title='Washington D.C.' + ), + index=3, + relevance_score=0.8914433 + ), + RerankResponseResultsItem( + document=RerankResponseResultsItemDocument( + text=None, + Content=( + 'Charlotte Amalie is the capital and largest city of the United States Virgin Islands. ' + 'It has about 20,000 people. The city is on the island of Saint Thomas.' + ), + Title='The Capital of United States Virgin Islands' + ), + index=2, + relevance_score=0.40344992 + ), + RerankResponseResultsItem( + document=RerankResponseResultsItemDocument( + text=None, + Content=( + 'Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, ' + 'Carson City had a population of 55,274.' + ), + Title='Facts about Carson City' + ), + index=0, + relevance_score=0.23343581 + ), + RerankResponseResultsItem( + document=RerankResponseResultsItemDocument( + text=None, + Content=( + 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that ' + 'are a political division controlled by the United States. Its capital is Saipan.' + ), + Title='The Commonwealth of Northern Mariana Islands' + ), + index=1, + relevance_score=0.15964958 + ), + RerankResponseResultsItem( + document=RerankResponseResultsItemDocument( + text=None, + Content=( + 'Capital punishment has existed in the United States since before the United States was a country. ' + 'As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) ' + 'also uses capital punishment.' + ), + Title='Capital Punishment in the US' + ), + index=4, + relevance_score=0.10465127 + ), + ], + meta=ApiMeta( + api_version=ApiMetaApiVersion( + version='1', + is_deprecated=None, + is_experimental=None + ), + billed_units=ApiMetaBilledUnits( + images=None, + input_tokens=None, + output_tokens=None, + search_units=1.0, + classifications=None + ), + tokens=None, + warnings=None + ) } ``` ## Multilingual Reranking -Cohere offers a multilingual model, `rerank-multilingual-v3.0`. Please note that performance may vary across languages. The model is trained on the following languages: +Cohere's `rerank-v3.5` and `rerank-multilingual-v3.0` models have been trained for performance across a variety of languages. Please note that performance may vary across languages. The model is trained on the following languages: | ISO Code | Language Name | | -------- | -------------- | diff --git a/fern/pages/text-embeddings/reranking/reranking-best-practices.mdx b/fern/pages/text-embeddings/reranking/reranking-best-practices.mdx index 5ec027ca..8fafdefc 100644 --- a/fern/pages/text-embeddings/reranking/reranking-best-practices.mdx +++ b/fern/pages/text-embeddings/reranking/reranking-best-practices.mdx @@ -11,72 +11,55 @@ updatedAt: 'Thu May 30 2024 15:16:00 GMT+0000 (Coordinated Universal Time)' --- ## Optimizing Performance -In the following two tables, you'll find recommendations for getting the best Rerank performance, organized by model family. +In the following table, you'll find recommendations for getting the best Rerank performance. -### Rerank-v3.0 +### Rerank-v3.5 and Rerank-v3.0 | Constraint | Minimum | Maximum | Default Value | | ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------- | :------------ | -| Number of Documents | 1 | 1000 | N/A | +| Number of Documents | 1 | 10,000 | N/A | | Max Number of Chunks | 1 | N/A | 1 | -| Number of Tokens per Document | 1 | N/A (see [below ](/docs/reranking-best-practices#document-chunking)for more info) | N/A | +| Number of Tokens per Document | 1 | N/A (see [below ](/docs/reranking-best-practices#document-chunking)for more info) | N/A | | Number of Tokens per Query | 1 | 2048 | N/A | -### Rerank-v2.0 - -| Constraint | Minimum | Maximum | Default Value | -| ----------------------------- | ------- | ------------------------------------------------------------------------------------------------------- | :------------ | -| Number of Documents | 1 | 10,000 | N/A | -| Max Number of Chunks | 1 | N/A | 10 | -| Number of Tokens per Document | 1 | N/A (see [below ](/docs/reranking-best-practices#document-chunking)for more info) | N/A | -| Number of Tokens per Query | 1 | 256 | N/A | - ## Document Chunking -For `rerank-v3.0`, the model breaks documents into 4094 token chunks. For example, if your query is 100 tokens and your document is 10,000 tokens, your document will be broken into the following chunks: +For `rerank-v3.5` and `rerank-v3.0`, the model breaks documents into 4093 token chunks. For example, if your query is 100 tokens and your document is 10,000 tokens, your document will be broken into the following chunks: -1. `relevance_score_1 = ` -2. `relevance_score_2 = ` -3. `relevance_score_3 = ` +1. `relevance_score_1 = ` +2. `relevance_score_2 = ` +3. `relevance_score_3 = ` 4. `relevance_score = max(relevance_score_1, relevance_score_2, relevance_score_3)` If you would like more control over how chunking is done, we recommend that you chunk your documents yourself. ## Max Number of Documents -### Rerank-v3.0 Models +When using `rerank-v3.5` and `rerank-v3.0` models, the endpoint will throw an error if the user attempts to pass more than 10,000 documents at a time. The maximum number of documents that can be passed to the endpoint is calculated with the following inequality: `Number of documents * max_chunks_per_doc >10,000`. -When using `rerank-v3.0` models, the endpoint will throw an error if the user tries to pass more than 1000 documents at a time. The maximum number of documents that can be passed to the endpoint is calculated with the following inequality: `Number of documents * max_chunks_per_doc >1000`. - -If `Number of documents * max_chunks_per_doc` exceeds `1000`, the endpoint will return an error. By default, the `max_chunks_per_doc` is set to `1` for `rerank-v3.0` models; given that the model has a context length of 4096, the maximum number of tokens for each call would be 4,096,000. - -### Rerank-v2.0 Models - -When using `rerank-v2.0`, the endpoint will throw an error if the user tries to pass more than 10,000 documents at a time. The maximum number of documents that can be passed to the endpoint is calculated with the following inequality: `Number of documents * max_chunks_per_doc >10,000`. - -If `Number of documents * max_chunks_per_doc` exceeds `10,000`, the endpoint will return an error. By default, the `max_chunks_per_doc` is set to `10` for `rerank-v2.0` models; given that the model has a context length of 512, the maximum number of tokens for each call would be 5,120,000. +If `Number of documents * max_chunks_per_doc` exceeds `10,000`, the endpoint will return an error. By default, the `max_chunks_per_doc` is set to `1` for `rerank` models. ## Queries -Our `rerank-v3.5` and `rerank-v3.0` models are trained with a context length of 4096 tokens. Both the input from the query and your documents are counted towards this limit, and the query can account for up to _half_ of this limit. On other words, if your query is larger than 2048 tokens, it will be truncated to the first 2048 tokens. +Our `rerank-v3.5` and `rerank-v3.0` models are trained with a context length of 4096 tokens. The model takes into account both the input from the query and document. If your query is larger than 2048 tokens, it will be truncated to the first 2048 tokens. ## Semi-Structured Data Support -Our `rerank-v3.0` models support semi-structured data reranking through a list of JSON objects. The `rank_fields` parameter will default to a field parameter called `text` unless otherwise specified. If the `rank_fields` parameter is unspecified _and_ none of your JSON objects have a `text` field, the endpoint will return an error. +Our `rerank-v3.5` and `rerank-v3.0` models support semi-structured data reranking through a list of JSON objects. The `rank_fields` parameter will default to a field parameter called `text` unless otherwise specified. If the `rank_fields` parameter is unspecified _and_ none of your JSON objects have a `text` field, the endpoint will return an error. ```json JSON [ { - "Title":"How to fix a dishwasher" - "Author":"John Smith" - "Date":"August 1st 2023" + "Title": "How to fix a dishwasher", + "Author": "John Smith", + "Date":"August 1st 2023", "Content": "Fixing a dishwasher depends on the specific problem you're facing. Here are some common issues and their potential solutions:...." }, { - "Title":"How to fix a leaky sink" - "Date":"July 25th 2024" + "Title": "How to fix a leaky sink", + "Date": "July 25th 2024", "Content": "Fixing a leaky sink will depend on the source of the leak. Here are general steps you can take to address common types of sink leaks:....." - },..... + } ] ``` @@ -86,11 +69,11 @@ Looking at the example above, passing in `rank_fields=["Title","Content"]` would The most important output from the [Rerank API endpoint](/reference/rerank-1) is the absolute rank exposed in the response object. The score is query dependent, and could be higher or lower depending on the query and passages sent in. In the example below, what matters is that Ottawa is more relevant than Toronto, but the user should not assume that Ottawa is two times more relevant than Ontario. -```python PYTHON -[ - RerankResult, - RerankResult, - RerankResult +``` +[ + RerankResult, + RerankResult, + RerankResult ] ``` diff --git a/fern/pages/text-generation/structured-outputs-json.mdx b/fern/pages/text-generation/structured-outputs.mdx similarity index 50% rename from fern/pages/text-generation/structured-outputs-json.mdx rename to fern/pages/text-generation/structured-outputs.mdx index 90ac5088..bab8d112 100644 --- a/fern/pages/text-generation/structured-outputs-json.mdx +++ b/fern/pages/text-generation/structured-outputs.mdx @@ -1,6 +1,6 @@ --- -title: "Structured Generations (JSON)" -slug: "docs/structured-outputs-json" +title: "Structured Outputs" +slug: "docs/structured-outputs" hidden: false @@ -12,15 +12,38 @@ createdAt: "Thu Jun 06 2024 05:37:56 GMT+0000 (Coordinated Universal Time)" updatedAt: "Tue Jun 11 2024 02:43:00 GMT+0000 (Coordinated Universal Time)" --- -Cohere models such as [Command R](/docs/command-r) and [Command R+](/docs/command-r-plus) are great at producing structured outputs in formats such as JSON. +## Overview -## Why generate JSON Objects using an LLM? +Structured Outputs is a feature for forcing the LLM's output to follow a specified format 100% of the time. This increases the reliability of LLM in enterprise applications where downstream applications expect the LLM output to be correctly formatted. By forcing the model to follow a structured schema, hallucinated fields and entries in structured data can be reliably eliminated. -JSON is a lightweight format that is easy for humans to read and write and is also easy for machines to parse. By generating JSON objects, you can structure and organize the model's responses in a way that can be used in downstream applications. This is particularly useful when you want to extract specific information from the responses, perform data analysis, or integrate the responses into your applications seamlessly. +Compatible models: +- Command R 08 2024 +- Command R +- Command R+ 08 2024 +- Command R+ -## How to use the `response_format` parameter +## How to Use Structured Outputs -When making an API request, you can specify the `response_format` parameter to indicate that you want the response in a JSON object format. +There are two ways to use Structured Outputs +- **Structured Outputs (JSON)**. This is primarily used in text generation use cases. +- **Structured Outputs (Tools)**. This is primarily used in tool use and agents use cases via function calling. + + +Structured Outputs with Tools are only supported in [Chat API V2](https://docs.cohere.com/reference/chat#request.body.strict_tools) via the `strict_tools` parameter. This parameter is not supported in Chat API V1. + + +### Structured Outputs (JSON) + +Here, you can call the Chat API to generate Structured Outputs in JSON format. JSON is a lightweight format that is easy for humans to read and write and is also easy for machines to parse. + +This is particularly useful in text generation use cases, for example, when you want to extract specific information from the responses, perform data analysis, or integrate the responses into your applications seamlessly. + +There are two ways of specifying the JSON output: +- JSON mode +- JSON Schema mode + +#### JSON mode +In JSON mode, when making an API request, you can specify the `response_format` parameter to indicate that you want the response in a JSON object format. ```python PYTHON import cohere @@ -35,22 +58,34 @@ res = co.chat( print(res.text) ``` -By setting the `response_format` type to `"json_object"` in the Chat API, the output of the model is guaranteed to be a valid JSON object. +By setting the `response_format` type to `"json_object"` in the Chat API, the output of the model is guaranteed to be a valid JSON object. - +``` +# Example response + +{ + "name": "Emma Johnson", + "age": 32 +} + +``` + + When using `{ "type": "json_object" }` your `message` should always explicitly instruct the model to generate a JSON (eg: _"Generate a JSON ..."_) . Otherwise the model may end up getting stuck generating an infinite stream of characters and eventually run out of context length. - + - -This feature is currently not supported in RAG and tool use scenarios. + +This feature is currently not supported in RAG mode. -## Specifying a schema (beta) +#### JSON Schema mode +In JSON Schema mode, you can optionally define a schema as part of the `response_format` parameter. A [JSON Schema](https://json-schema.org/specification) is a way to describe the structure of the JSON object you want the LLM to generate. -The `response_format` parameter also allows you to define a schema for the generated JSON object. A [JSON Schema](https://json-schema.org/specification) is a way to describe the structure of the JSON object you want the LLM to generate. This is optional, but it gives you more control over the response format. +This forces the LLM to stick to this schema, thus giving you greater control over the output. For example, let's say you want the LLM to generate a JSON object with specific keys for a book, such as "title," "author," and "publication_year." Your API request might look like this: + ```python PYTHON import cohere co = cohere.Client(api_key="YOUR API KEY") @@ -77,9 +112,33 @@ print(res.text) In this schema, we defined three keys ("title," "author," "publication_year") and their expected data types ("string" and "number"). The LLM will generate a JSON object that adheres to this structure. - -Specifying a `schema` adds even more latency, proportional to the complexity of the schema. This parameter is in **beta**, and will continue seeing performance improvements. - +``` +# Example response + +{ + "title": "The Great Gatsby", + "author": "F. Scott Fitzgerald", + "publication_year": 1925 +} + +``` + + +Note: Each schema provided will incur a latency overhead required for processing the schema. This is only applicable for the first few requests. + + +## Specifying a schema + +### Generating nested objects + +The model can be configured to output objects with up to 5 levels of nesting. When a `schema` is specified, there are no limitations on the levels of nesting. + +### Schema constraints + +When constructing a `schema` keep the following constraints in mind: + +- The `type` in the top level schema must be `object` +- Every object in the schema must have at least one `required` field specified ### Unsupported schema features @@ -88,7 +147,7 @@ We do not support the entirety of the [JSON Schema specification](https://json-s - [Schema Composition](https://json-schema.org/understanding-json-schema/reference/combining#schema-composition) (`anyOf`, `allOf`, `oneOf` and `not`) - [Numeric Ranges](https://json-schema.org/understanding-json-schema/reference/numeric#range) (`maximum` and `minimum`) - [Array Length Ranges](https://json-schema.org/understanding-json-schema/reference/array#length) (`minItems` and `maxItems`) -- String limitations: +- String limitations: - [String Length](https://json-schema.org/understanding-json-schema/reference/string#length) (`maxLength` and `minLength`) - The following are not supported in [Regular Expressions](https://json-schema.org/understanding-json-schema/reference/string#regexp) - `^` @@ -100,3 +159,6 @@ We do not support the entirety of the [JSON Schema specification](https://json-s - `uuid` - `date` - `time` +- Others: + - `uniqueItems` + - `additionalProperties` diff --git a/fern/pages/tutorials/build-things-with-cohere/rag-with-cohere.mdx b/fern/pages/tutorials/build-things-with-cohere/rag-with-cohere.mdx index a7f0af35..3ea3acd1 100644 --- a/fern/pages/tutorials/build-things-with-cohere/rag-with-cohere.mdx +++ b/fern/pages/tutorials/build-things-with-cohere/rag-with-cohere.mdx @@ -314,7 +314,7 @@ Document: {'text': 'Team-Building Activities: We foster team spirit with monthly Further reading: - [Rerank endpoint API reference](/reference/rerank) -- [Documentation on Rerank](/docs/overview) +- [Documentation on Rerank](/docs/rerank-overview) - [Documentation on Rerank fine-tuning](/docs/rerank-fine-tuning) - [Documentation on Rerank best practices](/docs/reranking-best-practices) diff --git a/fern/pages/tutorials/build-things-with-cohere/reranking-with-cohere.mdx b/fern/pages/tutorials/build-things-with-cohere/reranking-with-cohere.mdx index d3a7f274..f0ad5e22 100644 --- a/fern/pages/tutorials/build-things-with-cohere/reranking-with-cohere.mdx +++ b/fern/pages/tutorials/build-things-with-cohere/reranking-with-cohere.mdx @@ -99,7 +99,7 @@ Document: {'text': 'Performance Reviews Frequency: We conduct informal check-ins Further reading: - [Rerank endpoint API reference](/reference/rerank) -- [Documentation on Rerank](/docs/overview) +- [Documentation on Rerank](/docs/rerank-overview) - [Documentation on Rerank fine-tuning](/docs/rerank-fine-tuning) - [Documentation on Rerank best practices](/docs/reranking-best-practices) - [LLM University module on Text Representation](https://cohere.com/llmu#text-representation) diff --git a/fern/pages/tutorials/build-things-with-cohere/text-generation-tutorial.mdx b/fern/pages/tutorials/build-things-with-cohere/text-generation-tutorial.mdx index c23640d9..a3339038 100644 --- a/fern/pages/tutorials/build-things-with-cohere/text-generation-tutorial.mdx +++ b/fern/pages/tutorials/build-things-with-cohere/text-generation-tutorial.mdx @@ -251,7 +251,7 @@ print(json_object) Further reading: -- [Documentation on Structured Generations (JSON)](/docs/structured-outputs-json) +- [Documentation on Structured Outputs](/docs/structured-outputs) ## Streaming responses diff --git a/fern/pages/v2/deployment-options/cohere-on-aws/amazon-bedrock.mdx b/fern/pages/v2/deployment-options/cohere-on-aws/amazon-bedrock.mdx index 2afe5eee..204f688a 100644 --- a/fern/pages/v2/deployment-options/cohere-on-aws/amazon-bedrock.mdx +++ b/fern/pages/v2/deployment-options/cohere-on-aws/amazon-bedrock.mdx @@ -9,9 +9,9 @@ keywords: 'Cohere on AWS, language models on AWS, Amazon Bedrock, Amazon SageMak createdAt: 'Thu Feb 01 2024 18:08:37 GMT+0000 (Coordinated Universal Time)' updatedAt: 'Thu May 30 2024 16:00:53 GMT+0000 (Coordinated Universal Time)' --- - + The code examples in this section use the Cohere v1 API. The v2 API is not yet supported for cloud deployments and will be coming soon. - + In an effort to make our language-model capabilities more widely available, we've partnered with a few major platforms to create hosted versions of our offerings. Here, you'll learn how to use Amazon Bedrock to deploy both the Cohere Command and the Cohere Embed models on the AWS cloud computing platform. The following models are available on Bedrock: diff --git a/fern/pages/v2/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx b/fern/pages/v2/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx index 43e775d4..76f97392 100644 --- a/fern/pages/v2/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx +++ b/fern/pages/v2/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx @@ -10,9 +10,9 @@ keywords: "Amazon SageMaker, Generative AI on AWS" createdAt: "Wed Jun 28 2023 14:29:11 GMT+0000 (Coordinated Universal Time)" updatedAt: "Thu May 30 2024 16:01:40 GMT+0000 (Coordinated Universal Time)" --- - + The code examples in this section use the Cohere v1 API. The v2 API is not yet supported for cloud deployments and will be coming soon. - + In an effort to make our language-model capabilities more widely available, we've partnered with a few major platforms to create hosted versions of our offerings. This document will guide you through enabling development teams to access [Cohere’s offerings on Amazon SageMaker](https://aws.amazon.com/marketplace/seller-profile?id=87af0c85-6cf9-4ed8-bee0-b40ce65167e0). @@ -101,6 +101,27 @@ result = co.chat(message="Write a LinkedIn post about starting a career in tech: print(result) ``` +## Access Via Amazon SageMaker Jumpstart + +Cohere's models are also available on Amazon SageMaker Jumpstart, which makes it easy to access the models with just a few clicks. + +To access Cohere's models on SageMaker Jumpstart, follow these steps: + +- In the AWS Console, go to Amazon SageMaker and click `Studio`. +- Then, click `Open Studio`. If you don't see this option, you first need to create a user profile. +- This will bring you to the SageMaker Studio page. Look for `Prebuilt and automated solutions` and select `JumpStart`. +- A list of models will appear. To look for Cohere models, type "cohere" in the search bar. +- Select any Cohere model and you will find details about the model and links to further resources. +- You can try out the model by going to the `Notebooks` tab, where you can launch the notebook in JupyterLab. + +If you have any questions about this process, reach out to support@cohere.com. + +## Optimize your Inference Latencies + +By default, SageMaker endpoints have a random routing strategy. This means that requests coming to the model endpoints are forwarded to the machine learning instances randomly, which can cause latency issues in applications focused on generative AI. In 2023, the SageMaker platform introduced a `RoutingStrategy` parameter allowing you to use the ‘least outstanding requests’ (LOR) approach to routing. With LOR, SageMaker monitors the load of the instances behind your endpoint as well as the models or inference components that are deployed on each instance, then optimally routes requests to the instance that is best suited to serve it. + +LOR has shown an improvement in latency under various conditions, and you can find more details [here](https://aws.amazon.com/blogs/machine-learning/minimize-real-time-inference-latency-by-using-amazon-sagemaker-routing-strategies/). + ## Next Steps With your selected configuration and Product ARN available, you now have everything you need to integrate with Cohere’s model offerings on SageMaker. diff --git a/fern/pages/v2/deployment-options/cohere-on-microsoft-azure.mdx b/fern/pages/v2/deployment-options/cohere-on-microsoft-azure.mdx index 3e048a44..083552b0 100644 --- a/fern/pages/v2/deployment-options/cohere-on-microsoft-azure.mdx +++ b/fern/pages/v2/deployment-options/cohere-on-microsoft-azure.mdx @@ -11,9 +11,9 @@ keywords: "generative AI, large language models, Microsoft Azure" createdAt: "Mon Apr 08 2024 14:53:59 GMT+0000 (Coordinated Universal Time)" updatedAt: "Wed May 01 2024 16:11:36 GMT+0000 (Coordinated Universal Time)" --- - + The code examples in this section use the Cohere v1 API. The v2 API is not yet supported for cloud deployments and will be coming soon. - + In an effort to make our language-model capabilities more widely available, we've partnered with a few major platforms to create hosted versions of our offerings. @@ -202,8 +202,97 @@ response = co.rerank( ) ``` -## A Note on SDKs +## Using the Cohere SDK -You should be aware that it's possible to use the cohere SDK client to consume Azure AI deployments. Here are example notes for [Command](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-cmdR.ipynb) and [Embed](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-embed.ipynb). +You can use the Cohere SDK client to consume Cohere models that are deployed via Azure AI Foundry. This means you can leverage the SDK's features such as RAG, tool use, structured outputs, and more. + +The following are a few examples on how to use the SDK for the different models. + +### Setup +```python PYTHON +# pip install cohere + +import cohere + +# For Command models +co_chat = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - https://Cohere-command-r-plus-08-2024-xyz.eastus.models.ai.azure.com/ +) + +# For Embed models +co_embed = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - https://cohere-embed-v3-multilingual-xyz.eastus.models.ai.azure.com/ +) + +# For Rerank models +co_rerank = cohere.Client( + api_key="AZURE_INFERENCE_CREDENTIAL", + base_url="AZURE_MODEL_ENDPOINT", # Example - https://cohere-rerank-v3-multilingual-xyz.eastus.models.ai.azure.com/ +) +``` + +### Chat +```python PYTHON +message = "I'm joining a new startup called Co1t today. Could you help me write a short introduction message to my teammates." + +response = co_chat.chat(message=message) + +print(response) +``` +### RAG +```python PYTHON +faqs_short = [ + { + "text": "Reimbursing Travel Expenses: Easily manage your travel expenses by submitting them through our finance tool. Approvals are prompt and straightforward." + }, + { + "text": "Health and Wellness Benefits: We care about your well-being and offer gym memberships, on-site yoga classes, and comprehensive health insurance." + }, +] + +query = "Are there fitness-related perks?" + +response = co_chat.chat(message=query, documents=faqs_short) + +print(response) +``` + +### Embed +```python PYTHON +docs = [ + "Joining Slack Channels: You will receive an invite via email. Be sure to join relevant channels to stay informed and engaged.", + "Finding Coffee Spots: For your caffeine fix, head to the break room's coffee machine or cross the street to the café for artisan coffee.", +] + +doc_emb = co_embed.embed( + input_type="search_document", + texts=docs, +).embeddings +``` + +### Rerank +```python PYTHON +faqs_short = [ + { + "text": "Reimbursing Travel Expenses: Easily manage your travel expenses by submitting them through our finance tool. Approvals are prompt and straightforward." + }, + { + "text": "Working from Abroad: Working remotely from another country is possible. Simply coordinate with your manager and ensure your availability during core hours." + }, + { + "text": "Health and Wellness Benefits: We care about your well-being and offer gym memberships, on-site yoga classes, and comprehensive health insurance." + }, +] + +query = "Are there fitness-related perks?" + +results = co_rerank.rerank( + query=query, documents=faqs_short, top_n=2, model="rerank-english-v3.0" +) +``` + +Here are some other examples for [Command](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-cmdR.ipynb) and [Embed](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/cohere-embed.ipynb). The important thing to understand is that our new and existing customers can call the models from Azure while still leveraging their integration with the Cohere SDK. diff --git a/fern/pages/v2/deployment-options/cohere-works-everywhere.mdx b/fern/pages/v2/deployment-options/cohere-works-everywhere.mdx index fd441401..a880453b 100644 --- a/fern/pages/v2/deployment-options/cohere-works-everywhere.mdx +++ b/fern/pages/v2/deployment-options/cohere-works-everywhere.mdx @@ -12,10 +12,6 @@ createdAt: "Thu Jun 06 2024 10:53:49 GMT+0000 (Coordinated Universal Time)" updatedAt: "Tue Jun 18 2024 16:38:28 GMT+0000 (Coordinated Universal Time)" --- - -The code examples in this section use the Cohere v1 API. The v2 API is not yet supported for cloud deployments and will be coming soon. - - To maximize convenience in building on and switching between Cohere-supported environments, we have developed SDKs that seamlessly support whichever backend you choose. This allows you to start developing your project with one backend while maintaining the flexibility to switch, should the need arise. Note that the code snippets presented in this document should be more than enough to get you started, but if you end up switching from one environment to another there will be some small changes you need to make to how you import and initialize the SDK. @@ -24,12 +20,16 @@ Note that the code snippets presented in this document should be more than enoug The table below summarizes the environments in which Cohere models can be deployed. You'll notice it contains many links; the links in the "sdk" column take you to Github pages with more information on Cohere's language-specific SDKs, while all the others take you to relevant sections in this document. + +The Cohere v2 API is not yet supported for cloud deployments (Bedrock, SageMaker, Azure, and OCI) and will be coming soon. The code examples shown for these cloud deployments use the v1 API. + + | sdk | [Cohere platform](/reference/about) | [Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-cohere.html) | Sagemaker | Azure | OCI | Private Deployment | | ------------------------------------------------------------ | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------- | --------------------------- | -------------------------- | ------------------------------ | -| [Typescript](https://github.com/cohere-ai/cohere-typescript) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | -| [Python](https://github.com/cohere-ai/cohere-python) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | -| [Go](https://github.com/cohere-ai/cohere-go) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon](#) | [✅ docs](#cohere-platform) | -| [Java](https://github.com/cohere-ai/cohere-java) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#cohere-platform) | +| [Typescript](https://github.com/cohere-ai/cohere-typescript) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | +| [Python](https://github.com/cohere-ai/cohere-python) | [✅ docs](#cohere-platform) | [✅ docs](#bedrock) | [✅ docs](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | +| [Go](https://github.com/cohere-ai/cohere-go) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon](#) | [✅ docs](#private-deployment) | +| [Java](https://github.com/cohere-ai/cohere-java) | [✅ docs](#cohere-platform) | [🟠 soon](#bedrock) | [🟠 soon](#sagemaker) | [✅ docs](#azure) | [🟠 soon]() | [✅ docs](#private-deployment) | ## Feature support @@ -165,8 +165,131 @@ public class ChatPost { ```
+#### Private Deployment + + +```typescript TS +const { CohereClient } = require('cohere-ai'); + +const cohere = new CohereClientV2({ + token: '', + base_url='' +}); + +(async () => { + const response = await cohere.chat({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + console.log(response); +})(); +``` +```python PYTHON +import cohere + +co = cohere.ClientV2(api_key="", + base_url="") + +response = co.chat( + chat_history=[ + {"role": "USER", "message": "Who discovered gravity?"}, + { + "role": "CHATBOT", + "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }, + ], + message="What year was he born?", + # perform web search before answering the question. You can also use your own custom connector. + connectors=[{"id": "web-search"}], +) + +print(response) +``` +```go GO +package main + +import ( + "context" + "log" + + cohere "github.com/cohere-ai/cohere-go/v2" + client "github.com/cohere-ai/cohere-go/v2/client" +) + +func main() { + co := client.NewClient( + client.WithBaseURL(""), + ) + + resp, err := co.V2.Chat( + context.TODO(), + &cohere.ChatRequest{ + ChatHistory: []*cohere.ChatMessage{ + { + Role: cohere.ChatMessageRoleUser, + Message: "Who discovered gravity?", + }, + { + Role: cohere.ChatMessageRoleChatbot, + Message: "The man who is widely credited with discovering gravity is Sir Isaac Newton", + }}, + Message: "What year was he born?", + Connectors: []*cohere.ChatConnector{ + {Id: "web-search"}, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("%+v", resp) +} +``` +```java JAVA +import com.cohere.api.Cohere; +import com.cohere.api.requests.ChatRequest; +import com.cohere.api.types.ChatMessage; +import com.cohere.api.types.Message; +import com.cohere.api.types.NonStreamedChatResponse; + +import java.util.List; + + +public class ChatPost { + public static void main(String[] args) { + Cohere cohere = Cohere.builder().token("Your API key").clientName("snippet").build(); + Cohere cohere = Cohere.builder().environment(Environment.custom("")).clientName("snippet").build(); + + NonStreamedChatResponse response = cohere.v2.chat( + ChatRequest.builder() + .message("What year was he born?") + .chatHistory( + List.of(Message.user(ChatMessage.builder().message("Who discovered gravity?").build()), + Message.chatbot(ChatMessage.builder().message("The man who is widely credited with discovering gravity is Sir Isaac Newton").build()))).build()); + + System.out.println(response); + } +} +``` + + #### Bedrock + +Rerank v3.5 on Bedrock is only supported with Rerank API v2, via `BedrockClientV2()` + + ```typescript TS const { BedrockClient } = require('cohere-ai'); diff --git a/fern/pages/v2/fine-tuning/classify-fine-tuning/classify-starting-the-training.mdx b/fern/pages/v2/fine-tuning/classify-fine-tuning/classify-starting-the-training.mdx index 192c1d1b..2740cad8 100644 --- a/fern/pages/v2/fine-tuning/classify-fine-tuning/classify-starting-the-training.mdx +++ b/fern/pages/v2/fine-tuning/classify-fine-tuning/classify-starting-the-training.mdx @@ -1,5 +1,5 @@ --- -title: "Trains and deploys a fine-tuned model." +title: "Train and deploy a fine-tuned model." slug: "v2/docs/classify-starting-the-training" hidden: false diff --git a/fern/pages/v2/fine-tuning/fine-tuning-with-the-python-sdk.mdx b/fern/pages/v2/fine-tuning/fine-tuning-with-the-python-sdk.mdx index 8aec259f..57cde519 100644 --- a/fern/pages/v2/fine-tuning/fine-tuning-with-the-python-sdk.mdx +++ b/fern/pages/v2/fine-tuning/fine-tuning-with-the-python-sdk.mdx @@ -56,5 +56,5 @@ finetuned_model = co.finetuning.create_finetuned_model( ## Fine-tuning results -When the fine-tune model is ready you will receive an email notification. You can explore the evaluation metrics using the Dashboard and try out your model using one of our APIs on the [Playground](https://dashboard.cohere.com/playground/). +When the fine-tune model is ready you will receive an email notification. You can explore the evaluation metrics using the Dashboard and try out your model using one of our APIs on the [Playground](https://dashboard.cohere.com/welcome/login?redirect_uri=/playground/chat). diff --git a/fern/pages/v2/models/the-command-family-of-models/command-r.mdx b/fern/pages/v2/models/the-command-family-of-models/command-r.mdx index f7c1d8a4..6eea77de 100644 --- a/fern/pages/v2/models/the-command-family-of-models/command-r.mdx +++ b/fern/pages/v2/models/the-command-family-of-models/command-r.mdx @@ -23,8 +23,6 @@ For information on toxicity, safety, and using this model responsibly check out | `command-r-08-2024` | `command-r-08-2024` is an update of the Command R model, delivered in August 2024. | Text | 128k | 4k | [Chat](/reference/chat) | | | `command-r-03-2024` | Command R is an instruction-following conversational model that performs language tasks at a higher quality, more reliably, and with a longer context than previous models. It can be used for complex workflows like code generation, retrieval augmented generation (RAG), tool use, and agents. | Text | 128k | 4k | [Chat](/reference/chat) | | | `command-r` | `command-r` is an alias for `command-r-03-2024`, so if you use `command-r` in the API, that's the model you're pointing to. | Text | 128k | 4k | [Chat](/reference/chat) | | -| `c4ai-aya-expanse-8b` | Aya Expanse is a highly performant 8B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | -| `c4ai-aya-expanse-32b` | Aya Expanse is a highly performant 32B multilingual model, designed to rival monolingual performance through innovations in instruction tuning with data arbitrage, preference training, and model merging. Serves 23 languages. | Text | 8k | 4k | [Chat](/reference/chat) | ## Command R August 2024 Release Cohere's flagship text-generation models, Command R and Command R+, received a substantial update in August 2024. We chose to designate these models with time stamps, so in the API Command R 08-2024 is accesible with `command-r-08-2024`. diff --git a/fern/pages/v2/text-embeddings/embed-jobs-api.mdx b/fern/pages/v2/text-embeddings/embed-jobs-api.mdx index 34f0d7bd..deb37775 100644 --- a/fern/pages/v2/text-embeddings/embed-jobs-api.mdx +++ b/fern/pages/v2/text-embeddings/embed-jobs-api.mdx @@ -36,40 +36,22 @@ The Embed Jobs and Dataset APIs respect metadata through two fields: `keep_field #### Sample Dataset Input Format ```Text JSONL -{ -"wiki_id": 69407798, -"url": "https://en.wikipedia.org/wiki?curid=69407798", -"views": 5674.4492597435465, -"langs": 38, -"title":"Deaths in 2022", -"text": "The following notable deaths occurred in 2022. Names are reported under the date of death, in alphabetical order. A typical entry reports information in the following sequence:", -"paragraph_id": 0, -"id": 0 -} - -{ -"wiki_id": 3524766, -"url": "https://en.wikipedia.org/wiki?curid=3524766", -"views": 5409.5609619796405, -"title": "YouTube", -"text": "YouTube is a global online video sharing and social media platform headquartered in San Bruno, California. It was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google, and is the second most visited website, after Google Search. YouTube has more than 2.5 billion monthly users who collectively watch more than one billion hours of videos each day. , videos were being uploaded at a rate of more than 500 hours of content per minute.", -"paragraph_id": 0, -"id": 1 -} +{"wiki_id": 69407798, "url": "https://en.wikipedia.org/wiki?curid=69407798", "views": 5674.4492597435465, "langs": 38, "title": "Deaths in 2022", "text": "The following notable deaths occurred in 2022. Names are reported under the date of death, in alphabetical order. A typical entry reports information in the following sequence:", "paragraph_id": 0, "id": 0} +{"wiki_id": 3524766, "url": "https://en.wikipedia.org/wiki?curid=3524766", "views": 5409.5609619796405, "title": "YouTube", "text": "YouTube is a global online video sharing and social media platform headquartered in San Bruno, California. It was launched on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim. It is owned by Google, and is the second most visited website, after Google Search. YouTube has more than 2.5 billion monthly users who collectively watch more than one billion hours of videos each day. , videos were being uploaded at a rate of more than 500 hours of content per minute.", "paragraph_id": 0, "id": 1} ``` As seen in the example above, the following would be a valid `create_dataset` call since `langs` is in the first entry but not in the second entry. The fields `wiki_id`, `url`, `views` and `title` are present in both JSONs. ```python PYTHON # Upload a dataset for embed jobs -ds=co.datasets.create( - name='sample_file', - # insert your file path here - you can upload it on the right - we accept .csv and jsonl files - data=open('embed_jobs_sample_data.jsonl', 'rb'), - keep_fields=['wiki_id','url','views','title'], - optional_fields=['langs'], - type="embed-input" - ) +ds = co.datasets.create( + name="sample_file", + # insert your file path here - you can upload it on the right - we accept .csv and jsonl files + data=open("embed_jobs_sample_data.jsonl", "rb"), + keep_fields=["wiki_id", "url", "views", "title"], + optional_fields=["langs"], + type="embed-input", +) # wait for the dataset to finish validation print(co.wait(ds)) @@ -79,17 +61,18 @@ Currently the dataset endpoint will accept `.csv` and `.jsonl` files - in both c ### 1\. Upload your Dataset -The Embed Jobs API takes in `dataset IDs` as an input. Uploading a local file to the Datasets API with `dataset_type="embed-input"` will validate the data for embedding. The input file types we currently support are `.csv` and `.jsonl`. Here's a code snippet of what this looks like: +The Embed Jobs API takes in `dataset IDs` as an input. Uploading a local file to the Datasets API with `dataset_type="embed-input"` will validate the data for embedding. Dataset needs to contain `text` field. The input file types we currently support are `.csv` and `.jsonl`. Here's a code snippet of what this looks like: ```python PYTHON import cohere + co = cohere.ClientV2(api_key="") -input_dataset=co.datasets.create( - name='your_file_name', - data=open('/content/your_file_path', 'rb'), - type="embed-input" - ) +input_dataset = co.datasets.create( + name="your_file_name", + data=open("/content/your_file_path", "rb"), + type="embed-input", +) # block on server-side validation print(co.wait(input_dataset)) @@ -115,11 +98,12 @@ Your dataset is now ready to be embedded. Here's a code snippet illustrating wha ```python PYTHON embed_job_response = co.embed_jobs.create( - dataset_id=input_dataset.id, - input_type='search_document' , - model='embed-english-v3.0', - embedding_types=['float'], - truncate='END') + dataset_id=input_dataset.id, + input_type="search_document", + model="embed-english-v3.0", + embedding_types=["float"], + truncate="END", +) # block until the job is complete embed_job = co.wait(embed_job_response) @@ -132,19 +116,21 @@ Since we’d like to search over these embeddings and we can think of them as co The output of embed jobs is a dataset object which you can download or pipe directly to a database of your choice: ```python PYTHON -output_dataset_response=co.datasets.get(id=embed_job.output_dataset_id) -output_dataset=output_dataset_response.dataset -co.utils.save_dataset(dataset=output_dataset, filepath='/content/embed_job_output.csv', format="csv") +output_dataset_response = co.datasets.get(id=embed_job.output_dataset_id) +output_dataset = output_dataset_response.dataset +co.utils.save_dataset( + dataset=output_dataset, filepath="/content/embed_job_output.csv", format="csv" +) ``` Alternatively if you would like to pass the dataset into a downstream function you can do the following: ```python PYTHON -output_dataset_response=co.datasets.get(id=embed_job.output_dataset_id) -output_dataset=output_dataset_response.dataset -results=[] +output_dataset_response = co.datasets.get(id=embed_job.output_dataset_id) +output_dataset = output_dataset_response.dataset +results = [] for record in output_dataset: - results.append(record) + results.append(record) ``` ### Sample Output @@ -177,9 +163,9 @@ If you have specified any metadata to be kept either as `optional_fields` or `ke "uint8":null, "binary":null, "ubinary":null - } - "field_one": "some_meta_data", - "field_two": "some_meta_data", + }, + "field_one": "some_meta_data", + "field_two": "some_meta_data", } ``` diff --git a/fern/pages/v2/text-embeddings/reranking/overview.mdx b/fern/pages/v2/text-embeddings/reranking/overview.mdx index 1deca035..8ef0e45d 100644 --- a/fern/pages/v2/text-embeddings/reranking/overview.mdx +++ b/fern/pages/v2/text-embeddings/reranking/overview.mdx @@ -1,10 +1,10 @@ --- title: "Rerank Overview" -slug: "v2/docs/overview" +slug: "v2/docs/rerank-overview" hidden: false -description: "This page describes how Cohere's ReRank models work." +description: "This page describes how Cohere's Rerank models work." image: "../../../../assets/images/f1cc130-cohere_meta_image.jpg" keywords: "Cohere, reranking models, large language models" @@ -19,7 +19,7 @@ The [Rerank API endpoint](/reference/rerank-1), powered by the [Rerank models](/ ### Example with Texts -In the example below, we use the [Rerank API endpoint](/reference/rerank-1) to index the list of `docs` from most to least relevant to the query ` What is the capital of the United States?`. +In the example below, we use the [Rerank API endpoint](/reference/rerank-1) to index the list of `documents` from most to least relevant to the query `"What is the capital of the United States?"`. **Request** @@ -27,133 +27,133 @@ In this example, the documents being passed in are a list of strings: ```python PYTHON import cohere -co = cohere.ClientV2(api_key="") +co = cohere.ClientV2() query = "What is the capital of the United States?" docs = [ - "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.", - "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.", - "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", - "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", - "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."] -results = co.rerank(model="rerank-english-v3.0", query=query, documents=docs, top_n=5, return_documents=True) + "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.", + "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", + "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment." +] + +results = co.rerank( + model="rerank-v3.5", + query=query, + documents=docs, + top_n=5) ``` **Response** ```jsx { - "id": "97813271-fe74-465d-b9d5-577e77079253", - "results": [ - { - "document": { - "text": "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America." - }, - "index": 3, - "relevance_score": 0.9990564 - }, - { - "document": { - "text": "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment." - }, - "index": 4, - "relevance_score": 0.7516481 - }, - { - "document": { - "text": "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan." - }, - "index": 1, - "relevance_score": 0.08882029 - }, - { - "document": { - "text": "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274." - }, - "index": 0, - "relevance_score": 0.058238626 - }, - { - "document": { - "text": "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas." - }, - "index": 2, - "relevance_score": 0.019946935 - } - ], - "meta": { - "api_version": { - "version": "2022-12-06" - }, - "billed_units": { - "search_units": 1 - } - } + "id": "97813271-fe74-465d-b9d5-577e77079253", + "results": [ + { + "index": 3, // "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) ..." + "relevance_score": 0.9990564 + }, + { + "index": 4, // "Capital punishment has existed in the United States since before the United States was a country. As of 2017 ..." + "relevance_score": 0.7516481 + }, + { + "index": 1, // "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division ..." + "relevance_score": 0.08882029 + }, + { + "index": 0, // "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a ..." + "relevance_score": 0.058238626 + }, + { + "index": 2, // ""Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people ..." + "relevance_score": 0.019946935 + } + ], + "meta": { + "api_version": { + "version": "2" + }, + "billed_units": { + "search_units": 1 + } + } } - ``` -### Example with Semi-structured Data: +### Example with Structured Data: -Alternatively, you can pass in a JSON object and specify the fields you'd like to rank over. If you do not pass in any `rank_fields`, it will default to the text key. +If your documents contain structured data, for best performance we recommend formatting them as YAML strings. **Request** ```python PYTHON +import yaml +import cohere + +co = cohere.ClientV2() + query = "What is the capital of the United States?" docs = [ - {"Title":"Facts about Carson City","Content":"Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274."}, - {"Title":"The Commonwealth of Northern Mariana Islands","Content":"The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan."}, - {"Title":"The Capital of United States Virgin Islands","Content":"Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas."}, - {"Title":"Washington D.C.","Content":"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America."}, - {"Title":"Capital Punishment in the US","Content":"Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment."}] -results = co.rerank(model="rerank-english-v3.0", query=query, documents=docs, rank_fields=['Title','Content'],top_n=5, return_documents=True) + { + "Title": "Facts about Carson City", + "Content": "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274." + }, + { + "Title": "The Commonwealth of Northern Mariana Islands", + "Content": "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan." + }, + { + "Title": "The Capital of United States Virgin Islands", + "Content": "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas." + }, + { + "Title": "Washington D.C.", + "Content":"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America." + }, + { + "Title": "Capital Punishment in the US", + "Content": "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment." + } +] + +yaml_docs = [yaml.dump(doc, sort_keys=False) for doc in docs] +results = co.rerank( + model="rerank-v3.5", + query=query, + documents=yaml_docs, + top_n=5 +) ``` -In the `docs` parameter, we are passing in a list of objects which have the key values: `[Title ,Content]`. As part of the Rerank call, we are specifying which keys to rank over, as well as the order in which the key value pairs should be considered. +In the `documents` parameter, we are passing in a list YAML strings, representing the structured data. -```python PYTHON +**Response** + +```jsx { "id": "75a94aa7-6761-4a64-a2ae-4bc0a62bc601", "results": [ { - "document": { - "Content": "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", - "Title": "Washington D.C." - }, "index": 3, "relevance_score": 0.9987405 }, { - "document": { - "Content": "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", - "Title": "Capital Punishment in the US" - }, "index": 4, "relevance_score": 0.5011778 }, { - "document": { - "Content": "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", - "Title": "The Capital of United States Virgin Islands" - }, "index": 2, "relevance_score": 0.10070161 }, { - "document": { - "Content": "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.", - "Title": "The Commonwealth of Northern Mariana Islands" - }, "index": 1, "relevance_score": 0.03197956 }, { - "document": { - "Content": "Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.", - "Title": "Facts about Carson City" - }, "index": 0, "relevance_score": 0.019456575 } @@ -172,7 +172,7 @@ In the `docs` parameter, we are passing in a list of objects which have the key ## Multilingual Reranking -Cohere offers a multilingual model, `rerank-multilingual-v3.0`. Please note that performance may vary across languages. The model is trained on the following languages: +Cohere's `rerank-v3.5` and `rerank-multilingual-v3.0` models have been trained for performance across a variety of languages. Please note that performance may vary across languages. The model is trained on the following languages: | ISO Code | Language Name | | -------- | -------------- | diff --git a/fern/pages/v2/text-embeddings/reranking/reranking-best-practices.mdx b/fern/pages/v2/text-embeddings/reranking/reranking-best-practices.mdx new file mode 100644 index 00000000..b0d05a63 --- /dev/null +++ b/fern/pages/v2/text-embeddings/reranking/reranking-best-practices.mdx @@ -0,0 +1,86 @@ +--- +title: Rerank Best Practices +slug: docs/reranking-best-practices +hidden: false +description: >- + Tips for optimal endpoint performance, including constraints on the number of documents, tokens per document, and tokens per query. +image: ../../../../assets/images/b75cfed-cohere_docs_preview_image_1200x630_copy.jpg +keywords: 'rerank, natural language processing' +createdAt: 'Mon Nov 25 2024 16:58:46 GMT+0000 (Coordinated Universal Time)' +updatedAt: 'Mon Nov 25 2024 15:16:00 GMT+0000 (Coordinated Universal Time)' +--- +## Document Chunking + +Under the hood, the Rerank API turns user input into text chunks. Every chunk will include the `query` and a portion of the document text. Chunk size depends on the model. + +For example, if +- the selected model is `rerank-v3.5`, which has context length (aka max chunk size) of 4096 tokens +- the query is 100 tokens +- there is one document and it is 10,000 tokens long +- document truncation is disabled by setting `max_tokens_per_doc` parameter to 10,000 tokens + +Then the document will be broken into the following three chunks: + +``` +relevance_score_1 = +relevance_score_2 = +relevance_score_3 = +``` + +And the final relevance score for that document will be computed as the highest score among those chunks: +```python +relevance_score = max( + relevance_score_1, relevance_score_2, relevance_score_3 +) +``` + +If you would like more control over how chunking is done, we recommend that you chunk your documents yourself. + +## Queries + +Our Rerank models (`rerank-v3.0` and `rerank-v3.5`) are trained with a context length of 4096 tokens. The model takes into account both the input from the query and documents. If your query is larger than 2048 tokens, it will be truncated to the first 2048 tokens. + +## Structured Data Support + +Our Rerank models support reranking structured data formatted as a list of YAML strings. Note that since long document strings get truncated, the order of the keys is especially important. When constructing the YAML string from a dictionary, make sure to maintain the order. In Python that is done by setting `sort_keys=False` when using `yaml.dump`. + +Example: +```python +import yaml + +docs = [ + { + "Title": "How to fix a dishwasher", + "Author": "John Smith", + "Date": "August 1st 2023", + "Content": "Fixing a dishwasher depends on the specific problem you're facing. Here are some common issues and their potential solutions:....", + }, + { + "Title": "How to fix a leaky sink", + "Date": "July 25th 2024", + "Content": "Fixing a leaky sink will depend on the source of the leak. Here are general steps you can take to address common types of sink leaks:.....", + }, +] + +yaml_docs = [yaml.dump(doc, sort_keys=False) for doc in docs] +``` + +## Interpreting Results + +The most important output from the [Rerank API endpoint](/reference/rerank-1) is the absolute rank exposed in the response object. The score is query dependent, and could be higher or lower depending on the query and passages sent in. In the example below, what matters is that Ottawa is more relevant than Toronto, but the user should not assume that Ottawa is two times more relevant than Ontario. + +``` +[ + RerankResult, + RerankResult, + RerankResult +] +``` + +Relevance scores are normalized to be in the range `[0, 1]`. Scores close to `1` indicate a high relevance to the query, and scores closer to `0` indicate low relevance. To find a threshold on the scores to determine whether a document is relevant or not, we recommend going through the following process: + +- Select a set of 30-50 representative queries `Q=[q_0, … q_n]` from your domain. +- For each query provide a document that is considered borderline relevant to the query for your specific use case, and create a list of (query, document) pairs: `sample_inputs=[(q_0, d_0), …, (q_n, d_n)]` . +- Pass all tuples in `sample_inputs` through the rerank endpoint in a loop, and gather relevance scores `sample_scores=[s0, ..., s_n]`. + +The average of `sample_scores` can then be used as a reference when deciding a threshold for filtering out irrelevant documents. diff --git a/fern/pages/v2/text-generation/migrating-v1-to-v2.mdx b/fern/pages/v2/text-generation/migrating-v1-to-v2.mdx index ee1dd6fa..4700ed8d 100644 --- a/fern/pages/v2/text-generation/migrating-v1-to-v2.mdx +++ b/fern/pages/v2/text-generation/migrating-v1-to-v2.mdx @@ -556,7 +556,7 @@ tools_v2 = [ "type": "object", "properties": { "location": { - "type" : "str", + "type" : "string", "description": "the location to get weather, example: San Fransisco, CA" } }, @@ -850,4 +850,4 @@ The following v1 features are not supported in v2: - `connectors` parameter - `prompt_truncation` parameter - Tool use - - `force_single_step` parameter (all tool calls are now multi-step by default) \ No newline at end of file + - `force_single_step` parameter (all tool calls are now multi-step by default) diff --git a/fern/pages/v2/text-generation/prompt-engineering/prompt-library/book-an-appointment.mdx b/fern/pages/v2/text-generation/prompt-engineering/prompt-library/book-an-appointment.mdx index 18b13fca..be828e46 100644 --- a/fern/pages/v2/text-generation/prompt-engineering/prompt-library/book-an-appointment.mdx +++ b/fern/pages/v2/text-generation/prompt-engineering/prompt-library/book-an-appointment.mdx @@ -87,4 +87,4 @@ response = co.chat(model="command-r-plus-08-2024", print(response.message.content[0].text) ```` -Also check out the [structured output generation feature](v2/docs/structured-outputs-json) which guarantees that output of the model will be a valid JSON object. +Also check out the [Structured Outputs feature](v2/docs/structured-outputs) which guarantees that output of the model will be a valid JSON object. diff --git a/fern/pages/v2/text-generation/retrieval-augmented-generation-rag.mdx b/fern/pages/v2/text-generation/retrieval-augmented-generation-rag.mdx index 792b1ce7..9b3c673f 100644 --- a/fern/pages/v2/text-generation/retrieval-augmented-generation-rag.mdx +++ b/fern/pages/v2/text-generation/retrieval-augmented-generation-rag.mdx @@ -34,28 +34,29 @@ The code snippet below, for example, will produce a grounded answer to `"Where d ```python import cohere + co = cohere.ClientV2(api_key="") # Retrieve the documents documents = [ - { - "data": { - "title": "Tall penguins", - "snippet": "Emperor penguins are the tallest." - } - }, - { - "data": { - "title": "Penguin habitats", - "snippet": "Emperor penguins only live in Antarctica." - } - }, - { - "data": { - "title": "What are animals?", - "snippet": "Animals are different from plants." - } - } + { + "data": { + "title": "Tall penguins", + "snippet": "Emperor penguins are the tallest.", + } + }, + { + "data": { + "title": "Penguin habitats", + "snippet": "Emperor penguins only live in Antarctica.", + } + }, + { + "data": { + "title": "What are animals?", + "snippet": "Animals are different from plants.", + } + }, ] # Add the user message @@ -65,7 +66,8 @@ messages = [{"role": "user", "content": message}] response = co.chat( model="command-r-plus-08-2024", messages=messages, - documents=documents) + documents=documents, +) print(response.message.content[0].text) @@ -205,8 +207,9 @@ In the final step, we will be calling the Chat API again, but this time passing **Request** -```py +```python import cohere + co = cohere.ClientV2(api_key="") documents = [ @@ -243,7 +246,7 @@ messages = [{"role": "user", "content": message}] response = co.chat( model="command-r-plus-08-2024", messages=messages, - documents=documents + documents=documents, ) print(response.message.content[0].text) diff --git a/fern/pages/v2/text-generation/structured-outputs-json.mdx b/fern/pages/v2/text-generation/structured-outputs-json.mdx deleted file mode 100644 index ca3edee7..00000000 --- a/fern/pages/v2/text-generation/structured-outputs-json.mdx +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Structured Generations (JSON)" -slug: "v2/docs/structured-outputs-json" - -hidden: false - -description: "This page describes how to get Cohere models to create outputs in a certain format, such as JSON." -image: "../../../assets/images/f1cc130-cohere_meta_image.jpg" -keywords: "Cohere, language models, structured outputs" - -createdAt: "Thu Jun 06 2024 05:37:56 GMT+0000 (Coordinated Universal Time)" -updatedAt: "Tue Jun 11 2024 02:43:00 GMT+0000 (Coordinated Universal Time)" ---- - -Cohere models such as [Command R](https://docs.cohere.com/docs/command-r) and [Command R+](https://docs.cohere.com/docs/command-r-plus) are great at producing structured outputs in formats such as JSON. - -## Why generate JSON Objects using an LLM? - -JSON is a lightweight format that is easy for humans to read and write and is also easy for machines to parse. By generating JSON objects, you can structure and organize the model's responses in a way that can be used in downstream applications. This is particularly useful when you want to extract specific information from the responses, perform data analysis, or integrate the responses into your applications seamlessly. - -## How to use the `response_format` parameter - -When making an API request, you can specify the `response_format` parameter to indicate that you want the response in a JSON object format. - -```python -import cohere -co = cohere.ClientV2(api_key="YOUR API KEY") - -res = co.chat( - model="command-r-plus-08-2024", - messages=[{"role": "user", "content": "Generate a JSON describing a person, with the fields 'name' and 'age'"}], - response_format={ "type": "json_object" } -) - -print(res.message.content[0].text) -``` -By setting the `response_format` type to `"json_object"` in the Chat API, the output of the model is guaranteed to be a valid JSON object. - -``` -# Example response - -{ - "name": "Emma Johnson", - "age": 32 -} - -``` - - - When using `{ "type": "json_object" }` your `message` should always explicitly instruct the model to generate a JSON (eg: _"Generate a JSON ..."_) . Otherwise the model may end up getting stuck generating an infinite stream of characters and eventually run out of context length. - - -## Specifying a schema (beta) - -The `response_format` parameter also allows you to define a schema for the generated JSON object. A [JSON Schema](https://json-schema.org/specification) is a way to describe the structure of the JSON object you want the LLM to generate. This is optional, but it gives you more control over the response format. - -For example, let's say you want the LLM to generate a JSON object with specific keys for a book, such as "title," "author," and "publication_year." Your API request might look like this: - -```python -import cohere -co = cohere.ClientV2(api_key="YOUR API KEY") - -res = co.chat( - model="command-r-plus-08-2024", - messages=[ - { - "role": "user", - "content": "Generate a JSON describing a book, with the fields 'title' and 'author' and 'publication_year'", - } - ], - response_format={ - "type": "json_object", - "schema": { - "type": "object", - "required": ["title", "author", "publication_year"], - "properties": { - "title": {"type": "string"}, - "author": {"type": "string"}, - "publication_year": {"type": "integer"}, - }, - }, - }, -) - -print(res.message.content[0].text) -``` - -In this schema, we defined three keys ("title," "author," "publication_year") and their expected data types ("string" and "number"). The LLM will generate a JSON object that adheres to this structure. - -``` -# Example response - -{ - "title": "The Great Gatsby", - "author": "F. Scott Fitzgerald", - "publication_year": 1925 -} - -``` - - -Specifying a `json_schema` adds even more latency, proportional to the complexity of the schema. This parameter is in **beta**, and will continue seeing performance improvements. - - -### Generating nested objects - -By setting `response_format={ "type": "json_object" }`the model can be configured to output objects with up to 5 levels of nesting. When a `schema` is specified, there are no limitations on the levels of nesting. - -### Schema constraints - -When constructing a `schema` keep the following constraints in mind: - -- The `type` in the top level schema must be `object` -- Every object in the schema must have at least one `required` field specified - -### Unsupported schema features - -We do not support the entirety of the [JSON Schema specification](https://json-schema.org/specification). Below is a list of some unsupported features: - -- [Schema Composition](https://json-schema.org/understanding-json-schema/reference/combining#schema-composition) (`anyOf`, `allOf`, `oneOf` and `not`) -- [Numeric Ranges](https://json-schema.org/understanding-json-schema/reference/numeric#range) (`maximum` and `minimum`) -- [Array Length Ranges](https://json-schema.org/understanding-json-schema/reference/array#length) (`minItems` and `maxItems`) -- String limitations: - - [String Length](https://json-schema.org/understanding-json-schema/reference/string#length) (`maxLength` and `minLength`) - - The following are not supported in [Regular Expressions](https://json-schema.org/understanding-json-schema/reference/string#regexp) - - `^` - - `$` - - `?=` - - `?!` - - The following [formats](https://json-schema.org/understanding-json-schema/reference/string#format) are the only supported ones - - `date-time` - - `uuid` - - `date` - - `time` diff --git a/fern/pages/v2/text-generation/structured-outputs.mdx b/fern/pages/v2/text-generation/structured-outputs.mdx new file mode 100644 index 00000000..2865aaa3 --- /dev/null +++ b/fern/pages/v2/text-generation/structured-outputs.mdx @@ -0,0 +1,238 @@ +--- +title: "Structured Outputs" +slug: "v2/docs/structured-outputs" + +hidden: false + +description: "This page describes how to get Cohere models to create outputs in a certain format, such as JSON." +image: "../../../assets/images/f1cc130-cohere_meta_image.jpg" +keywords: "Cohere, language models, structured outputs" + +createdAt: "Thu Jun 06 2024 05:37:56 GMT+0000 (Coordinated Universal Time)" +updatedAt: "Tue Jun 11 2024 02:43:00 GMT+0000 (Coordinated Universal Time)" +--- + + +## Overview + +Structured Outputs is a feature for forcing the LLM's output to follow a specified format 100% of the time. This increases the reliability of LLM in enterprise applications where downstream applications expect the LLM output to be correctly formatted. By forcing the model to follow a structured schema, hallucinated fields and entries in structured data can be reliably eliminated. + +Compatible models: +- Command R 08 2024 +- Command R +- Command R+ 08 2024 +- Command R+ + +## How to Use Structured Outputs + +There are two ways to use Structured Outputs: +- **Structured Outputs (JSON)**. This is primarily used in text generation use cases. +- **Structured Outputs (Tools)**. This is primarily used in tool use and agents use cases via function calling. + + +Structured Outputs with Tools are only supported in [Chat API V2](https://docs.cohere.com/reference/chat#request.body.strict_tools) via the `strict_tools` parameter. This parameter is not supported in Chat API V1. + + +### Structured Outputs (JSON) + +Here, you can call the Chat API to generate Structured Outputs in JSON format. JSON is a lightweight format that is easy for humans to read and write and is also easy for machines to parse. + +This is particularly useful in text generation use cases, for example, when you want to extract specific information from the responses, perform data analysis, or integrate the responses into your applications seamlessly. + +There are two ways of specifying the JSON output: +- JSON mode +- JSON Schema mode + +#### JSON mode +In JSON mode, when making an API request, you can specify the `response_format` parameter to indicate that you want the response in a JSON object format. + + +```python PYTHON +import cohere +co = cohere.ClientV2(api_key="YOUR API KEY") + +res = co.chat( + model="command-r-plus-08-2024", + messages=[ + { + "role": "user", + "content": "Generate a JSON describing a person, with the fields 'name' and 'age'", + } + ], + response_format={"type": "json_object"}, +) + +print(res.message.content[0].text) + +``` +By setting the `response_format` type to `"json_object"` in the Chat API, the output of the model is guaranteed to be a valid JSON object. + +``` +# Example response + +{ + "name": "Emma Johnson", + "age": 32 +} + +``` + + +When using `{ "type": "json_object" }` your `message` should always explicitly instruct the model to generate a JSON (eg: _"Generate a JSON ..."_) . Otherwise the model may end up getting stuck generating an infinite stream of characters and eventually run out of context length. + + + +This feature is currently not supported in RAG mode. + + +#### JSON Schema mode +In JSON Schema mode, you can optionally define a schema as part of the `response_format` parameter. A [JSON Schema](https://json-schema.org/specification) is a way to describe the structure of the JSON object you want the LLM to generate. + +This forces the LLM to stick to this schema, thus giving you greater control over the output. + +For example, let's say you want the LLM to generate a JSON object with specific keys for a book, such as "title," "author," and "publication_year." Your API request might look like this: + + +```python PYTHON +import cohere +co = cohere.ClientV2(api_key="YOUR API KEY") + +res = co.chat( + model="command-r-plus-08-2024", + messages=[ + { + "role": "user", + "content": "Generate a JSON describing a book, with the fields 'title' and 'author' and 'publication_year'", + } + ], + response_format={ + "type": "json_object", + "schema": { + "type": "object", + "properties": { + "title": {"type": "string"}, + "author": {"type": "string"}, + "publication_year": {"type": "integer"}, + }, + "required": ["title", "author", "publication_year"], + }, + }, +) + +print(res.message.content[0].text) +``` + +In this schema, we defined three keys ("title," "author," "publication_year") and their expected data types ("string" and "integer"). The LLM will generate a JSON object that adheres to this structure. + +``` +# Example response + +{ + "title": "The Great Gatsby", + "author": "F. Scott Fitzgerald", + "publication_year": 1925 +} + +``` + + +Note: Each schema provided (in both JSON and Tools modes) will incur a latency overhead required for processing the schema. This is only applicable for the first few requests. + + +### Structured Outputs (Tools) +When you use the Chat API with `tools`, setting the `strict_tools` parameter to `true` will enforce that every generated tool call follows the specified tool schema. + + +`strict_tools` is currently an experimental parameter. We’ll be iterating on this feature and are looking for feedback. Share your experience with us in the `#api-discussions` channel on [discord](https://discord.gg/co-mmunity) or via [email](mailto:support@cohere.com). + + +With `strict_tools` enabled, the API will ensure that the tool names and tool parameters are generated according to the tool definitions. This eliminates tool name and parameter hallucinations, ensures that each parameter matches the specified data type, and that all required parameters are included in the model response. + +Additionally, this results in faster development. You don’t need to spend a lot of time prompt engineering the model to avoid hallucinations. + +In the example below, we create a tool that can retrieve weather data for a given location. The tool is called`get_weather` which contains a parameter called `location`. We then invoke the Chat API with `strict_tools` set to `true` to ensure that the generated tool calls always include the correct function and parameter names. + +When the `strict_tools` parameter is set to `true`, you can define a maximum of 200 fields across all tools being passed to an API call. + +```python PYTHON {24} +tools = [ + { + "type": "function", + "function": { + "name": "get_weather", + "description" : "Gets the weather of a given location", + "parameters": { + "type": "object", + "properties": { + "location": { + "type" : "string", + "description": "The location to get weather." + } + }, + "required": ["location"] + } + } + }, +] + +response = co.chat(model="command-r-plus-08-2024", + messages=[{"role": "user", "content": "What's the weather in Toronto?"}], + tools=tools, + strict_tools=True) + +print(response.message.tool_calls) +``` + + + +When `strict_tools` is enabled, tool definitions that have optional parameters must specify at least one `required` parameter as well. Tools with only optional parameters are not supported in this mode. + + +### When to Use Structured Outputs (JSON) vs. Structured Outputs (Tools) + +Structured Outputs (JSON) are ideal for text generation use cases where you want to format the model's responses to users in a specific way. + +For example, when building a travel planner application, you might want the LLM to generate itineraries in a specific JSON format, allowing the application to use the output in the other parts of the application. + +Structured Outputs (Tools) are ideal for function calling, tool use or agents use cases where you need the model to interact with external data or services. For instance, you can grant the model access to functions that interact with databases or other APIs. + +In summary, opt for: +- Structured Outputs (JSON) when you need the model's response to follow a specific structure. +- Structured Outputs (Tools) when you need the model to interact with external data or services. + + +## Specifying a schema + +### Generating nested objects + +The model can be configured to output objects with up to 5 levels of nesting. When a `schema` is specified, there are no limitations on the levels of nesting. + +### Schema constraints + +When constructing a `schema` keep the following constraints in mind: + +- The `type` in the top level schema must be `object` +- Every object in the schema must have at least one `required` field specified + +### Unsupported schema features + +We do not support the entirety of the [JSON Schema specification](https://json-schema.org/specification). Below is a list of some unsupported features: + +- [Schema Composition](https://json-schema.org/understanding-json-schema/reference/combining#schema-composition) (`anyOf`, `allOf`, `oneOf` and `not`) +- [Numeric Ranges](https://json-schema.org/understanding-json-schema/reference/numeric#range) (`maximum` and `minimum`) +- [Array Length Ranges](https://json-schema.org/understanding-json-schema/reference/array#length) (`minItems` and `maxItems`) +- String limitations: + - [String Length](https://json-schema.org/understanding-json-schema/reference/string#length) (`maxLength` and `minLength`) + - The following are not supported in [Regular Expressions](https://json-schema.org/understanding-json-schema/reference/string#regexp) + - `^` + - `$` + - `?=` + - `?!` + - The following [formats](https://json-schema.org/understanding-json-schema/reference/string#format) are the only supported ones + - `date-time` + - `uuid` + - `date` + - `time` +- Others: + - `uniqueItems` + - `additionalProperties` diff --git a/fern/pages/v2/text-generation/tools/tool-use.mdx b/fern/pages/v2/text-generation/tools/tool-use.mdx index 677fe699..1b7b8798 100644 --- a/fern/pages/v2/text-generation/tools/tool-use.mdx +++ b/fern/pages/v2/text-generation/tools/tool-use.mdx @@ -362,6 +362,19 @@ Start: 177 | End: 204 | Text: 'Laptop: $1,000, 15 in stock' Start: 207 | End: 232 | Text: 'Tablet: $300, 25 in stock' ``` +## Structured Outputs (Tools) + +Setting the `strict_tools` parameter to True will enforce each tool call to follow the specified tool schema. To learn more about this feature, visit the [Structured Outputs documentation](https://docs.cohere.com/v2/docs/structured-outputs). + +Note that `strict_tools` is currently an experimental feature. + +```python PYTHON {4} +response = co.chat(model="command-r-plus-08-2024", + messages=messages, + tools=tools, + strict_tools=True) +``` + ## How to Get Good Answers With Tool Use To get good answers with tool use, make sure that the tool name and description as well as the names and descriptions for each parameter are descriptive. If you're not getting the model to recommend your tool correctly, iterate on those descriptions and names to help the model understand the tool better. diff --git a/fern/pages/v2/tutorials/agentic-rag/generating-multi-faceted-queries.mdx b/fern/pages/v2/tutorials/agentic-rag/generating-multi-faceted-queries.mdx index 3ab0d421..b6da9130 100644 --- a/fern/pages/v2/tutorials/agentic-rag/generating-multi-faceted-queries.mdx +++ b/fern/pages/v2/tutorials/agentic-rag/generating-multi-faceted-queries.mdx @@ -85,30 +85,30 @@ We set only the `query` parameter as required, while the other two parameters ar ```python search_code_examples_detailed_tool = { - "type": "function", - "function": { - "name": "search_code_examples_detailed", - "description": "Searches code examples or tutorials of using Cohere.", - "parameters": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The search query." - }, - "programming_language": { - "type": "string", - "description": "The programming language of the code example or tutorial. Only use this property when specified by the user. Possible enum values: py, js." - }, - "endpoints": { - "type": "array", - "items": {"type": "string"}, - "description": "The Cohere endpoints used in the code example or tutorial. Only use this property when asked by the user. Possible enum values: chat, embed, rerank, classify." - } + "type": "function", + "function": { + "name": "search_code_examples_detailed", + "description": "Searches code examples or tutorials of using Cohere.", + "parameters": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The search query.", }, - "required": ["query"] - } - } + "programming_language": { + "type": "string", + "description": "The programming language of the code example or tutorial. Only use this property when specified by the user. Possible enum values: py, js.", + }, + "endpoints": { + "type": "array", + "items": {"type": "string"}, + "description": "The Cohere endpoints used in the code example or tutorial. Only use this property when asked by the user. Possible enum values: chat, embed, rerank, classify.", + }, + }, + "required": ["query"], + }, + }, } ``` ```python PYTHON diff --git a/fern/pages/v2/tutorials/build-things-with-cohere/reranking-with-cohere.mdx b/fern/pages/v2/tutorials/build-things-with-cohere/reranking-with-cohere.mdx index b34e22a1..16b0d319 100644 --- a/fern/pages/v2/tutorials/build-things-with-cohere/reranking-with-cohere.mdx +++ b/fern/pages/v2/tutorials/build-things-with-cohere/reranking-with-cohere.mdx @@ -98,7 +98,7 @@ Document: {'text': 'Performance Reviews Frequency: We conduct informal check-ins Further reading: - [Rerank endpoint API reference](https://docs.cohere.com/reference/rerank) -- [Documentation on Rerank](https://docs.cohere.com/docs/overview) +- [Documentation on Rerank](https://docs.cohere.com/docs/rerank-overview) - [Documentation on Rerank fine-tuning](https://docs.cohere.com/docs/rerank-fine-tuning) - [Documentation on Rerank best practices](https://docs.cohere.com/docs/reranking-best-practices) - [LLM University module on Text Representation](https://cohere.com/llmu#text-representation) diff --git a/fern/pages/v2/tutorials/build-things-with-cohere/text-generation-tutorial.mdx b/fern/pages/v2/tutorials/build-things-with-cohere/text-generation-tutorial.mdx index 7188767e..f9abc454 100644 --- a/fern/pages/v2/tutorials/build-things-with-cohere/text-generation-tutorial.mdx +++ b/fern/pages/v2/tutorials/build-things-with-cohere/text-generation-tutorial.mdx @@ -268,7 +268,7 @@ print(json_object) ``` Further reading: -- [Documentation on Structured Generations (JSON)](https://docs.cohere.com/docs/structured-outputs-json) +- [Documentation on Structured Outputs](https://docs.cohere.com/docs/structured-outputs) ## Streaming responses diff --git a/fern/v1.yml b/fern/v1.yml index c69815da..0c85a950 100644 --- a/fern/v1.yml +++ b/fern/v1.yml @@ -55,6 +55,8 @@ navigation: path: pages/models/cohere-embed.mdx - page: Cohere's Rerank Model (Details and Application) path: pages/models/rerank-2.mdx + - page: Aya + path: pages/models/aya.mdx - section: Text Generation contents: - page: Introduction to Text Generation at Cohere @@ -63,8 +65,8 @@ navigation: path: pages/text-generation/chat-api.mdx - page: Streaming Responses path: pages/text-generation/streaming.mdx - - page: Structured Generations (JSON) - path: pages/text-generation/structured-outputs-json.mdx + - page: Structured Outputs + path: pages/text-generation/structured-outputs.mdx - page: Predictable Outputs path: pages/text-generation/predictable-outputs.mdx - page: Advanced Generation Parameters @@ -200,6 +202,8 @@ navigation: path: pages/going-to-production/rate-limits.mdx - page: Going Live path: pages/going-to-production/going-live.mdx + - page: Deprecations + path: pages/going-to-production/deprecations.mdx - page: How Does Cohere Pricing Work? path: pages/going-to-production/how-does-cohere-pricing-work.mdx - section: Integrations @@ -289,7 +293,7 @@ navigation: contents: - link: Security href: https://cohere.ai/security - - page: Usage Guidelines + - page: Usage Policy path: pages/responsible-use/responsible-use/usage-guidelines.mdx - page: Command R and Command R+ Model Card path: pages/responsible-use/responsible-use.mdx @@ -803,3 +807,5 @@ navigation: path: pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx - page: Finetuning on AWS Sagemaker path: pages/cookbooks/finetune-on-sagemaker.mdx + - page: SQL Agent with Cohere and LangChain (i-5O Case Study) + path: pages/cookbooks/sql-agent-cohere-langchain.mdx diff --git a/fern/v2.yml b/fern/v2.yml index 334de0f6..99c88425 100644 --- a/fern/v2.yml +++ b/fern/v2.yml @@ -55,6 +55,8 @@ navigation: path: pages/models/cohere-embed.mdx - page: Cohere's Rerank Model (Details and Application) path: pages/models/rerank-2.mdx + - page: Aya + path: pages/models/aya.mdx - section: Text Generation contents: - page: Introduction to Text Generation at Cohere @@ -63,8 +65,8 @@ navigation: path: pages/v2/text-generation/chat-api.mdx - page: Streaming Responses path: pages/v2/text-generation/streaming.mdx - - page: Structured Generations (JSON) - path: pages/v2/text-generation/structured-outputs-json.mdx + - page: Structured Outputs + path: pages/v2/text-generation/structured-outputs.mdx - page: Predictable Outputs path: pages/v2/text-generation/predictable-outputs.mdx - page: Advanced Generation Parameters @@ -129,7 +131,7 @@ navigation: - page: Rerank Overview path: pages/v2/text-embeddings/reranking/overview.mdx - page: Rerank Best Practices - path: pages/text-embeddings/reranking/reranking-best-practices.mdx + path: pages/v2/text-embeddings/reranking/reranking-best-practices.mdx - page: Text Classification path: pages/v2/text-embeddings/text-classification-with-cohere.mdx - section: Fine-Tuning @@ -156,7 +158,7 @@ navigation: contents: - page: Preparing the Classify Fine-tuning data path: pages/v2/fine-tuning/classify-fine-tuning/classify-preparing-the-data.mdx - - page: Trains and deploys a fine-tuned model + - page: Train and deploy a fine-tuned model path: pages/v2/fine-tuning/classify-fine-tuning/classify-starting-the-training.mdx - page: Understanding the Classify Fine-tuning Results path: pages/fine-tuning/classify-fine-tuning/classify-understanding-the-results.mdx @@ -181,6 +183,8 @@ navigation: path: pages/going-to-production/rate-limits.mdx - page: Going Live path: pages/going-to-production/going-live.mdx + - page: Deprecations + path: pages/going-to-production/deprecations.mdx - page: How Does Cohere Pricing Work? path: pages/going-to-production/how-does-cohere-pricing-work.mdx - section: Integrations @@ -235,7 +239,7 @@ navigation: - page: Amazon Bedrock path: pages/v2/deployment-options/cohere-on-aws/amazon-bedrock.mdx - section: Amazon SageMaker - path: pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx + path: pages/v2/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide.mdx contents: - page: Deploy Your Own Finetuned Command-R-0824 Model from AWS Marketplace path: pages/deployment-options/cohere-on-aws/amazon-sagemaker-setup-guide/byo-finetuning-sm.mdx @@ -285,7 +289,7 @@ navigation: contents: - link: Security href: https://cohere.ai/security - - page: Usage Guidelines + - page: Usage Policy path: pages/responsible-use/responsible-use/usage-guidelines.mdx - page: Command R and Command R+ Model Card path: pages/responsible-use/responsible-use.mdx @@ -824,3 +828,5 @@ navigation: path: pages/cookbooks/deploy-finetuned-model-aws-marketplace.mdx - page: Finetuning on AWS Sagemaker path: pages/cookbooks/finetune-on-sagemaker.mdx + - page: SQL Agent with Cohere and LangChain (i-5O Case Study) + path: pages/cookbooks/sql-agent-cohere-langchain.mdx \ No newline at end of file diff --git a/package.json b/package.json index 3c8158b8..efb368db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "cohere-developer-experience", "version": "0.0.0", + "type": "module", "scripts": { "preinstall": "npx only-allow pnpm", "clean": "rm -rf ./fern/dist && rm -rf ./node_modules", @@ -17,8 +18,9 @@ "tailwindcss": "^3.4.4" }, "dependencies": { - "gray-matter": "^4.0.3", + "cohere-ai": "^7.14.0", "fern-api": "^0.41.16", + "gray-matter": "^4.0.3", "react": "^18.3.1" } -} +} \ No newline at end of file diff --git a/packages/snippet-tester/babel.config.js b/packages/snippet-tester/babel.config.js new file mode 100644 index 00000000..1c005e99 --- /dev/null +++ b/packages/snippet-tester/babel.config.js @@ -0,0 +1,7 @@ +module.exports = { + presets: [ + ['@babel/preset-env', { targets: { node: 'current' } }], + '@babel/preset-typescript', + ], +}; + diff --git a/packages/snippet-tester/jest.config.ts b/packages/snippet-tester/jest.config.ts new file mode 100644 index 00000000..81f1ec12 --- /dev/null +++ b/packages/snippet-tester/jest.config.ts @@ -0,0 +1,199 @@ +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ + +import type {Config} from 'jest'; + +const config: Config = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/7y/pd12xsnj72x0t4drmr3tt23c0000gp/T/jest_dy", + + // Automatically clear mock calls, instances, contexts and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + // collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + // coverageDirectory: undefined, + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + coverageProvider: "v8", + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // The default configuration for fake timers + // fakeTimers: { + // "enableGlobally": false + // }, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "mjs", + // "cjs", + // "jsx", + // "ts", + // "tsx", + // "json", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + // testEnvironment: "jest-environment-node", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // A map from regular expressions to paths to transformers + // transform: undefined, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "\\.pnp\\.[^\\/]+$" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; + +export default config; diff --git a/packages/snippet-tester/package.json b/packages/snippet-tester/package.json new file mode 100644 index 00000000..ef83e312 --- /dev/null +++ b/packages/snippet-tester/package.json @@ -0,0 +1,31 @@ +{ + "name": "snippet-tester", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@jest/globals": "^29.7.0", + "@pnpm/find-workspace-dir": "^7.0.2", + "cohere": "^1.1.1", + "cohere-ai": "^7.14.0", + "convict": "^6.2.4", + "glob": "^11.0.0", + "jest": "^29.7.0", + "nodemon": "^3.1.7", + "ts-node": "^10.9.2" + }, + "devDependencies": { + "@babel/core": "^7.25.8", + "@babel/preset-env": "^7.25.8", + "@babel/preset-typescript": "^7.25.7", + "@types/convict": "^6.1.6", + "@types/jest": "^29.5.13", + "babel-jest": "^29.7.0" + } +} diff --git a/packages/snippet-tester/src/config.ts b/packages/snippet-tester/src/config.ts new file mode 100644 index 00000000..b5cbe7b9 --- /dev/null +++ b/packages/snippet-tester/src/config.ts @@ -0,0 +1,43 @@ +import path from "path"; + +export interface Language { + name: string; + exec: (file: string) => string; + snippetRoot: (base: string) => string; + glob: string; +} + +export const config: { + languages: Language[]; +} = { + "languages": [ + { + "name": "node", + "exec": (file: string) => `node ${file}`, + "snippetRoot": (base: string) => path.join(base, "./snippets/node"), + "glob": "**/*.js" + }, + { + "name": "java", + "exec": (file: string) => { + const classPath = file.replace("app/src/main/java/", "").replace(".java", "").split("/").join("."); + + return `gradle -PmainClass=${classPath} run` + }, + "snippetRoot": (base: string) => path.join(base, "./snippets/java"), + "glob": "./app/src/main/java/**/*.java" + }, + { + "name": "python", + "exec": (file: string) => `poetry run python ${file}`, + "snippetRoot": (base: string) => path.join(base, "./snippets/python"), + "glob": "**/*.py" + }, + { + "name": "golang", + "exec": (file: string) => `go run ${file}`, + "snippetRoot": (base: string) => path.join(base, "./snippets/go"), + "glob": "**/*.go" + } + ] +} \ No newline at end of file diff --git a/packages/snippet-tester/src/tests/__snapshots__/snippets.test.ts.snap b/packages/snippet-tester/src/tests/__snapshots__/snippets.test.ts.snap new file mode 100644 index 00000000..f9607546 --- /dev/null +++ b/packages/snippet-tester/src/tests/__snapshots__/snippets.test.ts.snap @@ -0,0 +1,1293 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Testing language golang testing file chat-post/default/main.go 1`] = `null`; + +exports[`Testing language golang testing file chat-post/documents/main.go 1`] = `null`; + +exports[`Testing language golang testing file chat-post/stream/main.go 1`] = `null`; + +exports[`Testing language golang testing file chat-post/tools/main.go 1`] = `null`; + +exports[`Testing language golang testing file classify-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file connector-create/main.go 1`] = ` +[Error: Command failed: go run connector-create/main.go +2024/10/28 14:44:44 400: {"message":"a connector url must end with the path /search"} +exit status 1 +] +`; + +exports[`Testing language golang testing file connector-delete/main.go 1`] = ` +[Error: Command failed: go run connector-delete/main.go +2024/10/28 14:44:44 404: {"message":"connector not found, id = connector_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file connector-get/main.go 1`] = ` +[Error: Command failed: go run connector-get/main.go +2024/10/28 14:44:44 404: {"message":"connector not found, id = connector_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file connector-patch/main.go 1`] = ` +[Error: Command failed: go run connector-patch/main.go +2024/10/28 14:44:43 404: {"message":"connector not found, id = connector_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file connectors-id-oauth-authorize-post/main.go 1`] = ` +[Error: Command failed: go run connectors-id-oauth-authorize-post/main.go +2024/10/28 14:44:43 404: {"message":"connector not found, id = connector_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file connectors-list/main.go 1`] = `null`; + +exports[`Testing language golang testing file dataset-delete/main.go 1`] = ` +[Error: Command failed: go run dataset-delete/main.go +2024/10/28 14:44:42 404: {"message":"dataset with the id 'dataset_id' not found"} +exit status 1 +] +`; + +exports[`Testing language golang testing file dataset-get/main.go 1`] = ` +[Error: Command failed: go run dataset-get/main.go +2024/10/28 14:44:42 404: {"message":"dataset with the id 'dataset_id' not found"} +exit status 1 +] +`; + +exports[`Testing language golang testing file dataset-post/main.go 1`] = ` +[Error: Command failed: go run dataset-post/main.go +2024/10/28 14:44:41 400: {"message":"output dataset types are not supported for upload"} +exit status 1 +] +`; + +exports[`Testing language golang testing file dataset-usage-get/main.go 1`] = ` +[Error: Command failed: go run dataset-usage-get/main.go +2024/10/28 14:44:41 json: cannot unmarshal string into Go struct field unmarshaler.organization_usage of type int64 +exit status 1 +] +`; + +exports[`Testing language golang testing file detokenize-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file embed-jobs-cancel/main.go 1`] = ` +[Error: Command failed: go run embed-jobs-cancel/main.go +2024/10/28 14:44:40 404: {"message":"resource not found: could not find embed job with the ID: embed_job_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file embed-jobs-get/main.go 1`] = ` +[Error: Command failed: go run embed-jobs-get/main.go +2024/10/28 14:44:40 404: {"message":"resource not found: could not find embed job with the ID: embed_job_id"} +exit status 1 +] +`; + +exports[`Testing language golang testing file embed-jobs-post/main.go 1`] = ` +[Error: Command failed: go run embed-jobs-post/main.go +2024/10/28 14:44:40 400: {"message":"a model parameter is required for this endpoint."} +exit status 1 +] +`; + +exports[`Testing language golang testing file embed-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file emebed-jobs-get/main.go 1`] = `null`; + +exports[`Testing language golang testing file finetuning/create-finetuned-model/main.go 1`] = ` +[Error: Command failed: go run finetuning/create-finetuned-model/main.go +2024/10/28 14:44:38 400: {"message":"dataset with id \\"my-dataset-id\\" does not exist"} +exit status 1 +] +`; + +exports[`Testing language golang testing file finetuning/delete-finetuned-model/main.go 1`] = ` +[Error: Command failed: go run finetuning/delete-finetuned-model/main.go +2024/10/28 14:44:38 400: {"message":"fine-tuned model ID is not a valid UUID: 'test-id'"} +exit status 1 +] +`; + +exports[`Testing language golang testing file finetuning/get-finetuned-model/main.go 1`] = ` +[Error: Command failed: go run finetuning/get-finetuned-model/main.go +2024/10/28 14:44:37 400: {"message":"finetuned_model.id is not a valid UUID: 'test-id'"} +exit status 1 +] +`; + +exports[`Testing language golang testing file finetuning/list-events/main.go 1`] = ` +[Error: Command failed: go run finetuning/list-events/main.go +2024/10/28 14:44:35 500: {"message":"failed to retrieve total size"} +exit status 1 +] +`; + +exports[`Testing language golang testing file finetuning/list-finetuned-models/main.go 1`] = `null`; + +exports[`Testing language golang testing file finetuning/list-training-step-metrics/main.go 1`] = ` +[Error: Command failed: go run finetuning/list-training-step-metrics/main.go +2024/10/28 14:44:32 400: {"message":"invalid finetune ID"} +exit status 1 +] +`; + +exports[`Testing language golang testing file finetuning/update-finetuned-model/main.go 1`] = ` +[Error: Command failed: go run finetuning/update-finetuned-model/main.go +2024/10/28 14:44:31 400: {"message":"finetuned_model.id is not a valid UUID: 'test-id'"} +exit status 1 +] +`; + +exports[`Testing language golang testing file generate-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file models-list-get/main.go 1`] = `null`; + +exports[`Testing language golang testing file rerank-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file summarize-post/main.go 1`] = `null`; + +exports[`Testing language golang testing file tokenize-post/main.go 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/ClassifyPost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/ConnectorCreate.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ConnectorCreate run +Error: Could not find or load main class ConnectorCreate +Caused by: java.lang.ClassNotFoundException: ConnectorCreate + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 3s +] +`; + +exports[`Testing language java testing file app/src/main/java/ConnectorDelete.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ConnectorDelete run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=connector not found, id = test-id}} + at com.cohere.api.resources.connectors.ConnectorsClient.delete(ConnectorsClient.java:359) + at com.cohere.api.resources.connectors.ConnectorsClient.delete(ConnectorsClient.java:317) + at ConnectorDelete.main(ConnectorDelete.java:8) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 10s +] +`; + +exports[`Testing language java testing file app/src/main/java/ConnectorGet.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ConnectorGet run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=connector not found, id = test-id}} + at com.cohere.api.resources.connectors.ConnectorsClient.get(ConnectorsClient.java:278) + at com.cohere.api.resources.connectors.ConnectorsClient.get(ConnectorsClient.java:237) + at ConnectorGet.main(ConnectorGet.java:9) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 10s +] +`; + +exports[`Testing language java testing file app/src/main/java/ConnectorPatch.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ConnectorPatch run + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:compileJava'. +> Cannot access output property 'destinationDirectory' of task ':app:compileJava'. Accessing unreadable inputs or outputs is not supported. Declare the task as untracked by using Task.doNotTrackState(). For more information, please refer to https://docs.gradle.org/8.10/userguide/incremental_build.html#sec:disable-state-tracking in the Gradle documentation. + > java.nio.file.NoSuchFileException: /Users/billy/repositories/cohere-developer-experience/snippets/java/app/build/classes/java/main/DatasetDelete.class + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 9s +] +`; + +exports[`Testing language java testing file app/src/main/java/ConnectorsIdOauthAuthorizePost.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ConnectorsIdOauthAuthorizePost run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=connector not found, id = test-id}} + at com.cohere.api.resources.connectors.ConnectorsClient.oAuthAuthorize(ConnectorsClient.java:545) + at com.cohere.api.resources.connectors.ConnectorsClient.oAuthAuthorize(ConnectorsClient.java:499) + at ConnectorsIdOauthAuthorizePost.main(ConnectorsIdOauthAuthorizePost.java:12) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 12s +] +`; + +exports[`Testing language java testing file app/src/main/java/ConnectorsList.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/DatasetDelete.java 1`] = ` +[Error: Command failed: gradle -PmainClass=DatasetDelete run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=dataset with the id 'id' not found}} + at com.cohere.api.resources.datasets.DatasetsClient.delete(DatasetsClient.java:489) + at com.cohere.api.resources.datasets.DatasetsClient.delete(DatasetsClient.java:447) + at DatasetDelete.main(DatasetDelete.java:8) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 12s +] +`; + +exports[`Testing language java testing file app/src/main/java/DatasetGet.java 1`] = ` +[Error: Command failed: gradle -PmainClass=DatasetGet run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=dataset with the id 'dataset_id' not found}} + at com.cohere.api.resources.datasets.DatasetsClient.get(DatasetsClient.java:408) + at com.cohere.api.resources.datasets.DatasetsClient.get(DatasetsClient.java:367) + at DatasetGet.main(DatasetGet.java:9) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 18s +] +`; + +exports[`Testing language java testing file app/src/main/java/DatasetPost.java 1`] = ` +[Error: Command failed: gradle -PmainClass=DatasetPost run +Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.io.File.toPath()" because "data" is null + at com.cohere.api.resources.datasets.DatasetsClient.create(DatasetsClient.java:219) + at com.cohere.api.resources.datasets.DatasetsClient.create(DatasetsClient.java:165) + at DatasetPost.main(DatasetPost.java:14) +Caused by: java.lang.NullPointerException: Cannot invoke "java.io.File.toPath()" because "data" is null + at com.cohere.api.resources.datasets.DatasetsClient.create(DatasetsClient.java:206) + ... 2 more + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 19s +] +`; + +exports[`Testing language java testing file app/src/main/java/DatasetUsageGet.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/DetokenizePost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/EmbedJobsCancel.java 1`] = ` +[Error: Command failed: gradle -PmainClass=EmbedJobsCancel run +Error: Could not find or load main class EmbedJobsCancel +Caused by: java.lang.ClassNotFoundException: EmbedJobsCancel + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 7s +] +`; + +exports[`Testing language java testing file app/src/main/java/EmbedJobsGet.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/EmbedJobsPost.java 1`] = ` +[Error: Command failed: gradle -PmainClass=EmbedJobsPost run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=dataset with id ds.id not found}} + at com.cohere.api.resources.embedjobs.EmbedJobsClient.create(EmbedJobsClient.java:179) + at com.cohere.api.resources.embedjobs.EmbedJobsClient.create(EmbedJobsClient.java:132) + at EmbedJobsPost.main(EmbedJobsPost.java:13) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 37s +] +`; + +exports[`Testing language java testing file app/src/main/java/EmbedPost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/EmebedJobsGet.java 1`] = ` +[Error: Command failed: gradle -PmainClass=EmebedJobsGet run +Exception in thread "main" CohereApiApiError{message: NotFoundError, statusCode: 404, body: {message=resource not found: could not find embed job with the ID: job_id}} + at com.cohere.api.resources.embedjobs.EmbedJobsClient.get(EmbedJobsClient.java:259) + at com.cohere.api.resources.embedjobs.EmbedJobsClient.get(EmbedJobsClient.java:218) + at EmebedJobsGet.main(EmebedJobsGet.java:9) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 6s +] +`; + +exports[`Testing language java testing file app/src/main/java/GeneratePost.java 1`] = ` +[Error: Command failed: gradle -PmainClass=GeneratePost run + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:compileJava'. +> Cannot access output property 'destinationDirectory' of task ':app:compileJava'. Accessing unreadable inputs or outputs is not supported. Declare the task as untracked by using Task.doNotTrackState(). For more information, please refer to https://docs.gradle.org/8.10/userguide/incremental_build.html#sec:disable-state-tracking in the Gradle documentation. + > java.nio.file.NoSuchFileException: /Users/billy/repositories/cohere-developer-experience/snippets/java/app/build/classes/java/main/DatasetDelete.class + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 22s +] +`; + +exports[`Testing language java testing file app/src/main/java/ModelsListGet.java 1`] = ` +[Error: Command failed: gradle -PmainClass=ModelsListGet run +Exception in thread "main" com.cohere.api.core.CohereApiError: Network error executing HTTP request + at com.cohere.api.resources.models.ModelsClient.list(ModelsClient.java:220) + at com.cohere.api.resources.models.ModelsClient.list(ModelsClient.java:137) + at com.cohere.api.resources.models.ModelsClient.list(ModelsClient.java:130) + at ModelsListGet.main(ModelsListGet.java:9) +Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type \`com.cohere.api.types.CompatibleEndpoint\` from String "embed_image": not one of the values accepted for Enum class: [rate, summarize, classify, generate, chat, embed, rerank] + at [Source: (String)"{"models":[{"name":"embed-multilingual-v3.0","endpoints":["embed","classify"],"finetuned":false,"context_length":512,"tokenizer_url":"https://storage.googleapis.com/cohere-public/tokenizers/embed-multilingual-v3.0.json","default_endpoints":[]},{"name":"rerank-multilingual-v3-cophillips","endpoints":["rerank"],"finetuned":false,"context_length":4096,"tokenizer_url":"https://storage.googleapis.com/cohere-public/tokenizers/rerank-multilingual-v3-cophillips.json","default_endpoints":[]},{"name":"emb"[truncated 4086 chars]; line: 1, column: 1211] (through reference chain: com.cohere.api.types.ListModelsResponse$Builder["models"]->java.util.ArrayList[5]->com.cohere.api.types.GetModelResponse$Builder["endpoints"]->java.util.ArrayList[0]) + at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67) + at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991) + at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219) + at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:357) + at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:231) + at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:198) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) + at com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer.deserialize(ReferenceTypeDeserializer.java:204) + at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) + at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) + at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) + at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) + at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeSetAndReturn(MethodProperty.java:158) + at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.vanillaDeserialize(BuilderBasedDeserializer.java:293) + at com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer.deserialize(BuilderBasedDeserializer.java:217) + at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) + at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4675) + at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3630) + at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3598) + at com.cohere.api.resources.models.ModelsClient.list(ModelsClient.java:173) + ... 3 more + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 21s +] +`; + +exports[`Testing language java testing file app/src/main/java/RerankPost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/SummarizePost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/TokenizePost.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/chatpost/Default.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/chatpost/Documents.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/chatpost/Stream.java 1`] = ` +[Error: Command failed: gradle -PmainClass=chatpost.Stream run +Exception in thread "main" java.lang.IllegalStateException: closed + at okio.RealBufferedSource.select(RealBufferedSource.kt:221) + at okhttp3.internal.Util.readBomAsCharset(Util.kt:265) + at okhttp3.ResponseBody$BomAwareReader.read(ResponseBody.kt:208) + at java.base/java.io.Reader.read(Reader.java:212) + at java.base/java.util.Scanner.readInput(Scanner.java:890) + at java.base/java.util.Scanner.hasNext(Scanner.java:1454) + at com.cohere.api.core.Stream$1.hasNext(Stream.java:60) + at chatpost.Stream.main(Stream.java:37) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 9s +] +`; + +exports[`Testing language java testing file app/src/main/java/chatpost/Tools.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/finetuning/CreateFinetunedModel.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.CreateFinetunedModel run +Exception in thread "main" CohereApiApiError{message: BadRequestError, statusCode: 400, body: {message=dataset with id "my-dataset-id" does not exist}} + at com.cohere.api.resources.finetuning.FinetuningClient.createFinetunedModel(FinetuningClient.java:156) + at com.cohere.api.resources.finetuning.FinetuningClient.createFinetunedModel(FinetuningClient.java:121) + at finetuning.CreateFinetunedModel.main(CreateFinetunedModel.java:13) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 11s +] +`; + +exports[`Testing language java testing file app/src/main/java/finetuning/DeleteFinetunedModel.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.DeleteFinetunedModel run +Error: Could not find or load main class finetuning.DeleteFinetunedModel +Caused by: java.lang.ClassNotFoundException: finetuning.DeleteFinetunedModel + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 6s +] +`; + +exports[`Testing language java testing file app/src/main/java/finetuning/GetFinetunedModel.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.GetFinetunedModel run + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:compileJava'. +> Cannot access output property 'destinationDirectory' of task ':app:compileJava'. Accessing unreadable inputs or outputs is not supported. Declare the task as untracked by using Task.doNotTrackState(). For more information, please refer to https://docs.gradle.org/8.10/userguide/incremental_build.html#sec:disable-state-tracking in the Gradle documentation. + > java.nio.file.NoSuchFileException: /Users/billy/repositories/cohere-developer-experience/snippets/java/app/build/classes/java/main/DatasetDelete.class + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 4s +] +`; + +exports[`Testing language java testing file app/src/main/java/finetuning/ListEvents.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.ListEvents run +Exception in thread "main" CohereApiApiError{message: InternalServerError, statusCode: 500, body: {message=failed to retrieve total size}} + at com.cohere.api.resources.finetuning.FinetuningClient.listEvents(FinetuningClient.java:428) + at com.cohere.api.resources.finetuning.FinetuningClient.listEvents(FinetuningClient.java:377) + at com.cohere.api.resources.finetuning.FinetuningClient.listEvents(FinetuningClient.java:372) + at finetuning.ListEvents.main(ListEvents.java:11) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 19s +] +`; + +exports[`Testing language java testing file app/src/main/java/finetuning/ListFinetunedModels.java 1`] = `null`; + +exports[`Testing language java testing file app/src/main/java/finetuning/ListTrainingStepMetrics.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.ListTrainingStepMetrics run +Exception in thread "main" CohereApiApiError{message: BadRequestError, statusCode: 400, body: {message=invalid finetune ID}} + at com.cohere.api.resources.finetuning.FinetuningClient.listTrainingStepMetrics(FinetuningClient.java:490) + at com.cohere.api.resources.finetuning.FinetuningClient.listTrainingStepMetrics(FinetuningClient.java:453) + at com.cohere.api.resources.finetuning.FinetuningClient.listTrainingStepMetrics(FinetuningClient.java:446) + at finetuning.ListTrainingStepMetrics.main(ListTrainingStepMetrics.java:12) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 6s +] +`; + +exports[`Testing language java testing file app/src/main/java/finetuning/UpdateFinetunedModel.java 1`] = ` +[Error: Command failed: gradle -PmainClass=finetuning.UpdateFinetunedModel run +Exception in thread "main" CohereApiApiError{message: BadRequestError, statusCode: 400, body: {message=finetuned_model.id is not a valid UUID: 'test-id'}} + at com.cohere.api.resources.finetuning.FinetuningClient.updateFinetunedModel(FinetuningClient.java:342) + at com.cohere.api.resources.finetuning.FinetuningClient.updateFinetunedModel(FinetuningClient.java:305) + at finetuning.UpdateFinetunedModel.main(UpdateFinetunedModel.java:17) + +FAILURE: Build failed with an exception. + +* What went wrong: +Execution failed for task ':app:run'. +> Process 'command '/Users/billy/.gradle/jdks/eclipse_adoptium-21-aarch64-os_x.2/jdk-21.0.4+7/Contents/Home/bin/java'' finished with non-zero exit value 1 + +* Try: +> Run with --stacktrace option to get the stack trace. +> Run with --info or --debug option to get more log output. +> Run with --scan to get full insights. +> Get more help at https://help.gradle.org. + +BUILD FAILED in 7s +] +`; + +exports[`Testing language node testing file chat-post/default.js 1`] = `null`; + +exports[`Testing language node testing file chat-post/documents.js 1`] = `null`; + +exports[`Testing language node testing file chat-post/stream.js 1`] = ` +[Error: Command failed: node chat-post/stream.js +node:internal/streams/writable:474 + throw new ERR_INVALID_ARG_TYPE( + ^ + +TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Object + at _write (node:internal/streams/writable:474:13) + at Writable.write (node:internal/streams/writable:502:10) + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/chat-post/stream.js:23:22 + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + code: 'ERR_INVALID_ARG_TYPE' +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file chat-post/tools.js 1`] = `null`; + +exports[`Testing language node testing file classify-post.js 1`] = `null`; + +exports[`Testing language node testing file connector-create.js 1`] = ` +[Error: Command failed: node connector-create.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:256 + throw new Cohere.BadRequestError(_response.error.body); + ^ + +BadRequestError: BadRequestError +Status code: 400 +Body: { + "message": "connector not reachable at https://example.com/search. error: request failed with status code 405" +} + at Connectors. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:256:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 400, + body: { + message: 'connector not reachable at https://example.com/search. error: request failed with status code 405' + } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file connector-delete.js 1`] = ` +[Error: Command failed: node connector-delete.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:522 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "connector not found, id = connector-id" +} + at Connectors. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:522:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { message: 'connector not found, id = connector-id' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file connector-get.js 1`] = ` +[Error: Command failed: node connector-get.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:392 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "connector not found, id = connector-id" +} + at Connectors. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:392:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { message: 'connector not found, id = connector-id' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file connector-patch.js 1`] = ` +[Error: Command failed: node connector-patch.js +file:///Users/billy/repositories/cohere-developer-experience/snippets/node/connector-patch.js:8 + const connector = await cohere.connectors.update(connector.id, { + ^ + +ReferenceError: Cannot access 'connector' before initialization + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/connector-patch.js:8:52 + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/connector-patch.js:14:3 + at ModuleJob.run (node:internal/modules/esm/module_job:222:25) + at async ModuleLoader.import (node:internal/modules/esm/loader:316:24) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file connectors-id-oauth-authorize-post.js 1`] = ` +[Error: Command failed: node connectors-id-oauth-authorize-post.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:795 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "connector not found, id = connector-id" +} + at Connectors. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:795:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/connectors/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { message: 'connector not found, id = connector-id' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file connectors-list.js 1`] = `null`; + +exports[`Testing language node testing file dataset-get.js 1`] = ` +[Error: Command failed: node dataset-get.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/datasets/client/Client.js:560 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "dataset with the id '<>' not found" +} + at Datasets. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/datasets/client/Client.js:560:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/datasets/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { message: "dataset with the id '<>' not found" } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file dataset-post.js 1`] = ` +[Error: Command failed: node dataset-post.js +file:///Users/billy/repositories/cohere-developer-experience/snippets/node/dataset-post.js:2 +const fs = require('fs'); + ^ + +ReferenceError: require is not defined in ES module scope, you can use import instead +This file is being treated as an ES module because it has a '.js' file extension and '/Users/billy/repositories/cohere-developer-experience/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension. + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/dataset-post.js:2:12 + at ModuleJob.run (node:internal/modules/esm/module_job:222:25) + at async ModuleLoader.import (node:internal/modules/esm/loader:316:24) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file dataset-usage-get.js 1`] = `null`; + +exports[`Testing language node testing file detokenize-post.js 1`] = `null`; + +exports[`Testing language node testing file embed-jobs-cancel.js 1`] = ` +[Error: Command failed: node embed-jobs-cancel.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:507 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "resource not found: could not find embed job with the ID: job_id" +} + at EmbedJobs. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:507:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { + message: 'resource not found: could not find embed job with the ID: job_id' + } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file embed-jobs-get.js 1`] = `null`; + +exports[`Testing language node testing file embed-jobs-post.js 1`] = ` +[Error: Command failed: node embed-jobs-post.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:253 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "dataset with id my-dataset not found" +} + at EmbedJobs. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:253:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { message: 'dataset with id my-dataset not found' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file embed-post.js 1`] = `null`; + +exports[`Testing language node testing file emebed-jobs-get.js 1`] = ` +[Error: Command failed: node emebed-jobs-get.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:383 + throw new Cohere.NotFoundError(_response.error.body); + ^ + +NotFoundError: NotFoundError +Status code: 404 +Body: { + "message": "resource not found: could not find embed job with the ID: job_id" +} + at EmbedJobs. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:383:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/embedJobs/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 404, + body: { + message: 'resource not found: could not find embed job with the ID: job_id' + } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/create-finetuned-model.js 1`] = ` +[Error: Command failed: node finetuning/create-finetuned-model.js +file:///Users/billy/repositories/cohere-developer-experience/snippets/node/finetuning/create-finetuned-model.js:12 + base_type: Cohere.Finetuning.BaseType.BaseTypeChat, + ^ + +TypeError: Cannot read properties of undefined (reading 'BaseType') + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/finetuning/create-finetuned-model.js:12:38 + at file:///Users/billy/repositories/cohere-developer-experience/snippets/node/finetuning/create-finetuned-model.js:19:3 + at ModuleJob.run (node:internal/modules/esm/module_job:222:25) + at async ModuleLoader.import (node:internal/modules/esm/loader:316:24) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/delete-finetuned-model.js 1`] = ` +[Error: Command failed: node finetuning/delete-finetuned-model.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:379 + throw new Cohere.BadRequestError(_response.error.body); + ^ + +BadRequestError: BadRequestError +Status code: 400 +Body: { + "message": "fine-tuned model ID is not a valid UUID: 'test-id'" +} + at Finetuning. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:379:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 400, + body: { message: "fine-tuned model ID is not a valid UUID: 'test-id'" } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/get-finetuned-model.js 1`] = ` +[Error: Command failed: node finetuning/get-finetuned-model.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:296 + throw new Cohere.BadRequestError(_response.error.body); + ^ + +BadRequestError: BadRequestError +Status code: 400 +Body: { + "message": "finetuned_model.id is not a valid UUID: 'test-id'" +} + at Finetuning. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:296:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 400, + body: { message: "finetuned_model.id is not a valid UUID: 'test-id'" } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/list-events.js 1`] = ` +[Error: Command failed: node finetuning/list-events.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:580 + throw new Cohere.InternalServerError(_response.error.body); + ^ + +InternalServerError: InternalServerError +Status code: 500 +Body: { + "message": "failed to retrieve total size" +} + at Finetuning. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:580:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 500, + body: { message: 'failed to retrieve total size' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/list-finetuned-models.js 1`] = `null`; + +exports[`Testing language node testing file finetuning/list-training-step-metrics.js 1`] = ` +[Error: Command failed: node finetuning/list-training-step-metrics.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:665 + throw new Cohere.BadRequestError(_response.error.body); + ^ + +BadRequestError: BadRequestError +Status code: 400 +Body: { + "message": "invalid finetune ID" +} + at Finetuning. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:665:31) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:31:58) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { + statusCode: 400, + body: { message: 'invalid finetune ID' } +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file finetuning/update-finetuned-model.js 1`] = ` +[Error: Command failed: node finetuning/update-finetuned-model.js +/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/core/schemas/builders/schema-utils/getSchemaUtils.js:23 + throw new JsonError_1.JsonError(raw.errors); + ^ + +JsonError: Missing required key "settings" + at Object.jsonOrThrow (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/core/schemas/builders/schema-utils/getSchemaUtils.js:23:19) + at Finetuning. (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:455:73) + at Generator.next () + at fulfilled (/Users/billy/repositories/cohere-developer-experience/node_modules/.pnpm/cohere-ai@7.14.0_@aws-sdk+client-sso-oidc@3.679.0_@aws-sdk+client-sts@3.679.0_/node_modules/cohere-ai/api/resources/finetuning/client/Client.js:31:58) { + errors: [ { path: [], message: 'Missing required key "settings"' } ] +} + +Node.js v20.13.0 +] +`; + +exports[`Testing language node testing file generate-post.js 1`] = `null`; + +exports[`Testing language node testing file models-list-get.js 1`] = `null`; + +exports[`Testing language node testing file rerank-post.js 1`] = `null`; + +exports[`Testing language node testing file summarize-post.js 1`] = `null`; + +exports[`Testing language node testing file tokenize-post.js 1`] = `null`; + +exports[`Testing language python testing file chat-post.py 1`] = `null`; + +exports[`Testing language python testing file chat-post/default.py 1`] = `null`; + +exports[`Testing language python testing file chat-post/documents.py 1`] = `null`; + +exports[`Testing language python testing file chat-post/stream.py 1`] = `null`; + +exports[`Testing language python testing file chat-post/tools.py 1`] = `null`; + +exports[`Testing language python testing file classify-post.py 1`] = `null`; + +exports[`Testing language python testing file connector-create.py 1`] = ` +[Error: Command failed: poetry run python connector-create.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/connector-create.py", line 4, in + response = co.connectors.create( + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/connectors/client.py", line 307, in create + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': 'connector not reachable at https://connector-example.com/search. error: Post "https://connector-example.com/search": Internal Server Error'} +] +`; + +exports[`Testing language python testing file connector-delete.py 1`] = ` +[Error: Command failed: poetry run python connector-delete.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/connector-delete.py", line 4, in + co.connectors.delete("test-id") + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/connectors/client.py", line 653, in delete + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'connector not found, id = test-id'} +] +`; + +exports[`Testing language python testing file connector-get.py 1`] = ` +[Error: Command failed: poetry run python connector-get.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/connector-get.py", line 4, in + response = co.connectors.get("test-id") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/connectors/client.py", line 495, in get + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'connector not found, id = test-id'} +] +`; + +exports[`Testing language python testing file connector-patch.py 1`] = ` +[Error: Command failed: poetry run python connector-patch.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/connector-patch.py", line 4, in + response = co.connectors.update( + ^^^^^^^^^^^^^^^^^^^^^ +TypeError: ConnectorsClient.update() got an unexpected keyword argument 'connector_id' +] +`; + +exports[`Testing language python testing file connectors-id-oauth-authorize-post.py 1`] = ` +[Error: Command failed: poetry run python connectors-id-oauth-authorize-post.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/connectors-id-oauth-authorize-post.py", line 4, in + response = co.connectors.o_auth_authorize( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: ConnectorsClient.o_auth_authorize() got an unexpected keyword argument 'connector_id' +] +`; + +exports[`Testing language python testing file connectors-list.py 1`] = `null`; + +exports[`Testing language python testing file dataset-delete.py 1`] = ` +[Error: Command failed: poetry run python dataset-delete.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/dataset-delete.py", line 6, in + co.datasets.delete("id") + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/datasets/client.py", line 840, in delete + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': "dataset with the id 'id' not found"} +] +`; + +exports[`Testing language python testing file dataset-get.py 1`] = ` +[Error: Command failed: poetry run python dataset-get.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/dataset-get.py", line 6, in + response = co.datasets.get(id="<>") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/datasets/client.py", line 681, in get + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': "dataset with the id '<>' not found"} +] +`; + +exports[`Testing language python testing file dataset-post.py 1`] = ` +[Error: Command failed: poetry run python dataset-post.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/dataset-post.py", line 8, in + data=open("./chat.jsonl", "rb"), + ^^^^^^^^^^^^^^^^^^^^^^^^^^ +FileNotFoundError: [Errno 2] No such file or directory: './chat.jsonl' +] +`; + +exports[`Testing language python testing file dataset-usage-get.py 1`] = `null`; + +exports[`Testing language python testing file detokenize-post.py 1`] = `null`; + +exports[`Testing language python testing file embed-jobs-cancel.py 1`] = ` +[Error: Command failed: poetry run python embed-jobs-cancel.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/embed-jobs-cancel.py", line 6, in + co.embed_jobs.cancel("job_id") + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/embed_jobs/client.py", line 630, in cancel + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'resource not found: could not find embed job with the ID: job_id'} +] +`; + +exports[`Testing language python testing file embed-jobs-get.py 1`] = `null`; + +exports[`Testing language python testing file embed-jobs-post.py 1`] = ` +[Error: Command failed: poetry run python embed-jobs-post.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/embed-jobs-post.py", line 6, in + job = co.embed_jobs.create( + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/embed_jobs/client.py", line 321, in create + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'dataset with id my-dataset-id not found'} +] +`; + +exports[`Testing language python testing file embed-post.py 1`] = `null`; + +exports[`Testing language python testing file emebed-jobs-get.py 1`] = ` +[Error: Command failed: poetry run python emebed-jobs-get.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/emebed-jobs-get.py", line 6, in + response = co.embed_jobs.get("job_id") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/embed_jobs/client.py", line 479, in get + raise NotFoundError( +cohere.errors.not_found_error.NotFoundError: status_code: 404, body: {'message': 'resource not found: could not find embed job with the ID: job_id'} +] +`; + +exports[`Testing language python testing file finetuning/create-finetuned-model.py 1`] = ` +[Error: Command failed: poetry run python finetuning/create-finetuned-model.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/create-finetuned-model.py", line 17, in + finetuned_model = co.finetuning.create_finetuned_model( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 220, in create_finetuned_model + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': 'proto:\\xa0(line 1:258): unknown field "train_epoch"'} +] +`; + +exports[`Testing language python testing file finetuning/delete-finetuned-model.py 1`] = ` +[Error: Command failed: poetry run python finetuning/delete-finetuned-model.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/delete-finetuned-model.py", line 4, in + co.finetuning.delete_finetuned_model("test-id") + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 436, in delete_finetuned_model + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': "fine-tuned model ID is not a valid UUID: 'test-id'"} +] +`; + +exports[`Testing language python testing file finetuning/get-finetuned-model.py 1`] = ` +[Error: Command failed: poetry run python finetuning/get-finetuned-model.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/get-finetuned-model.py", line 4, in + response = co.finetuning.get_finetuned_model("test-id") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 328, in get_finetuned_model + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': "finetuned_model.id is not a valid UUID: 'test-id'"} +] +`; + +exports[`Testing language python testing file finetuning/list-events.py 1`] = ` +[Error: Command failed: poetry run python finetuning/list-events.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/list-events.py", line 4, in + response = co.finetuning.list_events(finetuned_model_id="test-id") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 779, in list_events + raise InternalServerError( +cohere.errors.internal_server_error.InternalServerError: status_code: 500, body: {'message': 'failed to retrieve total size'} +] +`; + +exports[`Testing language python testing file finetuning/list-finetuned-models.py 1`] = `null`; + +exports[`Testing language python testing file finetuning/list-training-step-metrics.py 1`] = ` +[Error: Command failed: poetry run python finetuning/list-training-step-metrics.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/list-training-step-metrics.py", line 4, in + train_step_metrics = co.finetuning.list_training_step_metrics( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 862, in list_training_step_metrics + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': 'invalid finetune ID'} +] +`; + +exports[`Testing language python testing file finetuning/update-finetuned-model.py 1`] = ` +[Error: Command failed: poetry run python finetuning/update-finetuned-model.py +Traceback (most recent call last): + File "/Users/billy/repositories/cohere-developer-experience/snippets/python/finetuning/update-finetuned-model.py", line 8, in + finetuned_model = co.finetuning.update_finetuned_model( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/billy/Library/Caches/pypoetry/virtualenvs/py-snips-je53b3MO-py3.11/lib/python3.11/site-packages/cohere/finetuning/client.py", line 605, in update_finetuned_model + raise BadRequestError( +cohere.errors.bad_request_error.BadRequestError: status_code: 400, body: {'message': "finetuned_model.id is not a valid UUID: 'test-id'"} +] +`; + +exports[`Testing language python testing file generate-post.py 1`] = `null`; + +exports[`Testing language python testing file models-list-get.py 1`] = `null`; + +exports[`Testing language python testing file rerank-post.py 1`] = `null`; + +exports[`Testing language python testing file summarize-post.py 1`] = `null`; + +exports[`Testing language python testing file tokenize-post.py 1`] = `null`; diff --git a/packages/snippet-tester/src/tests/snippets.test.ts b/packages/snippet-tester/src/tests/snippets.test.ts new file mode 100644 index 00000000..d93311bb --- /dev/null +++ b/packages/snippet-tester/src/tests/snippets.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, test } from '@jest/globals'; +import * as fs from "fs"; +import { glob } from "glob"; +import path from 'path'; +import { config, Language } from '../config'; +import { execCmd } from '../utils'; + +// recurse up until you find a pnpm-workspace.yaml +const findPnpmWorkspaceDir = (curDir = __dirname) => { + if (curDir === "/") { + throw new Error("Could not find pnpm-workspace.yaml") + } + + if (fs.existsSync(path.resolve(curDir, "pnpm-lock.yaml"))) { + return curDir + } + + return findPnpmWorkspaceDir(fs.realpathSync(path.resolve(curDir, ".."))) +} + +const workspaceDir = findPnpmWorkspaceDir() + +describe.each(config.languages.map(o => [o.name, o] as [string, Language]))("Testing language %s", (name, lang) => { + const cwd = lang.snippetRoot(workspaceDir) + const filePaths = glob.globSync(lang.glob, { cwd }) + + test.concurrent.each(filePaths)('testing file %s', async (filePath) => { + const { error } = await execCmd(lang.exec(filePath), cwd) + + expect(error).toMatchSnapshot() + }, 1000000); +}) \ No newline at end of file diff --git a/packages/snippet-tester/src/utils.ts b/packages/snippet-tester/src/utils.ts new file mode 100644 index 00000000..19bc9ded --- /dev/null +++ b/packages/snippet-tester/src/utils.ts @@ -0,0 +1,63 @@ +import * as childProcess from "child_process" +import fs from "fs" + +export const findAndReplace = async (paths: string[], find: RegExp, replace: string) => { + await Promise.all(paths.map(async (path) => { + const file = await fs.promises.readFile(path) + const content = file.toString() + const newContent = content.replace(find, replace) + await fs.promises.writeFile(path, newContent) + })) +} + +export const execCmd = async (cmd: string, cwd: string): Promise<{error: null | childProcess.ExecException, stderr: string, stdout: string}> => { + return new Promise((resolve, reject) => { + try { + childProcess.exec(cmd, {cwd}, (error, stdout, stderr) => { + if (error) { + resolve({error, stderr, stdout}) + } + resolve({ error, stderr, stdout}) + }) + } catch (error) { + resolve({error, stderr: '', stdout: ''}) + } + }) +} + +export const getFilesByExtension = async (base: string, extension: string): Promise => { + const list = await fs.promises.readdir(base) + const all = await Promise.all(list.flatMap((file) => { + const filepath = `${base}/${file}` + + if (fs.statSync(filepath).isDirectory()) { + return getFilesByExtension(filepath, extension) + } else if (file.endsWith(extension)) { + return filepath + } + + return [] + })) + + return all.flat() +} + +export const execTypescriptFile = async (projectRoot: string, file: string) => { + const cmd = `npx ts-node ${file}` + return execCmd(cmd, projectRoot) +} + +export const execJavaFile = async (projectRoot: string, file: string) => { + const cmd = `java ${file}` + return execCmd(cmd, projectRoot) +} + +export const execPythonFile = async (projectRoot: string, file: string) => { + const cmd = `python ${file}` + return execCmd(cmd, projectRoot) +} + +export const execGoFile = async (projectRoot: string, file: string) => { + const cmd = `go run ${file}` + return execCmd(cmd, projectRoot) +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ded4ffd3..52ae3055 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,13 +8,15 @@ importers: .: dependencies: - gray-matter: - specifier: ^4.0.3 - version: 4.0.3 - + cohere-ai: + specifier: ^7.14.0 + version: 7.14.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) fern-api: specifier: ^0.41.16 version: 0.41.16 + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 react: specifier: ^18.3.1 version: 18.3.1 @@ -30,7 +32,56 @@ importers: version: 1.2.1 tailwindcss: specifier: ^3.4.4 - version: 3.4.4 + version: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + + packages/snippet-tester: + dependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@pnpm/find-workspace-dir': + specifier: ^7.0.2 + version: 7.0.2 + cohere: + specifier: ^1.1.1 + version: 1.1.1 + cohere-ai: + specifier: ^7.14.0 + version: 7.14.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + convict: + specifier: ^6.2.4 + version: 6.2.4 + glob: + specifier: ^11.0.0 + version: 11.0.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + nodemon: + specifier: ^3.1.7 + version: 3.1.7 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.14.10)(typescript@5.6.3) + devDependencies: + '@babel/core': + specifier: ^7.25.8 + version: 7.26.0 + '@babel/preset-env': + specifier: ^7.25.8 + version: 7.26.0(@babel/core@7.26.0) + '@babel/preset-typescript': + specifier: ^7.25.7 + version: 7.26.0(@babel/core@7.26.0) + '@types/convict': + specifier: ^6.1.6 + version: 6.1.6 + '@types/jest': + specifier: ^29.5.13 + version: 29.5.14 + babel-jest: + specifier: ^29.7.0 + version: 29.7.0(@babel/core@7.26.0) packages: @@ -38,724 +89,5437 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@aws-crypto/crc32@3.0.0': + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@aws-crypto/util@3.0.0': + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@aws-sdk/client-cognito-identity@3.679.0': + resolution: {integrity: sha512-vJzQ6QpaMu8itJMe3FH1/0rwMjL0ELh63iLTxiAmhiV/SvCwNNoSFLd2HdKxbV0Bg/x8lUiPVq3pl6+cxaIrEQ==} + engines: {node: '>=16.0.0'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + '@aws-sdk/client-sagemaker@3.679.0': + resolution: {integrity: sha512-n1hTHpQl6LwNkwn4vLmtbwkNoX2jxtiliRd0IaHR1CfAQvKNTfQ52mARWr73hR+/YcVsBzPx8sYKq2XHWArHKQ==} + engines: {node: '>=16.0.0'} - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} + '@aws-sdk/client-sso-oidc@3.679.0': + resolution: {integrity: sha512-/dBYWcCwbA/id4sFCIVZvf0UsvzHCC68SryxeNQk/PDkY9N4n5yRcMUkZDaEyQCjowc3kY4JOXp2AdUP037nhA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.679.0 - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + '@aws-sdk/client-sso@3.679.0': + resolution: {integrity: sha512-/0cAvYnpOZTo/Y961F1kx2fhDDLUYZ0SQQ5/75gh3xVImLj7Zw+vp74ieqFbqWLYGMaq8z1Arr9A8zG95mbLdg==} + engines: {node: '>=16.0.0'} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@aws-sdk/client-sts@3.679.0': + resolution: {integrity: sha512-3CvrT8w1RjFu1g8vKA5Azfr5V83r2/b68Ock43WE003Bq/5Y38mwmYX7vk0fPHzC3qejt4YMAWk/C3fSKOy25g==} + engines: {node: '>=16.0.0'} - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + '@aws-sdk/core@3.679.0': + resolution: {integrity: sha512-CS6PWGX8l4v/xyvX8RtXnBisdCa5+URzKd0L6GvHChype9qKUVxO/Gg6N/y43Hvg7MNWJt9FBPNWIxUB+byJwg==} + engines: {node: '>=16.0.0'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + '@aws-sdk/credential-provider-cognito-identity@3.679.0': + resolution: {integrity: sha512-XvWd6RPk7TA7tmqITT+NXvJ6ltJP8BUtLO1NAvja4HKExPKR9HAyoOeeH7KM3lVRED4e4LUnLb3fzteH20IXaA==} + engines: {node: '>=16.0.0'} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + '@aws-sdk/credential-provider-env@3.679.0': + resolution: {integrity: sha512-EdlTYbzMm3G7VUNAMxr9S1nC1qUNqhKlAxFU8E7cKsAe8Bp29CD5HAs3POc56AVo9GC4yRIS+/mtlZSmrckzUA==} + engines: {node: '>=16.0.0'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + '@aws-sdk/credential-provider-http@3.679.0': + resolution: {integrity: sha512-ZoKLubW5DqqV1/2a3TSn+9sSKg0T8SsYMt1JeirnuLJF0mCoYFUaWMyvxxKuxPoqvUsaycxKru4GkpJ10ltNBw==} + engines: {node: '>=16.0.0'} - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + '@aws-sdk/credential-provider-ini@3.679.0': + resolution: {integrity: sha512-Rg7t8RwUzKcumpipG4neZqaeJ6DF+Bco1+FHn5BZB68jpvwvjBjcQUuWkxj18B6ctYHr1fkunnzeKEn/+vy7+w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.679.0 - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + '@aws-sdk/credential-provider-node@3.679.0': + resolution: {integrity: sha512-E3lBtaqCte8tWs6Rkssc8sLzvGoJ10TLGvpkijOlz43wPd6xCRh1YLwg6zolf9fVFtEyUs/GsgymiASOyxhFtw==} + engines: {node: '>=16.0.0'} - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + '@aws-sdk/credential-provider-process@3.679.0': + resolution: {integrity: sha512-u/p4TV8kQ0zJWDdZD4+vdQFTMhkDEJFws040Gm113VHa/Xo1SYOjbpvqeuFoz6VmM0bLvoOWjxB9MxnSQbwKpQ==} + engines: {node: '>=16.0.0'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + '@aws-sdk/credential-provider-sso@3.679.0': + resolution: {integrity: sha512-SAtWonhi9asxn0ukEbcE81jkyanKgqpsrtskvYPpO9Z9KOednM4Cqt6h1bfcS9zaHjN2zu815Gv8O7WiV+F/DQ==} + engines: {node: '>=16.0.0'} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + '@aws-sdk/credential-provider-web-identity@3.679.0': + resolution: {integrity: sha512-a74tLccVznXCaBefWPSysUcLXYJiSkeUmQGtalNgJ1vGkE36W5l/8czFiiowdWdKWz7+x6xf0w+Kjkjlj42Ung==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.679.0 - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} + '@aws-sdk/credential-providers@3.679.0': + resolution: {integrity: sha512-ZjZZb6OERw/UKlSqcJ24AUJIf/ekDLPZrPpo0kPMV70EQ0GkBiklIZ8qULu9bEcI2I4UIapBKRiXTrK4gA6YHg==} + engines: {node: '>=16.0.0'} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + '@aws-sdk/middleware-host-header@3.679.0': + resolution: {integrity: sha512-y176HuQ8JRY3hGX8rQzHDSbCl9P5Ny9l16z4xmaiLo+Qfte7ee4Yr3yaAKd7GFoJ3/Mhud2XZ37fR015MfYl2w==} + engines: {node: '>=16.0.0'} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + '@aws-sdk/middleware-logger@3.679.0': + resolution: {integrity: sha512-0vet8InEj7nvIvGKk+ch7bEF5SyZ7Us9U7YTEgXPrBNStKeRUsgwRm0ijPWWd0a3oz2okaEwXsFl7G/vI0XiEA==} + engines: {node: '>=16.0.0'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} + '@aws-sdk/middleware-recursion-detection@3.679.0': + resolution: {integrity: sha512-sQoAZFsQiW/LL3DfKMYwBoGjYDEnMbA9WslWN8xneCmBAwKo6IcSksvYs23PP8XMIoBGe2I2J9BSr654XWygTQ==} + engines: {node: '>=16.0.0'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + '@aws-sdk/middleware-user-agent@3.679.0': + resolution: {integrity: sha512-4hdeXhPDURPqQLPd9jCpUEo9fQITXl3NM3W1MwcJpE0gdUM36uXkQOYsTPeeU/IRCLVjK8Htlh2oCaM9iJrLCA==} + engines: {node: '>=16.0.0'} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + '@aws-sdk/protocol-http@3.374.0': + resolution: {integrity: sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==} + engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/protocol-http - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + '@aws-sdk/region-config-resolver@3.679.0': + resolution: {integrity: sha512-Ybx54P8Tg6KKq5ck7uwdjiKif7n/8g1x+V0V9uTjBjRWqaIgiqzXwKWoPj6NCNkE7tJNtqI4JrNxp/3S3HvmRw==} + engines: {node: '>=16.0.0'} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + '@aws-sdk/signature-v4@3.374.0': + resolution: {integrity: sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==} + engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/signature-v4 - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + '@aws-sdk/token-providers@3.679.0': + resolution: {integrity: sha512-1/+Zso/x2jqgutKixYFQEGli0FELTgah6bm7aB+m2FAWH4Hz7+iMUsazg6nSWm714sG9G3h5u42Dmpvi9X6/hA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.679.0 - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true + '@aws-sdk/types@3.679.0': + resolution: {integrity: sha512-NwVq8YvInxQdJ47+zz4fH3BRRLC6lL+WLkvr242PVBbUOLRyK/lkwHlfiKUoeVIMyK5NF+up6TRg71t/8Bny6Q==} + engines: {node: '>=16.0.0'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + '@aws-sdk/util-endpoints@3.679.0': + resolution: {integrity: sha512-YL6s4Y/1zC45OvddvgE139fjeWSKKPgLlnfrvhVL7alNyY9n7beR4uhoDpNrt5mI6sn9qiBF17790o+xLAXjjg==} + engines: {node: '>=16.0.0'} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + '@aws-sdk/util-locate-window@3.679.0': + resolution: {integrity: sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==} + engines: {node: '>=16.0.0'} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + '@aws-sdk/util-user-agent-browser@3.679.0': + resolution: {integrity: sha512-CusSm2bTBG1kFypcsqU8COhnYc6zltobsqs3nRrvYqYaOqtMnuE46K4XTWpnzKgwDejgZGOE+WYyprtAxrPvmQ==} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + '@aws-sdk/util-user-agent-node@3.679.0': + resolution: {integrity: sha512-Bw4uXZ+NU5ed6TNfo4tBbhBSW+2eQxXYjYBGl5gLUNUpg2pDFToQAP6rXBFiwcG52V2ny5oLGiD82SoYuYkAVg==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + '@babel/code-frame@7.26.0': + resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + engines: {node: '>=6.9.0'} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + '@babel/compat-data@7.26.0': + resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + engines: {node: '>=6.9.0'} - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + '@babel/generator@7.26.0': + resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + engines: {node: '>=6.9.0'} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} - fern-api@0.41.16: - resolution: {integrity: sha512-LykhNvMl0NjTnCu6kHiYV9a2Y3iX5HMFlD6dO1A6J1WfvH8mcKYzcz/R/Md9/h6QygSeuuFGAo/K3JJ9e3j4QQ==} - hasBin: true + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} + engines: {node: '>=6.9.0'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} - foreground-child@3.2.1: - resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} - engines: {node: '>=14'} + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - is-core-module@2.14.0: - resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} - engines: {node: '>= 0.4'} + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + '@babel/parser@7.26.1': + resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + engines: {node: '>=6.0.0'} hasBin: true - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 - only-allow@1.2.1: - resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==} - hasBin: true + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.0.0 + '@babel/core': ^7.0.0-0 - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: ^8.4.21 + '@babel/core': ^7.0.0-0 - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-typescript@7.26.0': + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: - postcss: - optional: true - ts-node: + node-notifier: optional: true - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - postcss: ^8.2.14 + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - postcss-selector-parser@6.1.1: - resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} - engines: {node: '>=4'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} - engines: {node: ^10 || ^12 || >=14} + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pnpm/constants@9.0.0': + resolution: {integrity: sha512-cyZ12A7j1BzeQ9nr5HBdlSLxN1VWnCG/1xjdgDUL/WDlgmVa3k6TI2CktTHjR5w/rWbKudpIaMAmJJk9w+cTRQ==} + engines: {node: '>=18.12'} + + '@pnpm/error@6.0.2': + resolution: {integrity: sha512-3/wWJYjUyO9ToLaZpBASYIBg87C4DBZ8yfzrt0cSCTbRFDBUNdH0dzwfVKEqhR7A9tpRMyeoRIzPUVxWc+U+RQ==} + engines: {node: '>=18.12'} + + '@pnpm/find-workspace-dir@7.0.2': + resolution: {integrity: sha512-BAcRbWXNBeA9ur+d/ccO2dvxogHr6+6qtiM1AgXzJ6gSfNqJRb6tzgRDgIJGouve9s2P6Qsqr4TbFOltEKuLJg==} + engines: {node: '>=18.12'} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@smithy/abort-controller@3.1.6': + resolution: {integrity: sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==} + engines: {node: '>=16.0.0'} + + '@smithy/config-resolver@3.0.10': + resolution: {integrity: sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw==} + engines: {node: '>=16.0.0'} + + '@smithy/core@2.5.1': + resolution: {integrity: sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg==} + engines: {node: '>=16.0.0'} + + '@smithy/credential-provider-imds@3.2.5': + resolution: {integrity: sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-codec@1.1.0': + resolution: {integrity: sha512-3tEbUb8t8an226jKB6V/Q2XU/J53lCwCzULuBPEaF4JjSh+FlCMp7TmogE/Aij5J9DwlsZ4VAD/IRDuQ/0ZtMw==} + + '@smithy/fetch-http-handler@3.2.9': + resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==} + + '@smithy/fetch-http-handler@4.0.0': + resolution: {integrity: sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g==} + + '@smithy/hash-node@3.0.8': + resolution: {integrity: sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng==} + engines: {node: '>=16.0.0'} + + '@smithy/invalid-dependency@3.0.8': + resolution: {integrity: sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q==} + + '@smithy/is-array-buffer@1.1.0': + resolution: {integrity: sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-content-length@3.0.10': + resolution: {integrity: sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-endpoint@3.2.1': + resolution: {integrity: sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-retry@3.0.25': + resolution: {integrity: sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-serde@3.0.8': + resolution: {integrity: sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA==} + engines: {node: '>=16.0.0'} + + '@smithy/middleware-stack@3.0.8': + resolution: {integrity: sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA==} + engines: {node: '>=16.0.0'} + + '@smithy/node-config-provider@3.1.9': + resolution: {integrity: sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew==} + engines: {node: '>=16.0.0'} + + '@smithy/node-http-handler@3.2.5': + resolution: {integrity: sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w==} + engines: {node: '>=16.0.0'} + + '@smithy/property-provider@3.1.8': + resolution: {integrity: sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA==} + engines: {node: '>=16.0.0'} + + '@smithy/protocol-http@1.2.0': + resolution: {integrity: sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==} + engines: {node: '>=14.0.0'} + + '@smithy/protocol-http@4.1.5': + resolution: {integrity: sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-builder@3.0.8': + resolution: {integrity: sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA==} + engines: {node: '>=16.0.0'} + + '@smithy/querystring-parser@3.0.8': + resolution: {integrity: sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg==} + engines: {node: '>=16.0.0'} + + '@smithy/service-error-classification@3.0.8': + resolution: {integrity: sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g==} + engines: {node: '>=16.0.0'} + + '@smithy/shared-ini-file-loader@3.1.9': + resolution: {integrity: sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA==} + engines: {node: '>=16.0.0'} + + '@smithy/signature-v4@1.1.0': + resolution: {integrity: sha512-fDo3m7YqXBs7neciOePPd/X9LPm5QLlDMdIC4m1H6dgNLnXfLMFNIxEfPyohGA8VW9Wn4X8lygnPSGxDZSmp0Q==} + engines: {node: '>=14.0.0'} + + '@smithy/signature-v4@4.2.1': + resolution: {integrity: sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg==} + engines: {node: '>=16.0.0'} + + '@smithy/smithy-client@3.4.2': + resolution: {integrity: sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA==} + engines: {node: '>=16.0.0'} + + '@smithy/types@1.2.0': + resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} + engines: {node: '>=14.0.0'} + + '@smithy/types@3.6.0': + resolution: {integrity: sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w==} + engines: {node: '>=16.0.0'} + + '@smithy/url-parser@3.0.8': + resolution: {integrity: sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg==} + + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-buffer-from@1.1.0': + resolution: {integrity: sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-defaults-mode-browser@3.0.25': + resolution: {integrity: sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-defaults-mode-node@3.0.25': + resolution: {integrity: sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g==} + engines: {node: '>= 10.0.0'} + + '@smithy/util-endpoints@2.1.4': + resolution: {integrity: sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-hex-encoding@1.1.0': + resolution: {integrity: sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==} + engines: {node: '>=14.0.0'} + + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + + '@smithy/util-middleware@1.1.0': + resolution: {integrity: sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==} + engines: {node: '>=14.0.0'} + + '@smithy/util-middleware@3.0.8': + resolution: {integrity: sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-retry@3.0.8': + resolution: {integrity: sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow==} + engines: {node: '>=16.0.0'} + + '@smithy/util-stream@3.2.1': + resolution: {integrity: sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A==} + engines: {node: '>=16.0.0'} + + '@smithy/util-uri-escape@1.1.0': + resolution: {integrity: sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==} + engines: {node: '>=14.0.0'} + + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + + '@smithy/util-utf8@1.1.0': + resolution: {integrity: sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + + '@smithy/util-waiter@3.1.7': + resolution: {integrity: sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ==} + engines: {node: '>=16.0.0'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/convict@6.1.6': + resolution: {integrity: sha512-1B6jqWHWQud+7yyWAqbxnPmzlHrrOtJzZr1DhhYJ/NbpS4irfZSnq+N5Fm76J9LNRlUZvCmYxTVhhohWRvtqHw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/node@20.14.10': + resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001673: + resolution: {integrity: sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + cohere-ai@7.14.0: + resolution: {integrity: sha512-hSo2/tFV29whjFFtVtdS7kHmtUsjfMO1sgwE/d5bhOE4O7Vkj5G1R9lLIqkIprp/+rrvCq3HGvEaOgry7xRcDA==} + + cohere@1.1.1: + resolution: {integrity: sha512-D116FKTuauCShJjPuOAFnkyAPMhV/6f403+yPZwyyFY6gErK1AA41y9rQdBvj8eHDZ9sXVJ6TzmzObVfAFh3ig==} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + convict@6.2.4: + resolution: {integrity: sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==} + engines: {node: '>=6'} + + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.47: + resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fern-api@0.41.16: + resolution: {integrity: sha512-LykhNvMl0NjTnCu6kHiYV9a2Y3iX5HMFlD6dO1A6J1WfvH8mcKYzcz/R/Md9/h6QygSeuuFGAo/K3JJ9e3j4QQ==} + hasBin: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + + form-data-encoder@4.0.2: + resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==} + engines: {node: '>= 18'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + formdata-node@6.0.3: + resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==} + engines: {node: '>= 18'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-base64@3.7.2: + resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.0.1: + resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nodemon@3.1.7: + resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==} + engines: {node: '>=10'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + only-allow@1.2.1: + resolution: {integrity: sha512-M7CJbmv7UCopc0neRKdzfoGWaVZC+xC1925GitKH9EAqYFzX9//25Q7oX4+jw0tiCCj+t5l6VZh8UPH23NZkMA==} + hasBin: true + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.0.1: + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@3.4.4: + resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + engines: {node: '>=14.0.0'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@aws-crypto/crc32@3.0.0': + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.679.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-locate-window': 3.679.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.0 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.679.0 + tslib: 2.8.0 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.0 + + '@aws-crypto/util@3.0.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.0 + + '@aws-sdk/client-cognito-identity@3.679.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-node': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/middleware-host-header': 3.679.0 + '@aws-sdk/middleware-logger': 3.679.0 + '@aws-sdk/middleware-recursion-detection': 3.679.0 + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/region-config-resolver': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@aws-sdk/util-user-agent-browser': 3.679.0 + '@aws-sdk/util-user-agent-node': 3.679.0 + '@smithy/config-resolver': 3.0.10 + '@smithy/core': 2.5.1 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.8 + '@smithy/invalid-dependency': 3.0.8 + '@smithy/middleware-content-length': 3.0.10 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-retry': 3.0.25 + '@smithy/middleware-serde': 3.0.8 + '@smithy/middleware-stack': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.25 + '@smithy/util-defaults-mode-node': 3.0.25 + '@smithy/util-endpoints': 2.1.4 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sagemaker@3.679.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-node': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/middleware-host-header': 3.679.0 + '@aws-sdk/middleware-logger': 3.679.0 + '@aws-sdk/middleware-recursion-detection': 3.679.0 + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/region-config-resolver': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@aws-sdk/util-user-agent-browser': 3.679.0 + '@aws-sdk/util-user-agent-node': 3.679.0 + '@smithy/config-resolver': 3.0.10 + '@smithy/core': 2.5.1 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.8 + '@smithy/invalid-dependency': 3.0.8 + '@smithy/middleware-content-length': 3.0.10 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-retry': 3.0.25 + '@smithy/middleware-serde': 3.0.8 + '@smithy/middleware-stack': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.25 + '@smithy/util-defaults-mode-node': 3.0.25 + '@smithy/util-endpoints': 2.1.4 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.7 + '@types/uuid': 9.0.8 + tslib: 2.8.0 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-node': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/middleware-host-header': 3.679.0 + '@aws-sdk/middleware-logger': 3.679.0 + '@aws-sdk/middleware-recursion-detection': 3.679.0 + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/region-config-resolver': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@aws-sdk/util-user-agent-browser': 3.679.0 + '@aws-sdk/util-user-agent-node': 3.679.0 + '@smithy/config-resolver': 3.0.10 + '@smithy/core': 2.5.1 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.8 + '@smithy/invalid-dependency': 3.0.8 + '@smithy/middleware-content-length': 3.0.10 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-retry': 3.0.25 + '@smithy/middleware-serde': 3.0.8 + '@smithy/middleware-stack': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.25 + '@smithy/util-defaults-mode-node': 3.0.25 + '@smithy/util-endpoints': 2.1.4 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.679.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/middleware-host-header': 3.679.0 + '@aws-sdk/middleware-logger': 3.679.0 + '@aws-sdk/middleware-recursion-detection': 3.679.0 + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/region-config-resolver': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@aws-sdk/util-user-agent-browser': 3.679.0 + '@aws-sdk/util-user-agent-node': 3.679.0 + '@smithy/config-resolver': 3.0.10 + '@smithy/core': 2.5.1 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.8 + '@smithy/invalid-dependency': 3.0.8 + '@smithy/middleware-content-length': 3.0.10 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-retry': 3.0.25 + '@smithy/middleware-serde': 3.0.8 + '@smithy/middleware-stack': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.25 + '@smithy/util-defaults-mode-node': 3.0.25 + '@smithy/util-endpoints': 2.1.4 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.679.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-node': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/middleware-host-header': 3.679.0 + '@aws-sdk/middleware-logger': 3.679.0 + '@aws-sdk/middleware-recursion-detection': 3.679.0 + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/region-config-resolver': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@aws-sdk/util-user-agent-browser': 3.679.0 + '@aws-sdk/util-user-agent-node': 3.679.0 + '@smithy/config-resolver': 3.0.10 + '@smithy/core': 2.5.1 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/hash-node': 3.0.8 + '@smithy/invalid-dependency': 3.0.8 + '@smithy/middleware-content-length': 3.0.10 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-retry': 3.0.25 + '@smithy/middleware-serde': 3.0.8 + '@smithy/middleware-stack': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.25 + '@smithy/util-defaults-mode-node': 3.0.25 + '@smithy/util-endpoints': 2.1.4 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/core': 2.5.1 + '@smithy/node-config-provider': 3.1.9 + '@smithy/property-provider': 3.1.8 + '@smithy/protocol-http': 4.1.5 + '@smithy/signature-v4': 4.2.1 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/util-middleware': 3.0.8 + fast-xml-parser: 4.4.1 + tslib: 2.8.0 + + '@aws-sdk/credential-provider-cognito-identity@3.679.0': + dependencies: + '@aws-sdk/client-cognito-identity': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-env@3.679.0': + dependencies: + '@aws-sdk/core': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/credential-provider-http@3.679.0': + dependencies: + '@aws-sdk/core': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/fetch-http-handler': 3.2.9 + '@smithy/node-http-handler': 3.2.5 + '@smithy/property-provider': 3.1.8 + '@smithy/protocol-http': 4.1.5 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/util-stream': 3.2.1 + tslib: 2.8.0 + + '@aws-sdk/credential-provider-ini@3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0)': + dependencies: + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-env': 3.679.0 + '@aws-sdk/credential-provider-http': 3.679.0 + '@aws-sdk/credential-provider-process': 3.679.0 + '@aws-sdk/credential-provider-sso': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + '@aws-sdk/credential-provider-web-identity': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/types': 3.679.0 + '@smithy/credential-provider-imds': 3.2.5 + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-node@3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.679.0 + '@aws-sdk/credential-provider-http': 3.679.0 + '@aws-sdk/credential-provider-ini': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/credential-provider-process': 3.679.0 + '@aws-sdk/credential-provider-sso': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + '@aws-sdk/credential-provider-web-identity': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/types': 3.679.0 + '@smithy/credential-provider-imds': 3.2.5 + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + + '@aws-sdk/credential-provider-process@3.679.0': + dependencies: + '@aws-sdk/core': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/credential-provider-sso@3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))': + dependencies: + '@aws-sdk/client-sso': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/token-providers': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.679.0(@aws-sdk/client-sts@3.679.0)': + dependencies: + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/credential-providers@3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))': + dependencies: + '@aws-sdk/client-cognito-identity': 3.679.0 + '@aws-sdk/client-sso': 3.679.0 + '@aws-sdk/client-sts': 3.679.0 + '@aws-sdk/core': 3.679.0 + '@aws-sdk/credential-provider-cognito-identity': 3.679.0 + '@aws-sdk/credential-provider-env': 3.679.0 + '@aws-sdk/credential-provider-http': 3.679.0 + '@aws-sdk/credential-provider-ini': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/credential-provider-node': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/credential-provider-process': 3.679.0 + '@aws-sdk/credential-provider-sso': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + '@aws-sdk/credential-provider-web-identity': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/types': 3.679.0 + '@smithy/credential-provider-imds': 3.2.5 + '@smithy/property-provider': 3.1.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + + '@aws-sdk/middleware-host-header@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/middleware-logger@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/middleware-recursion-detection@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/middleware-user-agent@3.679.0': + dependencies: + '@aws-sdk/core': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@aws-sdk/util-endpoints': 3.679.0 + '@smithy/core': 2.5.1 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/protocol-http@3.374.0': + dependencies: + '@smithy/protocol-http': 1.2.0 + tslib: 2.8.0 + + '@aws-sdk/region-config-resolver@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/node-config-provider': 3.1.9 + '@smithy/types': 3.6.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.8 + tslib: 2.8.0 + + '@aws-sdk/signature-v4@3.374.0': + dependencies: + '@smithy/signature-v4': 1.1.0 + tslib: 2.8.0 + + '@aws-sdk/token-providers@3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.679.0(@aws-sdk/client-sts@3.679.0) + '@aws-sdk/types': 3.679.0 + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/types@3.679.0': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/util-endpoints@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/types': 3.6.0 + '@smithy/util-endpoints': 2.1.4 + tslib: 2.8.0 + + '@aws-sdk/util-locate-window@3.679.0': + dependencies: + tslib: 2.8.0 + + '@aws-sdk/util-user-agent-browser@3.679.0': + dependencies: + '@aws-sdk/types': 3.679.0 + '@smithy/types': 3.6.0 + bowser: 2.11.0 + tslib: 2.8.0 + + '@aws-sdk/util-user-agent-node@3.679.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.679.0 + '@aws-sdk/types': 3.679.0 + '@smithy/node-config-provider': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.8.0 + + '@babel/code-frame@7.26.0': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/compat-data@7.26.0': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.0': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.1.1 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.7(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + + '@babel/parser@7.26.1': + dependencies: + '@babel/types': 7.26.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + + '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@0.2.3': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.14.10 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.14.10 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.7 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.14.10 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pnpm/constants@9.0.0': {} + + '@pnpm/error@6.0.2': + dependencies: + '@pnpm/constants': 9.0.0 + + '@pnpm/find-workspace-dir@7.0.2': + dependencies: + '@pnpm/error': 6.0.2 + find-up: 5.0.0 + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@smithy/abort-controller@3.1.6': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/config-resolver@3.0.10': + dependencies: + '@smithy/node-config-provider': 3.1.9 + '@smithy/types': 3.6.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.8 + tslib: 2.8.0 + + '@smithy/core@2.5.1': + dependencies: + '@smithy/middleware-serde': 3.0.8 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-stream': 3.2.1 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + + '@smithy/credential-provider-imds@3.2.5': + dependencies: + '@smithy/node-config-provider': 3.1.9 + '@smithy/property-provider': 3.1.8 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + tslib: 2.8.0 + + '@smithy/eventstream-codec@1.1.0': + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 + tslib: 2.8.0 + + '@smithy/fetch-http-handler@3.2.9': + dependencies: + '@smithy/protocol-http': 4.1.5 + '@smithy/querystring-builder': 3.0.8 + '@smithy/types': 3.6.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.8.0 + + '@smithy/fetch-http-handler@4.0.0': + dependencies: + '@smithy/protocol-http': 4.1.5 + '@smithy/querystring-builder': 3.0.8 + '@smithy/types': 3.6.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.8.0 + + '@smithy/hash-node@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + + '@smithy/invalid-dependency@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/is-array-buffer@1.1.0': + dependencies: + tslib: 2.8.0 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.0 + + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/middleware-content-length@3.0.10': + dependencies: + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/middleware-endpoint@3.2.1': + dependencies: + '@smithy/core': 2.5.1 + '@smithy/middleware-serde': 3.0.8 + '@smithy/node-config-provider': 3.1.9 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + '@smithy/url-parser': 3.0.8 + '@smithy/util-middleware': 3.0.8 + tslib: 2.8.0 + + '@smithy/middleware-retry@3.0.25': + dependencies: + '@smithy/node-config-provider': 3.1.9 + '@smithy/protocol-http': 4.1.5 + '@smithy/service-error-classification': 3.0.8 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-retry': 3.0.8 + tslib: 2.8.0 + uuid: 9.0.1 + + '@smithy/middleware-serde@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/middleware-stack@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/node-config-provider@3.1.9': + dependencies: + '@smithy/property-provider': 3.1.8 + '@smithy/shared-ini-file-loader': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/node-http-handler@3.2.5': + dependencies: + '@smithy/abort-controller': 3.1.6 + '@smithy/protocol-http': 4.1.5 + '@smithy/querystring-builder': 3.0.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/property-provider@3.1.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/protocol-http@1.2.0': + dependencies: + '@smithy/types': 1.2.0 + tslib: 2.8.0 + + '@smithy/protocol-http@4.1.5': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/querystring-builder@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.8.0 + + '@smithy/querystring-parser@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/service-error-classification@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + + '@smithy/shared-ini-file-loader@3.1.9': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/signature-v4@1.1.0': + dependencies: + '@smithy/eventstream-codec': 1.1.0 + '@smithy/is-array-buffer': 1.1.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 + '@smithy/util-middleware': 1.1.0 + '@smithy/util-uri-escape': 1.1.0 + '@smithy/util-utf8': 1.1.0 + tslib: 2.8.0 + + '@smithy/signature-v4@4.2.1': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.8 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + + '@smithy/smithy-client@3.4.2': + dependencies: + '@smithy/core': 2.5.1 + '@smithy/middleware-endpoint': 3.2.1 + '@smithy/middleware-stack': 3.0.8 + '@smithy/protocol-http': 4.1.5 + '@smithy/types': 3.6.0 + '@smithy/util-stream': 3.2.1 + tslib: 2.8.0 + + '@smithy/types@1.2.0': + dependencies: + tslib: 2.8.0 + + '@smithy/types@3.6.0': + dependencies: + tslib: 2.8.0 + + '@smithy/url-parser@3.0.8': + dependencies: + '@smithy/querystring-parser': 3.0.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + + '@smithy/util-body-length-browser@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-body-length-node@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-buffer-from@1.1.0': + dependencies: + '@smithy/is-array-buffer': 1.1.0 + tslib: 2.8.0 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.0 + + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.8.0 + + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-defaults-mode-browser@3.0.25': + dependencies: + '@smithy/property-provider': 3.1.8 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + bowser: 2.11.0 + tslib: 2.8.0 + + '@smithy/util-defaults-mode-node@3.0.25': + dependencies: + '@smithy/config-resolver': 3.0.10 + '@smithy/credential-provider-imds': 3.2.5 + '@smithy/node-config-provider': 3.1.9 + '@smithy/property-provider': 3.1.8 + '@smithy/smithy-client': 3.4.2 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/util-endpoints@2.1.4': + dependencies: + '@smithy/node-config-provider': 3.1.9 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/util-hex-encoding@1.1.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-middleware@1.1.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-middleware@3.0.8': + dependencies: + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/util-retry@3.0.8': + dependencies: + '@smithy/service-error-classification': 3.0.8 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@smithy/util-stream@3.2.1': + dependencies: + '@smithy/fetch-http-handler': 4.0.0 + '@smithy/node-http-handler': 3.2.5 + '@smithy/types': 3.6.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.8.0 + + '@smithy/util-uri-escape@1.1.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.8.0 + + '@smithy/util-utf8@1.1.0': + dependencies: + '@smithy/util-buffer-from': 1.1.0 + tslib: 2.8.0 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.0 + + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.8.0 + + '@smithy/util-waiter@3.1.7': + dependencies: + '@smithy/abort-controller': 3.1.6 + '@smithy/types': 3.6.0 + tslib: 2.8.0 + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.0 + + '@types/convict@6.1.6': + dependencies: + '@types/node': 20.14.10 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 20.14.10 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/node@20.14.10': + dependencies: + undici-types: 5.26.5 + + '@types/prop-types@15.7.12': {} + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/stack-utils@2.0.3': {} + + '@types/uuid@9.0.8': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + asynckit@0.4.0: {} + + babel-jest@29.7.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + babel-preset-jest@29.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + binary-extensions@2.3.0: {} + + bowser@2.11.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001673 + electron-to-chromium: 1.5.47 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001673: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + char-regex@1.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.1: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + cohere-ai@7.14.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)): + dependencies: + '@aws-sdk/client-sagemaker': 3.679.0 + '@aws-sdk/credential-providers': 3.679.0(@aws-sdk/client-sso-oidc@3.679.0(@aws-sdk/client-sts@3.679.0)) + '@aws-sdk/protocol-http': 3.374.0 + '@aws-sdk/signature-v4': 3.374.0 + form-data: 4.0.1 + form-data-encoder: 4.0.2 + formdata-node: 6.0.3 + js-base64: 3.7.2 + node-fetch: 2.7.0 + qs: 6.11.2 + readable-stream: 4.5.2 + url-join: 4.0.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + - encoding + + cohere@1.1.1: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + convict@6.2.4: + dependencies: + lodash.clonedeep: 4.5.0 + yargs-parser: 20.2.9 + + core-js-compat@3.38.1: + dependencies: + browserslist: 4.24.2 + + create-jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + dedent@1.5.3: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + delayed-stream@1.0.0: {} + + detect-newline@3.1.0: {} + + didyoumean@1.2.2: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dlv@1.1.3: {} + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.47: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + emoji-regex@9.2.2: {} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + es-errors@1.3.0: {} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + escalade@3.2.0: {} - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + escape-string-regexp@2.0.0: {} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} + esprima@4.0.1: {} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + esutils@2.0.3: {} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + event-target-shim@5.0.1: {} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + events@3.3.0: {} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + fast-json-stable-stringify@2.1.0: {} - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.0.5 - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} - engines: {node: '>=14.0.0'} - hasBin: true + fastq@1.17.1: + dependencies: + reusify: 1.0.4 - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + fern-api@0.41.16: {} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + foreground-child@3.2.1: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 - which-pm-runs@1.1.0: - resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} - engines: {node: '>=4'} + form-data-encoder@4.0.2: {} - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + formdata-node@6.0.3: {} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + fs.realpath@1.0.0: {} - yaml@2.4.5: - resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} - engines: {node: '>= 14'} - hasBin: true + fsevents@2.3.3: + optional: true -snapshots: + function-bind@1.1.2: {} - '@alloc/quick-lru@5.2.0': {} + gensync@1.0.0-beta.2: {} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + get-caller-file@2.0.5: {} - '@jridgewell/gen-mapping@0.3.5': + get-intrinsic@1.2.4: dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 - '@jridgewell/resolve-uri@3.1.2': {} + get-package-type@0.1.0: {} - '@jridgewell/set-array@1.2.1': {} + get-stream@6.0.1: {} - '@jridgewell/sourcemap-codec@1.5.0': {} + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 - '@jridgewell/trace-mapping@0.3.25': + glob-parent@6.0.2: dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + is-glob: 4.0.3 - '@nodelib/fs.scandir@2.1.5': + glob@10.4.5: dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 - '@nodelib/fs.stat@2.0.5': {} + glob@11.0.0: + dependencies: + foreground-child: 3.2.1 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 - '@nodelib/fs.walk@1.2.8': + glob@7.2.3: dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 - '@pkgjs/parseargs@0.11.0': - optional: true + globals@11.12.0: {} - '@types/node@20.14.10': + gopd@1.0.1: dependencies: - undici-types: 5.26.5 + get-intrinsic: 1.2.4 - '@types/prop-types@15.7.12': {} + graceful-fs@4.2.11: {} - '@types/react@18.3.3': + gray-matter@4.0.3: dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 - ansi-regex@5.0.1: {} + has-flag@3.0.0: {} - ansi-regex@6.0.1: {} + has-flag@4.0.0: {} - ansi-styles@4.3.0: + has-property-descriptors@1.0.2: dependencies: - color-convert: 2.0.1 + es-define-property: 1.0.0 - ansi-styles@6.2.1: {} + has-proto@1.0.3: {} - any-promise@1.3.0: {} + has-symbols@1.0.3: {} - anymatch@3.1.3: + hasown@2.0.2: dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + function-bind: 1.1.2 - arg@5.0.2: {} + html-escaper@2.0.2: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 + human-signals@2.1.0: {} - balanced-match@1.0.2: {} + ieee754@1.2.1: {} - binary-extensions@2.3.0: {} + ignore-by-default@1.0.1: {} - brace-expansion@2.0.1: + import-local@3.2.0: dependencies: - balanced-match: 1.0.2 + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 - braces@3.0.3: + imurmurhash@0.1.4: {} + + inflight@1.0.6: dependencies: - fill-range: 7.1.1 + once: 1.4.0 + wrappy: 1.0.2 - camelcase-css@2.0.1: {} + inherits@2.0.4: {} - chokidar@3.6.0: + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 + binary-extensions: 2.3.0 - color-convert@2.0.1: + is-core-module@2.14.0: dependencies: - color-name: 1.1.4 + hasown: 2.0.2 - color-name@1.1.4: {} + is-extendable@0.1.1: {} - commander@4.1.1: {} + is-extglob@2.1.1: {} - cross-spawn@7.0.3: + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + is-extglob: 2.1.1 - cssesc@3.0.0: {} + is-number@7.0.0: {} - csstype@3.1.3: {} + is-stream@2.0.1: {} - didyoumean@1.2.2: {} + isexe@2.0.0: {} - dlv@1.1.3: {} + istanbul-lib-coverage@3.2.2: {} - eastasianwidth@0.2.0: {} + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - emoji-regex@8.0.0: {} + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color - emoji-regex@9.2.2: {} + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.7(supports-color@5.5.0) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 - esprima@4.0.1: {} + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color - extend-shallow@2.0.1: + jest-cli@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): dependencies: - is-extendable: 0.1.1 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node - fast-glob@3.3.2: + jest-config@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 + '@babel/core': 7.26.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.7 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.10 + ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.6.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color - fastq@1.17.1: + jest-diff@29.7.0: dependencies: - reusify: 1.0.4 - - fern-api@0.41.16: {} + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - fill-range@7.1.1: + jest-docblock@29.7.0: dependencies: - to-regex-range: 5.0.1 + detect-newline: 3.1.0 - foreground-child@3.2.1: + jest-each@29.7.0: dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 - fsevents@2.3.3: - optional: true + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + jest-mock: 29.7.0 + jest-util: 29.7.0 - function-bind@1.1.2: {} + jest-get-type@29.6.3: {} - glob-parent@5.1.2: + jest-haste-map@29.7.0: dependencies: - is-glob: 4.0.3 + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.14.10 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.7 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 - glob-parent@6.0.2: + jest-leak-detector@29.7.0: dependencies: - is-glob: 4.0.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - glob@10.4.5: + jest-matcher-utils@29.7.0: dependencies: - foreground-child: 3.2.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 - gray-matter@4.0.3: + jest-message-util@29.7.0: dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 + '@babel/code-frame': 7.26.0 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 - hasown@2.0.2: + jest-mock@29.7.0: dependencies: - function-bind: 1.1.2 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + jest-util: 29.7.0 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 - is-core-module@2.14.0: + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: dependencies: - hasown: 2.0.2 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color - is-extendable@0.1.1: {} + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 - is-extglob@2.1.1: {} + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color - is-fullwidth-code-point@3.0.0: {} + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + cjs-module-lexer: 1.4.1 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color - is-glob@4.0.3: + jest-snapshot@29.7.0: dependencies: - is-extglob: 2.1.1 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color - is-number@7.0.0: {} + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 - isexe@2.0.0: {} + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.14.10 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 20.14.10 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 - jackspeak@3.4.3: + jest@29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.14.10)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node jiti@1.21.6: {} + js-base64@3.7.2: {} + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -763,20 +5527,60 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + jsesc@3.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json5@2.2.3: {} + kind-of@6.0.3: {} + kleur@3.0.3: {} + + leven@3.1.0: {} + lilconfig@2.1.0: {} lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 lru-cache@10.4.3: {} + lru-cache@11.0.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + merge-stream@2.0.0: {} + merge2@1.4.1: {} micromatch@4.0.7: @@ -784,12 +5588,30 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 minipass@7.1.2: {} + ms@2.1.3: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -798,18 +5620,84 @@ snapshots: nanoid@3.3.7: {} + natural-compare@1.4.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + node-releases@2.0.18: {} + + nodemon@3.1.7: + dependencies: + chokidar: 3.6.0 + debug: 4.3.7(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.6.3 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + normalize-path@3.0.0: {} + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + object-assign@4.1.1: {} object-hash@3.0.0: {} + object-inspect@1.13.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + only-allow@1.2.1: dependencies: which-pm-runs: 1.1.0 + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.0 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -819,14 +5707,25 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.1 + minipass: 7.1.2 + picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} pify@2.3.0: {} pirates@4.0.6: {} + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + postcss-import@15.1.0(postcss@8.4.39): dependencies: postcss: 8.4.39 @@ -839,12 +5738,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.39 - postcss-load-config@4.0.2(postcss@8.4.39): + postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): dependencies: lilconfig: 3.1.2 yaml: 2.4.5 optionalDependencies: postcss: 8.4.39 + ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.6.3) postcss-nested@6.0.1(postcss@8.4.39): dependencies: @@ -864,8 +5764,31 @@ snapshots: picocolors: 1.0.1 source-map-js: 1.2.0 + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + pstree.remy@1.1.8: {} + + pure-rand@6.1.0: {} + + qs@6.11.2: + dependencies: + side-channel: 1.0.6 + queue-microtask@1.2.3: {} + react-is@18.3.1: {} + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -874,10 +5797,55 @@ snapshots: dependencies: pify: 2.3.0 + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.26.0 + + regexpu-core@6.1.1: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.11.2 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.11.2: + dependencies: + jsesc: 3.0.2 + + require-directory@2.1.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + resolve.exports@2.0.2: {} + resolve@1.22.8: dependencies: is-core-module: 2.14.0 @@ -890,23 +5858,71 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 kind-of: 6.0.3 + semver@6.3.1: {} + + semver@7.6.3: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-update-notifier@2.0.0: + dependencies: + semver: 7.6.3 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + source-map-js@1.2.0: {} + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + sprintf-js@1.0.3: {} + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -919,6 +5935,10 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -929,6 +5949,14 @@ snapshots: strip-bom-string@1.0.0: {} + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + strnum@1.0.5: {} + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -939,9 +5967,21 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} - tailwindcss@3.4.4: + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -960,7 +6000,7 @@ snapshots: postcss: 8.4.39 postcss-import: 15.1.0(postcss@8.4.39) postcss-js: 4.0.1(postcss@8.4.39) - postcss-load-config: 4.0.2(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3)) postcss-nested: 6.0.1(postcss@8.4.39) postcss-selector-parser: 6.1.1 resolve: 1.22.8 @@ -968,6 +6008,12 @@ snapshots: transitivePeerDependencies: - ts-node + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -976,16 +6022,92 @@ snapshots: dependencies: any-promise: 1.3.0 + tmpl@1.0.5: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + touch@3.1.1: {} + + tr46@0.0.3: {} + ts-interface-checker@0.1.13: {} + ts-node@10.9.2(@types/node@20.14.10)(typescript@5.6.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.14.10 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@1.14.1: {} + + tslib@2.8.0: {} + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + typescript@5.6.3: {} + + undefsafe@2.0.5: {} + undici-types@5.26.5: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + url-join@4.0.1: {} + util-deprecate@1.0.2: {} + uuid@9.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which-pm-runs@1.1.0: {} which@2.0.2: @@ -1004,4 +6126,33 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + yaml@2.4.5: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..600b4bb4 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/**' diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..48492ac1 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,934 @@ +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.6.2.post1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "cohere" +version = "5.11.1" +description = "" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "cohere-5.11.1-py3-none-any.whl", hash = "sha256:117c718bfbc7637cf22c1025e8e2bf820ebeef51f7fbb2b9d74f3e9c0a9c6c25"}, + {file = "cohere-5.11.1.tar.gz", hash = "sha256:821e20593def7796d314be9bcba87e9ecf69dc6ef17172f842447275f8679d0f"}, +] + +[package.dependencies] +fastavro = ">=1.9.4,<2.0.0" +httpx = ">=0.21.2" +httpx-sse = "0.4.0" +parameterized = ">=0.9.0,<0.10.0" +pydantic = ">=1.9.2" +pydantic-core = ">=2.18.2,<3.0.0" +requests = ">=2.0.0,<3.0.0" +tokenizers = ">=0.15,<1" +types-requests = ">=2.0.0,<3.0.0" +typing_extensions = ">=4.0.0" + +[package.extras] +aws = ["boto3 (>=1.34.0,<2.0.0)", "sagemaker (>=2.232.1,<3.0.0)"] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "fastavro" +version = "1.9.7" +description = "Fast read/write of AVRO files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastavro-1.9.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc811fb4f7b5ae95f969cda910241ceacf82e53014c7c7224df6f6e0ca97f52f"}, + {file = "fastavro-1.9.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb8749e419a85f251bf1ac87d463311874972554d25d4a0b19f6bdc56036d7cf"}, + {file = "fastavro-1.9.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b2f9bafa167cb4d1c3dd17565cb5bf3d8c0759e42620280d1760f1e778e07fc"}, + {file = "fastavro-1.9.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e87d04b235b29f7774d226b120da2ca4e60b9e6fdf6747daef7f13f218b3517a"}, + {file = "fastavro-1.9.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b525c363e267ed11810aaad8fbdbd1c3bd8837d05f7360977d72a65ab8c6e1fa"}, + {file = "fastavro-1.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:6312fa99deecc319820216b5e1b1bd2d7ebb7d6f221373c74acfddaee64e8e60"}, + {file = "fastavro-1.9.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ec8499dc276c2d2ef0a68c0f1ad11782b2b956a921790a36bf4c18df2b8d4020"}, + {file = "fastavro-1.9.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d9d96f98052615ab465c63ba8b76ed59baf2e3341b7b169058db104cbe2aa0"}, + {file = "fastavro-1.9.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:919f3549e07a8a8645a2146f23905955c35264ac809f6c2ac18142bc5b9b6022"}, + {file = "fastavro-1.9.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9de1fa832a4d9016724cd6facab8034dc90d820b71a5d57c7e9830ffe90f31e4"}, + {file = "fastavro-1.9.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1d09227d1f48f13281bd5ceac958650805aef9a4ef4f95810128c1f9be1df736"}, + {file = "fastavro-1.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:2db993ae6cdc63e25eadf9f93c9e8036f9b097a3e61d19dca42536dcc5c4d8b3"}, + {file = "fastavro-1.9.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4e1289b731214a7315884c74b2ec058b6e84380ce9b18b8af5d387e64b18fc44"}, + {file = "fastavro-1.9.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eac69666270a76a3a1d0444f39752061195e79e146271a568777048ffbd91a27"}, + {file = "fastavro-1.9.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9be089be8c00f68e343bbc64ca6d9a13e5e5b0ba8aa52bcb231a762484fb270e"}, + {file = "fastavro-1.9.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d576eccfd60a18ffa028259500df67d338b93562c6700e10ef68bbd88e499731"}, + {file = "fastavro-1.9.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee9bf23c157bd7dcc91ea2c700fa3bd924d9ec198bb428ff0b47fa37fe160659"}, + {file = "fastavro-1.9.7-cp312-cp312-win_amd64.whl", hash = "sha256:b6b2ccdc78f6afc18c52e403ee68c00478da12142815c1bd8a00973138a166d0"}, + {file = "fastavro-1.9.7-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7313def3aea3dacface0a8b83f6d66e49a311149aa925c89184a06c1ef99785d"}, + {file = "fastavro-1.9.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:536f5644737ad21d18af97d909dba099b9e7118c237be7e4bd087c7abde7e4f0"}, + {file = "fastavro-1.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2af559f30383b79cf7d020a6b644c42ffaed3595f775fe8f3d7f80b1c43dfdc5"}, + {file = "fastavro-1.9.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:edc28ab305e3c424de5ac5eb87b48d1e07eddb6aa08ef5948fcda33cc4d995ce"}, + {file = "fastavro-1.9.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ec2e96bdabd58427fe683329b3d79f42c7b4f4ff6b3644664a345a655ac2c0a1"}, + {file = "fastavro-1.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:3b683693c8a85ede496ebebe115be5d7870c150986e34a0442a20d88d7771224"}, + {file = "fastavro-1.9.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:58f76a5c9a312fbd37b84e49d08eb23094d36e10d43bc5df5187bc04af463feb"}, + {file = "fastavro-1.9.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56304401d2f4f69f5b498bdd1552c13ef9a644d522d5de0dc1d789cf82f47f73"}, + {file = "fastavro-1.9.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fcce036c6aa06269fc6a0428050fcb6255189997f5e1a728fc461e8b9d3e26b"}, + {file = "fastavro-1.9.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:17de68aae8c2525f5631d80f2b447a53395cdc49134f51b0329a5497277fc2d2"}, + {file = "fastavro-1.9.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7c911366c625d0a997eafe0aa83ffbc6fd00d8fd4543cb39a97c6f3b8120ea87"}, + {file = "fastavro-1.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:912283ed48578a103f523817fdf0c19b1755cea9b4a6387b73c79ecb8f8f84fc"}, + {file = "fastavro-1.9.7.tar.gz", hash = "sha256:13e11c6cb28626da85290933027cd419ce3f9ab8e45410ef24ce6b89d20a1f6c"}, +] + +[package.extras] +codecs = ["cramjam", "lz4", "zstandard"] +lz4 = ["lz4"] +snappy = ["cramjam"] +zstandard = ["zstandard"] + +[[package]] +name = "filelock" +version = "3.16.1" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] + +[[package]] +name = "fsspec" +version = "2024.10.0" +description = "File-system specification" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, + {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +dev = ["pre-commit", "ruff"] +doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] +tqdm = ["tqdm"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.6" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, + {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.27.2" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, + {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "httpx-sse" +version = "0.4.0" +description = "Consume Server-Sent Event (SSE) messages with HTTPX." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, + {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, +] + +[[package]] +name = "huggingface-hub" +version = "0.26.1" +description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "huggingface_hub-0.26.1-py3-none-any.whl", hash = "sha256:5927a8fc64ae68859cd954b7cc29d1c8390a5e15caba6d3d349c973be8fdacf3"}, + {file = "huggingface_hub-0.26.1.tar.gz", hash = "sha256:414c0d9b769eecc86c70f9d939d0f48bb28e8461dd1130021542eff0212db890"}, +] + +[package.dependencies] +filelock = "*" +fsspec = ">=2023.5.0" +packaging = ">=20.9" +pyyaml = ">=5.1" +requests = "*" +tqdm = ">=4.42.1" +typing-extensions = ">=3.7.4.3" + +[package.extras] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +cli = ["InquirerPy (==0.3.4)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] +hf-transfer = ["hf-transfer (>=0.1.4)"] +inference = ["aiohttp"] +quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.5.0)"] +tensorflow = ["graphviz", "pydot", "tensorflow"] +tensorflow-testing = ["keras (<3.0)", "tensorflow"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +torch = ["safetensors[torch]", "torch"] +typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "24.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, +] + +[[package]] +name = "parameterized" +version = "0.9.0" +description = "Parameterized testing with any Python test framework" +optional = false +python-versions = ">=3.7" +files = [ + {file = "parameterized-0.9.0-py2.py3-none-any.whl", hash = "sha256:4e0758e3d41bea3bbd05ec14fc2c24736723f243b28d702081aef438c9372b1b"}, + {file = "parameterized-0.9.0.tar.gz", hash = "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1"}, +] + +[package.extras] +dev = ["jinja2"] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pydantic" +version = "2.9.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "tokenizers" +version = "0.20.1" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tokenizers-0.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:439261da7c0a5c88bda97acb284d49fbdaf67e9d3b623c0bfd107512d22787a9"}, + {file = "tokenizers-0.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:03dae629d99068b1ea5416d50de0fea13008f04129cc79af77a2a6392792d93c"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b61f561f329ffe4b28367798b89d60c4abf3f815d37413b6352bc6412a359867"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec870fce1ee5248a10be69f7a8408a234d6f2109f8ea827b4f7ecdbf08c9fd15"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d388d1ea8b7447da784e32e3b86a75cce55887e3b22b31c19d0b186b1c677800"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:299c85c1d21135bc01542237979bf25c32efa0d66595dd0069ae259b97fb2dbe"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e96f6c14c9752bb82145636b614d5a78e9cde95edfbe0a85dad0dd5ddd6ec95c"}, + {file = "tokenizers-0.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc9e95ad49c932b80abfbfeaf63b155761e695ad9f8a58c52a47d962d76e310f"}, + {file = "tokenizers-0.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f22dee205329a636148c325921c73cf3e412e87d31f4d9c3153b302a0200057b"}, + {file = "tokenizers-0.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2ffd9a8895575ac636d44500c66dffaef133823b6b25067604fa73bbc5ec09d"}, + {file = "tokenizers-0.20.1-cp310-none-win32.whl", hash = "sha256:2847843c53f445e0f19ea842a4e48b89dd0db4e62ba6e1e47a2749d6ec11f50d"}, + {file = "tokenizers-0.20.1-cp310-none-win_amd64.whl", hash = "sha256:f9aa93eacd865f2798b9e62f7ce4533cfff4f5fbd50c02926a78e81c74e432cd"}, + {file = "tokenizers-0.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4a717dcb08f2dabbf27ae4b6b20cbbb2ad7ed78ce05a829fae100ff4b3c7ff15"}, + {file = "tokenizers-0.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3f84dad1ff1863c648d80628b1b55353d16303431283e4efbb6ab1af56a75832"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:929c8f3afa16a5130a81ab5079c589226273ec618949cce79b46d96e59a84f61"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d10766473954397e2d370f215ebed1cc46dcf6fd3906a2a116aa1d6219bfedc3"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9300fac73ddc7e4b0330acbdda4efaabf74929a4a61e119a32a181f534a11b47"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0ecaf7b0e39caeb1aa6dd6e0975c405716c82c1312b55ac4f716ef563a906969"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5170be9ec942f3d1d317817ced8d749b3e1202670865e4fd465e35d8c259de83"}, + {file = "tokenizers-0.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f1ae08fa9aea5891cbd69df29913e11d3841798e0bfb1ff78b78e4e7ea0a4"}, + {file = "tokenizers-0.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ee86d4095d3542d73579e953c2e5e07d9321af2ffea6ecc097d16d538a2dea16"}, + {file = "tokenizers-0.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:86dcd08da163912e17b27bbaba5efdc71b4fbffb841530fdb74c5707f3c49216"}, + {file = "tokenizers-0.20.1-cp311-none-win32.whl", hash = "sha256:9af2dc4ee97d037bc6b05fa4429ddc87532c706316c5e11ce2f0596dfcfa77af"}, + {file = "tokenizers-0.20.1-cp311-none-win_amd64.whl", hash = "sha256:899152a78b095559c287b4c6d0099469573bb2055347bb8154db106651296f39"}, + {file = "tokenizers-0.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:407ab666b38e02228fa785e81f7cf79ef929f104bcccf68a64525a54a93ceac9"}, + {file = "tokenizers-0.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f13a2d16032ebc8bd812eb8099b035ac65887d8f0c207261472803b9633cf3e"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e98eee4dca22849fbb56a80acaa899eec5b72055d79637dd6aa15d5e4b8628c9"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47c1bcdd61e61136087459cb9e0b069ff23b5568b008265e5cbc927eae3387ce"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:128c1110e950534426e2274837fc06b118ab5f2fa61c3436e60e0aada0ccfd67"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2e2d47a819d2954f2c1cd0ad51bb58ffac6f53a872d5d82d65d79bf76b9896d"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bdd67a0e3503a9a7cf8bc5a4a49cdde5fa5bada09a51e4c7e1c73900297539bd"}, + {file = "tokenizers-0.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b93d2e26d04da337ac407acec8b5d081d8d135e3e5066a88edd5bdb5aff89"}, + {file = "tokenizers-0.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0c6a796ddcd9a19ad13cf146997cd5895a421fe6aec8fd970d69f9117bddb45c"}, + {file = "tokenizers-0.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3ea919687aa7001a8ff1ba36ac64f165c4e89035f57998fa6cedcfd877be619d"}, + {file = "tokenizers-0.20.1-cp312-none-win32.whl", hash = "sha256:6d3ac5c1f48358ffe20086bf065e843c0d0a9fce0d7f0f45d5f2f9fba3609ca5"}, + {file = "tokenizers-0.20.1-cp312-none-win_amd64.whl", hash = "sha256:b0874481aea54a178f2bccc45aa2d0c99cd3f79143a0948af6a9a21dcc49173b"}, + {file = "tokenizers-0.20.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:96af92e833bd44760fb17f23f402e07a66339c1dcbe17d79a9b55bb0cc4f038e"}, + {file = "tokenizers-0.20.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:65f34e5b731a262dfa562820818533c38ce32a45864437f3d9c82f26c139ca7f"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17f98fccb5c12ab1ce1f471731a9cd86df5d4bd2cf2880c5a66b229802d96145"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8c0fc3542cf9370bf92c932eb71bdeb33d2d4aeeb4126d9fd567b60bd04cb30"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b39356df4575d37f9b187bb623aab5abb7b62c8cb702867a1768002f814800c"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfdad27b0e50544f6b838895a373db6114b85112ba5c0cefadffa78d6daae563"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:094663dd0e85ee2e573126918747bdb40044a848fde388efb5b09d57bc74c680"}, + {file = "tokenizers-0.20.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14e4cf033a2aa207d7ac790e91adca598b679999710a632c4a494aab0fc3a1b2"}, + {file = "tokenizers-0.20.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9310951c92c9fb91660de0c19a923c432f110dbfad1a2d429fbc44fa956bf64f"}, + {file = "tokenizers-0.20.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:05e41e302c315bd2ed86c02e917bf03a6cf7d2f652c9cee1a0eb0d0f1ca0d32c"}, + {file = "tokenizers-0.20.1-cp37-none-win32.whl", hash = "sha256:212231ab7dfcdc879baf4892ca87c726259fa7c887e1688e3f3cead384d8c305"}, + {file = "tokenizers-0.20.1-cp37-none-win_amd64.whl", hash = "sha256:896195eb9dfdc85c8c052e29947169c1fcbe75a254c4b5792cdbd451587bce85"}, + {file = "tokenizers-0.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:741fb22788482d09d68e73ece1495cfc6d9b29a06c37b3df90564a9cfa688e6d"}, + {file = "tokenizers-0.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10be14ebd8082086a342d969e17fc2d6edc856c59dbdbddd25f158fa40eaf043"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:514cf279b22fa1ae0bc08e143458c74ad3b56cd078b319464959685a35c53d5e"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a647c5b7cb896d6430cf3e01b4e9a2d77f719c84cefcef825d404830c2071da2"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7cdf379219e1e1dd432091058dab325a2e6235ebb23e0aec8d0508567c90cd01"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ba72260449e16c4c2f6f3252823b059fbf2d31b32617e582003f2b18b415c39"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:910b96ed87316e4277b23c7bcaf667ce849c7cc379a453fa179e7e09290eeb25"}, + {file = "tokenizers-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e53975a6694428a0586534cc1354b2408d4e010a3103117f617cbb550299797c"}, + {file = "tokenizers-0.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:07c4b7be58da142b0730cc4e5fd66bb7bf6f57f4986ddda73833cd39efef8a01"}, + {file = "tokenizers-0.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b605c540753e62199bf15cf69c333e934077ef2350262af2ccada46026f83d1c"}, + {file = "tokenizers-0.20.1-cp38-none-win32.whl", hash = "sha256:88b3bc76ab4db1ab95ead623d49c95205411e26302cf9f74203e762ac7e85685"}, + {file = "tokenizers-0.20.1-cp38-none-win_amd64.whl", hash = "sha256:d412a74cf5b3f68a90c615611a5aa4478bb303d1c65961d22db45001df68afcb"}, + {file = "tokenizers-0.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a25dcb2f41a0a6aac31999e6c96a75e9152fa0127af8ece46c2f784f23b8197a"}, + {file = "tokenizers-0.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a12c3cebb8c92e9c35a23ab10d3852aee522f385c28d0b4fe48c0b7527d59762"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02e18da58cf115b7c40de973609c35bde95856012ba42a41ee919c77935af251"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f326a1ac51ae909b9760e34671c26cd0dfe15662f447302a9d5bb2d872bab8ab"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b4872647ea6f25224e2833b044b0b19084e39400e8ead3cfe751238b0802140"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce6238a3311bb8e4c15b12600927d35c267b92a52c881ef5717a900ca14793f7"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57b7a8880b208866508b06ce365dc631e7a2472a3faa24daa430d046fb56c885"}, + {file = "tokenizers-0.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a908c69c2897a68f412aa05ba38bfa87a02980df70f5a72fa8490479308b1f2d"}, + {file = "tokenizers-0.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:da1001aa46f4490099c82e2facc4fbc06a6a32bf7de3918ba798010954b775e0"}, + {file = "tokenizers-0.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c097390e2f0ed0a5c5d569e6669dd4e9fff7b31c6a5ce6e9c66a61687197de"}, + {file = "tokenizers-0.20.1-cp39-none-win32.whl", hash = "sha256:3d4d218573a3d8b121a1f8c801029d70444ffb6d8f129d4cca1c7b672ee4a24c"}, + {file = "tokenizers-0.20.1-cp39-none-win_amd64.whl", hash = "sha256:37d1e6f616c84fceefa7c6484a01df05caf1e207669121c66213cb5b2911d653"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48689da7a395df41114f516208d6550e3e905e1239cc5ad386686d9358e9cef0"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:712f90ea33f9bd2586b4a90d697c26d56d0a22fd3c91104c5858c4b5b6489a79"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:359eceb6a620c965988fc559cebc0a98db26713758ec4df43fb76d41486a8ed5"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d3caf244ce89d24c87545aafc3448be15870096e796c703a0d68547187192e1"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b03cf8b9a32254b1bf8a305fb95c6daf1baae0c1f93b27f2b08c9759f41dee"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:218e5a3561561ea0f0ef1559c6d95b825308dbec23fb55b70b92589e7ff2e1e8"}, + {file = "tokenizers-0.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f40df5e0294a95131cc5f0e0eb91fe86d88837abfbee46b9b3610b09860195a7"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:08aaa0d72bb65058e8c4b0455f61b840b156c557e2aca57627056624c3a93976"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:998700177b45f70afeb206ad22c08d9e5f3a80639dae1032bf41e8cbc4dada4b"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62f7fbd3c2c38b179556d879edae442b45f68312019c3a6013e56c3947a4e648"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31e87fca4f6bbf5cc67481b562147fe932f73d5602734de7dd18a8f2eee9c6dd"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:956f21d359ae29dd51ca5726d2c9a44ffafa041c623f5aa33749da87cfa809b9"}, + {file = "tokenizers-0.20.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1fbbaf17a393c78d8aedb6a334097c91cb4119a9ced4764ab8cfdc8d254dc9f9"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ebe63e31f9c1a970c53866d814e35ec2ec26fda03097c486f82f3891cee60830"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:81970b80b8ac126910295f8aab2d7ef962009ea39e0d86d304769493f69aaa1e"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130e35e76f9337ed6c31be386e75d4925ea807055acf18ca1a9b0eec03d8fe23"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd28a8614f5c82a54ab2463554e84ad79526c5184cf4573bbac2efbbbcead457"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9041ee665d0fa7f5c4ccf0f81f5e6b7087f797f85b143c094126fc2611fec9d0"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:62eb9daea2a2c06bcd8113a5824af8ef8ee7405d3a71123ba4d52c79bb3d9f1a"}, + {file = "tokenizers-0.20.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f861889707b54a9ab1204030b65fd6c22bdd4a95205deec7994dc22a8baa2ea4"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:89d5c337d74ea6e5e7dc8af124cf177be843bbb9ca6e58c01f75ea103c12c8a9"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0b7f515c83397e73292accdbbbedc62264e070bae9682f06061e2ddce67cacaf"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e0305fc1ec6b1e5052d30d9c1d5c807081a7bd0cae46a33d03117082e91908c"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dc611e6ac0fa00a41de19c3bf6391a05ea201d2d22b757d63f5491ec0e67faa"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5ffe0d7f7bfcfa3b2585776ecf11da2e01c317027c8573c78ebcb8985279e23"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e7edb8ec12c100d5458d15b1e47c0eb30ad606a05641f19af7563bc3d1608c14"}, + {file = "tokenizers-0.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:de291633fb9303555793cc544d4a86e858da529b7d0b752bcaf721ae1d74b2c9"}, + {file = "tokenizers-0.20.1.tar.gz", hash = "sha256:84edcc7cdeeee45ceedb65d518fffb77aec69311c9c8e30f77ad84da3025f002"}, +] + +[package.dependencies] +huggingface-hub = ">=0.16.4,<1.0" + +[package.extras] +dev = ["tokenizers[testing]"] +docs = ["setuptools-rust", "sphinx", "sphinx-rtd-theme"] +testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests", "ruff"] + +[[package]] +name = "tqdm" +version = "4.66.5" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "types-requests" +version = "2.32.0.20241016" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, +] + +[package.dependencies] +urllib3 = ">=2" + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "9f3e32193f943b04cabbcb26f2412fffadea02a184bdcee11907d419da4ce40e" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..99b75d3a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,16 @@ +[tool.poetry] +name = "py-snips" +version = "0.1.0" +description = "" +authors = ["Your Name "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" +cohere = "^5.11.1" +black = "^24.10.0" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/scripts/cookbooks-json/rerank-demo.json b/scripts/cookbooks-json/rerank-demo.json index c0dce880..841b498b 100644 --- a/scripts/cookbooks-json/rerank-demo.json +++ b/scripts/cookbooks-json/rerank-demo.json @@ -13,7 +13,7 @@ }, "title": "Demo of Rerank", "slug": "rerank-demo", - "body": "[block:html]\n{\n \"html\": \"\\n\\n
\\n

Demo of Rerank

\\n
\\n\\n\"\n}\n[/block]\n\nIn the past months, we engineered a novel relevance endpoint that takes a query and a list of documents and predicts the relevance between the query and each document. \n\nIt can be used in a two-stage retrieval setup: First you take the user question, and retrieve the top-100 documents from your collection by either using lexical search or semantic search.\n\nYou then pass the question and these top-100 documents to our relevance-endpoint to get a score for each document. You can then rank these documents based on these scores.\n\nIn our benchmarks across 20 datasets, we **saw significant improvements compared to lexical and semantic search**, especially for use-cases where no training data is available.\n\nWe will demonstrate the rerank endpoint in this notebook.\n\n\n\n\n```python\n!pip install \"cohere<5\"\n```\n\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mRequirement already satisfied: cohere<5 in /opt/homebrew/lib/python3.9/site-packages (4.45)\n Requirement already satisfied: aiohttp<4.0,>=3.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (3.8.1)\n Requirement already satisfied: backoff<3.0,>=2.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (2.2.1)\n Requirement already satisfied: fastavro<2.0,>=1.8 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (1.9.3)\n Requirement already satisfied: importlib_metadata<7.0,>=6.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (6.6.0)\n Requirement already satisfied: requests<3.0.0,>=2.25.0 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from cohere<5) (2.28.2)\n Requirement already satisfied: urllib3<3,>=1.26 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from cohere<5) (1.26.14)\n Requirement already satisfied: attrs>=17.3.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (22.1.0)\n Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (2.0.12)\n Requirement already satisfied: multidict<7.0,>=4.5 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (6.0.2)\n Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (4.0.2)\n Requirement already satisfied: yarl<2.0,>=1.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.8.1)\n Requirement already satisfied: frozenlist>=1.1.1 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.3.1)\n Requirement already satisfied: aiosignal>=1.1.2 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.2.0)\n Requirement already satisfied: zipp>=0.5 in /opt/homebrew/lib/python3.9/site-packages (from importlib_metadata<7.0,>=6.0->cohere<5) (3.15.0)\n Requirement already satisfied: idna<4,>=2.5 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from requests<3.0.0,>=2.25.0->cohere<5) (3.4)\n Requirement already satisfied: certifi>=2017.4.17 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from requests<3.0.0,>=2.25.0->cohere<5) (2022.12.7)\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0m\n\n\n```python\nimport cohere\nimport requests\nimport numpy as np\nfrom time import time\nfrom typing import List\nfrom pprint import pprint\n```\n\n\n```python\nAPI_KEY = \"\"\nco = cohere.Client(API_KEY)\nMODEL_NAME = \"rerank-english-v3.0\" # another option is rerank-multilingual-02\n\nquery = \"What is the capital of the United States?\"\ndocs = [\n \"Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.\",\n \"The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.\",\n \"Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.\",\n \"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\",\n \"West Virginia is a state in the Appalachian region of the United States. Its capital and largest city is Charleston. It is often abbreviated W. Va. or simply WV.\",\n \"Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\",\n \"North Dakota is a state in the United States. 672,591 people lived in North Dakota in the year 2010. The capital and seat of government is Bismarck.\",\n \"Kentucky is a state in the United States. Its capital is Frankfort. It touches the states of Missouri (by the Mississippi River), Illinois, Indiana, Ohio, West Virginia (by the Ohio River), Tennessee and Virginia. There are many rivers in Kentucky\",\n \"Micronesia, officially the Federated States of Micronesia, is an island nation in the Pacific Ocean, northeast of Papua New Guinea. The country is a sovereign state in free association with the United States. The capital city of Federated States of Micronesia is Palikir.\",\n \"Utah is a state in the west United States. The capital and largest city is Salt Lake City. Utah became a state in the U.S. on January 4, 1896.\"]\n```\n\n## Using the Endpoint\nIn the following cell we will call rerank to rank `docs` based on how relevant they are with `query`.\n\n\n\n\n```python\nresults = co.rerank(query=query, model=MODEL_NAME, documents=docs, top_n=3) # Change top_n to change the number of results returned. If top_n is not passed, all results will be returned.\nfor idx, r in enumerate(results):\n print(f\"Document Rank: {idx + 1}, Document Index: {r.index}\")\n print(f\"Document: {r.document['text']}\")\n print(f\"Relevance Score: {r.relevance_score:.2f}\")\n print(\"\\n\")\n```\n\n Document Rank: 1, Document Index: 3\n Document: Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\n Relevance Score: 1.00\n \n \n Document Rank: 2, Document Index: 5\n Document: Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\n Relevance Score: 0.75\n \n \n Document Rank: 3, Document Index: 1\n Document: The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.\n Relevance Score: 0.09\n \n \n\n\n## Search on Wikipedia - End2end demo\nThe following is an example how to use this model end-to-end to search over the Simple English Wikipedia, which consists of about 500k passages. \n\nWe use BM25 lexical search to retrieve the top-100 passages matching the query and then send these 100 passages and the query to our rerank endpoint to get a re-ranked list. We output the top-3 hits according to BM25 lexical search (as used by e.g. Elasticsearch) and the re-ranked list from our endpoint.\n\n\n\n```python\n!pip install -U rank_bm25\n```\n\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mCollecting rank_bm25\n Downloading rank_bm25-0.2.2-py3-none-any.whl.metadata (3.2 kB)\n Requirement already satisfied: numpy in /opt/homebrew/lib/python3.9/site-packages (from rank_bm25) (1.23.5)\n Downloading rank_bm25-0.2.2-py3-none-any.whl (8.6 kB)\n Installing collected packages: rank_bm25\n \u001b[33m DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0m\u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mSuccessfully installed rank_bm25-0.2.2\n\n\n\n```python\nimport json\nimport gzip\nimport os\nfrom rank_bm25 import BM25Okapi\nfrom sklearn.feature_extraction import _stop_words\nimport string\nfrom tqdm.autonotebook import tqdm\n```\n\n /var/folders/ww/ht8qwj2s7s799qnktblg6qhm0000gp/T/ipykernel_31832/1066443236.py:7: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n from tqdm.autonotebook import tqdm\n\n\n\n```python\n!wget http://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n```\n\n --2024-04-08 14:28:00-- http://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n Resolving sbert.net (sbert.net)... 172.64.80.1, 2606:4700:130:436c:6f75:6466:6c61:7265\n Connecting to sbert.net (sbert.net)|172.64.80.1|:80... connected.\n HTTP request sent, awaiting response... 301 Moved Permanently\n Location: https://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz [following]\n --2024-04-08 14:28:01-- https://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n Connecting to sbert.net (sbert.net)|172.64.80.1|:443... connected.\n HTTP request sent, awaiting response... 301 Moved Permanently\n Location: https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/datasets/simplewiki-2020-11-01.jsonl.gz [following]\n --2024-04-08 14:28:01-- https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/datasets/simplewiki-2020-11-01.jsonl.gz\n Resolving public.ukp.informatik.tu-darmstadt.de (public.ukp.informatik.tu-darmstadt.de)... 130.83.167.186\n Connecting to public.ukp.informatik.tu-darmstadt.de (public.ukp.informatik.tu-darmstadt.de)|130.83.167.186|:443... connected.\n HTTP request sent, awaiting response... 200 OK\n Length: 50223724 (48M) [application/octet-stream]\n Saving to: ‘simplewiki-2020-11-01.jsonl.gz’\n \n simplewiki-2020-11- 100%[===================>] 47.90M 5.78MB/s in 8.9s \n \n 2024-04-08 14:28:11 (5.37 MB/s) - ‘simplewiki-2020-11-01.jsonl.gz’ saved [50223724/50223724]\n \n\n\n\n```python\nwikipedia_filepath = 'simplewiki-2020-11-01.jsonl.gz'\n\npassages = []\nwith gzip.open(wikipedia_filepath, 'rt', encoding='utf8') as fIn:\n for line in fIn:\n data = json.loads(line.strip())\n passages.extend(data['paragraphs'])\n\nprint(\"Passages:\", len(passages))\n```\n\n Passages: 509663\n\n\n\n```python\nprint(passages[0], passages[1])\n```\n\n Ted Cassidy (July 31, 1932 - January 16, 1979) was an American actor. He was best known for his roles as Lurch and Thing on \"The Addams Family\". Aileen Carol Wuornos Pralle (born Aileen Carol Pittman; February 29, 1956 – October 9, 2002) was an American serial killer. She was born in Rochester, Michigan. She confessed to killing six men in Florida and was executed in Florida State Prison by lethal injection for the murders. Wuornos said that the men she killed had raped her or tried to rape her while she was working as a prostitute.\n\n\n\n```python\n\ndef bm25_tokenizer(text):\n tokenized_doc = []\n for token in text.lower().split():\n token = token.strip(string.punctuation)\n\n if len(token) > 0 and token not in _stop_words.ENGLISH_STOP_WORDS:\n tokenized_doc.append(token)\n return tokenized_doc\n\n\ntokenized_corpus = []\nfor passage in tqdm(passages):\n tokenized_corpus.append(bm25_tokenizer(passage))\n\nbm25 = BM25Okapi(tokenized_corpus)\n```\n\n 100%|██████████| 509663/509663 [00:09<00:00, 51180.82it/s]\n\n\n\n```python\n\ndef search(query, top_k=3, num_candidates=100):\n print(\"Input question:\", query)\n\n ##### BM25 search (lexical search) #####\n bm25_scores = bm25.get_scores(bm25_tokenizer(query))\n top_n = np.argpartition(bm25_scores, -num_candidates)[-num_candidates:]\n bm25_hits = [{'corpus_id': idx, 'score': bm25_scores[idx]} for idx in top_n]\n bm25_hits = sorted(bm25_hits, key=lambda x: x['score'], reverse=True)\n \n print(f\"Top-3 lexical search (BM25) hits\")\n for hit in bm25_hits[0:top_k]:\n print(\"\\t{:.3f}\\t{}\".format(hit['score'], passages[hit['corpus_id']].replace(\"\\n\", \" \")))\n\n \n #Add re-ranking\n docs = [passages[hit['corpus_id']] for hit in bm25_hits]\n \n print(f\"\\nTop-3 hits by rank-API ({len(bm25_hits)} BM25 hits re-ranked)\")\n results = co.rerank(query=query, model=MODEL_NAME, documents=docs, top_n=top_k)\n for hit in results:\n print(\"\\t{:.3f}\\t{}\".format(hit.relevance_score, hit.document[\"text\"].replace(\"\\n\", \" \")))\n```\n\n\n```python\nsearch(query = \"What is the capital of the United States?\")\n```\n\n Input question: What is the capital of the United States?\n Top-3 lexical search (BM25) hits\n \t16.264\tCapital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\n \t15.124\tIn 1783, it was the capital of the United States for a few months.\n \t14.476\tNew York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tWashington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\n \t0.994\tNew York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital.\n \t0.993\tAs the national capital of the United States, Washington, D.C. has numerous media outlets in various mediums. Some of these media are known throughout the United States, including \"The Washington Post\" and various broadcasting networks headquartered in D.C.\n\n\n\n```python\nsearch(query = \"Number countries Europe\")\n```\n\n Input question: Number countries Europe\n Top-3 lexical search (BM25) hits\n \t16.963\tECoHR' has a number of judges. The number of judges is seven normally but at the case of dealing a great issue, the number will be 21 and the judges are equally from member countries of the Council of Europe. At present, there are forty seven member countries of the Council of Europe. Each country may have one judge in the ECoHR. But, judges work independently for the ECoHR, and not for their country.\n \t14.560\tMost countries in Europe, and a few countries in Asia, have made some or all synthetic cannabinoids illegal.\n \t14.165\tMany of these countries were members of the Western European Union. Many, such as Norway, are also in Northern Europe or in Central Europe or Southern Europe.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.997\tThere are at least 43 countries in Europe (the European identities of 5 transcontinental countries:Cyprus, Georgia, Kazakhstan, Russia and Turkey are disputed). Most of these countries are members of the European Union.\n \t0.987\tWithin these regions, there are up to 48 independent European countries (with the identities of 5 transcontinental countries being disputed). The largest is the Russian Federation, which covers 39% of Europe.\n \t0.981\tEurope, the planet's 6th largest continent, includes 47 countries and assorted dependencies, islands and territories.\n\n\n\n```python\nsearch(query = \"Elon Musk year birth\")\n```\n\n Input question: Elon Musk year birth\n Top-3 lexical search (BM25) hits\n \t22.568\tTesla, Inc. is a company based in Palo Alto, California which makes electric cars. It was started in 2003 by Martin Eberhard, Dylan Stott, and Elon Musk (who also co-founded PayPal and SpaceX and is the CEO of SpaceX). Eberhard no longer works there. Today, Elon Musk is the Chief Executive Officer (CEO). It started selling its first car, the Roadster in 2008.\n \t20.492\tElon Musk complained via Twitter about Los Angeles traffic and the same day, December 17, 2016, founded the company. It built a short test tunnel in Los Angeles.\n \t20.448\tAt the end of 2016, Musk founded The Boring Company which focuses on tunnelling and infrastructure. He mentioned Los Angeles traffic as the reason for starting this company. In March 2017 Elon Musk announced he has started another company which aims to merge human brains and computers, it is called Neuralink.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.994\tElon Reeve Musk (born June 28, 1971) is a businessman and philanthropist. He was born in South Africa. He moved to Canada and later became an American citizen. Musk is the current CEO & Chief Product Architect of Tesla Motors, a company that makes electric vehicles. He is also the CEO of Solar City, a company that makes solar panels, and the CEO & CTO of SpaceX, an aerospace company. In August 2020, Bloomberg ranked Musk third among the richest people on the planet with net worth to be $115.4 billion.\n \t0.602\tElon Musk and his brother started Zip2, a software company, in 1995. In 1999 he sold it and became a millionaire. He then started X.com, which merged with the company to make PayPal. X.com was then renamed to PayPal, and he focused on growing that part of the company. He then started SpaceX and became the CEO of Tesla.\n \t0.474\tIn early 2002, Musk was seeking workers for his new space company, soon to be named SpaceX. Musk found a rocket engineer Tom Mueller (later SpaceX's CTO of Propulsion). He agreed to work for Musk. That was how SpaceX was born. The first headquarters of SpaceX was in a warehouse in El Segundo, California. The company has grown rapidly since it was founded in 2002, growing from 160 workers in November 2005 to 1,100 in 2010, 3,800 workers and contractors by October 2013, nearly 5,000 by late 2015, and about 6,000 in April 2017.\n\n\n\n```python\nsearch(query = \"Which US president was killed?\")\n```\n\n Input question: Which US president was killed?\n Top-3 lexical search (BM25) hits\n \t11.966\tHe came into office when the previous president, Cyprien Ntaryamira, was killed in a plane crash. It was an assassination in which the Rwandan president Juvénal Habyarimana was also killed. Ntibantunganya left office when he was deposed by Pierre Buyoya in a military coup of 1996.\n \t11.697\tBurr killed Alexander Hamilton in a duel in 1804, when Burr was still Vice President.\n \t11.482\tAfter President James A. Garfield died, vice-president Chester Arthur replaced him. The man who killed him expected the new President to pardon him. This did not happen.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.984\tJames Abram Garfield (November 19, 1831 - September 19, 1881) was the 20th (1881) President of the United States and the 2nd President to be assassinated (killed while in office). President Garfield was in office from March to September of 1881. He was in office for a total of six months and fifteen days. For almost half that time he was bedridden as a result of an attempt to kill him. He was shot on July 2 and finally died in September the same year he got into office.\n \t0.976\tPresident William McKinley was killed by anarchist Leon Czolgosz because Czolgosz believed president McKinley was against good working people, he considered McKinley responsible for falsifying the reasons for the war, and approving and waging an illegal, devastating Philippines war.\n \t0.916\tOn the night that President Abraham Lincoln was killed, someone also tried to kill Seward. For the rest of his life, Seward had scars on his face from the attack. Later, the man who attacked him was caught and put to death.\n\n\n\n```python\nsearch(query=\"When is Chinese New Year\")\n```\n\n Input question: When is Chinese New Year\n Top-3 lexical search (BM25) hits\n \t18.606\tToday in China the Gregorian calendar is used for most activities. At the same time, the Chinese calendar is still used for traditional Chinese holidays like Chinese New Year or Lunar New Year.\n \t18.151\tBefore that, the holiday was usually just called the \"NewYear\". Because the traditional Chinese calendar is mostly based on the changes in the moon, the Chinese New Year is also known in English as the \"Lunar New Year\" or \"Chinese Lunar New Year\". This name comes from \"Luna\", an old Latin name for the moon. The Indonesian name for the holiday is Imlek, which comes from the Hokkien word for the old Chinese calendar and is therefore also like saying \"Lunar New Year\".\n \t18.011\tSpring Festival is the Chinese New Year.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tChinese New Year, known in China as the SpringFestival and in Singapore as the LunarNewYear, is a holiday on and around the new moon on the first day of the year in the traditional Chinese calendar. This calendar is based on the changes in the moon and is only sometimes changed to fit the seasons of the year based on how the Earth moves around the sun. Because of this, Chinese New Year is never on January1. It moves around between January21 and February20.\n \t0.997\tChinese New Year always starts on a new moon, when the Moon is between the Earth and Sun and it looks all dark in the night sky. Because new moons happen about every 29.53 days but the year set by Pope GregoryXIII is 365.2425 days long, the Chinese holiday moves to different days each year. The Chinese calendar adds a 13th month every so often to keep the seasons in the right place, so the first day of the new year always happens between January21 and February20 on the 2nd or 3rd new moon after the 1st day of winter. The chart on the right gives the day of each Chinese New Year from 1996 to 2031.\n \t0.996\tChinese New Year lasts fifteen days, including one week as a national holiday. It starts with the first day of the Chinese lunar year and ends with the full moon fifteen days later. It is always in the middle of winter, but is called the Spring Festival in Chinese because Chinese seasons are a little different from English ones. On the first day of the Chinese New Year, people call on friends and relatives. Because most people watch the special performances on CCTV all the night on New Year's Eve and don't go to bed until 12:00 AM, they usually get up later in the next day. The fifth day of the Chinese New Year is the day to welcome the god of Wealth (Chinese:财神爷), many people make and eat dumplings (Chinese:饺子. Pinyin: Jaozi). They believe that dumplings can hold the god of Wealth and bring luck. The last day of the Chinese New Year is the Lantern Festival. On this day, the moon becomes the full moon. People go out and watch the lantern festivals everywhere. After that, they eat sweet dumpling (Chinese:汤圆,元宵), a kind of dumpling which is round and looks like the full moon.\n\n\n\n```python\nsearch(query=\"How many people live in Paris\")\n```\n\n Input question: How many people live in Paris\n Top-3 lexical search (BM25) hits\n \t16.277\tLive à Paris (English: \"Live in Paris\") is a live album by Canadian singer Céline Dion.\n \t15.173\tÎle-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris.\n \t14.666\tGennevilliers is a town in France near Paris. It is in the region Île-de-France and the department of Hauts-de-Seine. About 41,000 people live there.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tParis (nicknamed the \"\"City of light\"\") is the capital city of France, and the largest city in France. The area is , and around 2.15 million people live there. If suburbs are counted, the population of the Paris area rises to 12 million people.\n \t0.987\tÎle-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris.\n \t0.602\tEssonne is a department to the south of Paris in the Île-de-France region. Its prefecture is Évry. About 1,172,000 people live there (2006 estimation).\n\n\n\n```python\nsearch(query=\"Who is the director of The Matrix?\")\n```\n\n Input question: Who is the director of The Matrix?\n Top-3 lexical search (BM25) hits\n \t16.253\tAn inverse matrix is a matrix that, when multiplied by another matrix, equals the identity matrix. For example:\n \t16.072\tis an identity matrix. There is exactly one identity matrix for each square dimension set. An identity matrix is special because when multiplying any matrix by the identity matrix, the result is always the original matrix with no change.\n \t15.353\tFirst, the system needs to be turned into an augmented matrix. In an augmented matrix, each linear equation becomes a row. On one side of the augmented matrix, the coefficients of each term in the linear equation become numbers in the matrix. On the other side of the augmented matrix are the constant terms each linear equation is equal to. For this system, the augmented matrix is:\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.995\tThe Matrix is a science fiction action movie that was made in 1999. It was written and directed by the Wachowski Brothers. The main actors in the movie are Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, and Hugo Weaving. \"The Matrix\" was followed by two sequels: \"The Matrix Reloaded\" and \"The Matrix Revolutions\".\n \t0.992\tHelmut Bakaitis (born 26 September 1944) is a German-born Australian director, actor and screenwriter. He is known for his role as The Architect in \"The Matrix\" movie series. Bakaitis was born in Lauban, Lower Silesia, Germany (now Lubań, Poland). Bakaitis started teaching directing at Australian Academy of Dramatic Art (AADA).\n \t0.804\tThe Matrix Revolutions is a 2003 movie that was written and directed by the Wachowski brothers. It is the sequel to \"The Matrix Reloaded\".", + "body": "[block:html]\n{\n \"html\": \"\\n\\n
\\n

Demo of Rerank

\\n
\\n\\n\"\n}\n[/block]\n\nIn the past months, we engineered a novel relevance endpoint that takes a query and a list of documents and predicts the relevance between the query and each document. \n\nIt can be used in a two-stage retrieval setup: First you take the user question, and retrieve the top-100 documents from your collection by either using lexical search or semantic search.\n\nYou then pass the question and these top-100 documents to our relevance-endpoint to get a score for each document. You can then rank these documents based on these scores.\n\nIn our benchmarks across 20 datasets, we **saw significant improvements compared to lexical and semantic search**, especially for use-cases where no training data is available.\n\nWe will demonstrate the rerank endpoint in this notebook.\n\n\n\n\n```python\n!pip install \"cohere<5\"\n```\n\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mRequirement already satisfied: cohere<5 in /opt/homebrew/lib/python3.9/site-packages (4.45)\n Requirement already satisfied: aiohttp<4.0,>=3.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (3.8.1)\n Requirement already satisfied: backoff<3.0,>=2.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (2.2.1)\n Requirement already satisfied: fastavro<2.0,>=1.8 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (1.9.3)\n Requirement already satisfied: importlib_metadata<7.0,>=6.0 in /opt/homebrew/lib/python3.9/site-packages (from cohere<5) (6.6.0)\n Requirement already satisfied: requests<3.0.0,>=2.25.0 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from cohere<5) (2.28.2)\n Requirement already satisfied: urllib3<3,>=1.26 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from cohere<5) (1.26.14)\n Requirement already satisfied: attrs>=17.3.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (22.1.0)\n Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (2.0.12)\n Requirement already satisfied: multidict<7.0,>=4.5 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (6.0.2)\n Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (4.0.2)\n Requirement already satisfied: yarl<2.0,>=1.0 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.8.1)\n Requirement already satisfied: frozenlist>=1.1.1 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.3.1)\n Requirement already satisfied: aiosignal>=1.1.2 in /opt/homebrew/lib/python3.9/site-packages (from aiohttp<4.0,>=3.0->cohere<5) (1.2.0)\n Requirement already satisfied: zipp>=0.5 in /opt/homebrew/lib/python3.9/site-packages (from importlib_metadata<7.0,>=6.0->cohere<5) (3.15.0)\n Requirement already satisfied: idna<4,>=2.5 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from requests<3.0.0,>=2.25.0->cohere<5) (3.4)\n Requirement already satisfied: certifi>=2017.4.17 in /Users/elliottchoi/Library/Python/3.9/lib/python/site-packages (from requests<3.0.0,>=2.25.0->cohere<5) (2022.12.7)\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0m\n\n\n```python\nimport cohere\nimport requests\nimport numpy as np\nfrom time import time\nfrom typing import List\nfrom pprint import pprint\n```\n\n\n```python\nAPI_KEY = \"\"\nco = cohere.Client(API_KEY)\nMODEL_NAME = \"rerank-english-v3.0\" # another option is rerank-multilingual-02\n\nquery = \"What is the capital of the United States?\"\ndocs = [\n \"Carson City is the capital city of the American state of Nevada. At the 2010 United States Census, Carson City had a population of 55,274.\",\n \"The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.\",\n \"Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.\",\n \"Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\",\n \"West Virginia is a state in the Appalachian region of the United States. Its capital and largest city is Charleston. It is often abbreviated W. Va. or simply WV.\",\n \"Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\",\n \"North Dakota is a state in the United States. 672,591 people lived in North Dakota in the year 2010. The capital and seat of government is Bismarck.\",\n \"Kentucky is a state in the United States. Its capital is Frankfort. It touches the states of Missouri (by the Mississippi River), Illinois, Indiana, Ohio, West Virginia (by the Ohio River), Tennessee and Virginia. There are many rivers in Kentucky\",\n \"Micronesia, officially the Federated States of Micronesia, is an island nation in the Pacific Ocean, northeast of Papua New Guinea. The country is a sovereign state in free association with the United States. The capital city of Federated States of Micronesia is Palikir.\",\n \"Utah is a state in the west United States. The capital and largest city is Salt Lake City. Utah became a state in the U.S. on January 4, 1896.\"]\n```\n\n## Using the Endpoint\nIn the following cell we will call rerank to rank `docs` based on how relevant they are with `query`.\n\n\n\n\n```python\nresults = co.rerank(query=query, model=MODEL_NAME, documents=docs, top_n=3) # Change top_n to change the number of results returned. If top_n is not passed, all results will be returned.\nfor idx, r in enumerate(results):\n print(f\"Document Rank: {idx + 1}, Document Index: {r.index}\")\n print(f\"Document: {r.document['text']}\")\n print(f\"Relevance Score: {r.relevance_score:.2f}\")\n print(\"\\n\")\n```\n\n Document Rank: 1, Document Index: 3\n Document: Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\n Relevance Score: 1.00\n \n \n Document Rank: 2, Document Index: 5\n Document: Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\n Relevance Score: 0.75\n \n \n Document Rank: 3, Document Index: 1\n Document: The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan.\n Relevance Score: 0.09\n \n \n\n\n## Search on Wikipedia - End2end demo\nThe following is an example how to use this model end-to-end to search over the Simple English Wikipedia, which consists of about 500k passages. \n\nWe use BM25 lexical search to retrieve the top-100 passages matching the query and then send these 100 passages and the query to our rerank endpoint to get a re-ranked list. We output the top-3 hits according to BM25 lexical search (as used by e.g. Elasticsearch) and the re-ranked list from our endpoint.\n\n\n\n```python\n!pip install -U rank_bm25\n```\n\n \u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mCollecting rank_bm25\n Downloading rank_bm25-0.2.2-py3-none-any.whl.metadata (3.2 kB)\n Requirement already satisfied: numpy in /opt/homebrew/lib/python3.9/site-packages (from rank_bm25) (1.23.5)\n Downloading rank_bm25-0.2.2-py3-none-any.whl (8.6 kB)\n Installing collected packages: rank_bm25\n \u001b[33m DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0m\u001b[33mDEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621\u001b[0m\u001b[33m\n \u001b[0mSuccessfully installed rank_bm25-0.2.2\n\n\n\n```python\nimport json\nimport gzip\nimport os\nfrom rank_bm25 import BM25Okapi\nfrom sklearn.feature_extraction import _stop_words\nimport string\nfrom tqdm.autonotebook import tqdm\n```\n\n /var/folders/ww/ht8qwj2s7s799qnktblg6qhm0000gp/T/ipykernel_31832/1066443236.py:7: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n from tqdm.autonotebook import tqdm\n\n\n\n```python\n!wget http://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n```\n\n --2024-04-08 14:28:00-- http://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n Resolving sbert.net (sbert.net)... 172.64.80.1, 2606:4700:130:436c:6f75:6466:6c61:7265\n Connecting to sbert.net (sbert.net)|172.64.80.1|:80... connected.\n HTTP request sent, awaiting response... 301 Moved Permanently\n Location: https://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz [following]\n --2024-04-08 14:28:01-- https://sbert.net/datasets/simplewiki-2020-11-01.jsonl.gz\n Connecting to sbert.net (sbert.net)|172.64.80.1|:443... connected.\n HTTP request sent, awaiting response... 301 Moved Permanently\n Location: https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/datasets/simplewiki-2020-11-01.jsonl.gz [following]\n --2024-04-08 14:28:01-- https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/datasets/simplewiki-2020-11-01.jsonl.gz\n Resolving public.ukp.informatik.tu-darmstadt.de (public.ukp.informatik.tu-darmstadt.de)... 130.83.167.186\n Connecting to public.ukp.informatik.tu-darmstadt.de (public.ukp.informatik.tu-darmstadt.de)|130.83.167.186|:443... connected.\n HTTP request sent, awaiting response... 200 OK\n Length: 50223724 (48M) [application/octet-stream]\n Saving to: ‘simplewiki-2020-11-01.jsonl.gz’\n \n simplewiki-2020-11- 100%[===================>] 47.90M 5.78MB/s in 8.9s \n \n 2024-04-08 14:28:11 (5.37 MB/s) - ‘simplewiki-2020-11-01.jsonl.gz’ saved [50223724/50223724]\n \n\n\n\n```python\nwikipedia_filepath = 'simplewiki-2020-11-01.jsonl.gz'\n\npassages = []\nwith gzip.open(wikipedia_filepath, 'rt', encoding='utf8') as fIn:\n for line in fIn:\n data = json.loads(line.strip())\n passages.extend(data['paragraphs'])\n\nprint(\"Passages:\", len(passages))\n```\n\n Passages: 509663\n\n\n\n```python\nprint(passages[0], passages[1])\n```\n\n Ted Cassidy (July 31, 1932 - January 16, 1979) was an American actor. He was best known for his roles as Lurch and Thing on \"The Addams Family\". Aileen Carol Wuornos Pralle (born Aileen Carol Pittman; February 29, 1956 – October 9, 2002) was an American serial killer. She was born in Rochester, Michigan. She confessed to killing six men in Florida and was executed in Florida State Prison by lethal injection for the murders. Wuornos said that the men she killed had raped her or tried to rape her while she was working as a prostitute.\n\n\n\n```python\n\ndef bm25_tokenizer(text):\n tokenized_doc = []\n for token in text.lower().split():\n token = token.strip(string.punctuation)\n\n if len(token) > 0 and token not in _stop_words.ENGLISH_STOP_WORDS:\n tokenized_doc.append(token)\n return tokenized_doc\n\n\ntokenized_corpus = []\nfor passage in tqdm(passages):\n tokenized_corpus.append(bm25_tokenizer(passage))\n\nbm25 = BM25Okapi(tokenized_corpus)\n```\n\n 100%|██████████| 509663/509663 [00:09<00:00, 51180.82it/s]\n\n\n\n```python\n\ndef search(query, top_k=3, num_candidates=100):\n print(\"Input question:\", query)\n\n ##### BM25 search (lexical search) #####\n bm25_scores = bm25.get_scores(bm25_tokenizer(query))\n top_n = np.argpartition(bm25_scores, -num_candidates)[-num_candidates:]\n bm25_hits = [{'corpus_id': idx, 'score': bm25_scores[idx]} for idx in top_n]\n bm25_hits = sorted(bm25_hits, key=lambda x: x['score'], reverse=True)\n \n print(f\"Top-3 lexical search (BM25) hits\")\n for hit in bm25_hits[0:top_k]:\n print(\"\\t{:.3f}\\t{}\".format(hit['score'], passages[hit['corpus_id']].replace(\"\\n\", \" \")))\n\n \n #Add re-ranking\n docs = [passages[hit['corpus_id']] for hit in bm25_hits]\n \n print(f\"\\nTop-3 hits by rank-API ({len(bm25_hits)} BM25 hits re-ranked)\")\n results = co.rerank(query=query, model=MODEL_NAME, documents=docs, top_n=top_k)\n for hit in results:\n print(\"\\t{:.3f}\\t{}\".format(hit.relevance_score, hit.document[\"text\"].replace(\"\\n\", \" \")))\n```\n\n\n```python\nsearch(query = \"What is the capital of the United States?\")\n```\n\n Input question: What is the capital of the United States?\n Top-3 lexical search (BM25) hits\n \t16.264\tCapital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.\n \t15.124\tIn 1783, it was the capital of the United States for a few months.\n \t14.476\tNew York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tWashington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.\n \t0.994\tNew York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital.\n \t0.993\tAs the national capital of the United States, Washington, D.C. has numerous media outlets in various mediums. Some of these media are known throughout the United States, including \"The Washington Post\" and various broadcasting networks headquartered in D.C.\n\n\n\n```python\nsearch(query = \"Number countries Europe\")\n```\n\n Input question: Number countries Europe\n Top-3 lexical search (BM25) hits\n \t16.963\tECoHR' has a number of judges. The number of judges is seven normally but at the case of dealing a great issue, the number will be 21 and the judges are equally from member countries of the Council of Europe. At present, there are forty seven member countries of the Council of Europe. Each country may have one judge in the ECoHR. But, judges work independently for the ECoHR, and not for their country.\n \t14.560\tMost countries in Europe, and a few countries in Asia, have made some or all synthetic cannabinoids illegal.\n \t14.165\tMany of these countries were members of the Western European Union. Many, such as Norway, are also in Northern Europe or in Central Europe or Southern Europe.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.997\tThere are at least 43 countries in Europe (the European identities of 5 transcontinental countries:Cyprus, Georgia, Kazakhstan, Russia and Turkey are disputed). Most of these countries are members of the European Union.\n \t0.987\tWithin these regions, there are up to 48 independent European countries (with the identities of 5 transcontinental countries being disputed). The largest is the Russian Federation, which covers 39% of Europe.\n \t0.981\tEurope, the planet's 6th largest continent, includes 47 countries and assorted dependencies, islands and territories.\n\n\n\n```python\nsearch(query = \"Elon Musk year birth\")\n```\n\n Input question: Elon Musk year birth\n Top-3 lexical search (BM25) hits\n \t22.568\tTesla, Inc. is a company based in Palo Alto, California which makes electric cars. It was started in 2003 by Martin Eberhard, Dylan Stott, and Elon Musk (who also co-founded PayPal and SpaceX and is the CEO of SpaceX). Eberhard no longer works there. Today, Elon Musk is the Chief Executive Officer (CEO). It started selling its first car, the Roadster in 2008.\n \t20.492\tElon Musk complained via Twitter about Los Angeles traffic and the same day, December 17, 2016, founded the company. It built a short test tunnel in Los Angeles.\n \t20.448\tAt the end of 2016, Musk founded The Boring Company which focuses on tunnelling and infrastructure. He mentioned Los Angeles traffic as the reason for starting this company. In March 2017 Elon Musk announced he has started another company which aims to merge human brains and computers, it is called Neuralink.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.994\tElon Reeve Musk (born June 28, 1971) is a businessman and philanthropist. He was born in South Africa. He moved to Canada and later became an American citizen. Musk is the current CEO & Chief Product Architect of Tesla Motors, a company that makes electric vehicles. He is also the CEO of Solar City, a company that makes solar panels, and the CEO & CTO of SpaceX, an aerospace company. In August 2020, Bloomberg ranked Musk third among the richest people on the planet with net worth to be $115.4 billion.\n \t0.602\tElon Musk and his brother started Zip2, a software company, in 1995. In 1999 he sold it and became a millionaire. He then started X.com, which merged with the company to make PayPal. X.com was then renamed to PayPal, and he focused on growing that part of the company. He then started SpaceX and became the CEO of Tesla.\n \t0.474\tIn early 2002, Musk was seeking workers for his new space company, soon to be named SpaceX. Musk found a rocket engineer Tom Mueller (later SpaceX's CTO of Propulsion). He agreed to work for Musk. That was how SpaceX was born. The first headquarters of SpaceX was in a warehouse in El Segundo, California. The company has grown rapidly since it was founded in 2002, growing from 160 workers in November 2005 to 1,100 in 2010, 3,800 workers and contractors by October 2013, nearly 5,000 by late 2015, and about 6,000 in April 2017.\n\n\n\n```python\nsearch(query = \"Which US president was killed?\")\n```\n\n Input question: Which US president was killed?\n Top-3 lexical search (BM25) hits\n \t11.966\tHe came into office when the previous president, Cyprien Ntaryamira, was killed in a plane crash. It was an assassination in which the Rwandan president Juvénal Habyarimana was also killed. Ntibantunganya left office when he was deposed by Pierre Buyoya in a military coup of 1996.\n \t11.697\tBurr killed Alexander Hamilton in a duel in 1804, when Burr was still Vice President.\n \t11.482\tAfter President James A. Garfield died, vice-president Chester Arthur replaced him. The man who killed him expected the new President to pardon him. This did not happen.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.984\tJames Abram Garfield (November 19, 1831 - September 19, 1881) was the 20th (1881) President of the United States and the 2nd President to be assassinated (killed while in office). President Garfield was in office from March to September of 1881. He was in office for a total of six months and fifteen days. For almost half that time he was bedridden as a result of an attempt to kill him. He was shot on July 2 and finally died in September the same year he got into office.\n \t0.976\tPresident William McKinley was killed by anarchist Leon Czolgosz because Czolgosz believed president McKinley was against good working people, he considered McKinley responsible for falsifying the reasons for the war, and approving and waging an illegal, devastating Philippines war.\n \t0.916\tOn the night that President Abraham Lincoln was killed, someone also tried to kill Seward. For the rest of his life, Seward had scars on his face from the attack. Later, the man who attacked him was caught and put to death.\n\n\n\n```python\nsearch(query=\"When is Chinese New Year\")\n```\n\n Input question: When is Chinese New Year\n Top-3 lexical search (BM25) hits\n \t18.606\tToday in China the Gregorian calendar is used for most activities. At the same time, the Chinese calendar is still used for traditional Chinese holidays like Chinese New Year or Lunar New Year.\n \t18.151\tBefore that, the holiday was usually just called the \"NewYear\". Because the traditional Chinese calendar is mostly based on the changes in the moon, the Chinese New Year is also known in English as the \"Lunar New Year\" or \"Chinese Lunar New Year\". This name comes from \"Luna\", an old Latin name for the moon. The Indonesian name for the holiday is Imlek, which comes from the Hokkien word for the old Chinese calendar and is therefore also like saying \"Lunar New Year\".\n \t18.011\tSpring Festival is the Chinese New Year.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tChinese New Year, known in China as the SpringFestival and in Singapore as the LunarNewYear, is a holiday on and around the new moon on the first day of the year in the traditional Chinese calendar. This calendar is based on the changes in the moon and is only sometimes changed to fit the seasons of the year based on how the Earth moves around the sun. Because of this, Chinese New Year is never on January1. It moves around between January21 and February20.\n \t0.997\tChinese New Year always starts on a new moon, when the Moon is between the Earth and Sun and it looks all dark in the night sky. Because new moons happen about every 29.53 days but the year set by Pope GregoryXIII is 365.2425 days long, the Chinese holiday moves to different days each year. The Chinese calendar adds a 13th month every so often to keep the seasons in the right place, so the first day of the new year always happens between January21 and February20 on the 2nd or 3rd new moon after the 1st day of winter. The chart on the right gives the day of each Chinese New Year from 1996 to 2031.\n \t0.996\tChinese New Year lasts fifteen days, including one week as a national holiday. It starts with the first day of the Chinese lunar year and ends with the full moon fifteen days later. It is always in the middle of winter, but is called the Spring Festival in Chinese because Chinese seasons are a little different from English ones. On the first day of the Chinese New Year, people call on friends and relatives. Because most people watch the special performances on CCTV all the night on New Year's Eve and don't go to bed until 12:00 AM, they usually get up later in the next day. The fifth day of the Chinese New Year is the day to welcome the god of Wealth (Chinese:财神爷), many people make and eat dumplings (Chinese:饺子. Pinyin: Jaozi). They believe that dumplings can hold the god of Wealth and bring luck. The last day of the Chinese New Year is the Lantern Festival. On this day, the moon becomes the full moon. People go out and watch the lantern festivals everywhere. After that, they eat sweet dumpling (Chinese:汤圆,元宵), a kind of dumpling which is round and looks like the full moon.\n\n\n\n```python\nsearch(query=\"How many people live in Paris\")\n```\n\n Input question: How many people live in Paris\n Top-3 lexical search (BM25) hits\n \t16.277\tLive à Paris (English: \"Live in Paris\") is a live album by Canadian singer Céline Dion.\n \t15.173\tÎle-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris.\n \t14.666\tGennevilliers is a town in France near Paris. It is in the region Île-de-France and the department of Hauts-de-Seine. About 41,000 people live there.\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.999\tParis (nicknamed the \"\"City of light\"\") is the capital city of France, and the largest city in France. The area is , and around 2.15 million people live there. If suburbs are counted, the population of the Paris area rises to 12 million people.\n \t0.987\tÎle-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris.\n \t0.602\tEssonne is a department to the south of Paris in the Île-de-France region. Its prefecture is Évry. About 1,172,000 people live there (2006 estimation).\n\n\n\n```python\nsearch(query=\"Who is the director of The Matrix?\")\n```\n\n Input question: Who is the director of The Matrix?\n Top-3 lexical search (BM25) hits\n \t16.253\tAn inverse matrix is a matrix that, when multiplied by another matrix, equals the identity matrix. For example:\n \t16.072\tis an identity matrix. There is exactly one identity matrix for each square dimension set. An identity matrix is special because when multiplying any matrix by the identity matrix, the result is always the original matrix with no change.\n \t15.353\tFirst, the system needs to be turned into an augmented matrix. In an augmented matrix, each linear equation becomes a row. On one side of the augmented matrix, the coefficients of each term in the linear equation become numbers in the matrix. On the other side of the augmented matrix are the constant terms each linear equation is equal to. For this system, the augmented matrix is:\n \n Top-3 hits by rank-API (100 BM25 hits re-ranked)\n \t0.995\tThe Matrix is a science fiction action movie that was made in 1999. It was written and directed by the Wachowski Brothers. The main actors in the movie are Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, and Hugo Weaving. \"The Matrix\" was followed by two sequels: \"The Matrix Reloaded\" and \"The Matrix Revolutions\".\n \t0.992\tHelmut Bakaitis (born 26 September 1944) is a German-born Australian director, actor and screenwriter. He is known for his role as The Architect in \"The Matrix\" movie series. Bakaitis was born in Lauban, Lower Silesia, Germany (now Lubań, Poland). Bakaitis started teaching directing at Australian Academy of Dramatic Art (AADA).\n \t0.804\tThe Matrix Revolutions is a 2003 movie that was written and directed by the Wachowski brothers. It is the sequel to \"The Matrix Reloaded\".", "html": "", "htmlmode": false, "fullscreen": false, diff --git a/scripts/cookbooks-mdx/rerank-demo.mdx b/scripts/cookbooks-mdx/rerank-demo.mdx index ec2864ce..ea908330 100644 --- a/scripts/cookbooks-mdx/rerank-demo.mdx +++ b/scripts/cookbooks-mdx/rerank-demo.mdx @@ -132,7 +132,7 @@ slug: /page/rerank-demo } -In the past months, we engineered a novel relevance endpoint that takes a query and a list of documents and predicts the relevance between the query and each document. +In the past months, we engineered a novel relevance endpoint that takes a query and a list of documents and predicts the relevance between the query and each document. It can be used in a two-stage retrieval setup: First you take the user question, and retrieve the top-100 documents from your collection by either using lexical search or semantic search. @@ -193,7 +193,7 @@ docs = [ "Charlotte Amalie is the capital and largest city of the United States Virgin Islands. It has about 20,000 people. The city is on the island of Saint Thomas.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America.", "West Virginia is a state in the Appalachian region of the United States. Its capital and largest city is Charleston. It is often abbreviated W. Va. or simply WV.", - "Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", + "Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment.", "North Dakota is a state in the United States. 672,591 people lived in North Dakota in the year 2010. The capital and seat of government is Bismarck.", "Kentucky is a state in the United States. Its capital is Frankfort. It touches the states of Missouri (by the Mississippi River), Illinois, Indiana, Ohio, West Virginia (by the Ohio River), Tennessee and Virginia. There are many rivers in Kentucky", "Micronesia, officially the Federated States of Micronesia, is an island nation in the Pacific Ocean, northeast of Papua New Guinea. The country is a sovereign state in free association with the United States. The capital city of Federated States of Micronesia is Palikir.", @@ -218,22 +218,22 @@ for idx, r in enumerate(results): Document Rank: 1, Document Index: 3 Document: Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America. Relevance Score: 1.00 - - + + Document Rank: 2, Document Index: 5 - Document: Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. + Document: Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. Relevance Score: 0.75 - - + + Document Rank: 3, Document Index: 1 Document: The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean that are a political division controlled by the United States. Its capital is Saipan. Relevance Score: 0.09 - - + + ## Search on Wikipedia - End2end demo -The following is an example how to use this model end-to-end to search over the Simple English Wikipedia, which consists of about 500k passages. +The following is an example how to use this model end-to-end to search over the Simple English Wikipedia, which consists of about 500k passages. We use BM25 lexical search to retrieve the top-100 passages matching the query and then send these 100 passages and the query to our rerank endpoint to get a re-ranked list. We output the top-3 hits according to BM25 lexical search (as used by e.g. Elasticsearch) and the re-ranked list from our endpoint. @@ -289,11 +289,11 @@ from tqdm.autonotebook import tqdm HTTP request sent, awaiting response... 200 OK Length: 50223724 (48M) [application/octet-stream] Saving to: ‘simplewiki-2020-11-01.jsonl.gz’ - - simplewiki-2020-11- 100%[===================>] 47.90M 5.78MB/s in 8.9s - + + simplewiki-2020-11- 100%[===================>] 47.90M 5.78MB/s in 8.9s + 2024-04-08 14:28:11 (5.37 MB/s) - ‘simplewiki-2020-11-01.jsonl.gz’ saved [50223724/50223724] - + @@ -354,15 +354,15 @@ def search(query, top_k=3, num_candidates=100): top_n = np.argpartition(bm25_scores, -num_candidates)[-num_candidates:] bm25_hits = [{'corpus_id': idx, 'score': bm25_scores[idx]} for idx in top_n] bm25_hits = sorted(bm25_hits, key=lambda x: x['score'], reverse=True) - + print(f"Top-3 lexical search (BM25) hits") for hit in bm25_hits[0:top_k]: print("\t{:.3f}\t{}".format(hit['score'], passages[hit['corpus_id']].replace("\n", " "))) - + #Add re-ranking docs = [passages[hit['corpus_id']] for hit in bm25_hits] - + print(f"\nTop-3 hits by rank-API ({len(bm25_hits)} BM25 hits re-ranked)") results = co.rerank(query=query, model=MODEL_NAME, documents=docs, top_n=top_k) for hit in results: @@ -376,10 +376,10 @@ search(query = "What is the capital of the United States?") Input question: What is the capital of the United States? Top-3 lexical search (BM25) hits - 16.264 Capital punishment (the death penalty) has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. + 16.264 Capital punishment has existed in the United States since before the United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. The federal government (including the United States military) also uses capital punishment. 15.124 In 1783, it was the capital of the United States for a few months. 14.476 New York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.999 Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. The President of the USA and many major national government offices are in the territory. This makes it the political center of the United States of America. 0.994 New York was the capital of the United States under the Articles of Confederation from 1785 to 1788. When the US Constitution was made, it stayed as the capital from 1789 until 1790. In 1789, the first President of the United States, George Washington, was inaugurated; the first United States Congress and the Supreme Court of the United States each met for the first time, and the United States Bill of Rights was written, all at Federal Hall on Wall Street. By 1790, New York grew bigger than Philadelphia, so it become the biggest city in the United States. By the end of 1790, because of the Residence Act, Philadelphia became the new capital. @@ -396,7 +396,7 @@ search(query = "Number countries Europe") 16.963 ECoHR' has a number of judges. The number of judges is seven normally but at the case of dealing a great issue, the number will be 21 and the judges are equally from member countries of the Council of Europe. At present, there are forty seven member countries of the Council of Europe. Each country may have one judge in the ECoHR. But, judges work independently for the ECoHR, and not for their country. 14.560 Most countries in Europe, and a few countries in Asia, have made some or all synthetic cannabinoids illegal. 14.165 Many of these countries were members of the Western European Union. Many, such as Norway, are also in Northern Europe or in Central Europe or Southern Europe. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.997 There are at least 43 countries in Europe (the European identities of 5 transcontinental countries:Cyprus, Georgia, Kazakhstan, Russia and Turkey are disputed). Most of these countries are members of the European Union. 0.987 Within these regions, there are up to 48 independent European countries (with the identities of 5 transcontinental countries being disputed). The largest is the Russian Federation, which covers 39% of Europe. @@ -413,7 +413,7 @@ search(query = "Elon Musk year birth") 22.568 Tesla, Inc. is a company based in Palo Alto, California which makes electric cars. It was started in 2003 by Martin Eberhard, Dylan Stott, and Elon Musk (who also co-founded PayPal and SpaceX and is the CEO of SpaceX). Eberhard no longer works there. Today, Elon Musk is the Chief Executive Officer (CEO). It started selling its first car, the Roadster in 2008. 20.492 Elon Musk complained via Twitter about Los Angeles traffic and the same day, December 17, 2016, founded the company. It built a short test tunnel in Los Angeles. 20.448 At the end of 2016, Musk founded The Boring Company which focuses on tunnelling and infrastructure. He mentioned Los Angeles traffic as the reason for starting this company. In March 2017 Elon Musk announced he has started another company which aims to merge human brains and computers, it is called Neuralink. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.994 Elon Reeve Musk (born June 28, 1971) is a businessman and philanthropist. He was born in South Africa. He moved to Canada and later became an American citizen. Musk is the current CEO & Chief Product Architect of Tesla Motors, a company that makes electric vehicles. He is also the CEO of Solar City, a company that makes solar panels, and the CEO & CTO of SpaceX, an aerospace company. In August 2020, Bloomberg ranked Musk third among the richest people on the planet with net worth to be $115.4 billion. 0.602 Elon Musk and his brother started Zip2, a software company, in 1995. In 1999 he sold it and became a millionaire. He then started X.com, which merged with the company to make PayPal. X.com was then renamed to PayPal, and he focused on growing that part of the company. He then started SpaceX and became the CEO of Tesla. @@ -430,7 +430,7 @@ search(query = "Which US president was killed?") 11.966 He came into office when the previous president, Cyprien Ntaryamira, was killed in a plane crash. It was an assassination in which the Rwandan president Juvénal Habyarimana was also killed. Ntibantunganya left office when he was deposed by Pierre Buyoya in a military coup of 1996. 11.697 Burr killed Alexander Hamilton in a duel in 1804, when Burr was still Vice President. 11.482 After President James A. Garfield died, vice-president Chester Arthur replaced him. The man who killed him expected the new President to pardon him. This did not happen. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.984 James Abram Garfield (November 19, 1831 - September 19, 1881) was the 20th (1881) President of the United States and the 2nd President to be assassinated (killed while in office). President Garfield was in office from March to September of 1881. He was in office for a total of six months and fifteen days. For almost half that time he was bedridden as a result of an attempt to kill him. He was shot on July 2 and finally died in September the same year he got into office. 0.976 President William McKinley was killed by anarchist Leon Czolgosz because Czolgosz believed president McKinley was against good working people, he considered McKinley responsible for falsifying the reasons for the war, and approving and waging an illegal, devastating Philippines war. @@ -447,7 +447,7 @@ search(query="When is Chinese New Year") 18.606 Today in China the Gregorian calendar is used for most activities. At the same time, the Chinese calendar is still used for traditional Chinese holidays like Chinese New Year or Lunar New Year. 18.151 Before that, the holiday was usually just called the "NewYear". Because the traditional Chinese calendar is mostly based on the changes in the moon, the Chinese New Year is also known in English as the "Lunar New Year" or "Chinese Lunar New Year". This name comes from "Luna", an old Latin name for the moon. The Indonesian name for the holiday is Imlek, which comes from the Hokkien word for the old Chinese calendar and is therefore also like saying "Lunar New Year". 18.011 Spring Festival is the Chinese New Year. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.999 Chinese New Year, known in China as the SpringFestival and in Singapore as the LunarNewYear, is a holiday on and around the new moon on the first day of the year in the traditional Chinese calendar. This calendar is based on the changes in the moon and is only sometimes changed to fit the seasons of the year based on how the Earth moves around the sun. Because of this, Chinese New Year is never on January1. It moves around between January21 and February20. 0.997 Chinese New Year always starts on a new moon, when the Moon is between the Earth and Sun and it looks all dark in the night sky. Because new moons happen about every 29.53 days but the year set by Pope GregoryXIII is 365.2425 days long, the Chinese holiday moves to different days each year. The Chinese calendar adds a 13th month every so often to keep the seasons in the right place, so the first day of the new year always happens between January21 and February20 on the 2nd or 3rd new moon after the 1st day of winter. The chart on the right gives the day of each Chinese New Year from 1996 to 2031. @@ -464,7 +464,7 @@ search(query="How many people live in Paris") 16.277 Live à Paris (English: "Live in Paris") is a live album by Canadian singer Céline Dion. 15.173 Île-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris. 14.666 Gennevilliers is a town in France near Paris. It is in the region Île-de-France and the department of Hauts-de-Seine. About 41,000 people live there. - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.999 Paris (nicknamed the ""City of light"") is the capital city of France, and the largest city in France. The area is , and around 2.15 million people live there. If suburbs are counted, the population of the Paris area rises to 12 million people. 0.987 Île-de-France is a region of France. The capital city is Paris. It is also the capital city of France. In 2013 about 12 million people lived in the region. About 2.1 million people live in the city of Paris. @@ -481,7 +481,7 @@ search(query="Who is the director of The Matrix?") 16.253 An inverse matrix is a matrix that, when multiplied by another matrix, equals the identity matrix. For example: 16.072 is an identity matrix. There is exactly one identity matrix for each square dimension set. An identity matrix is special because when multiplying any matrix by the identity matrix, the result is always the original matrix with no change. 15.353 First, the system needs to be turned into an augmented matrix. In an augmented matrix, each linear equation becomes a row. On one side of the augmented matrix, the coefficients of each term in the linear equation become numbers in the matrix. On the other side of the augmented matrix are the constant terms each linear equation is equal to. For this system, the augmented matrix is: - + Top-3 hits by rank-API (100 BM25 hits re-ranked) 0.995 The Matrix is a science fiction action movie that was made in 1999. It was written and directed by the Wachowski Brothers. The main actors in the movie are Keanu Reeves, Laurence Fishburne, Carrie-Anne Moss, and Hugo Weaving. "The Matrix" was followed by two sequels: "The Matrix Reloaded" and "The Matrix Revolutions". 0.992 Helmut Bakaitis (born 26 September 1944) is a German-born Australian director, actor and screenwriter. He is known for his role as The Architect in "The Matrix" movie series. Bakaitis was born in Lauban, Lower Silesia, Germany (now Lubań, Poland). Bakaitis started teaching directing at Australian Academy of Dramatic Art (AADA). diff --git a/snippets/curl/rerank-post.sh b/snippets/curl/rerank-post.sh index 11dead44..f2afc9aa 100644 --- a/snippets/curl/rerank-post.sh +++ b/snippets/curl/rerank-post.sh @@ -11,5 +11,5 @@ curl --request POST \ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' \ No newline at end of file diff --git a/snippets/go/go.mod b/snippets/go/go.mod new file mode 100644 index 00000000..64a41d3e --- /dev/null +++ b/snippets/go/go.mod @@ -0,0 +1,11 @@ +module github.com/cohere/cohere-developer-experience/snippets/go + +go 1.23.0 + +require github.com/cohere-ai/cohere-go/v2 v2.12.0 + +require ( + github.com/aws/aws-sdk-go-v2 v1.30.3 // indirect + github.com/aws/smithy-go v1.20.3 // indirect + github.com/google/uuid v1.4.0 // indirect +) diff --git a/snippets/go/go.sum b/snippets/go/go.sum new file mode 100644 index 00000000..a7399b36 --- /dev/null +++ b/snippets/go/go.sum @@ -0,0 +1,16 @@ +github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= +github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/cohere-ai/cohere-go/v2 v2.12.0 h1:ihSlK14elvCEPjO0RT9xuMwORhQND8aXmCZzsPEHF4c= +github.com/cohere-ai/cohere-go/v2 v2.12.0/go.mod h1:MuiJkCxlR18BDV2qQPbz2Yb/OCVphT1y6nD2zYaKeR0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/snippets/java/app/src/main/java/RerankPost.java b/snippets/java/app/src/main/java/RerankPost.java index 49d74834..c04b6d81 100644 --- a/snippets/java/app/src/main/java/RerankPost.java +++ b/snippets/java/app/src/main/java/RerankPost.java @@ -15,7 +15,7 @@ public static void main(String[] args) { RerankRequestDocumentsItem.of("The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan."), RerankRequestDocumentsItem.of("Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages."), RerankRequestDocumentsItem.of("Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district."), - RerankRequestDocumentsItem.of("Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.") + RerankRequestDocumentsItem.of("Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.") )).model("rerank-english-v3.0").topN(3).build()); System.out.println(response); diff --git a/snippets/node/chat-post/default.js b/snippets/node/chat-post/default.js new file mode 100644 index 00000000..d869a475 --- /dev/null +++ b/snippets/node/chat-post/default.js @@ -0,0 +1,22 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const response = await cohere.chat({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + console.log(response); +})(); diff --git a/snippets/node/chat-post/documents.js b/snippets/node/chat-post/documents.js new file mode 100644 index 00000000..cb8228ba --- /dev/null +++ b/snippets/node/chat-post/documents.js @@ -0,0 +1,35 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const response = await cohere.chat({ + message: 'Who is more popular: Nsync or Backstreet Boys?', + documents: [ + { + title: 'CSPC: Backstreet Boys Popularity Analysis - ChartMasters', + snippet: + '↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: Backstreet Boys Popularity Analysis\n\nHernán Lopez Posted on February 9, 2017 Posted in CSPC 72 Comments Tagged with Backstreet Boys, Boy band\n\nAt one point, Backstreet Boys defined success: massive albums sales across the globe, great singles sales, plenty of chart topping releases, hugely hyped tours and tremendous media coverage.\n\nIt is true that they benefited from extraordinarily good market conditions in all markets. After all, the all-time record year for the music business, as far as revenues in billion dollars are concerned, was actually 1999. That is, back when this five men group was at its peak.', + }, + { + title: 'CSPC: NSYNC Popularity Analysis - ChartMasters', + snippet: + "↓ Skip to Main Content\n\nMusic industry – One step closer to being accurate\n\nCSPC: NSYNC Popularity Analysis\n\nMJD Posted on February 9, 2018 Posted in CSPC 27 Comments Tagged with Boy band, N'Sync\n\nAt the turn of the millennium three teen acts were huge in the US, the Backstreet Boys, Britney Spears and NSYNC. The latter is the only one we haven’t study so far. It took 15 years and Adele to break their record of 2,4 million units sold of No Strings Attached in its first week alone.\n\nIt wasn’t a fluke, as the second fastest selling album of the Soundscan era prior 2015, was also theirs since Celebrity debuted with 1,88 million units sold.", + }, + { + title: 'CSPC: Backstreet Boys Popularity Analysis - ChartMasters', + snippet: + ' 1997, 1998, 2000 and 2001 also rank amongst some of the very best years.\n\nYet the way many music consumers – especially teenagers and young women’s – embraced their output deserves its own chapter. If Jonas Brothers and more recently One Direction reached a great level of popularity during the past decade, the type of success achieved by Backstreet Boys is in a completely different level as they really dominated the business for a few years all over the world, including in some countries that were traditionally hard to penetrate for Western artists.\n\nWe will try to analyze the extent of that hegemony with this new article with final results which will more than surprise many readers.', + }, + { + title: 'CSPC: NSYNC Popularity Analysis - ChartMasters', + snippet: + ' Was the teen group led by Justin Timberlake really that big? Was it only in the US where they found success? Or were they a global phenomenon?\n\nAs usual, I’ll be using the Commensurate Sales to Popularity Concept in order to relevantly gauge their results. This concept will not only bring you sales information for all NSYNC‘s albums, physical and download singles, as well as audio and video streaming, but it will also determine their true popularity. If you are not yet familiar with the CSPC method, the next page explains it with a short video. I fully recommend watching the video before getting into the sales figures.', + }, + ], + }); + + console.log(response); +})(); diff --git a/snippets/node/chat-post/stream.js b/snippets/node/chat-post/stream.js new file mode 100644 index 00000000..4dd22260 --- /dev/null +++ b/snippets/node/chat-post/stream.js @@ -0,0 +1,26 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const chatStream = await cohere.chatStream({ + chatHistory: [ + { role: 'USER', message: 'Who discovered gravity?' }, + { + role: 'CHATBOT', + message: 'The man who is widely credited with discovering gravity is Sir Isaac Newton', + }, + ], + message: 'What year was he born?', + // perform web search before answering the question. You can also use your own custom connector. + connectors: [{ id: 'web-search' }], + }); + + for await (const message of chatStream) { + if (message.eventType === 'text-generation') { + process.stdout.write(message); + } + } +})(); diff --git a/snippets/node/chat-post/tools.js b/snippets/node/chat-post/tools.js new file mode 100644 index 00000000..d647e500 --- /dev/null +++ b/snippets/node/chat-post/tools.js @@ -0,0 +1,40 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const response = await cohere.chat({ + message: + "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?", + tools: [ + { + name: 'query_daily_sales_report', + description: + 'Connects to a database to retrieve overall sales volumes and sales information for a given day.', + parameterDefinitions: { + day: { + description: 'Retrieves sales data for this day, formatted as YYYY-MM-DD.', + type: 'str', + required: true, + }, + }, + }, + { + name: 'query_product_catalog', + description: + 'Connects to a a product catalog with information about all the products being sold, including categories, prices, and stock levels.', + parameterDefinitions: { + category: { + description: 'Retrieves product information data for all products in this category.', + type: 'str', + required: true, + }, + }, + }, + ], + }); + + console.log(response); +})(); diff --git a/snippets/node/classify-post.js b/snippets/node/classify-post.js new file mode 100644 index 00000000..28118f6e --- /dev/null +++ b/snippets/node/classify-post.js @@ -0,0 +1,25 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const classify = await cohere.classify({ + examples: [ + { text: "Dermatologists don't like her!", label: 'Spam' }, + { text: "'Hello, open to this?'", label: 'Spam' }, + { text: 'I need help please wire me $1000 right now', label: 'Spam' }, + { text: 'Nice to know you ;)', label: 'Spam' }, + { text: 'Please help me?', label: 'Spam' }, + { text: 'Your parcel will be delivered today', label: 'Not spam' }, + { text: 'Review changes to our Terms and Conditions', label: 'Not spam' }, + { text: 'Weekly sync notes', label: 'Not spam' }, + { text: "'Re: Follow up from today's meeting'", label: 'Not spam' }, + { text: 'Pre-read for tomorrow', label: 'Not spam' }, + ], + inputs: ['Confirm your email address', 'hey i need u to send some $'], + }); + + console.log(classify); +})(); diff --git a/snippets/node/connector-create.js b/snippets/node/connector-create.js new file mode 100644 index 00000000..2869531d --- /dev/null +++ b/snippets/node/connector-create.js @@ -0,0 +1,15 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const connector = await cohere.connectors.create({ + name: 'test-connector', + url: 'https://example.com/search', + description: 'A test connector', + }); + + console.log(connector); +})(); diff --git a/snippets/node/connector-delete.js b/snippets/node/connector-delete.js new file mode 100644 index 00000000..e31af9d1 --- /dev/null +++ b/snippets/node/connector-delete.js @@ -0,0 +1,9 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + await cohere.connectors.delete('connector-id'); +})(); diff --git a/snippets/node/connector-get.js b/snippets/node/connector-get.js new file mode 100644 index 00000000..70a1559e --- /dev/null +++ b/snippets/node/connector-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const connector = await cohere.connectors.get('connector-id'); + + console.log(connector); +})(); diff --git a/snippets/node/connector-patch.js b/snippets/node/connector-patch.js new file mode 100644 index 00000000..cad6446e --- /dev/null +++ b/snippets/node/connector-patch.js @@ -0,0 +1,14 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const connector = await cohere.connectors.update(connector.id, { + name: 'test-connector-renamed', + description: 'A test connector renamed', + }); + + console.log(connector); +})(); diff --git a/snippets/node/connectors-id-oauth-authorize-post.js b/snippets/node/connectors-id-oauth-authorize-post.js new file mode 100644 index 00000000..e4bd31af --- /dev/null +++ b/snippets/node/connectors-id-oauth-authorize-post.js @@ -0,0 +1,13 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const connector = await cohere.connectors.oAuthAuthorize('connector-id', { + redirect_uri: 'https://example.com/oauth/callback', + }); + + console.log(connector); +})(); diff --git a/snippets/node/connectors-list.js b/snippets/node/connectors-list.js new file mode 100644 index 00000000..39dfa840 --- /dev/null +++ b/snippets/node/connectors-list.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const connectors = await cohere.connectors.list(); + + console.log(connectors); +})(); diff --git a/snippets/node/dataset-get.js b/snippets/node/dataset-get.js new file mode 100644 index 00000000..89d28107 --- /dev/null +++ b/snippets/node/dataset-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const datasets = await cohere.datasets.get('<>'); + + console.log(datasets); +})(); diff --git a/snippets/node/dataset-post.js b/snippets/node/dataset-post.js new file mode 100644 index 00000000..91e98cca --- /dev/null +++ b/snippets/node/dataset-post.js @@ -0,0 +1,14 @@ +import { CohereClient } from 'cohere-ai'; +const fs = require('fs'); + +const cohere = new CohereClient({ + +}); + +(async () => { + const file = fs.createReadStream('embed_jobs_sample_data.jsonl'); // {"text": "The quick brown fox jumps over the lazy dog"} + + const dataset = await cohere.datasets.create({ name: 'my-dataset', type: 'embed-input' }, file); + + console.log(dataset); +})(); diff --git a/snippets/node/dataset-usage-get.js b/snippets/node/dataset-usage-get.js new file mode 100644 index 00000000..410f5e62 --- /dev/null +++ b/snippets/node/dataset-usage-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const usage = await cohere.datasets.getUsage('id'); + + console.log(usage); +})(); diff --git a/snippets/node/detokenize-post.js b/snippets/node/detokenize-post.js new file mode 100644 index 00000000..5cd6933c --- /dev/null +++ b/snippets/node/detokenize-post.js @@ -0,0 +1,14 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const detokenize = await cohere.detokenize({ + tokens: [10002, 2261, 2012, 8, 2792, 43], + model: 'command', + }); + + console.log(detokenize); +})(); diff --git a/snippets/node/embed-jobs-cancel.js b/snippets/node/embed-jobs-cancel.js new file mode 100644 index 00000000..609d3a4c --- /dev/null +++ b/snippets/node/embed-jobs-cancel.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const embedJob = await cohere.embedJobs.cancel('job_id'); + + console.log(embedJob); +})(); diff --git a/snippets/node/embed-jobs-get.js b/snippets/node/embed-jobs-get.js new file mode 100644 index 00000000..4dae4e7f --- /dev/null +++ b/snippets/node/embed-jobs-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const embedJobs = await cohere.embedJobs.list(); + + console.log(embedJobs); +})(); diff --git a/snippets/node/embed-jobs-post.js b/snippets/node/embed-jobs-post.js new file mode 100644 index 00000000..55f3a7e4 --- /dev/null +++ b/snippets/node/embed-jobs-post.js @@ -0,0 +1,15 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const embedJob = await cohere.embedJobs.create({ + datasetId: 'my-dataset', + inputType: 'search_document', + model: 'embed-english-v3.0', + }); + + console.log(embedJob); +})(); diff --git a/snippets/node/embed-post.js b/snippets/node/embed-post.js new file mode 100644 index 00000000..ac441625 --- /dev/null +++ b/snippets/node/embed-post.js @@ -0,0 +1,14 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const embed = await cohere.embed({ + texts: ['hello', 'goodbye'], + model: 'embed-english-v3.0', + inputType: 'classification', + }); + console.log(embed); +})(); diff --git a/snippets/node/emebed-jobs-get.js b/snippets/node/emebed-jobs-get.js new file mode 100644 index 00000000..b25cf1ae --- /dev/null +++ b/snippets/node/emebed-jobs-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const embedJob = await cohere.embedJobs.get('job_id'); + + console.log(embedJob); +})(); diff --git a/snippets/node/finetuning/create-finetuned-model.js b/snippets/node/finetuning/create-finetuned-model.js new file mode 100644 index 00000000..84ec08f8 --- /dev/null +++ b/snippets/node/finetuning/create-finetuned-model.js @@ -0,0 +1,19 @@ +import { Cohere, CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const finetunedModel = await cohere.finetuning.createFinetunedModel({ + name: 'test-finetuned-model', + settings: { + base_model: { + base_type: Cohere.Finetuning.BaseType.BaseTypeChat, + }, + dataset_id: 'test-dataset-id', + }, + }); + + console.log(finetunedModel); +})(); diff --git a/snippets/node/finetuning/delete-finetuned-model.js b/snippets/node/finetuning/delete-finetuned-model.js new file mode 100644 index 00000000..f6bef36a --- /dev/null +++ b/snippets/node/finetuning/delete-finetuned-model.js @@ -0,0 +1,9 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + await cohere.finetuning.deleteFinetunedModel('test-id'); +})(); diff --git a/snippets/node/finetuning/get-finetuned-model.js b/snippets/node/finetuning/get-finetuned-model.js new file mode 100644 index 00000000..f5779d1b --- /dev/null +++ b/snippets/node/finetuning/get-finetuned-model.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const finetunedModel = await cohere.finetuning.getFinetunedModel('test-id'); + + console.log(finetunedModel); +})(); diff --git a/snippets/node/finetuning/list-events.js b/snippets/node/finetuning/list-events.js new file mode 100644 index 00000000..a1b0a69f --- /dev/null +++ b/snippets/node/finetuning/list-events.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const events = await cohere.finetuning.listEvents('test-finetuned-model-id'); + + console.log(events); +})(); diff --git a/snippets/node/finetuning/list-finetuned-models.js b/snippets/node/finetuning/list-finetuned-models.js new file mode 100644 index 00000000..a2b52d96 --- /dev/null +++ b/snippets/node/finetuning/list-finetuned-models.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const finetunedModels = await cohere.finetuning.listFinetunedModels(); + + console.log(finetunedModels); +})(); diff --git a/snippets/node/finetuning/list-training-step-metrics.js b/snippets/node/finetuning/list-training-step-metrics.js new file mode 100644 index 00000000..abcc3293 --- /dev/null +++ b/snippets/node/finetuning/list-training-step-metrics.js @@ -0,0 +1,13 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const trainingStepMetrics = await cohere.finetuning.listTrainingStepMetrics( + 'test-finetuned-model-id' + ); + + console.log(trainingStepMetrics); +})(); diff --git a/snippets/node/finetuning/update-finetuned-model.js b/snippets/node/finetuning/update-finetuned-model.js new file mode 100644 index 00000000..ec2d293f --- /dev/null +++ b/snippets/node/finetuning/update-finetuned-model.js @@ -0,0 +1,13 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const finetunedModel = await cohere.finetuning.updateFinetunedModel('test-id', { + name: 'new name', + }); + + console.log(finetunedModel); +})(); diff --git a/snippets/node/generate-post.js b/snippets/node/generate-post.js new file mode 100644 index 00000000..344d5670 --- /dev/null +++ b/snippets/node/generate-post.js @@ -0,0 +1,13 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const generate = await cohere.generate({ + prompt: 'Please explain to me how LLMs work', + }); + + console.log(generate); +})(); diff --git a/snippets/node/models-list-get.js b/snippets/node/models-list-get.js new file mode 100644 index 00000000..3148da06 --- /dev/null +++ b/snippets/node/models-list-get.js @@ -0,0 +1,11 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const models = await cohere.models.list(); + + console.log(models); +})(); diff --git a/snippets/node/rerank-post.js b/snippets/node/rerank-post.js new file mode 100644 index 00000000..3176f0cc --- /dev/null +++ b/snippets/node/rerank-post.js @@ -0,0 +1,30 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const rerank = await cohere.rerank({ + documents: [ + { text: 'Carson City is the capital city of the American state of Nevada.' }, + { + text: 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', + }, + { + text: 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', + }, + { + text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', + }, + { + text: 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', + }, + ], + query: 'What is the capital of the United States?', + topN: 3, + model: 'rerank-english-v3.0', + }); + + console.log(rerank); +})(); diff --git a/snippets/node/rerank-post.ts b/snippets/node/rerank-post.ts index 497dc675..c4e8e48f 100644 --- a/snippets/node/rerank-post.ts +++ b/snippets/node/rerank-post.ts @@ -18,7 +18,7 @@ const cohere = new CohereClient({ text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', }, { - text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', + text: 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', }, ], query: 'What is the capital of the United States?', diff --git a/snippets/node/summarize-post.js b/snippets/node/summarize-post.js new file mode 100644 index 00000000..9f1f40f0 --- /dev/null +++ b/snippets/node/summarize-post.js @@ -0,0 +1,33 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient({ + +}); + +(async () => { + const summarize = await cohere.summarize({ + text: + 'Ice cream is a sweetened frozen food typically eaten as a snack or dessert. ' + + 'It may be made from milk or cream and is flavoured with a sweetener, ' + + 'either sugar or an alternative, and a spice, such as cocoa or vanilla, ' + + 'or with fruit such as strawberries or peaches. ' + + 'It can also be made by whisking a flavored cream base and liquid nitrogen together. ' + + 'Food coloring is sometimes added, in addition to stabilizers. ' + + 'The mixture is cooled below the freezing point of water and stirred to incorporate air spaces ' + + 'and to prevent detectable ice crystals from forming. The result is a smooth, ' + + 'semi-solid foam that is solid at very low temperatures (below 2 °C or 35 °F). ' + + 'It becomes more malleable as its temperature increases.\n\n' + + 'The meaning of the name "ice cream" varies from one country to another. ' + + 'In some countries, such as the United States, "ice cream" applies only to a specific variety, ' + + 'and most governments regulate the commercial use of the various terms according to the ' + + 'relative quantities of the main ingredients, notably the amount of cream. ' + + 'Products that do not meet the criteria to be called ice cream are sometimes labelled ' + + '"frozen dairy dessert" instead. In other countries, such as Italy and Argentina, ' + + 'one word is used fo\r all variants. Analogues made from dairy alternatives, ' + + "such as goat's or sheep's milk, or milk substitutes " + + '(e.g., soy, cashew, coconut, almond milk or tofu), are available for those who are ' + + 'lactose intolerant, allergic to dairy protein or vegan.', + }); + + console.log(summarize); +})(); diff --git a/snippets/node/tokenize-post.js b/snippets/node/tokenize-post.js new file mode 100644 index 00000000..b0383304 --- /dev/null +++ b/snippets/node/tokenize-post.js @@ -0,0 +1,12 @@ +import { CohereClient } from 'cohere-ai'; + +const cohere = new CohereClient(); + +(async () => { + const response = await cohere.tokenize({ + text: 'tokenize me! :D', + model: 'command', // optional + }); + + console.log(response); +})(); diff --git a/snippets/python-async/rerank-post.py b/snippets/python-async/rerank-post.py index 8dcd9e0b..09c8d479 100644 --- a/snippets/python-async/rerank-post.py +++ b/snippets/python-async/rerank-post.py @@ -8,7 +8,7 @@ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] diff --git a/snippets/python/rerank-post.py b/snippets/python/rerank-post.py index 5150cadb..aa93d115 100644 --- a/snippets/python/rerank-post.py +++ b/snippets/python/rerank-post.py @@ -7,7 +7,7 @@ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] response = co.rerank( diff --git a/snippets/snippets/curl/chat-v2-post/default.sh b/snippets/snippets/curl/chat-v2-post/default.sh index 2fd02643..63de9237 100644 --- a/snippets/snippets/curl/chat-v2-post/default.sh +++ b/snippets/snippets/curl/chat-v2-post/default.sh @@ -10,5 +10,5 @@ curl --request POST \ "role": "user", "content": "Hello world!" } - ], - }' \ No newline at end of file + ] + }' diff --git a/snippets/snippets/curl/chat-v2-post/stream.sh b/snippets/snippets/curl/chat-v2-post/stream.sh index d5010d57..a217d97d 100644 --- a/snippets/snippets/curl/chat-v2-post/stream.sh +++ b/snippets/snippets/curl/chat-v2-post/stream.sh @@ -11,5 +11,5 @@ curl --request POST \ "role": "user", "content": "Hello world!" } - ], - }' \ No newline at end of file + ] + }' diff --git a/snippets/snippets/curl/rerank-post.sh b/snippets/snippets/curl/rerank-post.sh index 11dead44..71d0d485 100644 --- a/snippets/snippets/curl/rerank-post.sh +++ b/snippets/snippets/curl/rerank-post.sh @@ -4,12 +4,12 @@ curl --request POST \ --header 'content-type: application/json' \ --header "Authorization: bearer $CO_API_KEY" \ --data '{ - "model": "rerank-english-v3.0", + "model": "rerank-v3.5", "query": "What is the capital of the United States?", "top_n": 3, "documents": ["Carson City is the capital city of the American state of Nevada.", "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' \ No newline at end of file diff --git a/snippets/snippets/curl/rerank-v2-post.sh b/snippets/snippets/curl/rerank-v2-post.sh index 7b5fb3ac..52b28bcf 100644 --- a/snippets/snippets/curl/rerank-v2-post.sh +++ b/snippets/snippets/curl/rerank-v2-post.sh @@ -4,12 +4,12 @@ curl --request POST \ --header 'content-type: application/json' \ --header "Authorization: bearer $CO_API_KEY" \ --data '{ - "model": "rerank-english-v3.0", + "model": "rerank-v3.5", "query": "What is the capital of the United States?", "top_n": 3, "documents": ["Carson City is the capital city of the American state of Nevada.", "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states."] }' \ No newline at end of file diff --git a/snippets/snippets/go/rerank-post/main.go b/snippets/snippets/go/rerank-post/main.go index 78f5e2d8..d8007a61 100644 --- a/snippets/snippets/go/rerank-post/main.go +++ b/snippets/snippets/go/rerank-post/main.go @@ -21,7 +21,7 @@ func main() { {String: "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages."}, {String: "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district."}, }, - Model: cohere.String("rerank-english-v3.0"), + Model: cohere.String("rerank-v3.5"), }, ) diff --git a/snippets/snippets/java/app/src/main/java/RerankPost.java b/snippets/snippets/java/app/src/main/java/RerankPost.java index 11bd102a..d178619b 100644 --- a/snippets/snippets/java/app/src/main/java/RerankPost.java +++ b/snippets/snippets/java/app/src/main/java/RerankPost.java @@ -37,13 +37,13 @@ public static void main(String[] args) { + " capital of the United States. It is" + " a federal district."), RerankRequestDocumentsItem.of( - "Capital punishment (the death penalty) has" + "Capital punishment has" + " existed in the United States since" + " beforethe United States was a" + " country. As of 2017, capital" + " punishment is legal in 30 of the 50" + " states."))) - .model("rerank-english-v3.0") + .model("rerank-english-v3.5") .topN(3) .build()); diff --git a/snippets/snippets/java/app/src/main/java/RerankV2Post.java b/snippets/snippets/java/app/src/main/java/RerankV2Post.java index 2082d7ca..f47b365c 100644 --- a/snippets/snippets/java/app/src/main/java/RerankV2Post.java +++ b/snippets/snippets/java/app/src/main/java/RerankV2Post.java @@ -1,7 +1,6 @@ /* (C)2024 */ import com.cohere.api.Cohere; import com.cohere.api.resources.v2.requests.V2RerankRequest; -import com.cohere.api.resources.v2.types.V2RerankRequestDocumentsItem; import com.cohere.api.resources.v2.types.V2RerankResponse; import java.util.List; @@ -14,44 +13,22 @@ public static void main(String[] args) { .v2() .rerank( V2RerankRequest.builder() - .model("rerank-english-v3.0") + .model("rerank-v3.5") .query("What is the capital of the United States?") .documents( List.of( - V2RerankRequestDocumentsItem.of( - "Carson City is the capital city of" - + " the American state of" - + " Nevada."), - V2RerankRequestDocumentsItem.of( - "The Commonwealth of the Northern" - + " Mariana Islands is a group" - + " of islands in the Pacific" - + " Ocean. Its capital is" - + " Saipan."), - V2RerankRequestDocumentsItem.of( - "Capitalization or capitalisation" - + " in English grammar is the" - + " use of a capital letter at" - + " the start of a word." - + " English usage varies from" - + " capitalization in other" - + " languages."), - V2RerankRequestDocumentsItem.of( - "Washington, D.C. (also known as" - + " simply Washington or D.C.," - + " and officially as the" - + " District of Columbia) is" - + " the capital of the United" - + " States. It is a federal" - + " district."), - V2RerankRequestDocumentsItem.of( - "Capital punishment (the death" - + " penalty) has existed in the" - + " United States since" - + " beforethe United States was" - + " a country. As of 2017," - + " capital punishment is legal" - + " in 30 of the 50 states."))) + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands" + + " in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a" + + " capital letter at the start of a word. English usage varies" + + " from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and" + + " officially as the District of Columbia) is the capital of the" + + " United States. It is a federal district.", + "Capital punishment has existed in the United States since before the" + + " United States was a country. As of 2017, capital punishment is" + + " legal in 30 of the 50 states.")) .topN(3) .build()); diff --git a/snippets/snippets/java/app/src/main/java/embedpost/EmbedImagePost.java b/snippets/snippets/java/app/src/main/java/embedpost/EmbedImagePost.java index afb98c54..f9cfa460 100644 --- a/snippets/snippets/java/app/src/main/java/embedpost/EmbedImagePost.java +++ b/snippets/snippets/java/app/src/main/java/embedpost/EmbedImagePost.java @@ -16,9 +16,7 @@ public class EmbedImagePost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); - URL url = - URI.toUrl( - "https://cohere.com/favicon-32x32.png"); + URL url = URI.toUrl("https://cohere.com/favicon-32x32.png"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect(); diff --git a/snippets/snippets/java/app/src/main/java/embedv2post/EmbedImagePost.java b/snippets/snippets/java/app/src/main/java/embedv2post/EmbedImagePost.java index 652c1d6a..5eb946d5 100644 --- a/snippets/snippets/java/app/src/main/java/embedv2post/EmbedImagePost.java +++ b/snippets/snippets/java/app/src/main/java/embedv2post/EmbedImagePost.java @@ -1,5 +1,10 @@ package embedv2post; /* (C)2024 */ +import com.cohere.api.Cohere; +import com.cohere.api.resources.v2.requests.V2EmbedRequest; +import com.cohere.api.types.EmbedByTypeResponse; +import com.cohere.api.types.EmbedInputType; +import com.cohere.api.types.EmbeddingType; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URI; @@ -7,19 +12,11 @@ import java.util.Base64; import java.util.List; -import com.cohere.api.Cohere; -import com.cohere.api.resources.v2.requests.V2EmbedRequest; -import com.cohere.api.types.EmbedByTypeResponse; -import com.cohere.api.types.EmbedInputType; -import com.cohere.api.types.EmbeddingType; - public class EmbedImagePost { public static void main(String[] args) { Cohere cohere = Cohere.builder().clientName("snippet").build(); - URL url = - URI.toUrl( - "https://cohere.com/favicon-32x32.png"); + URL url = URI.toUrl("https://cohere.com/favicon-32x32.png"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect(); diff --git a/snippets/snippets/java/app/src/main/java/embedv2post/EmbedPost.java b/snippets/snippets/java/app/src/main/java/embedv2post/EmbedPost.java index a87b43e2..6fc2b624 100644 --- a/snippets/snippets/java/app/src/main/java/embedv2post/EmbedPost.java +++ b/snippets/snippets/java/app/src/main/java/embedv2post/EmbedPost.java @@ -1,11 +1,10 @@ package embedv2post; /* (C)2024 */ -import java.util.List; - import com.cohere.api.Cohere; import com.cohere.api.resources.v2.requests.V2EmbedRequest; import com.cohere.api.types.EmbedByTypeResponse; import com.cohere.api.types.EmbedInputType; +import java.util.List; public class EmbedPost { public static void main(String[] args) { diff --git a/snippets/snippets/java/gradle/libs.versions.toml b/snippets/snippets/java/gradle/libs.versions.toml index f0021f5e..f36c2f1a 100644 --- a/snippets/snippets/java/gradle/libs.versions.toml +++ b/snippets/snippets/java/gradle/libs.versions.toml @@ -2,7 +2,7 @@ # https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format [versions] -guava = "32.1.2-jre" +guava = "32.1.3-jre" junit-jupiter = "5.10.0" [libraries] diff --git a/snippets/snippets/node/rerank-post.ts b/snippets/snippets/node/rerank-post.ts index 576990fb..30d2d5e8 100644 --- a/snippets/snippets/node/rerank-post.ts +++ b/snippets/snippets/node/rerank-post.ts @@ -16,12 +16,12 @@ const cohere = new CohereClient({}); text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', }, { - text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', + text: 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', }, ], query: 'What is the capital of the United States?', topN: 3, - model: 'rerank-english-v3.0', + model: 'rerank-v3.5', }); console.log(rerank); diff --git a/snippets/snippets/node/rerank-v2-post.ts b/snippets/snippets/node/rerank-v2-post.ts index a8c132c8..5c2bf077 100644 --- a/snippets/snippets/node/rerank-v2-post.ts +++ b/snippets/snippets/node/rerank-v2-post.ts @@ -5,23 +5,15 @@ const cohere = new CohereClient({}); (async () => { const rerank = await cohere.v2.rerank({ documents: [ - { text: 'Carson City is the capital city of the American state of Nevada.' }, - { - text: 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', - }, - { - text: 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', - }, - { - text: 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', - }, - { - text: 'Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', - }, + 'Carson City is the capital city of the American state of Nevada.', + 'The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.', + 'Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.', + 'Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.', + 'Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.', ], query: 'What is the capital of the United States?', topN: 3, - model: 'rerank-english-v3.0', + model: 'rerank-v3.5', }); console.log(rerank); diff --git a/snippets/snippets/python-async/rerank-post.py b/snippets/snippets/python-async/rerank-post.py index 567937fa..dfc04a6d 100644 --- a/snippets/snippets/python-async/rerank-post.py +++ b/snippets/snippets/python-async/rerank-post.py @@ -3,23 +3,19 @@ co = cohere.AsyncClient() -docs = [ - "Carson City is the capital city of the American state of Nevada.", - "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", - "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", -] - - async def main(): response = await co.rerank( - model="rerank-english-v2.0", + model="rerank-v3.5", query="What is the capital of the United States?", - documents=docs, + documents=[ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + ], top_n=3, ) print(response) - asyncio.run(main()) diff --git a/snippets/snippets/python-async/rerank-v2-post.py b/snippets/snippets/python-async/rerank-v2-post.py index a5ece480..ea972238 100644 --- a/snippets/snippets/python-async/rerank-v2-post.py +++ b/snippets/snippets/python-async/rerank-v2-post.py @@ -3,21 +3,18 @@ co = cohere.AsyncClientV2() -docs = [ - "Carson City is the capital city of the American state of Nevada.", - "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", - "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", - "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", -] - - async def main(): response = await co.rerank( - model="rerank-english-v2.0", + model="rerank-v3.5", query="What is the capital of the United States?", - documents=docs, - top_n=3, + documents=[ + "Carson City is the capital city of the American state of Nevada.", + "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", + "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", + "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + ], + top_n=3 ) print(response) diff --git a/snippets/snippets/python/chat-v2-post/tools.py b/snippets/snippets/python/chat-v2-post/tools.py index 63a57e05..47c4085c 100644 --- a/snippets/snippets/python/chat-v2-post/tools.py +++ b/snippets/snippets/python/chat-v2-post/tools.py @@ -1,6 +1,6 @@ import cohere -co = cohere.Client() +co = cohere.ClientV2() response = co.chat( model="command-r-plus-08-2024", diff --git a/snippets/snippets/python/rerank-post.py b/snippets/snippets/python/rerank-post.py index b3be77bf..c6ef5c36 100644 --- a/snippets/snippets/python/rerank-post.py +++ b/snippets/snippets/python/rerank-post.py @@ -7,11 +7,11 @@ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] response = co.rerank( - model="rerank-english-v3.0", + model="rerank-v3.5", query="What is the capital of the United States?", documents=docs, top_n=3, diff --git a/snippets/snippets/python/rerank-v2-post.py b/snippets/snippets/python/rerank-v2-post.py index b6da609d..2b615fbb 100644 --- a/snippets/snippets/python/rerank-v2-post.py +++ b/snippets/snippets/python/rerank-v2-post.py @@ -7,11 +7,11 @@ "The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan.", "Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages.", "Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district.", - "Capital punishment (the death penalty) has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", + "Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states.", ] response = co.rerank( - model="rerank-english-v3.0", + model="rerank-v3.5", query="What is the capital of the United States?", documents=docs, top_n=3, diff --git a/snippets/snippets/requests/rerank-post.yaml b/snippets/snippets/requests/rerank-post.yaml index 36cbc39c..ca16a86c 100644 --- a/snippets/snippets/requests/rerank-post.yaml +++ b/snippets/snippets/requests/rerank-post.yaml @@ -8,9 +8,9 @@ documents: - text: Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. - - text: Capital punishment (the death penalty) has existed in the United States + - text: Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. query: What is the capital of the United States? top_n: 3 -model: rerank-english-v3.0 +model: rerank-v3.5 diff --git a/snippets/snippets/requests/rerank-v2-post.yaml b/snippets/snippets/requests/rerank-v2-post.yaml index 36cbc39c..ffb408b6 100644 --- a/snippets/snippets/requests/rerank-v2-post.yaml +++ b/snippets/snippets/requests/rerank-v2-post.yaml @@ -1,16 +1,16 @@ documents: - - text: Carson City is the capital city of the American state of Nevada. - - text: The Commonwealth of the Northern Mariana Islands is a group of islands in + - Carson City is the capital city of the American state of Nevada. + - The Commonwealth of the Northern Mariana Islands is a group of islands in the Pacific Ocean. Its capital is Saipan. - - text: Capitalization or capitalisation in English grammar is the use of a + - Capitalization or capitalisation in English grammar is the use of a capital letter at the start of a word. English usage varies from capitalization in other languages. - - text: Washington, D.C. (also known as simply Washington or D.C., and officially + - Washington, D.C. (also known as simply Washington or D.C., and officially as the District of Columbia) is the capital of the United States. It is a federal district. - - text: Capital punishment (the death penalty) has existed in the United States + - Capital punishment has existed in the United States since beforethe United States was a country. As of 2017, capital punishment is legal in 30 of the 50 states. query: What is the capital of the United States? top_n: 3 -model: rerank-english-v3.0 +model: rerank-v3.5 diff --git a/snippets/snippets/responses/rerank-v2-post.yaml b/snippets/snippets/responses/rerank-v2-post.yaml index 5ce29100..f7312001 100644 --- a/snippets/snippets/responses/rerank-v2-post.yaml +++ b/snippets/snippets/responses/rerank-v2-post.yaml @@ -10,8 +10,6 @@ body: meta: api_version: version: '2' - is_experimental: true - warnings: - - You are using an experimental version, for more information please refer to https://docs.cohere.com/versioning-reference + is_experimental: false billed_units: search_units: 1